function _wpr_new_broadcast_handler() { $newsletters = _wpr_get_newsletters(); _wpr_set("newsletterList", $newsletters); _wpr_set("send", "immediately"); _wpr_set("timezone", "+00:00"); }
function _wpr_subscriptionform_form($parameters = array(), $errors = array()) { $parameters = (object) $parameters; if (!empty($parameters->custom_fields)) { $fieldsToSelect = explode(",", $parameters->custom_fields); } global $wpdb; ?> <div class="wrap"> <h2>Create Subscription Form</h2> </div> <script> function Autoresponder(id,name) { this.id=id; this.name=name; } var AutorespondersOfNewsletters=new Array(); <?php $listOfAutorespondersOfNewsletters = _wpr_get_newsletters(); foreach ($listOfAutorespondersOfNewsletters as $count => $news) { ?> AutorespondersOfNewsletters['<?php echo $news->id; ?> '] = new Array(); <?php $autoresponders = Autoresponder::getAutorespondersOfNewsletter($news->id); foreach ($autoresponders as $autoresponder) { $aid = $autoresponder->getId(); $name = $autoresponder->getName(); if ($aid == 0 || empty($name)) { continue; } ?> AutorespondersOfNewsletters['<?php echo $news->id; ?> '].push(new Autoresponder(<?php echo $aid; ?> ,"<?php echo $name; ?> ")); <?php } } ?> function autoresponderDropDownBox() { return document.getElementById('autoresponders_list'); } function updateAutorespondersOption(currentNid) { if (AutorespondersOfNewsletters[currentNid]!=undefined) { var listOfResponders = AutorespondersOfNewsletters[currentNid]; if (listOfResponders.length!=0) { //remove the options in the autoresponder series drop down box. emptyAutoresponderFields(); var countOfOptions=0; for (var newopt in listOfResponders) { var theOpt = document.createElement("option"); theOpt.setAttribute("value","autoresponder_"+listOfResponders[newopt].id); theOpt.innerHTML = listOfResponders[newopt].name; autoresponderDropDownBox().appendChild(theOpt); } } else { emptyAutoresponderFields(); } } else { emptyAutoresponderFields(); return false; } } function _wpr_validate_subform_form_fields() { var titleField =document.getElementById('formnamefield'); if (titleField.value.length==0) { alert("A name is required for this form. Please enter a name."); titleField.focus(); return false; } var newsletterField = document.getElementById('newsletterlist'); if (newsletterField.value=="") { alert("You must select a newsletter to which this subscription form will add subscribers."); newsletterField.focus(); return false; } var confirmS = document.getElementById('confirms'); if (jQuery.trim(confirmS.value).length==0) { alert("You must enter a subject for the confirm subscription e-mail."); confirmS.value=''; confirmS.focus(); return false; } var confirmB = document.getElementById('confirmb'); if (jQuery.trim(confirmB.value).length==0) { alert("You must enter a body for the confirm subscription e-mail."); confirmB.value=''; confirmB.focus(); return false; } var confirmedS = document.getElementById('confirmeds'); if (jQuery.trim(confirmedS.value).length==0) { alert("You must enter a subject for the confirmed subscription e-mail."); confirmedS.value=''; confirmedS.focus(); return false; } var confirmedB = document.getElementById('confirmedb'); if (jQuery.trim(confirmedB.value).length==0) { alert("You must enter a body for the confirmed subscription e-mail."); confirmedB.value=''; confirmedB.focus(); return false; } var returnurlf = document.getElementById('returnurlfield'); returnurl = returnurlf.value; if (jQuery.trim(returnurl).length !=0 && !checkURL(returnurl)) { alert("The value in the return URL field should be a HTTP url. Please correct it or leave the field empty."); returnurlf.value=''; returnurlf.focus(); return false; } return true; } function checkURL(value) { var urlregex = new RegExp( "^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.|http:\/\/){1}([0-9A-Za-z]+\.)"); if(urlregex.test(value)) { return(true); } return(false); } function emptyAutoresponderFields() { jQuery("#autoresponders_list").children().each( function () { jQuery(this).remove(); }); } function Field(id,name,type,label,choices) { this.name = name; this.id = id; this.type = type; this.label = label; this.choices = choices; } var Fields = new Array(); <?php $query = "SELECT * FROM " . $wpdb->prefix . "wpr_custom_fields"; $customfields = $wpdb->get_results($query); $count = 0; $newsletterlist = array(); foreach ($customfields as $field) { $newsletterlist[] = $field->nid; } if (count($newsletterlist)) { $newsletterlist = array_unique($newsletterlist); } ?> var NewsletterFields = Array(); <?php foreach ($newsletterlist as $newsletter) { ?> NewsletterFields['<?php echo $newsletter; ?> '] = new Array(); <?php } foreach ($customfields as $field) { ?> NewsletterFields['<?php echo $field->nid; ?> '].push(new Field('<?php echo $field->id; ?> ','<?php echo addslashes($field->name); ?> ','<?php echo addslashes($field->type); ?> ','<?php echo addslashes($field->label); ?> ','<?php echo addslashes($field->enum); ?> ')); <?php } ?> var customFieldList = new Array(); function showFields(elements) { var fieldsCode; if (elements && elements.length > 0) document.getElementById('customfields').innerHTML = ''; else return; for (element in elements) { field = elements[element]; var element = document.createElement("div"); customFieldList.push(element); element.setAttribute("style","border: 1px solid #ccc; padding: 10px;"); var formelement; var check = document.createElement("input"); check.setAttribute("type","checkbox"); check.setAttribute("name","custom_fields[]"); check.setAttribute("value",field.id); check.setAttribute("id","custom_"+field.id); element.appendChild(check); element.innerHTML += " "+field.name+"<br />"; preview = document.createElement("div"); preview.innerHTML += field.label +":"; preview.setAttribute("style","background-color: #ddd; border: 1px solid #eee; padding: 10px;"); if (field.type == "text") { element.innerHTML += "Type: One Line Text <br /><strong>Preview: <br />"; formelement = document.createElement("input"); formelement.setAttribute("type","text"); } else { formelement = document.createElement("select"); var choices = field.choices.split(","); element.innerHTML += "Type: Multiple Choice<br /><strong>Preview: <br />"; for (option in choices) { optionElement = document.createElement("option"); optionElement.text = choices[option]; formelement.add(optionElement,null); } } preview.appendChild(formelement); element.appendChild(preview); element.innerHTML += "<br>"; document.getElementById('customfields').appendChild(element); } } var autoresponderToBeSelected = '<?php echo @$parameters->followup_type == "postseries" ? "postseries_" : "autoresponder_"; echo @$parameters->followup_id; ?> '; function setValueOfAutoresponderField() { document.getElementById('followup_field').value=autoresponderToBeSelected; } function load(id) { document.getElementById('customfields').innerHTML="<div align=\"center\">--None--</div>"; showFields(NewsletterFields[id]); } var toSelect = new Array(); //custom field ids to select. <?php if (isset($fieldsToSelect) && count($fieldsToSelect) > 0) { ?> <?php foreach ($fieldsToSelect as $num => $field) { ?> toSelect[<?php echo $num; ?> ] = <?php echo $field; ?> ; <?php } } function loadFollowUpAutoresponderList() { } ?> jQuery(document).ready(function() { var selectedNewsletter = document.getElementById('newsletterlist').options[document.getElementById('newsletterlist').selectedIndex].value; showFields(NewsletterFields[selectedNewsletter]); updateAutorespondersOption(selectedNewsletter); setValueOfAutoresponderField(); //if this form is being used to edit, then select the fields that were saved.. for (var i in toSelect) { document.getElementById('custom_'+toSelect[i]).checked=true; } }); </script> <?php if (count($errors) > 0) { ?> <div class="updated fade"> <ul> <?php foreach ($errors as $error) { echo '<li>' . $error . '</li>'; } ?> </ul> </div> <?php } ?> <div style="display:none"> <?php $query = sprintf("SELECT id from %swpr_newsletters", $wpdb->prefix); $newsletters = $wpdb->get_results($query); foreach ($newsletters as $newsletter) { $nid = $newsletter->id; ?> <div id="fields-<?php echo $nid; ?> "> <?php $query = sprintf("SELECT * FROM %swpr_custom_fields where nid = {$nid}", $wpdb->prefix); $customFields = $wpdb->get_results($query); foreach ($customFields as $field) { ?> <div class="field"> Name Of Field: <?php echo $field->name; ?> <br /> Field Label: <?php echo $field->label; ?> <br /> <?php switch ($field->type) { case 'text': ?> Type: One Line Text Preview: <input type="text" size="30" /> <?php break; case 'enum': $choices = $field->enum; $choices = explode(",", $choices); ?> Type: Multiple Choice<br /> Preview: <select> <?php foreach ($choices as $choice) { ?> <option><?php echo $choice; ?> </option> <?php } ?> </select> <?php break; case 'hidden': ?> Type: Hidden<br /> Preview: Hidden fields aren't visible on the page. <?php break; } ?> </div> <?php } ?> </div> <?php } ?> </div> <form action="<?php print $_SERVER['REQUEST_URI']; ?> " method="post"> <table width="700"> <tr> <td><strong>Name:</strong> <p><small>This form's settings will be saved. This name will be used to identify the settings.</small></p></td> <td><input type="text" id="formnamefield" name="name" size="60" value="<?php echo isset($parameters->name) ? $parameters->name : ''; ?> " /></td> </tr> <tr> <td><strong>Newsletter:</strong> <p><small>Select the newsletter to which subscribers will be subscribed when filling this form.</small></p></td> <td><select name="newsletter" id="newsletterlist" onchange="load(this.options[this.selectedIndex].value);updateAutorespondersOption(this.options[this.selectedIndex].value);"> <?php $query = "SELECT * FROM " . $wpdb->prefix . "wpr_newsletters"; $newsletters = $wpdb->get_results($query); if (count($newsletters) > 0) { ?> <option></option> <?php foreach ($newsletters as $newsletter) { ?> <option value="<?php echo $newsletter->id; ?> " <?php if (isset($parameters->nid) && $parameters->nid == $newsletter->id) { echo 'selected="selected"'; } ?> ><?php echo $newsletter->name; ?> </option> <?php } } ?> </select> </tr> <tr> <td width="300"><strong>Return URL:</strong> <p><small> The subscriber is sent to this url after entering their name and email address in the subscription form. </small></p></td> <td><input type="text" id="returnurlfield" name="return_url" size="60" value="<?php echo !empty($parameters->return_url) ? $parameters->return_url : ''; ?> " /></td> </tr> <tr> <td><strong>Blog Subscription</strong>: <p> <small> Specify what kind of blog subscription will those who use this form will have:</small></p></td> <td> <select name="blogsubscription"> <option value="none" <?php if (!empty($parameters->blogsubscription_type) && $parameters->blogsubscription_type == "none") { echo 'selected="selected"'; } ?> >None</option> <option value="all" <?php if (!empty($parameters->blogsubscription_type) && $parameters->blogsubscription_type == "all") { echo 'selected="selected"'; } ?> >Subscribe to all new posts on <?php bloginfo("name"); ?> </option> <optgroup label="Particular Blog Category:"> <?php $args = array('type' => 'post', 'child_of' => 0, 'orderby' => 'name', 'order' => 'ASC', 'hide_empty' => false, 'hierarchical' => 0); $categories = get_categories($args); foreach ($categories as $category) { ?> <option value="category_<?php echo $category->term_id; ?> " <?php if (!empty($parameters->blogsubscription_type) && $parameters->blogsubscription_type == "cat" && $parameters->blogsubscription_id == $category->term_id) { echo 'selected="selected"'; } ?> ><?php echo $category->name; ?> </option> <?php } ?> </optgroup> </select></td> </tr> <tr> <td><strong>Follow Up Subscription:</strong> <p> <small>Select what content should follow-up a successful subscription.</small></p></td> <?php //construction of options for the followup subscriptions field. $types['Autoresponders'] = array(); $types['Selected'] = null; //repeat the same with post series $getPostSeriesList = sprintf("SELECT * FROM %swpr_blog_series", $wpdb->prefix); $listOfPostSeries = $wpdb->get_results($getPostSeriesList); $types['Post Series'] = array(); foreach ($listOfPostSeries as $post_series) { $item = array("name" => $post_series->name, "id" => "postseries_" . $post_series->id); $types['Post Series'][] = $item; //TODO: remove this code entirely once we can get to the point where we are phasing out post series. if (@($parameters->followup_type = "postseries" && @$parameters->followup_id == $post_series->id)) { $indexOfThisItem = count($types['Post Series']) - 1; $types['Post Series'][$indexOfThisItem]['selected'] = true; $types['Selected'] =& $types['Post Series'][$indexOfThisItem]; } } $types = apply_filters("_wpr_subscription_form_followup_options", $types); $whetherInvalidFollowupSeries = false; if (!empty($parameters->followup_id) && $parameters->followup_id != 0 && $types['Selected'] == null) { $whetherInvalidFollowupSeries = true; } ?> <td><select name="followup" id="followup_field"> <?php //if the selected option is a null then set the none option as the selected item ?> <option value="0" <?php if ($types['Selected'] == null) { ?> selected="selected" <?php } ?> >None</option> <optgroup id="autoresponders_list" label="Autoresponders"></optgroup> <?php foreach ($types as $group => $options) { if ($group == "Selected" || $group == "Autoresponders") { continue; } ?> <optgroup label="<?php echo $group; ?> "> <?php if (count($options)) { foreach ($options as $option) { ?> <option <?php if ($types['Selected'] == $option) { ?> selected="selected" <?php } ?> value="<?php echo $option['id']; ?> "><?php echo $option['name']; ?> </option> <?php } } else { ?> <option disabled="disabled">None defined</option><?php } ?> </optgroup> <?php } ?> </select></td> </tr> <tr> <td><strong>Submit Button Text:</strong> <p> <small>The label that will be used for the subscription form submit button</small></p> </td> <td><input type="text" size="60" name="submit_value" value="<?php echo !empty($parameters->submit_button) ? $parameters->submit_button : "Subscribe"; ?> " ></td> </tr> <?php if (empty($parameters->id)) { do_action("_wpr_subscriptionform_form_field", 0); } else { do_action("_wpr_subscriptionform_form_field", $parameters->id); } ?> <tr> <td colspan="2"><div class="wrap"> <h3>More Form Fields</h3> <hr size="1" color="black"> <p>Select the custom fields that should be added to the in the opt-in form.</p> </div> <div id="customfields"> </div></td> </tr> <tr> <td><h3> Confirmation E-Mail:</h3> <table> <tr> <td>Subject:</td> <td><input type="text" id="confirms" name="confirm_subject" size="70" value="<?php if (empty($parameters->confirm_subject)) { $confirm_subject = get_option('wpr_confirm_subject'); echo $confirm_subject; } else { echo $parameters->confirm_subject; } ?> " /></td> </tr> <tr> <td colspan="2"> Message Body:<br /> <textarea id="confirmb" name="confirm_body" rows="10" cols="100"><?php if (empty($parameters->confirm_body)) { $confirm_email = get_option('wpr_confirm_body'); echo $confirm_email; } else { echo $parameters->confirm_body; } ?> </textarea></td> </tr> </table> <h3>Subscription Confirmed E-Mail:</h3> <table> <tr> <td>Subject:</td> <td><input id="confirmeds" type="text" name="confirmed_subject" value="<?php echo !empty($parameters->confirmed_subject) ? $parameters->confirmed_subject : get_option("wpr_confirmed_subject"); ?> " size="60" /></td> </tr> <tr> <td colspan="2"> Message Body:<br /> <textarea id="confirmedb" name="confirmed_body" rows="10" cols="100"><?php echo !empty($parameters->confirmed_body) ? $parameters->confirmed_body : get_option("wpr_confirmed_body"); ?> </textarea></td> </tr> </table></td> </tr> <tr> <td colspan="2"> <?php if (isset($parameters->id)) { ?> <input type="hidden" name="fid" value="<?php echo $parameters->id; ?> "/> <?php } ?> <input class="button" type="submit" onclick="return _wpr_validate_subform_form_fields()" value="Create Form And Get Code" /> <a class="button" href="admin.php?page=wpresponder/subscriptionforms.php">Cancel</a></td> </tr> </table> </form> <?php }
function wpr_actions() { ?> <div class="wrap"> <h2>Automatic Inter-Newsletter Subscriber Transfer</h2> <script> function checkAll(state) { jQuery(".rulecheck").attr({checked: state}); } </script> Here you can define rules such that if someone subscribes to newsletter B, they will be automatically unsubscribed from Newsletter A. <h3>Subscriber Transfer Rules</h3> <p> <table id="rulelist" class="widefat" width="1100"> <thead><tr> <th> <input type="checkbox" name="checker" onChange="checkAll(this.checked)" value="all"></th> <th> Unsubscribe a subscriber from newsletter....</th> <th> ...if they subscribe to newsletter</th> </tr> </thead> <tr> <?php $rules = _wpr_get_transfer_rules(); foreach ($rules as $name => $rule) { ?> <tr id="rule_<?php echo $rule->id; ?> "> <td ><input class="rulecheck" type="checkbox" name="rules[]" value="<?php echo $rule->id; ?> "></td> <td ><?php $sourceNewsletter = _wpr_newsletter_get($rule->source); echo $sourceNewsletter->name; ?> </td> <td><?php $destNewsletter = _wpr_newsletter_get($rule->dest); echo $destNewsletter->name; ?> </td> <?php } ?> </table> <p></p> <input type="submit" name="submit" onclick="deleteSelected();" value="Delete" class="button-primary" /> <script> </script> <script> var existingRules; function deleteSelected() { var rulesToDelete = new Array(); if (!window.confirm('Are you sure you want to delete the selected rules?')) { jQuery(".rulecheck").each (function() { this.checked=false; }); return false; } jQuery(".rulecheck").each ( function() { var id = this.value; if (this.checked) rulesToDelete.push(id); }); rulesString = rulesToDelete.join(","); jQuery.post('admin.php?page=wpresponder/actions.php', { rulesList: rulesString, wpr_form: "sub_transfer_delete_form" }, function(data) { var result = eval(data); if (result[0] == 'SUCCESS') { removeRows(rulesString); } else if (result[0] == 'ERROR') { alert('An unknown error occured. Plesae try again later.'); } }); } var debu; function removeRows(rulesList) { var rulesToDelete = rulesList.split(","); debu = rulesToDelete; if (rulesToDelete.length > 0) { for (var i in rulesToDelete) { rowName = "#rule_"+rulesToDelete[i]; jQuery(rowName).remove(); } return true; } else return false; } function dest() { return document.getElementById('destination'); } function source() { return document.getElementById('source'); } function addRule() { var sid = source().options[source().selectedIndex].value; var did = dest().options[dest().selectedIndex].value; if (sid == did) { alert("The source and destination newsletters cannot be the same. Please select a different combination"); return false; } jQuery.post('admin.php?page=wpresponder/actions.php', { source: sid, destination: did, wpr_form: "sub_transfer_add_rule" }, function(data) { var response = eval(data); if (response[0] == 'SUCCESS') { addRowToTable(response[1],sid,did); } else if (response[0]=='EXISTS') { alert("That rule already exists."); } else { alert("An unknown internal error occured. The response from the server was not recognized."); } }); } function Newsletter(id,name) { this.id=id; this.name=name; } var Newsletters = new Array(); <?php $newsletters = _wpr_get_newsletters(); foreach ($newsletters as $newsletter) { ?> Newsletters[<?php echo $newsletter->id; ?> ] = new Newsletter(<?php echo $newsletter->id; ?> ,"<?php echo $newsletter->name; ?> "); <?php } ?> function ge(id) { return document.getElementById(id); } function addRowToTable(id,sid,did) { var tr = ce("tr"); tr.setAttribute("id","rule_"+id); var td1 = ce("td"); var input = ce("input"); input.setAttribute("name","rules[]"); input.setAttribute("value",id.toString()); input.setAttribute("type","checkbox"); input.setAttribute("class","rulecheck"); td1.appendChild(input); tr.appendChild(td1); var td2 = ce("td"); td2.innerHTML = Newsletters[sid].name; tr.appendChild(td2); var td3 = ce("td"); td3.innerHTML = Newsletters[did].name; tr.appendChild(td3); ge('rulelist').appendChild(tr); } function ce(tagname) { return document.createElement(tagname); } </script> <h3>Add Rule</h3> <?php if (count($newsletters) > 0) { ?> <form name="subscriber_transfer"> <table> <tr> <td>Unsubscribe a subscriber from newsletter <select name="source_nid" id="source"> <?php $newsletters = _wpr_get_newsletters(); foreach ($newsletters as $newsletter) { ?> <option value="<?php echo $newsletter->id; ?> "><?php echo $newsletter->name; ?> </option><?php } ?> </select> if they subscribe to newsletter <select name="destination_nid" id="destination"> <?php $newsletters = _wpr_get_newsletters(); foreach ($newsletters as $newsletter) { ?> <option value="<?php echo $newsletter->id; ?> "><?php echo $newsletter->name; ?> </option><?php } ?> </select>. </td> </tr> </table> <input type="button" class="button-primary" onClick="addRule();" value="Add Rule"> </form> <?php } else { ?> You must first <a href="admin.php?page=_wpr/newsletter&act=add">create a newsletter</a> before adding a rule.<?php } ?> </div> <?php }