From a3bcb57bcab2866447b0b4dbed13ed8b71cd2975 Mon Sep 17 00:00:00 2001 From: vgilc Date: Wed, 28 Mar 2012 14:54:27 +0000 Subject: [PATCH] 2012-03-28 Vanessa Gil * pandoradb.sql pandoradb.postgreSQL.sql pandoradb.oracle.sql, extras/pandoradb_migrate_4.0.x_to_4.1.mysql.sql, extras/pandoradb_migrate_4.0.x_to_4.1.oracle.sql, extras/pandoradb_migrate_4.0.x_to_4.1.postgreSQL.sql: added 'created_by' to tusuario table and modify 'mensaje' field to tmensajes. * general/header.php godmode/users/configure_user.php include/functions_groups.php include/functions_messages.php include/javascript/jquery.pandora.js operation/menu.php: Added operation: Fixed several bugs and modify sending and receiving messages. * images/email_go.png images/email_edit.png operation/messages/message_list.php operation/messages/message_edit.php: Added files. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@5844 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 23 ++ .../pandoradb_migrate_4.0.x_to_4.1.mysql.sql | 10 + .../pandoradb_migrate_4.0.x_to_4.1.oracle.sql | 12 +- ...doradb_migrate_4.0.x_to_4.1.postgreSQL.sql | 9 + pandora_console/general/header.php | 2 +- .../godmode/users/configure_user.php | 1 + pandora_console/images/email_edit.png | Bin 0 -> 763 bytes pandora_console/images/email_go.png | Bin 0 -> 720 bytes pandora_console/include/functions_groups.php | 14 +- .../include/functions_messages.php | 99 ++++++- .../include/javascript/jquery.pandora.js | 2 +- pandora_console/operation/menu.php | 4 +- .../operation/messages/message.php | 273 ------------------ .../operation/messages/message_edit.php | 188 ++++++++++++ .../operation/messages/message_list.php | 225 +++++++++++++++ pandora_console/pandoradb.sql | 3 +- 16 files changed, 577 insertions(+), 288 deletions(-) create mode 100644 pandora_console/images/email_edit.png create mode 100644 pandora_console/images/email_go.png delete mode 100644 pandora_console/operation/messages/message.php create mode 100644 pandora_console/operation/messages/message_edit.php create mode 100644 pandora_console/operation/messages/message_list.php diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 3532c48dff..3914fc8aac 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,26 @@ +2012-03-28 Vanessa Gil + + * pandoradb.sql + pandoradb.postgreSQL.sql + pandoradb.oracle.sql, + extras/pandoradb_migrate_4.0.x_to_4.1.mysql.sql, + extras/pandoradb_migrate_4.0.x_to_4.1.oracle.sql, + extras/pandoradb_migrate_4.0.x_to_4.1.postgreSQL.sql: added 'created_by' + to tusuario table and modify 'mensaje' field to tmensajes. + + * general/header.php + godmode/users/configure_user.php + include/functions_groups.php + include/functions_messages.php + include/javascript/jquery.pandora.js + operation/menu.php: Added operation: Fixed several bugs and + modify sending and receiving messages. + + * images/email_go.png + images/email_edit.png + operation/messages/message_list.php + operation/messages/message_edit.php: Added files. + 2012-03-28 Sergio Martin * include/styles/images/ui-bg_gloss-wave_35_f6a828_500x100.png diff --git a/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.mysql.sql b/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.mysql.sql index b6362c0a34..0542a3b253 100644 --- a/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.mysql.sql +++ b/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.mysql.sql @@ -192,3 +192,13 @@ ALTER TABLE `tusuario` ADD COLUMN `data_section` TEXT NOT NULL; -- Table `treport_content_item` -- ----------------------------------------------------- ALTER TABLE `treport_content_item` ADD COLUMN `operation` TEXT DEFAULT ''; + +-- ----------------------------------------------------- +-- Table `tusuario` +-- ----------------------------------------------------- +ALTER TABLE `tusuario` ADD COLUMN `created_by` TEXT NOT NULL DEFAULT ''; + +-- ----------------------------------------------------- +-- Table `tmensajes` +-- ----------------------------------------------------- +ALTER TABLE `tmensajes` MODIFY COLUMN `mensaje` TEXT NOT NULL DEFAULT ''; diff --git a/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.oracle.sql b/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.oracle.sql index 607416355c..6b17473d33 100644 --- a/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.oracle.sql +++ b/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.oracle.sql @@ -187,4 +187,14 @@ ALTER TABLE tusuario ADD (data_section VARCHAR2(255) NOT NULL); -- ----------------------------------------------------- -- Table `treport_content_item` -- ----------------------------------------------------- -ALTER TABLE `treport_content_item` ADD (operation` CLOB default ''); +ALTER TABLE treport_content_item ADD (operation CLOB default ''); + +-- ----------------------------------------------------- +-- Table `tusuario` +-- ----------------------------------------------------- +ALTER TABLE tusuario ADD (created_by VARCHAR2(255) NOT NULL DEFAULT ''; + +-- ----------------------------------------------------- +-- Table `tmensajes` +-- ----------------------------------------------------- +ALTER TABLE tmensajes MODIFY mensaje VARCHAR2(255) NOT NULL DEFAULT ''; diff --git a/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.postgreSQL.sql b/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.postgreSQL.sql index 016f87104d..41ac05b53c 100644 --- a/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.postgreSQL.sql +++ b/pandora_console/extras/pandoradb_migrate_4.0.x_to_4.1.postgreSQL.sql @@ -181,3 +181,12 @@ ALTER TABLE "tusuario" ADD COLUMN "data_section" varchar(255) NOT NULL DEFAULT ' -- ----------------------------------------------------- ALTER TABLE "treport_content_item" ADD COLUMN "operation" text default ''; +-- ----------------------------------------------------- +-- Table `tusuario` +-- ----------------------------------------------------- +ALTER TABLE "tusuario" ADD COLUMN "created_by" varchar(255) NOT NULL DEFAULT ''; + +-- ----------------------------------------------------- +-- Table `tmensajes` +-- ----------------------------------------------------- +ALTER TABLE "tmensajes" ALTER COLUMN "mensaje" TYPE TEXT; diff --git a/pandora_console/general/header.php b/pandora_console/general/header.php index 122f47fd65..689ade90f9 100644 --- a/pandora_console/general/header.php +++ b/pandora_console/general/header.php @@ -61,7 +61,7 @@ config_check(); echo ''; ui_require_css_file ('dialog'); - echo ''; + echo ''; html_print_image ("images/email.png", false, array ("title" => __('You have %d unread message(s)', $msg_cnt), "id" => "yougotmail", "class" => "bot")); echo ''; diff --git a/pandora_console/godmode/users/configure_user.php b/pandora_console/godmode/users/configure_user.php index 9006dbef5e..42ac6e204e 100644 --- a/pandora_console/godmode/users/configure_user.php +++ b/pandora_console/godmode/users/configure_user.php @@ -125,6 +125,7 @@ if ($create_user) { $values['comments'] = (string) get_parameter ('comments'); $values['is_admin'] = (int) get_parameter ('is_admin', 0); $values['language'] = get_parameter ('language', 'default'); + $values['created by'] = $config['id_user']; if ($isFunctionSkins !== ENTERPRISE_NOT_HOOK) { $values['id_skin'] = (int) get_parameter ('skin', 0); } diff --git a/pandora_console/images/email_edit.png b/pandora_console/images/email_edit.png new file mode 100644 index 0000000000000000000000000000000000000000..63e026ffe0b439cf4d816e7872c02adb25e3c1a9 GIT binary patch literal 763 zcmVJNRCwB?lUqm>VHC&zvpdf2x_Mdi zva3iJyGrVcS!q;;NCkxyn9xHBQkY0dAW0A5gF#7s)`4iSv=`rUHCIM}|6G+=>hbo{(i2?is8M4kK>5!&w zhB(+{1k9@vvB=$jGl`7U4cKzejoBJEf+i&d&=?@|@$5DW5^NEudo_-I@qk4MNyN9i zCXkd6hk@p6FlX+7FV=?Y;jvYK7z#%+t7La9q9QD~)%6k1Xy~fz{*0*g@fhoN4ou^4dNLd_X8l%(&qmz;*DITmQ?v<~ngx7*^u2Xqf3;U{n^cv(yisNz z;PGsSK1^}nE8=DtFm*W@xu=DB8d&&(R!;&>xkmLx5;dZK>7vWCppqd{)ii_#Dj@(1 zS|Uqf$~g(lF9UrIcsQ7d?tC|l0Y4-)pqq`7wkTj3hf1oQYA~Sc0FBh8#f9aod;HI1 zwx!`{dK6p@Ex0pZP-HcSDF$c;aZF>FV(e+VIf6^=!@_4}g|CsRrtAdWxNwZT^@U=I tvsmU|YOKO5{o$X0x$iEP)u%e+BR~}Db?Lxri0Lp0#mnFWIskW{Th$cV7-{3Pm+$(T;kruMV3`qAw zg80Z}1Duv*0?>xIoSeqWW%Y2E0kc*z1E3K=q(V;VR*8)bd{Rk14jM7%f+$1r5#5<#>h((<)i~_4fxEMw3aOB6dQq5VYbNUKrNae z8{hDCjLvEc*rDiEQiy0`Ei6EyJ^7=6DPb>2$~pSQ;K z;Ui6Iv7r8*RT~YRXow8z4@H^ruDN(Cybnl^0fPhR)xVueq+%yV5lOt{78j}fFOoK% zg?{=8^w2Tfr}uhZk0joJ&Ed;!wtn-Z@n6NC0t^6+_RdM=XhQ=40000 $config["id_user"], + //'id_usuario_destino' => $config["id_user"], 'id_mensaje' => $id_message); return (bool)db_process_sql_delete('tmensajes', $where); } @@ -144,7 +144,7 @@ function messages_process_read ($message_id, $read = true) { function messages_get_message ($message_id) { global $config; - $sql = sprintf("SELECT id_usuario_origen, subject, mensaje, timestamp + $sql = sprintf("SELECT id_usuario_origen, id_usuario_destino, subject, mensaje, timestamp FROM tmensajes WHERE id_usuario_destino='%s' AND id_mensaje=%d" , $config["id_user"], $message_id); $row = db_get_row_sql ($sql); @@ -153,14 +153,34 @@ function messages_get_message ($message_id) { return false; } - $return["sender"] = $row["id_usuario_origen"]; - $return["subject"] = $row["subject"]; - $return["message"] = $row["mensaje"]; - $return["timestamp"] = $row["timestamp"]; - - return $return; + return $row; } +/** + * Gets a sent message + * + * This function abstracts the database backend so it can simply be replaced with another system + * + * @param int $message_id + * + * @return mixed False if it doesn't exist or a filled array otherwise + */ +function messages_get_message_sent ($message_id) { + global $config; + + $sql = sprintf("SELECT id_usuario_origen, id_usuario_destino, subject, mensaje, timestamp + FROM tmensajes + WHERE id_usuario_origen='%s' AND id_mensaje=%d" , $config["id_user"], $message_id); + $row = db_get_row_sql ($sql); + + if (empty ($row)) { + return false; + } + + return $row; +} + + /** * Counts private messages * @@ -185,6 +205,25 @@ function messages_get_count ($user = false, $incl_read = false) { return (int) db_get_sql ($sql); } +/** + * Counts sended messages + * + * @param string $user + * + * @return int The number of messages this user has sent + */ +function messages_get_count_sent ($user = false) { + if (empty ($user)) { + global $config; + $user = $config["id_user"]; + } + $sql = sprintf("SELECT COUNT(*) + FROM tmensajes WHERE id_usuario_origen='%s'", $user); + + return (int) db_get_sql ($sql); +} + + /** * Get message overview in array * @@ -229,4 +268,48 @@ function messages_get_overview ($order = "status", $order_dir = "ASC") { return $result; } +/** + * Get sent message overview in array + * + * @param string $order How to order them valid: + * (status (default), subject, timestamp, sender) + * @param string $order_dir Direction of order (ASC = Ascending, DESC = Descending) + * + * @return int The number of messages this user has + */ +function messages_get_overview_sent ($order = "timestamp", $order_dir = "ASC") { + global $config; + + switch ($order) { + case "timestamp": + case "sender": + case "subject": + break; + case "status": + default: + $order = "estado, timestamp"; + break; + } + + if ($order_dir != "ASC") { + $order .= " DESC"; + } + + $result = array (); + $return = db_get_all_rows_field_filter ('tmensajes', 'id_usuario_origen', $config["id_user"], $order); + + if ($return === false) { + return $result; + } + + foreach ($return as $message) { + $result[$message["id_mensaje"]]["dest"] = $message["id_usuario_destino"]; + $result[$message["id_mensaje"]]["subject"] = $message["subject"]; + $result[$message["id_mensaje"]]["timestamp"] = $message["timestamp"]; + $result[$message["id_mensaje"]]["status"] = $message["estado"]; + } + + return $result; +} + ?> diff --git a/pandora_console/include/javascript/jquery.pandora.js b/pandora_console/include/javascript/jquery.pandora.js index 5f864db67a..0e5290edd0 100644 --- a/pandora_console/include/javascript/jquery.pandora.js +++ b/pandora_console/include/javascript/jquery.pandora.js @@ -34,7 +34,7 @@ $(document).ready (function () { $("a#show_messages_dialog").click (function () { jQuery.get ("ajax.php", - {"page": "operation/messages/message"}, + {"page": "operation/messages/message_list"}, function (data, status) { $("#dialog_messages").hide () .empty () diff --git a/pandora_console/operation/menu.php b/pandora_console/operation/menu.php index f301186ffd..78754fdbc6 100644 --- a/pandora_console/operation/menu.php +++ b/pandora_console/operation/menu.php @@ -286,11 +286,11 @@ if (check_acl ($config['id_user'], 0, "AR")) { // Messages $menu["messages"]["text"] = __('Messages'); $menu["messages"]["refr"] = 0; - $menu["messages"]["sec2"] = "operation/messages/message"; + $menu["messages"]["sec2"] = "operation/messages/message_list"; $menu["messages"]["id"] = "oper-messages"; $sub = array (); - $sub["operation/messages/message&new_msg=1"]["text"] = __('New message'); + $sub["operation/messages/message_edit&new_msg=1"]["text"] = __('New message'); $menu["messages"]["sub"] = $sub; diff --git a/pandora_console/operation/messages/message.php b/pandora_console/operation/messages/message.php deleted file mode 100644 index 08dc190c82..0000000000 --- a/pandora_console/operation/messages/message.php +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - -
'.__('Message from').':' . ui_print_username ($config["id_user"], true).'
'.__('Message to').':'; - - $users_full = groups_get_users(array_keys(users_get_groups())); - - $users = array(); - foreach ($users_full as $user_id => $user_info) { - $users[$user_info['id_user']] = $user_info['fullname']; - } - - $groups = users_get_groups ($config["id_user"], "AR"); //Get a list of all groups - - html_print_select ($users, "dest_user", $dest_user, '', __('-Select user-'), false, false, false, '', false); - echo ' - '.__('OR').' - '; - html_print_select_groups($config["id_user"], "AR", true, "dest_group", $dest_group, '', __('-Select group-'), false, false, false, '', false); - - echo '
'.__('Subject').':'; - html_print_input_text ("subject", urldecode($subject), '', 50, 70, false); - - echo '
'.__('Message').':'; - - html_print_textarea ("mensaje", 15, 70, $message, '', false); - - echo '
'; - - html_print_submit_button (__('Send message'), 'send_mes', false, 'class="sub wand"', false); - - echo '
'; - -} elseif (isset ($_GET["read_message"])) { - -// ui_print_page_header (__('Messages'). " » ".__('Read message'), "images/email.png", false, "", false, "" ); - - $message_id = (int) get_parameter ("read_message"); - $message = messages_get_message ($message_id); - - if ($message == false) { - echo '
'.__('This message does not exist in the system').'
'; - return; //Move out of this page and go processing other pages - } - - messages_process_read ($message_id); - - echo '
- - - '; - - // Subject - echo ' - '; - - // text - - $order = array("\r\n", "\n", "\r"); - $replace = '
'; - $parsed_message = str_replace($order, $replace, $message["message"]); - - echo ' -
'.__('Message from').':' . ui_print_username ($message["sender"], true).' '.__('at').' ' . ui_print_timestamp ($message["timestamp"], true, array ("prominent" => "timestamp")).'
'.__('Subject').':'.$message["subject"].'
'.__('Message').':'.$parsed_message.'
'; - - //Prevent RE: RE: RE: - if (strstr ($message["subject"], "RE:")) { - $new_subj = $message["subject"]; - } else { - $new_subj = "RE: ".$message["subject"]; - } - - - //Start the message much like an e-mail reply - $new_msg = "\n\n\nOn ".date ($config["date_format"], $message["timestamp"]).' '.get_user_fullname ($message["sender"]).' '.__('wrote').":\n\n".$message["message"]; - - html_print_input_hidden ("dest_user", $message["sender"]); - html_print_input_hidden ("subject", urlencode ($new_subj)); - html_print_input_hidden ("message", urlencode ($new_msg)); - - echo '
'; - html_print_submit_button (__('Reply'), "reply_btn", false, 'class="sub next"'); - echo '
'; - return; -} - -if (isset ($_GET["read_message"]) || !isset ($_GET["new_msg"]) && !($send_message && !$message_sended)) { -// if (empty ($config["pure"]) && !is_ajax ()) { -// ui_print_page_header (__('Messages'). " » ".__('Message overview'), "images/email.png", false, "", false, "" ); -// } - - //Get number of messages - $num_messages = messages_get_count ($config["id_user"]); - - $order = get_parameter ("msg_overview_order", "status"); - $order_dir = get_parameter ("msg_overview_orddir", "ASC"); - - $messages = messages_get_overview ($order, $order_dir); - - if ($num_messages > 0 && empty ($config["pure"]) && !is_ajax ()) { - echo '

'.__('You have').' '.$num_messages.' '.html_print_image ("images/email.png", true).' '.__('unread message(s)').'.

'; - } - - if (empty ($messages)) { - echo '
'.__('There are no messages').'
'; - } else { - $table->width = "98%"; - $table->class = "databox"; - $table->cellpadding = 4; - $table->cellspacing = 4; - $table->head = array (); - $table->data = array (); - $table->align = array (); - $table->size = array (); - - $table->head[0] = __('Status'); - $table->head[1] = __('Sender'); - $table->head[2] = __('Subject'); - $table->head[3] = __('Timestamp'); - $table->head[4] = __('Delete'); - - $table->align[0] = "center"; - $table->align[1] = "center"; - $table->align[2] = "center"; - $table->align[3] = "center"; - $table->align[4] = "center"; - - $table->size[0] = "20px"; - $table->size[1] = "120px"; - $table->size[3] = "80px"; - $table->size[4] = "20px"; - - foreach ($messages as $message_id => $message) { - $data = array (); - $data[0] = ''; - if ($message["status"] == 1) { - $data[0] .= ''; - $data[0] .= html_print_image ("images/email_open.png", true, array ("border" => 0, "title" => __('Mark as unread'))); - $data[0] .= ''; - } else { - $data[0] .= ''; - $data[0] .= html_print_image ("images/email.png", true, array ("border" => 0, "title" => __('Message unread - click to read'))); - $data[0] .= ''; - } - - $data[1] = ui_print_username ($message["sender"], true); - - $data[2] = ''; - if ($message["subject"] == "") { - $data[2] .= __('No Subject'); - } else { - $data[2] .= $message["subject"]; - } - $data[2] .= ''; - - $data[3] = ui_print_timestamp ($message["timestamp"], true, array ("prominent" => "timestamp")); - - $data[4] = '' . - html_print_image ('images/cross.png', true, array("title" => __('Delete'))) . ''; //"delete_message", "images/cross.png", $message_id, 'border:0px;', true); - array_push ($table->data, $data); - } - - echo '
'; - html_print_table ($table); - echo '
'; - } - echo '
'; - echo '
'; - html_print_submit_button (__('New message'), "send_mes", false, 'class="sub next"'); - echo '
'; -} -?> diff --git a/pandora_console/operation/messages/message_edit.php b/pandora_console/operation/messages/message_edit.php new file mode 100644 index 0000000000..48293449d8 --- /dev/null +++ b/pandora_console/operation/messages/message_edit.php @@ -0,0 +1,188 @@ + false, + 'text' => '' . + html_print_image("images/email.png", true, array ("title" => __('Message list'))) .''); + +$buttons['sent_messages'] = array('active' => false, + 'text' => '' . + html_print_image("images/email_go.png", true, array ("title" => __('Sent messages'))) .''); + +$buttons['create_message'] = array('active' => true, + 'text' => '' . + html_print_image("images/email_edit.png", true, array ("title" => __('Create message'))) .''); + +// Header +ui_print_page_header (__('Messages'), "images/email.png", false, "", false, $buttons); + +//read a message +if ($read_message) { + $message_id = (int) get_parameter ("id_message"); + if ($show_sent) { + $message = messages_get_message_sent ($message_id); + } else { + $message = messages_get_message ($message_id); + messages_process_read ($message_id); + } + + if ($message == false) { + echo '
'.__('This message does not exist in the system').'
'; + return; //Move out of this page and go processing other pages + } + + $user_name = get_user_fullname ($message["id_usuario_origen"]); + if (!$user_name) { + $user_name = $message["id_usuario_origen"]; + } + + $table->width = '98%'; + $table->data = array(); + + $table->data[0][0] = __('From:'); + $table->data[0][1] = $user_name.' '.__('at').' ' . ui_print_timestamp ($message["timestamp"], true, array ("prominent" => "timestamp")); + + $table->data[1][0] = __('To:'); + $table->data[1][1] = $message["id_usuario_destino"]; + + $table->data[2][0] = __('Subject'); + $table->data[2][1] = html_print_input_text_extended ("subject", $message["subject"], 'text-subject', '', 50, 70, true, false, '', 'readonly'); + + $order = array("\r\n", "\n", "\r"); + $replace = '
'; + $parsed_message = str_replace($order, $replace, $message["mensaje"]); + + $table->data[3][0] = __('Message'); + $table->data[3][1] = html_print_textarea ("message", 15, 255, $message["mensaje"], 'readonly', true); + + //Prevent RE: RE: RE: + if (strstr ($message["subject"], "RE:")) { + $new_subj = $message["subject"]; + } else { + $new_subj = "RE: ".$message["subject"]; + } + + //Start the message much like an e-mail reply + $new_msg = "\n\n\nOn ".date ($config["date_format"], $message["timestamp"]).' '.$user_name.' '.__('wrote').":\n\n".$message["mensaje"]; + + echo '
'; + html_print_table($table); + echo "
"; + html_print_submit_button(__('Delete'), 'delete_btn', false, 'class="sub delete"'); + echo "
"; + echo "
"; + + echo '
'; + html_print_input_hidden ("dst_user", $message["id_usuario_origen"]); + html_print_input_hidden ("subject", $new_subj); + html_print_input_hidden ("message", $new_msg); + html_print_input_hidden ("orig_user", $message["id_usuario_destino"]); + echo "
"; + html_print_submit_button (__('Reply'), 'reply', false, 'class="sub next"'); + echo '
'; + echo '
'; + + return; +} + +// Create message (destination user) +if (($new_msg) && (!empty ($dst_user)) && (!$reply)) { + $return = messages_create_message ($config["id_user"], $dst_user, $subject, $message); + + $user_name = get_user_fullname ($dst_user); + if (!$user_name) { + $user_name = $dst_user; + } + ui_print_result_message ($return, + __('Message successfully sent to user %s', $user_name), + __('Error sending message to user %s', $user_name)); +} + +// Create message (destination group) +if (($new_msg) && (!empty ($dst_group)) && (!$reply)) { + $return = messages_create_group ($config["id_user"], $dst_group, $subject, $message); + + ui_print_result_message ($return, + __('Message successfully sent'), + __('Error sending message to group %s', groups_get_name ($dst_group))); +} + +//message creation form + +//user info +$own_info = get_user_info ($config['id_user']); + +$table->width = '98%'; + +$table->data = array(); + +$table->data[0][0] = __('From:'); + +if (!empty($own_info['fullname'])) { + $table->data[0][1] = $own_info['fullname']; +} else { + $table->data[0][1] = $config['id_user']; +} + +$table->data[1][0] = __('To:'); + +$users_full = groups_get_users (array_keys(users_get_groups())); +$users = array(); +foreach ($users_full as $user_id => $user_info) { + $users[$user_info['id_user']] = $user_info['fullname']; +} + +if ($own_info['is_admin'] || check_acl ($config['id_user'], 0, "PM")) + $return_all_groups = true; +else + $return_all_groups = false; + +$groups = users_get_groups ($config["id_user"], "AR"); //Get a list of all groups + +$table->data[1][1] = html_print_select ($users, "dst_user", $dst_user, '', __('Select user'), false, true, false, '', false); +$table->data[1][1] .= '  '.__('OR').'  '; +$table->data[1][1] .= html_print_select_groups($config['id_user'], "AR", $return_all_groups, 'dst_group', $dst_group, '', __('Select group'), '', true); + +$table->data[2][0] = __('Subject'); +$table->data[2][1] = html_print_input_text ("subject", $subject, '', 50, 70, true); + +$table->data[3][0] = __('Message'); +$table->data[3][1] = html_print_textarea ("message", 15, 255, $message, '', true); + +echo '
'; +html_print_table($table); + +echo '
'; + html_print_submit_button (__('Send message'), 'send_mes', false, 'class="sub wand"'); +echo ''; +echo '
'; +?> diff --git a/pandora_console/operation/messages/message_list.php b/pandora_console/operation/messages/message_list.php new file mode 100644 index 0000000000..39b4f3c249 --- /dev/null +++ b/pandora_console/operation/messages/message_list.php @@ -0,0 +1,225 @@ + $active_list, + 'text' => '' . + html_print_image("images/email.png", true, array ("title" => __('Message list'))) .''); + +$buttons['sent_messages'] = array('active' => $active_sent, + 'text' => '' . + html_print_image("images/email_go.png", true, array ("title" => __('Sent messages'))) .''); + +$buttons['create_message'] = array('active' => false, + 'text' => '' . + html_print_image("images/email_edit.png", true, array ("title" => __('Create message'))) .''); + +if (!is_ajax ()) { + ui_print_page_header (__('Messages'), "images/email.png", false, "", false, $buttons); +} + +if ($mark_unread) { + $message_id = get_parameter('id_message'); + messages_process_read ($message_id, false); +} + +if ($delete_msg) { + $id = (int) get_parameter ("id"); + $result = messages_delete_message ($id); //Delete message function will actually check the credentials + + ui_print_result_message ($result, + __('Successfully deleted'), + __('Could not be deleted')); +} + +if ($multiple_delete) { + $ids = (array)get_parameter('delete_multiple', array()); + + db_process_sql_begin(); + + foreach ($ids as $id) { + $result = db_process_sql_delete ('tmensajes', + array ('id_mensaje' => $id)); + + if ($result === false) { + db_process_sql_rollback(); + break; + } + } + + if ($result !== false) { + db_process_sql_commit(); + } + + ui_print_result_message ($result, + __('Successfully deleted'), + __('Not deleted. Error deleting messages')); +} + +if ($show_sent) { //sent view + $num_messages = messages_get_count_sent($config['id_user']); + if ($num_messages > 0 && !is_ajax()) { + echo '

'.__('You have').' '.$num_messages.' '.' '.__('sent message(s)').'.

'; + } + $messages = messages_get_overview_sent ('', 'DESC'); +} else { //messages received + $num_messages = messages_get_count ($config["id_user"]); + if ($num_messages > 0 && !is_ajax()) { + echo '

'.__('You have').' '.$num_messages.' '.' '.__('unread message(s)').'.

'; + } + $messages = messages_get_overview (); +} + +if (empty ($messages)) { + echo '
'.__('There are no messages').'
'; +} else { + $table->width = "98%"; + $table->class = "databox"; + $table->cellpadding = 4; + $table->cellspacing = 4; + $table->head = array (); + $table->data = array (); + $table->align = array (); + $table->size = array (); + + $table->align[0] = "center"; + $table->align[1] = "center"; + $table->align[2] = "center"; + $table->align[3] = "center"; + $table->align[4] = "center"; + + $table->size[0] = "20px"; + $table->size[1] = "100px"; + $table->size[3] = "80px"; + $table->size[4] = "60px"; + + $table->head[0] = __('Status'); + if ($show_sent) + $table->head[1] = __('To'); + else + $table->head[1] = __('From'); + $table->head[2] = __('Subject'); + $table->head[3] = __('Timestamp'); + $table->head[4] = __('Delete'). html_print_checkbox('all_delete', 0, false, true, false, 'check_all_checkboxes();'); + + foreach ($messages as $message_id => $message) { + $data = array (); + $data[0] = ''; + if ($message["status"] == 1) { + if ($show_sent) { + $data[0] .= ''; + $data[0] .= html_print_image ("images/email_open.png", true, array ("border" => 0, "title" => __('Click to read'))); + $data[0] .= ''; + } else { + $data[0] .= ''; + $data[0] .= html_print_image ("images/email_open.png", true, array ("border" => 0, "title" => __('Mark as unread'))); + $data[0] .= ''; + } + } else { + if ($show_sent) { + $data[0] .= ''; + $data[0] .= html_print_image ("images/email.png", true, array ("border" => 0, "title" => __('Message unread - click to read'))); + $data[0] .= ''; + } else { + $data[0] .= ''; + $data[0] .= html_print_image ("images/email.png", true, array ("border" => 0, "title" => __('Message unread - click to read'))); + $data[0] .= ''; + } + } + + if ($show_sent) { + $dest_user = get_user_fullname ($message["dest"]); + if (!$dest_user) { + $dest_user = $message["dest"]; + } + $data[1] = $dest_user; + } else { + $orig_user = get_user_fullname ($message["sender"]); + if (!$orig_user) { + $orig_user = $message["sender"]; + } + $data[1] = $orig_user; + } + + if ($show_sent) { + $data[2] = ''; + } else { + $data[2] = ''; + } + if ($message["subject"] == "") { + $data[2] .= __('No Subject'); + } else { + $data[2] .= $message["subject"]; + } + $data[2] .= ''; + + $data[3] = ui_print_timestamp ($message["timestamp"], true, array ("prominent" => "timestamp")); + + if ($show_sent) { + $data[4] = '' . + html_print_image ('images/cross.png', true, array("title" => __('Delete'))) . ''. + html_print_checkbox_extended ('delete_multiple[]', $message_id, false, false, '', 'class="check_delete"', true); + } else { + $data[4] = '' . + html_print_image ('images/cross.png', true, array("title" => __('Delete'))) . ''. + html_print_checkbox_extended ('delete_multiple[]', $message_id, false, false, '', 'class="check_delete"', true); + } + array_push ($table->data, $data); + } + if ($show_sent) + echo '
'; + else + echo ''; + html_print_table($table); + echo "
"; + html_print_submit_button(__('Delete'), 'delete_btn', false, 'class="sub delete"'); + echo "
"; + echo "
"; +} + +echo '
'; +echo '
'; +html_print_submit_button (__('Create message'), 'create', false, 'class="sub next"'); +echo "
"; +echo "
"; +?> + + diff --git a/pandora_console/pandoradb.sql b/pandora_console/pandoradb.sql index 1e623fdc03..44ec66295e 100644 --- a/pandora_console/pandoradb.sql +++ b/pandora_console/pandoradb.sql @@ -516,7 +516,7 @@ CREATE TABLE IF NOT EXISTS `tmensajes` ( `id_mensaje` int(10) unsigned NOT NULL auto_increment, `id_usuario_origen` varchar(60) NOT NULL default '', `id_usuario_destino` varchar(60) NOT NULL default '', - `mensaje` tinytext NOT NULL, + `mensaje` text NOT NULL DEFAULT '', `timestamp` bigint (20) unsigned NOT NULL default '0', `subject` varchar(255) NOT NULL default '', `estado` int(4) unsigned NOT NULL default '0', @@ -777,6 +777,7 @@ CREATE TABLE IF NOT EXISTS `tusuario` ( `shortcut_data` text default '', `section` TEXT NOT NULL, `data_section` TEXT NOT NULL, + `created_by` TEXT NOT NULL, UNIQUE KEY `id_user` (`id_user`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;