final move of files
[web.mtrack] / MTrack / DataObjects / Userinfo.php
1 <?php 
2 /**
3  * userinfo table
4  * - key is actually the user name ... - yes i know.. borked eh..
5  * 
6  * 
7  */
8 require_once 'MTrack/DB.php';
9
10 class MTrack_DataObjects_UserInfo
11 {
12     var $fullname;
13     var $email;
14     var $userid = 0;
15     var $timezone;
16     var $active;
17     var $sshkeys;
18     
19     
20     static function findString($name)
21     {
22         static $canon_map = null;
23         
24         // used to be a get everything search.. then pregmatch it all..
25         // but that sounds just dumb...
26         if (preg_match('/<([a-z0-9_.+=-]+@[a-z0-9.-]+)>/', $name, $M)) {
27             $name = $M[1];
28         }
29         
30         // things we can look for..
31         // userid ?
32         // email.. (userinfo)
33
34         $q = MTrackDB::q(' select userid from userinfo where userid = ? OR email= ?',$name,$name);
35         $ar = $q->fetchAll();
36         if (count($ar)) {
37             return MTrack_DataObjects_UserInfo::get($ar[0]['userid']);
38         }
39         // alias
40         $q = MTrackDB::q(' select userid from useraliases where alias = ?',$name);
41         $ar = $q->fetchAll(PDO::FETCH_ASSOC);
42         if ($ar) { //? empty array?
43             return MTrack_DataObjects_UserInfo::get($ar[0]['userid']);
44         }
45         return false;
46     }
47      
48     static function get($uid)
49     {
50         if ($uid == 'anonymous') {
51             $ret = new Mtrack_DataObjects_UserInfo();
52             $ret->userid = 'anonymous';
53             return $ret;
54         }
55         $q = MTrackDB::q( 'select * from userinfo where userid = ?', $uid);
56         
57         foreach ($q->fetchAll(PDO::FETCH_ASSOC)  as $row) {
58             return self::init($row);
59         }
60         throw new Exception("User does not exist");
61     }
62     
63     static function init($ar)
64     {
65         $r = new Mtrack_DataObjects_UserInfo;
66         foreach($ar as $k=>$v) {
67             $r->$k = $v;
68         }
69         return $r;
70     }
71     static function selectList($ret)
72     {
73         $q = MTrackDB::q( 'select userid, fullname, active from userinfo order by active DESC, userid ASC' );
74         // inactive are show after active...
75         foreach ($q->fetchAll() as $row) {
76             
77             $disp = strlen($row[1]) ? "$row[0] - $row[1]" : $row[0];
78             $disp .= $row[2] ? '' : ' (inactive)';
79         
80             $ret[$row[0]] = $disp;
81
82         }
83         return $ret;
84         
85     }
86
87     /** 
88      * setup date_default_timezone_set();    
89      */
90     function setCurrentTimeZone()
91     {
92         if (!empty($this->timezone)) {
93             date_default_timezone_set($this->timezone);
94             return;
95         }
96         $ff = HTML_FlexyFramework::get();
97         if (isset($ff->MTrack['timezone'])) {
98             date_default_timezone_set($ff->MTrack['timezone']);
99         }
100         
101     }
102  
103       
104 }