Subversion Repositories computer_asset_manager_v2

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
53 rodolico 1
<?php
2
   require_once( 'camp.class.php' );
3
 
4
   class Device extends Camp {
5
      protected static $dbStructure = array(
6
         'table' => array(
7
            'tableName' => 'device',
8
            'primaryKey' => 'device_id',
9
            'selectionDisplay' => 'name',
69 rodolico 10
            'inactiveField' => 'removed',
53 rodolico 11
            'fields' => array(
56 rodolico 12
                  'id' => array (
13
                     'fieldname' => 'device_id',
53 rodolico 14
                     'displayName' => 'ID',
15
                     'type' => 'int unsigned',
63 rodolico 16
                     'nullable' => false,
17
                     'canEdit' => false
53 rodolico 18
                  ),
19
                  'name' => array (
56 rodolico 20
                     'fieldname' => 'name',
21
                     'displayName' => 'Name',
53 rodolico 22
                     'type' => 'varchar',
23
                     'size' => 64,
24
                     'list' => true
25
                  ),
26
                  'uuid' => array (
56 rodolico 27
                     'fieldname' => 'uuid',
53 rodolico 28
                     'displayName' => 'UUID',
29
                     'type' => 'varchar',
30
                     'size' => 36,
31
                     'list' => false
32
                  ),
33
                  'serial' => array (
56 rodolico 34
                     'fieldname' => 'serial',
35
                     'displayName' => 'Serial',
53 rodolico 36
                     'type' => 'varchar',
37
                     'size' => 36,
38
                     'list' => false
39
                  ),
40
                  'created' => array (
56 rodolico 41
                     'fieldname' => 'created',
53 rodolico 42
                     'displayName' => 'Created',
43
                     'type' => 'date'
44
                  ),
45
                  'removed' => array(
56 rodolico 46
                     'fieldname' => 'removed',
53 rodolico 47
                     'displayName' => 'Removed',
48
                     'type' => 'date'
59 rodolico 49
                  ),
50
                  'device_types' => array(
51
                     'fieldname' => 'device_types',
52
                     'displayName' => 'Device Type',
64 rodolico 53
                     'type' => '1:M',
65 rodolico 54
                     'linkageTable' => 'device_device_type',
55
                     'linkageColumn' => 'device_id',
56
                     'foreignTable' => 'device_type',
57
                     'foreignColumn' => 'device_type_id',
69 rodolico 58
                     'foreignDisplayColumn' => 'name',
59
                     'displayView' => array (
60
                        'viewName' => 'device_device_types',
61
                        'myField' => 'device_id',
62
                        'displayField' => 'device_types'
63
                     )
59 rodolico 64
                  ),
65
                  'parent' => array(
69 rodolico 66
                     'displayQuery' => 'select b.device_id id, b.name display from device_device a join device b on (a.parent_id = b.device_id) where a.removed is null and a.device_id = ~~id~~',
59 rodolico 67
                     'fieldname' => 'parent_id',
68
                     'class' => 'Device',
64 rodolico 69
                     'displayName' => 'Parent',
69 rodolico 70
                     'displayColumn' => 'name',
64 rodolico 71
                     'type' => '1:1H',
65 rodolico 72
                     'linkageTable' => 'device_device',
73
                     'linkageColumn' => 'device_id',
74
                     'foreignColumn' => 'parent_id',
72 rodolico 75
                     'foreignTable' => 'device',
76
                     'inactiveField' => 'removed',
77
                     'addedField' => 'created'
59 rodolico 78
                  ),
79
                  'owner' => array(
80
                     'fieldname' => 'owner_id',
81
                     'class' => 'Owner',
64 rodolico 82
                     'displayName' => 'Owner',
69 rodolico 83
                     'displayColumn' => 'name',
64 rodolico 84
                     'type' => '1:1H',
65 rodolico 85
                     'linkageTable' => 'owner_device',
86
                     'linkageColumn' => 'device_id',
87
                     'foreignColumn' => 'owner_id',
72 rodolico 88
                     'foreignTable' => 'owner',
89
                     'inactiveField' => 'removed',
90
                     'addedField' => 'created'
59 rodolico 91
                  ),
92
                  'location' => array(
64 rodolico 93
                     'fieldname' => 'location_id',
94
                     'class' => 'Location',
59 rodolico 95
                     'displayName' => 'Location',
69 rodolico 96
                     'displayColumn' => 'name',
64 rodolico 97
                     'type' => '1:1H',
65 rodolico 98
                     'linkageTable' => 'location_device',
99
                     'linkageColumn' => 'device_id',
100
                     'foreignColumn' => 'location_id',
72 rodolico 101
                     'foreignTable' => 'location',
102
                     'inactiveField' => 'removed',
103
                     'addedField' => 'created'
59 rodolico 104
                  ),
53 rodolico 105
               ) // fields
56 rodolico 106
            ), // table
59 rodolico 107
            'children' => array(
64 rodolico 108
               'Device' => array(
66 rodolico 109
                  'name' => 'Children',
72 rodolico 110
                  'class' => 'Device',
111
                  'query' => 'select device_id id,name name from device where device_id in (select device_id from device_device where removed is null and parent_id = ~~device_id~~) order by name',
66 rodolico 112
                  'noAdd' => true
64 rodolico 113
                  )
59 rodolico 114
            ) // children
53 rodolico 115
         ); // dbStructure
116
 
72 rodolico 117
 
118
      /**
119
       * Function to change the location of the current record
120
       * 
121
       * Mainly used by calling programs to change a location programmatically
122
       * instead of trying to push throuhg something else.
123
       * 
124
       * @parameter int $newLocation The index (location_id) to be used
125
       * @parameter string $effectiveDate Date in YYYYMMDD format. If null, uses now()
126
       */
127
      public function changeLocation( $newLocation, $effectiveDate = null ) {
128
         global $dbConnection;
129
 
130
         $effectiveDate = $effectiveDate ? "'$effectiveDate'" : 'now()';
131
         $query = sprintf( 
132
            'update %s set removed = %s where removed is null',
133
            $self::$dbStructure['table']['fields']['location']['linkageTable'],
134
            $effectiveDate
135
         );
136
         $dbConnection->doSQL( $query );
137
         $query = sprintf(
138
            'insert into %s ( %s, %s, %s ) values (%s, %s, %s)',
139
            $self::$dbStructure['table']['fields']['location']['linkageTable'],
140
            $self::$dbStructure['table']['fields']['location']['foreignColumn'],
141
            $self::$dbStructure['table']['fields']['location']['linkageColumn'],
142
            $self::$dbStructure['table']['fields']['location']['addedField'],
143
            $newLocation,
144
            $this->id,
145
            $effectiveDate
146
         );
147
         $dbConnection->doSQL( $query );
148
      } // changeLocation
149
 
150
      /**
151
       * Function to change the owner of the current record
152
       * 
153
       * Mainly used by calling programs to change a owner programmatically
154
       * instead of trying to push throuhg something else.
155
       * 
156
       * @parameter int $newowner The index (owner_id) to be used
157
       * @parameter string $effectiveDate Date in YYYYMMDD format. If null, uses now()
158
       */
159
      public function changeOwner( $newOwner, $effectiveDate = null ) {
160
         global $dbConnection;
161
 
162
         $effectiveDate = $effectiveDate ? "'$effectiveDate'" : 'now()';
163
         $query = sprintf( 
164
            'update %s set removed = %s where removed is null',
165
            $self::$dbStructure['table']['fields']['owner']['linkageTable'],
166
            $effectiveDate
167
         );
168
         $dbConnection->doSQL( $query );
169
         $query = sprintf(
170
            'insert into %s ( %s, %s, %s ) values (%s, %s, %s)',
171
            $self::$dbStructure['table']['fields']['owner']['linkageTable'],
172
            $self::$dbStructure['table']['fields']['owner']['foreignColumn'],
173
            $self::$dbStructure['table']['fields']['owner']['linkageColumn'],
174
            $self::$dbStructure['table']['fields']['owner']['addedField'],
175
            $newOwner,
176
            $this->id,
177
            $effectiveDate
178
         );
179
         $dbConnection->doSQL( $query );
180
      } // changeOwner
181
 
182
      /**
183
       * Function to change the parent of the current record
184
       * 
185
       * Mainly used by calling programs to change a parent programmatically
186
       * instead of trying to push through something else.
187
       * 
188
       * @parameter int $newParent The index (parent_id) to be used
189
       * @parameter string $effectiveDate Date in YYYYMMDD format. If null, uses now()
190
       */
191
      public function changeParent( $newParent, $effectiveDate = null ) {
192
         global $dbConnection;
193
 
194
         $effectiveDate = $effectiveDate ? "'$effectiveDate'" : 'now()';
195
         $query = sprintf( 
196
            'update %s set removed = %s where removed is null',
197
            $self::$dbStructure['table']['fields']['parent']['linkageTable'],
198
            $effectiveDate
199
         );
200
         $dbConnection->doSQL( $query );
201
         $query = sprintf(
202
            'insert into %s ( %s, %s, %s ) values (%s, %s, %s)',
203
            $self::$dbStructure['table']['fields']['parent']['linkageTable'],
204
            $self::$dbStructure['table']['fields']['parent']['foreignColumn'],
205
            $self::$dbStructure['table']['fields']['parent']['linkageColumn'],
206
            $self::$dbStructure['table']['fields']['parent']['addedField'],
207
            $newParent,
208
            $this->id,
209
            $effectiveDate
210
         );
211
         $dbConnection->doSQL( $query );
212
      } // changeParent
213
 
59 rodolico 214
   } // class Device
53 rodolico 215
?>