Exemple #1
0
 function Resolver($pos)
 {
     if ($pos == 22) {
         $this->flag = $this->flag + 1;
         $this->Resolver(1);
     }
     if ($this->flag == 10) {
         $this->Mostrar();
     }
     $minodo = new nodo();
     $posHijoIzq = log($pos, 2) + $pos + 1.05;
     $posHijoIzq = round($posHijoIzq, 0, PHP_ROUND_HALF_UP);
     $posHijoDer = log($pos, 2) + $pos + 2.05;
     $posHijoDer = round($posHijoDer, 0, PHP_ROUND_HALF_UP);
     if ($minodo->vacio($pos, $GLOBALS[$pos]) == 1) {
         $minodo->ResolverPadre($pos, $posHijoIzq, $posHijoDer);
         $this->Resolver($pos + 1);
     } else {
         if ($pos == 1) {
             $minodo->ResolverHijo($pos, $GLOBALS[$pos]);
             $this->Resolver($pos + 1);
         }
         if ($pos < 17) {
             $minodo->ResolverHijo($pos, $GLOBALS[$pos]);
             $this->Resolver($pos + 1);
         } else {
             $this->Resolver($pos + 1);
         }
     }
 }
Exemple #2
0
 public static function makeNodo($dbh, $id, $obj_user, $obj_url)
 {
     $a = new nodo($dbh, $id);
     echo $a->idcategoria . "<br>";
     if (!$obj_user->idusuario) {
         // INICIO condicional sesion SIN Usuario.
         // Este es el caso mas frecuente y debe estar optimizado
         if ($a->activa && !$a->eliminado && is_null($a->grupos)) {
             // Nodo SIN problemas, entonces lo devolvemos
             echo "Nodo sin problemas, caso mas frecuente en modo normal<br>";
             $a->setModo("ver");
         } else {
             // Nodo CON problemas de activa, eliminado o grupos entonces verificamos el papa
             $id = $a->idpadre;
             // Si llega a home, mostramos home
             if (0 == $id) {
                 echo "Vista forzada de home en modo normal<br>";
                 $a->setModo("ver");
             } else {
                 // La destruimos para que no quede en memoria e intentamos con el padre
                 unset($a);
                 return self::makeNodo($dbh, $id, $obj_user, $obj_url);
             }
         }
         // FIN condicional sesiones SIN Usuario
     } else {
         // INICIO condicional sesion CON Usuario
         // INICIO condicional Administradores del portal
         if (9 == $obj_user->idzona) {
             // INICIO condicional Administradores del portal en modo EDICION
             if ($obj_url->getEd()) {
                 echo "Administrador en modo edicion<br>";
                 $a->setModo("editar");
                 // FIN
                 // INICIO condicional Administradores del portal en modo VER
             } else {
                 echo "Administrador en modo normal<br>";
                 $a->setModo("ver");
             }
             // FIN
             // FIN condicional Administradores del portal
             // INICIO condicional usuarios en sesion pero NO Administradores
         } else {
             // INICIO condicional editor de esta categoría
             if (!is_null($obj_user->categorias) && array_intersect($a->control, $obj_user->categorias) && $obj_user->idzona > 1) {
                 // INICIO condicional Editor de esta categoria en modo EDICION
                 if (!$a->eliminado) {
                     if ($obj_url->getEd()) {
                         echo "Editor en modo edicion<br>";
                         $a->setModo("editar");
                         // FIN
                         // INICIO condicional Editor de esta categoria en modo VER
                     } else {
                         echo "Editor en modo normal<br>";
                         $a->setModo("ver");
                     }
                 } else {
                     // Nodo eliminado entonces intentaremos con el padre
                     // Los editores NO pueden ver nodos eliminados
                     $id = $a->idpadre;
                     // Si llega a home, mostramos home forzado
                     if (0 == $id) {
                         echo "Vista forzada de home en modo normal<br>";
                         $a->setModo("ver");
                         // Si no hemos llegado a home intentamos con el padre
                     } else {
                         unset($a);
                         return self::makeNodo($dbh, $id, $obj_user, $obj_url);
                     }
                 }
                 // FIN
                 // INICIO condicional usuarios en sesion pero NO Administradores y NO Editor de esta categoria
             } else {
                 // INICIO condicional usuarios en sesion que pertenece a grupo autorizado
                 if (is_array($obj_user->grupos) && is_array($a->grupos) && array_intersect($a->grupos, $obj_user->grupos)) {
                     // Como solo puede ver debemos verificar que activa y no eliminada
                     if ($a->activa && !$a->eliminado) {
                         echo "Pertenece al grupo y la pagina no esta borrada ni inactiva, la puede ver en modo normal<br>";
                         $a->setModo("ver");
                     } else {
                         // Nodo CON problemas de activa, eliminado o grupos entonces verificamos el papa
                         $id = $a->idpadre;
                         // Si llega a home, mostramos home
                         if (0 == $id) {
                             echo "Vista forzada de home en modo normal<br>";
                             $a->setModo("ver");
                             // Si no hemos llegado a home intentamos con el padre
                         } else {
                             unset($a);
                             return self::makeNodo($dbh, $id, $obj_user, $obj_url);
                         }
                     }
                     // INICIO condicional usuarios en sesion que NO pertenece a grupo autorizado
                     // Es como si no estuviera en sesion
                 } else {
                     if ($a->activa && !$a->eliminado && is_null($a->grupos)) {
                         // Nodo SIN problemas, entonces lo devolvemos
                         echo "Modo normal, pero llego aqui despues de validar su sesion<br>";
                         $a->setModo("ver");
                     } else {
                         // Nodo CON problemas de activa, eliminado o grupos entonces verificamos el papa
                         $id = $a->idpadre;
                         // Si llega a home, mostramos home
                         if (0 == $id) {
                             echo "Vista forzada de home en modo normal<br>";
                             $a->setModo("ver");
                         } else {
                             // La destruimos para que no quede en memoria e intentamos con el padre
                             unset($a);
                             return self::makeNodo($dbh, $id, $obj_user, $obj_url);
                         }
                     }
                 }
             }
         }
     }
     return $a;
 }