$f) { $f = stripslashes_array($f); if($f['Required'] && (!isset($Fields[$f['FieldID']]) || $Fields[$f['FieldID']] == '')) { $Error.="
  • The field '".$f["FieldName"]."' is required.
  • "; } elseif($f['FieldType']=='shorttext' || $f['FieldType']=='longtext') { if($f['Required'] && $Fields[$f['FieldID']]==$f['DefaultValue']) { $Error.="
  • The field '".$f["FieldName"]."' is required.
  • "; } } } //check the email addy is not banned! if(Banned($_POST['Email'], $ListID)){ $Error.="
  • The email address that you entered is banned.
  • "; } // Is the email address already in the list? $isThere = mysql_num_rows(mysql_query("SELECT * FROM " . $TABLEPREFIX . "members WHERE ListID = '".addslashes($ListID)."' and Email='".addslashes($_POST['Email'])."' and Email <> '".addslashes($_GET['OldEmail'])."'")); if($isThere > 0) $Error .= "
  • The email address that you entered is already in this list.
  • "; if(!$Error) { //add the member! mysql_query("UPDATE " . $TABLEPREFIX . "members SET Email='".addslashes($_POST['Email'])."', Status='".addslashes($_POST['Status'])."', Format='".addslashes($_POST['Format'])."', Confirmed='".addslashes($_POST['Confirmed'])."' WHERE MemberID='".addslashes($UserID)."'"); mysql_query("DELETE FROM " . $TABLEPREFIX . "list_field_values WHERE UserID='".addslashes($UserID)."'"); $custom_fields = FetchCustomFields(); foreach($custom_fields as $pos => $f) { $f = stripslashes_array($f); $val = (isset($Fields[$f['FieldID']])) ? $Fields[$f['FieldID']] : ''; $val = stripslashes_array($val); // if it's the datebox, we want the format the same all the time! if ($f['FieldType'] == 'datebox') { $val = $val['dd_start'] . ':' . $val['mm_start'] . ':' . $val['yy_start']; } else { if (is_array($val)) $val = implode(':', $val); } $q = "INSERT INTO " . $TABLEPREFIX . "list_field_values SET UserID='".addslashes($UserID)."', ListID='".addslashes($ListID)."', FieldID='".addslashes($f['FieldID'])."', Value='".addslashes($val)."'"; mysql_query($q); } $Fields = (isset($_GET['SearchFields'])) ? stripslashes_array($_GET['SearchFields']) : array(); $URLDATA .= EncodeFields($Fields); $link = "members&View=Members&PerPage=$PerPage&DisplayPage=$DisplayPage&ListID=$ListID&$URLDATA"; $OUTPUT .= MakeSuccessBox("Subscriber Details Updated Successfully", "The selected subscribers details have been updated successfully.", MakeAdminLink($link)); }else { $OUTPUT .= MakeErrorBox("Update Subscriber Details", "The following errors occurred while trying to update this subscribers details:"); } } else { $member=mysql_fetch_assoc(mysql_query("SELECT * FROM " . $TABLEPREFIX . "members WHERE MemberID='".addslashes($UserID)."'")); $ListID=stripslashes($member['ListID']); $list=mysql_fetch_assoc(mysql_query("SELECT * FROM " . $TABLEPREFIX . "lists WHERE ListID='".addslashes($ListID)."'")); //edit a member form! if ($Save != 'Member') { $Format=$member['Format']; $Status=$member['Status']; $Confirmed=$member['Confirmed']; $Email=$member['Email']; } $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Status"]="select|Status:1:0->Inactive;1->Active:$Status"; $HELP_ITEMS["Status"]["Title"] = "Status"; $HELP_ITEMS["Status"]["Content"] = "Should this subscriber be active or inactive? Generally, you would set a subscriber to inactive if you want to stop them from receiving your newsletter."; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Confirmed"]="select|Confirmed:1:0->Not Confirmed;1->Confirmed:$Confirmed"; $HELP_ITEMS["Confirmed"]["Title"] = "Confirmed"; $HELP_ITEMS["Confirmed"]["Content"] = "Should this subscriber be marked as confirmed? Generally, if a subscriber is confirmed then it means that they either have a valid email, or have clicked on the link in the subscriber confrirmation email."; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Format"]="select|Format:1:1->Text;2->HTML:".$Format; $HELP_ITEMS["Format"]["Title"] = "Format"; $HELP_ITEMS["Format"]["Content"] = "Which type of newsletters should this subscriber be marked to receive?"; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Email"]="textfield|Email:100:44:" . str_replace(':', '$$COLON$$', $Email); $HELP_ITEMS["Email"]["Title"] = "Email"; $HELP_ITEMS["Email"]["Content"] = "This subscribers email address."; $size = $min = $max = $Width = $Height = 0; //extra fields $custom_fields = FetchCustomFields(); foreach($custom_fields as $pos => $f) { $f = stripslashes_array($f); $result = mysql_query("SELECT Value FROM " . $TABLEPREFIX . "list_field_values WHERE ListID='".addslashes($ListID)."' AND UserID='".addslashes($UserID)."' AND FieldID='".addslashes($f['FieldID'])."'"); if (mysql_num_rows($result) > 0) { $mval=mysql_result($result, 0, 0); } else { $mval = ''; } if($f['Required'] == 1) $n = $FORM_REQUIRED_ITEM; else $n = $FORM_NOT_REQUIRED_ITEM; switch($f['FieldType']){ case 'shorttext': $fieldvals = explode(',', $f['AllValues']); $size = (isset($fieldvals[0])) ? $fieldvals[0] : 10; $min = (isset($fieldvals[1])) ? $fieldvals[1] : 10; $max = (isset($fieldvals[2])) ? $fieldvals[2] : 0; $FORM_ITEMS[$n . $f["FieldName"]]="textfield|Fields[".$f["FieldID"]."]:$max:44:".str_replace(':', '$$COLON$$', $mval); break; case 'longtext': list($Width,$Height)=explode(",",$f["AllValues"]); $FORM_ITEMS[$n . $f["FieldName"]]="textarea|Fields[".$f["FieldID"]."]:50:10:".str_replace(':', '$$COLON$$', $mval); break; case 'checkbox': $FORM_ITEMS[$n . $f["FieldName"]]="checkbox|Fields[".$f["FieldID"]."]:CHECKED:Yes:".$mval; break; case 'multicheckbox': $mval = str_replace(':', ',', $mval); $FORM_ITEMS[$n . $f["FieldName"]]="checkboxes|Fields[".$f["FieldID"]."]:" . $f['AllValues'] . ":".$mval; break; case 'dropdown': $FORM_ITEMS[$n . $f["FieldName"]]="select|Fields[".$f["FieldID"]."]:1:".$f["AllValues"].":".$mval; break; case 'datebox': $FORM_ITEMS[$n . $f["FieldName"]]="datebox|Fields[".$f["FieldID"]."]:" . $f['AllValues'] . ":".$mval; break; case 'number': $fieldvals = explode(',', $f['AllValues']); $size = (isset($fieldvals[0])) ? $fieldvals[0] : 10; $min = (isset($fieldvals[1])) ? $fieldvals[1] : 10; $max = (isset($fieldvals[2])) ? $fieldvals[2] : 0; $FORM_ITEMS[$n . $f["FieldName"]]="number|Fields[".$f["FieldID"]."]:$max:44:".$mval; break; } } if ($DisplayPage > 0) $URLDATA .= "&DisplayPage=$DisplayPage&"; $URLDATA .= EncodeFields($Fields); $FORM_ITEMS["-1"]="submit|Save:1-members&ListID=$ListID&View=Members&$URLDATA-Are you sure you wish to cancel?"; $FORM=new AdminForm; $FORM->title="EditMember"; $FORM->items=$FORM_ITEMS; $SearchData = EncodeFields($Fields, 'SearchFields'); $FORM->action=MakeAdminLink("members?ListID=$ListID&PerPage=$PerPage&DisplayPage=$DisplayPage&OldEmail=$Email&Save=Member&UserID=$UserID&Action=EditMember&SearchStatus=".$_GET['Status']."&SearchConfirmed=".$_GET['Confirmed']."&SearchFormat=".$_GET['Format']."&$SearchData&Email=$Email&SearchEmail=".$_GET['Email']); $FORM->MakeForm("Subscriber Details"); $FORM->output = "Complete the form below to update this subscribers details." . $FORM->output; $OUTPUT.=MakeBox('Edit Existing Subscriber', $FORM->output); $OUTPUT .= ' '; } } if($Action=="AddMember"){ if(!$Email){ $Error.="
    Email required"; } $custom_fields = FetchCustomFields(); foreach($custom_fields as $pos => $f) { $f = stripslashes_array($f); if($f["Required"] && !$Fields[$f["FieldID"]]) { $Error.="
    ".$f["FieldName"]." required"; }elseif($f["FieldType"]=="shorttext" || $f["FieldType"]=="longtext") { if($f["Required"] && $Fields[$f["FieldID"]]==$f["DefaultValue"]) { $Error.="
    ".$f["FieldName"]." required"; } } } //check the email addy is not banned! if(Banned($Email, $ListID)){ $Error.="
    Email address is banned from list"; } if(OnList($Email, $ListID)){ $Error.="
    Email already on list"; } if(!$Error){ //add the member! $ConfirmCode=md5(uniqid(rand())); mysql_query("INSERT INTO " . $TABLEPREFIX . "members SET ConfirmCode='".addslashes($ConfirmCode)."', Email='".addslashes($Email)."', ListID='".addslashes($ListID)."', Status='".addslashes($Status)."', Confirmed='".addslashes($Confirmed)."', SubscribeDate='".addslashes($SYSTEMTIME)."'"); $UserID=mysql_insert_id(); $Email=""; $custom_fields = FetchCustomFields(); foreach($custom_fields as $pos => $f) { $f = stripslashes_array($f); mysql_query("INSERT INTO " . $TABLEPREFIX . "list_field_values SET UserID='".addslashes($UserID)."', ListID='".addslashes($ListID)."', FieldID='".addslashes($f['FieldID'])."', Value='".addslashes($Fields[$f['FieldID']])."'"); } $Action=""; unset($Fields); }else{ $Error="
    Errors Occurred!
    ".$Error; } } if($View=="Members") { if (isset($_GET['SearchFields']) && !empty($_GET['SearchFields'])) $Fields = urldecode($_GET['SearchFields']); $Fields = stripslashes_array($Fields); if(!is_numeric($ListID)) $ListName = "All Lists"; else $ListName = "'" . stripslashes_array(mysql_result(mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID = '".addslashes($ListID)."'"), 0, 0)) . "'"; if($OffSet == "") $OffSet = 0; if($SubAction == "Delete") { mysql_query("DELETE FROM " . $TABLEPREFIX . "members WHERE MemberID = '".addslashes($UserID)."'"); mysql_query("DELETE FROM " . $TABLEPREFIX . "list_field_values WHERE UserID = '".addslashes($UserID)."'"); } $Members=ReturnMembers($ListID,$Email,$Status,$Confirmed,$Fields,$HaveClickedLink,$Format, false, array(), true); $TotalResult = $Members; if($DisplayPage == "") $DisplayPage = 0; if ((int)$PerPage <= 0) $PerPage = 20; if($TotalResult<=$PerPage){ $Pages=1; }else{ $Pages=ceil($TotalResult/$PerPage); } $URLDATA .= EncodeFields($Fields); $URLDATA.="PerPage=$PerPage&"; $URLDATA.="Status=$Status&"; $URLDATA.="Confirmed=$Confirmed&"; $URLDATA.="Email=$Email&Format=$Format&"; // so we don't have to work out complex regular expressions to take out the order and direction later, save these for the sorting URL's we'll create below. $email_order_urldata = $subscribed_order_urldata = $URLDATA; if (isset($_GET['Order'])) $URLDATA .= "Order=" . $_GET['Order'] . "&"; if (isset($_GET['Order']) && isset($_GET['Direction'])) $URLDATA .= "Direction=" . $_GET['Direction'] . "&"; if($Members) { $can_delete_subscribers = AllowSection(19); if(!$OffSet) { $OffSet=0; } $Total = number_format($TotalResult, 0) . ($TotalResult == 1 ? " result" : " results"); $lastOffset = 0; $bo = "Your search returned " . $Total . ". Currently displaying page " . number_format(($DisplayPage+1),0) . " of " . number_format($Pages,0) . " pages.

    "; if ($can_delete_subscribers) { $bo .= "

    "; } $bo .= '
    '; if($Pages > 1) { $bo .= ' '; } $email_order_url = MakeAdminLink("members?View=Members&DisplayPage=0&ListID=$ListID&$email_order_urldata&Order=Email"); $subscribed_order_url = MakeAdminLink("members?View=Members&DisplayPage=0&ListID=$ListID&$subscribed_order_urldata&Order=SubscribeDate"); $bo.=' '; if ($can_delete_subscribers) { $bo .= ' '; } $bo .= ''; $limit_results = array(); $limit_results['Start'] = ($DisplayPage*$PerPage); $limit_results['Number'] = $PerPage; $order_results = (isset($_GET['Order'])) ? $_GET['Order'] : 'Email'; $direction = (isset($_GET['Direction'])) ? $_GET['Direction'] : 'Up'; $WM = ReturnMembers($ListID,$Email,$Status,$Confirmed,$Fields,$HaveClickedLink,$Format, true, array(), false, $limit_results, $order_results, $direction); foreach($WM as $UserID){ $member=mysql_fetch_assoc(mysql_query("SELECT * FROM " . $TABLEPREFIX . "members WHERE MemberID='".addslashes($UserID)."'")); $bo .= ' '; if ($can_delete_subscribers) { $bo .= ' '; } $bo .= ''; } $bo .= '
    '; if($DisplayPage > 0) { $bo .= ' «« |'; } if($DisplayPage > 0){ $bo.=' Prev |'; } $sPos = $DisplayPage - 10; if($sPos < 0) $sPos = 0; $ePos = $DisplayPage + 10; if($ePos > $Pages) $ePos = $Pages; for($i = $sPos; $i < $ePos; $i++) { if($DisplayPage != $i) { $bo .= ' ' . ($i+1) . ' |'; } else { $bo .= ' ' . ($i+1) . ' |'; } $lastOffset = ($i*$PerPage); } if($DisplayPage < $Pages-1) { $bo.=' Next |'; } if($Pages > 1) { $bo .= ' »»'; } $bo .= '
      Email Address Sort UpSort Down Date Subscribed Sort UpSort Down Status Confirmed Action   Delete  
    ' . $member["Email"] . ' ' . DisplayDate($member["SubscribeDate"]) . ' '; if($member["Status"] == 1) $bo .= 'Active'; else $bo .= 'Inactive'; $bo .= ' '; if($member["Confirmed"] == 1) $bo .= 'Yes'; else $bo .= 'No'; $bo .= ' '; $link = "members?Action=EditMember&PerPage=$PerPage&DisplayPage=$DisplayPage&ListID=$ListID&$URLDATA&UserID=".$member["MemberID"]; $bo .= MakeLink($link, "Edit") . "      "; if ($can_delete_subscribers) { $bo .= MakeConfirmBox("members?View=Members&ListID=$ListID&OffSet=$OffSet&DisplayPage=$DisplayPage&PerPage=$PerPage&SubAction=Delete&Status=$Status&Confirmed=$Confirmed&Format=$Format&UserID=".$member["MemberID"] . "&$URLDATA", "Delete", "Are you sure you wish to delete this subsciber?"); } $bo .= '
    '; $bo . '
    '; } else { $bo="No subscribers were found for the selected list. Click on the button below to search again.

    "; } $OUTPUT.=MakeBox("Manage Subscribers for $ListName", $bo); } if($View=="ListSummary"){ if(!is_numeric($ListID)) $ListName = "All Lists"; else $ListName = "'" . stripslashes_array(mysql_result(mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID = '".addslashes($ListID)."'"), 0, 0)) . "'"; if(AllowList($ListID)){ $List=mysql_fetch_assoc(mysql_query("SELECT * FROM " . $TABLEPREFIX . "lists WHERE ListID='".addslashes($ListID)."' ORDER BY ListName ASC")); $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Status"]="select|Status:1:ALL->View All;0->Inactive;1->Active:1"; $HELP_ITEMS["Status"]["Title"] = "Status"; $HELP_ITEMS["Status"]["Content"] = "Search for memebers who are active, inactive or both?"; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Confirmed"]="select|Confirmed:1:ALL->Either;0->Not Confirmed;1->Confirmed:1"; $HELP_ITEMS["Confirmed"]["Title"] = "Confirmed"; $HELP_ITEMS["Confirmed"]["Content"] = "Search for members based on their confirmation status."; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Format"]="select|Format:1:ALL->Either;1->Text;2->HTML"; $HELP_ITEMS["Format"]["Title"] = "Format"; $HELP_ITEMS["Format"]["Content"] = "Search for members who are subscribed to receive the text, HTML or both versions of your newsletter?"; //search for members form! $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match Email"]="textfield|Email:100:44:"; $HELP_ITEMS["Email"]["Title"] = "Match Email"; $HELP_ITEMS["Email"]["Content"] = "If you want to filter subscribers by their email address, then enter the complete or partial email address here."; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Filter by Date"]="dateboxsearch|SubscribeDate::"; $HELP_ITEMS["SubscribeDate"]["Title"] = "Filter by Date"; $HELP_ITEMS["SubscribeDate"]["Content"] = "If you would like to filter your search by date subscribed, select this and select your date range"; $links = FetchLinks(); $alllinks = '0->Not Applicable;A->Any Link;'; foreach($links as $pos => $details) { $alllinks .= $details['LinkID'] . '->' . $details['URL'] . ';'; } $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Clicked on Link"]="select|HaveClickedLink:1:" . str_replace(':', '$$COLON$$', $alllinks); $HELP_ITEMS["HaveClickedLink"]["Title"] = "Have Clicked Link"; $HELP_ITEMS["HaveClickedLink"]["Content"] = "Should this report only include subscribers who have clicked on a particular link from a newsletter that you sent out?"; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Members Per DisplayPage"]="select|PerPage:1:1->1;10->10;20->20;50->50;100->100:20"; $HELP_ITEMS["PerPage"]["Title"] = "Members Per DisplayPage"; $HELP_ITEMS["PerPage"]["Content"] = "How many members should be shown in the list on the next page?"; $fields = FetchCustomFields(); if (!empty($fields)) { $FORM_ITEMS['-100'] = 'spacer|
      Filter by Custom Fields
    '; } foreach($fields as $pos => $f) { $f = stripslashes_array($f); switch($f['FieldType']){ case 'shorttext': if (strpos($f['AllValues'], ',') !== false) { list($size,$min,$max)=explode(',',$f['AllValues']); } else { $size = 10; $min = 10; $max = 10; } $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match ".$f["FieldName"]]="textfield|Fields[".$f["FieldID"]."]:$max:44"; break; case 'longtext': if (strpos($f['AllValues'], ',') !== false) { list($Width,$Height)=explode(',',$f['AllValues']); } else { $Width = 20; $Height = 3; } $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match ".$f["FieldName"]]="textarea|Fields[".$f["FieldID"]."]:50:10"; break; case 'checkbox': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match " . $f["FieldName"]]="select|Fields[".$f["FieldID"]."]:1:y->Yes;n->No;all->All:all"; break; case 'dropdown': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match " . $f["FieldName"]]="select|Fields[".$f["FieldID"]."]:1:->All Values;".str_replace(':', '$$COLON$$', $f["AllValues"]).":"; break; case 'multicheckbox': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match " . $f["FieldName"]]="checkboxes|Fields[".$f["FieldID"]."]:" . $f['AllValues'] . ":"; break; case 'datebox': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match " . $f["FieldName"]]="dateboxsearch|Fields[".$f["FieldID"]."]:" . $f['AllValues'] . ":1"; break; # end case 'datebox' case 'number': if (strpos($f['AllValues'], ',') !== false) { list($size,$min,$max)=explode(',',$f['AllValues']); } else { $size = 10; $min = 10; $max = 10; } $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match ".$f["FieldName"]]="number|Fields[".$f["FieldID"]."]:$max:44"; $HELP_ITEMS['Fields['.$f['FieldID'].']']['Title'] = 'Search Numbers'; $HELP_ITEMS['Fields['.$f['FieldID'].']']['Content'] = 'You can use operators like >, <, <=, >= in this field'; break; } } $FORM_ITEMS[-1]="submit|Search:1-members-Are you sure you wish to cancel managing subscribers?"; $FORM=new AdminForm; $FORM->title="SearchMembers"; $FORM->items=$FORM_ITEMS; $FORM->action=MakeAdminLink("members?View=Members&ListID=$ListID"); $FORM->MakeForm("Search Subscribers"); $FORM->output = "Use the form below to search your members list.
    Once you are done, click on the \"Search\" button below." . $FORM->output; $OUTPUT.=MakeBox("Manage Subscribers for $ListName",$FORM->output); $OUTPUT .= ' '; } } if(!$ListID){ //select ListID form! $lists=mysql_query("SELECT * FROM " . $TABLEPREFIX . "lists ORDER BY ListName ASC"); while($l=mysql_fetch_assoc($lists)) { $l = stripslashes_array($l); if(AllowList($l["ListID"])) { if ($CURRENTADMIN['DisplaySummaries']) { $numSubs = (int)mysql_result(mysql_query("SELECT COUNT(*) from " . $TABLEPREFIX . "members where ListID=" . addslashes($l['ListID'])), 0, 0); if($numSubs == 1) $subs = "1 subscriber"; else $subs = number_format($numSubs, 0) . " subscribers"; $subs = " (" . $subs . ")"; } else { $subs = ""; } $alllists.=$l["ListID"]."->".str_replace(';', '$$SEMI$$', str_replace(':', '$$COLON$$', $l["ListName"]))."$subs;"; } } if ($alllists == '') { $OUTPUT = MakeBox("Manage Subscribers",'No mailing lists have been created. Please click on the "Create Mailing List" button below to create one.



    '); } else { $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Mailing List"]="select|ListID:5:$alllists"; $FORM_ITEMS["-1"]="submit|Next »"; $FORM=new AdminForm; $FORM->title="SelectList"; $FORM->items=$FORM_ITEMS; $FORM->action=MakeAdminLink("members?View=ListSummary"); $FORM->MakeForm("Mailing List Details"); $FORM->output = "Before you view and manage members, please choose a mailing list to work with." . $FORM->output; $OUTPUT.=MakeBox("Manage Subscribers",$FORM->output); $OUTPUT .= ' '; } } ?>