optimizations for updateApps
This commit is contained in:
parent
f74d11c0c3
commit
7bc9fa765c
2 changed files with 23 additions and 10 deletions
29
lib/app.php
29
lib/app.php
|
@ -265,19 +265,20 @@ class OC_App{
|
|||
/**
|
||||
* @brief Read app metadata from the info.xml file
|
||||
* @param string $appid id of the app or the path of the info.xml file
|
||||
* @param boolean path (optional)
|
||||
* @returns array
|
||||
*/
|
||||
public static function getAppInfo($appid){
|
||||
if(is_file($appid)){
|
||||
public static function getAppInfo($appid,$path=false){
|
||||
if($path){
|
||||
$file=$appid;
|
||||
}else{
|
||||
$file=OC::$APPSROOT.'/apps/'.$appid.'/appinfo/info.xml';
|
||||
if(!is_file($file)){
|
||||
return array();
|
||||
}
|
||||
}
|
||||
$data=array();
|
||||
$content=file_get_contents($file);
|
||||
if(!$content){
|
||||
return;
|
||||
}
|
||||
$xml = new SimpleXMLElement($content);
|
||||
$data['info']=array();
|
||||
foreach($xml->children() as $child){
|
||||
|
@ -381,9 +382,8 @@ class OC_App{
|
|||
*/
|
||||
public static function updateApps(){
|
||||
// The rest comes here
|
||||
$apps = OC_Appconfig::getApps();
|
||||
foreach( $apps as $app ){
|
||||
$installedVersion=OC_Appconfig::getValue($app,'installed_version');
|
||||
$versions = self::getAppVersions();
|
||||
foreach( $versions as $app=>$installedVersion ){
|
||||
$appInfo=OC_App::getAppInfo($app);
|
||||
if (isset($appInfo['version'])) {
|
||||
$currentVersion=$appInfo['version'];
|
||||
|
@ -395,6 +395,19 @@ class OC_App{
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get the installed version of all papps
|
||||
*/
|
||||
public static function getAppVersions(){
|
||||
$versions=array();
|
||||
$query = OC_DB::prepare( 'SELECT appid, configvalue FROM *PREFIX*appconfig WHERE configkey = "installed_version"' );
|
||||
$result = $query->execute();
|
||||
while($row = $result->fetchRow()){
|
||||
$versions[$row['appid']]=$row['configvalue'];
|
||||
}
|
||||
return $versions;
|
||||
}
|
||||
|
||||
/**
|
||||
* update the database for the app and call the update script
|
||||
* @param string appid
|
||||
|
|
|
@ -123,7 +123,7 @@ class OC_Installer{
|
|||
}
|
||||
return false;
|
||||
}
|
||||
$info=OC_App::getAppInfo($extractDir.'/appinfo/info.xml');
|
||||
$info=OC_App::getAppInfo($extractDir.'/appinfo/info.xml',true);
|
||||
$basedir=OC::$APPSROOT.'/apps/'.$info['id'];
|
||||
|
||||
//check if an app with the same id is already installed
|
||||
|
@ -296,7 +296,7 @@ class OC_Installer{
|
|||
if(is_file(OC::$APPSROOT."/apps/$app/appinfo/install.php")){
|
||||
include(OC::$APPSROOT."/apps/$app/appinfo/install.php");
|
||||
}
|
||||
$info=OC_App::getAppInfo(OC::$APPSROOT."/apps/$app/appinfo/info.xml");
|
||||
$info=OC_App::getAppInfo($app);
|
||||
OC_Appconfig::setValue($app,'installed_version',$info['version']);
|
||||
return $info;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue