[wp-hackers] Strider Core plugin framework
Stephen Rider
wp-hackers at striderweb.com
Wed Mar 18 13:31:07 GMT 2009
Look in downloads.
http://code.google.com/p/strider-core/downloads/list
Google Code went "read only" yesterday for maintenance, so I only had
time to put up the demo.
Stephen
On Mar 18, 2009, at 1:33 AM, scribu wrote:
> Erm...there's no code in the Google repo, just the directory
> structure.
>
> On Tue, Mar 17, 2009 at 8:47 PM, Stephen Rider <wp-hackers at striderweb.com
> >wrote:
>
>> Hi all --
>>
>> This has been in the works for a while, and it's not complete, but
>> going by
>> the "release early and release often" philosophy...
>>
>> I'd like to introduce you to Strider Core.
>>
>> http://code.google.com/p/strider-core/
>>
>> Straight from the readme and source:
>>
>> Strider Core is a framework for use in other plugins. It is not a
>> plugin
>> unto itself. It includes many points of minor functionality and
>> polish,
>> such as Settings page links from the Plugins page, and an
>> attribution in the
>> footer of the Settings page. A significant feature is the ability to
>> activate integrated version checking for plugins not hosted on WP-
>> Extend.
>>
>> Strider Core also has an interesting feature in that if multiple
>> plugins
>> are built on it, they will all use whichever is the highest version
>> present.
>> Thus, upgrading one plugin can improve all of the Strider Core
>> plugins.
>>
>> NOTE: This framework is still in early development, and thus
>> functions may not be entirely stable. There is no guarantee
>> that later pre-1.0 versions will be backward compatible.
>> As a public framework, consider it alpha, folks!
>>
>> How Strider Core versioning works:
>> * Every Strider Core plugin loads its own strider_core.php file.
>> * The first strider_core.php to be loaded creates the
>> load_strider_core()
>> function, and sets it to run on the plugins_loaded hook.
>> * For each strider_core.php file, the __FILE__ and version (above)
>> are loaded into $this_strider_core[], and then passed into
>> the $strider_core_info[] array. $this_strider_core[] is unset.
>> * After all plugins are loaded, load_strider_core() runs, in which
>> $strider_core_info[] is UNset, and the strider_core.php
>> file with the highest version is loaded again
>> * This time, the strider_core class is created. (also,
>> $strider_core_info
>> is recreated, with data for the current strider_core file only)
>> * Finally, the list of Strider Core plugins is looped through
>> and each SC plugin "main" file is loaded. Those files are
>> the heart of their respective plugins.
>>
>> In the end, you are left with:
>> * global $strider_core_info[], which == the $this_strider_core
>> array from the top of the active core only
>> * global $strider_core_plugins[] -- keys are the plugin
>> basename and ['core file'] the "main" file full path
>> for
>> every
>> active Strider Core plugin
>> * ...and of course, the strider_core class
>>
>> Known Limitations:
>> * "main" plugin file isn't called until plugins_loaded hook.
>> This
>> is soon after normal plugin load, but some things do happen before
>> that.
>> Such as...
>> * activate and deactivate hooks don't work from the "main"
>> plugin
>> files, because those files aren't called until after those hooks
>> are fired.
>>
>> * Future compatibility note: If an upgrade is ever significantly
>> non-backwards compatible, we can simply create
>> load_strider_core_2()
>> which will only load legacy SC1 code if needed. The code that
>> hooks plugins_loaded will also un-hook the old
>> load_strider_core()
>> as needed.
>>
>> Known Issues:
>> * The Version Check routine is not complete. Fully WP
>> integrated,
>> but lacks the actual code that goes and checks a server for a
>> new
>> version. You can test by upping the version returned by
>> filter_set_update_plugins()
>>
>> * As it is set up currently, the
>> register_version_check_header()
>> function is dependent on http://trac.wordpress.org/ticket/8964
>> (Though it is not yet used in this beta -- it will be called
>> from filter_set_update_plugins() )
>>
>> * You can't use activate or deactivate hooks, as neither the
>> strider_core_b1 file, nor the "main" plugin file, are called
>> as of
>> actual plugin activation/deactivation.
>>
>> To Do:
>> * Fix activate/deactivate hook problem. Probably can hook a
>> simple
>> "container" function from the main plugin file.
>> * see core_activate function
>>
>> Each Admin page should have a second tab for "Strider Core" universal
>> settings:
>> * Toggle Version Check (default true)
>> * Toggle - include compatible non-Strider Core plugins
>> * Toggle menu icons
>>
>> Version Check routine:
>> * TEST INPUT of "Version Check URI" w/ wp_kses();
>> * fetch latest versions --> TEST INPUT of returned string w
>> wp_kses()
>> * after_line_$plugin hook:
>> * "skip this version" button ? (use nonces)
>> * "Disable updates for this plugin" button ? (use
>> nonces)
>> * update_plugin may be written twice per check (in WP) - once
>> for
>> update
>> time, and once for actual results. Only run our update
>> routine once!
>>
>>
>> /* License:
>> Strider Core is released under a modified GPL2 license.
>> The modification is as follows:
>>
>> 1. If you make _any_ changes to the code, other than for
>> purposes
>> of private testing, you are required to change all in-code
>> instances
>> of the string "strider_core" -- do a search/replace and replace
>> "strider_core" with something unique, e.g. "<yourname>_core".
>>
>> 2. Do not perform the above replacement using anything
>> containing
>> "strider_core". That is, don't call it "strider_core_2" or
>> "my_strider_core" or something. If you modify it, it isn't
>> Strider Core, so really rename it. (Yes, something very much
>> like
>> this
>> has happened in the past. Somebody branched a program of
>> mine and
>> renamed it by adding a "2" to the end. :-\ )
>>
>> 3. File names and directory names must be similarly altered
>> per #2.
>>
>> 4. If you do not do the above (#1, #2, and #3), then Strider
>> Core
>> MUST NOT BE MODIFIED IN ANY WAY.
>> This is important, because otherwise your modifications could
>> adversely affect plugins or software *other than your own!*
>>
>> --
>>
>> If you make modifications and come up with something good,
>> please let me know -- I may add it to the original. :-)
>>
>>
>> Regards,
>> Stephen Rider
>>
>> _______________________________________________
>> wp-hackers mailing list
>> wp-hackers at lists.automattic.com
>> http://lists.automattic.com/mailman/listinfo/wp-hackers
>>
>
>
>
> --
> http://scribu.net
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
More information about the wp-hackers
mailing list