/** * Charge toutes les aides à la saisie de l'objet pour un utilisateur donné * * @param int $user_id Utilisateur * @param string $keywords Permet de filtrer les aides commançant par le filtre, si non null * @param string $depend_value_1 Valeur de la dépendance 1 lié à l'aide * @param string $depend_value_2 Valeur de la dépendance 2 lié à l'aide * @param string $object_field Type d'objet concerné * @param string $strict True or False * * @return void */ function loadAides($user_id, $keywords = null, $depend_value_1 = null, $depend_value_2 = null, $object_field = null, $strict = "true") { foreach ($this->_specs as $field => $spec) { if (isset($spec->helped)) { $this->_aides[$field] = array("no_enum" => null); } } // Chargement de l'utilisateur courant $user = new CMediusers(); $user->load($user_id); $user->loadRefFunction(); // Préparation du chargement des aides $ds =& $this->_spec->ds; // Construction du Where $where = array(); $where[] = "(user_id = '{$user_id}' OR \n function_id = '{$user->function_id}' OR \n group_id = '{$user->_ref_function->group_id}')"; $where["class"] = $ds->prepare("= %", $this->_class); if ($strict == "true") { if ($depend_value_1) { $where["depend_value_1"] = " = '{$depend_value_1}'"; } if ($depend_value_2) { $where["depend_value_2"] = " = '{$depend_value_2}'"; } } else { if ($depend_value_1) { $where[] = "(depend_value_1 = '{$depend_value_1}' OR depend_value_1 IS NULL)"; } if ($depend_value_2) { $where[] = "(depend_value_2 = '{$depend_value_2}' OR depend_value_2 IS NULL)"; } } if ($object_field) { $where["field"] = " = '{$object_field}'"; } // tri par user puis function puis group (ordre inversé pour avoir ce résultat) $order = "group_id, function_id, user_id, depend_value_1, depend_value_2, name, text"; // Chargement des Aides de l'utilisateur $aide = new CAideSaisie(); // TODO: si on veut ajouter un $limit, il faudrait l'ajouter en argument de la fonction loadAides $aides = $aide->seek($keywords, $where, null, null, null, $order); $this->orderAides($aides, $depend_value_1, $depend_value_2); }
foreach ($aides as $owner => $_aides_by_owner) { switch ($owner) { case "user": $key_where = "user_id"; $where[$key_where] = "= '{$userSel->user_id}'"; break; case "func": $key_where = "function_id"; $where[$key_where] = "= '" . ($function_id ? $function_id : $userSel->function_id) . "'"; break; case "etab": $key_where = "group_id"; $where[$key_where] = "= '" . ($function_id ? $function->_ref_group->_id : $userSel->_ref_function->group_id) . "'"; break; } $aides["{$owner}_ids"] = array_keys($_aide->seek($keywords, $where, 1000)); $aides[$owner] = $_aide->seek($keywords, $where, $start[$owner] . ", 30", true, null, $order_by); $aidesCount[$owner] = $_aide->_totalSeek; unset($where[$key_where]); foreach ($aides[$owner] as $aide) { $aide->loadRefUser(); $aide->loadRefFunction(); $aide->loadRefGroup(); } CStoredObject::massLoadBackRefs($aides[$owner], 'hypertext_links'); } // Création du template $smarty = new CSmartyDP(); $smarty->assign("userSel", $userSel); $smarty->assign("function", $function); $smarty->assign("aides", $aides);