/[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.5 - (hide annotations)
Thu Dec 12 21:34:32 2002 UTC (21 years, 8 months ago) by joko
Branch: MAIN
Changes since 1.4: +13 -5 lines
+ fix in 'function update': invalidate data only if it's not for caching purposes

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

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