')) !== false) { fclose($stream); return true; } else { fclose($stream); return false; } } else return false; } function deletePlugin($pluginId, $referer = NULL) { if (empty($pluginId)) return false; foreach (scandir(CRON_PATH) as $file) { if ($file[0] == '.' || !is_file(CRON_PATH.$file) || CRON_PATH.$file == 'init.php') continue; if (($pos = strpos($file, '-')) === false) continue; if (substr($file, $pos+1, strlen($pluginId)+8) == 'plugin.'.$pluginId.'.') unlink(CRON_PATH.$file); } foreach (scandir(CONFIG_PATH) as $file) { if ($file[0] == '.' || !is_file(CONFIG_PATH.$file)) continue; if (substr($file, 0, strlen($pluginId)+8) == 'plugin.'.$pluginId.'.') unlink(CONFIG_PATH.$file); } foreach (scandir(LOG_PATH.'plugin/') as $file) { if ($file[0] == '.' || !is_file(LOG_PATH.'plugin/'.$file)) continue; if (substr($file, 0, strlen($pluginId)+1) == $pluginId.'.') unlink(LOG_PATH.'plugin/'.$file); } if (file_exists(PLUGINS_PATH.$pluginId.'/uninstall.php') && is_file(PLUGINS_PATH.$pluginId.'/uninstall.php')) { if ($referer != NULL) $tpl->redirect('resources/plugins/'.$pluginId.'/uninstall.php?referer='.urlencode($referer)); } else { deleteFolder(PLUGINS_PATH.$pluginId.'/'); if ($referer != NULL) $tpl->redirect($referer); } return true; } function getOnlinePlugins() { global $config, $globalLanguage; $lang = $globalLanguage; if (!class_exists('cURL')) (include LIBRARY_PATH.'curl/curl.class.php'); $curl = new cURL($config['url']['plugin']); $curl->execute(); if ($curl->getStatusCode() != '200') return $curl->getStatusCode(); if ($curl->getResult($data) != JSON_ERROR_NONE) return 0; if (!isset($data['plugins'])) return 1; $attributes = array('name', 'description', 'manual', 'requirement', 'screenshots'); foreach ($data['plugins'] as $pluginName => &$plugin) { foreach ($attributes as $attribute) { if (!isset($plugin[$attribute])) continue; if (isset($plugin[$attribute][$lang])) $plugin[$attribute] = $plugin[$attribute][$lang]; else $plugin[$attribute] = current($plugin[$attribute]); } if (isset($plugin['versions'][$plugin['latestVersion']]['changelog'][$lang])) $plugin['versions'][$plugin['latestVersion']]['changelog'] = $plugin['versions'][$plugin['latestVersion']]['changelog'][$lang]; else $plugin['versions'][$plugin['latestVersion']]['changelog'] = current($plugin['versions'][$plugin['latestVersion']]['changelog'][$lang]); } array_multisort($data['plugins'], SORT_ASC); return $data['plugins']; } function checkPluginUpdate($plugins = NULL, $onlinePlugins = NULL) { $plugins = ($plugins != NULL) ? $plugins : pluginList(); $onlinePlugins = ($onlinePlugins != NULL) ? $onlinePlugins : getOnlinePlugins(); if (!is_array($plugins) || !is_array($onlinePlugins)) return array(); $availableUpdates = array(); foreach ($plugins as $plugin) { if (!isset($onlinePlugins[$plugin['id']])) continue; if ($plugin['version']['code'] < $onlinePlugins[$plugin['id']]['latestVersion']) $availableUpdates[$plugin['id']] = array('id' => $plugin['id'], 'name' => $plugin['name'], 'version' => array('name' => $plugin['version']['name'], 'code' => $onlinePlugins[$plugin['id']]['latestVersion'])); } return $availableUpdates; } function getPluginConfig($config, $default = NULL) { return getConfig('plugin.'.PLUGIN_ID.'.'.$config, $default); } function setPluginConfig($config, $value) { return setConfig('plugin.'.PLUGIN_ID.'.'.$config, $value); } function removePluginConfig($config) { return removeConfig('plugin.'.PLUGIN_ID.'.'.$config); } ?>