PageRenderTime 42ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/library/include/mysql.lib.php

https://bitbucket.org/marcor/gazie
PHP | 622 lines | 501 code | 44 blank | 77 comment | 81 complexity | cd0ecbdbfe96becc4de9abde03ab86ce MD5 | raw file
Possible License(s): LGPL-2.1, LGPL-3.0, GPL-2.0
  1. <?php
  2. /*
  3. --------------------------------------------------------------------------
  4. GAzie - Gestione Azienda
  5. Copyright (C) 2004-2012 - Antonio De Vincentiis Montesilvano (PE)
  6. (www.devincentiis.it)
  7. <http://gazie.it>
  8. --------------------------------------------------------------------------
  9. Questo programma e` free software; e` lecito redistribuirlo e/o
  10. modificarlo secondo i termini della Licenza Pubblica Generica GNU
  11. come e` pubblicata dalla Free Software Foundation; o la versione 2
  12. della licenza o (a propria scelta) una versione successiva.
  13. Questo programma e` distribuito nella speranza che sia utile, ma
  14. SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di
  15. NEGOZIABILITA` o di APPLICABILITA` PER UN PARTICOLARE SCOPO. Si
  16. veda la Licenza Pubblica Generica GNU per avere maggiori dettagli.
  17. Ognuno dovrebbe avere ricevuto una copia della Licenza Pubblica
  18. Generica GNU insieme a questo programma; in caso contrario, si
  19. scriva alla Free Software Foundation, Inc., 675 Mass Ave,
  20. Cambridge, MA 02139, Stati Uniti.
  21. --------------------------------------------------------------------------
  22. */
  23. function connectToDB ()
  24. {
  25. global $link, $Host, $Database, $User, $Password;
  26. $count;
  27. //
  28. // Salva il valore precedente di error_reporting().
  29. //
  30. $level = error_reporting();
  31. //
  32. // Tenta per almeno cinque volte di eseguire la connessione.
  33. //
  34. for ($count = 5; $count > 0; $count--)
  35. {
  36. //
  37. // Per i primi quattro tentativi non mostra gli avvertimenti.
  38. //
  39. if ($count > 1)
  40. error_reporting (E_ERROR | E_PARSE | E_NOTICE);
  41. $link = mysql_connect($Host, $User, $Password);
  42. //
  43. // Riprisinta la modalità precedente di segnalazione degli
  44. // errori.
  45. //
  46. error_reporting ($level);
  47. //
  48. // Se non è riuscito a connettersi, attende un po' e poi riprova;
  49. // altrimenti esce.
  50. //
  51. if (!$link)
  52. sleep (rand (3, 7));
  53. else
  54. break;
  55. }
  56. mysql_set_charset('utf8');
  57. if (!$link) die (" Can't connect to MySQL<br />Impossibile connettersi a MySql <br />No se puede conectar a MySQL");
  58. mysql_select_db($Database,$link) or die (
  59. "Was not found, << $Database >> database! <br />
  60. Could not be installed, try to do so by <a href=\"../../setup/install/install.php\"> clicking HERE! </a><br />
  61. <br />Non &egrave; stata trovata la base dati di nome << $Database >>! <br />
  62. Potrebbe non essere stato installata, prova a farlo <a href=\"../../setup/install/install.php\"> cliccando QUI! </a> <br />
  63. <br />No se ha encontrado, la base de datos << $Database >> ! <br />
  64. No pudo ser instalado, trate de hacerlo haciendo <a href=\"../../setup/install/install.php\"> clic AQU&Iacute;! </a>");
  65. }
  66. function connectIsOk()
  67. {
  68. global $Host, $User, $Password, $link;
  69. $result = True;
  70. $link = mysql_connect($Host, $User, $Password) or ($result = False); // In $result l'esito della connessione
  71. return $result;
  72. }
  73. function createDatabase($Database)
  74. {
  75. global $link;
  76. mysql_query("CREATE DATABASE $Database DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;",$link) or die ("ERRORE: il database $Database non &egrave; stato creato!");
  77. }
  78. function databaseIsOk()
  79. {
  80. global $link, $Database;
  81. $result = True;
  82. mysql_select_db( $Database, $link) or ($result = False); // In $result l'esito della selezione
  83. return $result;
  84. }
  85. function gaz_dbi_query ($query,$ar=false)
  86. {
  87. global $link;
  88. $result = mysql_query($query, $link);
  89. if (!$result) die ("Error in gaz_dbi_query:".$query.mysql_error());
  90. if ($ar){
  91. return mysql_affected_rows();
  92. } else {
  93. return $result;
  94. }
  95. }
  96. function gaz_dbi_fetch_array ($resource)
  97. {
  98. $result = mysql_fetch_array($resource);
  99. return $result;
  100. }
  101. function gaz_dbi_fetch_row ($resource)
  102. {
  103. $result = mysql_fetch_row($resource);
  104. return $result;
  105. }
  106. function gaz_dbi_num_rows ($resource)
  107. {
  108. $result = mysql_num_rows($resource);
  109. return $result;
  110. }
  111. function gaz_dbi_fetch_object ($resource)
  112. {
  113. $result = mysql_fetch_object($resource);
  114. return $result;
  115. }
  116. function gaz_dbi_free_result ($result)
  117. {
  118. mysql_free_result($result);
  119. }
  120. //uso un metodo simile a quello di phpMyAdmin in sql.php per controllare i tipi di campo
  121. function gaz_dbi_get_fields_meta($result)
  122. {
  123. $fields=array();
  124. $fields['num']=mysql_num_fields($result);
  125. for ($i = 0; $i < $fields['num']; $i++) {
  126. $fields['data'][]=mysql_fetch_field($result, $i);
  127. }
  128. return $fields;
  129. }
  130. function gaz_dbi_get_row( $table, $fnm, $fval)
  131. {
  132. global $link;
  133. $result = mysql_query("SELECT * FROM $table WHERE $fnm = '$fval'", $link);
  134. if (!$result) die (" Error gaz_dbi_get_row: ".mysql_error());
  135. return mysql_fetch_array( $result);
  136. }
  137. function gaz_dbi_put_row ($table, $CampoCond, $ValoreCond , $Campo, $Valore)
  138. {
  139. global $link;
  140. $field_results = gaz_dbi_query ("SELECT * FROM ".$table);
  141. $field_meta=gaz_dbi_get_fields_meta($field_results);
  142. $where=' WHERE '.$CampoCond.' = ';
  143. $query = "UPDATE ".$table.' SET '.$Campo.' = ';
  144. for ($j = 0; $j < $field_meta['num']; $j++) {
  145. if ($field_meta['data'][$j]->name==$Campo) {
  146. if ($field_meta['data'][$j]->blob && !empty($Valore)) {
  147. $query .= '0x'.bin2hex($Valore);
  148. } elseif ($field_meta['data'][$j]->numeric && $field_meta['data'][$j]->type != 'timestamp'){
  149. $query .= floatval($Valore);
  150. } else {
  151. $elem = addslashes($Valore); // risolve il classico problema dei caratteri speciali per inserimenti in SQL
  152. $elem = preg_replace("/\\\'/","''",$elem); //cambia lo backslash+singlequote con 2 singlequote come fa phpmyadmin.
  153. $query .="'".$elem."'";
  154. }
  155. }
  156. if ($field_meta['data'][$j]->name==$CampoCond) {
  157. if ($field_meta['data'][$j]->blob && !empty($ValoreCond)) {
  158. $where .= '0x'.bin2hex($Valore);
  159. } elseif ($field_meta['data'][$j]->numeric && $field_meta['data'][$j]->type != 'timestamp'){
  160. $where .= floatval($ValoreCond);
  161. } else {
  162. $elem = addslashes($ValoreCond); // risolve il classico problema dei caratteri speciali per inserimenti in SQL
  163. $elem = preg_replace("/\\\'/","''",$elem); //cambia lo backslash+singlequote con 2 singlequote come fa phpmyadmin.
  164. $where .="'".$elem."'";
  165. }
  166. }
  167. }
  168. $query .= $where.' LIMIT 1';
  169. $result = mysql_query ($query, $link);
  170. if (!$result ) die ("Error gaz_dbi_put_row: <b>$query</b>".mysql_error() );
  171. return $result;
  172. }
  173. function gaz_dbi_put_query ($table, $where , $Campo, $Valore)
  174. {
  175. global $link;
  176. $result = mysql_query ("UPDATE $table SET $Campo='$Valore' WHERE $where", $link);
  177. if (!$result) die ($where."Error gaz_dbi_put_query: ".mysql_error() );
  178. }
  179. function gaz_dbi_del_row( $table, $fname, $fval)
  180. {
  181. global $link;
  182. $result = mysql_query("DELETE FROM $table WHERE $fname = '$fval'", $link) or die (" Errore di cancellazione: ".mysql_error());
  183. if (!$result) die ($where."Error gaz_dbi_del_row: ".mysql_error() );
  184. }
  185. // restituisce l'id dell'ultimo insert
  186. function gaz_dbi_last_id()
  187. {
  188. global $link;
  189. $num_id = mysql_insert_id($link);
  190. return $num_id;
  191. }
  192. // restituisce il numero record di una query
  193. function gaz_dbi_record_count($table, $where)
  194. {
  195. global $link;
  196. $result = mysql_query("SELECT * FROM ".$table." WHERE ".$where."" ,$link);
  197. $count = mysql_num_rows($result);
  198. return $count;
  199. }
  200. // funzione che compone una query con i parametri: tabella, where, orderby, limit e passo (riga di inizio e n. record)
  201. function gaz_dbi_dyn_query($select, $tabella, $where=1, $orderby=2, $limit=0, $passo=2000000)
  202. {
  203. global $link, $session;
  204. $query = "SELECT $select FROM $tabella ";
  205. if ($where != '') {
  206. $query .= "WHERE $where ";
  207. }
  208. if ($orderby == '2') {
  209. $query .= "LIMIT $limit, $passo";
  210. } else {
  211. $query .= "ORDER BY $orderby LIMIT $limit, $passo";
  212. }
  213. $result = mysql_query($query, $link);
  214. if (!$result) die (" Errore di gaz_dbi_dyn_query:<b> $query </b> ".mysql_error());
  215. return $result;
  216. }
  217. function gaz_dbi_fields($table)
  218. {
  219. /*
  220. * $table - il nome della tabella all'interno dell'array $gTables
  221. * questa funzione genera un array(chiave=>valore) contenente tutte le chiavi
  222. * della tabella richiesta a valori nulli o 0 a secondo del tipo
  223. */
  224. global $link, $gTables;
  225. $acc=array();
  226. $field_results = gaz_dbi_query ("SELECT * FROM ".$gTables[$table]);
  227. $field_meta=gaz_dbi_get_fields_meta($field_results);
  228. for ($j = 0; $j < $field_meta['num']; $j++) {
  229. if ($field_meta['data'][$j]->blob && !empty($value[$field_meta['data'][$j]->name])) {
  230. // i binari
  231. $acc[$field_meta['data'][$j]->name] = '';
  232. } elseif ($field_meta['data'][$j]->numeric && $field_meta['data'][$j]->type != 'timestamp'){
  233. // i numerici
  234. $acc[$field_meta['data'][$j]->name] = 0;
  235. } else {
  236. // le stringhe di caratteri
  237. $acc[$field_meta['data'][$j]->name] = '';
  238. }
  239. }
  240. return $acc;
  241. }
  242. function gaz_dbi_parse_post($table)
  243. {
  244. /*
  245. * $table - il nome della tabella all'interno dell'array $gTables
  246. * questa funzione genera un array(chiave=>valore) contenente le sole chiavi
  247. * omonime presenti in $_POST e con i valori parsati in base al tipo di colonna
  248. */
  249. global $link, $gTables;
  250. $acc=array();
  251. $field_results = gaz_dbi_query ("SELECT * FROM ".$gTables[$table]);
  252. $field_meta=gaz_dbi_get_fields_meta($field_results);
  253. for ($j = 0; $j < $field_meta['num']; $j++) {
  254. if (isset($_POST[$field_meta['data'][$j]->name])) {
  255. if ($field_meta['data'][$j]->blob && !empty($_POST[$field_meta['data'][$j]->name])) {
  256. // i binari non li considero
  257. } elseif ($field_meta['data'][$j]->numeric && $field_meta['data'][$j]->type != 'timestamp'){
  258. // i numerici
  259. $acc[$field_meta['data'][$j]->name] = floatval(preg_replace("/\,/",'.',$_POST[$field_meta['data'][$j]->name]));
  260. } else {
  261. // le stringhe di caratteri
  262. $acc[$field_meta['data'][$j]->name] = substr($_POST[$field_meta['data'][$j]->name],0,mysql_field_len($field_results,$j));
  263. }
  264. }
  265. }
  266. return $acc;
  267. }
  268. function gaz_dbi_table_insert($table,$value)
  269. {
  270. /*
  271. * $table - il nome della tabella all'interno dell'array $gTables
  272. * $value - array associativo del tipo nome_colonna=>valore con i valori da inserire
  273. */
  274. global $link, $gTables;
  275. $first=true;
  276. $auto_increment=false;
  277. $colName='';
  278. $colValue='';
  279. $field_results=gaz_dbi_query ("SELECT * FROM ".$gTables[$table]);
  280. $rs_auto_increment=gaz_dbi_query ("SHOW COLUMNS FROM ".$gTables[$table]);
  281. while ($ai=mysql_fetch_assoc($rs_auto_increment)){
  282. if ($ai['Extra']=='auto_increment'){
  283. $auto_increment=$ai['Field'];
  284. }
  285. }
  286. $field_meta=gaz_dbi_get_fields_meta($field_results);
  287. for ($j = 0; $j < $field_meta['num']; $j++) {
  288. if ($field_meta['data'][$j]->name != $auto_increment) { // il campo auto increment non dev'essere passato
  289. $colName .= ($first ? $field_meta['data'][$j]->name : ', '.$field_meta['data'][$j]->name);
  290. $colValue .= ($first ? " " : ", ");
  291. $first=false;
  292. if (isset($value[$field_meta['data'][$j]->name])) {
  293. if ($field_meta['data'][$j]->blob && !empty($value[$field_meta['data'][$j]->name])) {
  294. $colValue .= '0x'.bin2hex($value[$field_meta['data'][$j]->name]);
  295. } elseif ($field_meta['data'][$j]->numeric && $field_meta['data'][$j]->type != 'timestamp'){
  296. $colValue .= floatval($value[$field_meta['data'][$j]->name]);
  297. } else {
  298. $elem = addslashes($value[$field_meta['data'][$j]->name]); // risolve il classico problema dei caratteri speciali per inserimenti in SQL
  299. $elem = preg_replace("/\\\'/","''",$elem); //cambia lo backslash+singlequote con 2 singlequote come fa phpmyadmin.
  300. $colValue .="'".$elem."'";
  301. }
  302. } elseif ($field_meta['data'][$j]->name == 'adminid') { //l'adminid non lo si deve passare
  303. $colValue .= "'".$_SESSION['Login']."'";
  304. } else {
  305. if ($field_meta['data'][$j]->numeric && $field_meta['data'][$j]->type != 'timestamp'){
  306. $colValue .='0';
  307. } else {
  308. $colValue .="''";
  309. }
  310. }
  311. }
  312. }
  313. $query = "INSERT INTO ".$gTables[$table]." ( ".$colName." ) VALUES ( ".$colValue.");";
  314. $result = mysql_query($query, $link);
  315. if (!$result) die ("Error gaz_dbi_table_insert:<b> $query </b> ".mysql_error());
  316. }
  317. function gaz_dbi_table_update($table,$id,$newValue)
  318. {
  319. /*
  320. * $table - il nome della tabella all'interno dell'array $gTables
  321. * $id - stringa con il valore del campo "codice" da aggiornare o array(0=>nome,1=>valore,2=>nuovo_valore)
  322. * $newValue - array associativo del tipo nome_colonna=>valore con i valori da inserire
  323. */
  324. global $link, $gTables;
  325. $field_results = gaz_dbi_query ("SELECT * FROM ".$gTables[$table]);
  326. $field_meta=gaz_dbi_get_fields_meta($field_results);
  327. $query = "UPDATE ".$gTables[$table].' SET ';
  328. $first = true;
  329. $quote_id="'";
  330. for ($j = 0; $j < $field_meta['num']; $j++) {
  331. if (isset($newValue[$field_meta['data'][$j]->name])) {
  332. $query .= ($first ? $field_meta['data'][$j]->name." = " : ", ".$field_meta['data'][$j]->name." = ");
  333. $first = false;
  334. if ($field_meta['data'][$j]->blob && !empty($newValue[$field_meta['data'][$j]->name])) {
  335. $query .= '0x'.bin2hex($newValue[$field_meta['data'][$j]->name]);
  336. } elseif ($field_meta['data'][$j]->numeric && $field_meta['data'][$j]->type != 'timestamp'){
  337. $query .= floatval($newValue[$field_meta['data'][$j]->name]);
  338. } else {
  339. $elem = addslashes($newValue[$field_meta['data'][$j]->name]); // risolve il classico problema dei caratteri speciali per inserimenti in SQL
  340. $elem = preg_replace("/\\\'/","''",$elem); //cambia lo backslash+singlequote con 2 singlequote come fa phpmyadmin.
  341. $query .="'".$elem."'";
  342. }
  343. //per superare lo STRICT_MODE del server non metto gli apici ai numerici
  344. if ((is_array($id) && $field_meta['data'][$j]->name == $id[0] && $field_meta['data'][$j]->numeric)
  345. || (is_string($id) && $field_meta['data'][$j]->name == 'codice' && $field_meta['data'][$j]->numeric)) {
  346. $quote_id='';
  347. }
  348. } elseif ($field_meta['data'][$j]->name == 'adminid') { //l'adminid non lo si deve passare
  349. $query .= ", adminid = '".$_SESSION['Login']."'";
  350. }
  351. }
  352. // se in $id c'è un array uso il nome del campo presente all'index [0] ed il valore dell'index [1],
  353. // eventualmente anche l'index [2] per il nuovo valore del codice che quindi verrà modificato
  354. if (is_array($id)){
  355. if (isset($id[2])){
  356. $query .= ", $id[0] = $quote_id$id[2]$quote_id";
  357. }
  358. $query .= " WHERE $id[0] = $quote_id$id[1]$quote_id";
  359. } else { //altrimenti uso "codice"
  360. $query .= " WHERE codice = $quote_id$id$quote_id";
  361. }
  362. $result = mysql_query ($query, $link);
  363. if (!$result) die ("Error gaz_dbi_table_update:<b> $query </b>".mysql_error() );
  364. }
  365. function tableInsert ($table, $columns, $newValue)
  366. {
  367. global $link, $gTables;
  368. $first = True;
  369. $colName = "";
  370. $colValue = "";
  371. while(list($key,$field) = each($columns)) {
  372. $colName .= ($first ? $field : ','.$field);
  373. $colValue .= ($first ? " '" : ", '");
  374. $first = False;
  375. $colValue .= (isset($newValue[$field]) ? addslashes($newValue[$field]) : '')."'";
  376. }
  377. $query = "INSERT INTO ".$gTables[$table]." ( ".$colName." ) VALUES ( ".$colValue.")";
  378. $result = mysql_query($query, $link);
  379. if (!$result) die ("Error tableUpdate: ".mysql_error());
  380. }
  381. function tableUpdate ($table, $column, $codice, $newValue)
  382. {
  383. global $link, $gTables;
  384. $first = True;
  385. $query = "UPDATE ".$gTables[$table].' SET';
  386. while(list($key,$field) = each($column)) {
  387. $query .= ($first ? " $field = '" : ", $field = '");
  388. $first = False;
  389. $query .= (isset($newValue[$field]) ? addslashes($newValue[$field]) : '')."'";
  390. }
  391. // se in $codice c'è un array uso il nome del campo presente all'index [0],
  392. // eventualmente anche l'index [2] per il nuovo valore del codice che quindi verrà modificato
  393. if (is_array($codice)){
  394. if (isset($codice[2])){
  395. $query .= ", $codice[0] = '$codice[2]'";
  396. }
  397. $query .= " WHERE $codice[0] = '$codice[1]'";
  398. } else { //altrimenti uso "codice"
  399. $query .= " WHERE codice = '$codice'";
  400. }
  401. $result = mysql_query ($query, $link);
  402. if (!$result) die ("Error tableUpdate: ".mysql_error() );
  403. }
  404. function mergeTable($table1,$campi1,$table2,$campi2,$campomerge,$where)
  405. {
  406. global $link;
  407. $result = mysql_query("SELECT $campi1 FROM $table1 LEFT JOIN $table2 ON $table1.$campomerge = $table2.$campomerge WHERE $where", $link);
  408. if (!$result) die (" Error mergeTable: ".mysql_error());
  409. return $result;
  410. }
  411. function rigmoiInsert($newValue)
  412. {
  413. $table = 'rigmoi';
  414. $columns = array('id_rig','id_tes','tipiva','codiva','periva','imponi','impost');
  415. tableInsert($table, $columns, $newValue);
  416. }
  417. function rigmocInsert($newValue)
  418. {
  419. $table = 'rigmoc';
  420. $columns = array('id_rig','id_tes','darave','codcon','import');
  421. tableInsert($table, $columns, $newValue);
  422. }
  423. function paymovInsert($newValue)
  424. {
  425. $table = 'paymov';
  426. $columns = array('id','id_tesdoc_ref','id_rigmoc_pay','id_rigmoc_doc','amount','expiry');
  427. tableInsert($table, $columns, $newValue);
  428. }
  429. function rigbroInsert ($newValue)
  430. {
  431. $table = 'rigbro';
  432. $columns = array('id_tes','tiprig','codart','descri','id_body_text','unimis','quanti','prelis','sconto','codvat','pervat','codric','provvigione','ritenuta','delivery_date','id_doc','id_mag','status');
  433. tableInsert($table, $columns, $newValue);
  434. }
  435. function rigbroUpdate ($codice, $newValue)
  436. {
  437. $table = 'rigbro';
  438. $columns = array('id_tes','tiprig','codart','descri','id_body_text','unimis','quanti','prelis','sconto','codvat','pervat','codric','provvigione','ritenuta','delivery_date','id_doc','id_mag','status');
  439. tableUpdate($table, $columns, $codice, $newValue);
  440. }
  441. function rigdocInsert ($newValue)
  442. {
  443. $table = 'rigdoc';
  444. $columns = array('id_tes','tiprig','codart','descri','id_body_text','unimis','quanti','prelis','sconto','codvat','pervat','codric','provvigione','ritenuta','id_order','id_mag','status');
  445. tableInsert($table, $columns, $newValue);
  446. }
  447. function rigdocUpdate ($codice, $newValue)
  448. {
  449. $table = 'rigdoc';
  450. $columns = array('id_tes','tiprig','codart','descri','id_body_text','unimis','quanti','prelis','sconto','codvat','pervat','codric','provvigione','ritenuta','id_order','id_mag','status');
  451. tableUpdate($table, $columns, $codice, $newValue);
  452. }
  453. function tesbroInsert ($newValue)
  454. {
  455. $table = 'tesbro';
  456. $columns = array('seziva','tipdoc','template','print_total','delivery_time','day_of_validity','datemi','protoc','numdoc','numfat','datfat','clfoco','pagame','banapp','vettor','listin','destin','id_des','spediz','portos','imball','traspo','speban','spevar','round_stamp','cauven','caucon','caumag','id_agente','id_pro','sconto','vat_susp','stamp','net_weight','gross_weight','units','volume','initra','geneff','id_contract','id_con','status','adminid');
  457. $newValue['adminid'] = $_SESSION['Login'];
  458. tableInsert($table, $columns, $newValue);
  459. }
  460. function tesbroUpdate ($codice, $newValue)
  461. {
  462. $table = 'tesbro';
  463. $columns = array('seziva','tipdoc','template','print_total','delivery_time','day_of_validity','datemi','protoc','numdoc','numfat','datfat','clfoco','pagame','banapp','vettor','listin','destin','id_des','spediz','portos','imball','traspo','speban','spevar','round_stamp','cauven','caucon','caumag','id_agente','id_pro','sconto','vat_susp','stamp','net_weight','gross_weight','units','volume','initra','geneff','id_contract','id_con','status','adminid');
  464. $newValue['adminid'] = $_SESSION['Login'];
  465. tableUpdate($table, $columns, $codice, $newValue);
  466. }
  467. function tesdocInsert ($newValue)
  468. {
  469. $table = 'tesdoc';
  470. $columns = array('seziva','tipdoc','template','datemi','protoc','numdoc','numfat','datfat','clfoco','pagame','banapp','vettor','listin','destin','id_des','spediz','portos','imball','traspo','speban','spevar','round_stamp','cauven','caucon','caumag','id_agente','id_pro','sconto','vat_susp','stamp','net_weight','gross_weight','units','volume','initra','geneff','id_contract','id_con','status','adminid');
  471. $newValue['adminid'] = $_SESSION['Login'];
  472. tableInsert($table, $columns, $newValue);
  473. }
  474. function tesdocUpdate ($codice, $newValue)
  475. {
  476. $table = 'tesdoc';
  477. $columns = array('seziva','tipdoc','template','datemi','protoc','numdoc','numfat','datfat','clfoco','pagame','banapp','vettor','listin','destin','id_des','spediz','portos','imball','traspo','speban','spevar','round_stamp','cauven','caucon','caumag','id_agente','id_pro','sconto','vat_susp','stamp','net_weight','gross_weight','units','volume','initra','geneff','id_contract','id_con','status','adminid');
  478. $newValue['adminid'] = $_SESSION['Login'];
  479. tableUpdate($table, $columns, $codice, $newValue);
  480. }
  481. function tesmovUpdate ($codice, $newValue)
  482. {
  483. $table = 'tesmov';
  484. $columns = array( 'caucon', 'descri', 'datreg', 'seziva', 'id_doc', 'protoc', 'numdoc', 'datdoc', 'clfoco', 'regiva', 'operat', 'libgio','adminid');
  485. $newValue['adminid'] = $_SESSION['Login'];
  486. tableUpdate($table, $columns, $codice, $newValue);
  487. }
  488. function tesmovInsert ($newValue)
  489. {
  490. $table = 'tesmov';
  491. $columns = array( 'caucon', 'descri', 'datreg', 'seziva', 'id_doc', 'protoc', 'numdoc', 'datdoc', 'clfoco', 'regiva', 'operat', 'libgio','adminid');
  492. $newValue['adminid'] = $_SESSION['Login'];
  493. tableInsert($table, $columns, $newValue);
  494. }
  495. function movmagInsert ($newValue)
  496. {
  497. $table = 'movmag';
  498. $columns = array( 'caumag','operat','datreg','tipdoc','desdoc','datdoc','clfoco','scochi','id_rif','artico','quanti','prezzo','scorig','status','adminid');
  499. $newValue['adminid'] = $_SESSION['Login'];
  500. tableInsert($table, $columns, $newValue);
  501. }
  502. function movmagUpdate ($codice, $newValue)
  503. {
  504. $table = 'movmag';
  505. $columns = array( 'caumag','operat','datreg','tipdoc','desdoc','datdoc','clfoco','scochi','id_rif','artico','quanti','prezzo','scorig','status','adminid');
  506. $newValue['adminid'] = $_SESSION['Login'];
  507. tableUpdate($table, $columns, $codice, $newValue);
  508. }
  509. //===============================================================
  510. // Gestione Access Rights
  511. //===============================================================
  512. function updateAccessRights ($adminid, $moduleid, $access, $enterprise_id=1)
  513. {
  514. global $gTables, $link;
  515. $result = mysql_query ("SELECT * FROM ".$gTables['admin_module']." WHERE adminid='".$adminid."' AND moduleid=".$moduleid.' AND enterprise_id='.$enterprise_id);
  516. if (gaz_dbi_num_rows ($result) < 1) {
  517. $query = "INSERT INTO ".$gTables['admin_module'].
  518. " (adminid, enterprise_id, moduleid, access) VALUES ('".$adminid."',$enterprise_id,$moduleid,$access)";
  519. } else {
  520. $query = "UPDATE ".$gTables['admin_module'].
  521. " SET access=".$access.
  522. " WHERE adminid='".$adminid."' AND moduleid=".$moduleid.' AND enterprise_id='.$enterprise_id;
  523. }
  524. $result = mysql_query($query, $link) or die ("Errore di updateAccessRights ".mysql_error() );
  525. }
  526. function getAccessRights($userid='',$enterprise_id=1)
  527. {
  528. global $gTables, $link;
  529. $query_co= " AND am.enterprise_id='".$enterprise_id."'";
  530. $ck_co=gaz_dbi_fields('admin_module');
  531. if (!array_key_exists('enterprise_id', $ck_co)){
  532. $query_co='';
  533. };
  534. if ($userid == '') {
  535. $query = 'SELECT module.name,module.link,module.id AS m1_id,module.access,module.weight '.
  536. 'FROM '.$gTables['module'].' AS module '.
  537. "ORDER BY weight";
  538. } else {
  539. /* LA: 17-02-2008 */
  540. $query = 'SELECT am.adminid, am.access,
  541. m1.id AS m1_id, m1.name, m1.link, m1.icon, m1.class, m1.weight,
  542. m2.id AS m2_id,m2.link AS m2_link,m2.icon AS m2_icon,m2.class AS m2_class,m2.translate_key AS m2_trkey,m2.accesskey AS m2_ackey,m2.weight AS m2_weight,
  543. m3.id AS m3_id,m3.link AS m3_link,m3.icon AS m3_icon,m3.class AS m3_class,m3.translate_key AS m3_trkey,m3.accesskey AS m3_ackey,m3.weight AS m3_weight
  544. FROM '.$gTables['menu_module'].' AS m2 '.
  545. 'LEFT JOIN '.$gTables['module'].' AS m1 ON m1.id=m2.id_module '.
  546. 'LEFT JOIN '.$gTables['admin_module'].' AS am ON am.moduleid=m1.id '.
  547. 'LEFT JOIN '.$gTables['menu_script'].' AS m3 ON m3.id_menu=m2.id '.
  548. "WHERE am.adminid='".$userid."' ".$query_co.
  549. "ORDER BY m1.weight,m1_id,m2.weight,m2_id,m3.weight";
  550. }
  551. $result = mysql_query($query, $link) or die("Query failed getAccessRights ".mysql_error());
  552. return $result;
  553. }
  554. function checkAccessRights($adminid,$module,$enterprise_id=0)
  555. {
  556. global $gTables, $link;
  557. $ck_co=gaz_dbi_fields('admin_module');
  558. if ( $enterprise_id==0 || (!array_key_exists('enterprise_id', $ck_co)) ) { // vengo da una vecchia versione (<4.0.12)
  559. $query = 'SELECT am.access FROM '.$gTables['admin_module'].' AS am'.
  560. ' LEFT JOIN '.$gTables['module'].' AS module ON module.id=am.moduleid'.
  561. " WHERE am.adminid='".$adminid."' AND module.name='".$module."'";
  562. } else { //nuove versione >= 4.0.12
  563. $query = 'SELECT am.access FROM '.$gTables['admin_module'].' AS am'.
  564. ' LEFT JOIN '.$gTables['module'].' AS module ON module.id=am.moduleid'.
  565. " WHERE am.adminid='".$adminid."' AND module.name='".$module."' AND am.enterprise_id = $enterprise_id ";
  566. }
  567. $result = mysql_query($query, $link) or die ('Errore in query: '.$query.' Errore checkAccessRights '.mysql_error());
  568. if (gaz_dbi_num_rows ($result) < 1) {
  569. return 0;
  570. }
  571. $row = gaz_dbi_fetch_array($result);
  572. return $row['access'];
  573. }
  574. ?>