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
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 + "'> " + 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 ?>