/** * update account levels * * @param integer $account_id * @param array $data_level * @return boolean */ public function updateLevels($account_id = '', $data_level = array()) { // delete not exists level $lvls = static::query()->where('account_id', $account_id); if ($lvls->count() > 0) { foreach ($lvls->get() as $lvl) { if (!in_array($lvl->level_group_id, $data_level)) { \DB::delete(static::$_table_name)->where('account_id', $account_id)->where('level_id', $lvl->level_id)->execute(); } } } unset($lvls, $lvl); // update or insert fields if (is_array($data_level) && !empty($data_level)) { foreach ($data_level as $level_group_id) { $result = \DB::select()->from(static::$_table_name)->where('account_id', $account_id)->where('level_group_id', $level_group_id)->execute(); if (count($result) <= 0) { // not exists, use insert. \DB::insert(static::$_table_name)->set(['account_id' => $account_id, 'level_group_id' => $level_group_id])->execute(); } unset($result); } } // clear cache \Extension\Cache::deleteCache('model.accountLevelPermission-checkLevelPermission-' . \Model_Sites::getSiteId(false)); return true; }
/** * get admin's avatar picture. * * @param integer $account_id * @return string return element ready for display avatar. */ function getAdminAvatar($account_id) { // set default avatar $theme = \Theme::instance(); $doc_root = str_replace('\\', '/', DOCROOT); $default_avatar_getfile = $theme->asset->get_file('default-avatar.jpg', 'img'); $default_no_avatar = str_replace([$doc_root, \Uri::base()], '', $default_avatar_getfile); unset($doc_root, $default_avatar_getfile, $theme); if (!is_numeric($account_id) || intval($account_id) === intval(0)) { return $default_no_avatar; } $cache_name = 'public.themes.sys2.getAdminAvatar-' . \Model_Sites::getSiteId(false) . '-' . $account_id; $cache_data = \Extension\Cache::getSilence($cache_name); if (false === $cache_data) { // if never cached or cache expired. $result = \DB::select()->as_object()->from('accounts')->where('account_id', $account_id)->execute(); if (count($result) > 0) { $row = $result->current(); if ($row->account_avatar != null) { $return_val = $row->account_avatar; \Cache::set($cache_name, $return_val, 86400); unset($cache_name); return $return_val; } } if (!isset($return_val) || isset($return_val) && $return_val == null) { // not found account or not found avatar. \Cache::set($cache_name, $default_no_avatar, 86400); unset($cache_name); return $default_no_avatar; } } unset($cache_name); return $cache_data; }
/** * add login session * * @param array $data */ public function addLoginSession($data = array()) { if (!isset($data['site_id'])) { $site_id = \Model_Sites::getSiteId(false); } else { $site_id = $data['site_id']; } unset($data['site_id']); // find exists last login on target site id. $result = \DB::select()->as_object()->from(static::$_table_name)->where('account_id', $data['account_id'])->where('site_id', $site_id)->execute(); if (count($result) <= 0) { // use insert $insert['account_id'] = $data['account_id']; $insert['site_id'] = $site_id; $insert['account_last_login'] = time(); $insert['account_last_login_gmt'] = \Extension\Date::localToGmt(); if (isset($data['session_id'])) { $insert['account_online_code'] = $data['session_id']; } \DB::insert(static::$_table_name)->set($insert)->execute(); unset($insert); } else { // use update $update['account_last_login'] = time(); $update['account_last_login_gmt'] = \Extension\Date::localToGmt(); if (isset($data['session_id'])) { $update['account_online_code'] = $data['session_id']; } \DB::update(static::$_table_name)->where('account_id', $data['account_id'])->where('site_id', $site_id)->set($update)->execute(); unset($update); } unset($result, $site_id); }
/** * run before initialize the class * use this method to set new table prefix with multisite. */ public static function _init() { // get current site id $site_id = \Model_Sites::getSiteId(false); if ($site_id != '1') { static::$_table_name = $site_id . '_' . static::$_table_name; } }
/** * check cron to run in time * * @param array $option options avaliable: [name, second_expired, run_timestamp] * @param array $callback_function * @param array $callback_function_param * @return boolean */ public function checkCron(array $option = array(), array $callback_function = array(), $callback_function_param = array()) { // not set option name if (!isset($option['name'])) { return false; } // verify second expired. if (!isset($option['second_expired'])) { $option['second_expired'] = 86400; } else { $option['second_expired'] = (int) $option['second_expired']; } // verify run on date/time timestamp is valid and set (if not set, set to null) if (!isset($option['run_timestamp']) || isset($option['run_timestamp']) && !\Extension\Date::isValidTimeStamp((string) $option['run_timestamp'])) { $option['run_timestamp'] = null; } // check that both expired and run timestamp has value. if ($option['second_expired'] == 0 && $option['run_timestamp'] == null) { return false; } // set callback function param to be array if it is not. if (!is_array($callback_function_param)) { $callback_function_param = array($callback_function_param); } // start checking ------------------------------------------------------------------------------------------------ $run_task = false; // run from specific date/time timestamp. if ($option['run_timestamp'] != null && $option['run_timestamp'] <= time()) { $run_task = true; } elseif ($option['second_expired'] > 0) { // get cache of this task name try { // get site id $site_id = \Model_Sites::getSiteId(false); $cache = \Cache::get('library.webcron-siteid' . $site_id . '-' . $option['name']); } catch (\CacheNotFoundException $e) { $cache = false; } // if never cached or cache expired if ($cache === false) { $run_task = true; // get site id $site_id = \Model_Sites::getSiteId(false); \Cache::set('library.webcron-siteid' . $site_id . '-' . $option['name'], 'done', $option['second_expired']); } } // checked pass, run the task by call to callback function. if ($run_task === true) { call_user_func_array($callback_function, $callback_function_param); return true; } return false; }
public function deleteAction() { $this->_helper->viewRenderer->setNeverRender(true); $sites = new Model_Sites(); $site = $sites->getRowInstance($this->_getParam('id')); if ($site->user_id != $this->user->id) { throw new Monkeys_AccessDeniedException(); } $site->delete(); $json = new StdClass(); $json->code = 200; echo Zend_Json::encode($json); }
public function successAction() { $trans = new Application_Transactions(); $ns = new Zend_Session_Namespace('signup'); $acct = new Model_Accounts(); $acct->createUser($ns->email, $ns->password); $acct->email = $ns->email; echo $acct->email; $site = new Model_Sites(); $site->createSite($ns->sitename, $ns->siteurl); $trans->registerModelForCreateOrUpdate($acct); $trans->registerModelForCreateOrUpdate($site); $trans->commitAll(); var_dump($acct->email); $trans->clearAll(); $serversTable = Doctrine::getTable('Model_Servers'); $record = $serversTable->findBy('id', 1); $server = $record[0]; $userLogin = substr($acct->email, 0, strpos($acct->email, "@")); var_dump($userLogin); $result = $server->addUser($userLogin, $acct->password, $acct->email); var_dump($result); $authToken = $server->getTokenAuth($userLogin, $acct->password); $acct->api = $authToken; $acct->server = 1; $piwik = $server->addSite($site->name, $site->url, $acct->api); $site->account = $acct->id; $site->server = 1; $site->piwik = $piwik; $trans->registerModelForCreateOrUpdate($acct); $trans->registerModelForCreateOrUpdate($site); $trans->commitAll(); $trans->clearAll(); $ns->unlock; Zend_Session::namespaceUnset('signup'); }
public function __construct() { // check that site was enabled. if (!\Model_Sites::isSiteEnabled()) { $request = \Request::forge('error/403')->execute(); $response = new \Response($request, 403); $response->set_status(403); $response->send(true); unset($request, $response); exit; } // fix changed current language but autoload not reload \Lang::load('fslang'); // call web cron to run tasks (including purge old login history) \Library\WebCron::forge()->init(); // set default theme name // @todo [fuelstart][theme] for theme management. you should get default theme setting from db here. \Config::load('theme', true); $theme_active = \Config::get('theme.active'); $this->theme_system_name = $theme_active; unset($theme_active); }
/** * generate whole page * * @param string $view path to view of current controller. * @param array $output * @param boolean $auto_filter * @return view */ public function generatePage($view = null, $output = array(), $auto_filter = null) { if (!is_array($output)) { $output = array(); } // list sites to display links in admin page ------------------------------------------ $cache_name = 'controller.AdminController-generatePage-fs_list_sites'; $cached = \Extension\Cache::getSilence($cache_name); if (false === $cached) { $list_sites_option['list_for'] = 'admin'; $list_sites_option['unlimit'] = true; $list_sites = \Model_Sites::listSites($list_sites_option); \Cache::set($cache_name, $list_sites, 2592000); } else { if (isset($cached['items']) && isset($cached['total'])) { $list_sites = $cached; } else { $list_sites = array('total' => 0, 'items' => array()); } } unset($cache_name, $cached); if (isset($list_sites['total']) && $list_sites['total'] > 1) { if (isset($list_sites['items']) && is_array($list_sites['items']) && !empty($list_sites['items'])) { $output['fs_list_sites'] = $list_sites['items']; } else { $output['fs_list_sites'] = null; } } unset($list_sites, $list_sites_option); // end list sites ------------------------------------------------------------------------ // start theme class $theme = \Theme::instance(); $theme->active($this->theme_system_name); // load requested controller theme into page_content variable. $output['page_content'] = $theme->view($view, $output, $auto_filter); // load main template and put page_content variable in it. return $theme->view('admin/template', $output, $auto_filter); }
public static function run() { // create permission table. (user's permission) $sql = "CREATE TABLE IF NOT EXISTS `" . \DB::table_prefix('account_permission') . "` (\n `permission_id` int(11) NOT NULL AUTO_INCREMENT,\n `account_id` int(11) NOT NULL COMMENT 'refer to accounts.account_id',\n `permission_core` int(1) NOT NULL DEFAULT '0' COMMENT '1=core permission, 0=modules permission',\n `module_system_name` varchar(255) DEFAULT NULL COMMENT 'module system name',\n `permission_page` varchar(255) NOT NULL,\n `permission_action` varchar(255) DEFAULT NULL,\n PRIMARY KEY (`permission_id`),\n KEY `account_id` (`account_id`)\n ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='contain user''s permission for each admin page and action.' AUTO_INCREMENT=1 ;"; \DB::query($sql)->execute(); unset($sql); // loop sites to create permission table. $sites = \Model_Sites::find('all'); if ($sites != null) { foreach ($sites as $row) { $table_name = 'account_permission'; if ($row->site_id != '1') { $table_name = $row->site_id . '_' . $table_name; } if (!\DBUtil::table_exists($table_name)) { $sql = 'CREATE TABLE IF NOT EXISTS ' . \DB::table_prefix($table_name) . ' LIKE ' . \DB::table_prefix('account_permission'); \DB::query($sql)->execute(); unset($sql); } } } unset($row, $sites); return true; }
/** * record login * @param integer $account_id * @param integer $attempt 0 for failed, 1 for success * @param string $attempt_text attempt text * @return boolean */ public function recordLogin($account_id = '', $attempt = '0', $attempt_text = '') { if (!is_numeric($account_id) || !is_numeric($attempt)) { return false; } if ($attempt_text == null) { $attempt_text = null; } $site_id = \Model_Sites::getSiteId(false); // get browser class for use instead of fuelphp agent which is does not work. include_once APPPATH . 'vendor' . DS . 'browser' . DS . 'lib' . DS . 'Browser.php'; $browser = new Browser(); // set data for insertion $data['account_id'] = $account_id; $data['site_id'] = $site_id; $data['login_ua'] = \Input::user_agent(); $data['login_os'] = $browser->getPlatform(); $data['login_browser'] = $browser->getBrowser() . ' ' . $browser->getVersion(); $data['login_ip'] = \Input::real_ip(); $data['login_time'] = time(); $data['login_time_gmt'] = \Extension\Date::localToGmt(); $data['login_attempt'] = $attempt; $data['login_attempt_text'] = $attempt_text; \DB::insert(static::$_table_name)->set($data)->execute(); unset($browser, $data, $site_id); return true; }
public function action_multiple() { $ids = \Input::post('id'); $act = trim(\Input::post('act')); $redirect = $this->getAndSetSubmitRedirection(); if (\Extension\NoCsrf::check()) { // if action is delete. if ($act == 'del') { // check permission. if (\Model_AccountLevelPermission::checkAdminPermission('account_perm', 'account_delete_perm') == false) { \Response::redirect($redirect); } if (is_array($ids)) { foreach ($ids as $id) { // get target level group id $lvls = \DB::select()->as_object()->from(\Model_AccountLevel::getTableName())->where('account_id', $id)->execute(); // not found if (count($lvls) <= 0) { continue; } else { // format level group for check can i add, edit $level_group = array(); foreach ($lvls as $lvl) { $level_group[] = $lvl->level_group_id; } } if (\Model_Accounts::forge()->canIAddEditAccount($level_group) == true) { // delete account. \Model_Accounts::deleteAccount($id); // clear cache \Extension\Cache::deleteCache('model.accounts-checkAccount-' . \Model_Sites::getSiteId() . '-' . $id); } } } } elseif ($act == 'enable') { // check permission. if (\Model_AccountLevelPermission::checkAdminPermission('account_perm', 'account_delete_perm') == false) { \Response::redirect($redirect); } if (is_array($ids)) { foreach ($ids as $id) { if ($id == '0') { continue; } // get target level group id $lvls = \DB::select()->as_object()->from(\Model_AccountLevel::getTableName())->where('account_id', $id)->execute(); // not found if (count($lvls) <= 0) { continue; } else { // format level group for check can i add, edit $level_group = array(); foreach ($lvls as $lvl) { $level_group[] = $lvl->level_group_id; } } if (\Model_Accounts::forge()->canIAddEditAccount($level_group) == true) { \DB::update(\Model_Accounts::getTableName())->where('account_id', $id)->set(['account_status' => '1', 'account_status_text' => null])->execute(); unset($entry); } // clear cache \Extension\Cache::deleteCache('model.accounts-checkAccount-' . \Model_Sites::getSiteId() . '-' . $id); } } } elseif ($act == 'disable') { // check permission. if (\Model_AccountLevelPermission::checkAdminPermission('account_perm', 'account_delete_perm') == false) { \Response::redirect($redirect); } if (is_array($ids)) { foreach ($ids as $id) { if ($id == '0') { continue; } // get target level group id $lvls = \DB::select()->as_object()->from(\Model_AccountLevel::getTableName())->where('account_id', $id)->execute(); // not found if (count($lvls) <= 0) { continue; } else { // format level group for check can i add, edit $level_group = array(); foreach ($lvls as $lvl) { $level_group[] = $lvl->level_group_id; } } if (\Model_Accounts::forge()->canIAddEditAccount($level_group) == true) { \DB::update(\Model_Accounts::getTableName())->where('account_id', $id)->set(['account_status' => '0', 'account_status_text' => null])->execute(); } // clear cache \Extension\Cache::deleteCache('model.accounts-checkAccount-' . \Model_Sites::getSiteId() . '-' . $id); } } } } // go back \Response::redirect($redirect); }
/** * get highest priority level of selected user. * * @param integer $account_id account id. * @return mixed return object when found, return false when not found */ public static function getHighestPriorityAccountLevel($account_id = '') { // get site id and set table prefix for site $site_id = \Model_Sites::getSiteId(false); $table_site_prefix = ''; if ($site_id != '1') { $table_site_prefix = $site_id . '_'; } unset($site_id); $query = \DB::select()->from($table_site_prefix . 'account_level')->as_object('\\Model_AccountLevel')->join($table_site_prefix . 'account_level_group', 'LEFT')->on($table_site_prefix . 'account_level_group.level_group_id', '=', $table_site_prefix . 'account_level.level_group_id')->where('account_id', $account_id)->order_by('level_priority', 'ASC')->execute(); if ($query == null || $query->count() == '0') { return false; } $entry = $query->current(); unset($query); return $entry; }
public function action_index() { // is user logged in? if (\Model_Accounts::isMemberLogin() == false) { \Response::redirect(\Uri::create('account/login') . '?rdr=' . urlencode(\Uri::main())); } // load language \Lang::load('account'); \Lang::load('accountlogins'); // get account id $cookie_account = \Model_Accounts::forge()->getAccountCookie(); // get account data $row = \Model_Accounts::find($cookie_account['account_id']); if ($row == null) { // not found user data. unset($row); \Response::redirect(\Uri::main()); } $output['account'] = $row; // set sort variable for sortable in views. $next_sort = \Security::strip_tags(trim(\Input::get('sort'))); if ($next_sort == null || $next_sort == 'DESC') { $next_sort = 'ASC'; } else { $next_sort = 'DESC'; } $output['next_sort'] = $next_sort; unset($next_sort); // list logins ----------------------------------------------------------------------------------------------------- $option['limit'] = \Model_Config::getval('content_items_perpage'); $option['offset'] = trim(\Input::get('page')) != null ? ((int) \Input::get('page') - 1) * $option['limit'] : 0; if (\Security::strip_tags(trim(\Input::get('orders'))) != null) { $option['orders'] = \Security::strip_tags(trim(\Input::get('orders'))); } if (\Security::strip_tags(trim(\Input::get('sort'))) != null) { $option['sort'] = \Security::strip_tags(trim(\Input::get('sort'))); } $data['account_id'] = $cookie_account['account_id']; $data['site_id'] = \Model_Sites::getSiteId(); $list_logins = \Model_AccountLogins::listLogins($data, $option); // pagination config $config['pagination_url'] = \Uri::main() . \Uri::getCurrentQuerystrings(true, true, false); $config['total_items'] = $list_logins['total']; $config['per_page'] = $option['limit']; $config['uri_segment'] = 'page'; $config['num_links'] = 3; $config['show_first'] = true; $config['show_last'] = true; $config['first-inactive'] = "\n\t\t<li class=\"disabled\">{link}</li>"; $config['first-inactive-link'] = '<a href="#">{page}</a>'; $config['first-marker'] = '«'; $config['last-inactive'] = "\n\t\t<li class=\"disabled\">{link}</li>"; $config['last-inactive-link'] = '<a href="#">{page}</a>'; $config['last-marker'] = '»'; $config['previous-marker'] = '‹'; $config['next-marker'] = '›'; $pagination = \Pagination::forge('viewlogins_pagination', $config); $output['list_logins'] = $list_logins; $output['pagination'] = $pagination; unset($config, $data, $list_logins, $option, $pagination); // <head> output ---------------------------------------------------------------------------------------------- $output['page_title'] = $this->generateTitle(\Lang::get('account_login_history')); // <head> output ---------------------------------------------------------------------------------------------- return $this->generatePage('front/templates/account/viewlogins_v', $output, false); }
/** * save * * @param array $data * @return boolean */ public static function saveData(array $data = array()) { if (empty($data)) { return false; } foreach ($data as $key => $value) { \DB::update(static::$_table_name)->value('config_value', $value)->where('config_name', $key)->execute(); } // clear cache \Extension\Cache::deleteCache('model.config-getval-' . \Model_Sites::getSiteId(false)); \Extension\Cache::deleteCache('model.config-getvalues-' . \Model_Sites::getSiteId(false)); return true; }
/** * save permissions * * @param array $data * @return boolean */ public static function savePermissions(array $data = array()) { // loop check permission is not in db, insert it. foreach ($data['level_group_id'] as $key => $lv_groups) { foreach ($lv_groups as $level_group_id) { // check if permission is in db or not. $result = \DB::select()->from(static::$_table_name)->where('level_group_id', $level_group_id)->where('permission_page', $data['permission_page'][$key])->where('permission_action', $data['permission_action'][$key])->execute(); if (count($result) <= 0) { // not in db. insert it. \DB::insert(static::$_table_name)->set(['level_group_id' => $level_group_id, 'permission_core' => $data['permission_core'], 'module_system_name' => $data['module_system_name'], 'permission_page' => $data['permission_page'][$key], 'permission_action' => $data['permission_action'][$key]])->execute(); } } } // clear unused variables unset($key, $level_group_id, $lv_groups, $result); // now remove permission in db that was not checked. foreach ($data['permission_action'] as $key => $permission_action) { if (isset($data['permission_page'][$key])) { $result = \DB::select()->as_object()->from(static::$_table_name)->where('permission_core', $data['permission_core'])->where('module_system_name', $data['module_system_name'])->where('permission_page', $data['permission_page'][$key])->where('permission_action', $permission_action)->execute(); if (count($result) > 0) { foreach ($result as $row) { if (isset($data['level_group_id'][$key])) { if (!in_array($row->level_group_id, $data['level_group_id'][$key])) { \DB::delete(static::$_table_name)->where('permission_id', $row->permission_id)->execute(); } } else { \DB::delete(static::$_table_name)->where('permission_id', $row->permission_id)->execute(); } } } } } // clear unused variables unset($key, $permission_action, $result, $row); $data = array(); // clear cache \Extension\Cache::deleteCache('model.accountLevelPermission-checkLevelPermission-' . \Model_Sites::getSiteId(false)); return true; }
/** * register new account * * @param array $data * @param array $data_fields additional fields to store in account_fields table. * @return boolean|string return true when completed and return error text when error occured. */ public static function registerAccount($data = array(), $data_fields = array()) { // check required data. if (empty($data) || !is_array($data)) { return false; } // get configurations db $cfg = \Model_Config::getvalues(array('member_verification', 'member_disallow_username')); // verify disallow username. if (isset($cfg['member_disallow_username']['value'])) { $cfg['member_disallow_username']['value'] = str_replace(', ', ',', $cfg['member_disallow_username']['value']); $disallow_usernames = explode(',', $cfg['member_disallow_username']['value']); foreach ($disallow_usernames as $disallow_username) { if ($data['account_username'] == trim($disallow_username)) { unset($cfg, $disallow_username, $disallow_usernames); return \Lang::get('account_username_disallowed'); } } } // check duplicate username. $query = static::query()->select('account_username')->where('account_username', $data['account_username']); if ($query->count() > 0) { unset($query); return \Lang::get('account_username_already_exists'); } unset($query); // check duplicate email. $query = static::query()->select('account_email')->where('account_email', $data['account_email']); if ($query->count() > 0) { unset($query); return \Lang::get('account_email_already_exists'); } unset($query); if ($cfg['member_verification']['value'] != '0') { // admin config need to verify. // generate confirm code $data['account_confirm_code'] = \Str::random('alnum', 6); } // send register email $send_result = static::instance()->sendRegisterEmail($data); if ($send_result !== true) { return $send_result; } unset($send_result); $data['account_password'] = static::instance()->hashPassword($data['account_password']); $data['account_create'] = time(); $data['account_create_gmt'] = \Extension\Date::localToGmt(); if ($cfg['member_verification']['value'] == '0') { // admin config to no need to verify. $data['account_status'] = '1'; } else { $data['account_status'] = '0'; if ($cfg['member_verification']['value'] == '2') { $data['account_status_text'] = \Lang::get('account_waiting_for_admin_verification'); } else { $data['account_status_text'] = \Lang::get('account_please_confirm_registration_from_your_email'); } } // add account to db. ---------------------------------------- //list($account_id) = \DB::insert(static::$_table_name)->set($data); // query builder style. $account = static::forge($data); // add level to user for current site. $account->account_level[0] = new Model_AccountLevel(); $account->account_level[0]->level_group_id = 3; $account->save(); $account_id = $account->account_id; unset($account); // end add account to db ------------------------------------- // add level to user. // loop sites to add level of this user to each site. $site_id = \Model_Sites::getSiteId(false); $list_site_option['list_for'] = 'admin'; $list_site_option['unlimit'] = true; $sites = \Model_Sites::listSites($list_site_option); if (isset($sites['items']) && is_array($sites['items']) && !empty($sites['items'])) { foreach ($sites['items'] as $site) { if ($site->site_id != $site_id) { if ($site->site_id == '1') { $table_name = 'account_level'; } else { $table_name = $site->site_id . '_account_level'; } \DB::insert($table_name)->set(array('account_id' => $account_id, 'level_group_id' => '3'))->execute(); } } } unset($list_site_option, $site, $sites, $site_id, $table_name); // add account fields if there is any value. // to add account fields data structure shoud be like this... // array(array('field_name' => 'website', 'field_value' => 'http://domain.tld'), array('field_name' => 'fb', 'field_value' => 'http://fb.com/myprofile')); // or // $af[0]['field_name'] = 'website'; // $af[0]['field_value'] = 'http://domain.tld'; // $sf[1]['field_name'] = 'fb'; // $sf[1]['field_value'] = 'http://fb.com/myprofile'; if (!empty($data_fields) && is_array($data_fields)) { foreach ($data_fields as $field) { $account_fields = static::forge($field); $account_fields->account_id = $account_id; $account_fields->save(); } unset($account_fields, $field); } // @todo [fuelstart][account][plug] account after register plug. // after saved newly user data but not confirm (if require confirm). $plugin = new \Library\Plugins(); if ($plugin->hasAction('AccountAfterRegister') !== false) { $plugin->doAction('AccountAfterRegister', ['input_data' => $data, 'input_data_fields' => $data_fields, 'inputs_post' => \Input::post()]); } unset($plugin); return true; }
public function action_multiple() { $ids = \Input::post('id'); $act = trim(\Input::post('act')); // set redirect url $redirect = $this->getAndSetSubmitRedirection(); if (\Extension\NoCsrf::check()) { if ($act == 'del') { // check permission. if (\Model_AccountLevelPermission::checkAdminPermission('siteman_perm', 'siteman_delete_perm') == false) { \Session::set_flash('form_status', array('form_status' => 'error', 'form_status_message' => \Lang::get('admin_permission_denied', array('page' => \Uri::string())))); \Response::redirect($redirect); } if (is_array($ids)) { foreach ($ids as $id) { \Model_Sites::deleteSite($id); } // clear cache \Extension\Cache::deleteCache('model.sites-getSiteId'); \Extension\Cache::deleteCache('model.sites-isSiteEnabled'); \Extension\Cache::deleteCache('controller.AdminController-generatePage-fs_list_sites'); } } elseif ($act == 'enable') { // check permission. if (\Model_AccountLevelPermission::checkAdminPermission('siteman_perm', 'siteman_edit_perm') == false) { \Session::set_flash('form_status', array('form_status' => 'error', 'form_status_message' => \Lang::get('admin_permission_denied', array('page' => \Uri::string())))); \Response::redirect($redirect); } if (is_array($ids)) { foreach ($ids as $id) { if ($id == '1') { continue; } \DB::update(\Model_Sites::getTableName())->where('site_id', $id)->set(['site_status' => 1])->execute(); } // clear cache \Extension\Cache::deleteCache('model.sites-getSiteId'); \Extension\Cache::deleteCache('model.sites-isSiteEnabled'); \Extension\Cache::deleteCache('controller.AdminController-generatePage-fs_list_sites'); unset($entry); } } elseif ($act == 'disable') { // check permission. if (\Model_AccountLevelPermission::checkAdminPermission('siteman_perm', 'siteman_edit_perm') == false) { \Session::set_flash('form_status', array('form_status' => 'error', 'form_status_message' => \Lang::get('admin_permission_denied', array('page' => \Uri::string())))); \Response::redirect($redirect); } if (is_array($ids)) { foreach ($ids as $id) { if ($id == '1') { continue; } \DB::update(\Model_Sites::getTableName())->where('site_id', $id)->set(['site_status' => 0])->execute(); } // clear cache \Extension\Cache::deleteCache('model.sites-getSiteId'); \Extension\Cache::deleteCache('model.sites-isSiteEnabled'); \Extension\Cache::deleteCache('controller.AdminController-generatePage-fs_list_sites'); unset($entry); } } } // go back \Response::redirect($redirect); }
public function action_index() { // check permission if (\Model_AccountLevelPermission::checkAdminPermission('config_global', 'config_global') == false) { \Session::set_flash('form_status', array('form_status' => 'error', 'form_status_message' => \Lang::get('admin_permission_denied', array('page' => \Uri::string())))); \Response::redirect(\Uri::create('admin')); } // get timezone list for select box \Config::load('timezone', 'timezone'); $output['timezone_list'] = \Config::get('timezone.timezone', array()); // read flash message for display errors. $form_status = \Session::get_flash('form_status'); if (isset($form_status['form_status']) && isset($form_status['form_status_message'])) { $output['form_status'] = $form_status['form_status']; $output['form_status_message'] = $form_status['form_status_message']; } unset($form_status); $allowed_field = array(); // load config to form. $result = \DB::select('*')->from(\Model_Config::getTableName())->as_object('Model_Config')->where('config_core', '1')->execute(); if ((is_array($result) || is_object($result)) && !empty($result)) { foreach ($result as $row) { $allowed_field[] = $row->config_name; $output[$row->config_name] = $row->config_value; } } unset($result, $row); // if form submitted if (\Input::method() == 'POST') { // store data to variable for update to db. $data = array(); foreach (\Input::post() as $key => $value) { if (in_array($key, $allowed_field)) { $data[$key] = $value; } } unset($allowed_field); // check again for some required default value config data. // tab website $data['site_name'] = \Security::htmlentities($data['site_name']); $data['page_title_separator'] = \Security::htmlentities($data['page_title_separator']); // tab account if (!isset($data['member_allow_register']) || $data['member_allow_register'] != '1') { $data['member_allow_register'] = '0'; } if (!isset($data['member_register_notify_admin']) || $data['member_register_notify_admin'] != '1') { $data['member_register_notify_admin'] = '0'; } if (!isset($data['simultaneous_login']) || $data['simultaneous_login'] != '1') { $data['simultaneous_login'] = '******'; } if (!is_numeric($data['member_max_login_fail'])) { $data['member_max_login_fail'] = '10'; } if (!is_numeric($data['member_login_fail_wait_time'])) { $data['member_login_fail_wait_time'] = '30'; } if (!is_numeric($data['member_login_remember_length'])) { $data['member_login_remember_length'] = '30'; } if (!is_numeric($data['member_confirm_wait_time'])) { $data['member_confirm_wait_time'] = '10'; } if (!isset($data['member_email_change_need_confirm']) || $data['member_email_change_need_confirm'] != '1') { $data['member_email_change_need_confirm'] = '0'; } if (!isset($data['allow_avatar']) || $data['allow_avatar'] != '1') { $data['allow_avatar'] = '0'; } if (!is_numeric($data['avatar_size'])) { $data['avatar_size'] = '200'; } if (empty($data['avatar_allowed_types'])) { $data['avatar_allowed_types'] = 'jpg|jpeg'; } if ($data['avatar_path'] == null) { unset($data['avatar_path']); } // tab email if ($data['mail_protocol'] == null) { $data['mail_protocol'] = 'mail'; } if (!is_numeric($data['mail_smtp_port'])) { $data['mail_smtp_port'] = '0'; } // tab content if (!is_numeric($data['content_items_perpage'])) { $data['content_items_perpage'] = '10'; } if (!is_numeric($data['content_admin_items_perpage'])) { $data['content_admin_items_perpage'] = '10'; } // tab media if (empty($data['media_allowed_types'])) { $data['media_allowed_types'] = 'avi|doc|docx|flv|gif|jpeg|jpg|mid|midi|mov|mp3|mpeg|mpg|pdf|png|swf|xls|xlsx|zip'; } // tab ftp if (!is_numeric($data['ftp_port'])) { $data['ftp_port'] = '21'; } if (!isset($data['ftp_passive']) || $data['ftp_passive'] != 'false') { $data['ftp_passive'] = 'true'; } // validate form. $validate = \Validation::forge(); if (!\Extension\NoCsrf::check()) { // validate token failed $output['form_status'] = 'error'; $output['form_status_message'] = \Lang::get('fslang_invalid_csrf_token'); } elseif (!$validate->run()) { // validate failed $output['form_status'] = 'error'; $output['form_status_message'] = $validate->show_errors(); } else { // try to save config. $result = \Model_Config::saveData($data); // save change site name to sites table $site_id = \Model_Sites::getSiteId(false); $entry = \Model_Sites::find($site_id); $entry->site_name = $data['site_name']; $entry->save(); unset($entry, $site_id); if ($result === true) { \Session::set_flash('form_status', array('form_status' => 'success', 'form_status_message' => \Lang::get('admin_saved'))); \Response::redirect(\Uri::main()); } else { $output['form_status'] = 'error'; $output['form_status_message'] = $result; } } // re-populate form. foreach ($data as $key => $value) { $output[$key] = html_entity_decode($value); } } // <head> output ---------------------------------------------------------------------------------------------- $output['page_title'] = $this->generateTitle(\Lang::get('config_global_configuration')); // <head> output ---------------------------------------------------------------------------------------------- // breadcrumb ------------------------------------------------------------------------------------------------- $page_breadcrumb = []; $page_breadcrumb[0] = ['name' => \Lang::get('admin_admin_home'), 'url' => \Uri::create('admin')]; $page_breadcrumb[1] = ['name' => \Lang::get('config_global_configuration'), 'url' => \Uri::create('admin/config')]; $output['page_breadcrumb'] = $page_breadcrumb; unset($page_breadcrumb); // breadcrumb ------------------------------------------------------------------------------------------------- return $this->generatePage('admin/templates/config/index_v', $output, false); }
public function proceedAction() { // needed for unit tests $this->_helper->layout->disableLayout(); $this->_helper->viewRenderer->setNeverRender(true); $server = $this->_getOpenIdProvider(); $request = $server->decodeRequest(); if ($request->idSelect()) { $id = $this->user->openid; } else { $id = null; } $response = $request->answer(true, null, $id); if ($this->_hasSreg($request) && $this->_getParam('profileId')) { $profiles = new Users_Model_Profiles(); $profile = $profiles->getRowInstance($this->_getParam('profileId')); $personalInfoForm = Users_Form_PersonalInfo::getForm($request, $profile); $formData = $this->_request->getPost(); $personalInfoForm->populate($formData); // not planning on validating stuff here yet, but I call this // for the date element to be filled properly $foo = $personalInfoForm->isValid($formData); $sregResponse = Auth_OpenID_SRegResponse::extractResponse($personalInfoForm->getSregRequest(), $personalInfoForm->getUnqualifiedValues()); $sregResponse->toMessage($response->fields); } $trustRoot = $this->_getTrustRoot($request); if ($this->_getParam('allow')) { if ($this->_getParam('forever')) { $sites = new Model_Sites(); $sites->deleteForUserSite($this->user, $trustRoot); $siteObj = $sites->createRow(); $siteObj->user_id = $this->user->id; $siteObj->site = $trustRoot; $siteObj->creation_date = date('Y-m-d'); if (isset($personalInfoForm)) { $trusted = array(); // using this key name for BC pre 1.1 when we used Zend_OpenId $trusted['Zend_OpenId_Extension_Sreg'] = $personalInfoForm->getUnqualifiedValues(); } else { $trusted = true; } $siteObj->trusted = serialize($trusted); $siteObj->save(); } $this->_saveHistory($trustRoot, Model_History::AUTHORIZED); require_once 'libs/Auth/OpenID/PAPE.php'; if ($papeRequest = Auth_OpenID_PAPE_Request::fromOpenIDRequest($request)) { $this->_processPape($papeRequest, $response); } $webresponse = $server->encodeResponse($response); foreach ($webresponse->headers as $k => $v) { if ($k == 'location') { $this->_response->setRedirect($v); } else { $this->_response->setHeader($k, $v); } } $this->_response->setHeader('Connection', 'close'); $this->_response->appendBody($webresponse->body); } elseif ($this->_getParam('deny')) { if ($this->_getParam('forever')) { $sites = new Model_Sites(); $sites->deleteForUserSite($this->user, $trustRoot); $siteObj = $sites->createRow(); $siteObj->user_id = $this->user->id; $siteObj->site = $trustRoot; $siteObj->creation_date = date('Y-m-d'); $siteObj->trusted = serialize(false); $siteObj->save(); } $this->_saveHistory($trustRoot, Model_History::DENIED); return $this->_sendResponse($server, $request->answer(false)); } }