2011-06-02 21:38:19 +02:00
< ? php
2013-11-25 21:04:58 +01:00
function messages_title () {
return _ ( " Messages " );
}
2011-06-02 21:38:19 +02:00
function user_unread_messages () {
2014-08-22 22:34:13 +02:00
global $user ;
2013-11-25 21:04:58 +01:00
2014-08-22 22:34:13 +02:00
if ( isset ( $user )) {
2013-09-18 01:38:36 +02:00
$new_messages = sql_num_query ( " SELECT * FROM `Messages` WHERE isRead='N' AND `RUID`= " . sql_escape ( $user [ 'UID' ]));
2014-08-22 22:34:13 +02:00
return '<span class="badge">' . $new_messages . '</span>' ;
2013-09-18 01:38:36 +02:00
}
2014-08-22 22:34:13 +02:00
return '' ;
2011-06-02 21:38:19 +02:00
}
function user_messages () {
2013-09-18 01:38:36 +02:00
global $user ;
2013-11-25 21:04:58 +01:00
if ( ! isset ( $_REQUEST [ 'action' ])) {
2013-09-18 01:38:36 +02:00
$users = sql_select ( " SELECT * FROM `User` WHERE NOT `UID`= " . sql_escape ( $user [ 'UID' ]) . " ORDER BY `Nick` " );
2013-11-25 21:04:58 +01:00
$to_select_data = array (
2014-01-07 15:50:16 +01:00
" " => _ ( " Select recipient... " )
2013-09-18 01:38:36 +02:00
);
2013-11-25 21:04:58 +01:00
2013-09-18 01:38:36 +02:00
foreach ( $users as $u )
$to_select_data [ $u [ 'UID' ]] = $u [ 'Nick' ];
2013-11-25 21:04:58 +01:00
2013-09-18 01:38:36 +02:00
$to_select = html_select_key ( 'to' , 'to' , $to_select_data , '' );
2013-11-25 21:04:58 +01:00
2013-09-18 01:38:36 +02:00
$messages_html = " " ;
$messages = sql_select ( " SELECT * FROM `Messages` WHERE `SUID`= " . sql_escape ( $user [ 'UID' ]) . " OR `RUID`= " . sql_escape ( $user [ 'UID' ]) . " ORDER BY `isRead`,`Datum` DESC " );
foreach ( $messages as $message ) {
$sender_user_source = User ( $message [ 'SUID' ]);
2013-11-25 21:04:58 +01:00
if ( $sender_user_source === false )
2013-11-28 22:40:48 +01:00
engelsystem_error ( _ ( " Unable to load user. " ));
2013-09-18 01:38:36 +02:00
$receiver_user_source = User ( $message [ 'RUID' ]);
2013-11-25 21:04:58 +01:00
if ( $receiver_user_source === false )
2013-11-28 22:40:48 +01:00
engelsystem_error ( _ ( " Unable to load user. " ));
2013-11-25 21:04:58 +01:00
$messages_html .= sprintf ( '<tr %s> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td><td>%s</td>' , ( $message [ 'isRead' ] == 'N' ? ' class="new_message"' : '' ), ( $message [ 'isRead' ] == 'N' ? '•' : '' ), date ( " Y-m-d H:i " , $message [ 'Datum' ]), User_Nick_render ( $sender_user_source ), User_Nick_render ( $receiver_user_source ), str_replace ( " \n " , '<br />' , $message [ 'Text' ]));
2013-09-18 01:38:36 +02:00
$messages_html .= '<td>' ;
if ( $message [ 'RUID' ] == $user [ 'UID' ]) {
if ( $message [ 'isRead' ] == 'N' )
2013-11-25 21:04:58 +01:00
$messages_html .= '<a href="' . page_link_to ( " user_messages " ) . '&action=read&id=' . $message [ 'id' ] . '">' . _ ( " mark as read " ) . '</a>' ;
2013-09-18 01:38:36 +02:00
} else {
2013-11-25 21:04:58 +01:00
$messages_html .= '<a href="' . page_link_to ( " user_messages " ) . '&action=delete&id=' . $message [ 'id' ] . '">' . _ ( " delete message " ) . '</a>' ;
2013-09-18 01:38:36 +02:00
}
$messages_html .= '</td></tr>' ;
}
2013-11-25 21:04:58 +01:00
return template_render ( '../templates/user_messages.html' , array (
2014-08-22 22:34:13 +02:00
'title' => messages_title (),
2013-11-25 21:04:58 +01:00
'link' => page_link_to ( " user_messages " ),
2013-11-28 22:40:48 +01:00
'greeting' => sprintf ( _ ( " Hello %s, here can you leave messages for other angels " ), User_Nick_render ( $user )) . '<br /><br />' ,
2013-11-25 21:04:58 +01:00
'messages' => $messages_html ,
'new_label' => _ ( " New " ),
'date_label' => _ ( " Date " ),
'from_label' => _ ( " Transmitted " ),
'to_label' => _ ( " Recipient " ),
'text_label' => _ ( " Message " ),
'date' => date ( " Y-m-d H:i " ),
'from' => User_Nick_render ( $user ),
'to_select' => $to_select ,
'submit_label' => _ ( " Save " )
2013-09-18 01:38:36 +02:00
));
} else {
switch ( $_REQUEST [ 'action' ]) {
2013-11-25 21:04:58 +01:00
case " read " :
if ( isset ( $_REQUEST [ 'id' ]) && preg_match ( " /^[0-9] { 1,11} $ / " , $_REQUEST [ 'id' ]))
2013-09-18 01:38:36 +02:00
$id = $_REQUEST [ 'id' ];
else
2013-11-25 21:04:58 +01:00
return error ( _ ( " Incomplete call, missing Message ID. " ), true );
2013-09-18 01:38:36 +02:00
$message = sql_select ( " SELECT * FROM `Messages` WHERE `id`= " . sql_escape ( $id ) . " LIMIT 1 " );
if ( count ( $message ) > 0 && $message [ 0 ][ 'RUID' ] == $user [ 'UID' ]) {
sql_query ( " UPDATE `Messages` SET `isRead`='Y' WHERE `id`= " . sql_escape ( $id ) . " LIMIT 1 " );
redirect ( page_link_to ( " user_messages " ));
} else
2013-11-25 21:04:58 +01:00
return error ( _ ( " No Message found. " ), true );
2013-09-18 01:38:36 +02:00
break ;
2013-11-25 21:04:58 +01:00
case " delete " :
if ( isset ( $_REQUEST [ 'id' ]) && preg_match ( " /^[0-9] { 1,11} $ / " , $_REQUEST [ 'id' ]))
2013-09-18 01:38:36 +02:00
$id = $_REQUEST [ 'id' ];
else
2013-11-25 21:04:58 +01:00
return error ( _ ( " Incomplete call, missing Message ID. " ), true );
2013-09-18 01:38:36 +02:00
$message = sql_select ( " SELECT * FROM `Messages` WHERE `id`= " . sql_escape ( $id ) . " LIMIT 1 " );
if ( count ( $message ) > 0 && $message [ 0 ][ 'SUID' ] == $user [ 'UID' ]) {
sql_query ( " DELETE FROM `Messages` WHERE `id`= " . sql_escape ( $id ) . " LIMIT 1 " );
redirect ( page_link_to ( " user_messages " ));
} else
2013-11-25 21:04:58 +01:00
return error ( _ ( " No Message found. " ), true );
2013-09-18 01:38:36 +02:00
break ;
2013-11-25 21:04:58 +01:00
case " send " :
2014-01-07 15:50:16 +01:00
if ( Message_send ( $_REQUEST [ 'to' ], $_REQUEST [ 'text' ]) === true ) {
2013-09-18 01:38:36 +02:00
redirect ( page_link_to ( " user_messages " ));
} else {
2013-11-25 21:04:58 +01:00
return error ( _ ( " Transmitting was terminated with an Error. " ), true );
2013-09-18 01:38:36 +02:00
}
break ;
2013-11-25 21:04:58 +01:00
default :
return error ( _ ( " Wrong action. " ), true );
2013-09-18 01:38:36 +02:00
}
}
2011-06-02 21:38:19 +02:00
}
?>