]> source.dussan.org Git - nextcloud-server.git/commitdiff
skip certain tests for shipped apps
authorGeorg Ehrke <developer@georgehrke.com>
Fri, 13 Jun 2014 19:45:31 +0000 (21:45 +0200)
committerGeorg Ehrke <developer@georgehrke.com>
Fri, 13 Jun 2014 19:45:31 +0000 (21:45 +0200)
lib/private/installer.php
settings/ajax/updateapp.php

index 96c6841c2aab119b811269ccba11b583ad5bee06..466aa4a8f899d1e5f6bc8616f9e6d198479ec41d 100644 (file)
@@ -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 <shipped>true</shipped> tag which is not allowed for non shipped apps"));
                }
index 7010dfe23b53a0e510f9ecc569ee5a86e4f65ba7..78f6775fe952deff7e9229b0c8b6ce21153a14ad 100644 (file)
@@ -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 {