public static function recherche(&$param, $page) { $std = (object) array('success' => false, 'msg' => array()); $cond = array(); $strPagination = ''; // On construit l'URL pour la pagination, et on construit un tableau pour la requête SQL if (!empty($param['titre'])) { $cond['titre'] = $param['titre']; $strPagination .= '&titre=' . urlencode($param['titre']); } if (!empty($param['date_debut'])) { if (($res = Date::verifierDate($param['date_debut'])) !== true) { $std->msg[] = $res . ' (date de début)'; } else { $cond['date_debut'] = $param['date_debut']; $strPagination .= '&date_debut=' . $param['date_debut']; } } if (!empty($param['date_fin'])) { if (($res = Date::verifierDate($param['date_fin'])) !== true) { $std->msg[] = $res . ' (date de fin)'; } else { $cond['date_fin'] = $param['date_fin']; $strPagination .= '&date_fin=' . $param['date_fin']; } } if (!empty($param['resolu'])) { if ($param['resolu'] != 'oui' && $param['resolu'] != 'non') { $std->msg[] = 'Valeur invalide pour le champ résolu'; } else { $cond['resolu'] = $param['resolu']; $strPagination .= '&resolu=' . $param['resolu']; } } if (!empty($param['mots_cles'])) { // Construit un tableau de mots clés $tabMC = explode(',', $param['mots_cles']); $tabMCClean = array(); foreach ($tabMC as $key => $value) { // On enlève les espaces de début et de fin $valueClean = trim($value); if ($valueClean != '') { $tabMCClean[] = $valueClean; // Si le mot clé est obligatoire, on supprime le + de début if ($valueClean[0] == '+') { $valueClean = substr($valueClean, 1); } if (($res = MotCle::checkExisteByLabel($valueClean)) !== true) { $std->msg[] = $res; } } } $cond['mots_cles'] = $tabMCClean; } // S'il y a des erreurs, on s'arrête if (!empty($std->msg)) { return $std; } $questionDAO = new QuestionDAO(BDD::getInstancePDO()); // On récupère le nombre de questions qu'on a en résultat $count = $questionDAO->getQuestionsWithSearch(NB_QUESTIONS_PAGE, $cond, true); // On créé la pagination $std->pagination = new Pagination($page, $count, NB_QUESTIONS_PAGE, '/questions?recherche=' . $strPagination . '&page='); // On récupère les questions $std->questions = $questionDAO->getQuestionsWithSearch(NB_QUESTIONS_PAGE, $cond, false, $std->pagination->debut); if (empty($std->questions)) { $std->msg[] = 'Aucune question avec ces critères'; } else { $std->success = true; } return $std; }
public static function checkLabel(&$label) { if (!empty($label)) { if (MotCle::checkExisteByLabel($label) !== true) { if (mb_strlen($label) >= 1 && mb_strlen($label) <= 31) { return true; } return 'Le label ne respecte pas les règles de longueur (1 à 31 caractères)'; } else { return 'Le label est déjà utilisé'; } } return 'Le label n\'est pas renseigné'; }