skip certain tests for shipped apps
This commit is contained in:
parent
0890ce4f91
commit
c378e76412
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue