summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Ehrke <developer@georgehrke.com>2014-06-13 21:45:31 +0200
committerGeorg Ehrke <developer@georgehrke.com>2014-06-13 21:45:31 +0200
commitc378e76412fb0bfa52a4dd9e3fc500c6d492cd46 (patch)
tree6a560c3df65e802757f034d3333b183c1f38fe2f
parent0890ce4f91df94052387141e8bcf917ead94cb55 (diff)
downloadnextcloud-server-c378e76412fb0bfa52a4dd9e3fc500c6d492cd46.tar.gz
nextcloud-server-c378e76412fb0bfa52a4dd9e3fc500c6d492cd46.zip
skip certain tests for shipped apps
-rw-r--r--lib/private/installer.php16
-rw-r--r--settings/ajax/updateapp.php5
2 files changed, 14 insertions, 7 deletions
diff --git a/lib/private/installer.php b/lib/private/installer.php
index 96c6841c2aa..466aa4a8f89 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 7010dfe23b5..78f6775fe95 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 {