Exemplo n.º 1
0
 /**
  * logout
  *
  * @param array $data options: site_id for logout with specific site id., account_id for logout target account, remove_online_code for remove online code that use to check simultaneous login.
  * @return boolean
  */
 public static function logout($data = array())
 {
     if (!isset($data['site_id']) || isset($data['site_id']) && $data['site_id'] == null) {
         $data['site_id'] = \Model_Sites::getSiteId(false);
     }
     // get account id if not set
     if (!isset($data['account_id']) || isset($data['account_id']) && !is_numeric($data['account_id'])) {
         $cookie = static::instance()->getAccountCookie();
         if (isset($cookie['account_id'])) {
             $data['account_id'] = $cookie['account_id'];
         } else {
             $data['account_id'] = 0;
         }
     }
     \Extension\Cookie::delete('member_account');
     \Extension\Cookie::delete('admin_account');
     if (!isset($data['remove_online_code']) || isset($data['remove_online_code']) && $data['remove_online_code'] == true) {
         // delete online code for certain site, so when program check for logged in or simultaneous it will return false.
         \DB::update(\Model_AccountSites::getTableName())->where('account_id', $data['account_id'])->where('site_id', $data['site_id'])->set(['account_online_code' => null])->execute();
     }
     // clear cache
     \Extension\Cache::deleteCache('model.accounts-checkAccount-' . $data['site_id'] . '-' . $data['account_id']);
     return true;
 }
Exemplo n.º 2
0
 /**
  * delete site tables and site data in sites table.
  *
  * @param integer $site_id
  * @return boolean
  */
 public static function deleteSite($site_id = '')
 {
     // prevent delete site 1
     if ($site_id == '1') {
         return false;
     }
     $self = new static();
     // get module's multisite tables.
     $self->hookGetMultisiteTables();
     // delete related _sites tables
     // this can be done by ORM relation itself. I have nothing to do here except something to remove more than just in db, example file, folder
     // drop [site_id]_tables
     foreach ($self->multisite_tables as $table) {
         \DBUtil::drop_table($site_id . '_' . $table);
     }
     // delete data in related tables
     \DB::delete(\Model_AccountLogins::getTableName())->where('site_id', $site_id)->execute();
     \DB::delete(\Model_AccountSites::getTableName())->where('site_id', $site_id)->execute();
     // delete this site from sites table
     \DB::delete(static::$_table_name)->where('site_id', $site_id)->execute();
     // @todo [fuelstart][multisite][plug] after delete site plug.
     $plugin = new \Library\Plugins();
     if ($plugin->hasAction('SitesAfterDeleteSite') !== false) {
         $plugin->doAction('SitesAfterDeleteSite', $site_id);
     }
     unset($plugin);
     // clear cache
     \Extension\Cache::deleteCache('model.accounts-checkAccount-' . $site_id);
     \Extension\Cache::deleteCache('model.accountLevelPermission-checkLevelPermission-' . $site_id);
     \Extension\Cache::deleteCache('model.accountPermission-checkAccountPermission-' . $site_id);
     \Extension\Cache::deleteCache('model.config-getval-' . $site_id);
     \Extension\Cache::deleteCache('model.config-getvalues-' . $site_id);
     \Extension\Cache::deleteCache('model.sites-getSiteId');
     \Extension\Cache::deleteCache('model.sites-isSiteEnabled');
     \Extension\Cache::deleteCache('controller.AdminController-generatePage-fs_list_sites');
     // done
     unset($self);
     return true;
 }