7 //override to use old standard
8 //define('EWIKI_USERVARS_PAGENAME_PREFIX','UserDataPage_');
9 define('EWIKI_USERVARS_PAGENAME_PREFIX','system/user/');
11 $ewiki_plugins['uservars_store'][]="ewiki_uservars_pages_store";
12 $ewiki_plugins['uservars_retrieve'][]="ewiki_uservars_pages_retrieve";
13 $ewiki_plugins["login_handler"][]="ewiki_uservars_pages_retrieve";
15 $ewiki_plugins['uservars_get'][]="ewiki_uservars_pages_getvar";
16 $ewiki_plugins['uservars_set'][]="ewiki_uservars_pages_setvar";
17 $ewiki_plugins['uservars_getall'][]="ewiki_uservars_pages_getallvar";
18 $ewiki_plugins['uservars_clear'][]="ewiki_uservars_pages_clear";
19 $ewiki_plugins['uservars_search'][]='ewiki_uservars_pages_search';
22 $ewiki_plugins['page']['Test'] = 'ewiki_page_test';
23 function ewiki_page_test($id, $data)
25 global $ewiki_uservars;
30 var_dump(ewiki_uservars_pages_retrieve());
31 $ewiki_uservars['Real Name']='Andy Fundinger';
32 var_dump(ewiki_uservars_pages_retrieve());
34 ewiki_uservars_pages_store();
35 var_dump(ewiki_uservars_pages_retrieve());
39 echo("<p>".ewiki_uservars_getvar('Real Name').'</p>');
40 echo("<p>".ewiki_uservars_getvar('Fake Name','No alias').'</p>');
41 ewiki_uservars_setvar('Real Name',"Andy");
42 ewiki_uservars_setvar('Fake Name',"Andriod");
43 echo("<p>".ewiki_get_uservar('Real Name').'</p>');
45 $o = ob_get_contents();
51 function ewiki_getall_uservar($username=NULL){
52 global $ewiki_plugins;
55 $pf = @$ewiki_plugins['uservars_getall'][0];
57 if ($pf && function_exists($pf)) {
60 ewiki_log('UserVars getall_uservar: uservariables successfully retrieved for "'.$username.'"', 3);
63 ewiki_log('UserVars: there was an error retrieving uservariables for "'.$username.'"', 3);
69 function ewiki_clear_uservar($varname, $username=NULL){
70 global $ewiki_plugins;
73 $pf = @$ewiki_plugins['uservars_clear'][0];
75 $varname=trim(strtr($varname, "_", " "));
77 if ($pf && function_exists($pf)) {
78 $r=$pf($varname, $username);
80 ewiki_log('UserVars clear_uservar: "'.$varname.'" successfully cleared for user "'.$username.'"', 3);
83 ewiki_log('UserVars clear_uservar: error clearing"'.$varname.'" for user "'.$username.'"', 3);
89 function ewiki_search_uservar($varname, $value=NULL){
90 global $ewiki_plugins;
93 $pf = @$ewiki_plugins['uservars_search'][0];
96 if ($pf && function_exists($pf)) {
97 //echo("ewiki_search_uservar calling $pf($varname,$value)");
98 $r=$pf($varname,$value);
100 ewiki_log('UserVars search_uservar: search for "'.$value.'" in field "'.$varname.'" was successful', 3);
103 ewiki_log('UserVars search_uservar: search for "'.$value.'" in field "'.$varname.'" failed', 3);
109 function ewiki_get_uservar($varname, $defaultValue=NULL, $username=NULL){
110 global $ewiki_plugins;
113 $pf = @$ewiki_plugins['uservars_get'][0];
116 if ($pf && function_exists($pf)) {
117 $r=$pf($varname, $defaultValue, $username);
119 ewiki_log('UserVars get_uservar: get "'.$varname.'" for user "'.$username.'" was successful', 3);
122 ewiki_log('UserVars get_uservar: get "'.$varname.'" for user "'.$username.'" failed', 3);
125 return($defaultValue);
127 function ewiki_set_uservar($varname, $value, $username=NULL){
128 global $ewiki_plugins;
130 $varname=trim(strtr($varname, "_", " "));
132 $pf = @$ewiki_plugins['uservars_set'][0];
135 if ($pf && function_exists($pf)) {
136 $r=$pf($varname, $value, $username);
138 ewiki_log('UserVars set_uservar: seting "'.$varname.'" to "'.$value.'" for user "'.$username.'" was successful', 3);
141 ewiki_log('UserVars set_uservar: seting "'.$varname.'" to "'.$value.'" for user "'.$username.'" failed', 3);
149 Gets all variables for $username or the current user if $username
152 function ewiki_uservars_pages_getallvar($username=NULL){
153 return(ewiki_uservars_pages_retrieve($username));
157 Gets the variable $varname for $username or the current user if $username
158 is not set. If $varname is not set $defaultValue is returned.
160 function ewiki_uservars_pages_getvar($varname, $defaultValue=NULL, $username=NULL){
161 $data=ewiki_uservars_pages_retrieve($username);
162 if(isset($data[$varname])){
163 return($data[$varname]);
165 return($defaultValue);
169 function ewiki_uservars_pages_clear($varname, $username=NULL){
170 $data=ewiki_uservars_pages_retrieve($username);
171 unset($data[$varname]);
172 return(ewiki_uservars_pages_store($data,$username));
175 function ewiki_uservars_pages_search($varname, $value=NULL){
177 $result = ewiki_db::SEARCH("content", $varname);
179 //Get a list of all pages containing our varname
180 while ($row = $result->get()) {
181 if(!preg_match("/".EWIKI_USERVARS_PAGENAME_PREFIX."(.*)/",$row["id"],$matches)){
183 }//Page name is properly formed as a UserVars page name
184 $username=$matches[1];
186 //echo("Checking $username for $varname");
187 if(!($data=ewiki_uservars_pages_retrieve($username))){
188 //echo(" rejected, no data retrieved");
190 }//data was retrieved from the page.
192 if(!isset($data[$varname])){
193 //echo(" rejected, variable not set $varname");
195 }//The varname we are searching for was there
197 if(isset($value)&&($value!=$data[$varname])){
198 //echo("rejected $value != ".$data[$varname]);
200 }//if we were looking for a value, it matches
202 //echo("passed, setting $data[$varname] to $values[$varname]");
203 $values[$username]=$data[$varname];
210 Sets the variable $varname to $value for $username or the current user if $username
213 function ewiki_uservars_pages_setvar($varname, $value, $username=NULL){
214 $data=ewiki_uservars_pages_retrieve($username);
215 $data[$varname]=$value;
216 return(ewiki_uservars_pages_store($data,$username));
220 Stores $data as the user variables for $username returning sucess and storing it in
221 global $ewiki_uservars if you are storing the user data for the current user.
223 $username is optional, $GLOBALS['ewiki_auth_user']) is assumed.
224 $data is optional, global $ewiki_uservars is stored if none is passed.
226 function ewiki_uservars_pages_store($data=NULL, $username=NULL){
227 global $ewiki_uservars,$ewiki_errmsg;
229 if(!isset($username)){
230 $username = $GLOBALS['ewiki_auth_user'];
232 if($username == $GLOBALS['ewiki_auth_user']){
234 $data=$ewiki_uservars;
236 $ewiki_uservars=$data;
240 //echo("<p>Storing user variables for $username</p>");
241 $oldpage=ewiki_db::GET(EWIKI_USERVARS_PAGENAME_PREFIX.$username);
243 //if there was already an existing, non-system page, fail out.
244 if(($oldpage['version']>0)&&(!($oldpage["flags"] & EWIKI_DB_F_SYSTEM))){
245 $ewiki_errmsg=ewiki_t('ERRORSAVING');
250 "id" => EWIKI_USERVARS_PAGENAME_PREFIX.$username,
251 "version" => @$oldpage["version"] + 1,
252 "flags" => EWIKI_DB_F_SYSTEM,
253 "content" => serialize($data),
254 "author" => ewiki_author(),
255 "lastmodified" => time(),
256 "created" => ($uu=@$oldpage["created"]) ? $uu : time(),
257 "meta" => ($uu=@$oldpage["meta"]) ? $uu : "",
258 "hits" => ($uu=@$oldpage["hits"]) ? $uu : "0",
261 return(ewiki_db::WRITE($save));
265 Retrieves the userdata for $username returning it and storing it in
266 global $ewiki_uservars if you are retrieving the user data for the current user.
268 $username is optional, $GLOBALS['ewiki_auth_user']) is assumed.
270 function ewiki_uservars_pages_retrieve($username=NULL){
271 global $ewiki_uservars;
272 if(!isset($username)){
273 $username = $GLOBALS['ewiki_auth_user'];
276 if(!empty($ewiki_uservars)&&($username == $GLOBALS['ewiki_auth_user'])){
277 return($ewiki_uservars);
280 $data=ewiki_db::GET(EWIKI_USERVARS_PAGENAME_PREFIX.$username);
282 //User data must be on system pages
283 if($data["flags"] & EWIKI_DB_F_SYSTEM){
284 //echo("System flag set ");
285 $userdata=unserialize($data['content']);
287 //log and fail if no userdata found i.e. no page, no system flag, or not an array
288 if(!is_array($userdata)){
289 //echo(" retrieved no user data");
290 ewiki_log("No userdata for $username in ewiki_uservars_pages_retrieve()",2);
294 if($username == $GLOBALS['ewiki_auth_user']){
295 $ewiki_uservars=$userdata;