From 2407827501f97f5658a389f354e40b74050a7090 Mon Sep 17 00:00:00 2001 From: mcfly Date: Sun, 30 Nov 2008 23:15:15 +0000 Subject: [PATCH] Add file caching of user extended table Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ --- class2.php | 60 ++++++++++++++------------- e107_admin/users_extended.php | 23 +++++----- e107_handlers/user_extended_class.php | 15 +++++-- 3 files changed, 54 insertions(+), 44 deletions(-) diff --git a/class2.php b/class2.php index bc792585d..8e5d10821 100644 --- a/class2.php +++ b/class2.php @@ -11,9 +11,9 @@ | GNU General Public License (http://gnu.org). | | $Source: /cvs_backup/e107_0.8/class2.php,v $ -| $Revision: 1.78 $ -| $Date: 2008-11-29 23:23:31 $ -| $Author: secretr $ +| $Revision: 1.79 $ +| $Date: 2008-11-30 23:15:15 $ +| $Author: mcfly_e107 $ +----------------------------------------------------------------------------+ */ // @@ -637,6 +637,10 @@ e107_require_once(e_HANDLER.'event_class.php'); $e107->e_event = new e107_event; $e_event = &$e107->e_event; +e107_require_once(e_HANDLER.'userclass_class.php'); +$e107->e_userclass = new user_class; +$e_userclass = &$e107->e_userclass; + if(isset($pref['notify']) && $pref['notify'] == true) { e107_require_once(e_HANDLER.'notify_class.php'); @@ -1218,7 +1222,6 @@ function getperms($arg, $ap = ADMINPERMS) */ function get_user_data($uid, $extra = '') { - global $pref, $sql; $e107 = e107::getInstance(); $uid = (int)$uid; $var = array(); @@ -1233,38 +1236,46 @@ function get_user_data($uid, $extra = '') LEFT JOIN #user_extended AS ue ON ue.user_extended_id = u.user_id WHERE u.user_id = {$uid} {$extra} "; - if (!$sql->db_Select_gen($qry)) + if (!$e107->sql->db_Select_gen($qry)) { $qry = "SELECT * FROM #user AS u WHERE u.user_id = {$uid} {$extra}"; - if(!$sql->db_Select_gen($qry)) + if(!$e107->sql->db_Select_gen($qry)) { return FALSE; } } + $var = $e107->sql->db_Fetch(); - $var = $sql->db_Fetch(); - $extended_struct = getcachedvars('extended_struct'); - if(!$extended_struct) + if(!$extended_struct = getcachedvars('extended_struct')) { - unset($extended_struct); - $qry = 'SHOW COLUMNS FROM #user_extended '; - if($sql->db_Select_gen($qry)) + if($tmp = $e107->ecache->retrieve_sys('nomd5_extended_struct')) { - while($row = $sql->db_Fetch()) + $extended_struct = $e107->arrayStorage->ReadArray($tmp); + } + else + { + $qry = 'SHOW COLUMNS FROM #user_extended '; + if($e107->sql->db_Select_gen($qry)) { - if($row['Default'] != '') + while($row = $e107->sql->db_Fetch()) { - $extended_struct[] = $row; + if($row['Default'] != '') + { + $extended_struct[] = $row; + } } } - if(isset($extended_struct)) - { - cachevars('extended_struct', $extended_struct); - } + $tmp = $e107->arrayStorage->WriteArray($extended_struct); + $e107->ecache->set_sys('nomd5_extended_struct', $tmp); + unset($tmp); + } + if(isset($extended_struct)) + { + cachevars('extended_struct', $extended_struct); } } - if(isset($extended_struct)) + if(isset($extended_struct) && is_array($extended_struct)) { foreach($extended_struct as $row) { @@ -1277,14 +1288,7 @@ function get_user_data($uid, $extra = '') //=========================================================== // Now look up the 'inherited' user classes - global $e_userclass; - if (!isset($e_userclass) && !is_object($e_userclass)) - { - require_once(e_HANDLER.'userclass_class.php'); - $e107->e_userclass = new user_class; - $e_userclass = &$e107->e_userclass; - } - $var['user_class'] = $e_userclass->get_all_user_classes($var['user_class']); + $var['user_class'] = $e107->e_userclass->get_all_user_classes($var['user_class']); //=========================================================== diff --git a/e107_admin/users_extended.php b/e107_admin/users_extended.php index d2a96d9e6..b034ad290 100755 --- a/e107_admin/users_extended.php +++ b/e107_admin/users_extended.php @@ -11,19 +11,20 @@ | GNU General Public License (http://gnu.org). | | $Source: /cvs_backup/e107_0.8/e107_admin/users_extended.php,v $ -| $Revision: 1.12 $ -| $Date: 2008-08-30 20:22:23 $ -| $Author: e107steved $ +| $Revision: 1.13 $ +| $Date: 2008-11-30 23:15:15 $ +| $Author: mcfly_e107 $ +----------------------------------------------------------------------------+ */ -require_once("../class2.php"); -if (!getperms("4")) { - header("location:".e_BASE."index.php"); +require_once('../class2.php'); +if (!getperms('4')) +{ + header('location:'.e_BASE.'index.php'); exit; } if (isset($_POST['cancel'])) { - header("location:".e_SELF); + header('location:'.e_SELF); exit; } if (isset($_POST['cancel_cat'])) @@ -35,12 +36,11 @@ if (isset($_POST['cancel_cat'])) $e_sub_cat = 'user_extended'; $user = new users_ext; $curtype = '1'; -require_once(e_HANDLER."calendar/calendar_class.php"); +require_once(e_HANDLER.'calendar/calendar_class.php'); $cal = new DHTML_Calendar(true); require_once("auth.php"); -require_once(e_HANDLER."user_extended_class.php"); -require_once(e_HANDLER."userclass_class.php"); - +require_once(e_HANDLER.'user_extended_class.php'); +require_once(e_HANDLER.'userclass_class.php'); $ue = new e107_user_extended; $message = ''; @@ -55,7 +55,6 @@ if (e_QUERY) } - if (isset($_POST['up_x'])) { $qs = explode(".", $_POST['id']); diff --git a/e107_handlers/user_extended_class.php b/e107_handlers/user_extended_class.php index e8797525a..3d26d6bf8 100755 --- a/e107_handlers/user_extended_class.php +++ b/e107_handlers/user_extended_class.php @@ -11,8 +11,8 @@ | GNU General Public License (http://gnu.org). | | $Source: /cvs_backup/e107_0.8/e107_handlers/user_extended_class.php,v $ -| $Revision: 1.15 $ -| $Date: 2008-11-24 00:36:50 $ +| $Revision: 1.16 $ +| $Date: 2008-11-30 23:15:15 $ | $Author: mcfly_e107 $ +----------------------------------------------------------------------------+ */ @@ -220,6 +220,11 @@ class e107_user_extended return $sql->db_Count('user_extended_struct','(*)', "WHERE user_extended_struct_name = '".$tp -> toDB($name, true)."'"); } + function clear_cache() + { + $e107 = e107::getInstance(); + $e107->ecache->clear_sys('nomd5_extended_struct'); + } // For use by plugins to add extended user fields and won't be visible anywhere else function user_extended_add_system($name, $type, $default = '', $source = '_system_') @@ -231,6 +236,7 @@ class e107_user_extended function user_extended_add($name, $text, $type, $parms, $values, $default, $required, $read, $write, $applicable, $order='', $parent) { global $sql, $tp; + $this->clear_cache(); if(is_array($name)) { extract($name); @@ -245,7 +251,7 @@ class e107_user_extended $field_info = $this->user_extended_type_text($type, $default); if($order === '') { - if($sql->db_Select("user_extended_struct","MAX(user_extended_struct_order) as maxorder","1")) + if($sql->db_Select('user_extended_struct','MAX(user_extended_struct_order) as maxorder','1')) { $row = $sql->db_Fetch(); if(is_numeric($row['maxorder'])) @@ -255,7 +261,7 @@ class e107_user_extended } } $sql->db_Select_gen("ALTER TABLE #user_extended ADD user_".$tp -> toDB($name, true)." ".$field_info); - $sql->db_Insert("user_extended_struct","0,'".$tp -> toDB($name, true)."','".$tp -> toDB($text, true)."','".intval($type)."','".$tp -> toDB($parms, true)."','".$tp -> toDB($values, true)."', '".$tp -> toDB($default, true)."', '".intval($read)."', '".intval($write)."', '".intval($required)."', '0', '".intval($applicable)."', '".intval($order)."', '".intval($parent)."'"); + $sql->db_Insert('user_extended_struct',"0,'".$tp -> toDB($name, true)."','".$tp -> toDB($text, true)."','".intval($type)."','".$tp -> toDB($parms, true)."','".$tp -> toDB($values, true)."', '".$tp -> toDB($default, true)."', '".intval($read)."', '".intval($write)."', '".intval($required)."', '0', '".intval($applicable)."', '".intval($order)."', '".intval($parent)."'"); if ($this->user_extended_field_exist($name)) { return TRUE; @@ -293,6 +299,7 @@ class e107_user_extended function user_extended_remove($id, $name) { global $sql, $tp; + $this->clear_cache(); if ($this->user_extended_field_exist($name)) { $sql->db_Select_gen("ALTER TABLE #user_extended DROP user_".$tp -> toDB($name, true));