]> source.dussan.org Git - nextcloud-server.git/commitdiff
allow disabling apps, install apps as disabled
authorKamil Domanski <kdomanski@kdemail.net>
Sun, 19 Jun 2011 13:18:52 +0000 (15:18 +0200)
committerKamil Domanski <kdomanski@kdemail.net>
Sun, 19 Jun 2011 13:18:52 +0000 (15:18 +0200)
lib/app.php
lib/installer.php
lib/setup.php

index 4e67da3c414ee5bc9307ab4682c284a46bf06f72..c2a850b6f6a0da977b6481b37683ab5d01b4b56c 100644 (file)
@@ -59,7 +59,9 @@ class OC_APP{
                // The rest comes here
                $apps = OC_APPCONFIG::getApps();
                foreach( $apps as $app ){
-                       require( "apps/$app/appinfo/app.php" );
+                       if( self::isEnabled( $app )){
+                               require( "apps/$app/appinfo/app.php" );
+                       }
                }
 
                self::$init = true;
@@ -68,6 +70,43 @@ class OC_APP{
                return true;
        }
 
+       /**
+        * @brief checks whether or not an app is enabled
+        * @param $app app
+        * @returns true/false
+        *
+        * This function checks whether or not an app is enabled.
+        */
+       public static function isEnabled( $app ){
+               if( 'yes' == OC_APPCONFIG::getValue( $app, 'enabled' )){
+                       return true;
+               }
+
+               return false;
+       }
+
+       /**
+        * @brief enables an app
+        * @param $app app
+        * @returns true/false
+        *
+        * This function set an app as enabled in appconfig.
+        */
+       public static function enable( $app ){
+               OC_APPCONFIG::setValue( $app, 'enabled', 'yes' );
+       }
+
+       /**
+        * @brief enables an app
+        * @param $app app
+        * @returns true/false
+        *
+        * This function set an app as enabled in appconfig.
+        */
+       public static function disable( $app ){
+               OC_APPCONFIG::setValue( $app, 'enabled', 'no' );
+       }
+
        /**
         * @brief makes owncloud aware of this app
         * @param $data array with all information
index 7ab07bf50778d8fe373fa2e6ba9e1d21c2b9a3bd..02b71027cd7f3aca23250a83f8434429cd72c362 100644 (file)
@@ -59,7 +59,7 @@ class OC_INSTALLER{
                
                if(!isset($data['source'])){
                        error_log("No source specified when installing app");
-                       return;
+                       return false;
                }
                
                //download the file if necesary
@@ -67,13 +67,13 @@ class OC_INSTALLER{
                        $path=tempnam(sys_get_temp_dir(),'oc_installer_');
                        if(!isset($data['href'])){
                                error_log("No href specified when installing app from http");
-                               return;
+                               return false;
                        }
                        copy($data['href'],$path);
                }else{
                        if(!isset($data['path'])){
                                error_log("No path specified when installing app from local file");
-                               return;
+                               return false;
                        }
                        $path=$data['path'];
                }
@@ -92,7 +92,7 @@ class OC_INSTALLER{
                        if($data['source']=='http'){
                                unlink($path);
                        }
-                       return;
+                       return false;
                }
                
                //load the info.xml file of the app
@@ -102,23 +102,33 @@ class OC_INSTALLER{
                        if($data['source']=='http'){
                                unlink($path);
                        }
-                       return;
+                       return false;
                }
                $info=OC_APP::getAppInfo($extractDir.'/appinfo/info.xml');
                $basedir=$SERVERROOT.'/apps/'.$info['id'];
                
                //check if an app with the same id is already installed
-               if(is_dir($basedir)){
+               if(self::isInstalled( $info['id'] ))){
                        error_log("App already installed");
                        OC_HELPER::rmdirr($extractDir);
                        if($data['source']=='http'){
                                unlink($path);
                        }
-                       return;
+                       return false;
                }
+
+               //check if the destination directory already exists
++              if(is_dir($basedir)){
++                      error_log("App's directory already exists");
++                      OC_HELPER::rmdirr($extractDir);
++                      if($data['source']=='http'){
++                              unlink($path);
++                      }
++                      return false;
++              }
                
                if(isset($data['pretent']) and $data['pretent']==true){
-                       return;
+                       return false;
                }
                
                //copy the app to the correct place
@@ -128,7 +138,7 @@ class OC_INSTALLER{
                        if($data['source']=='http'){
                                unlink($path);
                        }
-                       return;
+                       return false;
                }
                OC_HELPER::copyr($extractDir,$basedir);
                
@@ -150,6 +160,23 @@ class OC_INSTALLER{
                
                //set the installed version
                OC_APPCONFIG::setValue($info['id'],'installed_version',$info['version']);
+               OC_APPCONFIG::setValue($info['id'],'enabled','no');
+               return true;
+       }
+
+       /**
+        * @brief checks whether or not an app is installed
+        * @param $app app
+        * @returns true/false
+        *
+        * Checks whether or not an app is installed, i.e. registered in apps table.
+        */
+       public static function isInstalled( $app ){
+
+               if( null == OC_APPCONFIG::getValue( $app, "installed_version" )){
+                       return false;
+               }
+
                return true;
        }
 
index e9cb3da686c390e88d015c6969e38ea894e05260..43ead7b96acf49b6845140ac4ab5201a1185612d 100644 (file)
@@ -147,6 +147,7 @@ class OC_SETUP {
 
                                        $info=OC_APP::getAppInfo("$SERVERROOT/apps/$app/appinfo/info.xml");
                                        OC_APPCONFIG::setValue($app,'installed_version',$info['version']);
+                                       OC_APPCONFIG::setValue($app,'enabled','yes');
                                }
 
                                //create htaccess files for apache hosts