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.45');
$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'));
if (!class_exists('XML_RPC_Base')) {
require_once dirname(__FILE__) . '/PEAR/XML/RPC.php';
}
if (!class_exists('XML_RPC_Server')) {
require_once dirname(__FILE__) . '/PEAR/XML/RPC/Server.php';
}
require_once dirname(__FILE__) . '/serendipity_xmlrpc.inc.php';
return true;
default:
return false;
break;
}
} else {
return false;
}
}
}
/* vim: set sts=4 ts=4 expandtab : */