/** * Método que se utiliza para escribir un .ini * Se eliminan las variables cuyo valor sea delete-var * @param type $file Nombre del archivo (sin el .ini); * @param type $source */ public static function write($file, $data, $source = '') { $vars = self::read($file, '', TRUE); $org = APP_PATH . "config/{$file}.ini"; //Archivo actual @chmod(APP_PATH . "config/{$file}.ini", 0777); //Le damos permisos para editar //Verifico si tiene copia del original, sino se crea if (!is_file(APP_PATH . "config/{$file}.org.ini")) { //@TODO Verificar que funcione en windows $org = APP_PATH . "config/{$file}.ini"; $des = APP_PATH . "config/{$file}.org.ini"; copy($org, $des); //Copio el actual y lo paso a original @chmod("{$des}", 0777); //Permisos unlink($org); //Elimino el original para crear el nuevo touch($des); //Creo el nuevo .ini } //Armo el archivo $ini = ";; Archivo de configuración" . PHP_EOL; $ini .= PHP_EOL; $ini .= "; Si desea conocer más acerca de este archivo" . PHP_EOL; $ini .= "; puede abrir el archivo {$file}.org.ini, el cual tendrá" . PHP_EOL; $ini .= "; la descripción de los parámetros aplicados." . PHP_EOL; $ini .= PHP_EOL; //Verifico si no está el source especificado para crearlo if (!array_key_exists($source, $vars)) { $vars[$source] = $data; } //Recorro el archivo para ver que variables cambian, se crean o se eliminan foreach ($vars as $seccion => $filas) { $ini .= "[{$seccion}]" . PHP_EOL; if (is_array($filas)) { foreach ($filas as $variable => $valor) { if ($source && $seccion == $source) { if (array_key_exists($variable, $data)) { if ($data[$variable] != 'delete-var') { //Verifico si es para eliminar la variable $valor = $data[$variable]; } else { continue; } } } $variable = Filter::get($variable, 'lower'); if (in_array($valor, array('On', 'Off')) || is_numeric($valor)) { $ini .= "{$variable} = {$valor}" . PHP_EOL; } else { $valor = Filter::get($valor, 'htmlspecialchars'); $ini .= "{$variable} = {$valor}" . PHP_EOL; } } if ($source && $seccion == $source) { //Verifico si está en el source correspondiente foreach ($data as $variable => $valor) { //Verifico que variables se crean if (!array_key_exists($variable, $filas)) { $variable = DwUtils::getSlug($variable, '_'); if (in_array($valor, array('On', 'Off')) || is_numeric($valor)) { $ini .= "{$variable} = {$valor}" . PHP_EOL; } else { $valor = Filter::get($valor, 'htmlspecialchars'); $ini .= "{$variable} = {$valor}" . PHP_EOL; } } } } } $ini .= PHP_EOL; } $ini .= PHP_EOL; $rs = file_put_contents(APP_PATH . "config/{$file}.ini", $ini); @chmod(APP_PATH . "config/{$file}.ini", 0777); //Actualizo las variables de configuracion self::read($file, '', TRUE); return $rs; }
/** * Callback que se ejecuta antes de guardar/modificar */ public function before_save() { $this->perfil = Filter::get($this->perfil, 'string'); $this->plantilla = Filter::get($this->plantilla, 'string'); $this->plantilla = !empty($this->plantilla) ? DwUtils::getSlug($this->plantilla, '_') : 'default'; if (!empty($this->id)) { if ($this->id == Perfil::SUPER_USUARIO) { Flash::warning('Lo sentimos, pero este perfil no se puede editar.'); return 'cancel'; } } $path = APP_PATH . 'views/_shared/templates/backend/' . $this->plantilla . '.phtml'; //Verifico si se encuentra el template if (!is_file($path)) { Flash::error('Lo sentimos, pero no hemos podidio ubicar la plantilla ' . $this->plantilla); return 'cancel'; } }
/** * Método para listar los items en el backend */ public static function getItems() { $route = trim(Router::get('route'), '/'); $html = ''; foreach (self::$_items as $menu => $items) { $html .= '<div id="sub-menu-' . DwUtils::getSlug($menu) . '" class="subnav hidden">' . PHP_EOL; $html .= '<ul class="nav nav-pills">' . PHP_EOL; if (array_key_exists($menu, self::$_items)) { foreach (self::$_items[$menu] as $item) { if (!APP_OFFICE && $item->id == Menu::SUCURSAL) { continue; } $active = ($item->url == $route or $item->url == 'principal') ? 'active' : null; $submenu = $item->getListadoSubmenuPorPerfil(self::$_entorno, self::$_perfil, $item->id); if ($submenu) { $html .= '<li class="' . $active . 'dropdown">'; $html .= DwHtml::link($item->url, ' <b class="fa fa-' . $main->icono . '"></b>' . $item->menu, array('class' => 'dropdown-toggle', 'role' => "button", "data-toggle" => "dropdown"), $item->icono); $html .= '<ul class="dropdown-menu" role="menu">'; foreach ($submenu as $tmp) { $html .= '<li>' . DwHtml::link($tmp->url, $tmp->menu, null, $tmp->icono) . '</li>' . PHP_EOL; } $html .= '</ul>' . PHP_EOL; $html .= '</li>' . PHP_EOL; } else { $html .= '<li class="' . $active . '">' . DwHtml::link($item->url, $item->menu, null, $item->icono) . '</li>' . PHP_EOL; } } } $html .= '</ul>' . PHP_EOL; $html .= '</div>' . PHP_EOL; } return $html; }
/** * Método que se ejecuta antes de guardar y/o modificar */ public function before_save() { $this->sucursal = Filter::get($this->sucursal, 'string'); $this->slug = DwUtils::getSlug($this->sucursal); $this->direccion = Filter::get($this->direccion, 'string'); $this->telefono = Filter::get($this->telefono, 'numeric'); $this->celular = Filter::get($this->celular, 'numeric'); $this->fax = Filter::get($this->fax, 'numeric'); $conditions = "sucursal = '{$this->sucursal}' AND ciudad_id = {$this->ciudad_id} AND empresa_id = {$this->empresa_id}"; $conditions .= isset($this->id) ? " AND id != {$this->id}" : ''; if ($this->count("conditions: {$conditions}")) { DwMessage::error('Lo sentimos, pero ya existe una sucursal registrada con el mismo nombre y ciudad.'); return 'cancel'; } }