add('name', PLUGIN_EVENT_XMLRPC_NAME); $propbag->add('description', PLUGIN_EVENT_XMLRPC_DESC); $propbag->add('stackable', false); $propbag->add('author', 'Serendipity Team'); $propbag->add('version', '1.46'); $propbag->add('requirements', array( 'serendipity' => '0.8', 'smarty' => '2.6.7', 'php' => '4.1.0' )); $propbag->add('event_hooks', array( 'frontend_xmlrpc' => true, 'frontend_header' => true )); $propbag->add('configuration', array('category', 'gmt')); $propbag->add('groups', array('FRONTEND_FULL_MODS', 'FRONTEND_EXTERNAL_SERVICES')); } function generate_content(&$title) { $title = $this->title; } function showXSD() { global $serendipity; echo ' Serendipity (s9y) http://www.s9y.org/ ' . $serendipity['baseURL'] . ' '; } // function introspect_config_item($name, &$propbag) { switch($name) { case 'gmt': $propbag->add('type', 'boolean'); $propbag->add('name', PLUGIN_EVENT_XMLRPC_GMT); $propbag->add('description', ''); $propbag->add('default', false); break; case 'category': $cats = serendipity_fetchCategories($serendipity['authorid']); if (!is_array($cats)) { return false; } $catlist = serendipity_generateCategoryList($cats, array(0), 4); $tmp_select_cats = explode('@@@', $catlist); if (!is_array($tmp_select_cats)) { return false; } $select_cats = array(); $select_cats[''] = ''; foreach($tmp_select_cats as $cidx => $tmp_select_cat) { $select_cat = explode('|||', $tmp_select_cat); if (!empty($select_cat[0]) && !empty($select_cat[1])) { $select_cats[$select_cat[0]] = $select_cat[1]; } } $propbag->add('type', 'select'); $propbag->add('select_values', $select_cats); $propbag->add('name', PLUGIN_EVENT_XMLRPC_DEFAULTCAT); $propbag->add('description', PLUGIN_EVENT_XMLRPC_DEFAULTCAT_DESC); $propbag->add('default', ''); break; default: return false; } return true; } function event_hook($event, &$bag, &$eventData) { global $serendipity, $HTTP_RAW_POST_DATA; $hooks = &$bag->get('event_hooks'); $links = array(); $article_show = false; if (isset($hooks[$event])) { switch($event) { case 'frontend_header': echo '' . "\n"; echo '' . "\n"; break; case 'frontend_xmlrpc': // Those variables should not be set by other plugins! header('Content-Type: text/xml'); $eventData = array('XML-RPC' => true); if ($_REQUEST['xsd']) { $this->showXSD(); return true; } unset($serendipity['GET']['category']); unset($serendipity['GET']['hide_category']); $serendipity['xmlrpc_default_category'] = $this->get_config('category'); @define('SERENDIPITY_IS_XMLRPC', true); $serendipity['XMLRPC_GMT'] = serendipity_db_bool($this->get_config('gmt')); $this->setupPearPath(); if (!class_exists('XML_RPC_Base')) { require_once PLUGIN_EVENT_XMLRPC_PEAR_PATH . 'XML/RPC.php'; } if (!class_exists('XML_RPC_Server')) { require_once PLUGIN_EVENT_XMLRPC_PEAR_PATH . 'XML/RPC/Server.php'; } require_once dirname(__FILE__) . '/serendipity_xmlrpc.inc.php'; return true; default: return false; break; } } else { return false; } } function setupPearPath() { // use bundled PEAR modules instead of plugins, if found // The s9y bundled lib could be outdated. Upgrading it with the plugin is much more easy. /* @define('S9Y_PEAR_PATH', $serendipity['serendipityPath'] . 'bundled-libs/'); if (file_exists(S9Y_PEAR_PATH . 'XML/RPC.php') && file_exists(S9Y_PEAR_PATH . 'XML/RPC/Server.php')) { @define('PLUGIN_EVENT_XMLRPC_PEAR_PATH', S9Y_PEAR_PATH); } else { */ @define('PLUGIN_EVENT_XMLRPC_PEAR_PATH',dirname(__FILE__) . '/PEAR/'); // } } } /* vim: set sts=4 ts=4 expandtab : */