[SPIP Zone] [Spip-zone-commit] r28072 - in /_plugins_/_test_/agregateurs_sql: ./ plugin.xml public/ public/agregateurs_sql_balises.php public/agregateurs_sql_criteres.php

super, ça va planter les sites de ceux qui installent les deux …

2009/4/24 booz <booz@rezo.net>

Author: booz@rezo.net
Date: Fri Apr 24 16:59:13 2009
New Revision: 28072

Log:
plugin agregateurs sql, reprend la feature compteur du plugin bonux, a completer avec les autres type d’agregateurs sql http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

Added:
plugins/test/agregateurs_sql/
plugins/test/agregateurs_sql/plugin.xml
plugins/test/agregateurs_sql/public/
plugins/test/agregateurs_sql/public/agregateurs_sql_balises.php
plugins/test/agregateurs_sql/public/agregateurs_sql_criteres.php

Added: plugins/test/agregateurs_sql/plugin.xml

plugins/test/agregateurs_sql/plugin.xml (added)
+++ plugins/test/agregateurs_sql/plugin.xml Fri Apr 24 16:59:13 2009
@@ -0,0 +1,14 @@
+

  • Agrégateurs sql
  • Cedric Morin, BoOz
  • (c) 2008 GPL
  • 1.0
  • test
  • Ajout des critères d’agrégation dans le select sql : count(), sum(), max(), etc…
  • public/agregateurs_sql_criteres.php
  • public/agregateurs_sql_balises.php
  • agregateurs_sql

+

Added: plugins/test/agregateurs_sql/public/agregateurs_sql_balises.php

plugins/test/agregateurs_sql/public/agregateurs_sql_balises.php (added)
+++ plugins/test/agregateurs_sql/public/agregateurs_sql_balises.php Fri Apr 24 16:59:13 2009
@@ -0,0 +1,24 @@
+<?php
+/**

    • D’apres le Plugin Spip-Bonux
    • Le plugin qui lave plus SPIP que SPIP
    • (c) 2008 Mathieu Marcillaud, Cedric Morin, Romy Tetue
    • Licence GPL
  • */

+/**

    • Balise #COMPTEUR associee au critere compteur
    • @param unknown_type $p
    • @return unknown
  • */
    +function balise_COMPTEUR_dist($p) {
  • $p->code = ‹  ›;
  • if (isset($p->param[0][1][0])
  • AND $champ = ($p->param[0][1][0]->texte))
  • return rindex_pile($p, « compteur_$champ », ‹ compteur ›);
  • return $p;
    +}

+?>
\ No newline at end of file

Added: plugins/test/agregateurs_sql/public/agregateurs_sql_criteres.php

plugins/test/agregateurs_sql/public/agregateurs_sql_criteres.php (added)
+++ plugins/test/agregateurs_sql/public/agregateurs_sql_criteres.php Fri Apr 24 16:59:13 2009
@@ -0,0 +1,53 @@
+<?php
+/**

    • Permet de faire un comptage par table liee
    • exemple
    • <BOUCLE1(AUTEURS){compteur articles}{par compteur_articles}>
    • #ID_AUTEUR : #COMPTEUR{articles}
    • pour avoir les auteurs classes par articles et le nombre d’article de chacun
    • @param unknown_type $idb
    • @param unknown_type $boucles
    • @param unknown_type $crit
  • */
    +function critere_compteur($idb, &$boucles, $crit){
  • $boucle = &$boucles[$idb];
  • $_fusion = calculer_liste($crit->param[1], array(), $boucles, $boucle->id_parent);
  • $params = $crit->param;
  • $table = reset($params);
  • $table = $table[0]->texte;
  • if(preg_match(‹ ,^(\w+)([<>=])([0-9]+)$, ›,$table,$r)){
  • $table=$r[1];
  • $op=$r[2];
  • $op_val=$r[3];
  • }
  • $type = objet_type($table);
  • $type_id = id_table_objet($type);
  • $table_sql = table_objet_sql($type);
  • $trouver_table = charger_fonction(‹ trouver_table ›,‹ base ›);
  • $arrivee = array($table, $trouver_table($table, $boucle->sql_serveur));
  • $depart = array($boucle->id_table,$trouver_table($boucle->id_table, $boucle->sql_serveur));
  • if ($compt = calculer_jointure($boucle,$depart,$arrivee)){
  • if ($_fusion!=« ‹  › »){
  • // en cas de jointure, on ne veut pas du group_by sur la cle primaire !
  • // cela casse le compteur !
  • foreach($boucle->group as $k=>$group)
  • if ($group == $boucle->id_table.‹ . ›.$boucle->primary)
  • unset($boucle->group[$k]);
  • $boucle->group = ‹ ".($gb= ›.$_fusion.‹ )." ›;
  • }
  • $boucle->select= « COUNT($compt.$type_id) AS compteur_$table »;
  • if ($op)
  • $boucle->having= array(« ' ».$op.« ' », « 'compteur_ ».$table.« ' »,$op_val);
  • }
    +}

+?>
\ No newline at end of file


Spip-zone-commit@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone-commit