diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2010-11-21 00:37:54 -0500 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2010-11-21 00:37:54 -0500 |
commit | d6877baca9b8c56ce3e1565791fa260cdc983d95 (patch) | |
tree | 8107511c9c449680af10b00cf5cbd845e3f63717 /plugindata.php | |
parent | 3a336843e1cdd340dd3630747b3e6265b6effa39 (diff) |
Load data for all plugins on plugin management page.
include.php: file to include to make creation of entry points easy
index.php: move most of this file into include.php (and include it)
plugindata.php: a separate entry point using include.php; load ALL plugins found, and write data gathered to plugindata.out.php
.gitignore: add plugindata.out.php
actions/pluginsadminpanel.php:
* use plugindata.out.php's common_plugindata() instead of StatusNet::getPlugins()
* give a button linking to plugindata.php, to refresh plugin data
lib/pluginlist.php:
* use plugindata.out.php's common_plugindata() instead of thowing the 'PluginVersion' event to currently enabled plugins
* for the enable/disable forms: was: if (!$disabled) now: if ($enabled && (!$disabled))
lib/statusnet.php: move the list of filenames for a plugin into it's own public static function; this is used by plugindata.php
Diffstat (limited to 'plugindata.php')
-rw-r--r-- | plugindata.php | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/plugindata.php b/plugindata.php new file mode 100644 index 000000000..58c5bacda --- /dev/null +++ b/plugindata.php @@ -0,0 +1,99 @@ +<?php +/** + * StatusNet - the distributed open-source microblogging tool + * Copyright (C) 2010 Free Software Foundation, Inc + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * @category StatusNet + * @package StatusNet + * @author Luke Shumaker <lukeshu@sbcglobal.net> + * @copyright 2010 Free Software Foundation, Inc http://www.fsf.org + * + * @license GNU Affero General Public License http://www.gnu.org/licenses/ + */ + +require('include.php'); + +function main() { + // Check permissions + + if (!common_logged_in()) { + // TRANS: Client error message thrown when trying to load plugin data while not logged in. + echo(_('Not logged in.')."\n"); + return false; + } + $user = common_current_user(); + assert(!empty($user)); + if (!$user->hasRight(Right::CONFIGURESITE)) { + // TRANS: Client error message thrown when a user tries to load plugin data but has no access rights. + echo(_('You cannot make changes to this site.')."\n"); + return false; + } + + // Do stuff + + $possibleFiles = StatusNet::pluginFiles('*'); + foreach ($possibleFiles as $pattern) { + $regex = '/'.str_replace('/','\/',str_replace('*','(.*)',$pattern)).'/'; + $matches = glob($pattern); + foreach ($matches as $file) { + $name = preg_replace($regex,'\1',$file); + loadPlugin($name,$file,$data); + } + } + $redirect = isset($_SERVER['HTTP_REFERER']); + + $fileName = 'plugindata.out.php'; + $fh = fopen($fileName, 'w'); + if (!$fh) { + $redirect = false; + // TRANS: Client error message thrown when plugindata.out.php can't be opened + echo(_("ERROR: cannot open 'plugindata.out.php' for writing.")."\n"); + } + fwrite($fh, "<?php\n". + "function common_plugindata() {\n". + " return ".var_export($data,true).";\n". + "}\n" + ); + fclose($fh); + if ($redirect) { + header('Location: '.$_SERVER['HTTP_REFERER']); + } else { + header('Content-type: text/plain'); + // TRANS: Plain text divider between mesages and plugin data. + echo("\n"._('---- Raw Plugin Data ----')."\n\n"); + var_export($data); + } +} + +function loadPlugin($pluginName,$file,&$data) { + if (!class_exists($pluginName.'Plugin')) { + if (@file_exists($file)) { + include_once($file); + } + } + if (class_exists($pluginName.'Plugin')) { + $className = $pluginName.'Plugin'; + $obj = new $className; + + $newData = array(); + $obj->onPluginVersion($newData); + foreach ($newData as $pluginInfo) { + $data[$pluginName] = $pluginInfo; + } + } +} + +main(); |