aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-05-15 16:31:30 +0200
committerRobin Appelman <icewind1991@gmail.com>2011-05-15 16:32:22 +0200
commitd10840ab181feba67e04f6bd6e81a10b8c6e0cf4 (patch)
tree4d1c6bbb7b774af9a8a694bc1e083d3da9fa662e /lib
parentd70dfbdebba6070368d1c8999a311dcfc81dec1d (diff)
downloadnextcloud-server-d10840ab181feba67e04f6bd6e81a10b8c6e0cf4.tar.gz
nextcloud-server-d10840ab181feba67e04f6bd6e81a10b8c6e0cf4.zip
moved app install/remove/update functions to lib/installer.php
added OC_APP::getAppInfo() for reading app metadata
Diffstat (limited to 'lib')
-rw-r--r--lib/app.php114
-rw-r--r--lib/installer.php117
2 files changed, 141 insertions, 90 deletions
diff --git a/lib/app.php b/lib/app.php
index 7ce9e919f9a..e2744f51794 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -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
index 00000000000..c389fe9c0cc
--- /dev/null
+++ b/lib/installer.php
@@ -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;
+ }
+}