Release plat/al core v1.1.13
[platal.git] / plugins / function.select_db_table.php
index eef9e1d..bc83d95 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2007 Polytechnique.org                              *
+ *  Copyright (C) 2003-2011 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
  *  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                *
  ***************************************************************************/
 
-require_once 'platal.inc.php';
-
-function select_options($table,$valeur,$champ="text",$pad=false,
-                        $where="",$join="",$group="")
+function select_options($table, $value, $field, $pad, $where, $join, $group)
 {
-    $fields = 't.id,' . $champ;
-    $order = $champ;
+    $fields = 't.id,' . $field;
+    $order = $field;
     if ($group) {
         $fields .= ',' . $group;
         $order = $group . ',' . $order;
+    } else {
+        $fields .= ', NULL';
     }
     $sql = "SELECT $fields FROM $table AS t $join $where ORDER BY $order";
     $res = XDB::iterRow($sql);
     $sel = ' selected="selected"';
 
-    // on ajoute une entree vide si $pad est vrai
-    $html = "";
+    // An empty entry is added when $pad is true.
+    $html = '';
     if ($pad) {
-        $html.= '<option value="0"'.($valeur==0?$sel:"")."></option>\n";
+        $html .= '<option value="0"' . ($value == 0 ? $sel : '') . ">&nbsp;</option>\n";
     }
     $optgrp = null;
-    while (list($my_id,$my_text,$my_grp) = $res->next()) {
+    while (list($my_id, $my_text, $my_grp) = $res->next()) {
         if ($my_grp != $optgrp) {
             if (!is_null($optgrp)) {
                 $html .= '</optgroup>';
@@ -49,7 +48,7 @@ function select_options($table,$valeur,$champ="text",$pad=false,
             $optgrp = $my_grp;
         }
         $html .= sprintf("<option value=\"%s\" %s>%s</option>\n",
-                         $my_id, $valeur==$my_id ? $sel : "", pl_entities($my_text));
+                         $my_id, $value == $my_id ? $sel : '', pl_entities($my_text));
     }
     if (!is_null($optgrp)) {
         $html .= '</optgroup>';
@@ -57,20 +56,23 @@ function select_options($table,$valeur,$champ="text",$pad=false,
     return $html;
 }
 
-function smarty_function_select_db_table($params, &$smarty) {
-    if(empty($params['table']))
+function smarty_function_select_db_table($params, $smarty) {
+    if (empty($params['table']) || !array_key_exists('valeur', $params)) {
         return;
-    if(empty($params['champ']))
+    }
+    if (empty($params['champ'])) {
         $params['champ'] = 'text';
-    if(empty($params['pad']) || !($params['pad']))
-        $pad = false;
-    else
-        $pad = true;
-    if(empty($params['where']))
-        $params['where'] = '';
+    }
+    foreach (array('where', 'join', 'group') as $value) {
+        if (empty($params[$value])) {
+            $params[$value] = '';
+        }
+    }
+    $pad = (!empty($params['pad']) && $params['pad']);
+
     return select_options($params['table'], $params['valeur'], $params['champ'], $pad,
                           $params['where'], $params['join'], $params['group']);
 }
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>