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