From: <pk...@us...> - 2010-08-30 20:32:57
|
Revision: 28788 http://tikiwiki.svn.sourceforge.net/tikiwiki/?rev=28788&view=rev Author: pkdille Date: 2010-08-30 20:32:51 +0000 (Mon, 30 Aug 2010) Log Message: ----------- [ENH] admin newsletter subscriptions: add checkbox for mass subscription deletion Modified Paths: -------------- trunk/lib/newsletters/nllib.php trunk/templates/tiki-admin_newsletter_subscriptions.tpl trunk/tiki-admin_newsletter_subscriptions.php Modified: trunk/lib/newsletters/nllib.php =================================================================== --- trunk/lib/newsletters/nllib.php 2010-08-30 20:17:09 UTC (rev 28787) +++ trunk/lib/newsletters/nllib.php 2010-08-30 20:32:51 UTC (rev 28788) @@ -293,12 +293,34 @@ return $return; } - function remove_newsletter_subscription($nlId, $email, $isUser) { + /** + * Removes newsletters subscriptions + * + * @param integer $nlId + * @param string $email + * @param boolean $isUser + * @access public + * @return void + */ + function remove_newsletter_subscription($nlId, $email, $isUser) + { $query = "delete from `tiki_newsletter_subscriptions` where `nlId`=? and `email`=? and `isUser`=?"; - $result = $this->query($query, array((int)$nlId,$email, $isUser),-1, -1, false); - /*$this->update_users($nlId);*/ + $result = $this->query($query, array((int)$nlId, $email, $isUser), -1, -1, false); } + /** + * Removes newsletters subscriptions with only the code as parameter + * + * @param string $code + * @access public + * @return void + */ + function remove_newsletter_subscription_code($code) + { + $query = 'delete from `tiki_newsletter_subscriptions` where `code`=?'; + $result = $this->query($query, array($code), -1, -1, false); + } + function remove_newsletter_group($nlId, $group) { $query = "delete from `tiki_newsletter_groups` where `nlId`=? and `groupName`=?"; $result = $this->query($query, array((int)$nlId,$group), -1, -1, false); Modified: trunk/templates/tiki-admin_newsletter_subscriptions.tpl =================================================================== --- trunk/templates/tiki-admin_newsletter_subscriptions.tpl 2010-08-30 20:17:09 UTC (rev 28787) +++ trunk/templates/tiki-admin_newsletter_subscriptions.tpl 2010-08-30 20:32:51 UTC (rev 28788) @@ -99,9 +99,14 @@ {include file='find.tpl'} +<form method="post" action="tiki-admin_newsletter_subscriptions.php"> + <input type="hidden" name="nlId" value="{$nlId|escape}" /> <table class="normal"> <tr> <th> + {select_all checkbox_names='checked[]'} + </th> + <th> <a href="tiki-admin_newsletter_subscriptions.php?nlId={$nlId|urlencode}&offset={$offset|urlencode}&sort_mode={if $sort_mode eq 'email_desc'}email_asc{else}email_desc{/if}">{tr}eMail{/tr} - {tr}User{/tr}</a> </th> <th> @@ -114,25 +119,41 @@ </tr> {cycle values="odd,even" print=false} {section name=user loop=$channels} - <tr> - <td class="{cycle advance=false}"> - {if $channels[user].isUser == "y"}{$channels[user].email|userlink}{else}{$channels[user].email|escape}{/if} + <tr class="{cycle}"> + <td style="text-align:center"> + <input type="checkbox" name="checked[]" value="{$channels[user].code}" {if $smarty.request.checked and in_array($channels[user].code, $smarty.request.checked) }checked="checked"{/if} /> </td> - <td class="{cycle advance=false}"> + <td> + {if $channels[user].isUser == "y"} + {$channels[user].email|userlink} + {else} + {$channels[user].email|escape} + {/if} + </td> + <td> {if $channels[user].valid == "n"} <a class="link" href="tiki-admin_newsletter_subscriptions.php?nlId={$nlId|urlencode}&offset={$offset|urlencode}&sort_mode={$sort_mode|urlencode}&valid={$channels[user].nlId|urlencode}&{if $channels[user].isUser eq "y"}user{else}email{/if}={$channels[user].email|escape:"url"}" title="{tr}Valid{/tr}">{tr}No{/tr}</a> {else} {tr}Yes{/tr} {/if} </td> - <td class="{cycle advance=false}">{$channels[user].subscribed|tiki_short_datetime}</td> - <td class="{cycle}"> + <td>{$channels[user].subscribed|tiki_short_datetime}</td> + <td> <a class="link" href="tiki-admin_newsletter_subscriptions.php?nlId={$nlId|urlencode}&offset={$offset|urlencode}&sort_mode={$sort_mode|urlencode}&remove={$channels[user].nlId|urlencode}&{if $channels[user].isUser eq "y"}subuser{else}email{/if}={$channels[user].email|escape:"url"}">{icon _id='cross' alt='{tr}Remove{/tr}'}</a> </td> </tr> {/section} </table> +{if $channels} + <div align="left"> + {tr}Perform action with checked:{/tr} + <input type="image" name="delsel" src='pics/icons/cross.png' alt={tr}Delete{/tr}' title='{tr}Delete{/tr}' /> + </div> +{/if} + +</form> + {pagination_links cant=$cant_pages step=$prefs.maxRecords offset=$offset}{/pagination_links} {/tab} @@ -233,12 +254,14 @@ </td> </tr> {if $nl_info.validateAddr eq "y"} - <td class="formcolor" width="30%"> - {tr}Don't send confirmation mails{/tr} - </td> - <td colspan="2" class="formcolor"> - <input type="checkbox" name="confirmEmail" /> - </td> + <tr> + <td class="formcolor" width="30%"> + {tr}Don't send confirmation mails{/tr} + </td> + <td colspan="2" class="formcolor"> + <input type="checkbox" name="confirmEmail" /> + </td> + </tr> {/if} <tr> <td class="formcolor"> </td> Modified: trunk/tiki-admin_newsletter_subscriptions.php =================================================================== --- trunk/tiki-admin_newsletter_subscriptions.php 2010-08-30 20:17:09 UTC (rev 28787) +++ trunk/tiki-admin_newsletter_subscriptions.php 2010-08-30 20:32:51 UTC (rev 28788) @@ -17,20 +17,26 @@ 'offset_g', 'find_g' ); + $access->check_feature('feature_newsletters'); + if (!isset($_REQUEST["nlId"])) { $smarty->assign('msg', tra('No newsletter indicated')); $smarty->display('error.tpl'); die; } + $info = $nllib->get_newsletter($_REQUEST["nlId"]); + if (empty($info)) { $smarty->assign('msg', tra('Newsletter does not exist')); $smarty->display('error.tpl'); die; } + $smarty->assign('nlId', $_REQUEST["nlId"]); $smarty->assign('individual', 'n'); + if ($userlib->object_has_one_permission($_REQUEST["nlId"], 'newsletter')) { $smarty->assign('individual', 'y'); if ($tiki_p_admin != 'y') { @@ -49,6 +55,13 @@ } $access->check_permission('tiki_p_admin_newsletters'); +if (isset($_REQUEST['delsel_x']) && isset($_REQUEST['checked'])) { + $access->check_authenticity(); + foreach($_REQUEST['checked'] as $check) { + $nllib->remove_newsletter_subscription_code($check); + } +} + $smarty->assign('nl_info', $info); if (isset($_REQUEST["remove"])) { $access->check_authenticity(); @@ -58,15 +71,19 @@ elseif (isset($_REQUEST["included"])) $nllib->remove_newsletter_included($_REQUEST["remove"], $_REQUEST["included"]); elseif (isset($_REQUEST['page'])) $nllib->remove_newsletter_page($_REQUEST['remove'], $_REQUEST['page']); } + if (isset($_REQUEST["valid"])) { check_ticket('admin-nl-subsriptions'); if (isset($_REQUEST["email"])) $nllib->valid_subscription($_REQUEST["valid"], $_REQUEST["email"], "n"); elseif (isset($_REQUEST["subuser"])) $nllib->valid_subscription($_REQUEST["valid"], $_REQUEST["subuser"], "y"); } + if (isset($_REQUEST["confirmEmail"]) && $_REQUEST["confirmEmail"] == "on") $confirmEmail = "n"; else $confirmEmail = $info["validateAddr"]; + if (isset($_REQUEST["addemail"]) && $_REQUEST["addemail"] == "y") $addEmail = "y"; else $addEmail = "n"; + if (isset($_REQUEST["add"]) && isset($_REQUEST["email"]) && $_REQUEST["email"] != "") { check_ticket('admin-nl-subsriptions'); if (strpos($_REQUEST["email"], ',')) { @@ -82,18 +99,22 @@ $nllib->newsletter_subscribe($_REQUEST["nlId"], trim($_REQUEST["email"]) , "n", $confirmEmail, ""); } } + if (isset($_REQUEST["add"]) && isset($_REQUEST['subuser']) && $_REQUEST['subuser'] != "") { check_ticket('admin-nl-subsriptions'); $sid = $nllib->newsletter_subscribe($_REQUEST["nlId"], $_REQUEST["subuser"], "y", $confirmEmail, $addEmail); } + if (isset($_REQUEST["add"]) && isset($_REQUEST["addall"]) && $_REQUEST["addall"] == "on") { check_ticket('admin-nl-subsriptions'); $nllib->add_all_users($_REQUEST["nlId"], $confirmEmail, $addEmail); } + if (isset($_REQUEST["add"]) && isset($_REQUEST['group']) && $_REQUEST['group'] != "") { check_ticket('admin-nl-subsriptions'); $nllib->add_group_users($_REQUEST["nlId"], $_REQUEST['group'], $confirmEmail, $addEmail); } + if (((isset($_REQUEST["addbatch"]) && isset($_FILES['batch_subscription'])) || (isset($_REQUEST['importPage']) && !empty($_REQUEST['wikiPageName']))) && $tiki_p_batch_subscribe_email == 'y' && $tiki_p_subscribe_email == 'y') { check_ticket('admin-nl-subscription'); // array with success and errors @@ -126,18 +147,22 @@ } } } + if (isset($_REQUEST["addgroup"]) && isset($_REQUEST['group']) && $_REQUEST['group'] != "") { check_ticket('admin-nl-subsriptions'); $nllib->add_group($_REQUEST["nlId"], $_REQUEST['group']); } + if (isset($_REQUEST["addincluded"]) && isset($_REQUEST['included']) && $_REQUEST['included'] != "") { check_ticket('admin-nl-subsriptions'); $nllib->add_included($_REQUEST["nlId"], $_REQUEST['included']); } + if (isset($_REQUEST["addPage"]) && !empty($_REQUEST['wikiPageName'])) { check_ticket('admin-nl-subsriptions'); $nllib->add_page($_REQUEST["nlId"], $_REQUEST['wikiPageName'], empty($_REQUEST['noConfirmEmail']) ? 'y' : 'n', empty($_REQUEST['noSubscribeEmail']) ? 'y' : 'n'); } + if (isset($_REQUEST['export'])) { check_ticket('admin-nl-subsriptions'); $users = $nllib->get_all_subscribers($_REQUEST['nlId'], 'y'); @@ -153,22 +178,27 @@ echo $data; die; } + if (!isset($_REQUEST["sort_mode"])) { $sort_mode = 'subscribed_desc'; } else { $sort_mode = $_REQUEST["sort_mode"]; } + if (!isset($_REQUEST["offset"])) { $offset = 0; } else { $offset = $_REQUEST["offset"]; } + $smarty->assign_by_ref('offset', $offset); + if (isset($_REQUEST["find"])) { $find = $_REQUEST["find"]; } else { $find = ''; } + $smarty->assign('find', $find); $smarty->assign_by_ref('sort_mode', $sort_mode); $channels = $nllib->list_newsletter_subscriptions($_REQUEST["nlId"], $offset, $maxRecords, $sort_mode, $find); @@ -184,16 +214,19 @@ $cant_pages_g = ceil($groups_g["cant"] / $maxRecords); $smarty->assign_by_ref('cant_pages_g', $cant_pages_g); $smarty->assign('actual_page_g', 1 + ($offset_g / $maxRecords)); + if ($groups_g["cant"] > ($offset_g + $maxRecords)) { $smarty->assign('next_offset_g', $offset_g + $maxRecords); } else { $smarty->assign('next_offset_g', -1); } + if ($offset_g > 0) { $smarty->assign('prev_offset_g', $offset_g - $maxRecords); } else { $smarty->assign('prev_offset_g', -1); } + $smarty->assign_by_ref('groups_g', $groups_g["data"]); $smarty->assign("nb_groups", $groups_g["cant"]); $included_n = $nllib->list_newsletter_included($_REQUEST["nlId"], 0, -1); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |