[Pkg-owncloud-commits] [owncloud] 97/223: skip certain tests for shipped apps

David Prévot taffit at moszumanska.debian.org
Sun Jun 22 01:54:11 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit c378e76412fb0bfa52a4dd9e3fc500c6d492cd46
Author: Georg Ehrke <developer at georgehrke.com>
Date:   Fri Jun 13 21:45:31 2014 +0200

    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 96c6841..466aa4a 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 <shipped>true</shipped> tag which is not allowed for non shipped apps"));
 		}
diff --git a/settings/ajax/updateapp.php b/settings/ajax/updateapp.php
index 7010dfe..78f6775 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 {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list