~ocsinventory-server/ocsinventory-server/stable-1.03

« back to all changes in this revision

Viewing changes to ocsreports/preferences.php

  • Committer: serpent
  • Date: 2009-09-03 09:32:02 UTC
  • Revision ID: serpent@snakebase2-20090903093202-1ryusexrrvs9zqow
Removed ocsreports from ocsinventory-server project

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<?php 
2
 
error_reporting(E_ALL & ~E_NOTICE);
3
 
@session_start();
4
 
require_once('require/aide_developpement.php');
5
 
require_once('require/function_table_html.php');
6
 
require_once('fichierConf.class.php');
7
 
//print_r($_SESSION);
8
 
include('dbconfig.inc.php');
9
 
//echo "toto";
10
 
require_once('var.php');
11
 
//print_r($_SESSION);
12
 
//$_SESSION["SERVER_READ"]=$_SESSION["SERVEUR_SQL"];
13
 
//$_SESSION["SERVER_WRITE"]=$_SESSION["SERVER_READ"];
14
 
 
15
 
if( ! isset($_SESSION["debug"]) ) {
16
 
        $_SESSION["debug"] = 0 ;
17
 
}
18
 
 
19
 
if( isset( $_GET["cache"] ) ) {
20
 
        $_SESSION["usecache"] = $_GET["cache"];
21
 
}
22
 
else if( ! isset($_SESSION["usecache"]) ) {
23
 
        $_SESSION["usecache"] = USE_CACHE ;
24
 
}
25
 
 
26
 
 
27
 
//GESTION LOGS
28
 
if ($_SESSION['LOG_GUI'] == 1){
29
 
        define("DB_LOG_NAME", DB_NAME);
30
 
//      if ($_SESSION['LOG_DIR'] == "")
31
 
//              define("LOG_FILE", $_SERVER["DOCUMENT_ROOT"]."/oscreport/log.csv");
32
 
//      else
33
 
                define("LOG_FILE", $_SESSION['LOG_DIR']."/log.csv");
34
 
        $logHandler = @fopen( LOG_FILE, "a");
35
 
}
36
 
//END GESTION LOGS
37
 
 
38
 
if( ! function_exists ( "utf8_decode" )) {
39
 
        function utf8_decode($st) {
40
 
                return $st;
41
 
        }
42
 
}
43
 
 
44
 
dbconnect();
45
 
 
46
 
if(!isset($_SESSION["rangCookie"])) $_SESSION["rangCookie"] = 0;
47
 
 
48
 
function addComputersToGroup( $gName, $ids ) {
49
 
        
50
 
        $reqIdGroup = "SELECT id FROM hardware WHERE name='$gName'";
51
 
        $resIdGroup = mysql_query( $reqIdGroup, $_SESSION["readServer"] );
52
 
        $valIdGroup = mysql_fetch_array( $resIdGroup );
53
 
        if( lock( $valIdGroup["id"] ) ) {
54
 
                $nb_res=0;
55
 
                foreach( $ids as $key=>$val ) {
56
 
                        if( strpos ( $key, "checkmass" ) !== false ) {
57
 
                                $idsList[] = $val;
58
 
                                $resDelete = "DELETE FROM groups_cache WHERE hardware_id=$val AND group_id=".$valIdGroup["id"];
59
 
                                @mysql_query( $resDelete, $_SESSION["writeServer"] );
60
 
                                
61
 
                                $reqInsert = "INSERT INTO groups_cache(hardware_id, group_id, static) VALUES ($val, ".$valIdGroup["id"].", 1)";
62
 
                                $resInsert = mysql_query( $reqInsert, $_SESSION["writeServer"] );
63
 
                                $nb_res++;
64
 
                        }
65
 
                }
66
 
                unlock( $valIdGroup["id"] );
67
 
                return $nb_res;
68
 
        }
69
 
        else
70
 
                errlock();
71
 
}
72
 
 
73
 
/** 
74
 
* Group creating function
75
 
*/
76
 
function createGroup( $name,$description="", $staticOnly=false, $alreadyExists = false ) {
77
 
        global $_GET, $l;       
78
 
        //Creating hardware
79
 
        $deviceid = "_SYSTEMGROUP_";
80
 
        
81
 
        //does $name group already exists
82
 
        $reqGetId = "SELECT id FROM hardware WHERE name='".$name."'";
83
 
        $resGetId = mysql_query( $reqGetId, $_SESSION["readServer"]);
84
 
        if( $valGetId = mysql_fetch_array( $resGetId ) )
85
 
                $groupAlreadyInDb = true;
86
 
        else
87
 
                $groupAlreadyInDb = false;
88
 
                
89
 
        if( $alreadyExists && $groupAlreadyInDb ) {             
90
 
                $name_id_supp=deleteDid( $valGetId["id"], true, true, true );
91
 
                addLog("DELETE",$valGetId["id"].' => '.$name_id_supp);
92
 
        }
93
 
        else if( $groupAlreadyInDb ) {
94
 
                echo "<center><font class='warn'>".$l->g(621)."</font></center>";
95
 
                return false;
96
 
        }  
97
 
        
98
 
        if( ! $staticOnly )
99
 
                $request = "SELECT DISTINCT h.id " . addslashes( $_SESSION["groupReq"] );
100
 
        else
101
 
                $request = "";
102
 
                
103
 
        mysql_query( "INSERT INTO hardware(deviceid,name,description,lastdate) VALUES( '$deviceid' , '".$name."', '".$description."', NOW() )", $_SESSION["writeServer"] ) 
104
 
        or die( mysql_error($_SESSION["writeServer"]));
105
 
         
106
 
        //Getting hardware id
107
 
        $insertId = mysql_insert_id( $_SESSION["writeServer"] );
108
 
        
109
 
        //Creating group
110
 
        mysql_query( "INSERT INTO groups(hardware_id, request, create_time) VALUES ( $insertId, '$request', UNIX_TIMESTAMP() )", $_SESSION["writeServer"] ) 
111
 
        or die( mysql_error($_SESSION["writeServer"]) );
112
 
 
113
 
        //Generating cache
114
 
        if( ! $staticOnly && lock($insertId) ) {        
115
 
                $reqCache = "INSERT IGNORE INTO groups_cache(hardware_id, group_id, static) SELECT DISTINCT h.id, $insertId, 0 ".$_SESSION["groupReq"];
116
 
                $cachedRes = mysql_query( $reqCache , $_SESSION["writeServer"] )
117
 
                or die( mysql_error($_SESSION["writeServer"]) );
118
 
                $cached = mysql_affected_rows($_SESSION["writeServer"]);        
119
 
                unlock($insertId);
120
 
        }
121
 
        else if( ! $staticOnly ) {
122
 
                return false;
123
 
        }
124
 
 
125
 
        echo "<br><center>".$l->g(607)." <b>".stripslashes($name)."</b> ".(!$alreadyExists?$l->g(608):$l->g(609))." ".(isset($cached)?$l->g(622).":".$cached:"")."<br>";
126
 
        return true;
127
 
}
128
 
 
129
 
function dbconnect() {
130
 
        $db = DB_NAME;
131
 
        //echo $db;
132
 
        //echo $_SESSION["SERVER_READ"];
133
 
        $link=@mysql_connect($_SESSION["SERVER_READ"],$_SESSION["COMPTE_BASE"],$_SESSION["PSWD_BASE"]);
134
 
        if(!$link) {
135
 
                echo "<br><center><font color=red><b>ERROR: MySql connection problem<br>".mysql_error()."</b></font></center>";
136
 
                die();
137
 
        }
138
 
        if( ! mysql_select_db($db,$link)) {
139
 
                require('install.php');
140
 
                die();
141
 
        }
142
 
                
143
 
        $link2=@mysql_connect($_SESSION["SERVER_WRITE"],$_SESSION["COMPTE_BASE"],$_SESSION["PSWD_BASE"]);
144
 
        if(!$link2) {
145
 
                echo "<br><center><font color=red><b>ERROR: MySql connection problem<br>".mysql_error($link2)."</b></font></center>";
146
 
                die();
147
 
        }
148
 
 
149
 
        if( ! @mysql_select_db($db,$link2)) {
150
 
                require('install.php');
151
 
                die();
152
 
        }
153
 
        
154
 
        $_SESSION["writeServer"] = $link2;      
155
 
        $_SESSION["readServer"] = $link;
156
 
        return $link2;
157
 
}
158
 
 
159
 
 
160
 
 
161
 
function getCount( $req ) {
162
 
        $ech = $_SESSION["debug"];
163
 
        //IF nor accountinfo and bios are needed, don't join them in count query.
164
 
        if( strpos(" ".$req->where , " a.")===FALSE && strpos(" ".$req->where , " b.")===FALSE&&
165
 
                strpos(" ".$req->where , " A.")===FALSE && strpos(" ".$req->where , " B.")===FALSE ) {
166
 
                $newFrom = str_replace("hardware h LEFT JOIN accountinfo a ON a.hardware_id=h.id LEFT JOIN bios b ON b.hardware_id=h.id", "hardware h ",$req->from );
167
 
        }
168
 
        else
169
 
                $newFrom = $req->from;
170
 
 
171
 
        $reqCount = "SELECT count(distinct ".$req->countId.") AS cpt FROM ".$newFrom.($req->fromPrelim?",":"").$req->fromPrelim;
172
 
        if( $req->where )
173
 
                $reqCount .= " WHERE ".$req->where;
174
 
                
175
 
        if($ech) echo "<br><font color='red'><b>$reqCount</b></font><br><br>";
176
 
        $resCount = mysql_query($reqCount, $_SESSION["readServer"]) or die(mysql_error($_SESSION["readServer"]));
177
 
        $valCount = mysql_fetch_array($resCount);
178
 
        
179
 
        return $valCount["cpt"];
180
 
}
181
 
 
182
 
function getPrelim(  $req, $limit=NULL ) {
183
 
        $ech = $_SESSION["debug"];
184
 
        $rac = "LEFT JOIN accountinfo a ON a.hardware_id=h.id";
185
 
        $selectReg = "";
186
 
        //      $selectFin = $req->getSelect();
187
 
        //$fromFin = $req->from;
188
 
        $cpt = 1;
189
 
        /*if( is_array($_SESSION["currentRegistry"]) )
190
 
                foreach( $_SESSION["currentRegistry"] as $regist ) {
191
 
                        $selectReg .= ", regAff{$cpt}.regvalue AS \"$regist\"";
192
 
                        $fromReg.= "LEFT JOIN registry regAff{$cpt} ON regAff{$cpt}.hardware_id=h.id";
193
 
                        if( $cpt > 1 )
194
 
                                $whereReg .= " AND ";
195
 
                        $whereReg .= "regAff{$cpt}.name='".$regist;             
196
 
                        $cpt ++;
197
 
                }*/     
198
 
        
199
 
        $selPrelim = $req->getSelectPrelim();
200
 
        $fromPrelim = $req->from;       
201
 
        
202
 
        $reqPrelim = "SELECT $selPrelim FROM ".$fromPrelim.($req->fromPrelim?",":"").$req->fromPrelim;
203
 
        if( $req->where ) $reqPrelim .= " WHERE ".$req->where; 
204
 
        if( $req->group ) $reqPrelim .= " GROUP BY ".$req->group;
205
 
        
206
 
        // bidouille
207
 
        if( strstr( $req->order, "ipaddr" ) ) {
208
 
                if( strstr( $req->order, "DESC" ) ) {
209
 
                        $order = "inet_aton(h.ipaddr) DESC";
210
 
                }
211
 
                else {
212
 
                        $order = "inet_aton(h.ipaddr) ASC";
213
 
                }
214
 
        }
215
 
        else
216
 
                $order = $req->order;
217
 
                
218
 
        if( $req->order ) $reqPrelim .= " ORDER BY ".$order;
219
 
        
220
 
        
221
 
        if( $limit ) $reqPrelim .= " LIMIT ".$limit;
222
 
        
223
 
        if($ech) echo "<br><font color='green'><b>$reqPrelim</b></font><br><br>";
224
 
        flush();
225
 
        return $reqPrelim;
226
 
}
227
 
 
228
 
function getQuery( $req, $limit ) {
229
 
        
230
 
        $ech = $_SESSION["debug"];
231
 
        $resPrelim = mysql_query( getPrelim( $req, $limit ) , $_SESSION["readServer"]);
232
 
        
233
 
        $selFin = $req->getSelect();
234
 
        $fromFin = $req->from ; 
235
 
        
236
 
        $toExec = "SELECT ".$selFin." FROM ".$fromFin;
237
 
        $prem = true;
238
 
        
239
 
        while( $valPrelim = mysql_fetch_array($resPrelim) ) {
240
 
                if( !$prem) $lesIn .= ",";
241
 
 
242
 
                $lesIn .= "'".addslashes($valPrelim[$req->linkId])."'";
243
 
                $prem = false;
244
 
        }
245
 
        
246
 
        if( !$prem ) {
247
 
                $toExec .= " WHERE ".$req->whereId." IN($lesIn) ";      
248
 
                if( $req->selFinal )
249
 
                        $toExec .= $req->selFinal;
250
 
        }
251
 
        else
252
 
                $toExec .= " WHERE 1=0";
253
 
        
254
 
        if( $req->group ) $toExec .= " GROUP BY ".$req->group;
255
 
        // bidouille
256
 
        if( strstr( $req->order, "ipaddr" ) ) {
257
 
                if( strstr( $req->order, "DESC" ) ) {
258
 
                        $order = "inet_aton(h.ipaddr) DESC";
259
 
                }
260
 
                else {
261
 
                        $order = "inet_aton(h.ipaddr) ASC";
262
 
                }
263
 
        }
264
 
        else
265
 
                $order = $req->order;
266
 
                
267
 
        if( $req->order ) $toExec .= " ORDER BY ".$order;
268
 
        
269
 
        if($ech) echo "<br><font color='blue'><b>$toExec</b></font><br><br>";
270
 
        flush();
271
 
        return $toExec;
272
 
}
273
 
 
274
 
function printEnTete($ent) {
275
 
        echo "<br><table border=1 class= \"Fenetre\" WIDTH = '62%' ALIGN = 'Center' CELLPADDING='5'>
276
 
        <th height=40px class=\"Fenetre\" colspan=2><b>".$ent."</b></th></table>";
277
 
}
278
 
 
279
 
function dateOnClick($input, $checkOnClick=false) {
280
 
        global $l;
281
 
        $dateForm = $l->g(269) == "%m/%d/%Y" ? "MMDDYYYY" : "DDMMYYYY" ;
282
 
        if( $checkOnClick ) $cOn = ",'$checkOnClick'";
283
 
        $ret = "OnClick=\"javascript:NewCal('$input','$dateForm',false,24{$cOn});\"";
284
 
        return $ret;
285
 
}
286
 
 
287
 
function datePick($input, $checkOnClick=false) {
288
 
        global $l;
289
 
        $dateForm = $l->g(269) == "%m/%d/%Y" ? "MMDDYYYY" : "DDMMYYYY" ;
290
 
        if( $checkOnClick ) $cOn = ",'$checkOnClick'";
291
 
        $ret = "<a href=\"javascript:NewCal('$input','$dateForm',false,24{$cOn});\">";
292
 
        $ret .= "<img src=\"image/cal.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\"Pick a date\"></a>";
293
 
        return $ret;
294
 
}
295
 
 
296
 
function dateFromMysql($v) {
297
 
        global $l;
298
 
        
299
 
        if( $l->g(269) == "%m/%d/%Y" )
300
 
                $ret = sprintf("%02d/%02d/%04d", $v[5].$v[6], $v[8].$v[9], $v);
301
 
        else    
302
 
                $ret = sprintf("%02d/%02d/%04d", $v[8].$v[9], $v[5].$v[6], $v);
303
 
        return $ret;
304
 
}
305
 
 
306
 
function dateTimeFromMysql($v) {
307
 
        global $l;
308
 
        
309
 
        if( $l->g(269) == "%m/%d/%Y" )
310
 
                $ret = sprintf("%02d/%02d/%04d %02d:%02d:%02d", $v[5].$v[6], $v[8].$v[9], $v, $v[11].$v[12],$v[14].$v[15],$v[17].$v[18]);
311
 
        else    
312
 
                $ret = sprintf("%02d/%02d/%04d %02d:%02d:%02d", $v[8].$v[9], $v[5].$v[6], $v, $v[11].$v[12],$v[14].$v[15],$v[17].$v[18]);
313
 
        return $ret;
314
 
}
315
 
 
316
 
function dateToMysql($date_cible) {
317
 
 
318
 
        global $l;
319
 
        if(!isset($date_cible)) return "";
320
 
        
321
 
        $dateAr = explode("/", $date_cible);
322
 
        
323
 
        if( $l->g(269) == "%m/%d/%Y" ) {
324
 
                $jour  = $dateAr[1];
325
 
                $mois  = $dateAr[0];
326
 
        }
327
 
        else {
328
 
                $jour  = $dateAr[0];
329
 
                $mois  = $dateAr[1];
330
 
        }
331
 
 
332
 
        $annee = $dateAr[2];
333
 
        return sprintf("%04d-%02d-%02d", $annee, $mois, $jour); 
334
 
}
335
 
 
336
 
function addLog( $type, $value="" ) {
337
 
        global $logHandler;
338
 
        if ($_SESSION['LOG_GUI'] == 1){
339
 
                $dte = getDate();
340
 
                $date = sprintf("%02d/%02d/%04d %02d:%02d:%02d", $dte["mday"], $dte["mon"], $dte["year"], $dte["hours"], $dte["minutes"], $dte["seconds"]); 
341
 
                @fwrite($logHandler, $_SESSION["loggeduser"].";$date;".DB_LOG_NAME.";$type;$value;\n");
342
 
        }
343
 
}
344
 
 
345
 
 
346
 
function getBrowser() {
347
 
        $bro = $_SERVER['HTTP_USER_AGENT'];
348
 
        if( strpos ( $bro, "MSIE") === false ) {
349
 
                return "MOZ";
350
 
        }
351
 
        return "IE";
352
 
}
353
 
 
354
 
function getBrowserLang() {
355
 
        $bro = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
356
 
        if (strpos( $bro,"de") === false) {
357
 
           // Not german
358
 
           if (strpos( $bro,"es") === false) {
359
 
               // Not spanish
360
 
               if (strpos( $bro,"fr") === false) {
361
 
                   // Not french
362
 
                   if (strpos( $bro,"it") === false) {
363
 
                       // Not italian
364
 
                       if (strpos( $bro,"pt-br") === false) {
365
 
                           // Not brazilian portugueuse
366
 
                           if (strpos( $bro,"pt") === false) {
367
 
                               // Not portugueuse
368
 
                               if (strpos( $bro,"pl") === false) {
369
 
                                  // Not polish
370
 
                                  // Use english default language
371
 
                                   return "english";
372
 
                               }
373
 
                               else
374
 
                                  // Polish
375
 
                                  return "polish";
376
 
                           }
377
 
                           else
378
 
                               // Portuguese
379
 
                                 return "portuguese";
380
 
                       }
381
 
                       else
382
 
                           // Brazilian portuguese
383
 
                             return "brazilian_portuguese";
384
 
                   }
385
 
                   else
386
 
                       // Italian
387
 
                         return "italian";
388
 
               }
389
 
               else
390
 
                   // French
391
 
                     return "french";
392
 
           }
393
 
           else
394
 
               // Spanish
395
 
               return "spanish";
396
 
       }
397
 
       else
398
 
           // German
399
 
            return "german";
400
 
}
401
 
 
402
 
 
403
 
 
404
 
function printNavigation( $lesGets, $numPages) {
405
 
                                
406
 
                $prefG = "<a href=index.php?".stripslashes($lesGets)."&page=";
407
 
                echo "<p align='center'>";
408
 
                if( $numPages > 1 ) {                   
409
 
                        if( $_SESSION["pageCur"] == 1) {                                
410
 
                                echo "&nbsp;&nbsp;";//voir gris�
411
 
                                echo "&nbsp;&nbsp;1&nbsp;..";                                                   
412
 
                        } else {
413
 
                                echo "&nbsp;&nbsp;{$prefG}-1><img src='image/prec24.png'></a>";
414
 
                                echo "&nbsp;{$prefG}1>1</a>&nbsp;..";                   
415
 
                        }
416
 
                        
417
 
                        if( $_SESSION["pageCur"] && $_SESSION["pageCur"]>1 && $_SESSION["pageCur"]!=$numPages ) {
418
 
                                echo  "&nbsp;".$_SESSION["pageCur"]."&nbsp;";
419
 
                        }
420
 
                        
421
 
                        if( $_SESSION["pageCur"] >= $numPages) {
422
 
                                echo "..&nbsp;&nbsp;$numPages&nbsp;";
423
 
                                //echo "<img src='image/proch24.png'>&nbsp;&nbsp;"; voir gris�
424
 
                        } else {
425
 
                                echo "..&nbsp;{$prefG}$numPages>$numPages</a>&nbsp;";
426
 
                                echo "{$prefG}-2><img src='image/proch24.png'></a>&nbsp;&nbsp;";
427
 
                        }
428
 
                }
429
 
                echo "</p><br>";
430
 
}
431
 
 
432
 
function deleteNet($id) {
433
 
        mysql_query("DELETE FROM network_devices WHERE macaddr='$id';", $_SESSION["writeServer"]);
434
 
}
435
 
 
436
 
/**
437
 
  * Deleting function
438
 
  * @param id Hardware identifier to be deleted
439
 
  * @param checkLock Tells wether or not the locking system must be used (default true)
440
 
  * @param traceDel Tells wether or not the deleted entities must be inserted in deleted_equiv for tracking purpose (default true)
441
 
  */
442
 
function deleteDid($id, $checkLock = true, $traceDel = true, $silent=false
443
 
) {
444
 
        global $l;
445
 
        //If lock is not user OR it is used and available
446
 
        if( ! $checkLock || lock($id) ) {       
447
 
                $resId = mysql_query("SELECT deviceid,name,IPADDR,OSNAME FROM hardware WHERE id='$id'",$_SESSION["readServer"]) or die(mysql_error());
448
 
                $valId = mysql_fetch_array($resId);
449
 
                $idHard = $id;
450
 
                $did = $valId["deviceid"];
451
 
                if( $did ) {
452
 
                                        
453
 
                        //Deleting a network device
454
 
                        if( strpos ( $did, "NETWORK_DEVICE-" ) === false ) {
455
 
                                $resNetm = @mysql_query("SELECT macaddr FROM networks WHERE hardware_id=$idHard", $_SESSION["readServer"]) or die(mysql_error());
456
 
                                while( $valNetm = mysql_fetch_array($resNetm)) {
457
 
                                        @mysql_query("DELETE FROM netmap WHERE mac='".$valNetm["macaddr"]."';", $_SESSION["writeServer"]) or die(mysql_error());
458
 
                                }               
459
 
                        }
460
 
                        //deleting a regular computer
461
 
                        if( $did != "_SYSTEMGROUP_" and $did != '_DOWNLOADGROUP_') {
462
 
                                $tables=Array("accesslog","accountinfo","bios","controllers","drives",
463
 
                                "inputs","memories","modems","monitors","networks","ports","printers","registry",
464
 
                                "slots","softwares","sounds","storages","videos","devices","download_history","download_servers");      
465
 
                        }
466
 
                        elseif($did == "_SYSTEMGROUP_"){//Deleting a group
467
 
                                $tables=Array("devices");
468
 
                                mysql_query("DELETE FROM groups WHERE hardware_id=$idHard", $_SESSION["writeServer"]) or die(mysql_error());
469
 
                                $resDelete = mysql_query("DELETE FROM groups_cache WHERE group_id=$idHard", $_SESSION["writeServer"]) or die(mysql_error());
470
 
                                $affectedComputers = mysql_affected_rows( $_SESSION["writeServer"] );
471
 
                        }
472
 
                        
473
 
                        if( !$silent )
474
 
                                echo "<center><font color=red><b>".$valId["name"]." ".$l->g(220)."</b></font></center>";
475
 
                        
476
 
                        foreach ($tables as $table) {
477
 
                                mysql_query("DELETE FROM $table WHERE hardware_id=$idHard;", $_SESSION["writeServer"]) or die(mysql_error());           
478
 
                        }
479
 
                        mysql_query("delete from download_enable where SERVER_ID=".$idHard, $_SESSION["writeServer"]) or die(mysql_error($_SESSION["writeServer"]));
480
 
                        
481
 
                        mysql_query("DELETE FROM hardware WHERE id=$idHard;", $_SESSION["writeServer"]) or die(mysql_error());
482
 
                        //Deleted computers tracking
483
 
                        if($traceDel && mysql_num_rows(mysql_query("SELECT IVALUE FROM config WHERE IVALUE>0 AND NAME='TRACE_DELETED'", $_SESSION["readServer"]))){
484
 
                                mysql_query("insert into deleted_equiv(DELETED,EQUIVALENT) values('$did',NULL)", $_SESSION["writeServer"]) or die(mysql_error());
485
 
                        }
486
 
                }
487
 
                //Using lock ? Unlock
488
 
                if( $checkLock ) 
489
 
                        unlock($id);
490
 
                return $valId["name"];
491
 
        }
492
 
        else
493
 
                errlock();
494
 
                
495
 
}
496
 
 
497
 
/**
498
 
  * Hardware locking function. Prevents the hardware to be altered by either the server or another administrator using the GUI
499
 
  * @param id Hardware identifier to be locked
500
 
  */
501
 
function lock($id) {
502
 
        //echo "<br><font color='red'><b>LOCK $id</b></font><br>";
503
 
        $reqClean = "DELETE FROM locks WHERE unix_timestamp(since)<(unix_timestamp(NOW())-3600)";
504
 
        $resClean = mysql_query($reqClean, $_SESSION["writeServer"]) or die(mysql_error());
505
 
        
506
 
        $reqLock = "INSERT INTO locks(hardware_id) VALUES ('$id')";
507
 
        if( $resLock = mysql_query($reqLock, $_SESSION["writeServer"]) or die(mysql_error()))
508
 
                return( mysql_affected_rows ( $_SESSION["writeServer"] ) == 1 );
509
 
        else return false;
510
 
}
511
 
 
512
 
/**
513
 
  * Hardware unlocking function
514
 
  * @param id Hardware identifier to be unlocked
515
 
  */
516
 
function unlock($id) {
517
 
        //echo "<br><font color='green'><b>UNLOCK $id</b></font><br>";
518
 
        $reqLock = "DELETE FROM locks WHERE hardware_id='$id'";
519
 
        $resLock = mysql_query($reqLock, $_SESSION["writeServer"]) or die(mysql_error());
520
 
        return( mysql_affected_rows ( $_SESSION["writeServer"] ) == 1 );
521
 
}
522
 
 
523
 
/**
524
 
  * Show an error message if the locking failed
525
 
  */
526
 
function errlock() {
527
 
        global $l;
528
 
        echo "<br><center><font color=red><b>".$l->g(376)."</b></font></center><br>";
529
 
}
530
 
 
531
 
/**
532
 
  * Includes the javascript datetime picker
533
 
  */
534
 
function incPicker() {
535
 
 
536
 
        global $l;
537
 
        echo "<script language=\"javascript\">
538
 
        var MonthName=[";
539
 
        
540
 
        for( $mois=527; $mois<538; $mois++ )
541
 
                echo "\"".$l->g($mois)."\",";
542
 
        echo "\"".$l->g(538)."\"";
543
 
        
544
 
        echo "];
545
 
        var WeekDayName=[";
546
 
        
547
 
        for( $jour=539; $jour<545; $jour++ )
548
 
                echo "\"".$l->g($jour)."\",";
549
 
        echo "\"".$l->g(545)."\"";      
550
 
        
551
 
        echo "];
552
 
        </script>       
553
 
                <script language=\"javascript\" type=\"text/javascript\" src=\"js/datetimepicker.js\">
554
 
        </script>";
555
 
}
556
 
 
557
 
/**
558
 
  * Loads the whole mac file in memory
559
 
  */
560
 
function loadMac() {
561
 
        if( $file=@fopen(MAC_FILE,"r") ) {                      
562
 
                while (!feof($file)) {                           
563
 
                        $line  = fgets($file, 4096);
564
 
                        if( preg_match("/^((?:[a-fA-F0-9]{2}-){2}[a-fA-F0-9]{2})\s+\(.+\)\s+(.+)\s*$/", $line, $result ) ) {
565
 
                                $_SESSION["mac"][strtoupper(str_replace("-",":",$result[1]))] = $result[2];
566
 
                        }                               
567
 
                }
568
 
                fclose($file);                  
569
 
        }
570
 
}
571
 
 
572
 
/**
573
 
  * Gets the manufacturer of a given network card
574
 
  * @param mac A mac adress
575
 
  * @return The manufacturer of the given mac
576
 
  */    
577
 
function getConstructor( $mac ) {       
578
 
        $beg = strtoupper(substr( $mac, 0, 8 ));
579
 
        return ( ucwords(strtolower( $_SESSION["mac"][ $beg ])) );
580
 
}
581
 
 
582
 
/**
583
 
  * Decodes all the text from utf8
584
 
  * @param txt Text to be decoded
585
 
  * @return Text decoded from UTF8 according to UTF8_DEGREE
586
 
  */
587
 
 
588
 
 
589
 
 
590
 
function getGluedIds( $reqSid ) {
591
 
        $idNotIn = getIds($reqSid);
592
 
        $idNotIn = @array_unique( $idNotIn );
593
 
        $gluedId = @implode( "','", $idNotIn );
594
 
        
595
 
        return $gluedId;
596
 
}
597
 
 
598
 
function getIds($reqSid) {
599
 
        $resSid = mysql_query( $reqSid, $_SESSION["readServer"] );
600
 
        while( $valSid = mysql_fetch_array($resSid) ) {
601
 
                $idNotIn[] = $valSid["hardware_id"];
602
 
        }
603
 
        return $idNotIn;
604
 
}
605
 
?>
 
 
b'\\ No newline at end of file'