summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-06-02 20:21:31 +0200
committerRobin Appelman <icewind1991@gmail.com>2011-06-02 20:21:31 +0200
commit5d3cf06c73bcf805dfcf2f3d12330ac90d8a7179 (patch)
tree5b8da278eca9a39d111b1c51bd1dcbf6ca7c594a /lib
parent7f987b84a52f8351923db8a3c5db945480859ec8 (diff)
downloadnextcloud-server-5d3cf06c73bcf805dfcf2f3d12330ac90d8a7179.tar.gz
nextcloud-server-5d3cf06c73bcf805dfcf2f3d12330ac90d8a7179.zip
delete old plugin stuff
Diffstat (limited to 'lib')
-rw-r--r--lib/plugin.php381
1 files changed, 0 insertions, 381 deletions
diff --git a/lib/plugin.php b/lib/plugin.php
deleted file mode 100644
index d8291a8a758..00000000000
--- a/lib/plugin.php
+++ /dev/null
@@ -1,381 +0,0 @@
-<?php
-
-/**
-* ownCloud
-*
-* @author Frank Karlitschek
-* @copyright 2010 Frank Karlitschek karlitschek@kde.org
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* version 3 of the License, or any later version.
-*
-* This library 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 library. If not, see <http://www.gnu.org/licenses/>.
-*
-*/
-
-class OC_PLUGIN{
- static private $blacklist=array();
-
- /**
- * load the plugin with the given id
- * @param string id
- * @return bool
- */
- static public function load($id){
- global $SERVERROOT;
- $data=self::getPluginData($id);
- if($data){
- if(isset($data['info']['require'])){
- $minVersion=explode('.',$data['info']['require']);
- $version=OC_UTIL::getVersion();
- $roundTo=count($minVersion);
- while(count($version)>$roundTo){
- if($version[count($version)-1]>=50){
- $version[count($version)-2]++;
- }
- unset($version[count($version)-1]);
- }
- for($i=0;$i<count($minVersion);$i++){
- if($version[$i]<$minVersion[$i]){
- return false;
- }
- }
- }
- //check for uninstalled db's
- if(isset($data['install']) and isset($data['install']['database'])){
- foreach($data['install']['database'] as $db){
- $installed=OC_APPCONFIG::getValue('plugin_installer','database_installed_'.$id.'_'.$db,'false');
- if($installed!='true'){
- self::installDB($id);
- break;
- }
- }
- }
-
- if(isset($data['runtime'])){
- foreach($data['runtime'] as $include){
- include($SERVERROOT.'/plugins/'.$id.'/'.$include);
- }
- }
- }
- return false;
- }
-
- /**
- * Get a list of all installed plugins
- */
- public static function listPlugins() {
- global $SERVERROOT;
- $plugins = array();
- $fd = opendir($SERVERROOT . '/plugins');
- while ( false !== ($filename = readdir($fd)) ) {
- if ( $filename<>'.' AND $filename<>'..' AND ('.' != substr($filename, 0, 1))) {
- if(file_exists($SERVERROOT . '/plugins/'.$filename.'/plugin.xml')){
- $plugins[]=$filename;
- }
- }
- }
- closedir($fd);
- return $plugins;
- }
-
- /**
- * Load all plugins that aren't blacklisted
- */
- public static function loadPlugins() {
- $CONFIG_INSTALLED = OC_CONFIG::getValue( "installed", false );
- if($CONFIG_INSTALLED){
- global $SERVERROOT;
- $plugins = self::listPlugins();
- $blacklist=self::loadBlacklist();
- foreach($plugins as $plugin){
- if (array_search($plugin,$blacklist)===false) {
- self::load($plugin);
- }
- }
- }
- }
-
- /**
- * load the blacklist from blacklist.txt
- * @return array
- */
- public static function loadBlacklist(){
- global $SERVERROOT;
- if(count(self::$blacklist)>0){
- return self::$blacklist;
- }
- $blacklist=array();
- if(is_file($SERVERROOT.'/plugins/blacklist.txt')){
- $file=file_get_contents($SERVERROOT.'/plugins/blacklist.txt');
- $lines=explode("\n",$file);
- foreach($lines as $line){
- $id=trim($line);
- if($id!='' and is_dir($SERVERROOT.'/plugins/'.$id)){
- $blacklist[]=$id;
- }
- }
- }
- self::$blacklist=$blacklist;
- return $blacklist;
- }
-
- /**
- * save a blacklist to blacklist.txt
- * @param array blacklist
- */
- private static function saveBlacklist($blacklist){
- global $SERVERROOT;
- $file='';
- foreach($blacklist as $item){
- $file.="$item\n";
- }
- self::$blacklist=$blacklist;
- file_put_contents($SERVERROOT.'/plugins/blacklist.txt',$file);
- }
-
- /**
- * add a plugin to the blacklist
- * @param string id
- */
- public static function addToBlacklist($id){
- $blacklist=self::loadBlacklist();
- if(array_search($id,$blacklist)===false){
- $blacklist[]=$id;
- self::$blacklist=$blacklist;
- self::saveBlacklist($blacklist);
- }
- }
-
- /**
- * remove a plugin to the blacklist
- * @param string id
- */
- public static function removeFromBlacklist($id){
- $blacklist=self::loadBlacklist();
- $index=array_search($id,$blacklist);
- if($index!==false){
- unset($blacklist[$index]);
- self::$blacklist=$blacklist;
- self::saveBlacklist($blacklist);
- }
- }
-
- /**
- * Load data from the plugin.xml of a plugin, either identified by the plugin or the path of the plugin.xml file
- * @param string id
- * @return array
- */
- public static function getPluginData($id){
- global $SERVERROOT;
- if(is_file($id)){
- $file=$id;
- }else{
- if(!is_dir($SERVERROOT.'/plugins/'.$id) or !is_file($SERVERROOT.'/plugins/'.$id.'/plugin.xml')){
- return false;
- }else{
- $file=$SERVERROOT.'/plugins/'.$id.'/plugin.xml';
- }
- }
- $data=array();
- $plugin=new DOMDocument();
- $plugin->load($file);
- $data['version']=$plugin->documentElement->getAttribute('version');
- $info=$plugin->getElementsByTagName('info');
- if($info->length>0){
- $info=$info->item(0);
- $data['info']=array();
- foreach($info->childNodes as $child){
- if($child->nodeType==XML_ELEMENT_NODE){
- $data['info'][$child->tagName]=$child->textContent;
- }
- }
- }
- $runtime=$plugin->getElementsByTagName('runtime');
- if($runtime->length>0){
- $runtime=$runtime->item(0);
- $data['runtime']=array();
- foreach($runtime->childNodes as $child){
- if($child->nodeType==XML_ELEMENT_NODE and $child->tagName=='include'){
- $data['runtime'][]=$child->textContent;
- }
- }
- }
- $install=$plugin->getElementsByTagName('install');
- if($install->length>0){
- $install=$install->item(0);
- $data['install']=array();
- foreach($install->childNodes as $child){
- if($child->nodeType==XML_ELEMENT_NODE){
- $data['install']['include']=array();
- $data['install']['dialog']=array();
- $data['install']['database']=array();
- switch($child->tagName){
- case 'include':
- $data['install']['include'][]=$child->textContent;
- break;
- case 'dialog':
- $data['install']['dialog'][]=$child->textContent;
- break;
- case 'database':
- $data['install']['database'][]=$child->textContent;
- $data['install']['database_installed'][$child->textContent]=($child->hasAttribute('installed') and $child->getAttribute('installed')=='true')?true:false;
- break;
- }
- }
- }
- }
- $uninstall=$plugin->getElementsByTagName('uninstall');
- if($uninstall->length>0){
- $uninstall=$uninstall->item(0);
- $data['uninstall']=array();
- foreach($uninstall->childNodes as $child){
- if($child->nodeType==XML_ELEMENT_NODE){
- $data['uninstall']['include']=array();
- $data['uninstall']['dialog']=array();
- switch($child->tagName){
- case 'include':
- $data['uninstall']['include'][]=$child->textContent;
- break;
- case 'dialog':
- $data['uninstall']['dialog'][]=$child->textContent;
- break;
- }
- }
- }
- }
- return $data;
- }
-
-
- /**
- * Save data to the plugin.xml of a plugin, either identified by the plugin or the path of the plugin.xml file
- * @param string id
- * @param array data the plugin data in the same structure as returned by getPluginData
- * @return bool
- */
- public static function savePluginData($id,$data){
- global $SERVERROOT;
- if(is_file($id)){
- $file=$id;
- }
- if(!is_dir($SERVERROOT.'/plugins/'.$id) or !is_file($SERVERROOT.'/plugins/'.$id.'/plugin.xml')){
- return false;
- }else{
- $file=$SERVERROOT.'/plugins/'.$id.'/plugin.xml';
- }
- $plugin=new DOMDocument();
- $pluginNode=$plugin->createElement('plugin');
- $pluginNode->setAttribute('version',$data['version']);
- $plugin->appendChild($pluginNode);
- $info=$plugin->createElement('info');
- foreach($data['info'] as $name=>$value){
- $node=$plugin->createElement($name);
- $node->appendChild($plugin->createTextNode($value));
- $info->appendChild($node);
- }
- $pluginNode->appendChild($info);
- if(isset($data['runtime'])){
- $runtime=$plugin->createElement('runtime');
- foreach($data['runtime'] as $include){
- $node=$plugin->createElement('include');
- $node->appendChild($plugin->createTextNode($include));
- $runtime->appendChild($node);
- }
- $pluginNode->appendChild($runtime);
- }
- if(isset($data['install'])){
- $install=$plugin->createElement('install');
- foreach($data['install']['include'] as $include){
- $node=$plugin->createElement('include');
- $node->appendChild($plugin->createTextNode($include));
- $install->appendChild($node);
- }
- foreach($data['install']['dialog'] as $dialog){
- $node=$plugin->createElement('dialog');
- $node->appendChild($plugin->createTextNode($dialog));
- $install->appendChild($node);
- }
- foreach($data['install']['database'] as $database){
- $node=$plugin->createElement('database');
- $node->appendChild($plugin->createTextNode($database));
- if($data['install']['database_installed'][$database]){
- $node->setAttribute('installed','true');
- }
- $install->appendChild($node);
- }
- $pluginNode->appendChild($install);
- }
- if(isset($data['uninstall'])){
- $uninstall=$plugin->createElement('uninstall');
- foreach($data['uninstall']['include'] as $include){
- $node=$plugin->createElement('include');
- $node->appendChild($plugin->createTextNode($include));
- $uninstall->appendChild($node);
- }
- foreach($data['uninstall']['dialog'] as $dialog){
- $node=$plugin->createElement('dialog');
- $node->appendChild($plugin->createTextNode($dialog));
- $uninstall->appendChild($node);
- }
- $pluginNode->appendChild($uninstall);
- }
- $plugin->save($file);
- }
-
- /**
- * install the databases of a plugin
- * @param string id
- * @return bool
- */
- public static function installDB($id){
- global $SERVERROOT;
- $data=OC_PLUGIN::getPluginData($id);
- foreach($data['install']['database'] as $db){
- $installed=OC_APPCONFIG::getValue('plugin_installer','database_installed_'.$id.'_'.$db,'false');
- if ($installed!='true'){
- $file=$SERVERROOT.'/plugins/'.$id.'/'.$db;
- OC_DB::createDbFromStructure($file);
- OC_APPCONFIG::setValue('plugin_installer','database_installed_'.$id.'_'.$db,'true');
- }
- }
- return true;
- }
-
- public static function installPlugin($path){
- global $SERVERROOT;
- if(is_file($path)){
- $zip = new ZipArchive;
- if($zip->open($path)===TRUE){
- $folder=sys_get_temp_dir().'/OC_PLUGIN_INSTALL/';
- mkdir($folder);
- $zip->extractTo($folder);
- if(is_file($folder.'/plugin.xml')){
- $pluginData=self::getPluginData($folder.'/plugin.xml');
- if(array_search($pluginData['info']['id'],self::listPlugins())===false){
- if(isset($pluginData['install'])){
- foreach($pluginData['install']['database'] as $db){
- OC_DB::createDbFromStructure($folder.'/'.$db);
- OC_APPCONFIG::setValue('plugin_installer','database_installed_'.$id.'_'.$db,'true');
- }
- foreach($pluginData['install']['include'] as $include){
- include($folder.'/'.$include);
- }
- }
- recursive_copy($folder,$SERVERROOT.'/plugins/'.$pluginData['info']['id']);
- }
- }
- delTree($folder);
- }
- }
- }
-}
-?>