Lock.php
[Pman.Core] / Lock.php
1 <?php
2
3
4 require_once 'Pman.php';
5
6 class Pman_Core_Lock extends Pman
7 {
8     
9     function getAuth()
10     {
11          $au = $this->getAuthUser();
12         if (!$au) {
13              $this->jerr("Not authenticated", array('authFailure' => true));
14         }
15         $this->authUser = $au;
16         // check that it's a supplier!!!! 
17         
18         return true; 
19     }
20     
21     function get($action)
22     {
23         
24         // default action is to attempt to lock..
25         $action = empty($action) ? 'lock' : 'unlock';
26         $this->$action($curlock);
27         
28        
29         
30         
31     }
32     
33     function unlock($curlock)
34     {
35     
36         if (empty($_REQUEST['id'])) {
37             $this->jerr("No lock id");
38         }
39         $curlock = DB_DataObject::factory('Core_locking');
40         if (!$curlock->get($_REQUEST['id'])) {
41             $this->jerr("No lock exists");
42         }
43         
44         if ($curlock->person_id != $this->authUser->id) {
45             $this->jerr("Lock id is invalid");
46         }
47         
48         $curlock->delete();
49         
50         $this->jok('unlocked');
51     }
52     function lock()
53     {
54         
55         if (empty($_REQUEST['on_id']) || empty($_REQUEST['on_table'])) {
56             $this->jerr("Missing table or id");
57         }
58        
59         $tab = str_replace('/', '',$_REQUEST['on_table']); // basic protection??
60         $x = DB_DataObject::factory($tab);
61         if (!$x->get($_REQUEST['on_id'])) {
62             $this->jerr("Item does not exist");
63         }
64         // is there a current lock on the item..
65         
66         $curlock = DB_DataObject::factory('Core_locking');
67         $curlock->setFrom(array(
68             'on_id' => $_REQUEST['on_id'],
69             'on_table' => $_REQUEST['on_table']
70         ));
71         if ($curlock->count()) {
72             $err  = $this->canUnlock();
73             if ($err !== true) {
74                 $this->jerr($err);
75             }
76         }
77         // make a lock..
78          
79         
80         
81     
82 }