/** * Auto-Register dependencies of a plugin * * This method evaluates the "dependencies" member variable to check which plugins need to be installed. * * @access public * @param boolean If true, a depending plugin will be removed when this plugin is uninstalled * @param int The owner id of the current plugin * @return true */ function register_dependencies($remove = false, $authorid = '0') { global $serendipity; if (isset($this->dependencies) && is_array($this->dependencies)) { if ($remove) { $dependencies = @explode(';', $this->get_config('dependencies')); $modes = @explode(';', $this->get_config('dependency_modes')); if (!empty($dependencies) && is_array($dependencies)) { foreach ($dependencies as $idx => $dependency) { if ($modes[$idx] == 'remove' && serendipity_plugin_api::exists($dependency)) { serendipity_plugin_api::remove_plugin_instance($dependency); } } } } else { $keys = array(); $modes = array(); foreach ($this->dependencies as $dependency => $mode) { $exists = serendipity_plugin_api::exists($dependency); if (!$exists) { if (serendipity_plugin_api::is_event_plugin($dependency)) { $keys[] = serendipity_plugin_api::autodetect_instance($dependency, $authorid, true); } else { $keys[] = serendipity_plugin_api::autodetect_instance($dependency, $authorid, false); } } else { $keys[] = $exists; } $modes[] = $mode; } $this->set_config('dependencies', implode(';', $keys)); $this->set_config('dependency_modes', implode(';', $modes)); } } return true; }