Beispiel #1
0
 function order_cadres($cadres, &$cache_cadre_object)
 {
     //on retente de mettre de l'ordre dans tout ca...
     //init
     $ordered_cadres = array();
     $cadres_dom = array();
     $zone = "";
     //on élimine ce qui n'est pas dans le dom (ou ne va pas l'être)
     for ($i = 0; $i < count($cadres); $i++) {
         if (!$zone) {
             $zone = $cadres[$i]->build_parent;
         }
         if (substr($cadres[$i]->build_obj, 0, strlen("cms_module_")) == "cms_module_") {
             $id_cadre = substr($cadres[$i]->build_obj, strrpos($cadres[$i]->build_obj, "_") + 1);
             $res = $this->manage_cache_cadres("select", $cadres[$i]->build_obj, "object");
             if ($res["select"] == true) {
                 if ($res["value"]) {
                     $cadres_dom[] = $res["value"];
                 }
             } else {
                 if ($cache_cadre_object[$cadres[$i]->build_obj]) {
                     $obj = $cache_cadre_object[$cadres[$i]->build_obj];
                 } else {
                     $obj = cms_modules_parser::get_module_class_by_id($id_cadre);
                     $cache_cadre_object[$cadres[$i]->build_obj] = $obj;
                 }
                 if ($obj && $obj->check_conditions()) {
                     $cadres_dom[] = $cadres[$i];
                     if ($obj->check_for_cache()) {
                         $this->manage_cache_cadres("insert", $cadres[$i]->build_obj, "object", $cadres[$i]);
                     }
                 } elseif ($obj && $obj->check_for_cache()) {
                     $this->manage_cache_cadres("insert", $cadres[$i]->build_obj, "object", "");
                 }
             }
         } else {
             if ($cadres[$i]->build_fixed || $this->dom->getElementById($cadres[$i]->build_obj)) {
                 $cadres_dom[] = $cadres[$i];
             }
         }
     }
     $cadres = $cadres_dom;
     //après ce petit tour de passe passe, il nous reste ques les éléments présent sur la page...
     $ordered_cadres[] = $this->get_next_cadre($cadres, $zone);
     $i = 0;
     $nb = count($cadres);
     while (count($cadres)) {
         $ordered_cadres[] = $this->get_next_cadre($cadres, $zone, $ordered_cadres[count($ordered_cadres) - 1]->build_obj);
         if ($i == $nb) {
             break;
         }
         $i++;
     }
     //le reste, c'est que l'on à jamais pu placer (perte de chainage via supression de cadres)...
     foreach ($cadres as $cadre) {
         $ordered_cadres[] = $cadre;
     }
     return $ordered_cadres;
 }