/wp-content/plugins/mailz/lists/admin/commonlib/pages/user.php
PHP | 354 lines | 321 code | 20 blank | 13 comment | 119 complexity | 6281188645b188f45b1d7cf3aa22c962 MD5 | raw file
- <script language="Javascript" src="js/jslib.js" type="text/javascript"></script>
- <?php
- #if (!$_GET["id"] && !$_GET["delete"]) {
- # Fatal_Error("No such user");
- # return;
- #}
- $id = sprintf('%d',isset($_GET["id"]) ? $_GET['id']:0);
- $delete = sprintf('%d',isset($_GET['delete']) ? $_GET["delete"]:0);
- $date = new Date();
- $access = accessLevel("user");
- switch ($access) {
- case "owner":
- $subselect = sprintf(' and %s.owner = %d',$tables["list"],$_SESSION["logindetails"]["id"]);
- $subselect_where = sprintf(' where %s.owner = %d',$tables["list"],$_SESSION["logindetails"]["id"]);break;
- case "all":
- $subselect = "";break;
- case "view":
- $subselect = "";
- if (sizeof($_POST)) {
- print Error($GLOBALS['I18N']->get('You only have privileges to view this page, not change any of the information'));
- return;
- }
- break;
- case "none":
- default:
- $subselect = " and ".$tables["list"].".id = 0";
- $subselect_where = " where ".$tables["list"].".owner = 0";break;
- }
- if ($access != "all") {
- $delete_message = '<br />'.$GLOBALS['I18N']->get('Delete will delete user from the list').'<br />';
- } else {
- $delete_message = '<br />'.$GLOBALS['I18N']->get('Delete will delete user and all listmemberships').'<br />';
- }
- $usegroups = Sql_Table_exists("groups") && Sql_Table_exists('user_group');
- if ($_POST["change"] && ($access == "owner"|| $access == "all")) {
- if (!verifyToken()) {
- print Error($GLOBALS['I18N']->get('No Access'));
- return;
- }
- if (!$id) {
- $id = addNewUser($_POST['email']);
- $newuser = 1;
- }
- if (!$id) {
- print $GLOBALS['I18N']->get('Error adding user, please check that the user exists');
- return;
- }
- # read the current values to compare changes
- $old_data = Sql_Fetch_Array_Query(sprintf('select * from %s where id = %d',$tables["user"],$id));
- $old_data = array_merge($old_data,getUserAttributeValues('',$id));
- # and membership of lists
- $req = Sql_Query("select * from {$tables["listuser"]} where userid = $id");
- while ($row = Sql_Fetch_Array($req)) {
- $old_listmembership[$row["listid"]] = listName($row["listid"]);
- }
- while (list ($key,$val) = each ($struct)) {
- list($a,$b) = explode(":",$val[1]);
- if (!ereg("sys",$a) && $val[1]) {
- if ($key == "password" && ENCRYPTPASSWORD) {
- if (isset($_POST[$key]))
- Sql_Query("update {$tables["user"]} set $key = \"".md5($_POST[$key])."\" where id = $id");
- } else {
- Sql_Query("update {$tables["user"]} set $key = \"".sql_escape($_POST[$key])."\" where id = $id");
- }
- }
- elseif ((!$require_login || ($require_login && isSuperUser())) && $key == "confirmed")
- Sql_Query("update {$tables["user"]} set $key = \"".sql_escape($_POST[$key])."\" where id = $id");
- }
- if (is_array($_POST['attribute']))
- while (list($key,$val) = each ($_POST['attribute'])) {
- Sql_Query(sprintf('replace into %s (userid,attributeid,value)
- values(%d,%d,"%s")',$tables["user_attribute"],$id,$key,$val));
- }
- if (is_array($_POST["dateattribute"]))
- foreach ($_POST["dateattribute"] as $attid => $attname) {
- if (isset($_POST[normalize($attname).'_novalue'])) {
- $value = "";
- } else {
- $value = $date->getDate($attname);
- }
- Sql_Query(sprintf('replace into %s (userid,attributeid,value)
- values(%d,%d,"%s")',$tables["user_attribute"],$id,$attid,$value));
- }
- if (is_array($_POST['cbattribute'])) {
- while (list($key,$val) = each ($_POST['cbattribute'])) {
- if ($_POST['attribute'][$key] == "on") {
- Sql_Query(sprintf('replace into %s (userid,attributeid,value)
- values(%d,%d,"on")',$tables["user_attribute"],$id,$key));
- } else {
- Sql_Query(sprintf('replace into %s (userid,attributeid,value)
- values(%d,%d,"")',$tables["user_attribute"],$id,$key));
- }
- }
- }
- if (is_array($_POST['cbgroup'])) {
- while (list($key,$val) = each ($_POST['cbgroup'])) {
- $field = "cbgroup".$val;
- if (is_array($_POST[$field])) {
- $newval = array();
- foreach ($_POST[$field] as $fieldval) {
- array_push($newval,sprintf('%0'.$checkboxgroup_storesize.'d',$fieldval));
- }
- $value = join(",",$newval);
- }
- else
- $value = "";
- Sql_Query(sprintf('replace into %s (userid,attributeid,value)
- values(%d,%d,"%s")',$tables["user_attribute"],$id,$val,$value));
- }
- }
- if ($usegroups) {
- Sql_Query("delete from user_group where userid = $id");
- if (is_array($_POST["groups"])) {
- foreach ($_POST["groups"] as $group) {
- Sql_Query(sprintf('insert into user_group (userid,groupid) values(%d,%d)',$id,$group));
- print "<br/>".$GLOBALS['I18N']->get('User added to group').' '.groupName($group);
- }
- }
- }
- # submitting page now saves everything, so check is not necessary
- if ($subselect == "") {
- Sql_Query("delete from {$tables["listuser"]} where userid = $id");
- } else {
- # only unsubscribe from the lists of this admin
- $req = Sql_Query("select id from {$tables["list"]} $subselect_where");
- while ($row = Sql_Fetch_Row($req)) {
- Sql_Query("delete from {$tables["listuser"]} where userid = $id and listid = $row[0]");
- }
- }
- if (is_array($_POST["subscribe"])) {
- foreach ($_POST["subscribe"] as $ind => $lst) {
- Sql_Query("insert into {$tables["listuser"]} (userid,listid) values($id,$lst)");
- print '<br/>'.sprintf($GLOBALS['I18N']->get('User added to list %s'),ListName($lst));
- }
- print "<br/>";
- }
- $history_entry = '';
- $current_data = Sql_Fetch_Array_Query(sprintf('select * from %s where id = %d',$tables["user"],$id));
- $current_data = array_merge($current_data,getUserAttributeValues('',$id));
- foreach ($current_data as $key => $val) {
- if (!is_numeric($key))
- if ($old_data[$key] != $val && $key != "modified") {
- $history_entry .= "$key = $val\nchanged from $old_data[$key]\n";
- }
- }
- if (!$history_entry) {
- $history_entry = "\nNo userdata changed";
- }
- # check lists
- $req = Sql_Query("select * from {$tables["listuser"]} where userid = $id");
- while ($row = Sql_Fetch_Array($req)) {
- $listmembership[$row["listid"]] = listName($row["listid"]);
- }
- # i'll do this once I can test it on a 4.3 server
- #if (function_exists("array_diff_assoc")) {
- if (0) {
- # it requires 4.3
- $subscribed_to = array_diff_assoc($listmembership, $old_listmembership);
- $unsubscribed_from = array_diff_assoc($old_listmembership,$listmembership);
- foreach ($subscribed_to as $key => $desc) {
- $history_entry .= "Subscribed to $desc\n";
- }
- foreach ($unsubscribed_to as $key => $desc) {
- $history_entry .= "Unsubscribed from $desc\n";
- }
- } else {
- $history_entry .= "\nList subscriptions:\n";
- foreach ($old_listmembership as $key => $val) {
- $history_entry .= "Was subscribed to: $val\n";
- }
- foreach ($listmembership as $key => $val) {
- $history_entry .= "Is now subscribed to: $val\n";
- }
- if (!sizeof($listmembership)) {
- $history_entry .= "Not subscribed to any lists\n";
- }
- }
- addUserHistory($email,"Update by ".adminName($_SESSION["logindetails"]["id"]),$history_entry);
- if ($newuser) {
- Redirect("user&id=$id");
- exit;
- }
- Info($GLOBALS['I18N']->get('Changes saved'));
- }
- if (isset($delete) && $delete && $access != "view") {
- # delete the index in delete
- print $GLOBALS['I18N']->get('Deleting')." $delete ..\n";
- if ($require_login && !isSuperUser()) {
- $lists = Sql_query("SELECT listid FROM {$tables["listuser"]},{$tables["list"]} where userid = ".$delete." and $tables[listuser].listid = $tables[list].id $subselect ");
- while ($lst = Sql_fetch_array($lists))
- Sql_query("delete from {$tables["listuser"]} where userid = $delete and listid = $lst[0]");
- } else {
- deleteUser($delete);
- }
- print '..'.$GLOBALS['I18N']->get('Done')."<br /><hr><br />\n";
- }
- $membership = "";
- $subscribed = array();
- if ($id) {
- $result = Sql_query("SELECT * FROM {$tables["user"]} where id = $id");
- if (!Sql_Affected_Rows()) {
- Fatal_Error($GLOBALS['I18N']->get('No such User').' '.$id);
- return;
- }
- $user = sql_fetch_array($result);
- $lists = Sql_query("SELECT listid,name FROM {$tables["listuser"]},{$tables["list"]} where userid = ".$user["id"]." and $tables[listuser].listid = $tables[list].id $subselect ");
- while ($lst = Sql_fetch_array($lists)) {
- $membership .= "<li>".PageLink2("editlist",$lst["name"],"id=".$lst["listid"]);
- array_push($subscribed,$lst["listid"]);
- }
- if (!$membership)
- $membership = $GLOBALS['I18N']->get('No Lists');
- if ($access != "view")
- printf( "<br /><hr/>%s<li><a href=\"javascript:deleteRec('%s');\">delete</a> %s\n",
- $delete_message,PageURL2("user","","delete=$id&$returnurl"),$user["email"]);
- printf(' <a href="%s">%s</a>',getConfig("preferencesurl").
- '&uid='.$user["uniqid"],$GLOBALS['I18N']->get('update page'));
- printf(' <a href="%s">%s</a>',getConfig("unsubscribeurl").'&uid='.$user["uniqid"],$GLOBALS['I18N']->get('unsubscribe page'));
- print ' '.PageLink2("userhistory&id=$id",$GLOBALS['I18N']->get('History'));
- } else {
- $user = array();
- $id = 0;
- print '<h1>'.$GLOBALS['I18N']->get('Add a new User').'</h1>';
- }
- print "<p><h3>".$GLOBALS['I18N']->get('User Details')."</h3>".formStart()."<table border=1>";
- print "<input type=hidden name=list value=$list><input type=hidden name=id value=$id>";
- print "<input type=hidden name=returnpage value=$returnpage><input type=hidden name=returnoption value=$returnoption>";
- reset($struct);
- while (list ($key,$val) = each ($struct)) {
- list($a,$b) = explode(":",$val[1]);
- if ($key == "confirmed") {
- if (!$require_login || ($require_login && isSuperUser())) {
- printf('<tr><td>%s (1/0)</td><td><input type="text" name="%s" value="%s" size=5></td></tr>'."\n",$GLOBALS['I18N']->get($b),$key,$user[$key]);
- } else {
- printf('<tr><td>%s</td><td>%s</td></tr>',$b,$user[$key]);
- }
-