public function action_index($account_username = '', $confirm_code = '') { // load language \Lang::load('account'); // store username and confirm code from url to form and require the form to submit. $output['account_username'] = $account_username; $output['confirm_code'] = $confirm_code; if (\Input::method() == 'POST') { // store data for validate and update account status. $data['account_username'] = trim(\Input::post('account_username')); $data['account_confirm_code'] = trim(\Input::post('confirm_code')); // validate form. $validate = \Validation::forge(); $validate->add('account_username', \Lang::get('account_username'), array(), array('required')); $validate->add('confirm_code', \Lang::get('account_confirm_code'), array(), array('required')); 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 { // confirm register. $result = \Model_Accounts::confirmRegister($data); if ($result === true) { $output['hide_register_form'] = true; $output['form_status'] = 'success'; $output['form_status_message'] = \Lang::get('account_confirm_register_completed'); // @todo [fuelstart][account][plug] confirm register passed plug. $plugin = new \Library\Plugins(); if ($plugin->hasAction('AccountControllerAfterConfirmedRegister') !== false) { $plugin->doAction('AccountControllerAfterConfirmedRegister', ['input_username' => $account_username, 'inputs_post' => \Input::post()]); } unset($plugin); } else { $output['form_status'] = 'error'; $output['form_status_message'] = $result; } } // re-populate form $output['account_username'] = trim(\Input::post('account_username')); $output['confirm_code'] = trim(\Input::post('confirm_code')); } // <head> output ---------------------------------------------------------------------------------------------- $output['page_title'] = $this->generateTitle(\Lang::get('account_confirm_register')); // <head> output ---------------------------------------------------------------------------------------------- return $this->generatePage('front/templates/account/confirmregister_v', $output, false); }
/** * delete level group. * * @param integer $level_group_id * @return boolean */ public static function deleteLevel($level_group_id = '') { if (in_array($level_group_id, static::forge()->disallowed_edit_delete)) { return false; } // delete related tables. \DB::delete(\Model_AccountLevel::getTableName())->where('level_group_id', $level_group_id)->execute(); \DB::delete(\Model_AccountLevelPermission::getTableName())->where('level_group_id', $level_group_id)->execute(); // delete level group \DB::delete(static::$_table_name)->where('level_group_id', $level_group_id)->execute(); // @todo [fuelstart][levelgroup][plug] after deleted level group plug. $plugin = new \Library\Plugins(); if ($plugin->hasAction('LevelGroupAfterDeleted') !== false) { $plugin->doAction('LevelGroupAfterDeleted', $level_group_id); } unset($plugin); 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; }
/** * hook plugin to get multisite tables names.<br> * this will get module's tables that need to be copy while create new site.<br> * attention! you must call this method everytime when you want to access multisite tables list. * * @todo [fuelstart][multisite][plug] get module's multisite tables plug. */ public function hookGetMultisiteTables() { $plugin = new \Library\Plugins(); if ($plugin->hasFilter('SitesGetModulesMultisiteTables') !== false) { $plugin->doFilter('SitesGetModulesMultisiteTables'); if (is_array($plugin->original_data) && !empty($plugin->original_data)) { foreach ($plugin->original_data as $table) { if (!empty($table)) { if (is_array($table) && !\Arr::is_multi($table)) { $this->multisite_tables = array_merge($this->multisite_tables, $table); } elseif (is_string($table)) { $this->multisite_tables = array_merge($this->multisite_tables, [$table]); } } } unset($each_cfg); $this->multisite_tables = \Arr::unique($this->multisite_tables); } } unset($plugin); }
/** * Generate title by set title name and name separator position. * * @param string|array $title Title name. This can be array that the title will be generate respectively. * @param string $name_position Position of name to generate. if first, the site name will come first then title name. example: site name | title 1 | title 2 * @return string Generated title. */ public function generateTitle($title, $name_position = 'last') { $cfg_values = array('site_name', 'page_title_separator'); $config = Model_Config::getvalues($cfg_values); unset($cfg_values); // @todo [fuelstart][basecontroller][plug] generate title plug. $plugin = new \Library\Plugins(); if ($plugin->hasFilter('BaseControllerGenTitle')) { $generated_title = $plugin->doFilter('BaseControllerGenTitle', $title, $name_position, $config); if (is_string($generated_title) && ($generated_title != null || !empty($generated_title))) { return $generated_title; } unset($generated_title); } unset($plugin); if ($name_position == 'first') { $output = $config['site_name']['value']; $output .= $config['page_title_separator']['value']; } else { $output = ''; } if (is_array($title)) { if ($name_position == 'last') { $title = array_reverse($title); } foreach ($title as $a_title) { $output .= $a_title; if ($a_title != end($title)) { $output .= $config['page_title_separator']['value']; } } } else { $output .= $title; } if ($name_position == 'last') { $output .= $config['page_title_separator']['value']; $output .= $config['site_name']['value']; } unset($a_title, $config); return $output; }