From c378e76412fb0bfa52a4dd9e3fc500c6d492cd46 Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Fri, 13 Jun 2014 21:45:31 +0200 Subject: [PATCH] skip certain tests for shipped apps --- lib/private/installer.php | 16 ++++++++++------ settings/ajax/updateapp.php | 5 ++++- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/private/installer.php b/lib/private/installer.php index 96c6841c2a..466aa4a8f8 100644 --- a/lib/private/installer.php +++ b/lib/private/installer.php @@ -140,6 +140,8 @@ class OC_Installer{ /** * @brief Update an application + * @param array $info + * @param bool $isShipped * * This function installs an app. All information needed are passed in the * associative array $data. @@ -164,9 +166,9 @@ class OC_Installer{ * upgrade.php can determine the current installed version of the app using * "OC_Appconfig::getValue($appid, 'installed_version')" */ - public static function updateApp( $info=array() ) { + public static function updateApp( $info=array(), $isShipped=false) { list($extractDir, $path) = self::downloadApp($info); - $info = self::checkAppsIntegrity($info, $extractDir, $path); + $info = self::checkAppsIntegrity($info, $extractDir, $path, $isShipped); $currentDir = OC_App::getAppPath($info['id']); $basedir = OC_App::getInstallPath(); @@ -195,10 +197,11 @@ class OC_Installer{ /** * update an app by it's id * @param integer $ocsid + * @param bool $isShipped * @return bool * @throws Exception */ - public static function updateAppByOCSId($ocsid) { + public static function updateAppByOCSId($ocsid, $isShipped=false) { $appdata = OC_OCSClient::getApplication($ocsid); $download = OC_OCSClient::getApplicationDownload($ocsid, 1); @@ -278,10 +281,11 @@ class OC_Installer{ * check an app's integrity * @param array $data * @param string $extractDir + * @param bool $isShipped * @return array * @throws \Exception */ - public static function checkAppsIntegrity($data = array(), $extractDir, $path) { + public static function checkAppsIntegrity($data = array(), $extractDir, $path, $isShipped=false) { $l = \OC_L10N::get('lib'); //load the info.xml file of the app if(!is_file($extractDir.'/appinfo/info.xml')) { @@ -306,7 +310,7 @@ class OC_Installer{ } $info=OC_App::getAppInfo($extractDir.'/appinfo/info.xml', true); // check the code for not allowed calls - if(!OC_Installer::checkCode($info['id'], $extractDir)) { + if(!$isShipped && !OC_Installer::checkCode($info['id'], $extractDir)) { OC_Helper::rmdirr($extractDir); throw new \Exception($l->t("App can't be installed because of not allowed code in the App")); } @@ -318,7 +322,7 @@ class OC_Installer{ } // check if shipped tag is set which is only allowed for apps that are shipped with ownCloud - if(isset($info['shipped']) and ($info['shipped']=='true')) { + if(!$isShipped && isset($info['shipped']) && ($info['shipped']=='true')) { OC_Helper::rmdirr($extractDir); throw new \Exception($l->t("App can't be installed because it contains the true tag which is not allowed for non shipped apps")); } diff --git a/settings/ajax/updateapp.php b/settings/ajax/updateapp.php index 7010dfe23b..78f6775fe9 100644 --- a/settings/ajax/updateapp.php +++ b/settings/ajax/updateapp.php @@ -19,6 +19,7 @@ $appId = $_POST['appid']; if (!is_numeric($appId)) { $appId = OC_Appconfig::getValue($appId, 'ocsid', null); + $isShipped = OC_App::isShipped($appId); if ($appId === null) { OCP\JSON::error(array( @@ -26,11 +27,13 @@ if (!is_numeric($appId)) { )); exit; } +} else { + $isShipped = false; } $appId = OC_App::cleanAppId($appId); -$result = OC_Installer::updateAppByOCSId($appId); +$result = OC_Installer::updateAppByOCSId($appId, $isShipped); if($result !== false) { OC_JSON::success(array('data' => array('appid' => $appId))); } else {