]> source.dussan.org Git - nextcloud-server.git/commitdiff
moved app install/remove/update functions to lib/installer.php
authorRobin Appelman <icewind1991@gmail.com>
Sun, 15 May 2011 14:31:30 +0000 (16:31 +0200)
committerRobin Appelman <icewind1991@gmail.com>
Sun, 15 May 2011 14:32:22 +0000 (16:32 +0200)
added OC_APP::getAppInfo() for reading app metadata

lib/app.php
lib/installer.php [new file with mode: 0644]

index 7ce9e919f9a47855e2f79e74471ecbf8b86ac42e..e2744f51794938e833db8784b8ec515c423ba446 100644 (file)
@@ -314,97 +314,31 @@ class OC_APP{
 
                return $list;
        }
-
-       /**
-        * @brief Installs an app
-        * @param $data array with all information
-        * @returns integer
-        *
-        * This function installs an app. All information needed are passed in the
-        * associative array $data.
-        * The following keys are required:
-        *   - source: string, can be "path" or "http"
-        *
-        * One of the following keys is required:
-        *   - path: path to the file containing the app
-        *   - href: link to the downloadable file containing the app
-        *
-        * The following keys are optional:
-        *   - pretend: boolean, if set true the system won't do anything
-        *   - noinstall: boolean, if true the function oc_app_install will be
-        *     skipped
-        *   - inactive: boolean, if set true the appconfig/app.sample.php won't be
-        *     renamed
-        *
-        * This function works as follows
-        *   -# fetching the file
-        *   -# unzipping it
-        *   -# including appinfo/installer.php
-        *   -# executing "oc_app_install()"
-        *
-        * It is the task of oc_app_install to create the tables and do whatever is
-        * needed to get the app working.
-        */
-       public static function installApp( $data = array()){
-               // TODO: write function
-               return true;
-       }
-
+       
        /**
-        * @brief Update an application
-        * @param $data array with all information
-        * @returns integer
-        *
-        * This function installs an app. All information needed are passed in the
-        * associative array $data.
-        * The following keys are required:
-        *   - source: string, can be "path" or "http"
-        *
-        * One of the following keys is required:
-        *   - path: path to the file containing the app
-        *   - href: link to the downloadable file containing the app
-        *
-        * The following keys are optional:
-        *   - pretend: boolean, if set true the system won't do anything
-        *   - noupgrade: boolean, if true the function oc_app_upgrade will be
-        *     skipped
-        *
-        * This function works as follows
-        *   -# fetching the file
-        *   -# removing the old files
-        *   -# unzipping new file
-        *   -# including appinfo/installer.php
-        *   -# executing "oc_app_upgrade( $options )"
-        */
-       public static function upgradeApp( $data = array()){
-               // TODO: write function
-               return true;
-       }
-
-       /**
-        * @brief Removes an app
-        * @param $name name of the application to remove
-        * @param $options array with options
-        * @returns true/false
-        *
-        * This function removes an app. $options is an associative array. The
-        * following keys are optional:ja
-        *   - keeppreferences: boolean, if true the user preferences won't be deleted
-        *   - keepappconfig: boolean, if true the config will be kept
-        *   - keeptables: boolean, if true the database will be kept
-        *   - keepfiles: boolean, if true the user files will be kept
-        *
-        * This function works as follows
-        *   -# including appinfo/installer.php
-        *   -# executing "oc_app_uninstall( $options )"
-        *   -# removing the files
-        *
-        * The function will not delete preferences, tables and the configuration,
-        * this has to be done by the function oc_app_uninstall().
-        */
-       public static function removeApp( $name, $options = array()){
-               // TODO: write function
-               return true;
+        * @brief Read app metadata from the info.xml file
+        * @param string $appid id of the app
+        * @returns array
+       */
+       public static function getAppInfo($appid){
+               $file='apps/'.$appid.'/appinfo/info.xml';
+               if(!is_file($file)){
+                       return array();
+               }
+               $data=array();
+               $plugin=new DOMDocument();
+               $plugin->load($file);
+               $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[$child->tagName]=$child->textContent;
+                               }
+                       }
+               }
+               return $data;
        }
 }
 ?>
\ No newline at end of file
diff --git a/lib/installer.php b/lib/installer.php
new file mode 100644 (file)
index 0000000..c389fe9
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+/**
+ * ownCloud
+ *
+ * @author Robin Appelman
+ * @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/>.
+ *
+ */
+
+/**
+ * This class provides the functionality needed to install, update and remove plugins/apps
+ */
+class OC_INSTALLER{
+       /**
+        * @brief Installs an app
+        * @param $data array with all information
+        * @returns integer
+        *
+        * This function installs an app. All information needed are passed in the
+        * associative array $data.
+        * The following keys are required:
+        *   - source: string, can be "path" or "http"
+        *
+        * One of the following keys is required:
+        *   - path: path to the file containing the app
+        *   - href: link to the downloadable file containing the app
+        *
+        * The following keys are optional:
+        *   - pretend: boolean, if set true the system won't do anything
+        *   - noinstall: boolean, if true appinfo/install.php won't be loaded
+        *   - inactive: boolean, if set true the appconfig/app.sample.php won't be
+        *     renamed
+        *
+        * This function works as follows
+        *   -# fetching the file
+        *   -# unzipping it
+        *   -# including appinfo/install.php
+        *   -# setting the installed version
+        *
+        * It is the task of oc_app_install to create the tables and do whatever is
+        * needed to get the app working.
+        */
+       public static function installApp( $data = array()){
+               // TODO: write function
+               return true;
+       }
+
+       /**
+        * @brief Update an application
+        * @param $data array with all information
+        * @returns integer
+        *
+        * This function installs an app. All information needed are passed in the
+        * associative array $data.
+        * The following keys are required:
+        *   - source: string, can be "path" or "http"
+        *
+        * One of the following keys is required:
+        *   - path: path to the file containing the app
+        *   - href: link to the downloadable file containing the app
+        *
+        * The following keys are optional:
+        *   - pretend: boolean, if set true the system won't do anything
+        *   - noupgrade: boolean, if true appinfo/upgrade.php won't be loaded
+        *
+        * This function works as follows
+        *   -# fetching the file
+        *   -# removing the old files
+        *   -# unzipping new file
+        *   -# including appinfo/upgrade.php
+        *   -# setting the installed version
+        *
+        * upgrade.php can determine the current installed version of the app using "OC_APPCONFIG::getValue($appid,'installed_version')"
+        */
+       public static function upgradeApp( $data = array()){
+               // TODO: write function
+               return true;
+       }
+
+       /**
+        * @brief Removes an app
+        * @param $name name of the application to remove
+        * @param $options array with options
+        * @returns true/false
+        *
+        * This function removes an app. $options is an associative array. The
+        * following keys are optional:ja
+        *   - keeppreferences: boolean, if true the user preferences won't be deleted
+        *   - keepappconfig: boolean, if true the config will be kept
+        *   - keeptables: boolean, if true the database will be kept
+        *   - keepfiles: boolean, if true the user files will be kept
+        *
+        * This function works as follows
+        *   -# including appinfo/remove.php
+        *   -# removing the files
+        *
+        * The function will not delete preferences, tables and the configuration,
+        * this has to be done by the function oc_app_uninstall().
+        */
+       public static function removeApp( $name, $options = array()){
+               // TODO: write function
+               return true;
+       }
+}