コード例 #1
0
        ?>
    <h2><?php 
        echo SIDEBAR_PLUGINS;
        ?>
</h2>
<?php 
    }
    ?>
<br />
<?php 
    $foreignPlugins = $pluginstack = $errorstack = array();
    serendipity_plugin_api::hook_event('backend_plugins_fetchlist', $foreignPlugins);
    $pluginstack = array_merge((array) $foreignPlugins['pluginstack'], $pluginstack);
    $errorstack = array_merge((array) $foreignPlugins['errorstack'], $errorstack);
    $plugins = serendipity_plugin_api::get_installed_plugins();
    $classes = serendipity_plugin_api::enum_plugin_classes($serendipity['GET']['type'] === 'event');
    usort($classes, 'serendipity_pluginListSort');
    $counter = 0;
    foreach ($classes as $class_data) {
        $pluginFile = serendipity_plugin_api::probePlugin($class_data['name'], $class_data['classname'], $class_data['pluginPath']);
        $plugin =& serendipity_plugin_api::getPluginInfo($pluginFile, $class_data, $serendipity['GET']['type']);
        if (is_object($plugin)) {
            // Object is returned when a plugin could not be cached.
            $bag = new serendipity_property_bag();
            $plugin->introspect($bag);
            // If a foreign plugin is upgradable, keep the new version number.
            if (isset($foreignPlugins['pluginstack'][$class_data['name']]) && $foreignPlugins['pluginstack'][$class_data['name']]['upgradable']) {
                $class_data['upgrade_version'] = $foreignPlugins['pluginstack'][$class_data['name']]['upgrade_version'];
            }
            $props = serendipity_plugin_api::setPluginInfo($plugin, $pluginFile, $bag, $class_data, 'local', $foreignPlugins);
            $counter++;
コード例 #2
0
 /**
  * Install a new plugin by ensuring that it does not already exist
  *
  * @access public
  * @param   string      The classname of the plugin
  * @param   int         The new owner author
  * @param   boolean     Indicates if the plugin is an event plugin
  * @return  object      Returns the plugin object or false, if failure
  */
 function &autodetect_instance($plugin_name, $authorid, $is_event_plugin = false)
 {
     if ($is_event_plugin) {
         $side = 'event';
     } else {
         $side = 'right';
     }
     $classes = serendipity_plugin_api::enum_plugin_classes(null);
     if (isset($classes[$plugin_name])) {
         $instance = serendipity_plugin_api::create_plugin_instance($plugin_name, null, $side, $authorid, $classes[$plugin_name]['pluginPath']);
     } else {
         $instance = false;
     }
     return $instance;
 }
コード例 #3
0
 /**
  *
  * are plugins installed, available or not
  *
  * @access private
  *
  */
 function pluginstatus()
 {
     global $serendipity;
     $uplugs = array('serendipity_event_downloadmanager', 'serendipity_event_guestbook', 'serendipity_event_forum', 'serendipity_event_contactform', 'serendipity_event_thumbnails', 'serendipity_event_usergallery', 'serendipity_event_faq');
     $plugins = serendipity_plugin_api::get_installed_plugins('event');
     $classes = serendipity_plugin_api::enum_plugin_classes('event');
     foreach ($uplugs as $plugin) {
         if (in_array($plugin, $plugins)) {
             $this->pluginstats[$plugin] = array('status' => STATICPAGE_PLUGINS_INSTALLED, 'color' => 'Green');
         } elseif (isset($classes[$plugin])) {
             $this->pluginstats[$plugin] = array('status' => STATICPAGE_PLUGIN_AVAILABLE, 'color' => 'Yellow');
         } else {
             $this->pluginstats[$plugin] = array('status' => STATICPAGE_PLUGIN_NOTAVAILABLE, 'color' => 'Red');
         }
     }
 }
コード例 #4
0
 function event_hook($event, &$bag, &$eventData, $addData = null)
 {
     global $serendipity;
     $hooks =& $bag->get('event_hooks');
     if (isset($hooks[$event])) {
         switch ($event) {
             case 'cronjob':
                 if ($this->get_config('cronjob') == $eventData) {
                     serendipity_event_cronjob::log('Spartacus', 'plugin');
                     $avail = array();
                     $install = array();
                     $meth = array('event', 'sidebar');
                     $active = serendipity_plugin_api::get_installed_plugins();
                     $avail['event'] = $this->buildList($this->fetchOnline('event'), 'event');
                     $avail['sidebar'] = $this->buildList($this->fetchOnline('sidebar'), 'sidebar');
                     #echo "XAVAIL:<pre>" . print_r($avail, true) . "</pre>";
                     $install['event'] = serendipity_plugin_api::enum_plugin_classes(true);
                     $install['sidebar'] = serendipity_plugin_api::enum_plugin_classes(false);
                     #echo "XINSTALL:<pre>" . print_r($install, true) . "</pre>";
                     $mailtext = '';
                     foreach ($meth as $method) {
                         foreach ($install[$method] as $class_data) {
                             #echo "Probe " . $class_data['name']. "<br />\n"; // DEBUG
                             $pluginFile = serendipity_plugin_api::probePlugin($class_data['name'], $class_data['classname'], $class_data['pluginPath']);
                             $plugin = serendipity_plugin_api::getPluginInfo($pluginFile, $class_data, $method);
                             if (is_object($plugin)) {
                                 #echo "Non cached<br />\n";
                                 #echo "<pre>" . print_r($avail[$method][$class_data['name']], true) . "</pre>";
                                 // Object is returned when a plugin could not be cached.
                                 $bag = new serendipity_property_bag();
                                 $plugin->introspect($bag);
                                 // If a foreign plugin is upgradable, keep the new version number.
                                 if (isset($avail[$method][$class_data['name']])) {
                                     $class_data['upgrade_version'] = $avail[$method][$class_data['name']]['upgrade_version'];
                                 }
                                 $props = serendipity_plugin_api::setPluginInfo($plugin, $pluginFile, $bag, $class_data, 'local', $avail[$method]);
                                 #echo "<pre>" . print_r($props, true) . "</pre>";
                             } elseif (is_array($plugin)) {
                                 // Array is returned if a plugin could be fetched from info cache
                                 $props = $plugin;
                                 #echo "Cached<br />\n";
                             } else {
                                 $props = false;
                                 #echo "Error<br />\n";
                             }
                             if (is_array($props)) {
                                 #echo "<pre>" . print_r($props, true) . "</pre>\n";
                                 if (version_compare($props['version'], $props['upgrade_version'], '<')) {
                                     $mailtext .= ' * ' . $class_data['name'] . " NEW VERSION: " . $props['upgrade_version'] . " - CURRENT VERSION: " . $props['version'] . "\n";
                                 }
                             } else {
                                 $mailtext .= " X ERROR: " . $class_data['true_name'] . "\n";
                             }
                         }
                     }
                     if (!empty($mailtext)) {
                         serendipity_sendMail($serendipity['blogMail'], 'Spartacus update report ' . $serendipity['baseURL'], $mailtext, $serendipity['blogMail']);
                         echo nl2br($mailtext);
                     }
                 } else {
                     $propbag->add('type', 'suboption');
                 }
                 break;
             case 'external_plugin':
                 if (!serendipity_db_bool($this->get_config('enable_remote'))) {
                     return false;
                 }
                 if ($eventData == $this->get_config('remote_url')) {
                     header('Content-Type: text/plain');
                     $avail = array();
                     $install = array();
                     $meth = array('event', 'sidebar');
                     $active = serendipity_plugin_api::get_installed_plugins();
                     $avail['event'] = $this->buildList($this->fetchOnline('event'), 'event');
                     $avail['sidebar'] = $this->buildList($this->fetchOnline('sidebar'), 'sidebar');
                     $install['event'] = serendipity_plugin_api::enum_plugin_classes(true);
                     $install['sidebar'] = serendipity_plugin_api::enum_plugin_classes(false);
                     foreach ($meth as $method) {
                         echo "LISTING: {$method}\n-------------------\n";
                         foreach ($install[$method] as $class_data) {
                             $pluginFile = serendipity_plugin_api::probePlugin($class_data['name'], $class_data['classname'], $class_data['pluginPath']);
                             $plugin = serendipity_plugin_api::getPluginInfo($pluginFile, $class_data, $method);
                             if (is_object($plugin)) {
                                 // Object is returned when a plugin could not be cached.
                                 $bag = new serendipity_property_bag();
                                 $plugin->introspect($bag);
                                 // If a foreign plugin is upgradable, keep the new version number.
                                 if (isset($avail[$method][$class_data['name']])) {
                                     $class_data['upgrade_version'] = $avail[$method][$class_data['name']]['upgrade_version'];
                                 }
                                 $props = serendipity_plugin_api::setPluginInfo($plugin, $pluginFile, $bag, $class_data, 'local', $avail[$method]);
                             } elseif (is_array($plugin)) {
                                 // Array is returned if a plugin could be fetched from info cache
                                 $props = $plugin;
                             } else {
                                 $props = false;
                             }
                             if (is_array($props)) {
                                 #print_r($props);
                                 if (version_compare($props['version'], $props['upgrade_version'], '<')) {
                                     echo "UPGRADE: " . $class_data['name'] . " -- " . $props['upgrade_version'] . "\n";
                                 } else {
                                     echo "OK: " . $class_data['name'] . " -- " . $props['version'] . "\n";
                                 }
                             } else {
                                 echo "ERROR: " . $class_data['true_name'] . "\n";
                             }
                         }
                     }
                 }
                 break;
             case 'backend_pluginlisting_header':
                 if (serendipity_db_bool($this->get_config('enable_plugins'))) {
                     echo '<div id="upgrade_notice" class="clearfix">';
                     echo '    <a id="upgrade_sidebar" class="button_link" href="?serendipity[adminModule]=plugins&amp;serendipity[adminAction]=addnew&amp;serendipity[only_group]=UPGRADE">' . PLUGIN_EVENT_SPARTACUS_CHECK_SIDEBAR . '</a>';
                     echo '    <a id="upgrade_event" class="button_link" href="?serendipity[adminModule]=plugins&amp;serendipity[adminAction]=addnew&amp;serendipity[only_group]=UPGRADE&amp;serendipity[type]=event">' . PLUGIN_EVENT_SPARTACUS_CHECK_EVENT . '</a> ';
                     echo '</div>';
                 }
                 break;
             case 'backend_templates_fetchlist':
                 if (serendipity_db_bool($this->get_config('enable_themes'))) {
                     $eventData = $this->buildTemplateList($this->fetchOnline('template', true), 'template');
                 }
                 break;
             case 'backend_templates_fetchtemplate':
                 if (serendipity_db_bool($this->get_config('enable_themes'))) {
                     if (!empty($eventData['GET']['spartacus_fetch'])) {
                         $this->download($this->fetchOnline('template', true), $eventData['GET']['theme'], 'templates');
                     }
                 }
                 break;
             case 'backend_plugins_fetchlist':
                 if (serendipity_db_bool($this->get_config('enable_plugins'))) {
                     $type = isset($serendipity['GET']['type']) && !empty($serendipity['GET']['type']) ? $serendipity['GET']['type'] : 'sidebar';
                     $eventData = array('pluginstack' => $this->buildList($this->fetchOnline($type), $type), 'errorstack' => array(), 'upgradeURI' => '&amp;serendipity[spartacus_upgrade]=true', 'baseURI' => '&amp;serendipity[spartacus_fetch]=' . $type);
                 }
                 break;
             case 'backend_plugins_fetchplugin':
                 if (serendipity_db_bool($this->get_config('enable_plugins'))) {
                     if (!empty($eventData['GET']['spartacus_fetch'])) {
                         $baseDir = $this->download($this->fetchOnline($eventData['GET']['spartacus_fetch'], true), $eventData['GET']['install_plugin']);
                         if ($baseDir === false) {
                             $eventData['install'] = false;
                         } elseif (!empty($baseDir)) {
                             $eventData['GET']['pluginPath'] = $baseDir;
                         } else {
                             $eventData['GET']['pluginPath'] = $eventData['GET']['install_plugin'];
                         }
                         if ($eventData['GET']['spartacus_upgrade']) {
                             $eventData['install'] = false;
                         }
                     }
                 }
                 break;
             case 'backend_directory_create':
                 if (serendipity_db_bool($this->get_config('use_ftp')) && !is_dir($eventData)) {
                     return $this->make_dir_via_ftp($eventData);
                 }
                 break;
             default:
                 return false;
         }
         return true;
     } else {
         return false;
     }
 }
コード例 #5
0
ファイル: plugins.inc.php プロジェクト: jimjag/Serendipity
     // for upgrades, the distinction in sidebar and event-plugins is not useful. We will fetch both and mix the lists
     if ($serendipity['GET']['type'] == 'event') {
         $serendipity['GET']['type'] = 'sidebar';
     } else {
         $serendipity['GET']['type'] = 'event';
     }
     $foreignPluginsTemp = array();
     serendipity_plugin_api::hook_event('backend_plugins_fetchlist', $foreignPluginsTemp);
     $pluginstack = array_merge((array) $foreignPluginsTemp['pluginstack'], $pluginstack);
     $errorstack = array_merge((array) $foreignPluginsTemp['errorstack'], $errorstack);
     $foreignPlugins = array_merge($foreignPlugins, $foreignPluginsTemp);
 }
 $plugins = serendipity_plugin_api::get_installed_plugins();
 $classes = serendipity_plugin_api::enum_plugin_classes($serendipity['GET']['type'] === 'event');
 if ($serendipity['GET']['only_group'] == 'UPGRADE') {
     $classes = array_merge($classes, serendipity_plugin_api::enum_plugin_classes(!($serendipity['GET']['type'] === 'event')));
     $data['type'] = 'both';
 }
 usort($classes, 'serendipity_pluginListSort');
 $counter = 0;
 foreach ($classes as $class_data) {
     $pluginFile = serendipity_plugin_api::probePlugin($class_data['name'], $class_data['classname'], $class_data['pluginPath']);
     $plugin =& serendipity_plugin_api::getPluginInfo($pluginFile, $class_data, $serendipity['GET']['type']);
     if (is_object($plugin)) {
         // Object is returned when a plugin could not be cached.
         $bag = new serendipity_property_bag();
         $plugin->introspect($bag);
         // If a foreign plugin is upgradable, keep the new version number.
         if (isset($foreignPlugins['pluginstack'][$class_data['name']]) && $foreignPlugins['pluginstack'][$class_data['name']]['upgradable']) {
             $class_data['upgrade_version'] = $foreignPlugins['pluginstack'][$class_data['name']]['upgrade_version'];
         }
コード例 #6
0
 function event_hook($event, &$bag, &$eventData)
 {
     global $serendipity;
     $hooks =& $bag->get('event_hooks');
     if (isset($hooks[$event])) {
         switch ($event) {
             case 'external_plugin':
                 if (!serendipity_db_bool($this->get_config('enable_remote'))) {
                     return false;
                 }
                 if ($eventData == $this->get_config('remote_url')) {
                     header('Content-Type: text/plain');
                     $avail = array();
                     $install = array();
                     $meth = array('event', 'sidebar');
                     $active = serendipity_plugin_api::get_installed_plugins();
                     $avail['event'] = $this->buildList($this->fetchOnline('event'), 'event');
                     $avail['sidebar'] = $this->buildList($this->fetchOnline('sidebar'), 'sidebar');
                     $install['event'] = serendipity_plugin_api::enum_plugin_classes(true);
                     $install['sidebar'] = serendipity_plugin_api::enum_plugin_classes(false);
                     foreach ($meth as $method) {
                         echo "LISTING: {$method}\n-------------------\n";
                         foreach ($install[$method] as $class_data) {
                             $pluginFile = serendipity_plugin_api::probePlugin($class_data['name'], $class_data['classname'], $class_data['pluginPath']);
                             $plugin = serendipity_plugin_api::getPluginInfo($pluginFile, $class_data, $method);
                             if (is_object($plugin)) {
                                 // Object is returned when a plugin could not be cached.
                                 $bag = new serendipity_property_bag();
                                 $plugin->introspect($bag);
                                 // If a foreign plugin is upgradable, keep the new version number.
                                 if (isset($avail[$method][$class_data['name']]) && $avail[$method][$class_data['name']]['upgradable']) {
                                     $class_data['upgrade_version'] = $avail[$method][$class_data['name']]['upgrade_version'];
                                 }
                                 $props = serendipity_plugin_api::setPluginInfo($plugin, $pluginFile, $bag, $class_data, 'local', $avail[$method]);
                             } elseif (is_array($plugin)) {
                                 // Array is returned if a plugin could be fetched from info cache
                                 $props = $plugin;
                             } else {
                                 $props = false;
                             }
                             if (is_array($props)) {
                                 #print_r($props);
                                 if (version_compare($props['version'], $props['upgrade_version'], '<')) {
                                     echo "UPGRADE: " . $class_data['name'] . " -- " . $props['upgrade_version'] . "\n";
                                 } else {
                                     echo "OK: " . $class_data['name'] . " -- " . $props['version'] . "\n";
                                 }
                             } else {
                                 echo "ERROR: " . $class_data['true_name'] . "\n";
                             }
                         }
                     }
                 }
                 return true;
                 break;
             case 'backend_pluginlisting_header':
                 if (serendipity_db_bool($this->get_config('enable_plugins'))) {
                     echo '<br /><div id="upgrade_notice" class="serendipityAdminMsgSuccess">';
                     echo '<a href="?serendipity[adminModule]=plugins&amp;serendipity[adminAction]=addnew&amp;serendipity[only_group]=UPGRADE" class="serendipityIconLink upgrade_sidebar"><img src="' . serendipity_getTemplateFile('admin/img/upgrade_now.png') . '" style="border: 0px none ; vertical-align: middle; display: inline;" alt="" />' . PLUGIN_EVENT_SPARTACUS_CHECK_SIDEBAR . '</a> &nbsp; ';
                     echo '<a href="?serendipity[adminModule]=plugins&amp;serendipity[adminAction]=addnew&amp;serendipity[only_group]=UPGRADE&amp;serendipity[type]=event" class="serendipityIconLink upgrade_event"><img src="' . serendipity_getTemplateFile('admin/img/upgrade_now.png') . '" style="border: 0px none ; vertical-align: middle; display: inline;" alt="" />' . PLUGIN_EVENT_SPARTACUS_CHECK_EVENT . '</a> ';
                     echo '</div>';
                 }
                 return true;
                 break;
             case 'backend_pluginlisting_header_upgrade':
                 echo '<em>' . PLUGIN_EVENT_SPARTACUS_CHECK_HINT . '</em><br />';
                 return true;
                 break;
             case 'backend_templates_fetchlist':
                 if (serendipity_db_bool($this->get_config('enable_themes'))) {
                     $eventData = $this->buildTemplateList($this->fetchOnline('template', true), 'template');
                 }
                 return true;
                 break;
             case 'backend_templates_fetchtemplate':
                 if (serendipity_db_bool($this->get_config('enable_themes'))) {
                     if (!empty($eventData['GET']['spartacus_fetch'])) {
                         $this->download($this->fetchOnline('template', true), $eventData['GET']['theme'], 'templates');
                     }
                 }
                 return false;
                 break;
             case 'backend_plugins_fetchlist':
                 if (serendipity_db_bool($this->get_config('enable_plugins'))) {
                     $type = isset($serendipity['GET']['type']) && !empty($serendipity['GET']['type']) ? $serendipity['GET']['type'] : 'sidebar';
                     $eventData = array('pluginstack' => $this->buildList($this->fetchOnline($type), $type), 'errorstack' => array(), 'upgradeURI' => '&amp;serendipity[spartacus_upgrade]=true', 'baseURI' => '&amp;serendipity[spartacus_fetch]=' . $type);
                 }
                 return true;
                 break;
             case 'backend_plugins_fetchplugin':
                 if (serendipity_db_bool($this->get_config('enable_plugins'))) {
                     if (!empty($eventData['GET']['spartacus_fetch'])) {
                         $baseDir = $this->download($this->fetchOnline($eventData['GET']['spartacus_fetch'], true), $eventData['GET']['install_plugin']);
                         if ($baseDir === false) {
                             $eventData['install'] = false;
                         } elseif (!empty($baseDir)) {
                             $eventData['GET']['pluginPath'] = $baseDir;
                         } else {
                             $eventData['GET']['pluginPath'] = $eventData['GET']['install_plugin'];
                         }
                         if ($eventData['GET']['spartacus_upgrade']) {
                             $eventData['install'] = false;
                         }
                     }
                 }
                 return false;
                 break;
             case 'backend_directory_create':
                 if (serendipity_db_bool($this->get_config('use_ftp')) && !is_dir($eventData)) {
                     return $this->make_dir_via_ftp($eventData);
                 }
                 return true;
                 break;
             default:
                 return false;
                 break;
         }
     } else {
         return false;
     }
 }