phpDocumentor VFront
RPC
[ class tree: VFront ] [ index: VFront ] [ all elements ]

Source for file rpc.recordlock.php

Documentation is available at rpc.recordlock.php

  1. <?php
  2. /**
  3. * File RPC per il lock del record considerato attualmente.
  4. * Quando un utente entra in modifica su un file questo viene bloccato in scrittura per evitare
  5. * l'accesso concorrente da parte di altro utente.
  6. * Mediante la chiamata a questo file viene creato un record nella tabella "recordlock"
  7. * del DB di regole di VFront. In questo file sono presenti le funzioni per gestire
  8. * il lock dei record.
  9. @package VFront
  10. @subpackage RPC
  11. @author Mario Marcello Verona <marcelloverona@gmail.com>
  12. @copyright 2007 Mario Marcello Verona
  13. @version 0.90
  14. @license http://www.gnu.org/licenses/gpl.html GNU Public License
  15. */
  16.  
  17. require_once("./inc/conn.php");
  18. require_once("./inc/func.var_frontend.php");
  19.  
  20.  
  21. /**
  22.  * Verifica che il record sia bloccato o meno.
  23.  * In base al tempo massimo di blocco specificato nella variabile globale _VARAIBILI => max_tempo_edit
  24.  * è possibile che il record, anche se bloccato, sia comunque scrivibile
  25.  *
  26.  * @param string $tabella 
  27.  * @param string $colonna 
  28.  * @param int|string$id 
  29.  * @return bool 
  30.  */
  31. function verifica_recordlock($tabella,$colonna,$id){
  32.     
  33.     global $link,$db1;
  34.     
  35.     
  36.     $sql"SELECT tempo FROM {$db1['frontend']}.recordlock 
  37.             WHERE tabella='$tabella'
  38.             AND colonna='$colonna'
  39.             AND id='$id'
  40.             ";
  41.     
  42.     $q=vmsql_query($sql,$link);
  43.     $num vmsql_num_rows($q);
  44.     
  45.     if(!isset($GLOBALS['_VARIABILI'])){
  46.         
  47.         var_frontend();
  48.     }
  49.     
  50.     // e' bloccato, verifica da quando
  51.     if($num>0){
  52.         
  53.         list($tempo_blocco)=vmsql_fetch_row($q);
  54.         
  55.         $tempo_edit (time()-$tempo_blocco);
  56.         
  57.         if($tempo_edit $GLOBALS['_VARIABILI']['max_tempo_edit']){
  58.             
  59.             // e' bloccato ormai da tanto, sbloccalo e consideralo libero
  60.             sblocca_record($tabella,$colonna,$id);
  61.             return true;
  62.         }
  63.         else{
  64.             // è bloccato
  65.             return false;
  66.         }
  67.         
  68.     }
  69.     // e' libero (non esiste in tabella)
  70.     else return true;
  71.     
  72.     
  73.     
  74. }
  75.  
  76.  
  77. /**
  78.  * Blocca un dato record creando una nuova riga nella tabella recordlock
  79.  *
  80.  * @param string $tabella 
  81.  * @param string $colonna 
  82.  * @param string $id 
  83.  * @return bool 
  84.  */
  85. function blocca_record($tabella,$colonna,$id){
  86.     
  87.     global $link,$db1;
  88.     
  89.     $sql"INSERT INTO {$db1['frontend']}.recordlock (tabella,colonna,id,tempo)
  90.             VALUES    ('$tabella','$colonna','$id',".time().")
  91.             ";
  92.     
  93.     return vmsql_try($sql,$link,false);
  94.     
  95.     
  96. }
  97.  
  98.  
  99. /**
  100.  * Sblocca un dato record cancellando la riga ad esso relativa nella tabella recordlock
  101.  *
  102.  * @param string $tabella 
  103.  * @param string $colonna 
  104.  * @param string $id 
  105.  * @return bool 
  106.  */
  107. function sblocca_record($tabella,$colonna,$id){
  108.     
  109.     global $link,$db1;
  110.     
  111.     $sql"DELETE FROM {$db1['frontend']}.recordlock 
  112.             WHERE tabella='$tabella'
  113.             AND colonna='$colonna'
  114.             AND id='$id'
  115.             ";
  116.     
  117.     return vmsql_try($sql,$link,false);
  118.     
  119. }
  120.  
  121.  
  122.  
  123. ####################################
  124.  
  125.     $tabella addslashes(stripslashes($_GET['tab']));
  126.     $colonna addslashes(stripslashes($_GET['col']));
  127.     $id addslashes(stripslashes($_GET['id']));
  128.  
  129.  
  130. if(isset($_GET['blocca'])){
  131.     
  132.     $libero verifica_recordlock($tabella,$colonna,$id);
  133.     
  134.     // se il record è libero
  135.     if($libero){
  136.         echo blocca_record($tabella,$colonna,$id);
  137.     }
  138.     else{        
  139.         echo 0;
  140.     }
  141. }
  142. else if(isset($_GET['sblocca'])){
  143.     
  144.     echo sblocca_record($tabella,$colonna,$id);
  145. }
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153. ?>

Documentation generated on Sat, 22 Sep 2007 11:51:09 +0200 by phpDocumentor 1.4.0a2