source: pmb4.2/trunk/fuentes/pmb/circ/caddie/gestion/procs.inc.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 11.2 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: procs.inc.php,v 1.8 2015-04-03 11:16:24 jpermanne Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");
8
9require_once ($include_path."/templates/procs_exp_imp.tpl.php");
10require_once ($include_path."/templates/empr_cart.tpl.php");
11require_once ($include_path."/procs_exp_imp.inc.php");
12
13print "<script type='text/javascript'>
14function test_form(form) {
15        if(form.f_proc_name.value.length == 0) {
16                alert(\"$msg[702]\");
17                form.f_proc_name.focus();
18                return false;
19                }
20        if(form.f_proc_code.value.length == 0) {
21                alert(\"$msg[703]\");
22                form.f_proc_code.focus();
23                return false;
24                }
25        return true;
26        }
27</script>";
28
29function check_param($requete) {
30        $query_parameters=array();
31        //S'il y a des termes !!*!! dans la requête alors il y a des paramètres
32        if (preg_match_all("|!!(.*)!!|U",$requete,$query_parameters)) {
33                for ($i=0; $i<count($query_parameters[1]); $i++) {
34                        if (!preg_match("/^[A-Za-z][A-Za-z0-9_]*$/",$query_parameters[1][$i])) {
35                                return "(".$query_parameters[1][$i].")";
36                        }
37                }
38        }
39        return true;
40}
41
42function show_procs($dbh) {
43        global $msg;
44        global $PMBuserid;
45        print "<hr /><table>";
46
47        // affichage du tableau des procédures
48        if ($PMBuserid!=1) $where=" where (autorisations='$PMBuserid' or autorisations like '$PMBuserid %' or autorisations like '% $PMBuserid %' or autorisations like '% $PMBuserid') ";
49        $requete = "SELECT idproc, type, name, requete, comment, autorisations FROM empr_caddie_procs $where ORDER BY type, name ";
50        $res = pmb_mysql_query($requete, $dbh) or die(pmb_mysql_error().$requete) ;
51
52        $nbr = pmb_mysql_num_rows($res);
53
54        $parity=1;
55        for($i=0;$i<$nbr;$i++) {
56                $row=pmb_mysql_fetch_row($res);
57                $rqt_autorisation=explode(" ",$row[5]);
58                if (array_search ($PMBuserid, $rqt_autorisation)!==FALSE || $PMBuserid == 1) {
59                        if ($parity % 2) {
60                                $pair_impair = "even";
61                                } else {
62                                        $pair_impair = "odd";
63                                        }
64                        $parity += 1;
65                        $tr_javascript=" onmouseover=\"this.className='surbrillance'\" onmouseout=\"this.className='$pair_impair'\" onmousedown=\"document.location='./circ.php?categ=caddie&sub=gestion&quoi=procs&action=modif&id=$row[0]';\" ";
66                        print "<tr class='$pair_impair' $tr_javascript style='cursor: pointer'>
67                        <td width='10'>
68                        ";
69                                if ($row[1]!="ACTION") print "  <input class='bouton' type='button' value=' $msg[procs_options_tester_requete] ' onClick=\"document.location='./circ.php?categ=caddie&sub=gestion&quoi=procs&action=execute&id=$row[0]'\" />"; else print "&nbsp;";
70                                print "
71                                        </td>
72                                        <td width='80'>
73                                                $row[1]
74                                                </td>
75                                        <td>
76                                                <strong>$row[2]</strong><br />
77                                                <small>$row[4]&nbsp;</small>
78                                                </td>
79                                        <td>";
80                                if (preg_match_all("|!!(.*)!!|U",$row[3],$query_parameters)) print "<a href='./circ.php?categ=caddie&sub=gestion&quoi=procs&action=configure&id_query=".$row[0]."'>$msg[procs_options_config_param]</a>";
81                                print "</td>" ;
82                                print "<td><input class='bouton' type='button' value=\"".$msg[procs_bt_export]."\" onClick=\"document.location='./export.php?quoi=procs&sub=empr_caddie&id=$row[0]'\" /></td>
83                                                </tr>";
84                        }
85                }
86        print "</table><hr />
87                <input class='bouton' type='button' value=' $msg[704] ' onClick=\"document.location='./circ.php?categ=caddie&sub=gestion&quoi=procs&action=add'\" />
88                <input class='bouton' type='button' value=' $msg[procs_bt_import] ' onClick=\"document.location='./circ.php?categ=caddie&sub=gestion&quoi=procs&action=import'\" />";
89        }
90
91function proc_form($name='', $code='', $comment='', $id=0, $autorisations=array(), $type="SELECT" ) {
92        global $msg;
93        global $empr_cart_procs_form;
94        global $empr_cart_procs_edit_form ; 
95        global $charset;
96
97        if ($id) {
98                $empr_cart_procs_form = $empr_cart_procs_edit_form ; 
99                if ($type!="ACTION") $empr_cart_procs_form=str_replace("!!exec_button!!","<input type='button' class='bouton' value=' $msg[708] ' onClick=\"document.location='./circ.php?categ=caddie&sub=gestion&quoi=procs&action=execute&id=!!id!!'\" />&nbsp;",$empr_cart_procs_form); 
100                else $empr_cart_procs_form=str_replace("!!exec_button!!","",$empr_cart_procs_form);
101        }
102        $empr_cart_procs_form = str_replace('!!id!!', $id, $empr_cart_procs_form);
103        if(!$id) $empr_cart_procs_form = str_replace('!!form_title!!', $msg[704], $empr_cart_procs_form);
104        else $empr_cart_procs_form = str_replace('!!form_title!!', $msg["procs_modification"], $empr_cart_procs_form);
105
106        if($id && $name && $code) $action = "./circ.php?categ=caddie&sub=gestion&quoi=procs&action=modif&id=$id";
107        else $action = "./circ.php?categ=caddie&sub=gestion&quoi=procs&action=add";
108        $empr_cart_procs_form = str_replace('!!action!!', $action, $empr_cart_procs_form);
109       
110        $empr_cart_procs_form = str_replace('!!type!!', htmlentities($msg["caddie_procs_type_".$type],ENT_QUOTES, $charset), $empr_cart_procs_form);
111        $empr_cart_procs_form = str_replace('!!name!!', htmlentities($name,ENT_QUOTES, $charset), $empr_cart_procs_form);
112        $empr_cart_procs_form = str_replace('!!name_suppr!!', htmlentities(addslashes($name),ENT_QUOTES, $charset), $empr_cart_procs_form);
113        $empr_cart_procs_form = str_replace('!!code!!', htmlentities($code,ENT_QUOTES, $charset), $empr_cart_procs_form);
114        $empr_cart_procs_form = str_replace('!!comment!!', htmlentities($comment,ENT_QUOTES, $charset), $empr_cart_procs_form);
115       
116        $autorisations_users="";
117        $id_check_list='';
118        while (list($row_number, $row_data) = each($autorisations)) {
119                $id_check="auto_".$row_data[1];
120                if($id_check_list)$id_check_list.='|';
121                $id_check_list.=$id_check;
122                if ($row_data[0]) $autorisations_users.="<span class='usercheckbox'><input type='checkbox' name='userautorisation[]' id='$id_check' value='".$row_data[1]."' checked class='checkbox'><label for='$id_check' class='normlabel'>&nbsp;".$row_data[2]."</label></span>&nbsp;&nbsp;";
123                else $autorisations_users.="<span class='usercheckbox'><input type='checkbox' name='userautorisation[]' id='$id_check' value='".$row_data[1]."' class='checkbox'><label for='$id_check' class='normlabel'>&nbsp;".$row_data[2]."</label></span>&nbsp;&nbsp;";
124        }
125        $autorisations_users.="<input type='hidden' id='auto_id_list' name='auto_id_list' value='$id_check_list' >";   
126        $empr_cart_procs_form = str_replace('!!autorisations_users!!', $autorisations_users, $empr_cart_procs_form);
127       
128        print confirmation_delete("./circ.php?categ=caddie&sub=gestion&quoi=procs&action=del&id=");
129        print $empr_cart_procs_form;
130        }
131
132function run_form($id, $dbh) {
133        global $msg;
134        global $charset;
135       
136        $hp=new parameters($id,"empr_caddie_procs");
137        if (preg_match_all("|!!(.*)!!|U",$hp->proc->requete,$query_parameters))
138                $hp->gen_form("circ.php?categ=caddie&sub=gestion&quoi=procs&action=final&id=$id");
139        else echo "<script>document.location='circ.php?categ=caddie&sub=gestion&quoi=procs&action=final&id=$id'</script>";
140        }
141
142
143switch($action) {
144        case 'configure':
145                $hp=new parameters($id_query,"empr_caddie_procs");
146                $hp->show_config_screen("circ.php?categ=caddie&sub=gestion&quoi=procs&action=update_config","circ.php?categ=caddie&sub=gestion&quoi=procs");
147                break;
148        case 'update_config':
149                $hp=new parameters($id_query,"empr_caddie_procs");
150                $hp->update_config("circ.php?categ=caddie&sub=gestion&quoi=procs");
151                break;
152        case 'final':
153                $hp=new parameters($id_query,"empr_caddie_procs");
154                if (preg_match_all("|!!(.*)!!|U",$hp->proc->requete,$query_parameters)) {
155                        $hp->get_final_query();
156                        $code=$hp->final_query;
157                        $id=$id_query;
158                }
159                include("./circ/caddie/gestion/execute.inc.php");
160                break;
161        case 'execute':
162                // form pour params et validation
163                run_form($id, $dbh);
164                break;
165        case 'modif':
166                if($id) {
167                        if($f_proc_name && $f_proc_code) {
168                                // faire la modification
169                                if (is_array($userautorisation)) $autorisations=implode(" ",$userautorisation);
170                                        else $autorisations="";
171                                $param_name=check_param($f_proc_code); 
172                                if ($param_name!==true) {
173                                        error_message_history($param_name, sprintf($msg["proc_param_check_field_name"],$param_name), 1); 
174                                        exit();
175                                }
176                                $requete = "UPDATE empr_caddie_procs SET name='$f_proc_name',requete='$f_proc_code',comment='$f_proc_comment' , autorisations='$autorisations' WHERE idproc=$id ";
177                                $res = pmb_mysql_query($requete, $dbh);
178                                show_procs($dbh);
179                        } else {
180                                // afficher le form avec les bonnes valeurs
181                                $requete = "SELECT idproc, name, requete, comment, autorisations, type FROM empr_caddie_procs WHERE idproc=$id LIMIT 1 ";
182                                $res = pmb_mysql_query($requete, $dbh);
183                                $requete_users = "SELECT userid, username FROM users order by username ";
184                                $res_users = pmb_mysql_query($requete_users, $dbh);
185                                $all_users=array();
186                                while (list($all_userid,$all_username)=pmb_mysql_fetch_row($res_users)) {
187                                        $all_users[]=array($all_userid,$all_username);
188                                        }
189                                if(pmb_mysql_num_rows($res)) {
190                                        $row = pmb_mysql_fetch_row($res);
191                                        $autorisations_donnees=explode(" ",$row[4]);
192                                        for ($i=0 ; $i<count($all_users) ; $i++) {
193                                                if (array_search ($all_users[$i][0], $autorisations_donnees)!==FALSE) $autorisation[$i][0]=1;
194                                                        else $autorisation[$i][0]=0;
195                                                $autorisation[$i][1]= $all_users[$i][0];
196                                                $autorisation[$i][2]= $all_users[$i][1];
197                                                }
198                                        proc_form($row[1], $row[2], $row[3], $row[0],$autorisation, $row[5]);
199                                        }
200                                }
201                } else {
202                        show_procs($dbh);
203                }
204                break;
205        case 'add':
206                if($f_proc_name && $f_proc_code) {
207                        $requete = "SELECT count(1) FROM empr_caddie_procs WHERE name='$f_proc_name' ";
208                        $res = pmb_mysql_query($requete, $dbh);
209                        $nbr_lignes = pmb_mysql_result($res, 0, 0);
210                        if(!$nbr_lignes) {
211                                if (is_array($userautorisation)) {
212                                        $autorisations=implode(" ",$userautorisation);
213                                } else {
214                                        $autorisations='';
215                                }
216                                $param_name=check_param($f_proc_code);
217                                if ($param_name!==true) {
218                                        error_message_history($param_name, sprintf($msg["proc_param_check_field_name"],$param_name), 1);
219                                        exit();
220                                }
221                                $requete = "INSERT INTO empr_caddie_procs (idproc,type,name,requete,comment,autorisations) VALUES ('', '$f_proc_type', '$f_proc_name', '$f_proc_code', '$f_proc_comment', '$autorisations' ) ";
222                                $res = pmb_mysql_query($requete, $dbh);
223                                } else {
224                                        print "<script language='Javascript'>alert(\"$msg[709]\");</script>";
225                                        }
226                        show_procs($dbh);
227                } else {
228                        $requete_users = "SELECT userid, username FROM users order by username ";
229                        $res_users = pmb_mysql_query($requete_users, $dbh);
230                        $autorisation=array();
231                        while (list($all_userid,$all_username)=pmb_mysql_fetch_row($res_users)) {
232                                if ($all_userid==1 or $all_userid==$PMBuserid) $autorisation[]=array(1,$all_userid,$all_username);
233                                        else $autorisation[]=array(0,$all_userid,$all_username);
234                                }
235                        proc_form("", "", "", 0, $autorisation);
236                }
237                break;
238        case 'import':
239                $import_proc_tmpl = str_replace("!!action!!", "./circ.php?categ=caddie&sub=gestion&quoi=procs&action=importsuite", $import_proc_tmpl);
240                print $import_proc_tmpl ;
241                break;
242        case 'importsuite':
243                procs_create ("EMPRCADDIE", "./circ.php?categ=caddie&sub=gestion&quoi=procs&action=modif&id=!!id!!", "./circ.php?categ=caddie&sub=gestion&quoi=procs&action=import") ;
244                break;
245        case 'del':
246                if($id) {
247                        $requete = "DELETE FROM empr_caddie_procs WHERE idproc=$id ";
248                        $res = pmb_mysql_query($requete, $dbh);
249                        show_procs($dbh);
250                }
251                break;
252        default:
253                show_procs($dbh);
254                break;
255        }
Note: See TracBrowser for help on using the repository browser.