From e047feb2ad90c3b103c92d35f794988767b2ba21 Mon Sep 17 00:00:00 2001
From: Kamil Domanski <kdomanski@kdemail.net>
Date: Tue, 21 Jun 2011 22:16:41 +0200
Subject: [PATCH] install shipped apps also in "installed apps" page

---
 admin/apps.php    |  3 +++
 lib/installer.php | 38 ++++++++++++++++++++++++++++++++++++++
 lib/setup.php     | 28 +---------------------------
 3 files changed, 42 insertions(+), 27 deletions(-)

diff --git a/admin/apps.php b/admin/apps.php
index 5eec7e626d..56e76d139d 100644
--- a/admin/apps.php
+++ b/admin/apps.php
@@ -22,6 +22,7 @@
 */
 
 require_once('../lib/base.php');
+include_once('../lib/installer.php');
 require( 'template.php' );
 if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){
 	header( "Location: ".OC_HELPER::linkTo( "", "index.php" ));
@@ -42,6 +43,8 @@ if($installed){
 	$apps = OC_APPCONFIG::getApps();
 	$records = array();
 
+	OC_INSTALLER::installShippedApps(false);
+
 	OC_APP::setActiveNavigationEntry( "core_apps_installed" );
 	foreach($apps as $app){
 		$info=OC_APP::getAppInfo("$SERVERROOT/apps/$app/appinfo/info.xml");
diff --git a/lib/installer.php b/lib/installer.php
index 91b7ea7da6..a237caa098 100644
--- a/lib/installer.php
+++ b/lib/installer.php
@@ -236,4 +236,42 @@ class OC_INSTALLER{
 		// TODO: write function
 		return true;
 	}
+
+	/**
+	 * @brief Installs shipped apps
+	 * @param $enabled
+	 *
+	 * This function installs all apps found in the 'apps' directory;
+	 * If $enabled is true, apps are installed as enabled.
+	 * If $enabled is false, apps are installed as disabled.
+	 */
+	public static function installShippedApps( $enabled ){
+		global $SERVERROOT;
+		$dir = opendir( "$SERVERROOT/apps" );
+		while( false !== ( $filename = readdir( $dir ))){
+			if( substr( $filename, 0, 1 ) != '.' and is_dir("$SERVERROOT/apps/$filename") ){
+				if( file_exists( "$SERVERROOT/apps/$filename/appinfo/app.php" )){
+					if(!OC_INSTALLER::isInstalled($filename)){
+						//install the database
+						if(is_file("$SERVERROOT/apps/$filename/appinfo/database.xml")){
+							OC_DB::createDbFromStructure("$SERVERROOT/apps/$filename/appinfo/database.xml");
+						}
+
+						//run appinfo/install.php
+						if(is_file("$SERVERROOT/apps/$filename/appinfo/install.php")){
+							include("$SERVERROOT/apps/$filename/appinfo/install.php");
+						}
+						$info=OC_APP::getAppInfo("$SERVERROOT/apps/$filename/appinfo/info.xml");
+						OC_APPCONFIG::setValue($filename,'installed_version',$info['version']);
+						if( $enabled ){
+							OC_APPCONFIG::setValue($filename,'enabled','yes');
+						}else{
+							OC_APPCONFIG::setValue($filename,'enabled','no');
+						}
+					}
+				}
+			}
+		}
+		closedir( $dir );
+	}
 }
diff --git a/lib/setup.php b/lib/setup.php
index bdb5dcc4e2..281f24db50 100644
--- a/lib/setup.php
+++ b/lib/setup.php
@@ -136,7 +136,7 @@ class OC_SETUP {
 				OC_GROUP::addToGroup($username, 'admin');
 
 				//guess what this does
-				self::installShippedApps();
+				OC_INSTALLER::installShippedApps(true);
 
 				//create htaccess files for apache hosts
 				self::createHtaccess(); //TODO detect if apache is used
@@ -186,32 +186,6 @@ class OC_SETUP {
 		$content = "deny from all";
 		file_put_contents(OC_CONFIG::getValue('datadirectory', $SERVERROOT.'/data').'/.htaccess', $content);
 	}
-
-	private static function installShippedApps(){
-		global $SERVERROOT;
-		$dir = opendir( "$SERVERROOT/apps" );
-		while( false !== ( $filename = readdir( $dir ))){
-			if( substr( $filename, 0, 1 ) != '.' and is_dir("$SERVERROOT/apps/$filename") ){
-				if( file_exists( "$SERVERROOT/apps/$filename/appinfo/app.php" )){
-					if(!OC_INSTALLER::isInstalled($filename)){
-						//install the database
-						if(is_file("$SERVERROOT/apps/$filename/appinfo/database.xml")){
-							OC_DB::createDbFromStructure("$SERVERROOT/apps/$filename/appinfo/database.xml");
-						}
-
-						//run appinfo/install.php
-						if(is_file("$SERVERROOT/apps/$filename/appinfo/install.php")){
-							include("$SERVERROOT/apps/$filename/appinfo/install.php");
-						}
-						$info=OC_APP::getAppInfo("$SERVERROOT/apps/$filename/appinfo/info.xml");
-						OC_APPCONFIG::setValue($filename,'installed_version',$info['version']);
-						OC_APPCONFIG::setValue($filename,'enabled','yes');
-					}
-				}
-			}
-		}
-		closedir( $dir );
-	}
 }
 
 ?>
-- 
GitLab