/** * 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(); } } } }