From d10840ab181feba67e04f6bd6e81a10b8c6e0cf4 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Sun, 15 May 2011 16:31:30 +0200 Subject: [PATCH] moved app install/remove/update functions to lib/installer.php added OC_APP::getAppInfo() for reading app metadata --- lib/app.php | 114 ++++++++++---------------------------------- lib/installer.php | 117 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+), 90 deletions(-) create mode 100644 lib/installer.php 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 @@ +. + * + */ + +/** + * 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; + } +} -- 2.39.5