From 175f1e73950ab80c799944af8f69391113906394 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Mon, 9 Feb 2009 08:47:11 -0500 Subject: utility superclass for plugins --- lib/plugin.php | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 lib/plugin.php diff --git a/lib/plugin.php b/lib/plugin.php new file mode 100644 index 000000000..7b2436e54 --- /dev/null +++ b/lib/plugin.php @@ -0,0 +1,79 @@ +. + * + * @category Plugin + * @package Laconica + * @author Evan Prodromou + * @copyright 2008 Control Yourself, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + */ + +if (!defined('LACONICA')) { + exit(1); +} + +/** + * Base class for plugins + * + * A base class for Laconica plugins. Mostly a light wrapper around + * the Event framework. + * + * Subclasses of Plugin will automatically handle an event if they define + * a method called "onEventName". (Well, OK -- only if they call parent::__construct() + * in their constructors.) + * + * They will also automatically handle the InitializePlugin and CleanupPlugin with the + * initialize() and cleanup() methods, respectively. + * + * @category Plugin + * @package Laconica + * @author Evan Prodromou + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://laconi.ca/ + * + * @see Event + */ + +class Plugin +{ + function __construct() + { + Event::addHandler('InitializePlugin', array($this, 'initialize')); + Event::addHandler('CleanupPlugin', array($this, 'cleanup')); + + foreach (get_class_methods($this) as $method) { + if (mb_substr($method, 0, 2) == 'on') { + Event::addHandler(mb_substr($method, 2), array($this, $method)); + } + } + } + + function initialize() + { + return true; + } + + function cleanup() + { + return true; + } +} -- cgit v1.2.3-54-g00ecf