Cheetah
mail.php
Go to the documentation of this file.
1 <?php
2 
8  require_once( 'inc/header.inc.php' );
9  require_once( CH_DIRECTORY_PATH_INC . 'design.inc.php' );
10  require_once( CH_DIRECTORY_PATH_ROOT . 'templates/tmpl_' . $tmpl . '/scripts/ChTemplMailBox.php');
11 
13 
15 
16  // init some needed parameters ;
17 
20 
21  // define message id (for view mode) ;
22  $iMessageID = ( isset($_GET['messageID']) )
23  ? (int) $_GET['messageID']
24  : 0;
25 
26  // define the message status such as : read, unread ;
27  $iMessageStatus = ( isset($_GET['status']) && $_GET['status'] == 'read' )
28  ? 0
29  : 1 ;
30 
31  // define the recipient ID ;
32  $vRecipientID = ( isset($_GET['recipient_id']) )
33  ? $_GET['recipient_id']
34  : '';
35 
36  // contain message's subject ;
37  $sMessageSubject = ( isset($_POST['subject']) )
38  ? $_POST['subject']
39  : null;
40 
41  // contain messages' body ;
42  $sMessageBody = ( isset($_POST['message']) )
43  ? $_POST['message']
44  : '';
45 
46  //? process_db_input( nl2br( urldecode($_POST['message']) ), CH_TAGS_VALIDATE) : null;
47 
48  // contain all receivied messages id separeted by comma ;
49  $sMessagesList = isset( $_GET['messages'] )
50  ? $_GET['messages']
51  : '';
52 
53  // contain query from js for autocomplete;
54  $sAutoCompleteQ = ( isset($_GET['term']) )
55  ? $_GET['term']
56  : '';
57 
58  // try to segregate received messages list;
59  if ( $sMessagesList ) {
60  // array : contain all received messages id ;
61  $aMessagesList = array();
62  $aMessagesList = explode(',', $sMessagesList);
63  }
64 
65  // contain some needed settings for the MailBox's object ;
67  (
68  // logged member's ID ;
69  'member_id' => ($iProfileId || $aProfile['Role'] & CH_WSB_ROLE_ADMIN)
70  ? $iProfileId
71  : 0,
72 
73  // message recipient's ID ;
74  'recipient_id' => ($vRecipientID)
75  ? (int) $vRecipientID
76  : 0,
77 
78  // mailbox mode such as : inbox, outbox, trash ;
79  'mailbox_mode' => (isset($_GET['mode']))
80  ? $_GET['mode']
81  : 'inbox',
82 
83  // type of message's sort ;
84  'sort_mode' => (isset($_GET['sorting']))
85  ? $_GET['sorting']
86  : 'date_desc',
87 
88  // contain number of current page ;
89  'page' => (isset($_GET['page']))
90  ? (int) $_GET['page']
91  : 0,
92 
93  // contain per page number for current page ;
94  'per_page' => (isset($_GET['per_page']))
95  ? (int) $_GET['per_page']
96  : 0,
97 
98  // contain type of needed type of contacts (friends, faves ...)
99  'contacts_mode' => (isset($_GET['contacts_mode']))
100  ? $_GET['contacts_mode']
101  : '',
102 
103  // contain number of current contacts page ;
104  'contacts_page' => (isset($_GET['contacts_page']))
105  ? (int) $_GET['contacts_page']
106  : 0,
107 
108  // contain number of needed message ;
109  'messageID' => (isset($_GET['messageID']))
110  ? (int) $_GET['messageID']
111  : 0,
112  );
113 
114  // contain all needed settings for compose message ;
116  (
117  // allow to send message to phisical recipient's email ;
118  'send_copy' => ( isset($_GET['copy_message']) )
119  ? true
120  : false ,
121 
122  // allow to send message to phisical sender's email;
123  'send_copy_to_me' => ( isset($_GET['copy_message_to_me']) )
124  ? true
125  : false ,
126 
127  // allow to send notification to the recipient's email ;
128  'notification' => ( isset($_GET['notify']) )
129  ? true
130  : false ,
131  );
132 
133  // define the type of message (greet, mail ...) ;
134  if ( isset($_GET['messages_types']) ) {
135  $aMailBoxSettings['messages_types'] = $_GET['messages_types'];
136  }
137 
138  // ** swith the compose page;
139  switch($aMailBoxSettings['mailbox_mode']) {
140  case 'inbox' :
141  case 'outbox' :
142  case 'trash' :
143  $sComposedPage = 'mail_page';
144  break;
145 
146  case 'compose' :
147  case 'view_message' :
148  $sComposedPage = $aMailBoxSettings['mailbox_mode'] == 'compose'
149  ? 'mail_page_compose'
150  : 'mail_page_view';
151 
152  //add some translation
153  $GLOBALS['oSysTemplate']->addJsTranslation('_Mailbox title empty');
154  $GLOBALS['oSysTemplate']->addJsTranslation('_Mailbox recipient empty');
155  $GLOBALS['oSysTemplate']->addJsTranslation('_Mailbox description empty');
156  break;
157 
158  default :
159  $sComposedPage = 'mail_page';
160  }
161 
162  // create ChTemplMailBox object
164 
165  if ( isset($_GET['ajax_mode']) and false !== ch_get('action') ) {
166  // contain all the available callback functions ;
167  $aCallbackFunctions = array( 'genMessagesRows', 'genArchiveMessages', 'getInboxMessagesCount' );
168 
169  switch( ch_get('action') ) {
170  case 'sort' :
171  case 'paginate' :
172  case 'get_page' :
173  $sOutputHtml = $oMailBox -> genMessagesRows();
174  break;
175 
176  // mark all the received messages ;
177  case 'mark' :
178  // mark action only for post method
179  if( isset($_POST['action']) && $_POST['action'] == 'mark') {
180  // mark message with received mode ;
181  if ( is_array($aMessagesList) and !empty($aMessagesList) ) {
182  foreach( $aMessagesList AS $iKey ) {
183  $iMessageID = (int) $iKey;
184  if ( $iMessageID )
185  $oMailBox -> setMarkMessage($iMessageID, $iMessageStatus);
186  }
187 
188  $sOutputHtml = 'ok';
189  }
190  }
191  break;
192 
193  // hide deleted messages ;
194  case 'hide_deleted' :
195  if ( is_array($aMessagesList ) and !empty($aMessagesList) ) {
196  foreach( $aMessagesList AS $iKey ) {
197  $iMessageID = (int) $iKey;
198  if ($iMessageID)
199  $oMailBox -> setTrashedMessage($iMessageID, 'TrashNotView');
200  }
201  }
202  break;
203 
204  // delete all the received messages ;
205  case 'delete' :
206  // mark action only for post method
207  if( isset($_POST['action']) && $_POST['action'] == 'delete') {
208  if ( is_array($aMessagesList ) and !empty($aMessagesList) ) {
209  foreach( $aMessagesList AS $iKey ) {
210  $iMessageID = (int) $iKey;
211  if ( $iMessageID )
212  $oMailBox -> setTrashedMessage($iMessageID);
213  }
214  }
215  }
216  break;
217 
218  // restore all the deleted messages from trash;
219  case 'restore' :
220  if( isset($_POST['action']) && $_POST['action'] == 'restore') {
221  if ( is_array($aMessagesList) and !empty($aMessagesList) ) {
222  foreach( $aMessagesList AS $iKey ) {
223  $iMessageID = (int) $iKey;
224  if ( $iMessageID )
225  $oMailBox -> setRestoredMessage($iMessageID);
226  }
227  }
228  }
229  break;
230 
231  // will return count of inbox messages ;
232  case 'get_messages_count' :
233  $iMessageCount = $oMailBox -> getInboxMessagesCount();
234  $sResponceText = ( $iMessageCount ) ? ' (' . $iMessageCount . ') ' : null;
235  $sOutputHtml = $sResponceText;
236  break;
237 
238  // will return all the arhive's message list ;
239  case 'archives_paginate' :
240  $sOutputHtml = $oMailBox -> genArchiveMessages();
241  break;
242 
243  // will return message's replay window;
244  case 'reply_message' :
245  if ( $iMessageID and $vRecipientID ) {
247  $sOutputHtml = $oMailBox -> genReplayMessage($vRecipientID, $iMessageID);
248  }
249  break;
250 
251  case 'compose_mail' :
252  $sErrorMessage = '';
253 
254  //check message's options
255  if(!$sMessageSubject) {
256  $sErrorMessage = '_Mailbox title empty';
257  }
258 
259  if(!$sMessageBody) {
260  $sErrorMessage = '_Mailbox description empty';
261  }
262 
263  if(!$vRecipientID) {
264  $sErrorMessage = '_Mailbox recipient empty';
265  }
266 
267  $sOutputHtml = !$sErrorMessage
269  : _t_err($sErrorMessage);
270  break;
271 
272  case 'auto_complete' :
273  if ( $sAutoCompleteQ )
274  $sOutputHtml = $oMailBox -> getAutoCompleteList($sAutoCompleteQ);
275  break;
276 
277  case 'get_thumbnail' :
278  $iRecipientID = getId($vRecipientID);
279  if ( $iRecipientID )
280  $sOutputHtml = get_member_thumbnail($iRecipientID, 'none');
281  break;
282  }
283 
284  // try to define the callback function name ;
285  if ( isset($_GET['callback_function']) and in_array($_GET['callback_function'], $aCallbackFunctions) ) {
286  if (method_exists($oMailBox, $_GET['callback_function']))
287  $sOutputHtml = $oMailBox->{$_GET['callback_function']}();
288  }
289 
290  header('Content-Type: text/html; charset=utf-8');
291  echo $sOutputHtml;
292  exit;
293  }
294 
295  // ** prepare to output page in normal mode ;
296  $sPageTitle = _t('_Mailbox');
297 
298  $_page['name_index'] = 7;
299  $_page['header'] = $sPageTitle;
300  $_page['header_text'] = $sPageTitle;
301  $_page['js_name'] = $oMailBox->getJs();
302  $_page['css_name'] = $oMailBox->getCss();
303 
304  $aVars = array ('BaseUri' => CH_WSB_URL_ROOT);
305  $GLOBALS['oTopMenu']->setCustomSubActions($aVars, 'Mailbox', false);
306 
307  if(!$aMailBoxSettings['member_id'])
308  login_form(_t( "_LOGIN_OBSOLETE" ), 0, false);
309 
310  $_ni = $_page['name_index'];
311  $_page_cont[$_ni]['page_main_code'] = $oMailBox->getCode();
312 
313  PageCode();
header
</code > Be careful enabling this directive if you have a redirector script that does not use the< code > Location</code > HTTP header
Definition: URI.MungeResources.txt:10
$aProfile
$aProfile
Definition: mail.php:14
$aMailBoxSettings
if( $sMessagesList) $aMailBoxSettings
Definition: mail.php:66
$aComposeSettings
$aComposeSettings
Definition: mail.php:115
ch_get
ch_get($sName)
Definition: utils.inc.php:1664
$iMessageStatus
$iMessageStatus
Definition: mail.php:27
php
login_form
login_form($text="", $member=0, $bAjaxMode=false, $sLoginFormParams='')
Definition: admin.inc.php:13
$vRecipientID
$vRecipientID
Definition: mail.php:32
$sPageTitle
if(isset($_GET['ajax_mode']) and false !==ch_get('action')) $sPageTitle
Definition: mail.php:296
exit
exit
Definition: cart.php:21
$_GET
$_GET['debug']
Definition: index.php:67
$sMessageBody
$sMessageBody
Definition: mail.php:42
and
and
Definition: license.txt:18
get_member_thumbnail
get_member_thumbnail($ID, $float, $bGenProfLink=false, $sForceSex='visitor', $aOnline=array())
Definition: design.inc.php:165
getLoggedId
getLoggedId()
Definition: profiles.inc.php:32
$sAutoCompleteQ
$sAutoCompleteQ
Definition: mail.php:54
$iMessageID
$iMessageID
Definition: mail.php:22
_t_err
_t_err( $str, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:504
_t
_t($key, $arg0="", $arg1="", $arg2="")
Definition: languages.inc.php:509
PageCode
PageCode($oTemplate=null)
Definition: design.inc.php:91
$_page_cont
$_page_cont[$_ni]['page_main_code']
Definition: mail.php:311
$tmpl
$tmpl
Definition: params.inc.php:87
$sMessageSubject
$sMessageSubject
Definition: mail.php:37
default
Attr AllowedFrameTargets _parent and _top Values should be as validation will be done in a case sensitive manner despite W3C s recommendation XHTML Strict does not permit the target attribute so this directive will have no effect in that doctype XHTML does not enable the Target module by default
Definition: Attr.AllowedFrameTargets.txt:10
$sComposedPage
$sComposedPage
Definition: mail.php:19
getProfileInfo
getProfileInfo($iProfileID=0, $checkActiveStatus=false, $forceCache=false)
Definition: profiles.inc.php:249
ChTemplMailBox
Definition: ChTemplMailBox.php:11
$oMailBox
if(isset($_GET['messages_types'])) switch($aMailBoxSettings['mailbox_mode']) $oMailBox
Definition: mail.php:163
$aVars
$aVars
Definition: mail.php:304
$sOutputHtml
$sOutputHtml
Definition: mail.php:18
$sMessagesList
$sMessagesList
Definition: mail.php:49
$iProfileId
$iProfileId
Definition: mail.php:12
empty
Attr AllowedRel this is empty
Definition: Attr.AllowedRel.txt:7
$_page
$_page['name_index']
Definition: mail.php:298
CH_WSB_ROLE_ADMIN
const CH_WSB_ROLE_ADMIN
Definition: profiles.inc.php:17
$_ni
$_ni
Definition: mail.php:310
$GLOBALS
$GLOBALS['iAdminPage']
Definition: advanced_settings.php:10