/** * Método para crear el archivo databases.ini según los parámetros enviados * * @param type $data Campos de los formularios * @param type $source Production o Deveploment * @param type $createDb Indica si se crea o no la base de datos * @return boolean */ public static function setDatabases($data, $source = 'development') { //Verifico si tiene permisos de escritura para crear y editar un archvivo.ini if (!is_writable(APP_PATH . 'config')) { MkcMessage::warning('Asigna temporalmente el permiso de escritura a la carpeta "config" de tu app!.'); return false; } //Filtro el array con los parámetros $data = Filter::data($data, array('host', 'username', 'password', 'name', 'type'), 'trim'); //Se utiliza por defecto el driver mysqli por ser orientado a objetos $data['type'] = 'mysqli'; //Se utiliza por defecto el charset UTF-8 $data['charset'] = 'UTF-8'; $rs = MkcConfig::write('databases', $data, $source); if ($rs) { MkcAudit::info('Se ha actualizado el archivo de conexión del sistema'); } return $rs; }
/** * Callback que se ejecuta antes de guardar/modificar */ protected function before_save() { //Verifico la sucursal al crear el usuario if (APP_OFFICE) { $this->sucursal_id = $this->sucursal_id == 'todas' ? NULL : Filter::get($this->sucursal_id, 'int'); } else { $this->sucursal_id = Sucursal::OFICINA_PRINCIPAL; } if (Session::get('perfil_id') != Perfil::SUPER_USUARIO) { //Solo el super usuario puede hacer esto //Verifico las exclusiones de los nombres de usuarios del config.ini $exclusion = MkcConfig::read('config', array('custom' => 'login_exclusion')); $exclusion = explode(',', $exclusion); if (!empty($exclusion)) { if (in_array($this->login, $exclusion)) { MkcMessage::error('El nombre de usuario indicado, no se encuentra disponible.'); return 'cancel'; } } } //Verifico si el login está disponible if ($this->_getRegisteredField('login', $this->login, $this->id)) { MkcMessage::error('El nombre de usuario no se encuentra disponible.'); return 'cancel'; } //Verifico si ya se encuentra registrado if ($this->_getRegisteredField('persona_id', $this->persona_id, $this->id)) { MkcMessage::error('La persona registrada ya posee una cuenta de usuario.'); return 'cancel'; } //Verifico si se encuentra el mail registrado if ($this->_getRegisteredField('email', $this->email, $this->id)) { MkcMessage::error('El correo electrónico ya se encuentra registrado.'); return 'cancel'; } $this->datagrid = Filter::get($this->datagrid, 'int'); }
/** * Método para editar el databases */ public function databases() { if (Input::hasPost('development') && Input::hasPost('production')) { try { Sistema::setDatabases(Input::post('development'), 'development'); Sistema::setDatabases(Input::post('production'), 'production'); MkcMessage::valid('El archivo de conexión se ha actualizado correctamente!'); } catch (KumbiaException $e) { MkcMessage::error('Oops!. Se ha realizado algo mal internamente. <br />Intentalo de nuevo!.'); } Input::delete('databases'); } $this->databases = MkcConfig::read('databases', '', true); $this->page_module = 'Configuración de conexión'; }