From 6d14c60e84db6427f16533f06d29865db7aade50 Mon Sep 17 00:00:00 2001 From: e107steved Date: Tue, 6 Oct 2009 18:58:08 +0000 Subject: [PATCH] Handle case where an email address is optional, plus better error reporting --- e107_admin/prefs.php | 13 ++++++++++--- e107_handlers/user_handler.php | 14 +++++++++----- e107_handlers/validator_class.php | 21 ++++++++++++++------- e107_languages/English/admin/lan_admin.php | 4 ++-- e107_languages/English/admin/lan_prefs.php | 7 +++++-- 5 files changed, 40 insertions(+), 19 deletions(-) diff --git a/e107_admin/prefs.php b/e107_admin/prefs.php index dfea2140c..8e7a1bc19 100644 --- a/e107_admin/prefs.php +++ b/e107_admin/prefs.php @@ -9,8 +9,8 @@ * Administration - Site Preferences * * $Source: /cvs_backup/e107_0.8/e107_admin/prefs.php,v $ - * $Revision: 1.35 $ - * $Date: 2009-09-28 21:00:15 $ + * $Revision: 1.36 $ + * $Date: 2009-10-06 18:58:07 $ * $Author: e107steved $ * */ @@ -66,9 +66,10 @@ if(isset($_POST['updateprefs'])) $_POST['siteurl'] = substr($_POST['siteurl'], - 1) == "/" ? $_POST['siteurl'] : $_POST['siteurl']."/"; // If email verification or Email/Password Login Method - email address is required! - if($_POST['user_reg_veri'] == 1 && $_POST['allowEmailLogin'] == 1) + if (($_POST['user_reg_veri'] == 1 || $_POST['allowEmailLogin'] == 1) && $_POST['disable_emailcheck']) { $_POST['disable_emailcheck'] = 0; + $emessage->add(PRFLAN_211, E_MESSAGE_ERROR); } // Table of range checking values - min and max for numerics. Only do the important ones @@ -90,9 +91,15 @@ if(isset($_POST['updateprefs'])) if(is_numeric($value)) { if($value < $pref_limits[$key]['min']) + { $value = $pref_limits[$key]['min']; + $emessage->add(str_replace(array('--FIELD--','--VALUE--'),array($key,$value),PRFLAN_213), E_MESSAGE_WARNING); + } if($value > $pref_limits[$key]['max']) + { $value = $pref_limits[$key]['max']; + $emessage->add(str_replace(array('--FIELD--','--VALUE--'),array($key,$value),PRFLAN_212), E_MESSAGE_WARNING); + } } else { diff --git a/e107_handlers/user_handler.php b/e107_handlers/user_handler.php index d37337c34..6df90eb9b 100644 --- a/e107_handlers/user_handler.php +++ b/e107_handlers/user_handler.php @@ -9,8 +9,8 @@ * Handler - user-related functions * * $Source: /cvs_backup/e107_0.8/e107_handlers/user_handler.php,v $ - * $Revision: 1.12 $ - * $Date: 2009-09-28 21:32:00 $ + * $Revision: 1.13 $ + * $Date: 2009-10-06 18:58:08 $ * $Author: e107steved $ * */ @@ -93,7 +93,7 @@ class UserHandler 'user_password' => array('niceName'=> LAN_USER_05, 'fieldType' => 'string', 'vetMethod' => '0', 'vetParam' => '', 'srcName' => 'password1', 'dataType' => 2, 'minLength' => varset($pref['signup_pass_len'],1)), 'user_sess' => array('niceName'=> LAN_USER_06, 'fieldType' => 'string', 'vetMethod' => '0', 'vetParam' => '', 'stripChars' => "#\"|'|(|)#", 'dbClean' => 'image', 'imagePath' => e_FILE.'public/avatars/', 'maxHeight' => varset($pref['im_height'], 100), 'maxWidth' => varset($pref['im_width'], 120)), // Photo 'user_image' => array('niceName'=> LAN_USER_07, 'fieldType' => 'string', 'vetMethod' => '0', 'vetParam' => '', 'srcName' => 'image', 'stripChars' => "#\"|'|(|)#", 'dbClean' => 'avatar', 'maxHeight' => varset($pref['im_height'], 100), 'maxWidth' => varset($pref['im_width'], 120)), // Avatar - 'user_email' => array('niceName'=> LAN_USER_08, 'fieldType' => 'string', 'vetMethod' => '1,3', 'vetParam' => '', 'srcName' => 'email', 'dbClean' => 'toDB'), + 'user_email' => array('niceName'=> LAN_USER_08, 'fieldType' => 'string', 'vetMethod' => '1,3', 'vetParam' => '', 'fieldOptional' => varset($pref['disable_emailcheck'],0), 'srcName' => 'email', 'dbClean' => 'toDB'), 'user_signature' => array('niceName'=> LAN_USER_09, 'fieldType' => 'string', 'vetMethod' => '0', 'vetParam' => '', 'srcName' => 'signature', 'dbClean' => 'toDB'), 'user_hideemail' => array('niceName'=> LAN_USER_10, 'fieldType' => 'int', 'vetMethod' => '0', 'vetParam' => '', 'srcName' => 'hideemail', 'dbClean' => 'intval'), 'user_xup' => array('niceName'=> LAN_USER_11, 'fieldType' => 'string', 'vetMethod' => '0', 'vetParam' => '', 'srcName' => 'user_xup', 'dbClean' => 'toDB'), @@ -507,12 +507,16 @@ Following fields auto-filled in code as required: global $e107, $pref; $u_sql = new db; $ret = TRUE; + $errMsg = ''; if (isset($targetData['data']['user_email'])) { $v = trim($targetData['data']['user_email']); // Always check email address if its entered if ($v == '') { - $errMsg = ERR_MISSING_VALUE; + if (!varsettrue($pref['disable_emailcheck'])) + { + $errMsg = ERR_MISSING_VALUE; + } } elseif (!check_email($v)) { @@ -528,7 +532,7 @@ Following fields auto-filled in code as required: if ($wc) { $wc = "`banlist_ip`='{$v}' OR ".$wc; } if (($wc === FALSE) || !$e107->check_ban($wc, FALSE, TRUE)) { - echo "Email banned
"; +// echo "Email banned
"; $errMsg = ERR_BANNED_EMAIL; } } diff --git a/e107_handlers/validator_class.php b/e107_handlers/validator_class.php index c61153540..fee01c2ec 100644 --- a/e107_handlers/validator_class.php +++ b/e107_handlers/validator_class.php @@ -9,9 +9,9 @@ * Handler - general purpose validation functions * * $Source: /cvs_backup/e107_0.8/e107_handlers/validator_class.php,v $ - * $Revision: 1.9 $ - * $Date: 2009-08-08 23:09:08 $ - * $Author: marj_nl_fr $ + * $Revision: 1.10 $ + * $Date: 2009-10-06 18:58:08 $ + * $Author: e107steved $ * */ @@ -96,7 +96,10 @@ class validatorClass } else { - $ret['errors'][$dest] = ERR_MISSING_VALUE; // No source value + if (!varsettrue($defs['fieldOptional'])) + { + $ret['errors'][$dest] = ERR_MISSING_VALUE; // No source value + } } } else @@ -130,9 +133,12 @@ class validatorClass } if (!$errNum && isset($defs['minLength']) && ($tp->uStrLen($value) < $defs['minLength'])) { - if ($value == '') + if ($value == '') { - $errNum = ERR_MISSING_VALUE; + if (!varsettrue($defs['fieldOptional'])) + { + $errNum = ERR_MISSING_VALUE; + } } else { @@ -307,6 +313,7 @@ class validatorClass $u_sql = new db; $allOK = TRUE; $userID = intval($userID); // Precautionary + $errMsg = ''; if (!$targetTable) return FALSE; foreach ($targetData['data'] as $f => $v) { @@ -314,7 +321,7 @@ class validatorClass if (isset($definitions[$f])) { $options = $definitions[$f]; // Validation options to use - if (isset($options['vetMethod'])) + if (!varsettrue($options['fieldOptional']) || ($v != '')) { $toDo = explode(',',$options['vetMethod']); foreach ($toDo as $vm) diff --git a/e107_languages/English/admin/lan_admin.php b/e107_languages/English/admin/lan_admin.php index 59f10977f..f01a12462 100644 --- a/e107_languages/English/admin/lan_admin.php +++ b/e107_languages/English/admin/lan_admin.php @@ -1,7 +1,7 @@ \ No newline at end of file