{"id":5735,"date":"2009-05-31T10:04:34","date_gmt":"2009-05-31T10:04:34","guid":{"rendered":"https:\/\/wordpress.org\/plugins-wp\/scb-framework\/"},"modified":"2013-04-08T16:12:09","modified_gmt":"2013-04-08T16:12:09","slug":"scb-framework","status":"publish","type":"plugin","link":"https:\/\/pcd.wordpress.org\/plugins\/scb-framework\/","author":180901,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"r58","stable_tag":"trunk","tested":"3.5.2","requires":"3.2","requires_php":"","requires_plugins":"","header_name":"scbFramework Example","header_author":"scribu","header_description":"","assets_banners_color":"","last_updated":"2013-04-08 16:12:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"http:\/\/scribu.net\/wordpress\/scb-framework","header_author_uri":"http:\/\/scribu.net","rating":0,"author_block_rating":0,"active_installs":10,"downloads":5830,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","changelog"],"tags":[],"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":0},"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["r24"],"block_files":[],"assets_screenshots":[],"screenshots":[],"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[83,4567,601,3002,11238],"plugin_category":[42,59],"plugin_contributors":[84354,77621],"plugin_business_model":[],"class_list":["post-5735","plugin","type-plugin","status-publish","hentry","plugin_tags-admin","plugin_tags-cron","plugin_tags-forms","plugin_tags-framework","plugin_tags-toolkit","plugin_category-contact-forms","plugin_category-utilities-and-tools","plugin_contributors-rarst","plugin_contributors-scribu","plugin_committers-scribu"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/scb-framework.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>This plugin is a a usage example for <a href=\"https:\/\/github.com\/scribu\/wp-scb-framework\">scbFramework<\/a>.<\/p>\n\n<p>scbFramework is a toolkit that helps developers write plugins faster. It consists of several classes which handle common tasks, such as generating settings pages, creating database tables etc.<\/p>\n\n<p>See the <a href=\"http:\/\/github.com\/scribu\/wp-scb-framework\/wiki\">documentation<\/a> for more details.<\/p>\n\n<p>To take a quick look at the code, see the github page: https:\/\/github.com\/scribu\/wp-scb-framework-example<\/p>\n\n<p>Links: <a href=\"http:\/\/github.com\/scribu\/wp-scb-framework\/wiki\"><strong>Wiki<\/strong><\/a> | <a href=\"http:\/\/scribu.net\/wordpress\/scb-framework\">Framework News<\/a> | <a href=\"http:\/\/scribu.net\">Author's Site<\/a><\/p>\n\n<!--section=changelog-->\n<h4>16 Feb 2013 (r58)<\/h4>\n\n<ul>\n<li>improve toplevel admin menu item handling<\/li>\n<li>fix notice in <code>scbForms::update_meta()<\/code>. props Josh Ronk<\/li>\n<li>reduce usage of <code>extract()<\/code>. props <a href=\"http:\/\/profiles.wordpress.org\/rarst\">Rarst<\/a><\/li>\n<\/ul>\n\n<h4>7 Sep 2012 (r57)<\/h4>\n\n<ul>\n<li>refactored scbForms: separate class for each input type<\/li>\n<li>introduced scb_get_query_flags() <\/li>\n<li>load classes immediately if 'plugins_loaded' was already called<\/li>\n<\/ul>\n\n<h4>8 May 2012 (r53)<\/h4>\n\n<ul>\n<li>introduced input_from_meta() and input_with_value() methods to scbForms<\/li>\n<li>added 'default' and 'wrap_each' optional parameters to relevant scbForms methods<\/li>\n<li>introduced scbAdminPage::page_loaded()<\/li>\n<li>added $name parameter to scb_register_table()<\/li>\n<\/ul>\n\n<h4>23 Jan 2012 (r48)<\/h4>\n\n<ul>\n<li>introduced scbForms::validate_POST_data()<\/li>\n<li>added 'wrap' arg to scbForms::input()<\/li>\n<li>introduced scb_register_table(), scb_install_table() and scb_uninstall_table()<\/li>\n<li>introduced scb_admin_notice()<\/li>\n<li>replaced scbUtil::objects_to_assoc() with scb_list_fold()<\/li>\n<li>added 'screen_icon' arg to scbAdminPage<\/li>\n<li>made scbOptions::update() accept partial updates<\/li>\n<li>WP 3.3 compatibility<\/li>\n<\/ul>\n\n<h4>23 Aug 2011 (r40)<\/h4>\n\n<ul>\n<li>introduced scbHooks class<\/li>\n<li>introduced scbForm class<\/li>\n<li>forms: <code>'name' =&gt; array( 'foo', 'bar', 'baz' )<\/code> now means <code>foo[bar][baz]<\/code><\/li>\n<li>added example plugin, using scbTable, scbOptions, scbAdminPage and scbBoxesPage<\/li>\n<\/ul>\n\n<h4>19 Jun 2011 (r36)<\/h4>\n\n<ul>\n<li>revamped radio button handling<\/li>\n<li>added support for nested names<\/li>\n<li>use html() and esc_textarea() in scbForms<\/li>\n<li>extended example plugin<\/li>\n<li>deprecated scbQueryManipulation, scbUtil::array_pluck() and scbUtil::array_extract()<\/li>\n<\/ul>\n\n<h4>05 Apr 2011 (r34)<\/h4>\n\n<ul>\n<li>fixed activation hooks when using scb-load.php<\/li>\n<li>added ability to define column widths in scbBoxesPages (props pento)<\/li>\n<li>introduced scbUtil::get_current_url()<\/li>\n<li>made scbTable play nice with switch_to_blog()<\/li>\n<\/ul>\n\n<h4>02 Feb 2011 (r31)<\/h4>\n\n<ul>\n<li>scbQueryManipulation WP 3.1 compatibility<\/li>\n<li>scbCron enhancements<\/li>\n<li>introduced debug_cron(), debug_ts() and debug_h()<\/li>\n<li>html() knows about self-closing tags<\/li>\n<\/ul>\n\n<h4>09 Sep 2010 (r24)<\/h4>\n\n<ul>\n<li>delayed activation (scbLoad4)<\/li>\n<li>replaced scbQuery with scbQueryManipulation<\/li>\n<li>removed scbRewrite<\/li>\n<li>added attributes param to html()<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/scb-framework\/revision-24.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.6 (r9)<\/h4>\n\n<ul>\n<li>load the most recent version available<\/li>\n<li>move debugging functions to separate file<\/li>\n<li>new methods in scbUtil: array_pluck(), objects_to_assoc(), split_at()<\/li>\n<li>auto-uninstall for scbWidget<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/scb-framework\/sf-1-6.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.5<\/h4>\n\n<ul>\n<li>new methods for scbOptions: get_defaults(); cleanup(); __isset();<\/li>\n<li>new method for scbAdminPage: page_help();<\/li>\n<li>new method for scbUtil: add_uninstall_hook();<\/li>\n<li>scbAdminPage::submit_button() accepts an array of arguments<\/li>\n<li>scbAdminPage can create top level menus<\/li>\n<li>scbBoxesPage can assign the same handler to multiple boxes, with different arguments<\/li>\n<li>debug() outputs at the end of the page, only for administrators<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/scb-framework\/sf-1-5.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>new classes: scbUtil &amp; scbRewrite<\/li>\n<li>faster loading method<\/li>\n<li>scbWidget applies 'widget_title' filter<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/scb-framework\/sf-1-4.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>scbTable respects collation &amp; charset<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>AdminPage: ajax submit<\/li>\n<li>Options: added set(); deprecated update_part()<\/li>\n<li>Cron: new methods: do_now(), do_once()<\/li>\n<li>dropped support for WordPress older than 2.8<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/scb-framework\/sf-1-3.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>fixed PHP 5.0 compatibility issue<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>added the scbTable class<\/li>\n<li>fixed widget input names<\/li>\n<li>use plugin_dir_url()<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/scb-framework\/sf-1-2.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>better scbBoxesPage<\/li>\n<li>enhancements for scbAdminPage<\/li>\n<li>bugfix in scbOptions<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/scb-framework\/sf-1-1.html\">more info<\/a><\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>initial release<\/li>\n<li><a href=\"http:\/\/scribu.net\/wordpress\/scb-framework\/introducing-scbframework.html\">more info<\/a><\/li>\n<\/ul>","raw_excerpt":"A set of useful classes for faster plugin development.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/5735","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=5735"}],"author":[{"embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/scribu"}],"wp:attachment":[{"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=5735"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=5735"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=5735"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=5735"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=5735"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/pcd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=5735"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}