Пример #1
0
 public function testInstallApp()
 {
     $pathOfTestApp = __DIR__;
     $pathOfTestApp .= '/../data/';
     $pathOfTestApp .= 'testapp.zip';
     $tmp = OC_Helper::tmpFile('.zip');
     OC_Helper::copyr($pathOfTestApp, $tmp);
     $data = array('path' => $tmp, 'source' => 'path');
     OC_Installer::installApp($data);
     $isInstalled = OC_Installer::isInstalled(self::$appid);
     $this->assertTrue($isInstalled);
 }
Пример #2
0
 public function testInstallApp()
 {
     $pathOfTestApp = __DIR__;
     $pathOfTestApp .= '/../data/';
     $pathOfTestApp .= 'testapp.zip';
     $tmp = \OC::$server->getTempManager()->getTemporaryFile('.zip');
     OC_Helper::copyr($pathOfTestApp, $tmp);
     $data = array('path' => $tmp, 'source' => 'path', 'appdata' => ['id' => 'Bar', 'level' => 100]);
     OC_Installer::installApp($data);
     $isInstalled = OC_Installer::isInstalled(self::$appid);
     $this->assertTrue($isInstalled);
 }
Пример #3
0
 /**
  * enables an app
  * @param mixed $app app
  * @param array $groups (optional) when set, only these groups will have access to the app
  * @throws \Exception
  * @return void
  *
  * This function set an app as enabled in appconfig.
  */
 public static function enable($app, $groups = null)
 {
     self::$enabledAppsCache = array();
     // flush
     if (!OC_Installer::isInstalled($app)) {
         $app = self::installApp($app);
     }
     if (!is_null($groups)) {
         OC_Appconfig::setValue($app, 'enabled', json_encode($groups));
     } else {
         OC_Appconfig::setValue($app, 'enabled', 'yes');
     }
 }
Пример #4
0
 /**
  * Installs shipped apps
  *
  * This function installs all apps found in the 'apps' directory that should be enabled by default;
  */
 public static function installShippedApps()
 {
     foreach (OC::$APPSROOTS as $app_dir) {
         if ($dir = opendir($app_dir['path'])) {
             while (false !== ($filename = readdir($dir))) {
                 if (substr($filename, 0, 1) != '.' and is_dir($app_dir['path'] . "/{$filename}")) {
                     if (file_exists($app_dir['path'] . "/{$filename}/appinfo/app.php")) {
                         if (!OC_Installer::isInstalled($filename)) {
                             $info = OC_App::getAppInfo($filename);
                             $enabled = isset($info['default_enable']);
                             if ($enabled) {
                                 OC_Installer::installShippedApp($filename);
                                 OC_Appconfig::setValue($filename, 'enabled', 'yes');
                             }
                         }
                     }
                 }
             }
             closedir($dir);
         }
     }
 }
Пример #5
0
 /**
  * enables an app
  *
  * @param mixed $app app
  * @param array $groups (optional) when set, only these groups will have access to the app
  * @throws \Exception
  * @return void
  *
  * This function set an app as enabled in appconfig.
  */
 public static function enable($app, $groups = null)
 {
     self::$enabledAppsCache = array();
     // flush
     if (!OC_Installer::isInstalled($app)) {
         $app = self::installApp($app);
     }
     $appManager = \OC::$server->getAppManager();
     if (!is_null($groups)) {
         $groupManager = \OC::$server->getGroupManager();
         $groupsList = [];
         foreach ($groups as $group) {
             $groupItem = $groupManager->get($group);
             if ($groupItem instanceof \OCP\IGroup) {
                 $groupsList[] = $groupManager->get($group);
             }
         }
         $appManager->enableAppForGroups($app, $groupsList);
     } else {
         $appManager->enableApp($app);
     }
 }
Пример #6
0
 /**
  * @brief enables an app
  * @param mixed $app app
  * @throws \Exception
  * @return void
  *
  * This function set an app as enabled in appconfig.
  */
 public static function enable($app)
 {
     self::$enabledAppsCache = array();
     // flush
     if (!OC_Installer::isInstalled($app)) {
         // check if app is a shipped app or not. OCS apps have an integer as id, shipped apps use a string
         if (!is_numeric($app)) {
             $app = OC_Installer::installShippedApp($app);
         } else {
             $appdata = OC_OCSClient::getApplication($app, \OC_Util::getVersion());
             $download = OC_OCSClient::getApplicationDownload($app, 1, \OC_Util::getVersion());
             if (isset($download['downloadlink']) and $download['downloadlink'] != '') {
                 $info = array('source' => 'http', 'href' => $download['downloadlink'], 'appdata' => $appdata);
                 $app = OC_Installer::installApp($info);
             }
         }
     }
     $l = OC_L10N::get('core');
     if ($app !== false) {
         // check if the app is compatible with this version of ownCloud
         $info = OC_App::getAppInfo($app);
         $version = OC_Util::getVersion();
         if (!isset($info['require']) or !self::isAppVersionCompatible($version, $info['require'])) {
             throw new \Exception($l->t("App \"%s\" can't be installed because it is not compatible with this version of ownCloud.", array($info['name'])));
         } else {
             OC_Appconfig::setValue($app, 'enabled', 'yes');
             if (isset($appdata['id'])) {
                 OC_Appconfig::setValue($app, 'ocsid', $appdata['id']);
             }
             \OC_Hook::emit('OC_App', 'post_enable', array('app' => $app));
         }
     } else {
         throw new \Exception($l->t("No app name specified"));
     }
 }
 /**
  * @brief enables an app
  * @param $app app
  * @returns true/false
  *
  * This function set an app as enabled in appconfig.
  */
 public static function enable($app)
 {
     if (!OC_Installer::isInstalled($app)) {
         OC_Installer::installShippedApp($app);
     }
     OC_Appconfig::setValue($app, 'enabled', 'yes');
 }
Пример #8
0
 /**
  * Installs shipped apps
  *
  * This function installs all apps found in the 'apps' directory that should be enabled by default;
  */
 public static function installShippedApps()
 {
     foreach (OC::$APPSROOTS as $app_dir) {
         if ($dir = opendir($app_dir['path'])) {
             while (false !== ($filename = readdir($dir))) {
                 if (substr($filename, 0, 1) != '.' and is_dir($app_dir['path'] . "/{$filename}")) {
                     if (file_exists($app_dir['path'] . "/{$filename}/appinfo/info.xml")) {
                         if (!OC_Installer::isInstalled($filename)) {
                             $info = OC_App::getAppInfo($filename);
                             $enabled = isset($info['default_enable']);
                             if (($enabled || in_array($filename, \OC::$server->getAppManager()->getAlwaysEnabledApps())) && \OC::$server->getConfig()->getAppValue($filename, 'enabled') !== 'no') {
                                 OC_Installer::installShippedApp($filename);
                                 \OC::$server->getConfig()->setAppValue($filename, 'enabled', 'yes');
                             }
                         }
                     }
                 }
             }
             closedir($dir);
         }
     }
 }
Пример #9
0
 /**
  * @brief enables an app
  * @param mixed $app app
  * @return bool
  *
  * This function set an app as enabled in appconfig.
  */
 public static function enable($app)
 {
     if (!OC_Installer::isInstalled($app)) {
         // check if app is a shipped app or not. OCS apps have an integer as id, shipped apps use a string
         if (!is_numeric($app)) {
             $app = OC_Installer::installShippedApp($app);
         } else {
             $download = OC_OCSClient::getApplicationDownload($app, 1);
             if (isset($download['downloadlink']) and $download['downloadlink'] != '') {
                 $app = OC_Installer::installApp(array('source' => 'http', 'href' => $download['downloadlink']));
             }
         }
     }
     if ($app !== false) {
         // check if the app is compatible with this version of ownCloud
         $info = OC_App::getAppInfo($app);
         $version = OC_Util::getVersion();
         if (!isset($info['require']) or $version[0] > $info['require']) {
             OC_Log::write('core', 'App "' . $info['name'] . '" can\'t be installed because it is not compatible with this version of ownCloud', OC_Log::ERROR);
             return false;
         } else {
             OC_Appconfig::setValue($app, 'enabled', 'yes');
             return true;
         }
     } else {
         return false;
     }
 }
 /**
  * @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()
 {
     $dir = opendir(OC::$SERVERROOT . "/apps");
     while (false !== ($filename = readdir($dir))) {
         if (substr($filename, 0, 1) != '.' and is_dir(OC::$SERVERROOT . "/apps/{$filename}")) {
             if (file_exists(OC::$SERVERROOT . "/apps/{$filename}/appinfo/app.php")) {
                 if (!OC_Installer::isInstalled($filename)) {
                     $info = OC_Installer::installShippedApp($filename);
                     $enabled = isset($info['default_enable']);
                     if ($enabled) {
                         OC_Appconfig::setValue($filename, 'enabled', 'yes');
                     } else {
                         OC_Appconfig::setValue($filename, 'enabled', 'no');
                     }
                 }
             }
         }
     }
     closedir($dir);
 }