/[cvs]/nfo/php/libs/org.netfrag.flib/Tracker/User.php
ViewVC logotype

Annotation of /nfo/php/libs/org.netfrag.flib/Tracker/User.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations)
Wed Dec 18 22:46:06 2002 UTC (21 years, 8 months ago) by jonen
Branch: MAIN
Changes since 1.5: +12 -5 lines
+ added function 'getUserGuid()'
   (returns user's 'guid' read from database at function 'login()'  (now))
+ function '_loadData()' loads user remote now via 'getUserGuid()'

1 joko 1.1 <?
2     // -----------------------------------------------------------------------------
3 jonen 1.6 // $Id: User.php,v 1.5 2002/12/12 21:34:32 joko Exp $
4 joko 1.1 // -----------------------------------------------------------------------------
5 joko 1.2 // $Log: User.php,v $
6 jonen 1.6 // Revision 1.5 2002/12/12 21:34:32 joko
7     // + fix in 'function update': invalidate data only if it's not for caching purposes
8     //
9 joko 1.5 // Revision 1.4 2002/12/06 04:10:28 joko
10     // + replaced 'xyzCache' through 'xyzProxy'
11     //
12 joko 1.4 // Revision 1.3 2002/12/04 07:42:54 jonen
13     // + changes according to backend schema change
14     //
15 jonen 1.3 // Revision 1.2 2002/12/03 16:47:22 joko
16     // - function preLogout()
17     // + function preLogout($autologout = 0)
18     // + function hadTimeout()
19     //
20 joko 1.2 // Revision 1.1 2002/11/12 05:42:31 joko
21     // + initial checkin
22     //
23 joko 1.1 // Revision 1.7 2002/10/29 19:09:53 cvsjoko
24     // + function getLastLogin
25     // + function getUserId
26     //
27     // Revision 1.6 2002/10/25 11:18:10 cvsmax
28     // - removed old functions ('logout', 'create',...)
29     // + add function preLogout() # save user session and unset (session) state
30     //
31     // Revision 1.5 2002/10/22 09:47:48 cvsmax
32     // + add new
33     // - function create() # create & save new user-object in session
34     // - function _create($attr) # create & save new user-object in backend
35     //
36     // - purged some very old functions
37     //
38     // Revision 1.4 2002/10/17 03:12:17 cvsmax
39     // -(+) cleaned code from old structure
40     // + function getPostVar($fieldname)
41     //
42     // Revision 1.3 2002/10/10 02:41:57 cvsjoko
43     // + fixed typo
44     //
45     // Revision 1.2 2002/10/10 02:34:33 cvsjoko
46     // + new level of data-caching (session and persistant)
47     // + function _save()
48     // + function save()
49     // + handling (storing/caching) of POSTed data
50     // + function getPostVars()
51     // + function setPostVars()
52     // + handy utils
53     // + function doDataReady() cares for ready data to continue working
54     // + function refresh() clears underlying data container and makes data "unready"
55     //
56     // Revision 1.1 2002/10/09 00:40:13 cvsjoko
57     // + new
58     //
59     //
60     // -----------------------------------------------------------------------------
61    
62     class User {
63    
64     var $state;
65     var $meta;
66    
67     var $pObject;
68     var $data;
69    
70    
71     function User() {
72    
73     // attention:
74     // this code is only run when your session is _really_ fresh
75     if (session_register_safe('userstate')) {
76     }
77    
78     $this->_loadState();
79     $this->meta[logontoken] = 'k&%g2';
80    
81     // print dumpVar($_SESSION);
82    
83     }
84    
85     function _loadState() {
86     global $userstate;
87     $this->state = $userstate;
88     }
89     function _saveState() {
90     global $userstate;
91     $userstate = $this->state;
92     }
93    
94    
95     function _loadData() {
96 jonen 1.6 $this->pObject = new ProxyObject($this->getUserGuid(), array( remote => 1, classname => "NetPerson", guid => 1) );
97     if ($this->getUserGuid()) {
98 joko 1.1 $this->data = $this->pObject->getAttributes();
99     }
100     $this->meta[data_ready] = 1;
101     }
102    
103     function _saveData($newRawData) {
104    
105     foreach ($newRawData as $key => $val) {
106     //print "$key => $val<br>";
107     $this->set($key, $val);
108     }
109    
110     $this->_save("cache");
111    
112 joko 1.4 //$this->pObject->flushProxy(); // done in "pObject->save"
113 joko 1.1
114     }
115    
116     function _save($type = '') {
117 joko 1.5 //print Dumper($this->data);
118 joko 1.1 $this->pObject->save($this->data, $type);
119 joko 1.5 // invalidate data only if it's not for caching purposes
120     if ($type != 'cache') {
121     $this->meta[data_ready] = 0;
122     }
123 joko 1.1 }
124    
125     function save() {
126     $this->_doDataReady();
127     $this->_save("commit");
128     }
129    
130     function create() {
131     $this->_save();
132     $attr = $this->pObject->getAttributes();
133     //print DumpVar($attr);
134     $this->_create($attr);
135     }
136    
137     function _create($result) {
138     //print "saving to backend: " . dumpVar($result) . "<br>";
139     $response = $this->pObject->backend->send('createUser', array('data' => $result) );
140     $objectId = $response[oid];
141     //$this->_init($objectId);
142     }
143    
144     function _getHKR($key) {
145     $attr_arr = split('\.', $key);
146     $attr_hkr = '["' . join('"]["', $attr_arr) . '"]';
147     return $attr_hkr;
148     }
149    
150     function get($attr) {
151     $this->_doDataReady();
152     $hkr = $this->_getHKR($attr);
153     $evalstr = 'return $this->data' . $hkr . ';';
154     $val = eval($evalstr);
155     return $val;
156     }
157     function set($attr, $val) {
158     $this->_doDataReady();
159     $hkr = $this->_getHKR($attr);
160     $evalstr = '$this->data' . $hkr . ' = \'' . $val . '\';';
161     eval($evalstr);
162     }
163    
164     function isLoggedOn() {
165     if ($this->state[id] && $this->state[status] == $this->meta[logontoken]) {
166     return 1;
167     }
168     }
169    
170    
171     //===== function userlogin =========================
172     function login($user,$passwd) {
173     connectdb();
174     //$sql = "SELECT * FROM td_users WHERE uname='$user'";
175 jonen 1.6 $sql = "SELECT user_oid, guid, uname, pass FROM td_users WHERE uname='$user'";
176 joko 1.1 if ($res=send_sql($sql)) {
177     $row = mysql_fetch_array($res,MYSQL_ASSOC);
178     if (!is_array($row)) { return 0; }
179     }
180     if ($row[pass] == $passwd) {
181     //return $uservars_db;
182     // store 1st priority user-data to state
183     $this->state[id] = $row[user_oid];
184 jonen 1.6 $this->state[guid] = $row[guid];
185 joko 1.1 $this->state[status] = $this->meta[logontoken];
186     $this->_saveState();
187     $this->site->log( get_class($this) . "->login ok", LOG_DEBUG );
188     return 1;
189     } else {
190     return 0;
191     }
192     }
193    
194     function exists($string) {
195     connectdb();
196     $sql = "SELECT uname FROM td_users WHERE uname='$string'";
197     if ($res=send_sql($sql)) {
198     $row = mysql_fetch_array($res,MYSQL_ASSOC);
199    
200     if (is_array($row)) {
201     return 1;
202     }
203     }
204    
205     }
206    
207    
208 joko 1.5 function update($vars) {
209     $this->setPostVars($vars);
210     //print Dumper($vars);
211     $data = $this->_transformInputData($vars);
212 joko 1.1 $this->_saveData($data);
213     }
214    
215     function _transformInputData(&$uservars) {
216     global $def_mapping;
217     $mapping_uservars2data = array_flip($def_mapping[data2uservars]);
218     foreach ($uservars as $key => $val) {
219     $key_target = $mapping_uservars2data[$key];
220     //print "$key => $key_target: $val<br>";
221     $target[$key_target] = $val;
222     }
223     return $target;
224     }
225    
226     function logout() {
227    
228     global $site;
229    
230     // get information about user from site
231 jonen 1.6 $userid = $this->getUserId();
232 joko 1.1
233     $this->site->log( get_class($this) . "->logout: userid $userid", LOG_DEBUG );
234    
235     // get information about session from php
236     $session_id = session_id();
237     $session_name = session_name();
238    
239     // session-sqldb related
240     $date = date('Y-m-d H:i:s', time());
241     $session_e = $site->session->exists($session_id);
242     $sql = "UPDATE f_map_user_session SET date_logged_out='$date' WHERE session_uid='$session_e[session_uid]' AND user_uid='$userid'";
243     $res = send_sql($sql);
244    
245     // destroy user's session at server-side
246     $session_name = session_name();
247     session_destroy();
248    
249     // overwrite session-variables - to be sure ;)
250     $_SESSION = array();
251     unset($_COOKIE[$session_name]);
252    
253     }
254    
255 joko 1.2 function preLogout($autologout = 0) {
256 joko 1.1 global $site;
257     $this->state[status] = '';
258 joko 1.2 $this->state[autologout] = $autologout;
259 joko 1.1 $this->_saveState();
260     }
261    
262     function getAccountSum() {
263     // store additional user-data to state
264     if (!$this->state[accountSum]) {
265 jonen 1.3 $this->state[accountSum] = $this->get("account.amount");
266 joko 1.1 $this->_saveState();
267     }
268     return $this->state[accountSum];
269     }
270    
271     function getAccountCurrency() {
272     // store additional user-data to state
273     if (!$this->state[accountCurrency]) {
274 jonen 1.3 $this->state[accountCurrency] = $this->get("account.currency");
275 joko 1.1 $this->_saveState();
276     }
277     //print "state: " . $this->get("financeInfo.currency") . "<br>";
278     return $this->state[accountCurrency];
279     }
280    
281     function refresh() {
282     if ($this->pObject) {$this->pObject->flushState();}
283     $this->meta[data_ready] = 0;
284     }
285    
286     function _doDataReady() {
287     if (!$this->meta[data_ready]) { $this->_loadData(); }
288     }
289    
290     function getLastLogin() {
291     $userid = $this->getUserId();
292     connectdb();
293     $sql = "SELECT * FROM f_map_user_session WHERE user_uid='$userid' AND last='1'";
294     $res = send_sql($sql);
295     while($row = mysql_fetch_array($res,MYSQL_BOTH)) {
296     if($row[date_logged_out]=="0000-00-00 00:00:00") {
297     $date = $row[date_logged_in];
298     } else {
299     $date = $row[date_logged_out];
300     }
301     $lastLogin = strftime("%d %b %Y - %H:%M",strtotime($date));
302     }
303     return $lastLogin;
304     }
305    
306     function getUserId() {
307     return $this->state[id];
308     }
309    
310 jonen 1.6 function getUserGuid() {
311     return $this->state[guid];
312     }
313 joko 1.1
314     function getPostVars() {
315     return $this->state[postvars];
316     }
317    
318     function setPostVars($postvars) {
319     $this->state[postvars] = $postvars;
320     $this->_saveState();
321     }
322    
323     function getPostVar($var) {
324     return $this->state[postvars][$var];
325     }
326    
327 joko 1.2 function hadTimeout() {
328     if ($this->state[autologout]) { return 1; }
329     }
330 joko 1.1
331     }
332    
333     ?>

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed