output->enable_profiler(TRUE); } if( ! isset($this->conf) ) $this->conf = array(); if( ! isset($this->conf['path']) ) $this->conf['path'] = ''; $this->load->database(); $this->load->helper( array('url', 'language', 'form', 'hitcode', 'language', 'form') ); $this->load->library( array('form_validation', 'session', 'hc_bootstrap') ); $this->load->library( 'hc_form' ); $this->load->library( 'hc_modules' ); $this->form_validation->set_error_delimiters('
', '
'); // conf $this->auth = NULL; $this->data = array(); $this->data['message'] = $this->session->flashdata('message'); $this->data['error'] = $this->session->flashdata('error'); $this->session->set_flashdata('referrer', current_url()); $this->set_include( '' ); $this->data['page_title'] = $this->config->item('nts_app_title') . ' :: ' . 'Installation'; /* add module models paths for autoloading */ $modules = $this->config->item('modules'); $modules_locations = $this->config->item('modules_locations'); if( is_array($modules) ) { reset($modules); foreach( $modules as $module ) { reset( $modules_locations ); foreach( $modules_locations as $ml ) { $mod_dir = $ml . $module; if( file_exists($mod_dir) ) { Datamapper::add_model_path( $mod_dir ); } } } } } protected function _drop_tables() { $app = $this->config->item('nts_app'); $my_table_prefix = isset($GLOBALS['NTS_CONFIG'][$app]['DB_TABLES_PREFIX']) ? $GLOBALS['NTS_CONFIG'][$app]['DB_TABLES_PREFIX'] : NTS_DB_TABLES_PREFIX; $tables = array(); $sth = $this->db->query("SHOW TABLES LIKE '" . $my_table_prefix . "%'"); foreach( $sth->result_array() as $r ) { reset( $r ); foreach( $r as $k => $v ) { $tables[] = $v; } } reset( $tables ); foreach( $tables as $t ) { $this->db->query("DROP TABLE " . $t . ""); } } function index() { // check if already setup if( $this->is_setup() ) { ci_redirect(); return; } $this_module = CI::$APP->router->fetch_module(); if( $this_module ) { $this->data['include'] = $this_module . '/setup'; } else { $this->data['include'] = 'setup'; } $this->load->view( '_layout/index_no_menu', $this->data ); } function run() { $app = $this->config->item('nts_app'); $validation = array( array( 'field' => 'first_name', 'label' => 'lang:user_first_name', 'rules' => 'trim|required' ), array( 'field' => 'last_name', 'label' => 'lang:user_last_name', 'rules' => 'trim|required' ), array( 'field' => 'email', 'label' => 'lang:common_email', 'rules' => 'trim|required|valid_email' ), array( 'field' => 'password', 'label' => 'lang:common_password', 'rules' => 'trim|required|matches[confirm_password]' ), array( 'field' => 'confirm_password', 'label' => 'lang:common_password_confirm', 'rules' => 'trim|required' ), ); $fields = array('first_name', 'last_name', 'email', 'password', 'confirm_password'); $this->form_validation->set_rules( $validation ); if( $this->input->post() ) { $post = array(); reset( $fields ); foreach( $fields as $f ) { $post[$f] = $this->input->post($f); } $this->hc_form->set_defaults( $post ); if( $this->form_validation->run() == FALSE ) { $errors = array(); reset( $fields ); foreach( $fields as $f ) { $errors[$f] = form_error($f); } $this->hc_form->set_errors( $errors ); } else { /* run setup */ /* reset tables */ $this->_drop_tables(); /* setup tables */ $this->load->library('migration'); if ( ! $this->migration->current()) { show_error($this->migration->error_string()); return false; } $this->load->library( 'conf/app_conf' ); $setup_ok = TRUE; /* admin user */ $this->load->model( 'User_model' ); $this->User_model->from_array( $post ); $this->User_model->level = USER_MODEL::LEVEL_ADMIN; if( $this->User_model->save() ) { $email_from = $post['email']; $email_from_name = $post['first_name'] . ' ' . $post['last_name']; } else { $this->hc_form->set_errors( $this->User_model->error->all ); $this->hc_form->set_defaults( $post ); $setup_ok = FALSE; } if( $setup_ok ) { /* default settings */ $this->app_conf->set( 'email_from', $email_from ); $this->app_conf->set( 'email_from_name', $email_from_name ); $this->session->set_flashdata( 'message', lang('ok') ); ci_redirect( 'setup/ok' ); return; } } } $this->data['include'] = 'setup'; $this->load->view( '_layout/index_no_menu', $this->data ); return; } function ok() { $this->data['include'] = 'setup_ok'; $this->load->view( '_layout/index_no_menu', $this->data); return; } function is_setup() { $return = TRUE; if( $this->db->table_exists('conf') ){ $return = TRUE; } else { $return = FALSE; } return $return; } function set_include( $file ) { $this->data['include'] = ''; $this->data['include_submenu'] = ''; } } /* End of file setup.php */ /* Location: ./application/controllers/setup.php */