From d5ff425a494219d52a11c577e3e2a343e1e7012a Mon Sep 17 00:00:00 2001 From: CaMer0n Date: Thu, 12 Nov 2009 05:11:47 +0000 Subject: [PATCH] Easy editing of administrator perms from admin->users. --- e107_admin/administrator.php | 121 ++------------------ e107_admin/users.php | 39 +++++-- e107_handlers/e107_class.php | 16 ++- e107_handlers/user_handler.php | 124 ++++++++++++++++++++- e107_languages/English/admin/lan_users.php | 7 +- 5 files changed, 183 insertions(+), 124 deletions(-) diff --git a/e107_admin/administrator.php b/e107_admin/administrator.php index e0fb148ec..853597173 100644 --- a/e107_admin/administrator.php +++ b/e107_admin/administrator.php @@ -9,8 +9,8 @@ * Administrators Management * * $Source: /cvs_backup/e107_0.8/e107_admin/administrator.php,v $ - * $Revision: 1.16 $ - * $Date: 2009-11-12 01:53:16 $ + * $Revision: 1.17 $ + * $Date: 2009-11-12 05:11:41 $ * $Author: e107coders $ * */ @@ -37,7 +37,8 @@ require_once('auth.php'); require_once(e_HANDLER."form_handler.php"); require_once(e_HANDLER."message_handler.php"); $frm = new e_form(true); -$emessage = &eMessage::getInstance(); +$emessage = e107::getMessage(); +$prm = e107::getUserPerms(); $action = ''; $sub_action = -1; @@ -50,38 +51,9 @@ if (e_QUERY) } -if (isset($_POST['update_admin'])) -{ // Permissions updated - $modID = intval($_POST['a_id']); - if ($modID == 0) - { - exit; - } - $sql->db_Select("user", "*", "user_id=".$modID); - $row = $sql->db_Fetch(); - $a_name = $row['user_name']; - - $perm = ""; - - foreach($_POST['perms'] as $value) - { - $value = $tp->toDB($value); - if ($value == "0") - { - if (!getperms('0')) { $value = ""; break; } - $perm = "0"; break; - } - - if ($value) - { - $perm .= $value."."; - } - } - - admin_update($sql->db_Update("user", "user_perms='{$perm}' WHERE user_id='{$modID}' "), 'update', sprintf(ADMSLAN_2, $tp->toDB($_POST['ad_name'])), false, false); - $logMsg = str_replace(array('--ID--', '--NAME--'),array($modID, $a_name),ADMSLAN_72).$perm; - $admin_log->log_event('ADMIN_01',$logMsg,E_LOG_INFORMATIVE,''); - unset($modID, $ad_name, $a_perms); +if (isset($_POST['update_admin'])) // Permissions updated +{ + $prm->updatePerms($_POST['a_id'],$_POST['perms']); } @@ -125,7 +97,7 @@ if (isset($_POST['del_admin']) && count($_POST['del_admin'])) if(isset($_POST['edit_admin']) || $action == "edit") { - edit_administrator($row); + $prm->edit_administrator($row); } else { @@ -139,10 +111,9 @@ function show_admins() $frm = e107::getForm(); $ns = e107::getRender(); $mes = e107::getMessage(); - + $tp = e107::getParser(); + $prm = e107::getUserPerms(); - require_once(e_HANDLER."user_handler.php"); - $prm = new e_userperms; $sql->db_Select("user", "*", "user_admin='1'"); @@ -176,7 +147,7 @@ function show_admins() $text .= " ".$row['user_id']." - ".$row['user_name']." + ".$row['user_name']." ".$prm->renderperms($row['user_perms'],$row['user_id'],"words")." @@ -186,7 +157,7 @@ function show_admins() { $text .= " ".$frm->submit_image("edit_admin[{$row['user_id']}]", 'edit', 'edit', LAN_EDIT)." - ".$frm->submit_image("del_admin[{$row['user_id']}]", 'del', 'delete', $e107->tp->toJS(ADMSLAN_59."? [".$row['user_name']."]"))." + ".$frm->submit_image("del_admin[{$row['user_id']}]", 'del', 'delete', $tp->toJS(ADMSLAN_59."? [".$row['user_name']."]"))." "; } @@ -208,75 +179,7 @@ function show_admins() $ns->tablerender(ADMSLAN_13, $mes->render().$text); } -function edit_administrator($row) -{ - global $pref; - $lanlist = explode(",",e_LANLIST); - require_once(e_HANDLER."user_handler.php"); - $prm = new e_userperms; - $ns = e107::getRender(); - $sql = e107::getDb(); - $frm = e107::getForm(); - - $a_id = $row['user_id']; - $ad_name = $row['user_name']; - $a_perms = $row['user_perms']; - - $text = " -
-
- ".ADMSLAN_52." - - - - - - - - - - - - - - - -
".ADMSLAN_16.": - ".$ad_name." - -
".ADMSLAN_18." - - "; - - $groupedList = $prm->getPermList('grouped'); - - foreach($groupedList as $section=>$list) - { - $text .= "\t\t

".$prm->renderSectionDiz($section)."

"; //XXX Lan - General - foreach($list as $key=>$diz) - { - $text .= $prm->checkb($key, $a_perms, $diz); - } - $text .= "
"; - } - - $text .= "
- ".$frm->admin_button('check_all', 'jstarget:perms', 'action', LAN_CHECKALL)." - ".$frm->admin_button('uncheck_all', 'jstarget:perms', 'action', LAN_UNCHECKALL)." -
-
-
- - ".$frm->admin_button('update_admin', ADMSLAN_52, 'update')." - ".$frm->admin_button('go_back', ADMSLAN_70)." -
-
-
- "; - - $ns->tablerender(ADMSLAN_52, $text); -} require_once("footer.php"); diff --git a/e107_admin/users.php b/e107_admin/users.php index f338bc717..505422917 100644 --- a/e107_admin/users.php +++ b/e107_admin/users.php @@ -10,8 +10,8 @@ * Administration Area - Users * * $Source: /cvs_backup/e107_0.8/e107_admin/users.php,v $ -* $Revision: 1.66 $ -* $Date: 2009-11-12 02:14:26 $ +* $Revision: 1.67 $ +* $Date: 2009-11-12 05:11:41 $ * $Author: e107coders $ * */ @@ -224,6 +224,9 @@ if (isset ($_POST['prune'])) $ns->tablerender(USRLAN_57,"
".$text."
"); unset ($text); } + + + // ------- Quick Add User -------------- if (isset ($_POST['adduser'])) { @@ -427,12 +430,21 @@ if (isset ($_POST['useraction']) && $_POST['useraction'] == 'test') exit; } } + + +$prm = e107::getUserPerms(); + // ------- Make Admin -------------- -if (isset ($_POST['useraction']) && $_POST['useraction'] == "admin" && getperms('3')) +if ((varset($_POST['useraction'])== "admin" || varset($_POST['useraction'])== "adminperms") && getperms('3')) { - $sql->db_Select("user","user_id, user_name","user_id='".$_POST['userid']."'"); + $sql->db_Select("user","user_id, user_name, user_perms","user_id='".$_POST['userid']."'"); $row = $sql->db_Fetch(); - $sql->db_Update("user","user_admin='1' WHERE user_id='".$_POST['userid']."' "); + + if(varset($_POST['useraction'])== "admin") + { + $sql->db_Update("user","user_admin='1' WHERE user_id='".$_POST['userid']."' "); + } + $admin_log->log_event('USET_08',str_replace(array('--UID--','--NAME--'),array($row['user_id'],$row['user_name']),USRLAN_164),E_LOG_INFORMATIVE); $user->show_message($row['user_name']." ".USRLAN_3." ".USRLAN_4.""); $action = "main"; @@ -444,7 +456,19 @@ if (isset ($_POST['useraction']) && $_POST['useraction'] == "admin" && getperms( { $id = "DESC"; } + + + $prm->edit_administrator($row); + require_once ("footer.php"); + exit; } + +if (varset($_POST['update_admin'])) // Update admin Perms. +{ + $prm->updatePerms($_POST['a_id'],$_POST['perms']); +} + + // ------- Remove Admin -------------- if (isset ($_POST['useraction']) && $_POST['useraction'] == "unadmin" && getperms('3')) { @@ -921,6 +945,7 @@ class users else if ($user_admin && $user_perms != "0" && getperms('3')) { + $text .= "\n"; $text .= "\n"; } } @@ -1140,7 +1165,7 @@ class users $e107 = e107 :: getInstance(); $type = $this->fields[$key]['type']; $pref = e107::getConfig()->getPref(); - $prm = new e_userperms; + $prm = e107::getUserPerms(); switch($key) // switch based on field. { @@ -1413,7 +1438,7 @@ class users { global $rs,$pref,$e_userclass; - $prm = new e_userperms; + $prm = e107::getUserPerms(); $list = $prm->getPermList(); $frm = e107::getForm(); $ns = e107::getRender(); diff --git a/e107_handlers/e107_class.php b/e107_handlers/e107_class.php index 705dc61d4..2a3375525 100644 --- a/e107_handlers/e107_class.php +++ b/e107_handlers/e107_class.php @@ -9,8 +9,8 @@ * e107 Main * * $Source: /cvs_backup/e107_0.8/e107_handlers/e107_class.php,v $ - * $Revision: 1.65 $ - * $Date: 2009-11-10 23:13:30 $ + * $Revision: 1.66 $ + * $Date: 2009-11-12 05:11:41 $ * $Author: e107coders $ */ @@ -135,7 +135,8 @@ class e107 'e_admin_form_ui' => '{e_HANDLER}admin_handler.php', 'DHTML_Calendar' => '{e_HANDLER}calendar/calendar_class.php', 'comment' => '{e_HANDLER}comment_class.php', - 'e107_user_extended' => '{e_HANDLER}user_extended_class.php' + 'e107_user_extended' => '{e_HANDLER}user_extended_class.php', + 'e_userperms' => '{e_HANDLER}user_handler.php', ); /** @@ -832,6 +833,15 @@ class e107 { return self::getSingleton('e_online', true); } + + /** + * Retrieve User Perms (admin perms) handler singleton object + * @return comment + */ + public static function getUserPerms() + { + return self::getSingleton('e_userperms', true); + } /** diff --git a/e107_handlers/user_handler.php b/e107_handlers/user_handler.php index adbab982a..4e5ccbd06 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.15 $ - * $Date: 2009-11-12 01:53:16 $ + * $Revision: 1.16 $ + * $Date: 2009-11-12 05:11:42 $ * $Author: e107coders $ * */ @@ -831,6 +831,126 @@ class e_userperms */ return $text; } + + /** + * Render edit admin perms form. + * @param array $row [optional] containing $row['user_id'], $row['user_name'], $row['user_perms']; + * @return + */ + function edit_administrator($row='') + { + global $pref; + $lanlist = explode(",",e_LANLIST); + require_once(e_HANDLER."user_handler.php"); + $prm = $this; + $ns = e107::getRender(); + $sql = e107::getDb(); + $frm = e107::getForm(); + + + $a_id = $row['user_id']; + $ad_name = $row['user_name']; + $a_perms = $row['user_perms']; + + $text = " +
+
+ ".ADMSLAN_52." + + + + + + + + + + + + + + + +
".ADMSLAN_16.": + ".$ad_name." + +
".ADMSLAN_18." + + "; + + $groupedList = $prm->getPermList('grouped'); + + foreach($groupedList as $section=>$list) + { + $text .= "\t\t

".$prm->renderSectionDiz($section)."

"; //XXX Lan - General + foreach($list as $key=>$diz) + { + $text .= $prm->checkb($key, $a_perms, $diz); + } + $text .= "
"; + } + + $text .= "
+ ".$frm->admin_button('check_all', 'jstarget:perms', 'action', LAN_CHECKALL)." + ".$frm->admin_button('uncheck_all', 'jstarget:perms', 'action', LAN_UNCHECKALL)." +
+
+
+ + ".$frm->admin_button('update_admin', ADMSLAN_52, 'update')." + ".$frm->admin_button('go_back', ADMSLAN_70)." +
+
+
+ "; + + $ns->tablerender(ADMSLAN_52, $text); + } + + /** + * Update user (admin) perms + * @param int $uid + * @param array $permArray eg. array('A','K','1'); + * @return + */ + function updatePerms($uid,$permArray) + { + global $admin_log; + + $sql = e107::getDb(); + $tp = e107::getParser(); + + $modID = intval($uid); + if ($modID == 0) + { + exit; + } + + $sql->db_Select("user", "*", "user_id=".$modID); + $row = $sql->db_Fetch(); + $a_name = $row['user_name']; + + $perm = ""; + + foreach($permArray as $value) + { + $value = $tp->toDB($value); + if ($value == "0") + { + if (!getperms('0')) { $value = ""; break; } + $perm = "0"; break; + } + + if ($value) + { + $perm .= $value."."; + } + } + + admin_update($sql->db_Update("user", "user_perms='{$perm}' WHERE user_id='{$modID}' "), 'update', sprintf(ADMSLAN_2, $tp->toDB($_POST['ad_name'])), false, false); + $logMsg = str_replace(array('--ID--', '--NAME--'),array($modID, $a_name),ADMSLAN_72).$perm; + $admin_log->log_event('ADMIN_01',$logMsg,E_LOG_INFORMATIVE,''); + } } ?> \ No newline at end of file diff --git a/e107_languages/English/admin/lan_users.php b/e107_languages/English/admin/lan_users.php index ea57b1263..f05430a30 100644 --- a/e107_languages/English/admin/lan_users.php +++ b/e107_languages/English/admin/lan_users.php @@ -9,8 +9,8 @@ * Language file - user admin * * $Source: /cvs_backup/e107_0.8/e107_languages/English/admin/lan_users.php,v $ - * $Revision: 1.19 $ - * $Date: 2009-08-10 15:34:28 $ + * $Revision: 1.20 $ + * $Date: 2009-11-12 05:11:47 $ * $Author: e107coders $ * */ @@ -231,8 +231,9 @@ define('LAN_NOTVERIFIED','Not Verified'); define('LAN_BANNED','Banned'); define('LAN_BOUNCED','Bounced'); -define('USRLAN_220', 'All Userclasses'); +define('USRLAN_220', 'All Userclasses'); +define('USRLAN_221', 'Edit admin perms'); // These need review - there are duplicates above - they come from admin/lan_userclass.php. define("UCSLAN_1", "Sending notification email to");