Example #1
0
 /**
  * metodo simple para actualizacion de acos
  * no incluye plugins ni pages ni herencia de metodos del app_controller
  */
 private function update_acos()
 {
     $aco = new Aco();
     // consulta los controladores en archivos reales
     $controladores = $this->ControllerList->get();
     ksort($controladores);
     foreach ($controladores as $i => $l) {
         $controladores[ucfirst($i)] = $controladores[$i];
         unset($controladores[$i]);
         sort($controladores[ucfirst($i)]);
     }
     // consultando lista de acos en bd
     $acos = $aco->find('threaded', array('recursive' => 0, 'order' => 'parent_id, alias'));
     $lista_bd = array();
     foreach ($acos as $a) {
         $lista_bd[$a['Aco']['alias']]['option'] = 0;
         $lista_bd[$a['Aco']['alias']]['id'] = $a['Aco']['id'];
         foreach ($a['children'] as $b) {
             $lista_bd[$a['Aco']['alias']]['children'][$b['Aco']['alias']]['option'] = 0;
             $lista_bd[$a['Aco']['alias']]['children'][$b['Aco']['alias']]['id'] = $b['Aco']['id'];
             foreach ($b['children'] as $c) {
                 $lista_bd[$a['Aco']['alias']]['children'][$b['Aco']['alias']]['children'][$c['Aco']['alias']]['option'] = 0;
                 $lista_bd[$a['Aco']['alias']]['children'][$b['Aco']['alias']]['children'][$c['Aco']['alias']]['id'] = $c['Aco']['id'];
             }
         }
     }
     // insertando elementos a la lista
     $lista_bd['controllers']['option'] = !isset($lista_bd['controllers']) ? 1 : 2;
     // insertar : no hacer nada
     foreach ($controladores as $i => $l) {
         $lista_bd['controllers']['children'][$i]['option'] = !isset($lista_bd['controllers']['children'][$i]) ? 1 : 2;
         // insertar : no hacer nada
         if ($lista_bd['controllers']['children'][$i]['option'] == 1) {
             $aco->create();
             $aco->save(array('Aco' => array('parent_id' => $lista_bd['controllers']['id'], 'alias' => $i)));
             $lista_bd['controllers']['children'][$i]['id'] = $aco->getLastInsertId();
         }
         foreach ($controladores[$i] as $k) {
             $lista_bd['controllers']['children'][$i]['children'][$k]['option'] = !isset($lista_bd['controllers']['children'][$i]['children'][$k]) ? 1 : 2;
             // insertar : no hacer nada
             if ($lista_bd['controllers']['children'][$i]['children'][$k]['option'] == 1) {
                 $aco->create();
                 $aco->save(array('Aco' => array('parent_id' => $lista_bd['controllers']['children'][$i]['id'], 'alias' => $k)));
                 $lista_bd['controllers']['children'][$i]['children'][$k]['id'] = $aco->getLastInsertId();
             }
         }
     }
     // borrando elementos
     foreach ($lista_bd['controllers']['children'] as $i => $l) {
         if ($lista_bd['controllers']['children'][$i]['option'] == 0) {
             $aco->id = $lista_bd['controllers']['children'][$i]['id'];
             $aco->delete();
         }
         foreach ($lista_bd['controllers']['children'][$i]['children'] as $k => $m) {
             if ($lista_bd['controllers']['children'][$i]['children'][$k]['option'] == 0) {
                 $aco->id = $lista_bd['controllers']['children'][$i]['children'][$k]['id'];
                 $aco->delete();
             }
         }
     }
 }