/** * 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; }
/** * 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; }