You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

56 lines
2.0 KiB

<?php
/**
* Ce fichier contient des compléments de l'API de gestion de l'objet plugin.
*
* @package SPIP\SVP\PLUGIN\API
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Renvoie l'information brute demandée pour l'ensemble des inscriptions
* ou toute les descriptions si aucun champ n'est explicitement demandé.
*
* @param array $filtres Tableau associatif `[champ] = valeur` ou `[champ] = !valeur` de critères de filtres sur les
* champs chaine des types de contrôle. Les opérateurs égalité et inégalité sont possibles.
* @param string $champ Identifiant d'un champ de la description d'un contrôle.
* Si l'argument est vide, la fonction renvoie les descriptions complètes et si l'argument est
* un champ invalide la fonction renvoie un tableau vide.
*
* @return array Tableau de la forme `[id_observation] = champ ou description complète`. Les champs textuels
* et les tableaux sérialisés sont retournés en l'état.
*/
function inscription_repertorier($filtres = array(), $champ = '') {
// On calcule le where à partir des filtres sachant que tous les champs sont des chaines.
$where = array();
if ($filtres) {
foreach ($filtres as $_champ => $_critere) {
$operateur = '=';
$valeur = $_critere;
if (substr($_critere, 0, 1) == '!') {
$operateur = '!=';
$valeur = ltrim($_critere, '!');
}
$where[] = $_champ . $operateur . sql_quote($valeur);
}
}
// On récupère tous les champs des types de contrôle.
if ($observations = sql_allfetsel('*', 'spip_inscriptions', $where)) {
if ($champ and $observations[0][$champ]) {
// On demande un seul champ et ce champ est bien valide
$retour = array_column($observations, $champ, 'id_inscription');
}
else {
// Tous les champs sauf le timestamp 'maj' sont renvoyés.
$retour = array_column($observations, null, 'id_inscription');
}
}
else {
$retour = array();
}
return $retour;
}