/** * Fill the order * * @param int $user_id User id * @param string $class Favori class name (CFavoriCCAM or CFavoriCIM10) * @param bool $ref_favori boolean * @param int $tag_id Tag id * * @return array The list ordered */ static function getOrdered($user_id = 0, $class = null, $ref_favori = false, $tag_id = null) { $listOrdered = array(); if ($user_id) { $where["favoris_user"] = "******"; if ($class) { $where["object_class"] = "= '{$class}'"; } $ljoin = array(); if ($tag_id) { $ljoin["tag_item"] = "tag_item.object_id = favoris_id AND tag_item.object_class = 'CFavoriCCAM'"; $where["tag_item.tag_id"] = "= '{$tag_id}'"; } $fav = new CFavoriCCAM(); /** @var CFavoriCCAM[] $favoris */ $favoris = $fav->loadList($where, "favoris_code", null, null, $ljoin); foreach ($favoris as $_favori) { /** @var CDatedCodeCCAM $code */ $code = CDatedCodeCCAM::get($_favori->favoris_code); $code->getChaps(); $code->class = $_favori->object_class; $code->favoris_id = $_favori->favoris_id; $code->occ = 0; if ($ref_favori) { $_favori->loadRefsTagItems(); $code->_ref_favori = $_favori; } $chapitre =& $code->chapitres[0]; $listOrdered[$chapitre["code"]]["nom"] = $chapitre["nom"]; $listOrdered[$chapitre["code"]]["codes"][$_favori->favoris_code] = $code; } } return $listOrdered; }
$codes_stats[$_code["code_acte"]] = $_code; unset($codes_stats[$key]); } } // Favoris $code = new CFavoriCCAM(); $where = array(); $where["ccamfavoris.favoris_user"] = "******"; $where["ccamfavoris.object_class"] = " = '{$object_class}'"; $ljoin = array(); if ($tag_id) { $where["tag_item.tag_id"] = "= '{$tag_id}'"; $ljoin["tag_item"] = "tag_item.object_id = ccamfavoris.favoris_id AND tag_item.object_class = 'CFavoriCCAM'"; } /** @var CFavoriCCAM[] $codes_favoris */ $codes_favoris = $code->loadList($where, null, 100, null, $ljoin); foreach ($codes_favoris as $key => $_code) { $codes_favoris[$_code->favoris_code] = $_code; unset($codes_favoris[$key]); } // Seek sur les codes, avec ou non l'inclusion de tous les codes $code = new CDatedCodeCCAM(""); $where = null; if (!$_all_codes && (count($codes_stats) || count($codes_favoris))) { // Si on a la recherche par tag, on n'utilise pas les stats (les tags sont mis sur les favoris) if ($tag_id) { $codes_keys = array_keys($codes_favoris); } else { $codes_keys = array_keys(array_merge($codes_stats, $codes_favoris)); } $where = "CODE " . $ds->prepareIn($codes_keys);