Ejemplo n.º 1
0
 /**
  * Disables a module
  * 
  * This should delete all data created by this module.
  * When override this method make sure to invoke the parent implementation AFTER your implementation.
  */
 public function disable()
 {
     /**
      * Remove database tables
      */
     $migrationPath = $this->getBasePath() . '/migrations';
     $uninstallMigration = $migrationPath . '/uninstall.php';
     if (file_exists($uninstallMigration)) {
         /**
          * Execute Uninstall Migration
          */
         ob_start();
         require_once $uninstallMigration;
         $migration = new \uninstall();
         try {
             $migration->up();
         } catch (\yii\db\Exception $ex) {
         }
         ob_get_clean();
         /**
          * Delete all Migration Table Entries
          */
         $migrations = opendir($migrationPath);
         while (false !== ($migration = readdir($migrations))) {
             if ($migration == '.' || $migration == '..' || $migration == 'uninstall.php') {
                 continue;
             }
             Yii::$app->db->createCommand()->delete('migration', ['version' => str_replace('.php', '', $migration)])->execute();
         }
     }
     foreach (\humhub\modules\content\models\ContentContainerSetting::findAll(['module_id' => $this->id]) as $containerSetting) {
         $containerSetting->delete();
     }
     foreach (\humhub\models\Setting::findAll(['module_id' => $this->id]) as $containerSetting) {
         $containerSetting->delete();
     }
     foreach (\humhub\modules\user\models\Module::findAll(['module_id' => $this->id]) as $userModule) {
         $userModule->delete();
     }
     foreach (\humhub\modules\space\models\Module::findAll(['module_id' => $this->id]) as $spaceModule) {
         $spaceModule->delete();
     }
     Yii::$app->moduleManager->disable($this);
 }