PageRenderTime 32ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/manager/actions/messages.static.php

http://modx-ja.googlecode.com/
PHP | 349 lines | 296 code | 29 blank | 24 comment | 38 complexity | 729e6865ea473fb5c8a5e9808f5310da MD5 | raw file
Possible License(s): AGPL-1.0, GPL-2.0, LGPL-2.1, BSD-3-Clause
  1. <?php
  2. if(IN_MANAGER_MODE!="true") die("<b>INCLUDE_ORDERING_ERROR</b><br /><br />Please use the MODx Content Manager instead of accessing this file directly.");
  3. if(!$modx->hasPermission('messages')) {
  4. $e->setError(3);
  5. $e->dumpError();
  6. }
  7. ?>
  8. <h1><?php echo $_lang['messages_title']; ?></h1>
  9. <?php if(isset($_REQUEST['id']) && $_REQUEST['m']=='r') { ?>
  10. <div class="sectionHeader"><?php echo $_lang['messages_read_message']; ?></div><div class="sectionBody" id="lyr3">
  11. <?php
  12. $sql = "SELECT * FROM $dbase.`".$table_prefix."user_messages` WHERE $dbase.`".$table_prefix."user_messages`.id=".$_REQUEST['id'];
  13. $rs = mysql_query($sql);
  14. $limit = mysql_num_rows($rs);
  15. if($limit!=1) {
  16. echo "Wrong number of messages returned!";
  17. } else {
  18. $message=mysql_fetch_assoc($rs);
  19. if($message['recipient']!=$modx->getLoginUserID()) {
  20. echo $_lang['messages_not_allowed_to_read'];
  21. } else {
  22. // output message!
  23. // get the name of the sender
  24. $sender = $message['sender'];
  25. if($sender==0) {
  26. $sendername = $_lang['messages_system_user'];
  27. } else {
  28. $sql = "SELECT username FROM $dbase.`".$table_prefix."manager_users` WHERE id=$sender";
  29. $rs2 = mysql_query($sql);
  30. $row2 = mysql_fetch_assoc($rs2);
  31. $sendername = $row2['username'];
  32. }
  33. ?>
  34. <table width="600" border="0" cellspacing="0" cellpadding="0">
  35. <tr>
  36. <td colspan="2">
  37. <ul class="actionButtons">
  38. <li id="btn_reply"><a href="index.php?a=10&t=c&m=rp&id=<?php echo $message['id']; ?>"><img src="<?php echo $_style["icons_message_reply"] ?>" /> <?php echo $_lang['messages_reply']; ?></a></li>
  39. <li><a href="index.php?a=10&t=c&m=f&id=<?php echo $message['id']; ?>"><img src="<?php echo $_style["icons_message_forward"] ?>" /> <?php echo $_lang['messages_forward']; ?></a></li>
  40. <li><a href="index.php?a=65&id=<?php echo $message['id']; ?>"><img src="<?php echo $_style["icons_delete_document"] ?>" /> <?php echo $_lang['delete']; ?></a></li>
  41. <?php if($message['sender']==0) { ?>
  42. <script type="text/javascript">document.getElementById("btn_reply").className='disabled';</script>
  43. <?php } ?>
  44. </ul>
  45. </td>
  46. </tr>
  47. <tr>
  48. <td colspan="2">&nbsp;</td>
  49. </tr>
  50. <tr>
  51. <td style="width: 120px;"><b><?php echo $_lang['messages_from']; ?>:</b></td>
  52. <td style="width: 480px;"><?php echo $sendername; ?></td>
  53. </tr>
  54. <tr>
  55. <td><b><?php echo $_lang['messages_sent']; ?>:</b></td>
  56. <td><?php echo $modx->toDateFormat($message['postdate']+$server_offset_time); ?></td>
  57. </tr>
  58. <tr>
  59. <td><b><?php echo $_lang['messages_subject']; ?>:</b></td>
  60. <td><?php echo $message['subject']; ?></td>
  61. </tr>
  62. <tr>
  63. <td colspan="2">&nbsp;</td>
  64. </tr>
  65. <tr>
  66. <td colspan="2">
  67. <?php
  68. // format the message :)
  69. $message = str_replace ("\n", "<br />", $message['message']);
  70. $dashcount = substr_count($message, "-----");
  71. $message = str_replace ("-----", "<i style='color:#666;'>", $message);
  72. for( $i=0; $i<$dashcount; $i++ ){
  73. $message .= "</i>";
  74. }
  75. echo $message;
  76. ?>
  77. </td>
  78. </tr>
  79. </table>
  80. <?php
  81. // mark the message as read
  82. $sql = "UPDATE $dbase.`".$table_prefix."user_messages` SET $dbase.`".$table_prefix."user_messages`.messageread=1 WHERE $dbase.`".$table_prefix."user_messages`.id=".$_REQUEST['id'];
  83. $rs = mysql_query($sql);
  84. }
  85. }
  86. ?>
  87. </div>
  88. <?php } ?>
  89. <div class="sectionHeader"><?php echo $_lang['messages_inbox']; ?></div><div class="sectionBody">
  90. <?php
  91. // Get number of rows
  92. $sql = "SELECT count(id) FROM $dbase.`".$table_prefix."user_messages` WHERE recipient=".$modx->getLoginUserID()."";
  93. $rs=mysql_query($sql);
  94. $countrows = mysql_fetch_assoc($rs);
  95. $num_rows = $countrows['count(id)'];
  96. // ==============================================================
  97. // Exemple Usage
  98. // Note: I make 2 query to the database for this exemple, it
  99. // could (and should) be made with only one query...
  100. // ==============================================================
  101. // If current position is not set, set it to zero
  102. if( !isset( $_REQUEST['int_cur_position'] ) || $_REQUEST['int_cur_position'] == 0 ){
  103. $int_cur_position = 0;
  104. } else {
  105. $int_cur_position = $_REQUEST['int_cur_position'];
  106. }
  107. // Number of result to display on the page, will be in the LIMIT of the sql query also
  108. $int_num_result = $number_of_messages;
  109. $extargv = "&a=10"; // extra argv here (could be anything depending on your page)
  110. include_once "paginate.inc.php";
  111. // New instance of the Paging class, you can modify the color and the width of the html table
  112. $p = new Paging( $num_rows, $int_cur_position, $int_num_result, $extargv );
  113. // Load up the 2 array in order to display result
  114. $array_paging = $p->getPagingArray();
  115. $array_row_paging = $p->getPagingRowArray();
  116. // Display the result as you like...
  117. $pager .= $_lang['showing']." ". $array_paging['lower'];
  118. $pager .= " ".$_lang['to']." ". $array_paging['upper'];
  119. $pager .= " (". $array_paging['total']." ".$_lang['total'].")";
  120. $pager .= "<br />". $array_paging['previous_link'] ."&lt;&lt;" . (isset($array_paging['previous_link']) ? "</a> " : " ");
  121. for( $i=0; $i<sizeof($array_row_paging); $i++ ){
  122. $pager .= $array_row_paging[$i] ."&nbsp;";
  123. }
  124. $pager .= $array_paging['next_link'] ."&gt;&gt;". (isset($array_paging['next_link']) ? "</a>" : "");
  125. // The above exemple print somethings like:
  126. // Results 1 to 20 of 597 <<< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >>>
  127. // Of course you can now play with array_row_paging in order to print
  128. // only the results you would like...
  129. $sql = "SELECT * FROM $dbase.`".$table_prefix."user_messages` WHERE $dbase.`".$table_prefix."user_messages`.recipient=".$modx->getLoginUserID()." ORDER BY postdate DESC LIMIT ".$int_cur_position.", ".$int_num_result;
  130. $rs = mysql_query($sql);
  131. $limit = mysql_num_rows($rs);
  132. if($limit<1) {
  133. echo $_lang['messages_no_messages'];
  134. } else {
  135. echo $pager;
  136. $dotablestuff = 1;
  137. ?>
  138. <script type="text/javascript" src="media/script/tablesort.js"></script>
  139. <table border=0 cellpadding=0 cellspacing=0 class="sortabletable sortable-onload-5 rowstyle-even" id="table-1" width='100%'>
  140. <thead>
  141. <tr bgcolor='#CCCCCC'>
  142. <th width="12"></th>
  143. <th width="60%" class="sortable"><b><?php echo $_lang['messages_subject']; ?></b></th>
  144. <th class="sortable"><b><?php echo $_lang['messages_from']; ?></b></th>
  145. <th class="sortable"><b><?php echo $_lang['messages_private']; ?></b></th>
  146. <th width="20%" class="sortable"><b><?php echo $_lang['messages_sent']; ?></b></th>
  147. </tr>
  148. </thead>
  149. <tbody>
  150. <?php
  151. for ($i = 0; $i < $limit; $i++) {
  152. $message = mysql_fetch_assoc($rs);
  153. $sender = $message['sender'];
  154. if($sender==0) {
  155. $sendername = "[System]";
  156. } else {
  157. $sql = "SELECT username FROM $dbase.`".$table_prefix."manager_users` WHERE id=$sender";
  158. $rs2 = mysql_query($sql);
  159. $row2 = mysql_fetch_assoc($rs2);
  160. $sendername = $row2['username'];
  161. }
  162. $messagestyle = $message['messageread']==0 ? "messageUnread" : "messageRead";
  163. ?>
  164. <tr>
  165. <td ><?php echo $message['messageread']==0 ? "<img src='media/style/" . ($manager_theme ? "$manager_theme/":"") ."images/icons/new1-09.gif'>" : ""; ?></td>
  166. <td class="<?php echo $messagestyle; ?>" style="cursor: pointer; text-decoration: underline;" onClick="document.location.href='index.php?a=10&id=<?php echo $message['id']; ?>&m=r';"><?php echo $message['subject']; ?></td>
  167. <td ><?php echo $sendername; ?></td>
  168. <td ><?php echo $message['private']==0 ? $_lang['no'] : $_lang['yes'] ; ?></td>
  169. <td ><?php echo $modx->toDateFormat($message['postdate']+$server_offset_time); ?></td>
  170. </tr>
  171. <?php
  172. }
  173. }
  174. if($dotablestuff==1) { ?>
  175. </tbody>
  176. </table>
  177. <?php } ?>
  178. </div>
  179. <div class="sectionHeader"><?php echo $_lang['messages_compose']; ?></div><div class="sectionBody">
  180. <?php
  181. if(($_REQUEST['m']=='rp' || $_REQUEST['m']=='f') && isset($_REQUEST['id'])) {
  182. $sql = "SELECT * FROM $dbase.`".$table_prefix."user_messages` WHERE $dbase.`".$table_prefix."user_messages`.id=".$_REQUEST['id'];
  183. $rs = mysql_query($sql);
  184. $limit = mysql_num_rows($rs);
  185. if($limit!=1) {
  186. echo "Wrong number of messages returned!";
  187. } else {
  188. $message=mysql_fetch_assoc($rs);
  189. if($message['recipient']!=$modx->getLoginUserID()) {
  190. echo $_lang['messages_not_allowed_to_read'];
  191. } else {
  192. // output message!
  193. // get the name of the sender
  194. $sender = $message['sender'];
  195. if($sender==0) {
  196. $sendername = "[System]";
  197. } else {
  198. $sql = "SELECT username FROM $dbase.`".$table_prefix."manager_users` WHERE id=$sender";
  199. $rs2 = mysql_query($sql);
  200. $row2 = mysql_fetch_assoc($rs2);
  201. $sendername = $row2['username'];
  202. }
  203. $subjecttext = $_REQUEST['m']=='rp' ? "Re: " : "Fwd: ";
  204. $subjecttext .= $message['subject'];
  205. $messagetext = "\n\n\n-----\n".$_lang['messages_from'].": $sendername\n".$_lang['messages_sent'].": ".$modx->toDateFormat($message['postdate']+$server_offset_time)."\n".$_lang['messages_subject'].": ".$message['subject']."\n\n".$message['message'];
  206. if($_REQUEST['m']=='rp') {
  207. $recipientindex = $message['sender'];
  208. }
  209. }
  210. }
  211. }
  212. ?>
  213. <script type="text/javascript">
  214. function hideSpans(showSpan) {
  215. document.getElementById("userspan").style.display="none";
  216. document.getElementById("groupspan").style.display="none";
  217. document.getElementById("allspan").style.display="none";
  218. if(showSpan==1) {
  219. document.getElementById("userspan").style.display="block";
  220. }
  221. if(showSpan==2) {
  222. document.getElementById("groupspan").style.display="block";
  223. }
  224. if(showSpan==3) {
  225. document.getElementById("allspan").style.display="block";
  226. }
  227. }
  228. </script>
  229. <form action="index.php?a=66" method="post" name="messagefrm" enctype="multipart/form-data">
  230. <fieldset style="width: 600px;">
  231. <LEGEND><b><?php echo $_lang['messages_send_to']; ?>:</b></LEGEND>
  232. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  233. <tr>
  234. <td>
  235. <INPUT TYPE=RADIO NAME="sendto" VALUE="u" checked onClick='hideSpans(1);'><?php echo $_lang['messages_user']; ?>&nbsp;&nbsp;&nbsp;
  236. <INPUT TYPE=RADIO NAME="sendto" VALUE="g" onClick='hideSpans(2);'><?php echo $_lang['messages_group']; ?>&nbsp;&nbsp;&nbsp;
  237. <INPUT TYPE=RADIO NAME="sendto" VALUE="a" onClick='hideSpans(3);'><?php echo $_lang['messages_all']; ?>&nbsp;&nbsp;<br />
  238. <span id='userspan' style="display:block;"> <?php echo $_lang['messages_select_user']; ?>:&nbsp;
  239. <?php
  240. // get all usernames
  241. $sql = "SELECT username, id FROM $dbase.`".$table_prefix."manager_users`";
  242. $rs = mysql_query($sql);
  243. ?>
  244. <select name="user" class="inputBox" style="width:150px">
  245. <?php
  246. while ($row = mysql_fetch_assoc($rs)) {
  247. ?>
  248. <option value="<?php echo $row['id']; ?>" ><?php echo $row['username']; ?></option>
  249. <?php
  250. }
  251. ?>
  252. </select>
  253. </span>
  254. <span id='groupspan' style="display:none;"> <?php echo $_lang['messages_select_group']; ?>:&nbsp;
  255. <?php
  256. // get all usernames
  257. $sql = "SELECT name, id FROM $dbase.`".$table_prefix."user_roles`";
  258. $rs = mysql_query($sql);
  259. ?>
  260. <select name="group" class="inputBox" style="width:150px">
  261. <?php
  262. while ($row = mysql_fetch_assoc($rs)) {
  263. ?>
  264. <option value="<?php echo $row['id']; ?>" ><?php echo $row['name']; ?></option>
  265. <?php
  266. }
  267. ?>
  268. </select>
  269. </span>
  270. <span id='allspan' style="display:none;">
  271. </span>
  272. </td>
  273. </tr>
  274. </table>
  275. </fieldset>
  276. <p>
  277. <fieldset style="width: 600px;">
  278. <LEGEND><b><?php echo $_lang['messages_message']; ?>:</b></LEGEND>
  279. <table width="100%" border="0" cellspacing="0" cellpadding="0">
  280. <tr>
  281. <td><?php echo $_lang['messages_subject']; ?>:</td>
  282. <td><input name="messagesubject" type=text class="inputBox" style="width: 500px;" maxlength="60" value="<?php echo $subjecttext; ?>"></td>
  283. </tr>
  284. <tr>
  285. <td valign="top"><?php echo $_lang['messages_message']; ?>:</td>
  286. <td><textarea name="messagebody" style="width:500px; height: 200px;" onLoad="this.focus()" class="inputBox"><?php echo $messagetext; ?></textarea></td>
  287. </tr>
  288. <tr>
  289. <td></td>
  290. </tr>
  291. </table>
  292. <ul class="actionButtons">
  293. <li><a href="#" onclick="documentDirty=false; document.messagefrm.submit();"><img src="<?php echo $_style["icons_save"] ?>" /> <?php echo $_lang['messages_send']; ?></a></li>
  294. <li><a href="index.php?a=10&t=c"><img src="<?php echo $_style["icons_cancel"] ?>" /> <?php echo $_lang['cancel']; ?></a></li>
  295. </ul>
  296. </fieldset>
  297. </form>
  298. </div>
  299. <?php
  300. // count messages again, as any action on the messages page may have altered the message count
  301. $sql="SELECT count(*) FROM $dbase.`".$table_prefix."user_messages` where recipient=".$modx->getLoginUserID()." and messageread=0;";
  302. $rs = mysql_query($sql);
  303. $row = mysql_fetch_assoc($rs);
  304. $_SESSION['nrnewmessages'] = $row['count(*)'];
  305. $sql="SELECT count(*) FROM $dbase.`".$table_prefix."user_messages` where recipient=".$modx->getLoginUserID()."";
  306. $rs = mysql_query($sql);
  307. $row = mysql_fetch_assoc($rs);
  308. $_SESSION['nrtotalmessages'] = $row['count(*)'];
  309. $messagesallowed = $modx->hasPermission('messages');
  310. ?>
  311. <script type="text/javascript">
  312. function msgCountAgain() {
  313. try {
  314. top.mainMenu.startmsgcount(<?php echo $_SESSION['nrnewmessages'] ; ?>,<?php echo $_SESSION['nrtotalmessages'] ; ?>,<?php echo $messagesallowed ? 1:0 ; ?>);
  315. } catch(oException) {
  316. vv = window.setTimeout('msgCountAgain()',1500);
  317. }
  318. }
  319. v = setTimeout('msgCountAgain()', 1500); // do this with a slight delay so it overwrites msgCount()
  320. </script>