$t) {
$res .= "\n\t\t
[(#TRI{" . "$n,$n,ajax})] | ";
}
return $res;
}
/**
* Retourne un morceau de squelette pour ajouter des recherches sur chaque champ de la table
*
* Autant de formulaire que de champs (pour les criteres conditionnels)
*
* @param array $fields
* Liste des champs de la table
* @return string
* Ligne de tableau
**/
function vertebrer_form($fields) {
$res = '';
$url = join('|', array_keys($fields));
$url = "#SELF|\n\t\t\tparametre_url{'$url',''}";
foreach ($fields as $n => $t) {
$s = sql_test_int($t) ? 11
: (preg_match('/char\s*\((\d)\)/i', $t, $r) ? $r[1] : '');
if (!in_array($n, array('date', 'date_redac', 'lang'))) {
$res .= "\n\t\t
[(#ENV{" . $n . "}|non)
[(#CHEMIN_IMAGE{rechercher-20.png}|balise_img)]
]
| ";
} else {
$res .= " | ";
}
}
return $res;
}
/**
* Retourne un morceau de squelette pour ajouter les critères à la boucle
*
* Autant de criteres conditionnels que de champs
*
* @param array $fields
* Liste des champs de la table
* @return string
* Critères de boucles
**/
function vertebrer_crit($fields) {
$res = "";
foreach ($fields as $n => $t) {
if (!in_array($n, array('date', 'date_redac', 'lang', 'recherche', 'logo'))) {
$res .= "\n\t\t{" . $n . " ?}";
}
}
return $res;
}
/**
* Retourne un morceau de squelette pour afficher le contenu de chaque
* champ SQL dans une ligne d'un tableau
*
* Class CSS en fonction de la parité du numero de ligne.
* Style text-align en fonction du type SQL (numerique ou non).
*
* Filtre de belle date sur type SQL signalant une date ou une estampillé.
*
* Si une colonne référence une table, ajoute un href sur sa page dynamique
* (il faudrait aller chercher sa def pour ilustrer les jointures en SPIP)
*
* @param array $fields
* Liste des champs de la table
* @return string
* Ligne de tableau
**/
function vertebrer_cell($fields) {
$res = "";
foreach ($fields as $n => $t) {
$texte = "#CHAMP_SQL{" . $n . "}";
if (preg_match('/\s+references\s+([\w_]+)/', $t, $r)) {
$url = "[(#SELF|parametre_url{page,'" . $r[1] . "'})]";
$texte = "" . $texte . "";
}
if (sql_test_int($t)) {
$s = " style='text-align: right;'";
} else {
$s = '';
if (sql_test_date($t)) {
$texte = "[($texte|affdate_heure)]";
}
}
$res .= "\n\t\t$texte | ";
}
return $res;
}
/**
* Calcule le contenu d'un squelette pour lister le contenu d'une
* table SQL à partir de la description de cette table.
*
* @see base_trouver_table_dist()
* @uses vertebrer_form()
* @uses vertebrer_crit()
* @uses vertebrer_cell()
* @uses vertebrer_sort()
*
* @param array $desc
* Descrption de la table, telle que retournéer par trouver_table.
* @return string
* Contenu du squelette pour la table
**/
function public_vertebrer_dist($desc) {
$nom = $desc['table'];
$surnom = $desc['id_table'];
$connexion = $desc['connexion'];
$field = $desc['field'];
$key = $desc['key'];
$defaut_tri = array_keys($field);
$defaut_tri = reset($defaut_tri);
//ksort($field);
$form = vertebrer_form($field);
$crit = vertebrer_crit($field);
$cell = vertebrer_cell($field);
$sort = vertebrer_sort($field);
$distant = !$connexion ? '' : "&connect=$connexion";
return
"#CACHE{0}
[(#GRAND_TOTAL|singulier_ou_pluriel{vertebres:1_donnee,vertebres:nb_donnees})]
[]
#TRI{'>',#CHEMIN_IMAGE{tri-asc-16.png}|balise_img{up},ajax} #TRI{'<',#CHEMIN_IMAGE{tri-desc-16.png}|balise_img{desc},ajax}
|
$sort
| $form
#COMPTEUR_BOUCLE | $cell
#TRI{'>',#CHEMIN_IMAGE{tri-asc-16.png}|balise_img{up},ajax} #TRI{'<',#CHEMIN_IMAGE{tri-desc-16.png}|balise_img{desc},ajax}
|
$sort
<:texte_vide:>
#TRI{'>',#CHEMIN_IMAGE{tri-asc-16.png}|balise_img{up},ajax} #TRI{'<',#CHEMIN_IMAGE{tri-desc-16.png}|balise_img{desc},ajax}
|
$sort
| $form
/B1>
";
}