/** * Charge tous les modèles pour une classe d'objets associés à un utilisateur * * @param integer $id Identifiant du propriétaire * @param string $owner Type de propriétaire du modèle: prat, func ou etab * @param string $object_class Nom de la classe d'objet, optionnel. Doit être un CMbObject * @param string $type Type de composant, optionnel * @param bool $fast_edit Inclue les modèles en édition rapide * @param string $order Ordre de tri de la liste * * @return CCompteRendu[][] Par propriétaire: prat => CCompteRendu[], func => CCompteRendu[], etab => CCompteRendu[] */ static function loadAllModelesFor($id, $owner = 'prat', $object_class = null, $type = null, $fast_edit = true, $order = "") { // Accès aux modèles de la fonction et de l'établissement $module = CModule::getActive("dPcompteRendu"); $is_admin = $module && $module->canAdmin(); $access_function = $is_admin || CAppUI::conf("compteRendu CCompteRendu access_function"); $access_group = $is_admin || CAppUI::conf("compteRendu CCompteRendu access_group"); $modeles = array(); $modeles["prat"] = array(); if ($access_function) { $modeles["func"] = array(); } if ($access_group) { $modeles["etab"] = array(); } if (!$id) { return $modeles; } // Clauses de recherche $modele = new CCompteRendu(); $where = array(); $where["object_id"] = "IS NULL"; if ($object_class) { $where["object_class"] = "= '{$object_class}'"; } if ($type) { $where["type"] = "= '{$type}'"; } if (!$fast_edit) { $where["fast_edit"] = " = '0'"; $where["fast_edit_pdf"] = " = '0'"; } if (!$order) { $order = "object_class, type, nom"; } switch ($owner) { case 'prat': // Modèle du praticien $prat = new CMediusers(); if (!$prat->load($id)) { return $modeles; } $prat->loadRefFunction(); $where["user_id"] = "= '{$prat->_id}'"; $where["function_id"] = "IS NULL"; $where["group_id"] = "IS NULL"; $modeles["prat"] = $modele->loadListWithPerms(PERM_READ, $where, $order); $sec_func = $prat->loadRefsSecondaryFunctions(); foreach ($sec_func as $_func) { $where["user_id"] = "IS NULL"; $where["function_id"] = "= '{$_func->_id}'"; $where["group_id"] = "IS NULL"; $modeles["func" . $_func->_id] = $modele->loadListWithPerms(PERM_READ, $where, $order); } case 'func': // Modèle de la fonction if (isset($modeles["func"])) { if (isset($prat)) { $func_id = $prat->function_id; } else { $func = new CFunctions(); if (!$func->load($id)) { return $modeles; } $func_id = $func->_id; } $where["user_id"] = "IS NULL"; $where["function_id"] = "= '{$func_id}'"; $where["group_id"] = "IS NULL"; $modeles["func"] = $modele->loadListWithPerms(PERM_READ, $where, $order); } case 'etab': // Modèle de l'établissement if (isset($modeles["etab"])) { $etab_id = CGroups::loadCurrent()->_id; if ($owner == 'etab') { $etab = new CGroups(); if (!$etab->load($id)) { return $modeles; } $etab_id = $etab->_id; } elseif (isset($func)) { $etab_id = $func->group_id; } elseif (isset($func_id)) { $func = new CFunctions(); $func->load($func_id); $etab_id = $func->group_id; } $where["user_id"] = "IS NULL"; $where["function_id"] = "IS NULL"; $where["group_id"] = " = '{$etab_id}'"; $modeles["etab"] = $modele->loadListWithPerms(PERM_READ, $where, $order); } break; default: trigger_error("Wrong type '{$owner}'", E_WARNING); } return $modeles; }