function introspect_config_item($name, &$propbag)
 {
     global $serendipity;
     switch ($name) {
         case 'facebook_users':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_EVENT_FACEBOOK_USERS);
             $propbag->add('description', '');
             $propbag->add('default', '');
             break;
         case 'cronjob':
             if (class_exists('serendipity_event_cronjob')) {
                 $propbag->add('type', 'select');
                 $propbag->add('name', PLUGIN_EVENT_CRONJOB_CHOOSE);
                 $propbag->add('description', '');
                 $propbag->add('default', 'daily');
                 $propbag->add('select_values', serendipity_event_cronjob::getValues());
             } else {
                 $propbag->add('type', 'content');
                 $propbag->add('default', PLUGIN_AGGREGATOR_CRONJOB);
             }
             break;
         case 'limit':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_EVENT_FACEBOOK_LIMIT);
             $propbag->add('description', PLUGIN_EVENT_FACEBOOK_LIMIT_DESC);
             $propbag->add('default', '25');
             break;
         case 'via':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_EVENT_FACEBOOK_VIA);
             $propbag->add('description', '');
             $propbag->add('default', ' (via facebook)');
             break;
         case 'facebook_moderate':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_EVENT_FACEBOOK_MODERATE);
             $propbag->add('description', '');
             $propbag->add('default', false);
             break;
     }
     return true;
 }
 function introspect_config_item($name, &$propbag)
 {
     switch ($name) {
         case 'cronjob':
             if (class_exists('serendipity_event_cronjob')) {
                 $propbag->add('type', 'select');
                 $propbag->add('name', PLUGIN_EVENT_DBCLEAN_CRONJOB);
                 $propbag->add('description', '');
                 $propbag->add('default', 'daily');
                 $propbag->add('select_values', serendipity_event_cronjob::getValues());
             }
             break;
         case 'days':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_EVENT_DBCLEAN_MENU_KEEP . ' (' . DAYS . ')');
             $propbag->add('description', '');
             $propbag->add('default', '30');
             break;
         default:
             return false;
     }
     return true;
 }
 function introspect_config_item($name, &$propbag)
 {
     switch ($name) {
         case 'publishflag':
             $propbag->add('type', 'radio');
             $propbag->add('name', PLUGIN_AGGREGATOR_PUBLISH);
             $propbag->add('description', '');
             $propbag->add('radio', array('value' => array('true', 'false'), 'desc' => array(PUBLISH, DRAFT)));
             $propbag->add('default', 'true');
             break;
         case 'cronjob':
             if (class_exists('serendipity_event_cronjob')) {
                 $propbag->add('type', 'select');
                 $propbag->add('name', PLUGIN_EVENT_CRONJOB_CHOOSE);
                 $propbag->add('description', '');
                 $propbag->add('default', 'daily');
                 $propbag->add('select_values', serendipity_event_cronjob::getValues());
             } else {
                 $propbag->add('type', 'content');
                 $propbag->add('default', PLUGIN_AGGREGATOR_CRONJOB);
             }
             break;
         case 'debug':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_AGGREGATOR_DEBUG);
             $propbag->add('description', PLUGIN_AGGREGATOR_DEBUG_BLAHBLAH);
             $propbag->add('default', false);
             break;
         case 'markup':
             $plugins = serendipity_plugin_api::get_event_plugins();
             $markups = array();
             if (is_array($plugins)) {
                 // foreach() operates on copies of values, but we want to operate on references, so we use while()
                 @reset($plugins);
                 while (list($plugin, $plugin_data) = each($plugins)) {
                     if (!is_array($plugin_data['p']->markup_elements)) {
                         continue;
                     }
                     $markups[$plugin_data['p']->instance] = function_exists('serendipity_specialchars') ? serendipity_specialchars($plugin_data['p']->title) : htmlspecialchars($plugin_data['p']->title, ENT_COMPAT, LANG_CHARSET);
                 }
             }
             $propbag->add('type', 'multiselect');
             $propbag->add('name', PLUGIN_AGGREGATOR_MARKUP_DISABLE);
             $propbag->add('description', PLUGIN_AGGREGATOR_MARKUP_DISABLE_DESC);
             $propbag->add('select_values', $markups);
             $propbag->add('select_size', 6);
             $propbag->add('default', '');
             break;
         case 'engine':
             $propbag->add('type', 'radio');
             $propbag->add('radio', array('value' => array('onyx', 'magpierss', 'simplepie'), 'desc' => array('Onyx [BSD]', 'MagpieRSS [GPL]', 'SimplePie')));
             $propbag->add('name', PLUGIN_AGGREGATOR_CHOOSE_ENGINE);
             $propbag->add('description', PLUGIN_AGGREGATOR_CHOOSE_ENGINE_DESC);
             $propbag->add('default', 'onyx');
             break;
         case 'delete_dependencies':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_AGGREGATOR_DELETEDEPENDENCIES);
             $propbag->add('description', PLUGIN_AGGREGATOR_DELETEDEPENDENCIES_DESC);
             $propbag->add('default', true);
             break;
         case 'expire':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_AGGREGATOR_EXPIRE);
             $propbag->add('description', PLUGIN_AGGREGATOR_EXPIRE_BLAHBLAH);
             $propbag->add('default', 2);
             break;
         case 'expire_md5':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_AGGREGATOR_EXPIRE_MD5);
             $propbag->add('description', PLUGIN_AGGREGATOR_EXPIRE_MD5_BLAHBLAH);
             $propbag->add('default', 90);
             break;
         case 'ignore_updates':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_AGGREGATOR_IGNORE_UPDATES);
             $propbag->add('description', PLUGIN_AGGREGATOR_IGNORE_UPDATES_DESC);
             $propbag->add('default', false);
             break;
         case 'allow_comments':
             $propbag->add('type', 'boolean');
             $propbag->add('name', COMMENTS_ENABLE);
             $propbag->add('description', '');
             $propbag->add('default', false);
             break;
         default:
             return false;
     }
     return true;
 }
 function introspect_config_item($name, &$propbag)
 {
     global $serendipity;
     switch ($name) {
         case 'cronjob':
             if (class_exists('serendipity_event_cronjob')) {
                 $propbag->add('type', 'select');
                 $propbag->add('name', sprintf(PLUGIN_EVENT_SPARTACUS_CRONJOB_WHEN, $serendipity['blogMail']));
                 $propbag->add('description', '');
                 $propbag->add('default', 'none');
                 $propbag->add('select_values', serendipity_event_cronjob::getValues());
             } else {
                 $propbag->add('type', 'content');
                 $propbag->add('default', PLUGIN_EVENT_SPARTACUS_CRONJOB);
             }
             break;
         case 'enable_plugins':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_ENABLE_PLUGINS);
             $propbag->add('description', '');
             $propbag->add('default', 'true');
             break;
         case 'enable_themes':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_ENABLE_THEMES);
             $propbag->add('description', '');
             $propbag->add('default', 'true');
             break;
         case 'enable_remote':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_ENABLE_REMOTE);
             $propbag->add('description', sprintf(PLUGIN_EVENT_SPARTACUS_ENABLE_REMOTE_DESC, $serendipity['baseURL'] . $serendipity['indexFile'] . '?/plugin/' . $this->get_config('remote_url')));
             $propbag->add('default', 'false');
             break;
         case 'remote_url':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_ENABLE_REMOTE_URL);
             $propbag->add('description', PLUGIN_EVENT_SPARTACUS_ENABLE_REMOTE_URL_DESC);
             $propbag->add('default', 'spartacus_remote');
             break;
         case 'chmod_files':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_CHMOD);
             $propbag->add('description', PLUGIN_EVENT_SPARTACUS_CHMOD_DESC);
             $propbag->add('default', '');
             break;
         case 'chmod_dir':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_CHMOD_DIR);
             $propbag->add('description', PLUGIN_EVENT_SPARTACUS_CHMOD_DIR_DESC);
             $propbag->add('default', '');
             break;
         case 'chown':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_CHOWN);
             $propbag->add('description', PLUGIN_EVENT_SPARTACUS_CHOWN_DESC);
             $propbag->add('default', '');
             break;
         case 'custommirror':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR);
             $propbag->add('description', PLUGIN_EVENT_SPARTACUS_CUSTOMMIRROR_DESC);
             $propbag->add('default', '');
             break;
         case 'mirror_xml':
             $propbag->add('type', 'select');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_MIRROR_XML);
             $propbag->add('description', PLUGIN_EVENT_SPARTACUS_MIRROR_DESC);
             $propbag->add('select_values', $this->getMirrors('xml'));
             $propbag->add('default', 0);
             break;
         case 'mirror_files':
             $propbag->add('type', 'select');
             $propbag->add('name', PLUGIN_EVENT_SPARTACUS_MIRROR_FILES);
             $propbag->add('description', PLUGIN_EVENT_SPARTACUS_MIRROR_DESC);
             $propbag->add('select_values', $this->getMirrors('files'));
             $propbag->add('default', 0);
             break;
         case 'use_ftp':
             if (function_exists('ftp_connect')) {
                 $propbag->add('type', 'boolean');
                 $propbag->add('name', PLUGIN_EVENT_SPARTACUS_FTP_USE);
                 $propbag->add('description', PLUGIN_EVENT_SPARTACUS_FTP_USE_DESC);
                 if (@ini_get('safe_mode')) {
                     $propbag->add('default', 'true');
                 } else {
                     $propbag->add('default', 'false');
                 }
             }
             break;
         case 'ftp_server':
             if (function_exists('ftp_connect')) {
                 $propbag->add('type', 'string');
                 $propbag->add('name', PLUGIN_EVENT_SPARTACUS_FTP_SERVER);
                 $propbag->add('description', '');
                 $propbag->add('default', '');
             }
             break;
         case 'ftp_username':
             if (function_exists('ftp_connect')) {
                 $propbag->add('type', 'string');
                 $propbag->add('name', PLUGIN_EVENT_SPARTACUS_FTP_USERNAME);
                 $propbag->add('description', '');
                 $propbag->add('default', '');
             }
             break;
         case 'ftp_password':
             if (function_exists('ftp_connect')) {
                 $propbag->add('type', 'string');
                 $propbag->add('name', PLUGIN_EVENT_SPARTACUS_FTP_PASS);
                 $propbag->add('description', '');
                 $propbag->add('default', '');
             }
             break;
         case 'ftp_basedir':
             if (function_exists('ftp_connect')) {
                 $propbag->add('type', 'string');
                 $propbag->add('name', PLUGIN_EVENT_SPARTACUS_FTP_BASEDIR);
                 $propbag->add('description', PLUGIN_EVENT_SPARTACUS_FTP_BASEDIR_DESC);
                 $propbag->add('default', $serendipity['serendipityHTTPPath']);
             }
             break;
         default:
             return false;
     }
     return true;
 }
 function introspect_config_item($name, &$propbag)
 {
     switch ($name) {
         case 'usedate':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_MF_USEDATE);
             $propbag->add('description', '');
             $propbag->add('default', false);
             break;
         case 'subfolder':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_MF_SUBFOLDER);
             $propbag->add('description', '');
             $propbag->add('default', true);
             break;
         case 'debug':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_MF_DEBUG);
             $propbag->add('description', '');
             $propbag->add('default', false);
             break;
         case 'debug_mail':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_DEBUGFILE);
             $propbag->add('description', '');
             $propbag->add('default', '');
             break;
         case 'author':
             $propbag->add('type', 'select');
             $propbag->add('name', AUTHOR);
             $propbag->add('description', MF_AUTHOR_DESC);
             $propbag->add('default', '');
             $users = serendipity_fetchUsers();
             $vals = array();
             $vals['empty'] = MF_MYSELF;
             foreach ($users as $user) {
                 $vals[$user['authorid']] = $user['realname'];
             }
             $vals['byemail'] = 'Lookup by email';
             $propbag->add('select_values', $vals);
             break;
         case 'cronjob':
             if (class_exists('serendipity_event_cronjob')) {
                 $propbag->add('type', 'select');
                 $propbag->add('name', PLUGIN_EVENT_CRONJOB_CHOOSE);
                 $propbag->add('description', '');
                 $propbag->add('default', 'daily');
                 $propbag->add('select_values', serendipity_event_cronjob::getValues());
             } else {
                 $propbag->add('type', 'content');
                 $propbag->add('default', PLUGIN_MF_CRONJOB);
             }
             break;
         case 'plaintext_is_body':
             $propbag->add('type', 'boolean');
             $propbag->add('name', MF_TEXTBODY);
             $propbag->add('description', MF_TEXTBODY_DESC);
             $propbag->add('default', true);
             break;
         case 'plaintext_use_extended':
             $propbag->add('type', 'boolean');
             $propbag->add('name', MF_TEXTBODY_FIRST);
             $propbag->add('description', MF_TEXTBODY_FIRST_DESC);
             $propbag->add('default', true);
             break;
         case 'onlyfrom':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_ONLYFROM);
             $propbag->add('description', PLUGIN_MF_ONLYFROM_DESC);
             $propbag->add('default', '');
             break;
         case 'adminmenu':
             $propbag->add('type', 'radio');
             $propbag->add('name', PLUGIN_MF_AM);
             $propbag->add('description', PLUGIN_MF_AM_DESC);
             $propbag->add('radio', array('value' => array('true', 'false'), 'desc' => array(INTERNAL_MF, EXTERNAL_MF)));
             $propbag->add('default', DEFAULT_ADMINMENU);
             break;
         case 'textpref':
             $propbag->add('type', 'radio');
             $propbag->add('name', PLUGIN_MF_TEXTPREF);
             $propbag->add('description', PLUGIN_MF_TEXTPREF_DESC);
             $propbag->add('radio', array('value' => array('both', 'html', 'text'), 'desc' => array(PLUGIN_MF_TEXTPREF_BOTH, PLUGIN_MF_TEXTPREF_HTML, PLUGIN_MF_TEXTPREF_PLAIN)));
             $propbag->add('default', 'both');
             break;
         case 'hidename':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_HN);
             $propbag->add('description', PLUGIN_MF_HN_DESC);
             $propbag->add('default', DEFAULT_HIDENAME);
             break;
         case 'striptext':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_STRIPTEXT);
             $propbag->add('description', PLUGIN_MF_STRIPTEXT_DESC);
             $propbag->add('default', '');
             break;
         case 'splittext':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_SPLITTEXT);
             $propbag->add('description', PLUGIN_MF_SPLITTEXT_DESC);
             $propbag->add('default', '');
             break;
         case 'usetext':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_USETEXT);
             $propbag->add('description', PLUGIN_MF_USETEXT_DESC);
             $propbag->add('default', '');
             break;
         case 'mailserver':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_MS);
             $propbag->add('description', PLUGIN_MF_MS_DESC);
             $propbag->add('default', DEFAULT_MAILSERVER);
             break;
         case 'mailuser':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_MU);
             $propbag->add('description', PLUGIN_MF_MU_DESC);
             $propbag->add('default', DEFAULT_MAILUSER);
             break;
         case 'mailpass':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_MP);
             $propbag->add('description', PLUGIN_MF_MP_DESC);
             $propbag->add('default', DEFAULT_MAILPASS);
             break;
         case 'category':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_CAT);
             $propbag->add('description', PLUGIN_MF_CAT_DESC);
             $propbag->add('default', DEFAULT_CATEGORY);
             break;
         case 'maildir':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_MD);
             $propbag->add('description', PLUGIN_MF_MD_DESC);
             $propbag->add('default', DEFAULT_DIR);
             break;
         case 'mailport':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_PP);
             $propbag->add('description', PLUGIN_MF_PP_DESC);
             $propbag->add('default', DEFAULT_PORT);
             break;
         case 'timeout':
             $propbag->add('type', 'string');
             $propbag->add('name', PLUGIN_MF_TO);
             $propbag->add('description', PLUGIN_MF_TO_DESC);
             $propbag->add('default', DEFAULT_TIMEOUT);
             break;
         case 'deleteflag':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_MF_DF);
             $propbag->add('description', PLUGIN_MF_DF_DESC);
             $propbag->add('default', DEFAULT_DELETEFLAG);
             break;
         case 'blogflag':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_MF_BF);
             $propbag->add('description', PLUGIN_MF_BF_DESC);
             $propbag->add('default', DEFAULT_BLOGFLAG);
             break;
         case 'striptagsflag':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_MF_STRIPTAGS);
             $propbag->add('description', PLUGIN_MF_STRIPTAGS_DESC);
             $propbag->add('default', DEFAULT_STRIPTAGS);
             break;
         case 'publishflag':
             $propbag->add('type', 'radio');
             $propbag->add('name', PLUGIN_MF_PF);
             $propbag->add('description', PLUGIN_MF_PF_DESC);
             $propbag->add('radio', array('value' => array('true', 'false'), 'desc' => array(PUBLISH_MF, DRAFT_MF)));
             $propbag->add('default', DEFAULT_PUBLISHFLAG);
             break;
         case 'apopflag':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_MF_AF);
             $propbag->add('description', PLUGIN_MF_AF_DESC);
             $propbag->add('default', DEFAULT_APOPFLAG);
             break;
         case 'adflag':
             $propbag->add('type', 'boolean');
             $propbag->add('name', PLUGIN_MF_ADDFLAG);
             $propbag->add('description', PLUGIN_MF_ADDFLAG_DESC);
             $propbag->add('default', true);
             break;
         case 'default_comments':
             $propbag->add('type', 'boolean');
             $propbag->add('name', COMMENTS_ENABLE);
             $propbag->add('description', '');
             $propbag->add('default', true);
             break;
         case 'default_moderate':
             $propbag->add('type', 'boolean');
             $propbag->add('name', COMMENTS_MODERATE);
             $propbag->add('description', '');
             $propbag->add('default', false);
             break;
         case 'thumbnail_view':
             $propbag->add('type', 'boolean');
             $propbag->add('name', THUMBNAIL_VIEW);
             $propbag->add('description', THUMBNAIL_VIEW_DESC);
             $propbag->add('default', true);
             break;
         default:
             return false;
     }
     return true;
 }