• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

cms/email.lib.php

Go to the documentation of this file.
00001 <?php
00002 if(!defined('__PRAGYAN_CMS'))
00003 { 
00004         header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
00005         echo "<h1>403 Forbidden<h1><h4>You are not authorized to access the page.</h4>";
00006         echo '<hr/>'.$_SERVER['SERVER_SIGNATURE'];
00007         exit(1);
00008 }
00017 // For the messenger email class, see common.lib.php
00018 
00019 function getAllUsers() {
00020         $ret = "";
00021         $result = mysql_query("SELECT `user_name`,`user_id`,`user_fullname`,`user_email` FROM `" . MYSQL_DATABASE_PREFIX . "users`");
00022         while($row = mysql_fetch_array($result))
00023                 $ret .= "'{$row['user_id']}' : '{$row['user_name']} - {$row['user_fullname']} [{$row['user_email']}]', ";
00024         $ret = rtrim($ret,", ");
00025         return $ret;    
00026 }
00027 
00028 function getAllGroups() {
00029         $ret = "";
00030         $result = mysql_query("SELECT `group_name`,`group_id` FROM `" . MYSQL_DATABASE_PREFIX . "groups`");
00031         while($row = mysql_fetch_array($result))
00032                 $ret .= "'{$row['group_id']}' : '{$row['group_name']}', ";
00033         $ret = rtrim($ret,", ");
00034         return $ret;
00035 }
00036 
00037 function displayEmail($template = "") {
00038         global $sourceFolder,$urlRequestRoot;
00039         $newSelected = "";
00040         if($template == "" || $template == "new") {
00041                 $newSelected = " selected";
00042                 $content = "";
00043         }
00044         $emailTemplates = "<select id='emailtemplates' name='emailtemplates'><option value='new'{$newSelected}>Create New Template</option>";
00045         $dir = "$sourceFolder/languages/" . LANGUAGE . "/email/templates/";
00046         $handle = opendir($dir);
00047         $subject="";
00048         $content="";
00049         while($file = readdir($handle)) {
00050                 if(substr($file, -4, 4) == ".txt") {
00051                         $name = substr($file, 0, -4);
00052                         if($name == $template) {
00053                                 $emailTemplates .= "<option value='$name' selected> $name </option>";
00054                                 $content = fread(fopen($dir . $file,'r'),filesize($dir.$file));
00055                                 $subject = $name;
00056                         } else {
00057                                 $emailTemplates .= "<option value='$name'> $name </option>";
00058                         }
00059                 }
00060         }
00061         $emailTemplates .= "</select>";
00062         global $ICONS;
00063         $groups = getAllGroups();
00064         $users = getAllUsers();
00065         
00066         
00067         $ret = smarttable::render(array('rcpttable'),null);
00068         
00069         $ret .= <<<RET
00070         <script type='text/javascript'>
00071         var grouplist = { $groups };
00072         var userlist = { $users };
00073         function fetchEmail() {
00074                 window.location = './+admin&subaction=openemail&name=' + document.getElementById('emailtemplates').value;
00075         }
00076         
00077         function saveEmail(e) {
00078                 var name = prompt("enter name for template", document.getElementById('subject').value);
00079                 if(name != '') {
00080                         e.form.action += 'save&name=';
00081                         e.form.action += name;
00082                         e.form.submit();
00083                 }
00084         }
00085         
00086         function renderCheckList(arr,class) {
00087                 var ret = '<table name="rcptlisttable" id="rcpttable" class="userlisttable display"><thead><tr><th>Select Recipients</th></thead><tbody>';
00088                 for(var key in arr)
00089                         ret += "<tr><td><INPUT type=checkbox class=" + class + " value='" + key + "'>&nbsp;&nbsp;&nbsp;" + arr[key] + "</td></tr>";
00090                 ret += "</tbody></table>";
00091                 return ret;
00092         }
00093         
00094         function selectAll() {
00095                 document.getElementById('recipient').innerHTML = 'All';
00096                 document.getElementById('list').innerHTML = 'All users selected';
00097         }
00098         
00099         function selectGroups() {
00100                 document.getElementById('recipient').innerHTML = 'Selected Groups';
00101                 document.getElementById('list').innerHTML = "Group List:<br>" + renderCheckList(grouplist,'grouplist');
00102                 initSmartTable();
00103         }
00104         
00105         function selectUsers() {
00106                 document.getElementById('recipient').innerHTML = 'Selected Users';
00107                 document.getElementById('list').innerHTML = "User List:<br>" + renderCheckList(userlist,'userlist');
00108                 initSmartTable();
00109         }
00110         
00111         function getList(class) {
00112                 var listarr = new Array();
00113                 var list = document.getElementsByClassName(class);
00114                 var l = list.length;
00115                 for(var i = 0; i<l; i++)
00116                         if(list[i].checked)
00117                                 listarr.push(list[i].value);
00118                 return listarr;
00119         }
00120         
00121         function renderRecipient(arr) {
00122                 var ret = '';
00123                 for(var ele in arr)
00124                         ret += arr[ele] + ', '
00125                 var l = ret.length;
00126                 if(l>0)
00127                         ret = ret.substring(0,l-2);
00128                 return ret;
00129         }
00130         
00131         function sendMail(e) {
00132                 var recipient = document.getElementById('recipient').innerHTML;
00133                 var recipients = 'all';
00134                 if(recipient == 'Selected Groups')
00135                         recipients = 'groups:' + renderRecipient(getList('grouplist'));
00136                 else if(recipient == 'Selected Users')
00137                         recipients = 'users:' + renderRecipient(getList('userlist'));
00138                 document.getElementById('recipients').value = recipients;
00139                 e.form.action += 'send';
00140                 e.form.submit();
00141         }
00142         </script>
00143         <fieldset>
00144         <legend>{$ICONS['Email Registrants']['small']}Email Registrants</legend>
00145         <form name=emailcontent action='./+admin&subaction=email' method=POST>
00146         <input type='hidden' id='recipients' name='recipients' value='all'>
00147         <table border=0 margin=0 width=100%>
00148         <tr><td>
00149         Subject: <input type=text value='$subject' id=subject name=subject>
00150         </td></tr>
00151         <tr><td>
00152         Content:
00153         {$emailTemplates} <input type=button value=Open onClick='fetchEmail()'> <input type=button id=btnSave value=Save onClick='saveEmail(this);'>
00154         <textarea cols=60 rows=15 name=templateContent>$content</textarea>
00155         </td></tr>
00156         </table>
00157         <table border=0 margin=0 width=100%>
00158         <tr><td style="text-align:center">
00159         Recipients: <span id='recipient'>All</span><br/>
00160         <input type=button value=All onClick='selectAll()'> <input type=button value='Select Groups' onClick='selectGroups()'> <input type=button value='Select Users' onClick='selectUsers()'></td>
00161         </td></tr>
00162         <tr><td>
00163         <span id='list'>
00164         All users selected
00165         </span>
00166         </td>
00167         </tr>
00168         </table>
00169         <input type=button value='Send Email' onClick='sendMail(this);'>
00170         </form>
00171         </fieldset>
00172 RET;
00173         return $ret;
00174 }
00175 
00176 function getTo($desc) {
00177         $ret = "";
00178         if($desc == "all") {
00179                 $result = mysql_query("SELECT `user_email` FROM `" . MYSQL_DATABASE_PREFIX . "users`");
00180                 while($row = mysql_fetch_array($result))
00181                         $ret .= $row['user_email'] . ", ";
00182                 $ret = rtrim($ret, ", ");
00183         } else if(substr($desc, 0, 5) == "users") {
00184                 $in = substr($desc, 6);
00185                 $result = mysql_query("SELECT `user_email` FROM `" . MYSQL_DATABASE_PREFIX . "users` WHERE `user_id` IN ({$in})");
00186                 while($row = mysql_fetch_array($result))
00187                         $ret .= $row['user_email'] . ", ";
00188                 $ret = rtrim($ret, ", ");
00189         } else if(substr($desc, 0, 6) == "groups") {
00190                 $in = substr($desc, 7);
00191                 $result = mysql_query("SELECT `user_email` FROM `" . MYSQL_DATABASE_PREFIX . "users` WHERE `user_id` IN (SELECT `user_id` FROM `" . MYSQL_DATABASE_PREFIX . "usergroup` WHERE `group_id` IN ({$in}))");
00192                 while($row = mysql_fetch_array($result))
00193                         $ret .= $row['user_email'] . ", ";
00194                 $ret = rtrim($ret, ", ");
00195         }
00196         return $ret;
00197 }
00198 
00199 function sendEmail() {
00200         $to = getTo($_POST['recipients']);
00201         $subject = CMS_TITLE . $_POST['emailtemplates'];
00202         $from = "from: ".CMS_TITLE." <".CMS_EMAIL.">";
00203         if(@mail($to,$_POST['subject'],$_POST['templateContent'],$from))
00204                 displayinfo("Mail sent successfully.");
00205         else
00206                 displayerror("Error in sending mail.");
00207         
00208 }
00209 
00210 function saveEmail() {
00211         $name = escape($_GET['name']);
00212         $content = $_POST['templateContent'];
00213         global $sourceFolder;
00214         $dir = "$sourceFolder/languages/" . LANGUAGE . "/email/templates/";
00215         if(!file_exists($dir))
00216                 mkdir($dir);
00217         if(!file_exists($dir . $name . ".txt")) {
00218                 $fh = fopen($dir . $name . ".txt", "w");
00219                 if(fwrite($fh, $content)) {
00220                         displayinfo("Template saved");
00221                         fclose($fh);
00222                 } else
00223                         displayerror("Error in saving template. May be the webserver doesn't have write permissions.");
00224         } else if($_POST['emailtemplates'] == $name) {
00225                 $fh = fopen($dir . $name . ".txt", "w");
00226                 if(fwrite($fh, $content)) {
00227                         displayinfo("Template saved");
00228                         fclose($fh);
00229                 } else
00230                         displayerror("Error in saving template");
00231         } else
00232                 displayerror("File already exist.");
00233 }
00234 ?>

Generated on Sun Jan 2 2011 04:55:31 for Pragyan CMS by  doxygen 1.7.1