serendipity_plugin_api::create_plugin_instance('serendipity_event_nl2br', null, 'event');
serendipity_plugin_api::create_plugin_instance('serendipity_event_browsercompatibility', null, 'event');
serendipity_plugin_api::create_plugin_instance('serendipity_event_spamblock', null, 'event');
+
+ /* Register additional plugins? */
+ if (file_exists(S9Y_INCLUDE_PATH . 'plugins/preload.txt')) {
+ // Expects this format, one plugin per line:
+ // serendipity_event_xxx:event
+ // serendipity_plugin_xxx:left
+ $plugins = file(S9Y_INCLUDE_PATH . 'plugins/preload.txt');
+ foreach($plugins AS $plugin) {
+ $plugin = trim($plugin);
+ if (empty($plugin)) {
+ continue;
+ }
+
+ $plugin_info = explode(':', $plugin);
+ serendipity_plugin_api::create_plugin_instance($plugin_info[0], null, $plugin_info[1]);
+ }
+ }
}
/**
if ($f{0} == '.' || $f == 'CVS' || !is_dir($ppath . '/' . $f) || !is_readable($ppath . '/' .$f)) {
continue;
}
-
+
$subd = opendir($ppath . '/' . $f);
if (!$subd) {
continue;
// Instead of only looking for directories, search for files within subdirectories
$final_loop = false;
while (($subf = readdir($subd)) !== false) {
-
+
if ($subf{0} == '.' || $subf == 'CVS') {
continue;
}
$where[] = " placement = '" . serendipity_db_escape_string($filter) . "' ";
}
}
-
+
if (!empty($classname)) {
$where[] = " (name LIKE '@" . serendipity_db_escape_string($classname) . "%' OR name LIKE '" . serendipity_db_escape_string($classname) . "%') ";
}
-
+
if (!empty($id)) {
$where[] = " name = '" . serendipity_db_escape_string($id) . "' ";
}
-
+
if (count($where) > 0) {
$sql .= ' WHERE ' . implode(' AND ', $where);
}
{
global $serendipity;
+ // Can be shortcircuited via a $serendipity['prevent_sidebar_plugins_(left|right|event)'] variable!
+ if (!$negate && $serendipity['prevent_sidebar_plugins_' . $filter] == true) {
+ return 0;
+ }
+
+
$sql = "SELECT COUNT(placement) AS count from {$serendipity['dbPrefix']}plugins ";
if ($filter !== '*') {
if (empty($pluginPath)) {
$pluginPath = $name;
}
-
+
$file = false;
-
+
// First try the local path, and then (if existing) a shared library repository ...
// Internal plugins ignored.
if (!empty($instance_id) && $instance_id{0} == '@') {
} elseif (file_exists(S9Y_INCLUDE_PATH . 'plugins/' . $pluginPath . '/' . $name . '.php')) {
$file = S9Y_INCLUDE_PATH . 'plugins/' . $pluginPath . '/' . $name . '.php';
}
-
+
return $file;
}
} else {
$class_name =& $name;
}
-
+
return $class_name;
}
-
+
/**
* Auto-detect a plugin and see if the file information is given, and if not, detect it.
*
$filename = false;
$is_internal = false;
-
+
$class_name = serendipity_plugin_api::getClassByInstanceID($instance_id, $is_internal);
if (!$is_internal) {
if (empty($pluginPath)) {
$pluginPath = $class_name;
}
-
+
// $serendipity['debug']['pluginload'][] = "Including plugin(2) $class_name, $pluginPath";
$filename = serendipity_plugin_api::includePlugin($class_name, $pluginPath);
}
// $serendipity['debug']['pluginload'][] = "Found plugin file $filename";
return $filename;
}
-
+
/**
* Instantiates a plugin class
*
// $serendipity['debug']['pluginload'][] = "getClassByInstanceID $instance_id, $is_internal";
$class_name = serendipity_plugin_api::getClassByInstanceID($instance_id, $is_internal);
}
-
+
if (!class_exists($class_name) && !empty($pluginFile)) {
// $serendipity['debug']['pluginload'][] = "Classname does not exist. Including $pluginFile.";
include_once($pluginFile);
$retval = false;
return $retval;
}
-
+
// $serendipity['debug']['pluginload'][] = "Returning new $class_name($instance_id)";
$p =& new $class_name($instance_id);
if (!is_null($authorid)) {
global $serendipity;
static $pluginlist = null;
-
+
if ($pluginlist === null) {
$data = serendipity_db_query("SELECT p.*,
pc.category
}
}
}
-
+
if (is_array($pluginlist[$pluginFile]) && !preg_match('@plugin_internal\.inc\.php@', $pluginFile)) {
$data = $pluginlist[$pluginFile];
if ((int)filemtime($pluginFile) == (int)$data['last_modified']) {
return $plugin;
}
}
-
+
$plugin =& serendipity_plugin_api::load_plugin($class_data['name'], null, $class_data['pluginPath'], $pluginFile);
-
+
return $plugin;
}
-
+
/**
* Set cache information about a plugin
*
*/
function &setPluginInfo(&$plugin, &$pluginFile, &$bag, &$class_data, $pluginlocation = 'local') {
global $serendipity;
-
+
static $dbfields = array(
'plugin_file',
'class_name',
);
serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}pluginlist WHERE plugin_file = '" . serendipity_db_escape_string($pluginFile) . "' AND pluginlocation = '" . serendipity_db_escape_string($pluginlocation) . "'");
-
+
if (!empty($pluginFile) && file_exists($pluginFile)) {
- $lastModified = filemtime($pluginFile);
+ $lastModified = filemtime($pluginFile);
} else {
$lastModified = 0;
}
'plugin_file' => $pluginFile,
'pluginlocation' => $pluginlocation,
'plugintype' => $serendipity['GET']['type'],
- 'last_modified' => $lastModified
+ 'last_modified' => $lastModified
);
$groups = $bag->get('groups');
} elseif (is_array($plugin)) {
if (!isset($data['stackable']) || empty($data['stackable'])) {
$data['stackable'] = '0';
}
-
+
// Only insert data keys that exist in the DB.
$insertdata = array();
foreach($dbfields AS $field) {
$insertdata[$field] = $data[$field];
}
-
+
if ($data['upgradable']) {
- serendipity_db_query("UPDATE {$serendipity['dbPrefix']}pluginlist
- SET upgrade_version = '" . serendipity_db_escape_string($data['upgrade_version']) . "'
+ serendipity_db_query("UPDATE {$serendipity['dbPrefix']}pluginlist
+ SET upgrade_version = '" . serendipity_db_escape_string($data['upgrade_version']) . "'
WHERE plugin_class = '" . serendipity_db_escape_string($data['plugin_class']) . "'");
}
serendipity_db_insert('pluginlist', $insertdata);
);
serendipity_db_insert('plugincategories', $cat);
}
-
+
$data['groups'] = $groups;
return $data;
if (!is_array($plugins)) {
return;
}
-
+
if (!isset($serendipity['smarty'])) {
$serendipity['smarty_raw_mode'] = true;
serendipity_smarty_init();
$addData = func_get_args();
serendipity_plugin_api::hook_event('frontend_generate_plugins', $plugins, $addData);
+ if (count($plugins) == 0) {
+ $serendipity['prevent_sidebar_plugins_' . $side] = true;
+ }
+
foreach ($plugins as $plugin_data) {
$plugin =& serendipity_plugin_api::load_plugin($plugin_data['name'], $plugin_data['authorid'], $plugin_data['path']);
if (is_object($plugin)) {
}
return $false;
}
-
+
return $event_plugins;
}
if (isset($serendipity['no_events']) && $serendipity['no_events'] == true) {
return false;
}
-
+
$plugins = serendipity_plugin_api::get_event_plugins();
-
+
if (is_array($plugins)) {
// foreach() operates on copies of values, but we want to operate on references, so we use while()
@reset($plugins);
/**
* @access private
* @var string Name of the property bag
- */
+ */
var $name = null;
/**
$valid = false;
}
break;
-
+
case 'number':
if (!preg_match('@^[\d]*$@', $value)) {
$valid = false;
}
break;
}
-
+
$error = $cbag->get('validate_error');
if ($valid) {
return true;
} elseif (!empty($error)) {
return $error;
} else {
- return sprintf(PLUGIN_API_VALIDATE_ERROR, $config_item, $validate);
+ return sprintf(PLUGIN_API_VALIDATE_ERROR, $config_item, $validate);
}
}
-
+
return true;
}
-
+
/**
* Output plugin's contents (Sidebar plugins)
*
function set_config($name, $value, $implodekey = '^')
{
$name = $this->instance . '/' . $name;
-
+
if (is_array($value)) {
$dbvalue = implode($implodekey, $value);
$_POST['serendipity']['plugin'][$name] = $dbvalue;