/** * Récupérer une liste d'articles en fonction de critères * @param array $params tableau associatif contenant les critères de sélection. clé : nom du paramètre, valeur : valeur du paramètre * @param array $infosPages tableau associatif contenant des indications sur le nombre de pages, la liste des numéros de pages disponibles, etc. * @return array liste des articles * @see Manager::getIndexPages * @see Manager::_getListPage * @see Manager::_getCount */ function getListPage($params, &$infosPages) { // Construction de la requête en fonction des paramètres $sql = 'SELECT a.doc_id as id, doc_auteurs, doc_titre as titre, doc_etat as etat, doc_date_publication, doc_date_enregistrement, doc_date_modification, u.uti_nom as nom, u.uti_prenom as prenom '; $from = ' FROM uti_utilisateur u, doc_document a'; $where = ' WHERE u.uti_id = a.uti_id_soumis '; if (isset($params['uti']) && intval($params['uti']) > 0) { $where .= ' AND uti_id_soumis = ' . intval($params['uti']); } if (isset($params['status']) && is_numeric($params['status'])) { $where .= ' AND doc_etat = ' . trim($params['status']); } if (isset($params['type']) && strlen($params['type']) == 1) { $where .= ' AND typ_id = \'' . trim($params['type']) . '\''; } $ref = new ReferenceManager($this->db); $i = 0; foreach ($params as $clef => $val) { if (strpos($clef, 'cri_') === 0 && $val != 'none') { $crit = $ref->getCriterionInfos(substr($clef, 4)); $crit = $crit['id']; $tmpsql = 'SELECT doc_id FROM doc_document WHERE doc_repertoire = ' . $this->db->quote($val); $res = $this->_getRow($tmpsql); $intro = $res['doc_id']; $from .= ", document_criteres c{$i}"; $where .= " AND a.doc_id = c{$i}.doc_id AND c{$i}.cri_id = " . intval($crit) . " AND c{$i}.intro_id = " . intval($intro); $i++; } } if (isset($params['pg'])) { $page = intval($params['pg']); } else { $page = 0; } $nombreLigneTotal = $this->_getCount($from . $where); $infosPages = $this->getIndexPages($page, $this->nbParPage, $nombreLigneTotal, $this->nbLiensMax); $sql = $sql . $from . $where . " ORDER BY doc_date_enregistrement DESC"; return $this->_getListPage($sql, $page, $this->nbParPage); }