예제 #1
0
 /**
  * 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 = MkcUtils::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;
 }
예제 #2
0
 /**
  * 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) ? MkcUtils::getSlug($this->plantilla, '_') : 'default';
     if (!empty($this->id)) {
         if ($this->id == Perfil::SUPER_USUARIO) {
             MkcMessage::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)) {
         DMkcMessage::error('Lo sentimos, pero no hemos podidio ubicar la plantilla ' . $this->plantilla);
         return 'cancel';
     }
 }
예제 #3
0
 /**
  * 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-' . MkcUtils::getSlug($menu) . '" class="subnav hidden">' . PHP_EOL;
         $html .= '<ul class="treview-menu 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 . 'treview dropdown">';
                     $html .= MkcHtml::link($item->url, ' <i class="fa fa-' . $main->icono . '"></i>' . $item->menu, array('class' => 'dropdown-toggle', 'role' => "button", "data-toggle" => "dropdown"), $item->icono);
                     $html .= '<ul class="treview-menu dropdown-menu" role="menu">';
                     foreach ($submenu as $tmp) {
                         $html .= '<li>' . MkcHtml::link($tmp->url, $tmp->menu, null, $tmp->icono) . '</li>' . PHP_EOL;
                     }
                     $html .= '</ul>' . PHP_EOL;
                     $html .= '</li>' . PHP_EOL;
                 } else {
                     $html .= '<li class="' . $active . '">' . MkcHtml::link($item->url, $item->menu, null, $item->icono) . '</li>' . PHP_EOL;
                 }
             }
         }
         $html .= '</ul>' . PHP_EOL;
         $html .= '</div>' . PHP_EOL;
     }
     return $html;
 }
예제 #4
0
 /**
  * Método que se ejecuta antes de guardar y/o modificar     
  */
 public function before_save()
 {
     $this->sucursal = Filter::get($this->sucursal, 'string');
     $this->slug = MkcUtils::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}")) {
         MkcMessage::error('Lo sentimos, pero ya existe una sucursal registrada con el mismo nombre y ciudad.');
         return 'cancel';
     }
 }