Browse Source

Rename directory "s" to "src" - refs #6715

Yannick Warnier 11 years ago
parent
commit
e6ac6258e6

+ 1 - 1
plugin/ticket/config.php

@@ -42,4 +42,4 @@ require_once api_get_path(LIBRARY_PATH).'export.lib.inc.php';
 
 require_once api_get_path(PLUGIN_PATH).PLUGIN_NAME.'/lib/ticket.class.php';
 require_once api_get_path(PLUGIN_PATH).PLUGIN_NAME.'/lib/ticket_plugin.class.php';
-require_once api_get_path(PLUGIN_PATH).PLUGIN_NAME.'/s/ticket.class.php';
+require_once api_get_path(PLUGIN_PATH).PLUGIN_NAME.'/src/ticket.class.php';

+ 0 - 0
plugin/ticket/s/assign_tickets.php → plugin/ticket/src/assign_tickets.php


+ 5 - 5
plugin/ticket/s/course_user_list.php → plugin/ticket/src/course_user_list.php

@@ -6,10 +6,10 @@ $plugin = TicketPlugin::create();
 $user_id=intval($_GET['user_id']);
 $user_info = api_get_user_info($user_id);
 $courses_list=CourseManager::get_courses_list_by_user_id($user_id,false,true);
-?>
-<div class="row">
-	<div class="label2"><?php echo get_lang('User')?>:</div>
-       <div class="formw2" id="user_request"><?php echo $user_info['firstname']." ".$user_info['lastname'] ;?></div>
+?>
+<div class="row">
+	<div class="label2"><?php echo get_lang('User')?>:</div>
+       <div class="formw2" id="user_request"><?php echo $user_info['firstname']." ".$user_info['lastname'] ;?></div>
 </div>
 <div class="row" id="divCourse">
 	<div class="label2"><?php echo get_lang('Course')?>:</div>
@@ -22,6 +22,6 @@ $courses_list=CourseManager::get_courses_list_by_user_id($user_id,false,true);
 			echo '<option value="'. $courseinfo['code'].'"> '.$courseinfo['title'].'</option>';
 		}
 		?>
-	</select>
+	</select>
 	</div>
 </div>

+ 47 - 47
plugin/ticket/s/download.php → plugin/ticket/src/download.php

@@ -1,48 +1,48 @@
-<?php
-require_once '../config.php';
-$plugin = TicketPlugin::create();
-
-require_once api_get_path(LIBRARY_PATH) . 'group_portal_manager.lib.php';
-require_once api_get_path(LIBRARY_PATH) . 'document.lib.php';
-
-api_block_anonymous_users();
-$language_file = array('courses', 'index', 'admin');
-$user_id = api_get_user_id();
-if (!isset($_GET['file']) || !isset($_GET['title']) || !isset($_GET['ticket_id'])) {
-    api_not_allowed();
-}
-if (!api_is_platform_admin()) {
-    $ticket_id = intval($_GET['ticket_id']);
-    $table_support_messages = Database::get_main_table(TABLE_SUPPORT_MESSAGE);
-    $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-    $table_support_message_attachments = Database::get_main_table(
-        TABLE_SUPPORT_MESSAGE_ATTACHMENTS
-    );
-    $sql = "SELECT DISTINCT  ticket.request_user
-          FROM  $table_support_tickets ticket,
-                $table_support_messages message,
-                $table_support_message_attachments attch
-            WHERE ticket.ticket_id = message.ticket_id
-            AND attch.message_id = message.message_id
-            AND ticket.ticket_id = $ticket_id";
-    $rs = Database::query($sql);
-    $row_users = Database::fetch_array($rs, 'ASSOC');
-    $user_request_id = $row_users['request_user'];
-    if (intval($user_request_id) != $user_id) {
-        api_not_allowed();
-    }
-}
-$file_url = $_GET['file'];
-$file_url = str_replace('///', '&', $file_url);
-$file_url = str_replace(' ', '+', $file_url);
-$file_url = str_replace('/..', '', $file_url);
-$file_url = Database::escape_string($file_url);
-$title = $_GET['title'];
-$path_attachment = api_get_path(SYS_PATH);
-$path_message_attach = $path_attachment . 'tck_messageattch/';
-$full_file_name = $path_message_attach . $file_url;
-if (Security::check_abs_path($full_file_name, $path_message_attach)) {
-    DocumentManager::file_send_for_download($full_file_name, true, $title);
-}
-
+<?php
+require_once '../config.php';
+$plugin = TicketPlugin::create();
+
+require_once api_get_path(LIBRARY_PATH) . 'group_portal_manager.lib.php';
+require_once api_get_path(LIBRARY_PATH) . 'document.lib.php';
+
+api_block_anonymous_users();
+$language_file = array('courses', 'index', 'admin');
+$user_id = api_get_user_id();
+if (!isset($_GET['file']) || !isset($_GET['title']) || !isset($_GET['ticket_id'])) {
+    api_not_allowed();
+}
+if (!api_is_platform_admin()) {
+    $ticket_id = intval($_GET['ticket_id']);
+    $table_support_messages = Database::get_main_table(TABLE_SUPPORT_MESSAGE);
+    $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+    $table_support_message_attachments = Database::get_main_table(
+        TABLE_SUPPORT_MESSAGE_ATTACHMENTS
+    );
+    $sql = "SELECT DISTINCT  ticket.request_user
+          FROM  $table_support_tickets ticket,
+                $table_support_messages message,
+                $table_support_message_attachments attch
+            WHERE ticket.ticket_id = message.ticket_id
+            AND attch.message_id = message.message_id
+            AND ticket.ticket_id = $ticket_id";
+    $rs = Database::query($sql);
+    $row_users = Database::fetch_array($rs, 'ASSOC');
+    $user_request_id = $row_users['request_user'];
+    if (intval($user_request_id) != $user_id) {
+        api_not_allowed();
+    }
+}
+$file_url = $_GET['file'];
+$file_url = str_replace('///', '&', $file_url);
+$file_url = str_replace(' ', '+', $file_url);
+$file_url = str_replace('/..', '', $file_url);
+$file_url = Database::escape_string($file_url);
+$title = $_GET['title'];
+$path_attachment = api_get_path(SYS_PATH);
+$path_message_attach = $path_attachment . 'tck_messageattch/';
+$full_file_name = $path_message_attach . $file_url;
+if (Security::check_abs_path($full_file_name, $path_message_attach)) {
+    DocumentManager::file_send_for_download($full_file_name, true, $title);
+}
+
 exit;

+ 3 - 3
plugin/ticket/s/index.php → plugin/ticket/src/index.php

@@ -1,4 +1,4 @@
-<?php
-require_once '../config.php';
-header('location:'.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/myticket.php?message=success');
+<?php
+require_once '../config.php';
+header('location:'.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/myticket.php?message=success');
 ?>

+ 312 - 312
plugin/ticket/s/myticket.php → plugin/ticket/src/myticket.php

@@ -1,313 +1,313 @@
-<?php
-
-$language_file = array('messages', 'userInfo', 'admin');
-$cidReset = true;
-
-$course_plugin = 'ticket'; //needed in order to load the plugin lang variables
-require_once '../config.php';
-
-$plugin = TicketPlugin::create();
-$tool_name = $plugin->get_lang('DateLastEdition');
-
-api_block_anonymous_users();
-require_once api_get_path(LIBRARY_PATH) . 'formvalidator/FormValidator.class.php';
-require_once api_get_path(LIBRARY_PATH) . 'group_portal_manager.lib.php';
-$htmlHeadXtra[] = '<script type="text/javascript">
-function load_history_ticket (div_course,ticket_id) {
-    $.ajax({
-        contentType: "application/x-www-form-urlencoded",
-        beforeSend: function(object) {
-        $("div#"+div_course).html("<img src=\'../../../main/inc/lib/javascript/indicator.gif\' />"); },
-        type: "POST",
-        url: "ticket_assign_log.php",
-        data: "ticket_id="+ticket_id,
-        success: function(data) {
-            $("div#div_"+ticket_id).html(data);
-            $("div#div_"+ticket_id).attr("class","blackboard_show");
-            $("div#div_"+ticket_id).attr("style","");
-           }
-    });
-}
-function clear_course_list (div_course) {
-    $("div#"+div_course).html("&nbsp;");
-    $("div#"+div_course).hide("");
-}
-		
-$(function() {
-    $( "#keyword_start_date_start" ).datepicker({ dateFormat: ' . "'dd/mm/yy'" . ' });
-    $( "#keyword_start_date_end" ).datepicker({ dateFormat: ' . "'dd/mm/yy'" . ' });
-});
-  	
-$(document).ready(function() {
-        $("#advanced_search_form").css("display","none");
-});
-
-function display_advanced_search_form () {
-    if ($("#advanced_search_form").css("display") == "none") {
-        $("#advanced_search_form").css("display","block");
-        $("#img_plus_and_minus").html(\'&nbsp;' . Display::return_icon('div_hide.gif', get_lang('Hide'), array('style' => 'vertical-align:middle')) . '&nbsp;' . get_lang('AdvancedSearch') . '\');
-    } else {
-        $("#advanced_search_form").css("display","none");
-        $("#img_plus_and_minus").html(\'&nbsp;' . Display::return_icon('div_show.gif', get_lang('Show'), array('style' => 'vertical-align:middle')) . '&nbsp;' . get_lang('AdvancedSearch') . '\');
-    }
-}
-</script>
-<style>
-div.row div.label2 {
-    float: left;
-    width: 35%;
-    text-align: left;
-}
-div.row div.formw2 {
-    width: 65%;
-    float: left;
-}
-.blackboard_show {
-    float: left;
-    position: absolute;
-    border: 1px solid black;
-    width: 350px;
-    background-color: white;
-    z-index: 99; 
-    padding: 3px;
-    display: inline;
-}
-.blackboard_hide {
-    display: none;
-}
-</style>';
-
-$this_section = 'tickets';
-unset($_SESSION['this_section']);
-
-$table = new SortableTable('Tickets', array('TicketManager', 'get_total_tickets_by_user_id'), 
-            array('TicketManager', 'get_tickets_by_user_id'), 2, 20, 'DESC');
-if ($table->per_page == 0) {
-    $table->per_page = 20;
-}
-
-if (isset($_GET['action'])) {
-    global $table;
-    $action = $_GET['action'];
-    switch ($action) {
-        case 'assign':
-            if ($isAdmin && isset($_GET['ticket_id']))
-                TicketManager::assign_ticket_user($_GET['ticket_id'], $user_id);
-            break;
-        case 'unassign':
-            if ($isAdmin && isset($_GET['ticket_id']))
-                TicketManager::assign_ticket_user($_GET['ticket_id'], 0);
-            break;
-        case 'alert':
-            if (!$isAdmin && isset($_GET['ticket_id']))
-                TicketManager::send_alert($_GET['ticket_id'], $user_id);
-            break;
-        case 'export':
-            $data = array(array($plugin->get_lang('TicketNum'), $plugin->get_lang('Date'), $plugin->get_lang('DateLastEdition'), $plugin->get_lang('Category'), $plugin->get_lang('User'), $plugin->get_lang('Program'), $plugin->get_lang('Responsible'), $plugin->get_lang('Status'), $plugin->get_lang('Message'), $plugin->get_lang('Description')));
-            $datos = $table->get_clean_html();
-            foreach ($datos as $ticket) {
-                $ticket[0] = substr(strip_tags($ticket[0]), 0, 12);
-                $ticket_rem = array(utf8_decode(strip_tags($ticket[0])), utf8_decode(api_html_entity_decode($ticket[1])), utf8_decode(strip_tags($ticket[2])), utf8_decode(strip_tags($ticket[3])), utf8_decode(strip_tags($ticket[4])), utf8_decode(strip_tags($ticket[5])), utf8_decode(strip_tags($ticket[6])), utf8_decode(strip_tags($ticket[7])), utf8_decode(strip_tags($ticket[8])), utf8_decode(strip_tags($ticket[10])));
-                $data[] = $ticket_rem;
-            }
-            Export::export_table_xls($data, $plugin->get_lang('Tickets'));
-            exit;
-            break;
-        case 'close_tickets':
-            TicketManager::close_old_tickets();
-            break;
-        default:
-            break;
-    }
-}
-//$nameTools = api_xml_http_response_encode($plugin->get_lang('MyTickets'));
-$user_id = api_get_user_id();
-$isAdmin = api_is_platform_admin();
-
-Display::display_header($plugin->get_lang('MyTickets'));
-if ($isAdmin) {
-    $get_parameter = '&keyword=' . $_GET['keyword'] . '&keyword_status=' . $_GET['keyword_status'] . '&keyword_category=' . $_GET['keyword_category'] . '&keyword_request_user=' . $_GET['keyword_request_user'];
-    $get_parameter .= '&keyword_admin=' . $_GET['keyword_admin'] . '&keyword_start_date=' . $_GET['keyword_start_date'] . '&keyword_unread=' . $_GET['keyword_unread'];
-    $get_parameter2 = '&Tickets_per_page=' . $_GET['Tickets_per_page'] . '&Tickets_column=' . $_GET['Tickets_column'];
-    if (isset($_GET['submit_advanced'])) {
-        $get_parameter .= "&submit_advanced=";
-    }
-    if (isset($_GET['submit_simple'])) {
-        $get_parameter .= "&submit_simple=";
-    }
-    //select categories
-    $select_types .= '<select class="chzn-select" style="width: 200px; "  name = "keyword_category" id="keyword_category" ">';
-    $select_types .= '<option value="">---' . get_lang('Select') . '---</option>';
-    $types = TicketManager::get_all_tickets_categories();
-    foreach ($types as $type) {
-        $select_types.= "<option value = '" . $type['category_id'] . "'>" . $type['name'] . "</option>";
-    }
-    $select_types .= "</select>";
-    //select admins
-    $select_admins .= '<select  class ="chzn-select" style="width: 200px; " name = "keyword_admin" id="keyword_admin" ">';
-    $select_admins .= '<option value="">---' . get_lang('Select') . '---</option>';
-    $select_admins .= '<option value = "0">' . $plugin->get_lang('Unassigned') . '</option>';
-    $admins = UserManager::get_user_list_like(array("status" => "1"), array("username"), true);
-    foreach ($admins as $admin) {
-        $select_admins.= "<option value = '" . $admin['user_id'] . "'>" . $admin['lastname'] . " ," . $admin['firstname'] . "</option>";
-    }
-    $select_admins .= "</select>";
-    //select status
-    $select_status .= '<select  class ="chzn-select" style="width: 200px; " name = "keyword_status" id="keyword_status" >';
-    $select_status .= '<option value="">---' . get_lang('Select') . '---</option>';
-    $status = TicketManager::get_all_tickets_status();
-    foreach ($status as $stat) {
-        $select_status.= "<option value = '" . $stat['status_id'] . "'>" . $stat['name'] . "</option>";
-    }
-    $select_status .= "</select>";
-    //select priority
-    $select_priority .= '<select  style="width: 200px; " name = "keyword_priority" id="keyword_priority" >';
-    $select_priority .= '<option value="">' . get_lang('All') . '</option>';
-    $select_priority .= '<option value="NRM">' . get_lang('PriorityNormal') . '</option>';
-    $select_priority .= '<option value="ALT">' . get_lang('PriorityHigh') . '</option>';
-    $select_priority .= '<option value="LOW">' . get_lang('PriorityLow') . '</option>';
-    $select_priority .= "</select>";
-
-    //select unread
-    $select_unread = '<select  style="width: 100px; " name = "keyword_unread" id="keyword_unread" >';
-    $select_unread .= '<option value="">' . get_lang('All') . '</option>';
-    $select_unread .= '<option value="yes">' . get_lang('Read') . '</option>';
-    $select_unread .= '<option value="no">' . get_lang('Unread') . '</option>';
-    $select_unread .= "</select>";
-    // Create a search-box
-    $form = new FormValidator('search_simple', 'get', '', '', null, false);
-    $renderer = & $form->defaultRenderer();
-    $renderer->setElementTemplate('<span>{element}</span> ');
-    $form->addElement('text', 'keyword', get_lang('keyword'), 'size="25"');
-    $form->addElement('style_submit_button', 'submit_simple', get_lang('Search'), 'class="search"');
-    $form->addElement('static', 'search_advanced_link', null, '<a href="javascript://" class = "advanced_parameters" onclick="display_advanced_search_form();"><span id="img_plus_and_minus">&nbsp;' . Display::return_icon('div_show.gif', get_lang('Show'), array('style' => 'vertical-align:middle')) . ' ' . get_lang('AdvancedSearch') . '</span></a>');
-
-    echo '<div class="actions" style="width:100%;">';
-    if (api_is_platform_admin()) {
-        /* echo '<span style="float:right;">'.
-          '<a href="'.api_get_self().'?action=close_tickets">'.Display::return_icon('warning.png',$plugin->get_lang('TckClose'),'','32').'</a>'.
-          '</span>'; */
-        echo '<span style="float:right;">' .
-        '<a href="' . api_get_self() . '?action=export' . $get_parameter . $get_parameter2 . '">' . 
-        Display::return_icon('import_excel.png', get_lang('Export'), '', '32') . '</a>' .
-        '</span>';
-        echo '<span style="float:right;">' .
-        '<a href="' . api_get_path(WEB_PLUGIN_PATH) . 'ticket/s/new_ticket.php">' . 
-        Display::return_icon('add.png', $plugin->get_lang('TckNew'), '', '32') . '</a>' .
-        '</span>';
-        echo '<span style="float:right;">' .
-        '</span>';
-    }
-    $form->display();
-    echo '</div>';
-    echo '<form action="' . api_get_self() . '" method="get" name="advanced_search" id="advanced_search" display:"none">
-            <div id="advanced_search_form" style="display: block;">
-            <div class="row">
-               <div class="form_header">' . get_lang('AdvancedSearch') . '</div>
-            </div>
-            <table width="100%">
-               <tbody>
-                  <tr>
-                     <td width="30%">
-                        <div class="row">
-                           <div class="label2">' . get_lang('Category') . '</div>
-                           <div class="formw2">' . $select_types . '</div>
-                        </div>
-                     </td>
-                     <td width="25%">
-                        <div class="row">
-                           <div class="label2">' . get_lang('User') . '</div>
-                           <div class="formw2"><input id="keyword_request_user" name="keyword_request_user" type="text"></div>
-                        </div>
-                     </td>
-                     <td width="25%">
-                        <div class="row">
-                           <div class="label2">' . $plugin->get_lang('RegisterDate') . ':</div>
-                           <div class="formw2"><input id="keyword_start_date_start" name="keyword_start_date_start" type="text"></div>
-                        </div>
-                     </td>
-                     <td width="20%">
-                        <div class="row">
-                           <div class="label2"><input type="checkbox" name="keyword_dates" value="1">' . get_lang('Untill') . ':</div>
-                           <div class="formw2"><input id="keyword_start_date_end" name="keyword_start_date_end" type="text"></div>
-                        </div>
-                     </td>
-                  </tr>
-                  <tr >
-                     <td>
-                        <div class="row">
-                           <div class="label2">' . $plugin->get_lang('AssignedTo') . ':</div>
-                           <div class="formw2">' . $select_admins . '</div>
-                        </div>
-                     </td>
-                     <td>
-                        <div class="row">
-                           <div class="label2">' . get_lang('Status') . ':</div>
-                           <div class="formw2">' . $select_status . '</div>
-                        </div>
-                     </td>
-                     <td>
-                        <div class="row">
-                        <div class="row">
-                           <div class="label2">' . $plugin->get_lang('Priority') . ':</div>
-                           <div class="formw2">' . $select_priority . '</div>
-                        </div>
-                     </td>
-                     <td>
-                        <div class="row">
-                           <div class="row">
-                              <div class="label2">' . $plugin->get_lang('Priority') . ':</div>
-                              <div class="formw2">' . $select_unread . '</div>
-                           </div>
-                     </td>
-                  </tr>
-                  <tr>
-                  <td width="30%">
-                  <div class="row" >
-                  <div class="label2">' . get_lang('Course') . '</div>
-                  <div class="formw2">
-                  <input id="keyword_course" name="keyword_course" type="text"></div>
-                  </div>
-                  </td>
-                  <td colspan= "3">
-                  <div class="row">
-                  <button  name="submit_advanced" type="submit">' . get_lang('AdvancedSearch') . '</button>
-                  </div>
-                  </td>
-                  </tr>
-               </tbody>
-            </table>
-            </div>
-            <input name="_qf__advanced_search" type="hidden" value="">
-            <div class="clear">&nbsp;</div>
-         </form>';
-}
-
-
-if ($isAdmin) {
-    $table->set_header(0, $plugin->get_lang('TicketNum'), true);
-    $table->set_header(1, $plugin->get_lang('Date'), true);
-    $table->set_header(2, $plugin->get_lang('DateLastEdition'), true);
-    $table->set_header(3, $plugin->get_lang('Category'), true);
-    $table->set_header(4, $plugin->get_lang('User'), true);
-    $table->set_header(5, $plugin->get_lang('Responsible'), true);
-    $table->set_header(6, $plugin->get_lang('Status'), true);
-    $table->set_header(7, $plugin->get_lang('Message'), true);
-    $table->set_header(8, get_lang('Actions'), true);
-    $table->set_header(9, get_lang('Description'), true, array("style" => "width:200px"));
-} else {
-    echo '<center><h1>' . $plugin->get_lang('MyTickets') . '</h1></center>';
-    echo '<center><p>' . $plugin->get_lang('MsgWelcome') . '</p></center>';
-    if (isset($_GET['message'])) {
-        Display::display_confirmation_message($plugin->get_lang('TckSuccessSave'));
-    }
-    $table->set_header(0, $plugin->get_lang('TicketNum'), true);
-    $table->set_header(1, $plugin->get_lang('Date'), true);
-    $table->set_header(2, $plugin->get_lang('DateLastEdition'), true);
-    $table->set_header(3, $plugin->get_lang('Category'));
-    $table->set_header(4, $plugin->get_lang('Status'), false);
-    $table->set_header(5, get_lang('Actions'), false);
-}
-
-$table->display();
+<?php
+
+$language_file = array('messages', 'userInfo', 'admin');
+$cidReset = true;
+
+$course_plugin = 'ticket'; //needed in order to load the plugin lang variables
+require_once '../config.php';
+
+$plugin = TicketPlugin::create();
+$tool_name = $plugin->get_lang('DateLastEdition');
+
+api_block_anonymous_users();
+require_once api_get_path(LIBRARY_PATH) . 'formvalidator/FormValidator.class.php';
+require_once api_get_path(LIBRARY_PATH) . 'group_portal_manager.lib.php';
+$htmlHeadXtra[] = '<script type="text/javascript">
+function load_history_ticket (div_course,ticket_id) {
+    $.ajax({
+        contentType: "application/x-www-form-urlencoded",
+        beforeSend: function(object) {
+        $("div#"+div_course).html("<img src=\'../../../main/inc/lib/javascript/indicator.gif\' />"); },
+        type: "POST",
+        url: "ticket_assign_log.php",
+        data: "ticket_id="+ticket_id,
+        success: function(data) {
+            $("div#div_"+ticket_id).html(data);
+            $("div#div_"+ticket_id).attr("class","blackboard_show");
+            $("div#div_"+ticket_id).attr("style","");
+           }
+    });
+}
+function clear_course_list (div_course) {
+    $("div#"+div_course).html("&nbsp;");
+    $("div#"+div_course).hide("");
+}
+		
+$(function() {
+    $( "#keyword_start_date_start" ).datepicker({ dateFormat: ' . "'dd/mm/yy'" . ' });
+    $( "#keyword_start_date_end" ).datepicker({ dateFormat: ' . "'dd/mm/yy'" . ' });
+});
+  	
+$(document).ready(function() {
+        $("#advanced_search_form").css("display","none");
+});
+
+function display_advanced_search_form () {
+    if ($("#advanced_search_form").css("display") == "none") {
+        $("#advanced_search_form").css("display","block");
+        $("#img_plus_and_minus").html(\'&nbsp;' . Display::return_icon('div_hide.gif', get_lang('Hide'), array('style' => 'vertical-align:middle')) . '&nbsp;' . get_lang('AdvancedSearch') . '\');
+    } else {
+        $("#advanced_search_form").css("display","none");
+        $("#img_plus_and_minus").html(\'&nbsp;' . Display::return_icon('div_show.gif', get_lang('Show'), array('style' => 'vertical-align:middle')) . '&nbsp;' . get_lang('AdvancedSearch') . '\');
+    }
+}
+</script>
+<style>
+div.row div.label2 {
+    float: left;
+    width: 35%;
+    text-align: left;
+}
+div.row div.formw2 {
+    width: 65%;
+    float: left;
+}
+.blackboard_show {
+    float: left;
+    position: absolute;
+    border: 1px solid black;
+    width: 350px;
+    background-color: white;
+    z-index: 99; 
+    padding: 3px;
+    display: inline;
+}
+.blackboard_hide {
+    display: none;
+}
+</style>';
+
+$this_section = 'tickets';
+unset($_SESSION['this_section']);
+
+$table = new SortableTable('Tickets', array('TicketManager', 'get_total_tickets_by_user_id'), 
+            array('TicketManager', 'get_tickets_by_user_id'), 2, 20, 'DESC');
+if ($table->per_page == 0) {
+    $table->per_page = 20;
+}
+
+if (isset($_GET['action'])) {
+    global $table;
+    $action = $_GET['action'];
+    switch ($action) {
+        case 'assign':
+            if ($isAdmin && isset($_GET['ticket_id']))
+                TicketManager::assign_ticket_user($_GET['ticket_id'], $user_id);
+            break;
+        case 'unassign':
+            if ($isAdmin && isset($_GET['ticket_id']))
+                TicketManager::assign_ticket_user($_GET['ticket_id'], 0);
+            break;
+        case 'alert':
+            if (!$isAdmin && isset($_GET['ticket_id']))
+                TicketManager::send_alert($_GET['ticket_id'], $user_id);
+            break;
+        case 'export':
+            $data = array(array($plugin->get_lang('TicketNum'), $plugin->get_lang('Date'), $plugin->get_lang('DateLastEdition'), $plugin->get_lang('Category'), $plugin->get_lang('User'), $plugin->get_lang('Program'), $plugin->get_lang('Responsible'), $plugin->get_lang('Status'), $plugin->get_lang('Message'), $plugin->get_lang('Description')));
+            $datos = $table->get_clean_html();
+            foreach ($datos as $ticket) {
+                $ticket[0] = substr(strip_tags($ticket[0]), 0, 12);
+                $ticket_rem = array(utf8_decode(strip_tags($ticket[0])), utf8_decode(api_html_entity_decode($ticket[1])), utf8_decode(strip_tags($ticket[2])), utf8_decode(strip_tags($ticket[3])), utf8_decode(strip_tags($ticket[4])), utf8_decode(strip_tags($ticket[5])), utf8_decode(strip_tags($ticket[6])), utf8_decode(strip_tags($ticket[7])), utf8_decode(strip_tags($ticket[8])), utf8_decode(strip_tags($ticket[10])));
+                $data[] = $ticket_rem;
+            }
+            Export::export_table_xls($data, $plugin->get_lang('Tickets'));
+            exit;
+            break;
+        case 'close_tickets':
+            TicketManager::close_old_tickets();
+            break;
+        default:
+            break;
+    }
+}
+//$nameTools = api_xml_http_response_encode($plugin->get_lang('MyTickets'));
+$user_id = api_get_user_id();
+$isAdmin = api_is_platform_admin();
+
+Display::display_header($plugin->get_lang('MyTickets'));
+if ($isAdmin) {
+    $get_parameter = '&keyword=' . $_GET['keyword'] . '&keyword_status=' . $_GET['keyword_status'] . '&keyword_category=' . $_GET['keyword_category'] . '&keyword_request_user=' . $_GET['keyword_request_user'];
+    $get_parameter .= '&keyword_admin=' . $_GET['keyword_admin'] . '&keyword_start_date=' . $_GET['keyword_start_date'] . '&keyword_unread=' . $_GET['keyword_unread'];
+    $get_parameter2 = '&Tickets_per_page=' . $_GET['Tickets_per_page'] . '&Tickets_column=' . $_GET['Tickets_column'];
+    if (isset($_GET['submit_advanced'])) {
+        $get_parameter .= "&submit_advanced=";
+    }
+    if (isset($_GET['submit_simple'])) {
+        $get_parameter .= "&submit_simple=";
+    }
+    //select categories
+    $select_types .= '<select class="chzn-select" style="width: 200px; "  name = "keyword_category" id="keyword_category" ">';
+    $select_types .= '<option value="">---' . get_lang('Select') . '---</option>';
+    $types = TicketManager::get_all_tickets_categories();
+    foreach ($types as $type) {
+        $select_types.= "<option value = '" . $type['category_id'] . "'>" . $type['name'] . "</option>";
+    }
+    $select_types .= "</select>";
+    //select admins
+    $select_admins .= '<select  class ="chzn-select" style="width: 200px; " name = "keyword_admin" id="keyword_admin" ">';
+    $select_admins .= '<option value="">---' . get_lang('Select') . '---</option>';
+    $select_admins .= '<option value = "0">' . $plugin->get_lang('Unassigned') . '</option>';
+    $admins = UserManager::get_user_list_like(array("status" => "1"), array("username"), true);
+    foreach ($admins as $admin) {
+        $select_admins.= "<option value = '" . $admin['user_id'] . "'>" . $admin['lastname'] . " ," . $admin['firstname'] . "</option>";
+    }
+    $select_admins .= "</select>";
+    //select status
+    $select_status .= '<select  class ="chzn-select" style="width: 200px; " name = "keyword_status" id="keyword_status" >';
+    $select_status .= '<option value="">---' . get_lang('Select') . '---</option>';
+    $status = TicketManager::get_all_tickets_status();
+    foreach ($status as $stat) {
+        $select_status.= "<option value = '" . $stat['status_id'] . "'>" . $stat['name'] . "</option>";
+    }
+    $select_status .= "</select>";
+    //select priority
+    $select_priority .= '<select  style="width: 200px; " name = "keyword_priority" id="keyword_priority" >';
+    $select_priority .= '<option value="">' . get_lang('All') . '</option>';
+    $select_priority .= '<option value="NRM">' . get_lang('PriorityNormal') . '</option>';
+    $select_priority .= '<option value="ALT">' . get_lang('PriorityHigh') . '</option>';
+    $select_priority .= '<option value="LOW">' . get_lang('PriorityLow') . '</option>';
+    $select_priority .= "</select>";
+
+    //select unread
+    $select_unread = '<select  style="width: 100px; " name = "keyword_unread" id="keyword_unread" >';
+    $select_unread .= '<option value="">' . get_lang('All') . '</option>';
+    $select_unread .= '<option value="yes">' . get_lang('Read') . '</option>';
+    $select_unread .= '<option value="no">' . get_lang('Unread') . '</option>';
+    $select_unread .= "</select>";
+    // Create a search-box
+    $form = new FormValidator('search_simple', 'get', '', '', null, false);
+    $renderer = & $form->defaultRenderer();
+    $renderer->setElementTemplate('<span>{element}</span> ');
+    $form->addElement('text', 'keyword', get_lang('keyword'), 'size="25"');
+    $form->addElement('style_submit_button', 'submit_simple', get_lang('Search'), 'class="search"');
+    $form->addElement('static', 'search_advanced_link', null, '<a href="javascript://" class = "advanced_parameters" onclick="display_advanced_search_form();"><span id="img_plus_and_minus">&nbsp;' . Display::return_icon('div_show.gif', get_lang('Show'), array('style' => 'vertical-align:middle')) . ' ' . get_lang('AdvancedSearch') . '</span></a>');
+
+    echo '<div class="actions" style="width:100%;">';
+    if (api_is_platform_admin()) {
+        /* echo '<span style="float:right;">'.
+          '<a href="'.api_get_self().'?action=close_tickets">'.Display::return_icon('warning.png',$plugin->get_lang('TckClose'),'','32').'</a>'.
+          '</span>'; */
+        echo '<span style="float:right;">' .
+        '<a href="' . api_get_self() . '?action=export' . $get_parameter . $get_parameter2 . '">' . 
+        Display::return_icon('import_excel.png', get_lang('Export'), '', '32') . '</a>' .
+        '</span>';
+        echo '<span style="float:right;">' .
+        '<a href="' . api_get_path(WEB_PLUGIN_PATH) . 'ticket/s/new_ticket.php">' . 
+        Display::return_icon('add.png', $plugin->get_lang('TckNew'), '', '32') . '</a>' .
+        '</span>';
+        echo '<span style="float:right;">' .
+        '</span>';
+    }
+    $form->display();
+    echo '</div>';
+    echo '<form action="' . api_get_self() . '" method="get" name="advanced_search" id="advanced_search" display:"none">
+            <div id="advanced_search_form" style="display: block;">
+            <div class="row">
+               <div class="form_header">' . get_lang('AdvancedSearch') . '</div>
+            </div>
+            <table width="100%">
+               <tbody>
+                  <tr>
+                     <td width="30%">
+                        <div class="row">
+                           <div class="label2">' . get_lang('Category') . '</div>
+                           <div class="formw2">' . $select_types . '</div>
+                        </div>
+                     </td>
+                     <td width="25%">
+                        <div class="row">
+                           <div class="label2">' . get_lang('User') . '</div>
+                           <div class="formw2"><input id="keyword_request_user" name="keyword_request_user" type="text"></div>
+                        </div>
+                     </td>
+                     <td width="25%">
+                        <div class="row">
+                           <div class="label2">' . $plugin->get_lang('RegisterDate') . ':</div>
+                           <div class="formw2"><input id="keyword_start_date_start" name="keyword_start_date_start" type="text"></div>
+                        </div>
+                     </td>
+                     <td width="20%">
+                        <div class="row">
+                           <div class="label2"><input type="checkbox" name="keyword_dates" value="1">' . get_lang('Untill') . ':</div>
+                           <div class="formw2"><input id="keyword_start_date_end" name="keyword_start_date_end" type="text"></div>
+                        </div>
+                     </td>
+                  </tr>
+                  <tr >
+                     <td>
+                        <div class="row">
+                           <div class="label2">' . $plugin->get_lang('AssignedTo') . ':</div>
+                           <div class="formw2">' . $select_admins . '</div>
+                        </div>
+                     </td>
+                     <td>
+                        <div class="row">
+                           <div class="label2">' . get_lang('Status') . ':</div>
+                           <div class="formw2">' . $select_status . '</div>
+                        </div>
+                     </td>
+                     <td>
+                        <div class="row">
+                        <div class="row">
+                           <div class="label2">' . $plugin->get_lang('Priority') . ':</div>
+                           <div class="formw2">' . $select_priority . '</div>
+                        </div>
+                     </td>
+                     <td>
+                        <div class="row">
+                           <div class="row">
+                              <div class="label2">' . $plugin->get_lang('Priority') . ':</div>
+                              <div class="formw2">' . $select_unread . '</div>
+                           </div>
+                     </td>
+                  </tr>
+                  <tr>
+                  <td width="30%">
+                  <div class="row" >
+                  <div class="label2">' . get_lang('Course') . '</div>
+                  <div class="formw2">
+                  <input id="keyword_course" name="keyword_course" type="text"></div>
+                  </div>
+                  </td>
+                  <td colspan= "3">
+                  <div class="row">
+                  <button  name="submit_advanced" type="submit">' . get_lang('AdvancedSearch') . '</button>
+                  </div>
+                  </td>
+                  </tr>
+               </tbody>
+            </table>
+            </div>
+            <input name="_qf__advanced_search" type="hidden" value="">
+            <div class="clear">&nbsp;</div>
+         </form>';
+}
+
+
+if ($isAdmin) {
+    $table->set_header(0, $plugin->get_lang('TicketNum'), true);
+    $table->set_header(1, $plugin->get_lang('Date'), true);
+    $table->set_header(2, $plugin->get_lang('DateLastEdition'), true);
+    $table->set_header(3, $plugin->get_lang('Category'), true);
+    $table->set_header(4, $plugin->get_lang('User'), true);
+    $table->set_header(5, $plugin->get_lang('Responsible'), true);
+    $table->set_header(6, $plugin->get_lang('Status'), true);
+    $table->set_header(7, $plugin->get_lang('Message'), true);
+    $table->set_header(8, get_lang('Actions'), true);
+    $table->set_header(9, get_lang('Description'), true, array("style" => "width:200px"));
+} else {
+    echo '<center><h1>' . $plugin->get_lang('MyTickets') . '</h1></center>';
+    echo '<center><p>' . $plugin->get_lang('MsgWelcome') . '</p></center>';
+    if (isset($_GET['message'])) {
+        Display::display_confirmation_message($plugin->get_lang('TckSuccessSave'));
+    }
+    $table->set_header(0, $plugin->get_lang('TicketNum'), true);
+    $table->set_header(1, $plugin->get_lang('Date'), true);
+    $table->set_header(2, $plugin->get_lang('DateLastEdition'), true);
+    $table->set_header(3, $plugin->get_lang('Category'));
+    $table->set_header(4, $plugin->get_lang('Status'), false);
+    $table->set_header(5, get_lang('Actions'), false);
+}
+
+$table->display();
 Display::display_footer();

+ 446 - 446
plugin/ticket/s/new_ticket.php → plugin/ticket/src/new_ticket.php

@@ -1,447 +1,447 @@
-<?php
-/*    INIT SECTION   */
-$language_file = array('messages','userInfo', 'admin');
-$cidReset = true;
-require_once '../config.php';
-$plugin = TicketPlugin::create();
-
-api_block_anonymous_users();
-require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
-require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php';
-
-$htmlHeadXtra[]='
-<script>
-$(document).ready(function(){
-	document.getElementById("divEmail").style.display="none";
-});
-function load_course_list (div_course,my_user_id) {
-	 $.ajax({
-		contentType: "application/x-www-form-urlencoded",
-		type: "GET",
-		url: "course_user_list.php",
-		data: "user_id="+my_user_id,
-		success: function(datos) {
-			$("div#user_request").html(datos);		
-			$("#user_id_request").val(my_user_id);
-			$("#btnsubmit").attr("disabled", false);
-		}
-	});
-}
-function changeType() {
-var selected = document.getElementById("category_id").selectedIndex;
-var id = document.getElementById("category_id").options[selected].value  ;
-	document.getElementById("project_id").value= projects[id];
-	document.getElementById("other_area").value= other_area[id];
-	document.getElementById("email").value= email[id];
-	document.getElementById("divEmail").style.display="none";
-	if(parseInt(course_required[id]) == 0){
-		document.getElementById("divCourse").style.display="none";		
-		if( id != "CUR"){
-			document.getElementById("divEmail").style.display="";
-			document.getElementById("personal_email").required="required";	
-		}			
-		document.getElementById("course_id").disabled=true;	
-		document.getElementById("course_id").value=0;			
-	}else{	
-		document.getElementById("divCourse").style.display = "";
-		document.getElementById("course_id").disabled=false;
-		document.getElementById("course_id").value=0;
-		document.getElementById("personal_email").value="";
-	}
-}
-function handleClick2(myRadio) {
-	var user_id = myRadio.value;
-	document.getElementById("user_id_request").value = user_id;
-	alert(document.getElementById("user_id_request").value);
-}
-function validate() {
-	var re  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/; 
-	fckEditor1val = FCKeditorAPI.__Instances["content"].GetHTML();
-	document.getElementById("content").value= fckEditor1val;
-	var selected = document.getElementById("category_id").selectedIndex;
-	var id = document.getElementById("category_id").options[selected].value;
-	if(document.getElementById("user_id_request").value == ""){
-		alert("'.$plugin->get_lang("ValidUser").'");
-		return false;
-	}else if( id == 0){
-		alert("'.$plugin->get_lang("ValidType").'");
-		return false;
-	}else if(document.getElementById("subject").value == ""){
-		alert("'.$plugin->get_lang("ValidSubject").'");
-		return false;
-	}else if(parseInt(course_required[id]) == 1 && document.getElementById("course_id").value == 0){
-		alert("'.$plugin->get_lang("ValidCourse").'");
-		return false;
-	}else if(id !="CUR" && parseInt(course_required[id]) != 1  && !re.test(document.getElementById("personal_email").value)){
-		alert("'.$plugin->get_lang("ValidEmail").'");
-		return false;
-	}else if(fckEditor1val ==""){
-		alert("'.$plugin->get_lang("ValidMessage").'");
-		return false;
-	}
-}
-
-var counter_image = 1;
-function remove_image_form(id_elem1) {
-	var elem1 = document.getElementById(id_elem1);
-	elem1.parentNode.removeChild(elem1);
-	counter_image = counter_image - 1;
-}
-function add_image_form() {
-	// Multiple filepaths for image form
-	var filepaths = document.getElementById("filepaths");
-	if (document.getElementById("filepath_"+counter_image)) {
-		counter_image = counter_image + 1;
-	}  else {
-		counter_image = counter_image;
-	}
-	var elem1 = document.createElement("div");
-	elem1.setAttribute("id","filepath_"+counter_image);
-	filepaths.appendChild(elem1);
-	id_elem1 = "filepath_"+counter_image;
-	id_elem1 = "\'"+id_elem1+"\'";
-	document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<a href=\"javascript:remove_image_form("+id_elem1+")\"><img src=\"'.api_get_path(WEB_CODE_PATH).'img/delete.gif\"></a>";
-	//document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<input type=\"text\" name=\"legend[]\" size=\"20\" />";
-	if (filepaths.childNodes.length == 6) {
-		var link_attach = document.getElementById("link-more-attach");
-		if (link_attach) {
-			link_attach.innerHTML="";
-		}
-	}
-}
-</script>
-
-<style>
-div.row div.label2 {
-	float:left;
-	width:10%;
-}
-div.row div.formw2 {
-    width:90%;
-	float:left
-}
-div.divTicket {
-    width: 70%;
-	float: center;
-	margin-left: 15%;
-	
-}
-</style>';
-$types = TicketManager::get_all_tickets_categories();
-$htmlHeadXtra[] = '<script language="javascript">
-		var projects = '.js_array($types,'projects','project_id'). '
-		var course_required = '.js_array($types,'course_required','course_required').'
-		var other_area = '.js_array($types,'other_area','other_area').'
-		var email = '.js_array($types,'email','email').'
-		 </script>';
-$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
-$htmlHeadXtra[] = '<link  href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
-
-function js_str($s) {
-	return '"'.addcslashes($s, "\0..\37\"\\").'"';
-}
-
-function js_array($array,$name,$key) {
-	$temp=array();
-	$return = "new Array(); ";
-	foreach ($array as $value){
-		$return .= $name."['".$value['category_id']."'] ='".$value[$key]."'; ";
-	}
-	return $return;
-}
-
-function show_form_send_ticket(){
-	global $types, $plugin;
-	echo '<div class="divTicket">';
-	echo '<form enctype="multipart/form-data" action="'.api_get_self().'" method="post" name="send_ticket" id="send_ticket"
- 	onsubmit="return validate()" style="width:100%">';
-	echo '<input name="user_id_request" id="user_id_request" type="hidden" value="">';
-	
-	// Category
-	$select_types = '<div class="row">
-	<div class="label2">'.get_lang('Category').': </div>
-       <div class="formw2">';
-	$select_types .= '<select style="width: 95%; "   name = "category_id" id="category_id" onChange="changeType();">';
-	$select_types .= '<option value="0">---'.get_lang('Select').'---</option>';
-	foreach ($types as $type) {
-		$select_types.= "<option value = '".$type['category_id']."'>".$type['name'].":  <br/>".$type['description']."</option>";
-	}
-	$select_types .= "</select>";
-	$select_types .= '</div></div>';
-	echo $select_types;
-	
-	// Course
-	$courses_list = CourseManager::get_courses_list_by_user_id($user_id,false,true);
-	 $select_course = '<div id="user_request" >
-	 </div>';
-	echo $select_course;
-	
-	// Status
-	$status = array();
-	$status[NEWTCK] = $plugin->get_lang('StsNew');
-	$status[PENDING] = $plugin->get_lang('StsPending');
-	$status[UNCONFIRMED] = $plugin->get_lang('StsUnconfirmed');
-	$status[CLOSE] = $plugin->get_lang('StsClose');
-	$status[REENVIADO] = $plugin->get_lang('StsReenviado');
-	$select_status = '
-	<div class="row"  >
-		<div class="label2"  >'.get_lang('Status').': </div>
-		<div class="formw2">
-			<select style="width: 95%; " name = "status_id" id="status_id">';
-	//$status = TicketManager::get_all_tickets_status();
-	foreach ($status as $sts_key => $sts_name) {
-		if($sts_key=='PND'){
-			$select_status .=  "<option value = '".$sts_key."' selected >".$sts_name."</option>";
-		}else{
-			$select_status.= "<option value = '".$sts_key."'>".$sts_name."</option>";
-		}
-	}
-	$select_status .= '
-			</select>
-		</div>
-	</div>';
-	echo $select_status;
-	
-	// Source
-	$source = array();
-	$source[SRC_EMAIL] = $plugin->get_lang('SrcEmail');
-	$source[SRC_PHONE] = $plugin->get_lang('SrcPhone');
-	$source[SRC_PRESC] = $plugin->get_lang('SrcPresential');
-	$select_source = '
-	<div class="row">
-	<div class="label2">'.$plugin->get_lang('Source').':</div>
-       <div class="formw2">
-			<select style="width: 95%; " name="source_id" id="source_id" >';
-	foreach ($source as $src_key => $src_name) {
-		$select_source.= "<option value = '".$src_key."'>".$src_name."</option>";
-	}
-	$select_source .='
-			</select>
-		</div>
-	</div>';
-	echo $select_source;
-	
-	// Subject
-	echo '<div class="row" ><div class ="label2">'.get_lang('Subject').':</div>
-       		<div class="formw2"><input type = "text" id ="subject" name="subject" value="" required ="" style="width:94%"/></div>
-		  </div>';
-	
-	// Email
-	echo '<div class="row" id="divEmail" ><div class ="label2">'.$plugin->get_lang('PersonalEmail').':</div>
-       		<div class="formw2"><input type = "email" id ="personal_email" name="personal_email" value=""  style="width:94%"/></div>
-		  </div>';
-	echo '<input name="project_id" id="project_id" type="hidden" value="">';
-	echo '<input name="other_area" id="other_area" type="hidden" value="">';
-	echo '<input name="email" id="email" type="hidden" value="">';
-	
-	// Message
-	echo '<div class="row">
-		<div class="label2">'.get_lang('Message').'</div>
-		<div class="formw2">
-			<input type="hidden" id="content" name="content" value="" style="display:none">
-		<input type="hidden" id="content___Config" value="ToolbarSet=Messages&amp;Width=95%25&amp;Height=250&amp;ToolbarSets={ %22Messages%22: [  [ %22Bold%22,%22Italic%22,%22-%22,%22InsertOrderedList%22,%22InsertUnorderedList%22,%22Link%22,%22RemoveLink%22 ] ], %22MessagesMaximized%22: [  ] }&amp;LoadPlugin=[%22customizations%22]&amp;EditorAreaStyles=body { background: #ffffff; }&amp;ToolbarStartExpanded=false&amp;CustomConfigurationsPath=/main/inc/lib/fckeditor/myconfig.js&amp;EditorAreaCSS=/main/css/chamilo/default.css&amp;ToolbarComboPreviewCSS=/main/css/chamilo/default.css&amp;DefaultLanguage=es&amp;ContentLangDirection=ltr&amp;AdvancedFileManager=true&amp;BaseHref='.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/&amp;&amp;UserIsCourseAdmin=true&amp;UserIsPlatformAdmin=true" style="display:none">
-		<iframe id="content___Frame" src="/main/inc/lib/fckeditor/editor/fckeditor.html?InstanceName=content&amp;Toolbar=Messages" width="95%" height="250" frameborder="0" scrolling="no" style="margin: 0px; padding: 0px; border: 0px; background-color: transparent; background-image: none; width: 95%; height: 250px;">
-		</iframe>
-		</div>
-	</div>';
-	
-	// Phone
-	echo '<div class="row" ><div class ="label2">'.get_lang('Phone').' ('.$plugin->get_lang('Optional').'):</div>
-       		<div class="formw2"><input type = "text" id ="phone" name="phone" value="" onkeyup="valid(this,'."'allowspace'".')" onblur="valid(this,'."'allowspace'".')" style="width:94%"/></div>
-		  </div>';
-	
-	// Priority
-	$select_priority = '<div class="row"  >
-	<div class="label2"  >'.$plugin->get_lang('Priority').': </div>
-	<div class="formw2">';
-	
-	$priority = array();
-	$priority[NORMAL] = $plugin->get_lang('PriorityNormal');
-	$priority[HIGH] = $plugin->get_lang('PriorityHigh');
-	$priority[LOW] = $plugin->get_lang('PriorityLow');
-	
-	$select_priority .= '<select style="width: 85px; " name = "priority_id" id="priority_id">';
-	foreach ($priority as $prty_key => $prty_name) {
-		if($sts_key== NORMAL){
-			$select_priority .=  "<option value = '".$prty_key."' selected >".$prty_name."</option>";
-		}else{
-			$select_priority.= "<option value = '".$prty_key."'>".$prty_name."</option>";
-		}
-	}
-	$select_priority .= "</select>";
-	$select_priority .= '</div></div>';
-	echo $select_priority;
-	
-	// Input file attach
-	echo '<div class="row">
-		<div class="label2">'.get_lang('FilesAttachment').'</div>
-		<div class="formw2">
-				<span id="filepaths">
-				<div id="filepath_1">
-					<input type="file" name="attach_1" id="attach_1"  size="20" style="width:94%;"/>
-				</div></span>
-		</div>
-	</div>';
-	echo '<div class="row">
-		<div class="formw2">
-			<span id="link-more-attach">
-				<a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a></span>&nbsp;
-					('.sprintf(get_lang('MaximunFileSizeX'),format_file_size(api_get_setting('message_max_upload_filesize'))).')
-			</div>
-		</div>';
-	echo '<div class="row">
-		<div class="label2">
-		</div>
-		<div class="formw2"><button class="save" name="compose"  type="submit" id="btnsubmit">'.get_lang('SendMessage').'</button>
-		</div>
-	</div>';
-	echo '</form></div>';
-}
-function save_ticket(){
-	global $plugin;
-	$category_id	= $_POST['category_id'];
-	$content		= $_POST['content'];
-	if ($_POST['phone']!="")	$content.=	'<p style="color:red">&nbsp;'.get_lang('Phone').': '.$_POST['phone'].'</p>';
-	$course_id		= $_POST['course_id'];
-	$project_id		= $_POST['project_id'];
-	$subject		= $_POST['subject'];
-	$other_area		= (int)$_POST['other_area'];
-	$email			= $_POST['email'];
-	$personal_email	= $_POST['personal_email'];
-	$source 		= $_POST['source_id'];
-	$user_id		= $_POST['user_id_request'];
-	$priority       = $_POST['priority_id'];
-	$status			= $_POST['status_id'];
-	$file_attachments =	$_FILES;
-	if(TicketManager::insert_new_ticket($category_id, $course_id, $project_id, $other_area, $email, $subject, $content,$personal_email, $file_attachments,$source,$priority,$status,$user_id,api_get_user_id())){
-		header('location:'.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/myticket.php?message=success');
-	}else{
-		Display::display_header(get_lang('ComposeMessage'));
-		Display::display_error_message($plugin->get_lang('ErrorRegisterMessage'));
-	}
-}
-/**
- * Get the total number of users on the platform
- * @see SortableTable#get_total_number_of_items()
- */
-function get_number_of_users() {
-	$user_table = Database :: get_main_table(TABLE_MAIN_USER);
-	$sql = "SELECT COUNT(u.user_id) AS total_number_of_items FROM $user_table u";
-    if ((api_is_platform_admin() || api_is_session_admin()) && api_get_multiple_access_url()) {
-    	$access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
-    	$sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)";
-    }
-	if ( isset ($_GET['keyword'])) {
-		$keyword = Database::escape_string(trim($_GET['keyword']));
-		$sql .= " WHERE (u.firstname LIKE '%".$keyword."%' OR u.lastname LIKE '%".$keyword."%'  OR concat(u.firstname,' ',u.lastname) LIKE '%".$keyword."%'  OR concat(u.lastname,' ',u.firstname) LIKE '%".$keyword."%' OR u.username LIKE '%".$keyword."%' OR u.email LIKE '%".$keyword."%'  OR u.official_code LIKE '%".$keyword."%') ";
-	}
-	$res = Database::query($sql);
-	$obj = Database::fetch_object($res);
-	return $obj->total_number_of_items;
-}
-/**
- * Get the users to display on the current page (fill the sortable-table)
- * @param   int     offset of first user to recover
- * @param   int     Number of users to get
- * @param   int     Column to sort on
- * @param   string  Order (ASC,DESC)
- * @see SortableTable#get_table_data($from)
- */
-function get_user_data($from, $number_of_items, $column, $direction)
-{
-	$user_table = Database :: get_main_table(TABLE_MAIN_USER);
-	$admin_table = Database :: get_main_table(TABLE_MAIN_ADMIN);
-	$sql = "SELECT
-                 u.user_id				AS col0,
-                 u.official_code		AS col2,
-				 ".(api_is_western_name_order()
-                 ? "u.firstname 			AS col3,
-                 u.lastname 			AS col4,"
-                 : "u.lastname 			AS col3,
-                 u.firstname 			AS col4,")."
-                 u.username				AS col5,
-                 u.email				AS col6,
-                 u.status				AS col7,
-                 u.active				AS col8,
-                 u.user_id				AS col9 ".
-                 ", u.expiration_date      AS exp ".
-            " FROM $user_table u ";
-
-   	if (isset ($_GET['keyword']) ) {
-		$keyword = Database::escape_string(trim($_GET['keyword']));
-		$sql .= " WHERE (u.firstname LIKE '%".$keyword."%' OR u.lastname LIKE '%".$keyword."%' OR concat(u.firstname,' ',u.lastname) LIKE '%".$keyword."%' OR concat(u.lastname,' ',u.firstname) LIKE '%".$keyword."%' OR u.username LIKE '%".$keyword."%'  OR u.official_code LIKE '%".$keyword."%' OR u.email LIKE '%".$keyword."%' )";
-	} 
-    if (!in_array($direction, array('ASC','DESC'))) {
-    	$direction = 'ASC';
-    }
-    $column = intval($column);
-    $from 	= intval($from);
-    $number_of_items = intval($number_of_items);
-
-	$sql .= " ORDER BY col$column $direction ";
-	$sql .= " LIMIT $from,$number_of_items";
-
-	$res = Database::query($sql);
-
-	$users = array ();
-    $t = time();
-	while ($user = Database::fetch_row($res)) {
-		$image_path 	= UserManager::get_user_picture_path_by_id($user[0], 'web', false, true);
-		$user_profile 	= UserManager::get_picture_user($user[0], $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
-		if (!api_is_anonymous()) {
-			$photo = '<center><a href="'.api_get_path(WEB_PATH).'whoisonline.php?origin=user_list&id='.$user[0].'" title="'.get_lang('Info').'"><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2],$user[3]).'"  title="'.api_get_person_name($user[2], $user[3]).'" /></a></center>';
-		} else {
-			$photo = '<center><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2], $user[3]).'" title="'.api_get_person_name($user[2], $user[3]).'" /></center>';
-		}
-		$user_id= $user[0];
-        $button = '<a href="'.api_get_self().'?user_request='.$user[0].'">'.Display::return_icon('view_more_stats.gif', get_lang('Info')).'</a>';
-        $button= '<a  href="javascript:void(0)" onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')">
-					<img onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')"  src="../../../main/img/view_more_stats.gif" title="'.get_lang('Courses').'" alt="'.get_lang('Courses').'"/>
-					</a>&nbsp;&nbsp;';
-        $users[] = array($photo,$user[1],$user[2],$user[3],$user[4],$user[5],$button);        
-	}
-	return $users;
-}
-
-
-
-	if(!isset($_POST['compose'])){
-		Display::display_header(get_lang('ComposeMessage'));
-		echo '
-<div class="actions">
-  <span style="float: right;">&nbsp;</span>
-  <form id="search_simple" name="search_simple" method="get" action="'.api_get_self().'" class="form-search">
-    <fieldset>
-    <span><label for="keyword">'.get_lang('langSearchAUser').': &nbsp;</label><input type="text" name="keyword" size="25"></span>
-    <span><button type="submit" name="submit" class="btn btn">'.get_lang('Search').'</button></span>
-    <div class="clear"></div>
-    </fieldset>
-  </form>
-</div>';
-		if (isset($_GET['keyword'])){
-			$table = new SortableTable('users', 'get_number_of_users', 'get_user_data', (api_is_western_name_order() xor api_sort_by_first_name()) ? 3 : 2);
-			$table->set_header(0, '', false, 'width="18px"');
-			$table->set_header(0, get_lang('Photo'), false);
-			$table->set_header(1, get_lang('OfficialCode'));
-			if (api_is_western_name_order()) {
-				$table->set_header(2, get_lang('FirstName'));
-				$table->set_header(3, get_lang('LastName'));
-			} else {
-				$table->set_header(2, get_lang('LastName'));
-				$table->set_header(3, get_lang('FirstName'));
-			}
-			$table->set_header(4, get_lang('LoginName'));
-			$table->set_header(5, get_lang('Email'));
-			$table->set_header(6, get_lang('Action'));
-			$table->display();
-		}
-		//if(isset($_GET['user_request']))
-			show_form_send_ticket();	
-	}else{
-		save_ticket();
-	}
-
-
-
-Display::display_footer();
+<?php
+/*    INIT SECTION   */
+$language_file = array('messages','userInfo', 'admin');
+$cidReset = true;
+require_once '../config.php';
+$plugin = TicketPlugin::create();
+
+api_block_anonymous_users();
+require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
+require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php';
+
+$htmlHeadXtra[]='
+<script>
+$(document).ready(function(){
+	document.getElementById("divEmail").style.display="none";
+});
+function load_course_list (div_course,my_user_id) {
+	 $.ajax({
+		contentType: "application/x-www-form-urlencoded",
+		type: "GET",
+		url: "course_user_list.php",
+		data: "user_id="+my_user_id,
+		success: function(datos) {
+			$("div#user_request").html(datos);		
+			$("#user_id_request").val(my_user_id);
+			$("#btnsubmit").attr("disabled", false);
+		}
+	});
+}
+function changeType() {
+var selected = document.getElementById("category_id").selectedIndex;
+var id = document.getElementById("category_id").options[selected].value  ;
+	document.getElementById("project_id").value= projects[id];
+	document.getElementById("other_area").value= other_area[id];
+	document.getElementById("email").value= email[id];
+	document.getElementById("divEmail").style.display="none";
+	if(parseInt(course_required[id]) == 0){
+		document.getElementById("divCourse").style.display="none";		
+		if( id != "CUR"){
+			document.getElementById("divEmail").style.display="";
+			document.getElementById("personal_email").required="required";	
+		}			
+		document.getElementById("course_id").disabled=true;	
+		document.getElementById("course_id").value=0;			
+	}else{	
+		document.getElementById("divCourse").style.display = "";
+		document.getElementById("course_id").disabled=false;
+		document.getElementById("course_id").value=0;
+		document.getElementById("personal_email").value="";
+	}
+}
+function handleClick2(myRadio) {
+	var user_id = myRadio.value;
+	document.getElementById("user_id_request").value = user_id;
+	alert(document.getElementById("user_id_request").value);
+}
+function validate() {
+	var re  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/; 
+	fckEditor1val = FCKeditorAPI.__Instances["content"].GetHTML();
+	document.getElementById("content").value= fckEditor1val;
+	var selected = document.getElementById("category_id").selectedIndex;
+	var id = document.getElementById("category_id").options[selected].value;
+	if(document.getElementById("user_id_request").value == ""){
+		alert("'.$plugin->get_lang("ValidUser").'");
+		return false;
+	}else if( id == 0){
+		alert("'.$plugin->get_lang("ValidType").'");
+		return false;
+	}else if(document.getElementById("subject").value == ""){
+		alert("'.$plugin->get_lang("ValidSubject").'");
+		return false;
+	}else if(parseInt(course_required[id]) == 1 && document.getElementById("course_id").value == 0){
+		alert("'.$plugin->get_lang("ValidCourse").'");
+		return false;
+	}else if(id !="CUR" && parseInt(course_required[id]) != 1  && !re.test(document.getElementById("personal_email").value)){
+		alert("'.$plugin->get_lang("ValidEmail").'");
+		return false;
+	}else if(fckEditor1val ==""){
+		alert("'.$plugin->get_lang("ValidMessage").'");
+		return false;
+	}
+}
+
+var counter_image = 1;
+function remove_image_form(id_elem1) {
+	var elem1 = document.getElementById(id_elem1);
+	elem1.parentNode.removeChild(elem1);
+	counter_image = counter_image - 1;
+}
+function add_image_form() {
+	// Multiple filepaths for image form
+	var filepaths = document.getElementById("filepaths");
+	if (document.getElementById("filepath_"+counter_image)) {
+		counter_image = counter_image + 1;
+	}  else {
+		counter_image = counter_image;
+	}
+	var elem1 = document.createElement("div");
+	elem1.setAttribute("id","filepath_"+counter_image);
+	filepaths.appendChild(elem1);
+	id_elem1 = "filepath_"+counter_image;
+	id_elem1 = "\'"+id_elem1+"\'";
+	document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<a href=\"javascript:remove_image_form("+id_elem1+")\"><img src=\"'.api_get_path(WEB_CODE_PATH).'img/delete.gif\"></a>";
+	//document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<input type=\"text\" name=\"legend[]\" size=\"20\" />";
+	if (filepaths.childNodes.length == 6) {
+		var link_attach = document.getElementById("link-more-attach");
+		if (link_attach) {
+			link_attach.innerHTML="";
+		}
+	}
+}
+</script>
+
+<style>
+div.row div.label2 {
+	float:left;
+	width:10%;
+}
+div.row div.formw2 {
+    width:90%;
+	float:left
+}
+div.divTicket {
+    width: 70%;
+	float: center;
+	margin-left: 15%;
+	
+}
+</style>';
+$types = TicketManager::get_all_tickets_categories();
+$htmlHeadXtra[] = '<script language="javascript">
+		var projects = '.js_array($types,'projects','project_id'). '
+		var course_required = '.js_array($types,'course_required','course_required').'
+		var other_area = '.js_array($types,'other_area','other_area').'
+		var email = '.js_array($types,'email','email').'
+		 </script>';
+$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
+$htmlHeadXtra[] = '<link  href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
+
+function js_str($s) {
+	return '"'.addcslashes($s, "\0..\37\"\\").'"';
+}
+
+function js_array($array,$name,$key) {
+	$temp=array();
+	$return = "new Array(); ";
+	foreach ($array as $value){
+		$return .= $name."['".$value['category_id']."'] ='".$value[$key]."'; ";
+	}
+	return $return;
+}
+
+function show_form_send_ticket(){
+	global $types, $plugin;
+	echo '<div class="divTicket">';
+	echo '<form enctype="multipart/form-data" action="'.api_get_self().'" method="post" name="send_ticket" id="send_ticket"
+ 	onsubmit="return validate()" style="width:100%">';
+	echo '<input name="user_id_request" id="user_id_request" type="hidden" value="">';
+	
+	// Category
+	$select_types = '<div class="row">
+	<div class="label2">'.get_lang('Category').': </div>
+       <div class="formw2">';
+	$select_types .= '<select style="width: 95%; "   name = "category_id" id="category_id" onChange="changeType();">';
+	$select_types .= '<option value="0">---'.get_lang('Select').'---</option>';
+	foreach ($types as $type) {
+		$select_types.= "<option value = '".$type['category_id']."'>".$type['name'].":  <br/>".$type['description']."</option>";
+	}
+	$select_types .= "</select>";
+	$select_types .= '</div></div>';
+	echo $select_types;
+	
+	// Course
+	$courses_list = CourseManager::get_courses_list_by_user_id($user_id,false,true);
+	 $select_course = '<div id="user_request" >
+	 </div>';
+	echo $select_course;
+	
+	// Status
+	$status = array();
+	$status[NEWTCK] = $plugin->get_lang('StsNew');
+	$status[PENDING] = $plugin->get_lang('StsPending');
+	$status[UNCONFIRMED] = $plugin->get_lang('StsUnconfirmed');
+	$status[CLOSE] = $plugin->get_lang('StsClose');
+	$status[REENVIADO] = $plugin->get_lang('StsReenviado');
+	$select_status = '
+	<div class="row"  >
+		<div class="label2"  >'.get_lang('Status').': </div>
+		<div class="formw2">
+			<select style="width: 95%; " name = "status_id" id="status_id">';
+	//$status = TicketManager::get_all_tickets_status();
+	foreach ($status as $sts_key => $sts_name) {
+		if($sts_key=='PND'){
+			$select_status .=  "<option value = '".$sts_key."' selected >".$sts_name."</option>";
+		}else{
+			$select_status.= "<option value = '".$sts_key."'>".$sts_name."</option>";
+		}
+	}
+	$select_status .= '
+			</select>
+		</div>
+	</div>';
+	echo $select_status;
+	
+	// Source
+	$source = array();
+	$source[SRC_EMAIL] = $plugin->get_lang('SrcEmail');
+	$source[SRC_PHONE] = $plugin->get_lang('SrcPhone');
+	$source[SRC_PRESC] = $plugin->get_lang('SrcPresential');
+	$select_source = '
+	<div class="row">
+	<div class="label2">'.$plugin->get_lang('Source').':</div>
+       <div class="formw2">
+			<select style="width: 95%; " name="source_id" id="source_id" >';
+	foreach ($source as $src_key => $src_name) {
+		$select_source.= "<option value = '".$src_key."'>".$src_name."</option>";
+	}
+	$select_source .='
+			</select>
+		</div>
+	</div>';
+	echo $select_source;
+	
+	// Subject
+	echo '<div class="row" ><div class ="label2">'.get_lang('Subject').':</div>
+       		<div class="formw2"><input type = "text" id ="subject" name="subject" value="" required ="" style="width:94%"/></div>
+		  </div>';
+	
+	// Email
+	echo '<div class="row" id="divEmail" ><div class ="label2">'.$plugin->get_lang('PersonalEmail').':</div>
+       		<div class="formw2"><input type = "email" id ="personal_email" name="personal_email" value=""  style="width:94%"/></div>
+		  </div>';
+	echo '<input name="project_id" id="project_id" type="hidden" value="">';
+	echo '<input name="other_area" id="other_area" type="hidden" value="">';
+	echo '<input name="email" id="email" type="hidden" value="">';
+	
+	// Message
+	echo '<div class="row">
+		<div class="label2">'.get_lang('Message').'</div>
+		<div class="formw2">
+			<input type="hidden" id="content" name="content" value="" style="display:none">
+		<input type="hidden" id="content___Config" value="ToolbarSet=Messages&amp;Width=95%25&amp;Height=250&amp;ToolbarSets={ %22Messages%22: [  [ %22Bold%22,%22Italic%22,%22-%22,%22InsertOrderedList%22,%22InsertUnorderedList%22,%22Link%22,%22RemoveLink%22 ] ], %22MessagesMaximized%22: [  ] }&amp;LoadPlugin=[%22customizations%22]&amp;EditorAreaStyles=body { background: #ffffff; }&amp;ToolbarStartExpanded=false&amp;CustomConfigurationsPath=/main/inc/lib/fckeditor/myconfig.js&amp;EditorAreaCSS=/main/css/chamilo/default.css&amp;ToolbarComboPreviewCSS=/main/css/chamilo/default.css&amp;DefaultLanguage=es&amp;ContentLangDirection=ltr&amp;AdvancedFileManager=true&amp;BaseHref='.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/&amp;&amp;UserIsCourseAdmin=true&amp;UserIsPlatformAdmin=true" style="display:none">
+		<iframe id="content___Frame" src="/main/inc/lib/fckeditor/editor/fckeditor.html?InstanceName=content&amp;Toolbar=Messages" width="95%" height="250" frameborder="0" scrolling="no" style="margin: 0px; padding: 0px; border: 0px; background-color: transparent; background-image: none; width: 95%; height: 250px;">
+		</iframe>
+		</div>
+	</div>';
+	
+	// Phone
+	echo '<div class="row" ><div class ="label2">'.get_lang('Phone').' ('.$plugin->get_lang('Optional').'):</div>
+       		<div class="formw2"><input type = "text" id ="phone" name="phone" value="" onkeyup="valid(this,'."'allowspace'".')" onblur="valid(this,'."'allowspace'".')" style="width:94%"/></div>
+		  </div>';
+	
+	// Priority
+	$select_priority = '<div class="row"  >
+	<div class="label2"  >'.$plugin->get_lang('Priority').': </div>
+	<div class="formw2">';
+	
+	$priority = array();
+	$priority[NORMAL] = $plugin->get_lang('PriorityNormal');
+	$priority[HIGH] = $plugin->get_lang('PriorityHigh');
+	$priority[LOW] = $plugin->get_lang('PriorityLow');
+	
+	$select_priority .= '<select style="width: 85px; " name = "priority_id" id="priority_id">';
+	foreach ($priority as $prty_key => $prty_name) {
+		if($sts_key== NORMAL){
+			$select_priority .=  "<option value = '".$prty_key."' selected >".$prty_name."</option>";
+		}else{
+			$select_priority.= "<option value = '".$prty_key."'>".$prty_name."</option>";
+		}
+	}
+	$select_priority .= "</select>";
+	$select_priority .= '</div></div>';
+	echo $select_priority;
+	
+	// Input file attach
+	echo '<div class="row">
+		<div class="label2">'.get_lang('FilesAttachment').'</div>
+		<div class="formw2">
+				<span id="filepaths">
+				<div id="filepath_1">
+					<input type="file" name="attach_1" id="attach_1"  size="20" style="width:94%;"/>
+				</div></span>
+		</div>
+	</div>';
+	echo '<div class="row">
+		<div class="formw2">
+			<span id="link-more-attach">
+				<a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a></span>&nbsp;
+					('.sprintf(get_lang('MaximunFileSizeX'),format_file_size(api_get_setting('message_max_upload_filesize'))).')
+			</div>
+		</div>';
+	echo '<div class="row">
+		<div class="label2">
+		</div>
+		<div class="formw2"><button class="save" name="compose"  type="submit" id="btnsubmit">'.get_lang('SendMessage').'</button>
+		</div>
+	</div>';
+	echo '</form></div>';
+}
+function save_ticket(){
+	global $plugin;
+	$category_id	= $_POST['category_id'];
+	$content		= $_POST['content'];
+	if ($_POST['phone']!="")	$content.=	'<p style="color:red">&nbsp;'.get_lang('Phone').': '.$_POST['phone'].'</p>';
+	$course_id		= $_POST['course_id'];
+	$project_id		= $_POST['project_id'];
+	$subject		= $_POST['subject'];
+	$other_area		= (int)$_POST['other_area'];
+	$email			= $_POST['email'];
+	$personal_email	= $_POST['personal_email'];
+	$source 		= $_POST['source_id'];
+	$user_id		= $_POST['user_id_request'];
+	$priority       = $_POST['priority_id'];
+	$status			= $_POST['status_id'];
+	$file_attachments =	$_FILES;
+	if(TicketManager::insert_new_ticket($category_id, $course_id, $project_id, $other_area, $email, $subject, $content,$personal_email, $file_attachments,$source,$priority,$status,$user_id,api_get_user_id())){
+		header('location:'.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/myticket.php?message=success');
+	}else{
+		Display::display_header(get_lang('ComposeMessage'));
+		Display::display_error_message($plugin->get_lang('ErrorRegisterMessage'));
+	}
+}
+/**
+ * Get the total number of users on the platform
+ * @see SortableTable#get_total_number_of_items()
+ */
+function get_number_of_users() {
+	$user_table = Database :: get_main_table(TABLE_MAIN_USER);
+	$sql = "SELECT COUNT(u.user_id) AS total_number_of_items FROM $user_table u";
+    if ((api_is_platform_admin() || api_is_session_admin()) && api_get_multiple_access_url()) {
+    	$access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
+    	$sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)";
+    }
+	if ( isset ($_GET['keyword'])) {
+		$keyword = Database::escape_string(trim($_GET['keyword']));
+		$sql .= " WHERE (u.firstname LIKE '%".$keyword."%' OR u.lastname LIKE '%".$keyword."%'  OR concat(u.firstname,' ',u.lastname) LIKE '%".$keyword."%'  OR concat(u.lastname,' ',u.firstname) LIKE '%".$keyword."%' OR u.username LIKE '%".$keyword."%' OR u.email LIKE '%".$keyword."%'  OR u.official_code LIKE '%".$keyword."%') ";
+	}
+	$res = Database::query($sql);
+	$obj = Database::fetch_object($res);
+	return $obj->total_number_of_items;
+}
+/**
+ * Get the users to display on the current page (fill the sortable-table)
+ * @param   int     offset of first user to recover
+ * @param   int     Number of users to get
+ * @param   int     Column to sort on
+ * @param   string  Order (ASC,DESC)
+ * @see SortableTable#get_table_data($from)
+ */
+function get_user_data($from, $number_of_items, $column, $direction)
+{
+	$user_table = Database :: get_main_table(TABLE_MAIN_USER);
+	$admin_table = Database :: get_main_table(TABLE_MAIN_ADMIN);
+	$sql = "SELECT
+                 u.user_id				AS col0,
+                 u.official_code		AS col2,
+				 ".(api_is_western_name_order()
+                 ? "u.firstname 			AS col3,
+                 u.lastname 			AS col4,"
+                 : "u.lastname 			AS col3,
+                 u.firstname 			AS col4,")."
+                 u.username				AS col5,
+                 u.email				AS col6,
+                 u.status				AS col7,
+                 u.active				AS col8,
+                 u.user_id				AS col9 ".
+                 ", u.expiration_date      AS exp ".
+            " FROM $user_table u ";
+
+   	if (isset ($_GET['keyword']) ) {
+		$keyword = Database::escape_string(trim($_GET['keyword']));
+		$sql .= " WHERE (u.firstname LIKE '%".$keyword."%' OR u.lastname LIKE '%".$keyword."%' OR concat(u.firstname,' ',u.lastname) LIKE '%".$keyword."%' OR concat(u.lastname,' ',u.firstname) LIKE '%".$keyword."%' OR u.username LIKE '%".$keyword."%'  OR u.official_code LIKE '%".$keyword."%' OR u.email LIKE '%".$keyword."%' )";
+	} 
+    if (!in_array($direction, array('ASC','DESC'))) {
+    	$direction = 'ASC';
+    }
+    $column = intval($column);
+    $from 	= intval($from);
+    $number_of_items = intval($number_of_items);
+
+	$sql .= " ORDER BY col$column $direction ";
+	$sql .= " LIMIT $from,$number_of_items";
+
+	$res = Database::query($sql);
+
+	$users = array ();
+    $t = time();
+	while ($user = Database::fetch_row($res)) {
+		$image_path 	= UserManager::get_user_picture_path_by_id($user[0], 'web', false, true);
+		$user_profile 	= UserManager::get_picture_user($user[0], $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
+		if (!api_is_anonymous()) {
+			$photo = '<center><a href="'.api_get_path(WEB_PATH).'whoisonline.php?origin=user_list&id='.$user[0].'" title="'.get_lang('Info').'"><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2],$user[3]).'"  title="'.api_get_person_name($user[2], $user[3]).'" /></a></center>';
+		} else {
+			$photo = '<center><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2], $user[3]).'" title="'.api_get_person_name($user[2], $user[3]).'" /></center>';
+		}
+		$user_id= $user[0];
+        $button = '<a href="'.api_get_self().'?user_request='.$user[0].'">'.Display::return_icon('view_more_stats.gif', get_lang('Info')).'</a>';
+        $button= '<a  href="javascript:void(0)" onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')">
+					<img onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')"  src="../../../main/img/view_more_stats.gif" title="'.get_lang('Courses').'" alt="'.get_lang('Courses').'"/>
+					</a>&nbsp;&nbsp;';
+        $users[] = array($photo,$user[1],$user[2],$user[3],$user[4],$user[5],$button);        
+	}
+	return $users;
+}
+
+
+
+	if(!isset($_POST['compose'])){
+		Display::display_header(get_lang('ComposeMessage'));
+		echo '
+<div class="actions">
+  <span style="float: right;">&nbsp;</span>
+  <form id="search_simple" name="search_simple" method="get" action="'.api_get_self().'" class="form-search">
+    <fieldset>
+    <span><label for="keyword">'.get_lang('langSearchAUser').': &nbsp;</label><input type="text" name="keyword" size="25"></span>
+    <span><button type="submit" name="submit" class="btn btn">'.get_lang('Search').'</button></span>
+    <div class="clear"></div>
+    </fieldset>
+  </form>
+</div>';
+		if (isset($_GET['keyword'])){
+			$table = new SortableTable('users', 'get_number_of_users', 'get_user_data', (api_is_western_name_order() xor api_sort_by_first_name()) ? 3 : 2);
+			$table->set_header(0, '', false, 'width="18px"');
+			$table->set_header(0, get_lang('Photo'), false);
+			$table->set_header(1, get_lang('OfficialCode'));
+			if (api_is_western_name_order()) {
+				$table->set_header(2, get_lang('FirstName'));
+				$table->set_header(3, get_lang('LastName'));
+			} else {
+				$table->set_header(2, get_lang('LastName'));
+				$table->set_header(3, get_lang('FirstName'));
+			}
+			$table->set_header(4, get_lang('LoginName'));
+			$table->set_header(5, get_lang('Email'));
+			$table->set_header(6, get_lang('Action'));
+			$table->display();
+		}
+		//if(isset($_GET['user_request']))
+			show_form_send_ticket();	
+	}else{
+		save_ticket();
+	}
+
+
+
+Display::display_footer();
 ?>

+ 288 - 288
plugin/ticket/s/report.php → plugin/ticket/src/report.php

@@ -1,289 +1,289 @@
-<?php
-/* 		INIT SECTION	*/
-$language_file= array('messages','userInfo', 'admin','trad4all');
-$cidReset	= true;
-require_once '../config.php';
-$plugin = TicketPlugin::create();
-
-api_block_anonymous_users();
-require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
-require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php';
-
-if(!api_is_allowed_to_edit()){
-	api_not_allowed();
-}
-//$nameTools = api_xml_http_response_encode(get_lang('Soporte Virtual'));
-$this_section = 'Reportes';
-unset($_SESSION['this_section']);
-
-$htmlHeadXtra[]='
-<script language="javascript">
-$(document).ready(function(){
-	 $( "#keyword_start_date_start" ).datepicker({ dateFormat: '."'yy-mm-dd'".' });
-   	$( "#keyword_start_date_end" ).datepicker({ dateFormat: '."'yy-mm-dd'".' });
-});
-function validate(){
-  if( $("#keyword_start_date_start").val() != "" &&  $("#keyword_start_date_end").val() != ""){
-   datestart = $("#keyword_start_date_start").val();
-   dateend = $("#keyword_start_date_end").val();
-   dif = $.datepicker.parseDate("dd/mm/yy", datestart) -  $.datepicker.parseDate("dd/mm/yy", dateend);
-   if(dif > 0){
-	alert("La fecha final no puede ser mayor a la fecha inicial");
-   			return false;
-   			}
-  }
-}
-function load_course_list (div_course,my_user_id) {
-	 $.ajax({
-		contentType: "application/x-www-form-urlencoded",
-		type: "GET",
-		url: "course_user_list.php",
-		data: "user_id="+my_user_id,
-		success: function(datos) {
-			$("div#user_request").html(datos);
-			$("#btnsubmit").attr("disabled", false);
-		}
-	});
-}
-</script>
-
-<style>
-div.row div.label2 {
-	float:left;
-	width:10%;
-}
-div.row div.formw2 {
-    width:90%;
-	float:left
-}
-div.formulario {
-    width: 70%;
-	float: center;
-	margin-left: 15%;
-	
-}
-
-</style>';
-$types = TicketManager::get_all_tickets_categories();
-$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
-$htmlHeadXtra[] = '<link  href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
-$tools = array();
-$tools['todas']= array('id'=>'','name'=>get_lang('Todas'));
-$tools['announcement']= array('id'=>'announcement','name'=>get_lang('Announcement'));
-// $tools[]= array('id'=>'assignment','name'=>get_lang('Assignment'));
-$tools['calendar_event']= array('id'=>'calendar_event','name'=>get_lang('Calendar_event'));
-$tools['chat']= array('id'=>'chat','name'=>get_lang('Chat'));
-$tools['conference']= array('id'=>'conference','name'=>get_lang('Conference'));
-$tools['course_description']= array('id'=>'course_description','name'=>get_lang('Course_description'));
-$tools['document']= array('id'=>'document','name'=>get_lang('Document'));
-$tools['dropbox']= array('id'=>'dropbox','name'=>get_lang('Dropbox'));
-$tools['group']= array('id'=>'group','name'=>get_lang('Group'));
-$tools['learnpath']= array('id'=>'learnpath','name'=>get_lang('Learnpath'));
-$tools['link']= array('id'=>'link','name'=>get_lang('Link'));
-$tools['quiz']= array('id'=>'quiz','name'=>get_lang('Quiz'));
-$tools['student_publication']= array('id'=>'student_publication','name'=>get_lang('Student_publication'));
-$tools['user']= array('id'=>'user','name'=>get_lang('User'));
-$tools['forum']= array('id'=>'forum','name'=>get_lang('Forum'));
-
-function js_str($s) {
-	return '"'.addcslashes($s, "\0..\37\"\\").'"';
-}
-
-function show_form(){
-	global $types; 
-	global $tools;
-	echo '<div class="formulario">';
-	echo '<form enctype="multipart/form-data" action="'.api_get_self().'" method="post" name="send_ticket" id="send_ticket"
- 	onsubmit="return validate()" style="width:100%">';
-	
-	$courses_list = CourseManager::get_courses_list_by_user_id($user_id,false,true);
-	 $select_course = '<div id="user_request" >
-	 </div>';
-	echo $select_course;
-	//select status
-	$select_tool = '<div class="row"  >
-	<div class="label2"  >Herramienta:</div>
-	<div class="formw2">';
-	$select_tool .= '<select style="width: 95%; " name = "tool" id="tool" >';
-	$status = TicketManager::get_all_tickets_status();
-	foreach ($tools as $tool) {
-			$select_tool .=  "<option value = '".$tool['id']."' selected >".$tool['name']."</option>";
-	}
-	$select_tool .= "</select>";
-	$select_tool .= '</div></div>';
-	echo $select_tool;
-	echo '<div class="row">
-			<div class="label2">Desde:</div>
-			<div class="formw2"><input id="keyword_start_date_start" name="keyword_start_date_start" type="text"></div>
-		  </div>
-			<div class="row">
-			<div class="label2">Hasta</div>
-			<div class="formw2"><input id="keyword_start_date_end" name="keyword_start_date_end" type="text"></div>
-			</div>';
-	echo '</div>';
-	echo '<div class="row">
-		<div class="label2">
-		</div>
-		<div class="formw2">	
-			<button class="save" name="report" type="submit" id="btnsubmit" disabled="disabled">Generar Reporte</button>
-		</div>
-	</div>';
-	
-}
-/**
- * Get the total number of users on the platform
- * @see SortableTable#get_total_number_of_items()
- */
-function get_number_of_users() {
-	$user_table = Database :: get_main_table(TABLE_MAIN_USER);
-	$sql = "SELECT COUNT(u.user_id) AS total_number_of_items FROM $user_table u";
-    if ((api_is_platform_admin() || api_is_session_admin()) && api_get_multiple_access_url()) {
-    	$access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
-    	$sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)";
-    }
-	if ( isset ($_GET['keyword'])) {
-		$keyword = Database::escape_string(trim($_GET['keyword']));
-		$sql .= " WHERE (u.firstname LIKE '%".$keyword."%' OR u.lastname LIKE '%".$keyword."%'  OR concat(u.firstname,' ',u.lastname) LIKE '%".$keyword."%'  OR concat(u.lastname,' ',u.firstname) LIKE '%".$keyword."%' OR u.username LIKE '%".$keyword."%' OR u.email LIKE '%".$keyword."%'  OR u.official_code LIKE '%".$keyword."%') ";
-	}
-	$res = Database::query($sql);
-	$obj = Database::fetch_object($res);
-	return $obj->total_number_of_items;
-}
-/**
- * Get the users to display on the current page (fill the sortable-table)
- * @param   int     offset of first user to recover
- * @param   int     Number of users to get
- * @param   int     Column to sort on
- * @param   string  Order (ASC,DESC)
- * @see SortableTable#get_table_data($from)
- */
-function get_user_data($from, $number_of_items, $column, $direction)
-{
-	$user_table = Database :: get_main_table(TABLE_MAIN_USER);
-	$admin_table = Database :: get_main_table(TABLE_MAIN_ADMIN);
-	$sql = "SELECT
-                 u.user_id				AS col0,
-                 u.official_code		AS col2,
-				 ".(api_is_western_name_order()
-                 ? "u.firstname 			AS col3,
-                 u.lastname 			AS col4,"
-                 : "u.lastname 			AS col3,
-                 u.firstname 			AS col4,")."
-                 u.username				AS col5,
-                 u.email				AS col6,
-                 u.status				AS col7,
-                 u.active				AS col8,
-                 u.user_id				AS col9 ".
-                 ", u.expiration_date      AS exp ".
-            " FROM $user_table u ";
-
-   	if (isset ($_GET['keyword']) ) {
-		$keyword = Database::escape_string(trim($_GET['keyword']));
-		$sql .= " WHERE (u.firstname LIKE '%".$keyword."%' OR u.lastname LIKE '%".$keyword."%' OR concat(u.firstname,' ',u.lastname) LIKE '%".$keyword."%' OR concat(u.lastname,' ',u.firstname) LIKE '%".$keyword."%' OR u.username LIKE '%".$keyword."%'  OR u.official_code LIKE '%".$keyword."%' OR u.email LIKE '%".$keyword."%' )";
-	} 
-    if (!in_array($direction, array('ASC','DESC'))) {
-    	$direction = 'ASC';
-    }
-    $column = intval($column);
-    $from 	= intval($from);
-    $number_of_items = intval($number_of_items);
-
-	$sql .= " ORDER BY col$column $direction ";
-	$sql .= " LIMIT $from,$number_of_items";
-
-	$res = Database::query($sql);
-
-	$users = array ();
-    $t = time();
-	while ($user = Database::fetch_row($res)) {
-		$image_path 	= UserManager::get_user_picture_path_by_id($user[0], 'web', false, true);
-		$user_profile 	= UserManager::get_picture_user($user[0], $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
-		if (!api_is_anonymous()) {
-			$photo = '<center><a href="'.api_get_path(WEB_PATH).'whoisonline.php?origin=user_list&id='.$user[0].'" title="'.get_lang('Info').'"><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2],$user[3]).'"  title="'.api_get_person_name($user[2], $user[3]).'" /></a></center>';
-		} else {
-			$photo = '<center><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2], $user[3]).'" title="'.api_get_person_name($user[2], $user[3]).'" /></center>';
-		}
-		$user_id= $user[0];
-        $button = '<a href="'.api_get_self().'?user_request='.$user[0].'">'.Display::return_icon('view_more_stats.gif', get_lang('Info')).'</a>';
-        $button= '<a  href="javascript:void(0)" onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')">
-					<img onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')"  src="../../../main/img/view_more_stats.gif" title="'.get_lang('Courses').'" alt="'.get_lang('Courses').'"/>
-					</a>&nbsp;&nbsp;';
-        $users[] = array($photo,$user[1],$user[2],$user[3],$user[4],$user[5],$button);        
-	}
-	return $users;
-}
-
-
-
-Display::display_header('Reportes');
-		echo '<div class="actions">
-		<form action="'.api_get_self().'" method="get" name="search_simple" id="search_simple">
-			<input name="user_id_request" id="user_id_request" type="hidden" value="">
-			<span><label for="keyword">B&uacute;squeda del usuario: </label><input size="25" name="keyword" type="text" id="keyword"></span>
-			<span><button class="search" name="submit" type="submit">Buscar</button></span>
-			<div class="clear">&nbsp;</div>
-		</form></div>';
-		if (isset($_GET['keyword'])){
-			$table = new SortableTable('users', 'get_number_of_users', 'get_user_data', (api_is_western_name_order() xor api_sort_by_first_name()) ? 3 : 2);
-			$table->set_header(0, '', false, 'width="18px"');
-			$table->set_header(0, get_lang('Photo'), false);
-			$table->set_header(1, get_lang('OfficialCode'));
-			if (api_is_western_name_order()) {
-				$table->set_header(2, get_lang('FirstName'));
-				$table->set_header(3, get_lang('LastName'));
-			} else {
-				$table->set_header(2, get_lang('LastName'));
-				$table->set_header(3, get_lang('FirstName'));
-			}
-			$table->set_header(4, get_lang('LoginName'));
-			$table->set_header(5, get_lang('Email'));
-			$table->set_header(6, get_lang('Action'));
-			$table->display();
-		}
-		//if(isset($_GET['user_request']))
-				
-	if(isset($_POST['report'])){
-		$course_id = $_POST['course_id'];
-		$tool = $_POST['tool'];
-		$course_info = api_get_course_info_by_id($course_id);
-		$user_id =  $_POST['user_id_request'];
-		$sql ="SELECT  u.username , CONCAT(u.lastname, ' ', u.firstname) AS fullname, DATE_SUB(access.access_date,INTERVAL 5 HOUR) AS  access_date, c.title AS curso, access_tool AS herramienta 
-				FROM  ".Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ACCESS)." access 
-				LEFT JOIN  ".Database::get_main_table(TABLE_MAIN_USER)." u ON access.access_user_id = u.user_id 
-				LEFT JOIN  ".Database::get_main_table(TABLE_MAIN_COURSE)." c ON access.access_cours_code = c.CODE 
-				WHERE access.access_cours_code = '".$course_info['code']."' AND u.user_id = '$user_id' ";
-		if($tool!= '') $sql.="AND access.access_tool = '$tool' ";
-		$start_date = $_POST['keyword_start_date_start'];
-		$end_date 	= $_POST['keyword_start_date_end'];
-		if ($start_date != '' || $end_date != ''){
-			$sql .= " HAVING ";
-			if ($start_date != '') $sql .=  "  access_date >= '$start_date'   ";
-			if ($end_date != '') {
-				$sql = ($start_date == '')?$sql:($sql." AND ");
-				$sql .=  "  access_date <= '$end_date'   ";
-			}
-				
-		}
-		$result = Database::query($sql);
-		$table_result = new SortableTable();
-		$table_result->set_header(0, get_lang('User'), false);
-		$table_result->set_header(1, get_lang('Fullname'), false);
-		$table_result->set_header(2, get_lang('Fecha'), false);
-		$table_result->set_header(3, get_lang('curso'), false);
-		$table_result->set_header(4, get_lang('Herramienta'), false);
-		while ($row = Database::fetch_assoc($result)){
-			$row = array(0 =>$row['username'],1 =>$row['fullname'],2 => $row['access_date'],3 =>$row['curso'],4 =>get_lang($tools[$row['herramienta']]['name']));
-			$table_result->addRow($row);
-		}
-		$table_result->display();
-		
-		
-	}else{
-		show_form();
-	}
-
-
-
-Display::display_footer();
-
+<?php
+/* 		INIT SECTION	*/
+$language_file= array('messages','userInfo', 'admin','trad4all');
+$cidReset	= true;
+require_once '../config.php';
+$plugin = TicketPlugin::create();
+
+api_block_anonymous_users();
+require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
+require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php';
+
+if(!api_is_allowed_to_edit()){
+	api_not_allowed();
+}
+//$nameTools = api_xml_http_response_encode(get_lang('Soporte Virtual'));
+$this_section = 'Reportes';
+unset($_SESSION['this_section']);
+
+$htmlHeadXtra[]='
+<script language="javascript">
+$(document).ready(function(){
+	 $( "#keyword_start_date_start" ).datepicker({ dateFormat: '."'yy-mm-dd'".' });
+   	$( "#keyword_start_date_end" ).datepicker({ dateFormat: '."'yy-mm-dd'".' });
+});
+function validate(){
+  if( $("#keyword_start_date_start").val() != "" &&  $("#keyword_start_date_end").val() != ""){
+   datestart = $("#keyword_start_date_start").val();
+   dateend = $("#keyword_start_date_end").val();
+   dif = $.datepicker.parseDate("dd/mm/yy", datestart) -  $.datepicker.parseDate("dd/mm/yy", dateend);
+   if(dif > 0){
+	alert("La fecha final no puede ser mayor a la fecha inicial");
+   			return false;
+   			}
+  }
+}
+function load_course_list (div_course,my_user_id) {
+	 $.ajax({
+		contentType: "application/x-www-form-urlencoded",
+		type: "GET",
+		url: "course_user_list.php",
+		data: "user_id="+my_user_id,
+		success: function(datos) {
+			$("div#user_request").html(datos);
+			$("#btnsubmit").attr("disabled", false);
+		}
+	});
+}
+</script>
+
+<style>
+div.row div.label2 {
+	float:left;
+	width:10%;
+}
+div.row div.formw2 {
+    width:90%;
+	float:left
+}
+div.formulario {
+    width: 70%;
+	float: center;
+	margin-left: 15%;
+	
+}
+
+</style>';
+$types = TicketManager::get_all_tickets_categories();
+$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
+$htmlHeadXtra[] = '<link  href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
+$tools = array();
+$tools['todas']= array('id'=>'','name'=>get_lang('Todas'));
+$tools['announcement']= array('id'=>'announcement','name'=>get_lang('Announcement'));
+// $tools[]= array('id'=>'assignment','name'=>get_lang('Assignment'));
+$tools['calendar_event']= array('id'=>'calendar_event','name'=>get_lang('Calendar_event'));
+$tools['chat']= array('id'=>'chat','name'=>get_lang('Chat'));
+$tools['conference']= array('id'=>'conference','name'=>get_lang('Conference'));
+$tools['course_description']= array('id'=>'course_description','name'=>get_lang('Course_description'));
+$tools['document']= array('id'=>'document','name'=>get_lang('Document'));
+$tools['dropbox']= array('id'=>'dropbox','name'=>get_lang('Dropbox'));
+$tools['group']= array('id'=>'group','name'=>get_lang('Group'));
+$tools['learnpath']= array('id'=>'learnpath','name'=>get_lang('Learnpath'));
+$tools['link']= array('id'=>'link','name'=>get_lang('Link'));
+$tools['quiz']= array('id'=>'quiz','name'=>get_lang('Quiz'));
+$tools['student_publication']= array('id'=>'student_publication','name'=>get_lang('Student_publication'));
+$tools['user']= array('id'=>'user','name'=>get_lang('User'));
+$tools['forum']= array('id'=>'forum','name'=>get_lang('Forum'));
+
+function js_str($s) {
+	return '"'.addcslashes($s, "\0..\37\"\\").'"';
+}
+
+function show_form(){
+	global $types; 
+	global $tools;
+	echo '<div class="formulario">';
+	echo '<form enctype="multipart/form-data" action="'.api_get_self().'" method="post" name="send_ticket" id="send_ticket"
+ 	onsubmit="return validate()" style="width:100%">';
+	
+	$courses_list = CourseManager::get_courses_list_by_user_id($user_id,false,true);
+	 $select_course = '<div id="user_request" >
+	 </div>';
+	echo $select_course;
+	//select status
+	$select_tool = '<div class="row"  >
+	<div class="label2"  >Herramienta:</div>
+	<div class="formw2">';
+	$select_tool .= '<select style="width: 95%; " name = "tool" id="tool" >';
+	$status = TicketManager::get_all_tickets_status();
+	foreach ($tools as $tool) {
+			$select_tool .=  "<option value = '".$tool['id']."' selected >".$tool['name']."</option>";
+	}
+	$select_tool .= "</select>";
+	$select_tool .= '</div></div>';
+	echo $select_tool;
+	echo '<div class="row">
+			<div class="label2">Desde:</div>
+			<div class="formw2"><input id="keyword_start_date_start" name="keyword_start_date_start" type="text"></div>
+		  </div>
+			<div class="row">
+			<div class="label2">Hasta</div>
+			<div class="formw2"><input id="keyword_start_date_end" name="keyword_start_date_end" type="text"></div>
+			</div>';
+	echo '</div>';
+	echo '<div class="row">
+		<div class="label2">
+		</div>
+		<div class="formw2">	
+			<button class="save" name="report" type="submit" id="btnsubmit" disabled="disabled">Generar Reporte</button>
+		</div>
+	</div>';
+	
+}
+/**
+ * Get the total number of users on the platform
+ * @see SortableTable#get_total_number_of_items()
+ */
+function get_number_of_users() {
+	$user_table = Database :: get_main_table(TABLE_MAIN_USER);
+	$sql = "SELECT COUNT(u.user_id) AS total_number_of_items FROM $user_table u";
+    if ((api_is_platform_admin() || api_is_session_admin()) && api_get_multiple_access_url()) {
+    	$access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
+    	$sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)";
+    }
+	if ( isset ($_GET['keyword'])) {
+		$keyword = Database::escape_string(trim($_GET['keyword']));
+		$sql .= " WHERE (u.firstname LIKE '%".$keyword."%' OR u.lastname LIKE '%".$keyword."%'  OR concat(u.firstname,' ',u.lastname) LIKE '%".$keyword."%'  OR concat(u.lastname,' ',u.firstname) LIKE '%".$keyword."%' OR u.username LIKE '%".$keyword."%' OR u.email LIKE '%".$keyword."%'  OR u.official_code LIKE '%".$keyword."%') ";
+	}
+	$res = Database::query($sql);
+	$obj = Database::fetch_object($res);
+	return $obj->total_number_of_items;
+}
+/**
+ * Get the users to display on the current page (fill the sortable-table)
+ * @param   int     offset of first user to recover
+ * @param   int     Number of users to get
+ * @param   int     Column to sort on
+ * @param   string  Order (ASC,DESC)
+ * @see SortableTable#get_table_data($from)
+ */
+function get_user_data($from, $number_of_items, $column, $direction)
+{
+	$user_table = Database :: get_main_table(TABLE_MAIN_USER);
+	$admin_table = Database :: get_main_table(TABLE_MAIN_ADMIN);
+	$sql = "SELECT
+                 u.user_id				AS col0,
+                 u.official_code		AS col2,
+				 ".(api_is_western_name_order()
+                 ? "u.firstname 			AS col3,
+                 u.lastname 			AS col4,"
+                 : "u.lastname 			AS col3,
+                 u.firstname 			AS col4,")."
+                 u.username				AS col5,
+                 u.email				AS col6,
+                 u.status				AS col7,
+                 u.active				AS col8,
+                 u.user_id				AS col9 ".
+                 ", u.expiration_date      AS exp ".
+            " FROM $user_table u ";
+
+   	if (isset ($_GET['keyword']) ) {
+		$keyword = Database::escape_string(trim($_GET['keyword']));
+		$sql .= " WHERE (u.firstname LIKE '%".$keyword."%' OR u.lastname LIKE '%".$keyword."%' OR concat(u.firstname,' ',u.lastname) LIKE '%".$keyword."%' OR concat(u.lastname,' ',u.firstname) LIKE '%".$keyword."%' OR u.username LIKE '%".$keyword."%'  OR u.official_code LIKE '%".$keyword."%' OR u.email LIKE '%".$keyword."%' )";
+	} 
+    if (!in_array($direction, array('ASC','DESC'))) {
+    	$direction = 'ASC';
+    }
+    $column = intval($column);
+    $from 	= intval($from);
+    $number_of_items = intval($number_of_items);
+
+	$sql .= " ORDER BY col$column $direction ";
+	$sql .= " LIMIT $from,$number_of_items";
+
+	$res = Database::query($sql);
+
+	$users = array ();
+    $t = time();
+	while ($user = Database::fetch_row($res)) {
+		$image_path 	= UserManager::get_user_picture_path_by_id($user[0], 'web', false, true);
+		$user_profile 	= UserManager::get_picture_user($user[0], $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
+		if (!api_is_anonymous()) {
+			$photo = '<center><a href="'.api_get_path(WEB_PATH).'whoisonline.php?origin=user_list&id='.$user[0].'" title="'.get_lang('Info').'"><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2],$user[3]).'"  title="'.api_get_person_name($user[2], $user[3]).'" /></a></center>';
+		} else {
+			$photo = '<center><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2], $user[3]).'" title="'.api_get_person_name($user[2], $user[3]).'" /></center>';
+		}
+		$user_id= $user[0];
+        $button = '<a href="'.api_get_self().'?user_request='.$user[0].'">'.Display::return_icon('view_more_stats.gif', get_lang('Info')).'</a>';
+        $button= '<a  href="javascript:void(0)" onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')">
+					<img onclick="load_course_list(\'div_'.$user_id.'\','.$user_id.')"  src="../../../main/img/view_more_stats.gif" title="'.get_lang('Courses').'" alt="'.get_lang('Courses').'"/>
+					</a>&nbsp;&nbsp;';
+        $users[] = array($photo,$user[1],$user[2],$user[3],$user[4],$user[5],$button);        
+	}
+	return $users;
+}
+
+
+
+Display::display_header('Reportes');
+		echo '<div class="actions">
+		<form action="'.api_get_self().'" method="get" name="search_simple" id="search_simple">
+			<input name="user_id_request" id="user_id_request" type="hidden" value="">
+			<span><label for="keyword">B&uacute;squeda del usuario: </label><input size="25" name="keyword" type="text" id="keyword"></span>
+			<span><button class="search" name="submit" type="submit">Buscar</button></span>
+			<div class="clear">&nbsp;</div>
+		</form></div>';
+		if (isset($_GET['keyword'])){
+			$table = new SortableTable('users', 'get_number_of_users', 'get_user_data', (api_is_western_name_order() xor api_sort_by_first_name()) ? 3 : 2);
+			$table->set_header(0, '', false, 'width="18px"');
+			$table->set_header(0, get_lang('Photo'), false);
+			$table->set_header(1, get_lang('OfficialCode'));
+			if (api_is_western_name_order()) {
+				$table->set_header(2, get_lang('FirstName'));
+				$table->set_header(3, get_lang('LastName'));
+			} else {
+				$table->set_header(2, get_lang('LastName'));
+				$table->set_header(3, get_lang('FirstName'));
+			}
+			$table->set_header(4, get_lang('LoginName'));
+			$table->set_header(5, get_lang('Email'));
+			$table->set_header(6, get_lang('Action'));
+			$table->display();
+		}
+		//if(isset($_GET['user_request']))
+				
+	if(isset($_POST['report'])){
+		$course_id = $_POST['course_id'];
+		$tool = $_POST['tool'];
+		$course_info = api_get_course_info_by_id($course_id);
+		$user_id =  $_POST['user_id_request'];
+		$sql ="SELECT  u.username , CONCAT(u.lastname, ' ', u.firstname) AS fullname, DATE_SUB(access.access_date,INTERVAL 5 HOUR) AS  access_date, c.title AS curso, access_tool AS herramienta 
+				FROM  ".Database::get_statistic_table(TABLE_STATISTIC_TRACK_E_ACCESS)." access 
+				LEFT JOIN  ".Database::get_main_table(TABLE_MAIN_USER)." u ON access.access_user_id = u.user_id 
+				LEFT JOIN  ".Database::get_main_table(TABLE_MAIN_COURSE)." c ON access.access_cours_code = c.CODE 
+				WHERE access.access_cours_code = '".$course_info['code']."' AND u.user_id = '$user_id' ";
+		if($tool!= '') $sql.="AND access.access_tool = '$tool' ";
+		$start_date = $_POST['keyword_start_date_start'];
+		$end_date 	= $_POST['keyword_start_date_end'];
+		if ($start_date != '' || $end_date != ''){
+			$sql .= " HAVING ";
+			if ($start_date != '') $sql .=  "  access_date >= '$start_date'   ";
+			if ($end_date != '') {
+				$sql = ($start_date == '')?$sql:($sql." AND ");
+				$sql .=  "  access_date <= '$end_date'   ";
+			}
+				
+		}
+		$result = Database::query($sql);
+		$table_result = new SortableTable();
+		$table_result->set_header(0, get_lang('User'), false);
+		$table_result->set_header(1, get_lang('Fullname'), false);
+		$table_result->set_header(2, get_lang('Fecha'), false);
+		$table_result->set_header(3, get_lang('curso'), false);
+		$table_result->set_header(4, get_lang('Herramienta'), false);
+		while ($row = Database::fetch_assoc($result)){
+			$row = array(0 =>$row['username'],1 =>$row['fullname'],2 => $row['access_date'],3 =>$row['curso'],4 =>get_lang($tools[$row['herramienta']]['name']));
+			$table_result->addRow($row);
+		}
+		$table_result->display();
+		
+		
+	}else{
+		show_form();
+	}
+
+
+
+Display::display_footer();
+
 ?>

+ 245 - 245
plugin/ticket/s/send_ticket.php → plugin/ticket/src/send_ticket.php

@@ -1,246 +1,246 @@
-<?php
-/*    INIT SECTION   */
-$language_file = array('messages','userInfo', 'admin');
-$cidReset = true;
-require_once '../config.php';
-$plugin = TicketPlugin::create();
-
-api_block_anonymous_users();
-require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
-require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php';
-
-$htmlHeadXtra[]='
-<script>
-$(document).ready(function(){
-	if(document.getElementById("divEmail")){
-		document.getElementById("divEmail").style.display="none";
-	}
-});
-function changeType() {
-var selected = document.getElementById("category_id").selectedIndex;
-var id = document.getElementById("category_id").options[selected].value  ;
-	document.getElementById("project_id").value= projects[id];
-	document.getElementById("other_area").value= other_area[id];
-	document.getElementById("email").value= email[id];
-	document.getElementById("divEmail").style.display="none";
-	if(parseInt(course_required[id]) == 0){
-		document.getElementById("divCourse").style.display="none";		
-		if( id != "CUR"){
-			document.getElementById("divEmail").style.display="";
-			document.getElementById("personal_email").required="required";	
-		}			
-		document.getElementById("course_id").disabled=true;	
-		document.getElementById("course_id").value=0;			
-	}else{	
-		document.getElementById("divCourse").style.display = "";
-		document.getElementById("course_id").disabled=false;
-		document.getElementById("course_id").value=0;
-		document.getElementById("personal_email").value="";
-	}
-}
-
-function validate() {
-	var re  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/; 
-	fckEditor1val = FCKeditorAPI.__Instances["content"].GetHTML();
-	document.getElementById("content").value= fckEditor1val;
-	var selected = document.getElementById("category_id").selectedIndex;
-	var id = document.getElementById("category_id").options[selected].value;
-	if( id == 0){
-		alert("'.$plugin->get_lang("ValidType").'");
-		return false;
-	}else if(document.getElementById("subject").value == ""){
-		alert("'.$plugin->get_lang("ValidSubject").'");
-		return false;
-	}else if(parseInt(course_required[id]) == 1 && document.getElementById("course_id").value == 0){
-		alert("'.$plugin->get_lang("ValidCourse").'");
-		return false;
-	}else if(id !="CUR" && parseInt(course_required[id]) != 1  && !re.test(document.getElementById("personal_email").value)){
-		alert("'.$plugin->get_lang("ValidEmail").'");
-		return false;
-	}else if(fckEditor1val ==""){
-		alert("'.$plugin->get_lang("ValidMessage").'");
-		return false;
-	}
-}
-
-var counter_image = 1;
-function remove_image_form(id_elem1) {
-	var elem1 = document.getElementById(id_elem1);
-	elem1.parentNode.removeChild(elem1);
-	counter_image = counter_image - 1;
-}
-function add_image_form() {
-	// Multiple filepaths for image form
-	var filepaths = document.getElementById("filepaths");
-	if (document.getElementById("filepath_"+counter_image)) {
-		counter_image = counter_image + 1;
-	}  else {
-		counter_image = counter_image;
-	}
-	var elem1 = document.createElement("div");
-	elem1.setAttribute("id","filepath_"+counter_image);
-	filepaths.appendChild(elem1);
-	id_elem1 = "filepath_"+counter_image;
-	id_elem1 = "\'"+id_elem1+"\'";
-	document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<a href=\"javascript:remove_image_form("+id_elem1+")\"><img src=\"'.api_get_path(WEB_CODE_PATH).'img/delete.gif\"></a>";
-	//document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<input type=\"text\" name=\"legend[]\" size=\"20\" />";
-	if (filepaths.childNodes.length == 6) {
-		var link_attach = document.getElementById("link-more-attach");
-		if (link_attach) {
-			link_attach.innerHTML="";
-		}
-	}
-}
-function show_question(questionid){
-	if(document.getElementById("C"+questionid)){
-		if(document.getElementById("A"+questionid).style.display == "none"){
-			document.getElementById("A"+questionid).style.display = ""; 
-		}
-		else if(document.getElementById("A"+questionid).style.display == ""){
-			document.getElementById("A"+questionid).style.display = "none"; 
-		}
-	}	
-}
-</script>
-
-<style>
-div.row div.label2 {
-	float:left;
-	width:10%;
-}
-div.row div.formw2 {
-    width:90%;
-	float:left
-}
-div.divTicket {
-    width: 70%;
-	float: center;
-	margin-left: 15%;
-	
-}
-</style>';
-$types = TicketManager::get_all_tickets_categories();
-$htmlHeadXtra[] = '<script language="javascript">
-		var projects = '.js_array($types,'projects','project_id'). '
-		var course_required = '.js_array($types,'course_required','course_required').'
-		var other_area = '.js_array($types,'other_area','other_area').'
-		var email = '.js_array($types,'email','email').'
-		document.getElementById("divCourse").style.display="none";	
-		 </script>';
-$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
-$htmlHeadXtra[] = '<link  href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
-
-function js_str($s) {
-	return '"'.addcslashes($s, "\0..\37\"\\").'"';
-}
-
-function js_array($array,$name,$key) {
-	$temp=array();
-	$return = "new Array(); ";
-	foreach ($array as $value){
-		$return .= $name."['".$value['category_id']."'] ='".$value[$key]."'; ";
-	}
-	return $return;
-}
-
-function show_form_send_ticket(){
-	global $types, $plugin;
-	$courses_list = CourseManager::get_courses_list_by_user_id(api_get_user_id(),false,true);
-	echo '<div class="divTicket">';
-	echo '<form enctype="multipart/form-data" action="'.api_get_self().'" method="post" name="send_ticket" id="send_ticket"
- 	onsubmit="return validate()" style="width:100%">';
-	$select_types = '<div class="row">
-	<div class="label2">'.get_lang('Category').': </div>
-       <div class="formw2">';
-	$select_types .= '<select style="width: 95%; "   name = "category_id" id="category_id" onChange="changeType();">';
-	$select_types .= '<option value="0">---'.get_lang('Select').'---</option>';
-	foreach ($types as $type) {
-		$select_types.= "<option value = '".$type['category_id']."'>".$type['name'].":  <br/>".$type['description']."</option>";
-	}
-	$select_types .= "</select>";
-	$select_types .= '</div></div>';
-	echo $select_types;
-	$select_course = '<div class="row" id="divCourse" >
-	<div class="label2"  >'.get_lang('Course').':</div>
-            <div class="formw2">';
-	$select_course .= '<select  class="chzn-select" name = "course_id" id="course_id"  style="width: 40%; display:none;">';
-	$select_course .= '<option value="0">---'.get_lang('Select').'---</option>';
-	foreach ($courses_list as $course) {
-		$select_course.= "<option value = '".$course['course_id']."'>".$course['title']."</option>";
-	}
-	$select_course .= "</select>";
-	$select_course .= '</div></div>';
-	echo $select_course;
-	echo '<div class="row" ><div class ="label2">'.get_lang('Subject').':</div>
-       		<div class="formw2"><input type = "text" id ="subject" name="subject" value="" required ="" style="width:94%"/></div>
-		  </div>';
-	echo '<div class="row" id="divEmail" ><div class ="label2">'.$plugin->get_lang('PersonalEmail').':</div>
-       		<div class="formw2"><input type = "email" id ="personal_email" name="personal_email" value=""  style="width:94%"/></div>
-		  </div>';
-	echo '<input name="project_id" id="project_id" type="hidden" value="">';
-	echo '<input name="other_area" id="other_area" type="hidden" value="">';
-	echo '<input name="email" id="email" type="hidden" value="">';
-	echo '<div class="row">
-		<div class="label2">'.get_lang('Message').'</div>
-		<div class="formw2">
-			<input type="hidden" id="content" name="content" value="" style="display:none">
-		<input type="hidden" id="content___Config" value="ToolbarSet=Messages&amp;Width=95%25&amp;Height=250&amp;ToolbarSets={ %22Messages%22: [  [ %22Bold%22,%22Italic%22,%22-%22,%22InsertOrderedList%22,%22InsertUnorderedList%22,%22Link%22,%22RemoveLink%22 ] ], %22MessagesMaximized%22: [  ] }&amp;LoadPlugin=[%22customizations%22]&amp;EditorAreaStyles=body { background: #ffffff; }&amp;ToolbarStartExpanded=false&amp;CustomConfigurationsPath=/main/inc/lib/fckeditor/myconfig.js&amp;EditorAreaCSS=/main/css/chamilo/default.css&amp;ToolbarComboPreviewCSS=/main/css/chamilo/default.css&amp;DefaultLanguage=es&amp;ContentLangDirection=ltr&amp;AdvancedFileManager=true&amp;BaseHref='.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/&amp;&amp;UserIsCourseAdmin=true&amp;UserIsPlatformAdmin=true" style="display:none">
-		<iframe id="content___Frame" src="/main/inc/lib/fckeditor/editor/fckeditor.html?InstanceName=content&amp;Toolbar=Messages" width="95%" height="250" frameborder="0" scrolling="no" style="margin: 0px; padding: 0px; border: 0px; background-color: transparent; background-image: none; width: 95%; height: 250px;">
-		</iframe>
-		</div>
-	</div>';
-	echo '<div class="row" ><div class ="label2">'.get_lang('Phone').' ('.$plugin->get_lang('Optional').'):</div>
-       		<div class="formw2"><input type = "text" id ="phone" name="phone" value="" onkeyup="valid(this,'."'allowspace'".')" onblur="valid(this,'."'allowspace'".')" style="width:94%"/></div>
-		</div>';
-	echo '<div class="row">
-		<div class="label2">'.get_lang('FilesAttachment').'</div>
-		<div class="formw2">
-				<span id="filepaths">
-				<div id="filepath_1">
-					<input type="file" name="attach_1" id="attach_1"  size="20" style="width:94%;"/>
-				</div></span>
-		</div>
-	</div>';
-	echo '<div class="row">
-		<div class="formw2">
-			<span id="link-more-attach">
-				<a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a></span>&nbsp;
-					('.sprintf(get_lang('MaximunFileSizeX'),format_file_size(api_get_setting('message_max_upload_filesize'))).')
-			</div>
-		</div>';
-	echo '<div class="row">
-		<div class="label2">
-		</div>
-		<div class="formw2"><button class="save" name="compose"  type="submit" id="btnsubmit">'.get_lang('SendMessage').'</button>
-		</div>
-	</div>';
-	echo '</form></div>';
-}
-
-function save_ticket(){
-	$category_id	=	$_POST['category_id'];
-	$content		=	$_POST['content'];
-	if ($_POST['phone']!="")	$content.=	'<p style="color:red">&nbsp;'.get_lang('Phone').': '.$_POST['phone'].'</p>';
-	$course_id		=	$_POST['course_id'];
-	$project_id		=	$_POST['project_id'];
-	$subject		=	$_POST['subject'];
-	$other_area		=	(int)$_POST['other_area'];
-	$email			=	$_POST['email'];
-	$personal_email	= $_POST['personal_email'];
-	$file_attachments =	$_FILES;
-	if(TicketManager::insert_new_ticket($category_id, $course_id, $project_id, $other_area, $email, $subject, $content,$personal_email, $file_attachments)){
-		header('location:'.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/myticket.php?message=success');
-	}else{
-		Display::display_header(get_lang('ComposeMessage'));
-		Display::display_error_message($plugin->get_lang('ErrorRegisterMessage'));
-	}
-}
-
-if(!isset($_POST['compose'])){
-	Display::display_header(get_lang('ComposeMessage'));
-	show_form_send_ticket();
-}else{
-	save_ticket();
-}
-
+<?php
+/*    INIT SECTION   */
+$language_file = array('messages','userInfo', 'admin');
+$cidReset = true;
+require_once '../config.php';
+$plugin = TicketPlugin::create();
+
+api_block_anonymous_users();
+require_once api_get_path(LIBRARY_PATH).'formvalidator/FormValidator.class.php';
+require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php';
+
+$htmlHeadXtra[]='
+<script>
+$(document).ready(function(){
+	if(document.getElementById("divEmail")){
+		document.getElementById("divEmail").style.display="none";
+	}
+});
+function changeType() {
+var selected = document.getElementById("category_id").selectedIndex;
+var id = document.getElementById("category_id").options[selected].value  ;
+	document.getElementById("project_id").value= projects[id];
+	document.getElementById("other_area").value= other_area[id];
+	document.getElementById("email").value= email[id];
+	document.getElementById("divEmail").style.display="none";
+	if(parseInt(course_required[id]) == 0){
+		document.getElementById("divCourse").style.display="none";		
+		if( id != "CUR"){
+			document.getElementById("divEmail").style.display="";
+			document.getElementById("personal_email").required="required";	
+		}			
+		document.getElementById("course_id").disabled=true;	
+		document.getElementById("course_id").value=0;			
+	}else{	
+		document.getElementById("divCourse").style.display = "";
+		document.getElementById("course_id").disabled=false;
+		document.getElementById("course_id").value=0;
+		document.getElementById("personal_email").value="";
+	}
+}
+
+function validate() {
+	var re  = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/; 
+	fckEditor1val = FCKeditorAPI.__Instances["content"].GetHTML();
+	document.getElementById("content").value= fckEditor1val;
+	var selected = document.getElementById("category_id").selectedIndex;
+	var id = document.getElementById("category_id").options[selected].value;
+	if( id == 0){
+		alert("'.$plugin->get_lang("ValidType").'");
+		return false;
+	}else if(document.getElementById("subject").value == ""){
+		alert("'.$plugin->get_lang("ValidSubject").'");
+		return false;
+	}else if(parseInt(course_required[id]) == 1 && document.getElementById("course_id").value == 0){
+		alert("'.$plugin->get_lang("ValidCourse").'");
+		return false;
+	}else if(id !="CUR" && parseInt(course_required[id]) != 1  && !re.test(document.getElementById("personal_email").value)){
+		alert("'.$plugin->get_lang("ValidEmail").'");
+		return false;
+	}else if(fckEditor1val ==""){
+		alert("'.$plugin->get_lang("ValidMessage").'");
+		return false;
+	}
+}
+
+var counter_image = 1;
+function remove_image_form(id_elem1) {
+	var elem1 = document.getElementById(id_elem1);
+	elem1.parentNode.removeChild(elem1);
+	counter_image = counter_image - 1;
+}
+function add_image_form() {
+	// Multiple filepaths for image form
+	var filepaths = document.getElementById("filepaths");
+	if (document.getElementById("filepath_"+counter_image)) {
+		counter_image = counter_image + 1;
+	}  else {
+		counter_image = counter_image;
+	}
+	var elem1 = document.createElement("div");
+	elem1.setAttribute("id","filepath_"+counter_image);
+	filepaths.appendChild(elem1);
+	id_elem1 = "filepath_"+counter_image;
+	id_elem1 = "\'"+id_elem1+"\'";
+	document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<a href=\"javascript:remove_image_form("+id_elem1+")\"><img src=\"'.api_get_path(WEB_CODE_PATH).'img/delete.gif\"></a>";
+	//document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<input type=\"text\" name=\"legend[]\" size=\"20\" />";
+	if (filepaths.childNodes.length == 6) {
+		var link_attach = document.getElementById("link-more-attach");
+		if (link_attach) {
+			link_attach.innerHTML="";
+		}
+	}
+}
+function show_question(questionid){
+	if(document.getElementById("C"+questionid)){
+		if(document.getElementById("A"+questionid).style.display == "none"){
+			document.getElementById("A"+questionid).style.display = ""; 
+		}
+		else if(document.getElementById("A"+questionid).style.display == ""){
+			document.getElementById("A"+questionid).style.display = "none"; 
+		}
+	}	
+}
+</script>
+
+<style>
+div.row div.label2 {
+	float:left;
+	width:10%;
+}
+div.row div.formw2 {
+    width:90%;
+	float:left
+}
+div.divTicket {
+    width: 70%;
+	float: center;
+	margin-left: 15%;
+	
+}
+</style>';
+$types = TicketManager::get_all_tickets_categories();
+$htmlHeadXtra[] = '<script language="javascript">
+		var projects = '.js_array($types,'projects','project_id'). '
+		var course_required = '.js_array($types,'course_required','course_required').'
+		var other_area = '.js_array($types,'other_area','other_area').'
+		var email = '.js_array($types,'email','email').'
+		document.getElementById("divCourse").style.display="none";	
+		 </script>';
+$htmlHeadXtra[] = '<script src="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
+$htmlHeadXtra[] = '<link  href="'.api_get_path(WEB_LIBRARY_PATH).'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
+
+function js_str($s) {
+	return '"'.addcslashes($s, "\0..\37\"\\").'"';
+}
+
+function js_array($array,$name,$key) {
+	$temp=array();
+	$return = "new Array(); ";
+	foreach ($array as $value){
+		$return .= $name."['".$value['category_id']."'] ='".$value[$key]."'; ";
+	}
+	return $return;
+}
+
+function show_form_send_ticket(){
+	global $types, $plugin;
+	$courses_list = CourseManager::get_courses_list_by_user_id(api_get_user_id(),false,true);
+	echo '<div class="divTicket">';
+	echo '<form enctype="multipart/form-data" action="'.api_get_self().'" method="post" name="send_ticket" id="send_ticket"
+ 	onsubmit="return validate()" style="width:100%">';
+	$select_types = '<div class="row">
+	<div class="label2">'.get_lang('Category').': </div>
+       <div class="formw2">';
+	$select_types .= '<select style="width: 95%; "   name = "category_id" id="category_id" onChange="changeType();">';
+	$select_types .= '<option value="0">---'.get_lang('Select').'---</option>';
+	foreach ($types as $type) {
+		$select_types.= "<option value = '".$type['category_id']."'>".$type['name'].":  <br/>".$type['description']."</option>";
+	}
+	$select_types .= "</select>";
+	$select_types .= '</div></div>';
+	echo $select_types;
+	$select_course = '<div class="row" id="divCourse" >
+	<div class="label2"  >'.get_lang('Course').':</div>
+            <div class="formw2">';
+	$select_course .= '<select  class="chzn-select" name = "course_id" id="course_id"  style="width: 40%; display:none;">';
+	$select_course .= '<option value="0">---'.get_lang('Select').'---</option>';
+	foreach ($courses_list as $course) {
+		$select_course.= "<option value = '".$course['course_id']."'>".$course['title']."</option>";
+	}
+	$select_course .= "</select>";
+	$select_course .= '</div></div>';
+	echo $select_course;
+	echo '<div class="row" ><div class ="label2">'.get_lang('Subject').':</div>
+       		<div class="formw2"><input type = "text" id ="subject" name="subject" value="" required ="" style="width:94%"/></div>
+		  </div>';
+	echo '<div class="row" id="divEmail" ><div class ="label2">'.$plugin->get_lang('PersonalEmail').':</div>
+       		<div class="formw2"><input type = "email" id ="personal_email" name="personal_email" value=""  style="width:94%"/></div>
+		  </div>';
+	echo '<input name="project_id" id="project_id" type="hidden" value="">';
+	echo '<input name="other_area" id="other_area" type="hidden" value="">';
+	echo '<input name="email" id="email" type="hidden" value="">';
+	echo '<div class="row">
+		<div class="label2">'.get_lang('Message').'</div>
+		<div class="formw2">
+			<input type="hidden" id="content" name="content" value="" style="display:none">
+		<input type="hidden" id="content___Config" value="ToolbarSet=Messages&amp;Width=95%25&amp;Height=250&amp;ToolbarSets={ %22Messages%22: [  [ %22Bold%22,%22Italic%22,%22-%22,%22InsertOrderedList%22,%22InsertUnorderedList%22,%22Link%22,%22RemoveLink%22 ] ], %22MessagesMaximized%22: [  ] }&amp;LoadPlugin=[%22customizations%22]&amp;EditorAreaStyles=body { background: #ffffff; }&amp;ToolbarStartExpanded=false&amp;CustomConfigurationsPath=/main/inc/lib/fckeditor/myconfig.js&amp;EditorAreaCSS=/main/css/chamilo/default.css&amp;ToolbarComboPreviewCSS=/main/css/chamilo/default.css&amp;DefaultLanguage=es&amp;ContentLangDirection=ltr&amp;AdvancedFileManager=true&amp;BaseHref='.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/&amp;&amp;UserIsCourseAdmin=true&amp;UserIsPlatformAdmin=true" style="display:none">
+		<iframe id="content___Frame" src="/main/inc/lib/fckeditor/editor/fckeditor.html?InstanceName=content&amp;Toolbar=Messages" width="95%" height="250" frameborder="0" scrolling="no" style="margin: 0px; padding: 0px; border: 0px; background-color: transparent; background-image: none; width: 95%; height: 250px;">
+		</iframe>
+		</div>
+	</div>';
+	echo '<div class="row" ><div class ="label2">'.get_lang('Phone').' ('.$plugin->get_lang('Optional').'):</div>
+       		<div class="formw2"><input type = "text" id ="phone" name="phone" value="" onkeyup="valid(this,'."'allowspace'".')" onblur="valid(this,'."'allowspace'".')" style="width:94%"/></div>
+		</div>';
+	echo '<div class="row">
+		<div class="label2">'.get_lang('FilesAttachment').'</div>
+		<div class="formw2">
+				<span id="filepaths">
+				<div id="filepath_1">
+					<input type="file" name="attach_1" id="attach_1"  size="20" style="width:94%;"/>
+				</div></span>
+		</div>
+	</div>';
+	echo '<div class="row">
+		<div class="formw2">
+			<span id="link-more-attach">
+				<a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a></span>&nbsp;
+					('.sprintf(get_lang('MaximunFileSizeX'),format_file_size(api_get_setting('message_max_upload_filesize'))).')
+			</div>
+		</div>';
+	echo '<div class="row">
+		<div class="label2">
+		</div>
+		<div class="formw2"><button class="save" name="compose"  type="submit" id="btnsubmit">'.get_lang('SendMessage').'</button>
+		</div>
+	</div>';
+	echo '</form></div>';
+}
+
+function save_ticket(){
+	$category_id	=	$_POST['category_id'];
+	$content		=	$_POST['content'];
+	if ($_POST['phone']!="")	$content.=	'<p style="color:red">&nbsp;'.get_lang('Phone').': '.$_POST['phone'].'</p>';
+	$course_id		=	$_POST['course_id'];
+	$project_id		=	$_POST['project_id'];
+	$subject		=	$_POST['subject'];
+	$other_area		=	(int)$_POST['other_area'];
+	$email			=	$_POST['email'];
+	$personal_email	= $_POST['personal_email'];
+	$file_attachments =	$_FILES;
+	if(TicketManager::insert_new_ticket($category_id, $course_id, $project_id, $other_area, $email, $subject, $content,$personal_email, $file_attachments)){
+		header('location:'.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/myticket.php?message=success');
+	}else{
+		Display::display_header(get_lang('ComposeMessage'));
+		Display::display_error_message($plugin->get_lang('ErrorRegisterMessage'));
+	}
+}
+
+if(!isset($_POST['compose'])){
+	Display::display_header(get_lang('ComposeMessage'));
+	show_form_send_ticket();
+}else{
+	save_ticket();
+}
+
 Display::display_footer();

+ 2 - 2
plugin/ticket/s/test.html → plugin/ticket/src/test.html

@@ -1,13 +1,13 @@
 <div class="actions">
   <span style="float: right;">
-    <a href="http://chamilo196/main/admin/user_add.php"><img title="Añadir usuarios" alt="Añadir usuarios" src="http://chamilo196/main/img/icons/32/new_user.png"></a>
+    <a href="/main/admin/user_add.php"><img title="Añadir usuarios" alt="Añadir usuarios" src="/main/img/icons/32/new_user.png"></a>
   </span>
   <form id="search_simple" name="search_simple" method="get" action="/main/admin/user_list.php" class="form-search">
     <fieldset>
     <span><input type="text" name="keyword" size="25"></span>
     <span><button type="submit" name="submit" class="btn btn">Buscar</button></span>
     <span><a onclick="display_advanced_search_form();" class="advanced_parameters" href="javascript://">
-      <span id="img_plus_and_minus">&nbsp;<img title="Mostrar" alt="Mostrar" src="http://chamilo196/main/img/div_show.gif" style="vertical-align: middle">&nbsp;Búsqueda avanzada</span></a>
+      <span id="img_plus_and_minus">&nbsp;<img title="Mostrar" alt="Mostrar" src="/main/img/div_show.gif" style="vertical-align: middle">&nbsp;Advanced search</span></a>
     </span>
     <div class="clear"></div>
     </fieldset>

+ 1190 - 1190
plugin/ticket/s/ticket.class.php → plugin/ticket/src/ticket.class.php

@@ -1,1191 +1,1191 @@
-<?php
-/**
- * Declaration of TicketManager class
- */
-/**
- * Class TicketManager
- *
- */
-class TicketManager
-{
-    /**
-     * Constructor
-     */
-    function __construct()
-    {
-    }
-
-    /**
-     * Get categories of tickets
-     * @return array
-     */
-    public static function get_all_tickets_categories()
-    {
-        $table_support_category = Database::get_main_table(
-            TABLE_SUPPORT_CATEGORY
-        );
-        $table_support_project = Database::get_main_table(
-            TABLE_SUPPORT_PROJECT
-        );
-        $sql = "SELECT category.*, project.other_area , project.email
-            FROM " . $table_support_category . "  category," . $table_support_project . " project
-            WHERE project.project_id = category.project_id ORDER BY category.total_tickets DESC;";
-        $result = Database::query($sql);
-        $types = array();
-        while ($row = Database::fetch_assoc($result)) {
-            $types[] = $row;
-        }
-
-        return $types;
-    }
-
-    public static function get_all_tickets_status()
-    {
-        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
-        $sql = "SELECT * FROM " . $table_support_status;
-        $result = Database::query($sql);
-        $types = array();
-        while ($row = Database::fetch_assoc($result)) {
-            $types[] = $row;
-        }
-        return $types;
-    }
-
-    public static function insert_new_ticket(
-        $category_id,
-        $course_id,
-        $project_id,
-        $other_area,
-        $email,
-        $subject,
-        $content,
-        $personalemail = "",
-        $file_attachments,
-        $source = 'VRT',
-        $priority = 'NRM',
-        $status = '',
-        $request_user = '',
-        $assigned_user = 0
-    ) {
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $table_support_category = Database::get_main_table(
-            TABLE_SUPPORT_CATEGORY
-        );
-        $now = api_get_utc_datetime();
-        $user_id = api_get_user_id();
-        if ($status == '') {
-            $status = NEWTCK;
-            if ($other_area > 0) {
-                $status = REENVIADO;
-            }
-        }
-
-        if ($request_user == '' && $source == 'VRT') {
-            $request_user = $user_id;
-        }
-        $course_id = intval($course_id);
-        $sql_insert_ticket = "INSERT INTO $table_support_tickets
-            (
-            project_id,
-            category_id,
-            priority_id,
-            course_id,
-            request_user,
-            personal_email,
-            status_id,
-            start_date,
-            sys_insert_user_id,
-            sys_insert_datetime,
-            sys_lastedit_user_id,
-            sys_lastedit_datetime,
-            source
-        ) VALUES (
-            '$project_id',
-            '$category_id',
-            '$priority',
-            '$course_id',
-            '$request_user',
-            '$personalemail',
-            '$status',
-            '" . $now . "',
-            $user_id,
-            '" . $now . "',
-            '$user_id',
-            '" . $now . "',
-            '$source'
-        )";
-        $result = Database::query($sql_insert_ticket);
-        $ticket_id = Database::insert_id();
-        if ($assigned_user != 0) {
-            self::assign_ticket_user($ticket_id, $assigned_user);
-        }
-        if ($ticket_id != 0) {
-            $ticket_code = "A" . str_pad(
-                    (int)$ticket_id,
-                    11,
-                    "0",
-                    STR_PAD_LEFT
-                );
-            $sql_update_code = "UPDATE $table_support_tickets
-                SET ticket_code = '$ticket_code' WHERE ticket_id = '$ticket_id'";
-            Database::query($sql_update_code);
-            $data_files = array();
-            $sql_update_total = "UPDATE $table_support_category
-                SET total_tickets = total_tickets +1 WHERE category_id = '$category_id';";
-            Database::query($sql_update_total);
-            if (self::insert_message(
-                $ticket_id,
-                $subject,
-                $content,
-                $file_attachments,
-                $request_user
-            )
-            ) {
-                global $data_files;
-                if ($other_area) {
-                    $user = UserManager::get_user_info_by_id($request_user);
-                    $mensaje_helpdesk = '<table>
-                                            <tr>
-                                                <td width="100px"><b>Cliente:</b></td>
-                                                <td width="400px">' . $user['firstname']
-                                                    . ' ' . $user['lastname'] . '</td>
-                                            </tr>
-                                            <tr>
-                                                <td width="100px"><b>Usuario:</b></td>
-                                                <td width="400px">' . $user['username'] . '</td>
-                                            </tr>
-                                            <tr>
-                                                <td width="100px"><b>Fecha:</b></td>
-                                                <td width="400px">' . api_convert_and_format_date(
-                            $now,
-                            DATE_TIME_FORMAT_LONG
-                        ) . '</td>
-                                            </tr>
-                                            <tr>
-                                                <td width="100px"><b>Asunto:</b></td>
-                                                <td width="400px">' . $subject . '</td>
-                                            </tr>
-                                            <tr>
-                                                <td width="100px"><b>Descripci&oacute;n:</b></td>
-                                                <td width="400px">' . $content . '</td>
-                                            </tr>
-                                        </table>';
-                    api_mail_html(
-                        'Soporte virtual',
-                        $email,
-                        "[SOPORTE] Incidente Reenviado de Soporte Virtual",
-                        $mensaje_helpdesk,
-                        $user['firstname'] . ' ' . $user['lastname'],
-                        $personalemail,
-                        array('cc' => 'soportevirtual@usil.edu.pe'),
-                        $data_files
-                    );
-                    $mensaje_alumno = '<p>Su consulta fue reenviada al area responsable : <a href="mailto:' . $email . '">' . $email . '</a></p>';
-                    $mensaje_alumno .= '<p>La respuesta a su consulta ser&aacute; enviada al correo  : <a href="#">' . $personalemail . '</a></p>';
-                    self::insert_message(
-                        $ticket_id,
-                        "Mensaje Reenviado",
-                        $mensaje_alumno,
-                        null,
-                        1
-                    );
-                }
-
-                return true;
-            } else {
-
-                return false;
-            }
-        } else {
-
-            return false;
-        }
-    }
-
-    public static function assign_ticket_user($ticket_id, $user_id)
-    {
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $table_support_assigned_log = Database::get_main_table(
-            TABLE_SUPPORT_ASSIGNED_LOG
-        );
-        $now = api_get_utc_datetime();
-        $sql_update = "UPDATE $table_support_tickets
-            SET  assigned_last_user = '$user_id'  WHERE ticket_id = '$ticket_id' ";
-        Database::query($sql_update);
-        if (Database::affected_rows() > 0) {
-            $insert_id = api_get_user_id();
-            $sql = "INSERT INTO $table_support_assigned_log (
-                ticket_id,
-                user_id,
-                assigned_date,
-                sys_insert_user_id
-            ) VALUES (
-                '$ticket_id',
-                '$user_id',
-                '$now',
-                '$insert_id'
-            );";
-            Database::query($sql);
-            if ($insert_id != $user_id) {
-                $info = api_get_user_info($user_id);
-                $mensaje = '<p>Estimado(a):</p><p>' . $info['firstname'] . " " . $info['lastname'] . "</p>
-							<p>Te asignaron el ticket $ticket_id " . '<a href="' . api_get_path(
-                        WEB_PLUGIN_PATH
-                    ) . PLUGIN_NAME . '/s/ticket_details.php?ticket_id=' . $ticket_id . '">Ticket</a></p>
-							<p>Centro de Educaci&oacute;n Virtual</p>';
-                api_mail_html(
-                    $info['firstname'] . " " . $info['lastname'],
-                    $info['mail'],
-                    "[TICKETS] Asignacion de Ticket #$ticket_id ",
-                    $mensaje,
-                    'Plataforma Virtual',
-                    'plataformavirtual@usil.edu.pe',
-                    array('cc' => 'plataformavirtual@usil.edu.pe')
-                );
-            }
-        }
-    }
-
-    public static function insert_message(
-        $ticket_id,
-        $subject,
-        $content,
-        $file_attachments,
-        $user_id,
-        $status = 'NOL',
-        $envioconfirmacion = false
-    ) {
-        global $data_files;
-        $table_support_messages = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE
-        );
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $table_support_message_attachments = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE_ATTACHMENTS
-        );
-        if ($envioconfirmacion) {
-            $formulario = '<form action="ticket_details.php?ticket_id=' . $ticket_id . '" id="confirmticket" method="POST" >
-							<p>Esta respuesta le result&oacute; satisfactoria</p>
-							<input id="respuestasi" type="submit" value="si" name="respuesta" />
-							<input id="respuestano" type="submit" value="no" name="respuesta" />
-						   </form>';
-            $content .= $formulario;
-            Database::query(
-                "UPDATE $table_support_tickets SET status_id='XCF' WHERE ticket_id = '$ticket_id'"
-            );
-        }
-        $sql_message_id = "SELECT COUNT(*) as total_messages FROM $table_support_messages
-            WHERE ticket_id ='$ticket_id'";
-        $result = Database::query($sql_message_id);
-        $obj = Database::fetch_object($result);
-        $message_id = $obj->total_messages + 1;
-        $now = api_get_utc_datetime();
-        $sql_insert_message = "INSERT INTO $table_support_messages (
-            ticket_id,message_id,subject, message,ip_address,sys_insert_user_id,sys_insert_datetime,sys_lastedit_user_id,sys_lastedit_datetime,status
-        ) VALUES (
-            '$ticket_id','$message_id','$subject','$content','" . Database::escape_string($_SERVER['REMOTE_ADDR']) . "','$user_id','" . $now . "','$user_id','" . $now . "','$status'
-        )";
-        Database::query($sql_insert_message);
-        $sql_update_total_message = "UPDATE $table_support_tickets
-            SET sys_lastedit_user_id ='$user_id',
-                sys_lastedit_datetime ='$now',
-                total_messages = (
-                    SELECT COUNT(*) as total_messages
-                      FROM $table_support_messages
-                      WHERE ticket_id ='$ticket_id'
-                ) WHERE ticket_id ='$ticket_id' ";
-        Database::query($sql_update_total_message);
-        $sql_message_att_id = "SELECT COUNT(*) as total_attach
-            FROM $table_support_message_attachments
-            WHERE ticket_id ='$ticket_id' AND message_id = '$message_id'";
-        $result = Database::query($sql_message_att_id);
-        $obj = Database::fetch_object($result);
-        $message_attch_id = $obj->total_attach + 1;
-        if (is_array($file_attachments)) {
-            foreach ($file_attachments as $file_attach) {
-                if ($file_attach['error'] == 0) {
-                    $data_files[] = self::save_message_attachment_file(
-                        $file_attach,
-                        $ticket_id,
-                        $message_id,
-                        $message_attch_id
-                    );
-                    $message_attch_id++;
-                } else {
-                    if ($file_attach['error'] != UPLOAD_ERR_NO_FILE) {
-                        return false;
-                    }
-                }
-            }
-        }
-        return true;
-    }
-
-    public static function save_message_attachment_file(
-        $file_attach,
-        $ticket_id,
-        $message_id,
-        $message_attch_id
-    ) {
-        $now = api_get_utc_datetime();
-        $user_id = api_get_user_id();
-        $new_file_name = add_ext_on_mime(
-            stripslashes($file_attach['name']),
-            $file_attach['type']
-        );
-        $file_name = $file_attach['name'];
-        $table_support_message_attachments = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE_ATTACHMENTS
-        );
-        if (!filter_extension($new_file_name)) {
-            Display :: display_error_message(
-                get_lang('UplUnableToSaveFileFilteredExtension')
-            );
-        } else {
-            $new_file_name = uniqid('');
-            $path_attachment = api_get_path(SYS_PATH);
-            $path_message_attach = $path_attachment . 'tck_messageattch/';
-            if (!file_exists($path_message_attach)) {
-                @mkdir(
-                    $path_message_attach,
-                    api_get_permissions_for_new_directories(),
-                    true
-                );
-            }
-            $new_path = $path_message_attach . $new_file_name;
-            if (is_uploaded_file($file_attach['tmp_name'])) {
-                $result = @copy($file_attach['tmp_name'], $new_path);
-            }
-            $safe_file_name = Database::escape_string($file_name);
-            $safe_new_file_name = Database::escape_string($new_file_name);
-            $sql = "INSERT INTO $table_support_message_attachments (
-                    filename,
-                    path,
-                    ticket_id,
-                    message_id,
-                    message_attch_id,
-                    size,
-                    sys_insert_user_id,
-                    sys_insert_datetime,
-                    sys_lastedit_user_id,
-                    sys_lastedit_datetime
-                ) VALUES (
-                    '$safe_file_name',
-                    '$safe_new_file_name',
-                    '$ticket_id',
-                    '$message_id',
-                    '$message_attch_id',
-                    '" . $file_attach['size'] . "',
-                    '$user_id',
-                    '$now',
-                    '$user_id',
-                    '$now'
-                )";
-            $result = Database::query($sql);
-            return array(
-                'path' => $path_message_attach . $safe_new_file_name,
-                'filename' => $safe_file_name
-            );
-        }
-    }
-
-    public static function get_tickets_by_user_id(
-        $from,
-        $number_of_items,
-        $column,
-        $direction,
-        $user_id = null
-    ) {
-        $table_support_category = Database::get_main_table(
-            TABLE_SUPPORT_CATEGORY
-        );
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $table_support_priority = Database::get_main_table(
-            TABLE_SUPPORT_PRIORITY
-        );
-        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
-        $table_support_messages = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE
-        );
-        $table_main_user = Database::get_main_table(TABLE_MAIN_USER);
-        $table_main_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
-        if (is_null($direction)) {
-            $direction = "DESC";
-        }
-        if (is_null($user_id) || $user_id == 0) {
-            $user_id = api_get_user_id();
-        }
-
-        $isAdmin = UserManager::is_admin($user_id);
-        $sql = "SELECT ticket.*,
-                ticket.ticket_id AS col0,
-                ticket.start_date AS col1,
-                ticket.sys_lastedit_datetime AS col2,
-                cat.name AS col3,
-                user.username AS col4,
-                priority.priority AS col5,
-                priority.priority  AS col6,
-                status.name AS col7,
-                ticket.total_messages AS col8,
-                msg.message AS col9,
-                ticket.request_user AS user_id,
-                ticket.assigned_last_user AS responsable
-            FROM $table_support_tickets ticket,
-                $table_support_category cat,
-                $table_support_priority priority,
-                $table_support_status status,
-                " . Database::get_main_table(TABLE_MAIN_USER) . " user,
-                tck_message msg
-            WHERE cat.category_id = ticket.category_id
-                AND ticket.priority_id = priority.priority_id
-                AND ticket.status_id = status.status_id
-                AND user.user_id = ticket.request_user
-                AND ticket.ticket_id= msg.ticket_id AND message_id=1 ";
-        if (!$isAdmin) {
-            $sql .= " AND request_user = '$user_id' ";
-        }
-        $keyword_unread = Database::escape_string(
-            trim($_GET['keyword_unread'])
-        );
-        //Search simple
-        if (isset($_GET['submit_simple'])) {
-            if ($_GET['keyword'] != '') {
-                $keyword = Database::escape_string(trim($_GET['keyword']));
-                $sql .= " AND (ticket.ticket_code = '$keyword'
-                                OR ticket.ticket_id = '$keyword'
-                                OR user.firstname LIKE '%$keyword%'
-                                OR user.lastname LIKE '%$keyword%'
-                                OR concat(user.firstname,' ',user.lastname) LIKE '%$keyword%'
-                                OR concat(user.lastname,' ',user.firstname) LIKE '%$keyword%'
-                                OR user.username LIKE '%$keyword%')";
-            }
-        }
-        //Search advanced
-        if (isset($_GET['submit_advanced'])) {
-            $keyword_category = Database::escape_string(
-                trim($_GET['keyword_category'])
-            );
-            $keyword_request_user = Database::escape_string(
-                trim($_GET['keyword_request_user'])
-            );
-            $keyword_admin = Database::escape_string(
-                trim($_GET['keyword_admin'])
-            );
-            $keyword_start_date_start = Database::escape_string(
-                trim($_GET['keyword_start_date_start'])
-            );
-            $keyword_start_date_end = Database::escape_string(
-                trim($_GET['keyword_start_date_end'])
-            );
-            $keyword_status = Database::escape_string(
-                trim($_GET['keyword_status'])
-            );
-            $keyword_source = Database::escape_string(
-                trim($_GET['keyword_source'])
-            );
-            $keyword_priority = Database::escape_string(
-                trim($_GET['keyword_priority'])
-            );
-            $keyword_range = Database::escape_string(
-                trim($_GET['keyword_dates'])
-            );
-            $keyword_course = Database::escape_string(
-                trim($_GET['keyword_course'])
-            );
-
-            if ($keyword_category != '') {
-                $sql .= " AND ticket.category_id = '$keyword_category'  ";
-            }
-            if ($keyword_request_user != '') {
-                $sql .= " AND (ticket.request_user = '$keyword_request_user' OR user.firstname LIKE '%" . $keyword_request_user . "%' OR user.official_code LIKE '%" . $keyword_request_user . "%' OR user.lastname LIKE '%" . $keyword_request_user . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword_request_user . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword_request_user . "%' OR user.username LIKE '%" . $keyword_request_user . "%') ";
-            }
-            if ($keyword_admin != '') {
-                $sql .= " AND ticket.assigned_last_user = '$keyword_admin'  ";
-            }
-            if ($keyword_status != '') {
-                $sql .= " AND ticket.status_id = '$keyword_status'  ";
-            }
-            if ($keyword_range == '' && $keyword_start_date_start != '') {
-                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') = '$keyword_start_date_start' ";
-            }
-            if ($keyword_range == '1' && $keyword_start_date_start != '' && $keyword_start_date_end != '') {
-                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') >= '$keyword_start_date_start'
-                        AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') <= '$keyword_start_date_end'";
-            }
-            if ($keyword_priority != '') {
-                $sql .= " AND ticket.priority_id = '$keyword_priority'  ";
-            }
-            if ($keyword_source != '') {
-                $sql .= " AND ticket.source = '$keyword_source' ";
-            }
-            if ($keyword_priority != '') {
-                $sql .= " AND ticket.priority_id = '$keyword_priority' ";
-            }
-            if ($keyword_course != '') {
-                $course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
-                $sql .= " AND ticket.course_id IN ( ";
-                $sql .= "SELECT id FROM $course_table
-                    WHERE (title LIKE '%$keyword_course%'
-                        OR code LIKE '%$keyword_course%'
-                        OR visual_code LIKE '%$keyword_course%'
-                    )
-                )";
-            }
-
-        }
-        if ($keyword_unread == 'yes') {
-            $sql .= " AND ticket.ticket_id IN (SELECT ticket.ticket_id
-                FROM $table_support_tickets ticket,
-                    $table_support_messages message,
-                    $table_main_user user
-                WHERE ticket.ticket_id = message.ticket_id
-                    AND message.status = 'NOL'
-                    AND message.sys_insert_user_id = user.user_id
-                    AND user.user_id NOT IN (SELECT user_id FROM $table_main_admin)
-                    AND ticket.status_id != 'REE'
-                GROUP BY ticket.ticket_id)";
-        } else {
-            if ($keyword_unread == 'no') {
-                $sql .= " AND ticket.ticket_id NOT IN (SELECT ticket.ticket_id
-                    FROM $table_support_tickets ticket,
-                        $table_support_messages message,
-                        $table_main_user user
-                    WHERE ticket.ticket_id = message.ticket_id
-                        AND message.status = 'NOL'
-                        AND message.sys_insert_user_id = user.user_id
-                        AND user.user_id NOT IN (
-                            SELECT user_id FROM $table_main_admin
-                            )
-                        AND ticket.status_id != 'REE'
-                    GROUP BY ticket.ticket_id)";
-            }
-        }
-        $sql .= " ORDER BY col$column $direction";
-        $sql .= " LIMIT $from,$number_of_items";
-        $result = Database::query($sql);
-        $tickets = array();
-
-        while ($row = Database::fetch_assoc($result)) {
-            $sql_unread = "SELECT COUNT(DISTINCT message.message_id) AS unread FROM " . $table_support_tickets . "  ticket, " . $table_support_messages . " message, " . $table_main_user . " user
- 			WHERE ticket.ticket_id = message.ticket_id AND ticket.ticket_id= '" . $row['col0'] . "' AND message.status='NOL' AND message.sys_insert_user_id = user.user_id ";
-            if ($isAdmin) {
-                $sql_unread .= " AND user.user_id  NOT IN (SELECT user_id FROM $table_main_admin)   AND ticket.status_id != 'REE' ";
-            } else {
-                $sql_unread .= " AND user.user_id IN (SELECT user_id FROM $table_main_admin)   ";
-            }
-            $result_unread = Database::query($sql_unread);
-            $unread = Database::fetch_object($result_unread)->unread;
-            $userInfo = UserManager::get_user_info_by_id($row['user_id']);
-            $name = '<a href="' . api_get_path(
-                    WEB_PATH
-                ) . 'main/admin/user_information.php?user_id=' . $row['user_id'] . '">' . api_get_person_name(
-                    $userInfo['firstname'],
-                    $userInfo['lastname']
-                ) . '</a>';
-            $actions = "";
-            /*if($row['status_id']!='CLS' && $row['status_id']!='REE'){
-                if( $row['responsable'] != 0 && $row['responsable'] == $user_id ){
-                    $actions = '<a href="myticket.php?ticket_id='.$row['ticket_id'].'&amp;action=unassign" title="desasignarme"><img src="../../../main/img/admin_star.png" border="0" /></a>';
-                }else{
-                    $actions = '<a href="myticket.php?ticket_id='.$row['ticket_id'].'&amp;action=assign" title="asignarme"><img src="../../../main/img/admin_star_na.png" border="0" /></a>';
-                }
-            }*/
-            if ($row['responsable'] != 0) {
-                $row['responsable'] = api_get_user_info($row['responsable']);
-                $row['responsable'] = '<a href="' . api_get_path(
-                        WEB_PATH
-                    ) . 'main/admin/user_information.php?user_id=' . $row['responsable']['user_id'] . '">' . $row['responsable']['firstname'] . ' ' . $row['responsable']['lastname'] . '</a>';
-            } else {
-                if ($row['status_id'] != 'REE') {
-                    $row['responsable'] = '<span style="color:#ff0000;">Por Asignar</span>';
-                } else {
-                    $row['responsable'] = '<span style="color:#00ff00;">REENVIADO</span>';
-                }
-            }
-            switch ($row['source']) {
-                case 'PRE':
-                    $img_source = '../img/icons/32/user.png';
-                    break;
-                case 'MAI':
-                    $img_source = '../img/icons/32/mail.png';
-                    break;
-                case 'TEL':
-                    $img_source = '../img/icons/32/event.png';
-                    break;
-                default:
-                    $img_source = '../img/icons/32/course_home.png';
-                    break;
-            }
-            $row['col1'] = api_get_local_time($row['col1']);
-            $row['col2'] = api_get_local_time($row['col2']);
-            if ($isAdmin) {
-                $actions .= '<a href="ticket_details.php?ticket_id=' . $row['col0'] . '">' . Display::return_icon(
-                        'synthese_view.gif',
-                        get_lang('Info')
-                    ) . '</a>&nbsp;&nbsp;';
-                if ($row['priority_id'] == 'ALT' && $row['status_id'] != 'CLS') {
-                    $actions .= '<img src="../../../main/img/exclamation.png" border="0" />';
-                }
-                $row['col0'] = Display::return_icon(
-                        $img_source,
-                        get_lang('Info')
-                    ) . '<a href="ticket_details.php?ticket_id=' . $row['col0'] . '">' . $row['ticket_code'] . '</a>';
-                if ($row['col7'] == 'PENDIENTE') {
-                    $row['col7'] = '<span style="color: #f00; font-weight:bold;">' . $row['col7'] . '</span>';
-                }
-                //programa: $userInfo['extra']['programa']
-                $ticket = array(
-                    $row['col0'],
-                    api_format_date($row['col1'], '%d/%m/%y - %I:%M:%S %p'),
-                    api_format_date($row['col2'], '%d/%m/%y - %I:%M:%S %p'),
-                    $row['col3'],
-                    $name,
-                    $row['responsable'],
-                    $row['col7'],
-                    $row['col8'],
-                    $actions,
-                    eregi_replace(
-                        "[\n|\r|\n\r|\r\n]",
-                        ' ',
-                        strip_tags($row['col9'])
-                    )
-                );
-            } else {
-                $actions = "";
-                $actions .= '<a href="ticket_details.php?ticket_id=' . $row['col0'] . '">' . Display::return_icon(
-                        'synthese_view.gif',
-                        get_lang('Info')
-                    ) . '</a>&nbsp;&nbsp;';
-                $row['col0'] = Display::return_icon(
-                        $img_source,
-                        get_lang('Info')
-                    ) . '<a href="ticket_details.php?ticket_id=' . $row['col0'] . '">' . $row['ticket_code'] . '</a>';
-                $now = api_strtotime(api_get_utc_datetime());
-                $last_edit_date = api_strtotime($row['sys_lastedit_datetime']);
-                $dif = $now - $last_edit_date;
-
-                if ($dif > 172800 && $row['priority_id'] == 'NRM' && $row['status_id'] != 'CLS') {
-                    $actions .= '<a href="myticket.php?ticket_id=' . $row['ticket_id'] . '&amp;action=alert"><img src="../../../main/img/exclamation.png" border="0" /></a>';
-                }
-                if ($row['priority_id'] == 'ALT') {
-                    $actions .= '<img src="../../../main/img/admin_star.png" border="0" />';
-                }
-                $ticket = array(
-                    $row['col0'],
-                    api_format_date($row['col1'], '%d/%m/%y - %I:%M:%S %p'),
-                    api_format_date($row['col2'], '%d/%m/%y - %I:%M:%S %p'),
-                    $row['col3'],
-                    $row['col7'],
-                    $actions
-                );
-            }
-            if ($unread > 0) {
-
-                $ticket['0'] = $ticket['0'] . '&nbsp;&nbsp;(' . $unread . ')<a href="ticket_details.php?ticket_id=' . $row['ticket_id'] . '"><img src="../../../main/img/message_new.png" border="0" title="' . $unread . ' Nuevo(s) Mensajes"/></a>';
-
-            }
-            if ($isAdmin) {
-                $ticket['0'] .= '&nbsp;&nbsp;<a  href="javascript:void(0)" onclick="load_history_ticket(\'div_' . $row['ticket_id'] . '\',' . $row['ticket_id'] . ')">
-					<img onclick="load_course_list(\'div_' . $row['ticket_id'] . '\',' . $row['ticket_id'] . ')" onmouseover="clear_course_list (\'div_' . $row['ticket_id'] . '\')" src="../../../main/img/history.gif" title="' . get_lang(
-                        'Historial'
-                    ) . '" alt="' . get_lang('Historial') . '"/>
-					<div class="blackboard_hide" id="div_' . $row['ticket_id'] . '">&nbsp;&nbsp;</div>
-					</a>&nbsp;&nbsp;';
-            }
-            $tickets[] = $ticket;
-        }
-        return $tickets;
-    }
-
-    public static function get_total_tickets_by_user_id($user_id = null)
-    {
-        $table_support_category = Database::get_main_table(
-            TABLE_SUPPORT_CATEGORY
-        );
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $table_support_priority = Database::get_main_table(
-            TABLE_SUPPORT_PRIORITY
-        );
-        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
-        $table_support_messages = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE
-        );
-        $table_main_user = Database::get_main_table(TABLE_MAIN_USER);
-        $table_main_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
-        if (is_null($user_id) || $user_id == 0) {
-            $user_id = api_get_user_id();
-        }
-        $sql = "SELECT COUNT(ticket.ticket_id) AS total	FROM " . $table_support_tickets . " ticket ," . $table_support_category . " cat , " . $table_support_priority . " priority, " . $table_support_status . " status , " . Database::get_main_table(
-                TABLE_MAIN_USER
-            ) . " user
-				WHERE cat.category_id = ticket.category_id AND ticket.priority_id = priority.priority_id AND ticket.status_id = status.status_id  AND user.user_id = ticket.request_user ";
-        if (!api_is_platform_admin()) {
-            $sql .= " AND request_user = '$user_id' ";
-        }
-
-        //Search simple
-        if (isset($_GET['submit_simple'])) {
-            if ($_GET['keyword'] != '') {
-                $keyword = Database::escape_string(trim($_GET['keyword']));
-                $sql .= " AND (ticket.ticket_code = '" . $keyword . "' OR user.firstname LIKE '%" . $keyword . "%' OR user.lastname LIKE '%" . $keyword . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword . "%' OR user.username LIKE '%" . $keyword . "%')  ";
-            }
-        }
-        $keyword_unread = Database::escape_string(
-            trim($_GET['keyword_unread'])
-        );
-        //Search advanced
-        if (isset($_GET['submit_advanced'])) {
-            $keyword_category = Database::escape_string(
-                trim($_GET['keyword_category'])
-            );
-            $keyword_request_user = Database::escape_string(
-                trim($_GET['keyword_request_user'])
-            );
-            $keyword_admin = Database::escape_string(
-                trim($_GET['keyword_admin'])
-            );
-            $keyword_start_date_start = Database::escape_string(
-                trim($_GET['keyword_start_date_start'])
-            );
-            $keyword_start_date_end = Database::escape_string(
-                trim($_GET['keyword_start_date_end'])
-            );
-            $keyword_status = Database::escape_string(
-                trim($_GET['keyword_status'])
-            );
-            $keyword_source = Database::escape_string(
-                trim($_GET['keyword_source'])
-            );
-            $keyword_priority = Database::escape_string(
-                trim($_GET['keyword_priority'])
-            );
-            $keyword_range = Database::escape_string(
-                trim($_GET['keyword_dates'])
-            );
-            $keyword_course = Database::escape_string(
-                trim($_GET['keyword_course'])
-            );
-
-            if ($keyword_category != '') {
-                $sql .= " AND ticket.category_id = '$keyword_category'  ";
-            }
-            if ($keyword_request_user != '') {
-                $sql .= " AND (ticket.request_user = '$keyword_request_user' OR user.firstname LIKE '%" . $keyword_request_user . "%' OR user.official_code LIKE '%" . $keyword_request_user . "%' OR user.lastname LIKE '%" . $keyword_request_user . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword_request_user . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword_request_user . "%' OR user.username LIKE '%" . $keyword_request_user . "%') ";
-            }
-            if ($keyword_admin != '') {
-                $sql .= " AND ticket.assigned_last_user = '$keyword_admin'  ";
-            }
-            if ($keyword_status != '') {
-                $sql .= " AND ticket.status_id = '$keyword_status'  ";
-            }
-            if ($keyword_range == '' && $keyword_start_date_start != '') {
-                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') = '$keyword_start_date_start' ";
-            }
-            if ($keyword_range == '1' && $keyword_start_date_start != '' && $keyword_start_date_end != '') {
-                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') >= '$keyword_start_date_start' AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') <= '$keyword_start_date_end'";
-            }
-            if ($keyword_priority != '') {
-                $sql .= " AND ticket.priority_id = '$keyword_priority'  ";
-            }
-            if ($keyword_source != '') {
-                $sql .= " AND ticket.source = '$keyword_source' ";
-            }
-            if ($keyword_priority != '') {
-                $sql .= " AND ticket.priority_id = '$keyword_priority' ";
-            }
-            if ($keyword_course != '') {
-                $course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
-                $sql .= " AND ticket.course_id IN ( ";
-                $sql .= "SELECT id FROM $course_table WHERE (title LIKE '%" . $keyword_course . "%' OR code LIKE '%" . $keyword_course . "%' OR visual_code LIKE '%" . $keyword_course . "%' )) ";
-            }
-
-        }
-        if ($keyword_unread == 'yes') {
-            $sql .= " AND ticket.ticket_id IN (SELECT ticket.ticket_id FROM  $table_support_tickets ticket,  $table_support_messages message,  $table_main_user user WHERE ticket.ticket_id = message.ticket_id   AND message.status = 'NOL'   AND message.sys_insert_user_id = user.user_id   AND user.user_id NOT IN (SELECT user_id FROM $table_main_admin)    AND ticket.status_id != 'REE'   GROUP BY ticket.ticket_id)";
-        } else {
-            if ($keyword_unread == 'no') {
-                $sql .= " AND ticket.ticket_id NOT IN (SELECT ticket.ticket_id FROM  $table_support_tickets ticket,  $table_support_messages message,  $table_main_user user WHERE ticket.ticket_id = message.ticket_id   AND message.status = 'NOL'   AND message.sys_insert_user_id = user.user_id   AND user.user_id NOT IN (SELECT user_id FROM $table_main_admin)   AND ticket.status_id != 'REE'   GROUP BY ticket.ticket_id)";
-            }
-        }
-        $res = Database::query($sql);
-        $obj = Database::fetch_object($res);
-        return $obj->total;
-    }
-
-    public static function get_ticket_detail_by_id($ticket_id, $user_id)
-    {
-        $table_support_category = Database::get_main_table(
-            TABLE_SUPPORT_CATEGORY
-        );
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $table_support_priority = Database::get_main_table(
-            TABLE_SUPPORT_PRIORITY
-        );
-        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
-        $table_support_messages = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE
-        );
-        $table_support_message_attachments = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE_ATTACHMENTS
-        );
-
-        $sql = "SELECT ticket.* ,cat.name , status.name as status, priority.priority FROM " . $table_support_tickets . " ticket, " . $table_support_category . " cat ," . $table_support_priority . " priority , " . $table_support_status . " status
-		WHERE ticket.ticket_id = '$ticket_id' AND cat.category_id = ticket.category_id AND priority.priority_id = ticket.priority_id AND status.status_id = ticket.status_id  ";
-        if (!UserManager::is_admin($user_id)) {
-            $sql .= "AND ticket.request_user = '$user_id'";
-        }
-        $result = Database::query($sql);
-        $ticket = array();
-        if (Database::num_rows($result) > 0) {
-            while ($row = Database::fetch_assoc($result)) {
-                $row['course'] = null;
-                $row['start_date'] = api_convert_and_format_date(
-                    api_get_local_time($row['start_date']),
-                    DATE_TIME_FORMAT_LONG,
-                    _api_get_timezone()
-                );
-                $row['end_date'] = api_convert_and_format_date(
-                    api_get_local_time($row['end_date']),
-                    DATE_TIME_FORMAT_LONG,
-                    _api_get_timezone()
-                );
-                $row['sys_lastedit_datetime'] = api_convert_and_format_date(
-                    api_get_local_time($row['sys_lastedit_datetime']),
-                    DATE_TIME_FORMAT_LONG,
-                    _api_get_timezone()
-                );
-                $row['course_url'] = null;
-                if ($row['course_id'] != 0) {
-                    $course = api_get_course_info_by_id($row['course_id']);
-                    $row['course_url'] = '<a href="' . api_get_path(
-                            WEB_COURSE_PATH
-                        ) . $course['path'] . '">' . $course['name'] . '</a>';
-                }
-                $userInfo = api_get_user_info($row['request_user']);
-                $row['user_url'] = '<a href="' . api_get_path(
-                        WEB_PATH
-                    ) . 'main/admin/user_information.php?user_id=' . $row['request_user'] . '">' . api_get_person_name(
-                        $userInfo['firstname'],
-                        $userInfo['lastname']
-                    ) . '</a>';
-                $ticket['usuario'] = $userInfo;
-                $ticket['ticket'] = $row;
-            }
-            $sql = "SELECT  * FROM " . $table_support_messages . " message, " . Database::get_main_table(
-                    TABLE_MAIN_USER
-                ) . " user  WHERE message.ticket_id = '$ticket_id' AND message.sys_insert_user_id = user.user_id ";
-            $result = Database::query($sql);
-            $ticket['messages'] = array();
-            $attach_icon = Display::return_icon('attachment.gif', '');
-            $admin_table = Database::get_main_table(TABLE_MAIN_ADMIN);
-            while ($row = Database::fetch_assoc($result)) {
-                $message = $row;
-                //Check if user is an admin
-                $sql_admin = "SELECT user_id FROM $admin_table
-				WHERE user_id = '" . intval($message['user_id']) . "' LIMIT 1";
-                $result_admin = Database::query($sql_admin);
-                $message['admin'] = false;
-                if (Database::num_rows($result_admin) > 0) {
-                    $message['admin'] = true;
-                }
-                $message['user_created'] = '<a href="' . api_get_path(
-                        WEB_PATH
-                    ) . 'main/admin/user_information.php?user_id=' . $row['user_id'] . '">' . $row['firstname'] . ' ' . $row['lastname'] . '</a>';
-                $sql_atachment = "SELECT * FROM " . TABLE_SUPPORT_MESSAGE_ATTACHMENTS . " WHERE message_id = " . $row['message_id'] . " AND ticket_id= '$ticket_id'  ";
-                $result_attach = Database::query($sql_atachment);
-                while ($row2 = Database::fetch_assoc($result_attach)) {
-                    $archiveURL = $archiveURL = api_get_path(
-                            WEB_PLUGIN_PATH
-                        ) . PLUGIN_NAME . '/s/download.php?ticket_id=' . $ticket_id . '&file=';
-                    $row2['attachment_link'] = $attach_icon . '&nbsp;<a href="' . $archiveURL . $row2['path'] . '&title=' . $row2['filename'] . '">' . $row2['filename'] . '</a>&nbsp;(' . $row2['size'] . ')';
-                    $message['atachments'][] = $row2;
-                }
-                $ticket['messages'][] = $message;
-            }
-        }
-        return $ticket;
-    }
-
-    public static function update_message_status($ticket_id, $user_id)
-    {
-        $table_support_messages = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE
-        );
-        $now = api_get_utc_datetime();
-        $sql = "UPDATE " . $table_support_messages . " SET status = 'LEI' , sys_lastedit_user_id ='" . api_get_user_id(
-            ) . "' ,sys_lastedit_datetime ='" . $now . "' WHERE ticket_id ='$ticket_id' ";
-
-        if (api_is_platform_admin()) {
-            $sql .= " AND sys_insert_user_id = '$user_id'";
-        } else {
-
-            $sql .= " AND sys_insert_user_id != '$user_id'";
-        }
-        Database::query($sql);
-        if (Database::affected_rows() > 0) {
-            Database::query(
-                "UPDATE " . Database::get_main_table(TABLE_SUPPORT_TICKET) . " SET status_id = 'PND'  WHERE ticket_id ='$ticket_id' AND status_id = 'NAT'"
-            );
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public static function update_ticket_status(
-        $status_id,
-        $ticket_id,
-        $user_id
-    ) {
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $table_support_messages = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE
-        );
-        $now = api_get_utc_datetime();
-        $sql = "UPDATE " . $table_support_tickets . " SET status_id = '$status_id' , sys_lastedit_user_id ='$user_id' ,sys_lastedit_datetime ='" . $now . "'  WHERE ticket_id ='$ticket_id'";
-        Database::query($sql);
-        if (Database::affected_rows() > 0) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    public static function get_number_of_messages()
-    {
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $table_support_messages = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE
-        );
-        $table_main_user = Database::get_main_table(TABLE_MAIN_USER);
-        $table_main_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
-        $user_info = api_get_user_info();
-        $user_id = $user_info['user_id'];
-        $sql = "SELECT COUNT( DISTINCT ticket.ticket_id) AS unread  FROM " . $table_support_tickets . " ticket, " . $table_support_messages . " message , " . $table_main_user . " user WHERE ticket.ticket_id = message.ticket_id AND message.status = 'NOL'    AND user.user_id = message.sys_insert_user_id ";
-        if (!api_is_platform_admin()) {
-            $sql .= " AND ticket.request_user = '$user_id'  AND user_id IN (SELECT user_id FROM $table_main_admin)  ";
-        } else {
-            $sql .= " AND user_id NOT IN (SELECT user_id FROM $table_main_admin) AND ticket.status_id != 'REE'";
-        }
-        $sql .= "  AND ticket.project_id != '' ";
-        $res = Database::query($sql);
-        $obj = Database::fetch_object($res);
-        return $obj->unread;
-
-    }
-
-    public static function send_alert($ticket_id, $user_id)
-    {
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $now = api_get_utc_datetime();
-        $sql = "UPDATE " . $table_support_tickets . " SET priority_id = 'ALT', sys_lastedit_user_id ='$user_id' ,sys_lastedit_datetime ='" . $now . "' WHERE ticket_id = '$ticket_id'";
-        Database::query($sql);
-    }
-
-    public static function close_ticket($ticket_id, $user_id)
-    {
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $now = api_get_utc_datetime();
-        $sql = "UPDATE " . $table_support_tickets . " SET status_id = 'CLS' , sys_lastedit_user_id ='$user_id' ,sys_lastedit_datetime ='" . $now . "' ,end_date ='" . $now . "' WHERE ticket_id ='$ticket_id'";
-        Database::query($sql);
-    }
-
-    public static function close_old_tickets()
-    {
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $now = api_get_utc_datetime();
-        $sql = "UPDATE " . $table_support_tickets . " SET status_id = 'CLS' , sys_lastedit_user_id ='" . api_get_user_id(
-            ) . "' ,sys_lastedit_datetime ='" . $now . "',end_date ='" . $now . "' WHERE DATEDIFF('$now',sys_lastedit_datetime) > 7 AND status_id != 'CLS' AND status_id != 'NAT' AND status_id != 'REE'";
-        Database::query($sql);
-    }
-
-    public static function get_assign_log($ticket_id)
-    {
-        $table_support_assigned_log = Database::get_main_table(
-            TABLE_SUPPORT_ASSIGNED_LOG
-        );
-        $sql = "SELECT log.* FROM " . TABLE_SUPPORT_ASSIGNED_LOG . " log  WHERE log.ticket_id = '$ticket_id' ORDER BY log.assigned_date";
-        $result = Database::query($sql);
-        $history = array();
-        while ($row = Database::fetch_assoc($result)) {
-            if ($row['user_id'] != 0) {
-                $assignuser = api_get_user_info(
-                    $row['user_id']
-                );
-            }
-            $insertuser = api_get_user_info($row['sys_insert_user_id']);
-            $row['assigned_date'] = api_convert_and_format_date(
-                api_get_local_time($row['assigned_date']),
-                '%d/%m/%y-%H:%M:%S',
-                _api_get_timezone()
-            );
-            $row['assignuser'] = ($row['user_id'] != 0) ? ('<a href="' . api_get_path(
-                    WEB_PATH
-                ) . 'main/admin/user_information.php?user_id=' . $row['user_id'] . '"  target="_blank">' . $assignuser['username'] . '</a>') : get_lang(
-                'Unassign'
-            );
-            $row['insertuser'] = '<a href="' . api_get_path(
-                    WEB_PATH
-                ) . 'main/admin/user_information.php?user_id=' . $row['sys_insert_user_id'] . '"  target="_blank">' . $insertuser['username'] . '</a>';
-            $history[] = $row;
-        }
-        return $history;
-    }
-
-    public static function export_tickets_by_user_id(
-        $from,
-        $number_of_items,
-        $column,
-        $direction,
-        $user_id = null
-    ) {
-        $table_support_category = Database::get_main_table(
-            TABLE_SUPPORT_CATEGORY
-        );
-        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
-        $table_support_priority = Database::get_main_table(
-            TABLE_SUPPORT_PRIORITY
-        );
-        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
-        $table_support_messages = Database::get_main_table(
-            TABLE_SUPPORT_MESSAGE
-        );
-        $table_main_user = Database::get_main_table(TABLE_MAIN_USER);
-        if (is_null($direction)) {
-            $direction = "DESC";
-        }
-        if (is_null($user_id) || $user_id == 0) {
-            $user_id = api_get_user_id();
-        }
-
-        $sql = "SELECT ticket.ticket_code, ticket.sys_insert_datetime , ticket.sys_lastedit_datetime , cat.name as category , CONCAT(user.lastname,' ', user.firstname) AS fullname , status.name as status , ticket.total_messages as messages , ticket.assigned_last_user as responsable
-				FROM " . $table_support_tickets . " ticket ," . $table_support_category . " cat , " . $table_support_priority . " priority, " . $table_support_status . " status , " . Database::get_main_table(
-                TABLE_MAIN_USER
-            ) . " user
-				WHERE cat.category_id = ticket.category_id AND ticket.priority_id = priority.priority_id AND ticket.status_id = status.status_id  AND user.user_id = ticket.request_user ";
-        //Search simple
-        if (isset($_GET['submit_simple'])) {
-            if ($_GET['keyword'] != '') {
-                $keyword = Database::escape_string(trim($_GET['keyword']));
-                $sql .= " AND (ticket.ticket_code = '" . $keyword . "' OR user.firstname LIKE '%" . $keyword . "%' OR user.lastname LIKE '%" . $keyword . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword . "%' OR user.username LIKE '%" . $keyword . "%')  ";
-            }
-        }
-        //Search advanced
-        if (isset($_GET['submit_advanced'])) {
-            $keyword_category = Database::escape_string(
-                trim($_GET['keyword_category'])
-            );
-            $keyword_request_user = Database::escape_string(
-                trim($_GET['keyword_request_user'])
-            );
-            $keyword_admin = Database::escape_string(
-                trim($_GET['keyword_admin'])
-            );
-            $keyword_start_date_start = Database::escape_string(
-                trim($_GET['keyword_start_date_start'])
-            );
-            $keyword_start_date_end = Database::escape_string(
-                trim($_GET['keyword_start_date_end'])
-            );
-            $keyword_status = Database::escape_string(
-                trim($_GET['keyword_status'])
-            );
-            $keyword_source = Database::escape_string(
-                trim($_GET['keyword_source'])
-            );
-            $keyword_priority = Database::escape_string(
-                trim($_GET['keyword_priority'])
-            );
-            $keyword_range = Database::escape_string(
-                trim($_GET['keyword_dates'])
-            );
-            $keyword_unread = Database::escape_string(
-                trim($_GET['keyword_unread'])
-            );
-            $keyword_course = Database::escape_string(
-                trim($_GET['keyword_course'])
-            );
-
-            if ($keyword_category != '') {
-                $sql .= " AND ticket.category_id = '$keyword_category'  ";
-            }
-            if ($keyword_request_user != '') {
-                $sql .= " AND (ticket.request_user = '$keyword_request_user' OR user.firstname LIKE '%" . $keyword_request_user . "%' OR user.official_code LIKE '%" . $keyword_request_user . "%' OR user.lastname LIKE '%" . $keyword_request_user . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword_request_user . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword_request_user . "%' OR user.username LIKE '%" . $keyword_request_user . "%') ";
-            }
-            if ($keyword_admin != '') {
-                $sql .= " AND ticket.assigned_last_user = '$keyword_admin'  ";
-            }
-            if ($keyword_status != '') {
-                $sql .= " AND ticket.status_id = '$keyword_status'  ";
-            }
-            if ($keyword_range == '' && $keyword_start_date_start != '') {
-                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') = '$keyword_start_date_start' ";
-            }
-            if ($keyword_range == '1' && $keyword_start_date_start != '' && $keyword_start_date_end != '') {
-                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') >= '$keyword_start_date_start' AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') <= '$keyword_start_date_end'";
-            }
-            if ($keyword_priority != '') {
-                $sql .= " AND ticket.priority_id = '$keyword_priority'  ";
-            }
-            if ($keyword_source != '') {
-                $sql .= " AND ticket.source = '$keyword_source' ";
-            }
-            if ($keyword_priority != '') {
-                $sql .= " AND ticket.priority_id = '$keyword_priority' ";
-            }
-            if ($keyword_course != '') {
-                $course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
-                $sql .= " AND ticket.course_id IN ( ";
-                $sql .= "SELECT id FROM $course_table WHERE (title LIKE '%" . $keyword_course . "%' OR code LIKE '%" . $keyword_course . "%' OR visual_code LIKE '%" . $keyword_course . "%' )) ";
-            }
-            if ($keyword_unread == 'yes') {
-                $sql .= " AND ticket.ticket_id IN (SELECT ticket.ticket_id FROM  $table_support_tickets ticket,  $table_support_messages message,  $table_main_user user WHERE ticket.ticket_id = message.ticket_id   AND message.status = 'NOL'   AND message.sys_insert_user_id = user.user_id   AND user.status != 1   AND ticket.status_id != 'REE'   GROUP BY ticket.ticket_id)";
-            } else {
-                if ($keyword_unread == 'no') {
-                    $sql .= " AND ticket.ticket_id NOT IN (SELECT ticket.ticket_id FROM  $table_support_tickets ticket,  $table_support_messages message,  $table_main_user user WHERE ticket.ticket_id = message.ticket_id   AND message.status = 'NOL'   AND message.sys_insert_user_id = user.user_id   AND user.status != 1   AND ticket.status_id != 'REE'   GROUP BY ticket.ticket_id)";
-                }
-            }
-
-        }
-
-
-        //$sql .= " ORDER BY col$column $direction";
-        $sql .= " LIMIT $from,$number_of_items";
-
-        $result = Database::query($sql);
-        $tickets[0] = array(
-            utf8_decode('Ticket#'),
-            utf8_decode('Fecha'),
-            utf8_decode('Fecha Edicion'),
-            utf8_decode('Categoria'),
-            utf8_decode('Usuario'),
-            utf8_decode('Estado'),
-            utf8_decode('Mensajes'),
-            utf8_decode('Responsable'),
-            utf8_decode('Programa')
-        );
-
-        while ($row = Database::fetch_assoc($result)) {
-            if ($row['responsable'] != 0) {
-                $row['responsable'] = api_get_user_info($row['responsable']);
-                $row['responsable'] = $row['responsable']['firstname'] . ' ' . $row['responsable']['lastname'];
-            }
-            $row['sys_insert_datetime'] = api_format_date(
-                $row['sys_insert_datetime'],
-                '%d/%m/%y - %I:%M:%S %p'
-            );
-            $row['sys_lastedit_datetime'] = api_format_date(
-                $row['sys_lastedit_datetime'],
-                '%d/%m/%y - %I:%M:%S %p'
-            );
-            $row['category'] = utf8_decode($row['category']);
-            $row['programa'] = utf8_decode($row['fullname']);
-            $row['fullname'] = utf8_decode($row['fullname']);
-            $row['responsable'] = utf8_decode($row['responsable']);
-            $tickets[] = $row;
-        }
-        return $tickets;
-    }
-}
-
+<?php
+/**
+ * Declaration of TicketManager class
+ */
+/**
+ * Class TicketManager
+ *
+ */
+class TicketManager
+{
+    /**
+     * Constructor
+     */
+    function __construct()
+    {
+    }
+
+    /**
+     * Get categories of tickets
+     * @return array
+     */
+    public static function get_all_tickets_categories()
+    {
+        $table_support_category = Database::get_main_table(
+            TABLE_SUPPORT_CATEGORY
+        );
+        $table_support_project = Database::get_main_table(
+            TABLE_SUPPORT_PROJECT
+        );
+        $sql = "SELECT category.*, project.other_area , project.email
+            FROM " . $table_support_category . "  category," . $table_support_project . " project
+            WHERE project.project_id = category.project_id ORDER BY category.total_tickets DESC;";
+        $result = Database::query($sql);
+        $types = array();
+        while ($row = Database::fetch_assoc($result)) {
+            $types[] = $row;
+        }
+
+        return $types;
+    }
+
+    public static function get_all_tickets_status()
+    {
+        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
+        $sql = "SELECT * FROM " . $table_support_status;
+        $result = Database::query($sql);
+        $types = array();
+        while ($row = Database::fetch_assoc($result)) {
+            $types[] = $row;
+        }
+        return $types;
+    }
+
+    public static function insert_new_ticket(
+        $category_id,
+        $course_id,
+        $project_id,
+        $other_area,
+        $email,
+        $subject,
+        $content,
+        $personalemail = "",
+        $file_attachments,
+        $source = 'VRT',
+        $priority = 'NRM',
+        $status = '',
+        $request_user = '',
+        $assigned_user = 0
+    ) {
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $table_support_category = Database::get_main_table(
+            TABLE_SUPPORT_CATEGORY
+        );
+        $now = api_get_utc_datetime();
+        $user_id = api_get_user_id();
+        if ($status == '') {
+            $status = NEWTCK;
+            if ($other_area > 0) {
+                $status = REENVIADO;
+            }
+        }
+
+        if ($request_user == '' && $source == 'VRT') {
+            $request_user = $user_id;
+        }
+        $course_id = intval($course_id);
+        $sql_insert_ticket = "INSERT INTO $table_support_tickets
+            (
+            project_id,
+            category_id,
+            priority_id,
+            course_id,
+            request_user,
+            personal_email,
+            status_id,
+            start_date,
+            sys_insert_user_id,
+            sys_insert_datetime,
+            sys_lastedit_user_id,
+            sys_lastedit_datetime,
+            source
+        ) VALUES (
+            '$project_id',
+            '$category_id',
+            '$priority',
+            '$course_id',
+            '$request_user',
+            '$personalemail',
+            '$status',
+            '" . $now . "',
+            $user_id,
+            '" . $now . "',
+            '$user_id',
+            '" . $now . "',
+            '$source'
+        )";
+        $result = Database::query($sql_insert_ticket);
+        $ticket_id = Database::insert_id();
+        if ($assigned_user != 0) {
+            self::assign_ticket_user($ticket_id, $assigned_user);
+        }
+        if ($ticket_id != 0) {
+            $ticket_code = "A" . str_pad(
+                    (int)$ticket_id,
+                    11,
+                    "0",
+                    STR_PAD_LEFT
+                );
+            $sql_update_code = "UPDATE $table_support_tickets
+                SET ticket_code = '$ticket_code' WHERE ticket_id = '$ticket_id'";
+            Database::query($sql_update_code);
+            $data_files = array();
+            $sql_update_total = "UPDATE $table_support_category
+                SET total_tickets = total_tickets +1 WHERE category_id = '$category_id';";
+            Database::query($sql_update_total);
+            if (self::insert_message(
+                $ticket_id,
+                $subject,
+                $content,
+                $file_attachments,
+                $request_user
+            )
+            ) {
+                global $data_files;
+                if ($other_area) {
+                    $user = UserManager::get_user_info_by_id($request_user);
+                    $mensaje_helpdesk = '<table>
+                                            <tr>
+                                                <td width="100px"><b>Cliente:</b></td>
+                                                <td width="400px">' . $user['firstname']
+                                                    . ' ' . $user['lastname'] . '</td>
+                                            </tr>
+                                            <tr>
+                                                <td width="100px"><b>Usuario:</b></td>
+                                                <td width="400px">' . $user['username'] . '</td>
+                                            </tr>
+                                            <tr>
+                                                <td width="100px"><b>Fecha:</b></td>
+                                                <td width="400px">' . api_convert_and_format_date(
+                            $now,
+                            DATE_TIME_FORMAT_LONG
+                        ) . '</td>
+                                            </tr>
+                                            <tr>
+                                                <td width="100px"><b>Asunto:</b></td>
+                                                <td width="400px">' . $subject . '</td>
+                                            </tr>
+                                            <tr>
+                                                <td width="100px"><b>Descripci&oacute;n:</b></td>
+                                                <td width="400px">' . $content . '</td>
+                                            </tr>
+                                        </table>';
+                    api_mail_html(
+                        'Soporte virtual',
+                        $email,
+                        "[SOPORTE] Incidente Reenviado de Soporte Virtual",
+                        $mensaje_helpdesk,
+                        $user['firstname'] . ' ' . $user['lastname'],
+                        $personalemail,
+                        array('cc' => 'soportevirtual@usil.edu.pe'),
+                        $data_files
+                    );
+                    $mensaje_alumno = '<p>Su consulta fue reenviada al area responsable : <a href="mailto:' . $email . '">' . $email . '</a></p>';
+                    $mensaje_alumno .= '<p>La respuesta a su consulta ser&aacute; enviada al correo  : <a href="#">' . $personalemail . '</a></p>';
+                    self::insert_message(
+                        $ticket_id,
+                        "Mensaje Reenviado",
+                        $mensaje_alumno,
+                        null,
+                        1
+                    );
+                }
+
+                return true;
+            } else {
+
+                return false;
+            }
+        } else {
+
+            return false;
+        }
+    }
+
+    public static function assign_ticket_user($ticket_id, $user_id)
+    {
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $table_support_assigned_log = Database::get_main_table(
+            TABLE_SUPPORT_ASSIGNED_LOG
+        );
+        $now = api_get_utc_datetime();
+        $sql_update = "UPDATE $table_support_tickets
+            SET  assigned_last_user = '$user_id'  WHERE ticket_id = '$ticket_id' ";
+        Database::query($sql_update);
+        if (Database::affected_rows() > 0) {
+            $insert_id = api_get_user_id();
+            $sql = "INSERT INTO $table_support_assigned_log (
+                ticket_id,
+                user_id,
+                assigned_date,
+                sys_insert_user_id
+            ) VALUES (
+                '$ticket_id',
+                '$user_id',
+                '$now',
+                '$insert_id'
+            );";
+            Database::query($sql);
+            if ($insert_id != $user_id) {
+                $info = api_get_user_info($user_id);
+                $mensaje = '<p>Estimado(a):</p><p>' . $info['firstname'] . " " . $info['lastname'] . "</p>
+							<p>Te asignaron el ticket $ticket_id " . '<a href="' . api_get_path(
+                        WEB_PLUGIN_PATH
+                    ) . PLUGIN_NAME . '/s/ticket_details.php?ticket_id=' . $ticket_id . '">Ticket</a></p>
+							<p>Centro de Educaci&oacute;n Virtual</p>';
+                api_mail_html(
+                    $info['firstname'] . " " . $info['lastname'],
+                    $info['mail'],
+                    "[TICKETS] Asignacion de Ticket #$ticket_id ",
+                    $mensaje,
+                    'Plataforma Virtual',
+                    'plataformavirtual@usil.edu.pe',
+                    array('cc' => 'plataformavirtual@usil.edu.pe')
+                );
+            }
+        }
+    }
+
+    public static function insert_message(
+        $ticket_id,
+        $subject,
+        $content,
+        $file_attachments,
+        $user_id,
+        $status = 'NOL',
+        $envioconfirmacion = false
+    ) {
+        global $data_files;
+        $table_support_messages = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE
+        );
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $table_support_message_attachments = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE_ATTACHMENTS
+        );
+        if ($envioconfirmacion) {
+            $formulario = '<form action="ticket_details.php?ticket_id=' . $ticket_id . '" id="confirmticket" method="POST" >
+							<p>Esta respuesta le result&oacute; satisfactoria</p>
+							<input id="respuestasi" type="submit" value="si" name="respuesta" />
+							<input id="respuestano" type="submit" value="no" name="respuesta" />
+						   </form>';
+            $content .= $formulario;
+            Database::query(
+                "UPDATE $table_support_tickets SET status_id='XCF' WHERE ticket_id = '$ticket_id'"
+            );
+        }
+        $sql_message_id = "SELECT COUNT(*) as total_messages FROM $table_support_messages
+            WHERE ticket_id ='$ticket_id'";
+        $result = Database::query($sql_message_id);
+        $obj = Database::fetch_object($result);
+        $message_id = $obj->total_messages + 1;
+        $now = api_get_utc_datetime();
+        $sql_insert_message = "INSERT INTO $table_support_messages (
+            ticket_id,message_id,subject, message,ip_address,sys_insert_user_id,sys_insert_datetime,sys_lastedit_user_id,sys_lastedit_datetime,status
+        ) VALUES (
+            '$ticket_id','$message_id','$subject','$content','" . Database::escape_string($_SERVER['REMOTE_ADDR']) . "','$user_id','" . $now . "','$user_id','" . $now . "','$status'
+        )";
+        Database::query($sql_insert_message);
+        $sql_update_total_message = "UPDATE $table_support_tickets
+            SET sys_lastedit_user_id ='$user_id',
+                sys_lastedit_datetime ='$now',
+                total_messages = (
+                    SELECT COUNT(*) as total_messages
+                      FROM $table_support_messages
+                      WHERE ticket_id ='$ticket_id'
+                ) WHERE ticket_id ='$ticket_id' ";
+        Database::query($sql_update_total_message);
+        $sql_message_att_id = "SELECT COUNT(*) as total_attach
+            FROM $table_support_message_attachments
+            WHERE ticket_id ='$ticket_id' AND message_id = '$message_id'";
+        $result = Database::query($sql_message_att_id);
+        $obj = Database::fetch_object($result);
+        $message_attch_id = $obj->total_attach + 1;
+        if (is_array($file_attachments)) {
+            foreach ($file_attachments as $file_attach) {
+                if ($file_attach['error'] == 0) {
+                    $data_files[] = self::save_message_attachment_file(
+                        $file_attach,
+                        $ticket_id,
+                        $message_id,
+                        $message_attch_id
+                    );
+                    $message_attch_id++;
+                } else {
+                    if ($file_attach['error'] != UPLOAD_ERR_NO_FILE) {
+                        return false;
+                    }
+                }
+            }
+        }
+        return true;
+    }
+
+    public static function save_message_attachment_file(
+        $file_attach,
+        $ticket_id,
+        $message_id,
+        $message_attch_id
+    ) {
+        $now = api_get_utc_datetime();
+        $user_id = api_get_user_id();
+        $new_file_name = add_ext_on_mime(
+            stripslashes($file_attach['name']),
+            $file_attach['type']
+        );
+        $file_name = $file_attach['name'];
+        $table_support_message_attachments = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE_ATTACHMENTS
+        );
+        if (!filter_extension($new_file_name)) {
+            Display :: display_error_message(
+                get_lang('UplUnableToSaveFileFilteredExtension')
+            );
+        } else {
+            $new_file_name = uniqid('');
+            $path_attachment = api_get_path(SYS_PATH);
+            $path_message_attach = $path_attachment . 'tck_messageattch/';
+            if (!file_exists($path_message_attach)) {
+                @mkdir(
+                    $path_message_attach,
+                    api_get_permissions_for_new_directories(),
+                    true
+                );
+            }
+            $new_path = $path_message_attach . $new_file_name;
+            if (is_uploaded_file($file_attach['tmp_name'])) {
+                $result = @copy($file_attach['tmp_name'], $new_path);
+            }
+            $safe_file_name = Database::escape_string($file_name);
+            $safe_new_file_name = Database::escape_string($new_file_name);
+            $sql = "INSERT INTO $table_support_message_attachments (
+                    filename,
+                    path,
+                    ticket_id,
+                    message_id,
+                    message_attch_id,
+                    size,
+                    sys_insert_user_id,
+                    sys_insert_datetime,
+                    sys_lastedit_user_id,
+                    sys_lastedit_datetime
+                ) VALUES (
+                    '$safe_file_name',
+                    '$safe_new_file_name',
+                    '$ticket_id',
+                    '$message_id',
+                    '$message_attch_id',
+                    '" . $file_attach['size'] . "',
+                    '$user_id',
+                    '$now',
+                    '$user_id',
+                    '$now'
+                )";
+            $result = Database::query($sql);
+            return array(
+                'path' => $path_message_attach . $safe_new_file_name,
+                'filename' => $safe_file_name
+            );
+        }
+    }
+
+    public static function get_tickets_by_user_id(
+        $from,
+        $number_of_items,
+        $column,
+        $direction,
+        $user_id = null
+    ) {
+        $table_support_category = Database::get_main_table(
+            TABLE_SUPPORT_CATEGORY
+        );
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $table_support_priority = Database::get_main_table(
+            TABLE_SUPPORT_PRIORITY
+        );
+        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
+        $table_support_messages = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE
+        );
+        $table_main_user = Database::get_main_table(TABLE_MAIN_USER);
+        $table_main_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
+        if (is_null($direction)) {
+            $direction = "DESC";
+        }
+        if (is_null($user_id) || $user_id == 0) {
+            $user_id = api_get_user_id();
+        }
+
+        $isAdmin = UserManager::is_admin($user_id);
+        $sql = "SELECT ticket.*,
+                ticket.ticket_id AS col0,
+                ticket.start_date AS col1,
+                ticket.sys_lastedit_datetime AS col2,
+                cat.name AS col3,
+                user.username AS col4,
+                priority.priority AS col5,
+                priority.priority  AS col6,
+                status.name AS col7,
+                ticket.total_messages AS col8,
+                msg.message AS col9,
+                ticket.request_user AS user_id,
+                ticket.assigned_last_user AS responsable
+            FROM $table_support_tickets ticket,
+                $table_support_category cat,
+                $table_support_priority priority,
+                $table_support_status status,
+                " . Database::get_main_table(TABLE_MAIN_USER) . " user,
+                tck_message msg
+            WHERE cat.category_id = ticket.category_id
+                AND ticket.priority_id = priority.priority_id
+                AND ticket.status_id = status.status_id
+                AND user.user_id = ticket.request_user
+                AND ticket.ticket_id= msg.ticket_id AND message_id=1 ";
+        if (!$isAdmin) {
+            $sql .= " AND request_user = '$user_id' ";
+        }
+        $keyword_unread = Database::escape_string(
+            trim($_GET['keyword_unread'])
+        );
+        //Search simple
+        if (isset($_GET['submit_simple'])) {
+            if ($_GET['keyword'] != '') {
+                $keyword = Database::escape_string(trim($_GET['keyword']));
+                $sql .= " AND (ticket.ticket_code = '$keyword'
+                                OR ticket.ticket_id = '$keyword'
+                                OR user.firstname LIKE '%$keyword%'
+                                OR user.lastname LIKE '%$keyword%'
+                                OR concat(user.firstname,' ',user.lastname) LIKE '%$keyword%'
+                                OR concat(user.lastname,' ',user.firstname) LIKE '%$keyword%'
+                                OR user.username LIKE '%$keyword%')";
+            }
+        }
+        //Search advanced
+        if (isset($_GET['submit_advanced'])) {
+            $keyword_category = Database::escape_string(
+                trim($_GET['keyword_category'])
+            );
+            $keyword_request_user = Database::escape_string(
+                trim($_GET['keyword_request_user'])
+            );
+            $keyword_admin = Database::escape_string(
+                trim($_GET['keyword_admin'])
+            );
+            $keyword_start_date_start = Database::escape_string(
+                trim($_GET['keyword_start_date_start'])
+            );
+            $keyword_start_date_end = Database::escape_string(
+                trim($_GET['keyword_start_date_end'])
+            );
+            $keyword_status = Database::escape_string(
+                trim($_GET['keyword_status'])
+            );
+            $keyword_source = Database::escape_string(
+                trim($_GET['keyword_source'])
+            );
+            $keyword_priority = Database::escape_string(
+                trim($_GET['keyword_priority'])
+            );
+            $keyword_range = Database::escape_string(
+                trim($_GET['keyword_dates'])
+            );
+            $keyword_course = Database::escape_string(
+                trim($_GET['keyword_course'])
+            );
+
+            if ($keyword_category != '') {
+                $sql .= " AND ticket.category_id = '$keyword_category'  ";
+            }
+            if ($keyword_request_user != '') {
+                $sql .= " AND (ticket.request_user = '$keyword_request_user' OR user.firstname LIKE '%" . $keyword_request_user . "%' OR user.official_code LIKE '%" . $keyword_request_user . "%' OR user.lastname LIKE '%" . $keyword_request_user . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword_request_user . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword_request_user . "%' OR user.username LIKE '%" . $keyword_request_user . "%') ";
+            }
+            if ($keyword_admin != '') {
+                $sql .= " AND ticket.assigned_last_user = '$keyword_admin'  ";
+            }
+            if ($keyword_status != '') {
+                $sql .= " AND ticket.status_id = '$keyword_status'  ";
+            }
+            if ($keyword_range == '' && $keyword_start_date_start != '') {
+                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') = '$keyword_start_date_start' ";
+            }
+            if ($keyword_range == '1' && $keyword_start_date_start != '' && $keyword_start_date_end != '') {
+                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') >= '$keyword_start_date_start'
+                        AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') <= '$keyword_start_date_end'";
+            }
+            if ($keyword_priority != '') {
+                $sql .= " AND ticket.priority_id = '$keyword_priority'  ";
+            }
+            if ($keyword_source != '') {
+                $sql .= " AND ticket.source = '$keyword_source' ";
+            }
+            if ($keyword_priority != '') {
+                $sql .= " AND ticket.priority_id = '$keyword_priority' ";
+            }
+            if ($keyword_course != '') {
+                $course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
+                $sql .= " AND ticket.course_id IN ( ";
+                $sql .= "SELECT id FROM $course_table
+                    WHERE (title LIKE '%$keyword_course%'
+                        OR code LIKE '%$keyword_course%'
+                        OR visual_code LIKE '%$keyword_course%'
+                    )
+                )";
+            }
+
+        }
+        if ($keyword_unread == 'yes') {
+            $sql .= " AND ticket.ticket_id IN (SELECT ticket.ticket_id
+                FROM $table_support_tickets ticket,
+                    $table_support_messages message,
+                    $table_main_user user
+                WHERE ticket.ticket_id = message.ticket_id
+                    AND message.status = 'NOL'
+                    AND message.sys_insert_user_id = user.user_id
+                    AND user.user_id NOT IN (SELECT user_id FROM $table_main_admin)
+                    AND ticket.status_id != 'REE'
+                GROUP BY ticket.ticket_id)";
+        } else {
+            if ($keyword_unread == 'no') {
+                $sql .= " AND ticket.ticket_id NOT IN (SELECT ticket.ticket_id
+                    FROM $table_support_tickets ticket,
+                        $table_support_messages message,
+                        $table_main_user user
+                    WHERE ticket.ticket_id = message.ticket_id
+                        AND message.status = 'NOL'
+                        AND message.sys_insert_user_id = user.user_id
+                        AND user.user_id NOT IN (
+                            SELECT user_id FROM $table_main_admin
+                            )
+                        AND ticket.status_id != 'REE'
+                    GROUP BY ticket.ticket_id)";
+            }
+        }
+        $sql .= " ORDER BY col$column $direction";
+        $sql .= " LIMIT $from,$number_of_items";
+        $result = Database::query($sql);
+        $tickets = array();
+
+        while ($row = Database::fetch_assoc($result)) {
+            $sql_unread = "SELECT COUNT(DISTINCT message.message_id) AS unread FROM " . $table_support_tickets . "  ticket, " . $table_support_messages . " message, " . $table_main_user . " user
+ 			WHERE ticket.ticket_id = message.ticket_id AND ticket.ticket_id= '" . $row['col0'] . "' AND message.status='NOL' AND message.sys_insert_user_id = user.user_id ";
+            if ($isAdmin) {
+                $sql_unread .= " AND user.user_id  NOT IN (SELECT user_id FROM $table_main_admin)   AND ticket.status_id != 'REE' ";
+            } else {
+                $sql_unread .= " AND user.user_id IN (SELECT user_id FROM $table_main_admin)   ";
+            }
+            $result_unread = Database::query($sql_unread);
+            $unread = Database::fetch_object($result_unread)->unread;
+            $userInfo = UserManager::get_user_info_by_id($row['user_id']);
+            $name = '<a href="' . api_get_path(
+                    WEB_PATH
+                ) . 'main/admin/user_information.php?user_id=' . $row['user_id'] . '">' . api_get_person_name(
+                    $userInfo['firstname'],
+                    $userInfo['lastname']
+                ) . '</a>';
+            $actions = "";
+            /*if($row['status_id']!='CLS' && $row['status_id']!='REE'){
+                if( $row['responsable'] != 0 && $row['responsable'] == $user_id ){
+                    $actions = '<a href="myticket.php?ticket_id='.$row['ticket_id'].'&amp;action=unassign" title="desasignarme"><img src="../../../main/img/admin_star.png" border="0" /></a>';
+                }else{
+                    $actions = '<a href="myticket.php?ticket_id='.$row['ticket_id'].'&amp;action=assign" title="asignarme"><img src="../../../main/img/admin_star_na.png" border="0" /></a>';
+                }
+            }*/
+            if ($row['responsable'] != 0) {
+                $row['responsable'] = api_get_user_info($row['responsable']);
+                $row['responsable'] = '<a href="' . api_get_path(
+                        WEB_PATH
+                    ) . 'main/admin/user_information.php?user_id=' . $row['responsable']['user_id'] . '">' . $row['responsable']['firstname'] . ' ' . $row['responsable']['lastname'] . '</a>';
+            } else {
+                if ($row['status_id'] != 'REE') {
+                    $row['responsable'] = '<span style="color:#ff0000;">Por Asignar</span>';
+                } else {
+                    $row['responsable'] = '<span style="color:#00ff00;">REENVIADO</span>';
+                }
+            }
+            switch ($row['source']) {
+                case 'PRE':
+                    $img_source = '../img/icons/32/user.png';
+                    break;
+                case 'MAI':
+                    $img_source = '../img/icons/32/mail.png';
+                    break;
+                case 'TEL':
+                    $img_source = '../img/icons/32/event.png';
+                    break;
+                default:
+                    $img_source = '../img/icons/32/course_home.png';
+                    break;
+            }
+            $row['col1'] = api_get_local_time($row['col1']);
+            $row['col2'] = api_get_local_time($row['col2']);
+            if ($isAdmin) {
+                $actions .= '<a href="ticket_details.php?ticket_id=' . $row['col0'] . '">' . Display::return_icon(
+                        'synthese_view.gif',
+                        get_lang('Info')
+                    ) . '</a>&nbsp;&nbsp;';
+                if ($row['priority_id'] == 'ALT' && $row['status_id'] != 'CLS') {
+                    $actions .= '<img src="../../../main/img/exclamation.png" border="0" />';
+                }
+                $row['col0'] = Display::return_icon(
+                        $img_source,
+                        get_lang('Info')
+                    ) . '<a href="ticket_details.php?ticket_id=' . $row['col0'] . '">' . $row['ticket_code'] . '</a>';
+                if ($row['col7'] == 'PENDIENTE') {
+                    $row['col7'] = '<span style="color: #f00; font-weight:bold;">' . $row['col7'] . '</span>';
+                }
+                //programa: $userInfo['extra']['programa']
+                $ticket = array(
+                    $row['col0'],
+                    api_format_date($row['col1'], '%d/%m/%y - %I:%M:%S %p'),
+                    api_format_date($row['col2'], '%d/%m/%y - %I:%M:%S %p'),
+                    $row['col3'],
+                    $name,
+                    $row['responsable'],
+                    $row['col7'],
+                    $row['col8'],
+                    $actions,
+                    eregi_replace(
+                        "[\n|\r|\n\r|\r\n]",
+                        ' ',
+                        strip_tags($row['col9'])
+                    )
+                );
+            } else {
+                $actions = "";
+                $actions .= '<a href="ticket_details.php?ticket_id=' . $row['col0'] . '">' . Display::return_icon(
+                        'synthese_view.gif',
+                        get_lang('Info')
+                    ) . '</a>&nbsp;&nbsp;';
+                $row['col0'] = Display::return_icon(
+                        $img_source,
+                        get_lang('Info')
+                    ) . '<a href="ticket_details.php?ticket_id=' . $row['col0'] . '">' . $row['ticket_code'] . '</a>';
+                $now = api_strtotime(api_get_utc_datetime());
+                $last_edit_date = api_strtotime($row['sys_lastedit_datetime']);
+                $dif = $now - $last_edit_date;
+
+                if ($dif > 172800 && $row['priority_id'] == 'NRM' && $row['status_id'] != 'CLS') {
+                    $actions .= '<a href="myticket.php?ticket_id=' . $row['ticket_id'] . '&amp;action=alert"><img src="../../../main/img/exclamation.png" border="0" /></a>';
+                }
+                if ($row['priority_id'] == 'ALT') {
+                    $actions .= '<img src="../../../main/img/admin_star.png" border="0" />';
+                }
+                $ticket = array(
+                    $row['col0'],
+                    api_format_date($row['col1'], '%d/%m/%y - %I:%M:%S %p'),
+                    api_format_date($row['col2'], '%d/%m/%y - %I:%M:%S %p'),
+                    $row['col3'],
+                    $row['col7'],
+                    $actions
+                );
+            }
+            if ($unread > 0) {
+
+                $ticket['0'] = $ticket['0'] . '&nbsp;&nbsp;(' . $unread . ')<a href="ticket_details.php?ticket_id=' . $row['ticket_id'] . '"><img src="../../../main/img/message_new.png" border="0" title="' . $unread . ' Nuevo(s) Mensajes"/></a>';
+
+            }
+            if ($isAdmin) {
+                $ticket['0'] .= '&nbsp;&nbsp;<a  href="javascript:void(0)" onclick="load_history_ticket(\'div_' . $row['ticket_id'] . '\',' . $row['ticket_id'] . ')">
+					<img onclick="load_course_list(\'div_' . $row['ticket_id'] . '\',' . $row['ticket_id'] . ')" onmouseover="clear_course_list (\'div_' . $row['ticket_id'] . '\')" src="../../../main/img/history.gif" title="' . get_lang(
+                        'Historial'
+                    ) . '" alt="' . get_lang('Historial') . '"/>
+					<div class="blackboard_hide" id="div_' . $row['ticket_id'] . '">&nbsp;&nbsp;</div>
+					</a>&nbsp;&nbsp;';
+            }
+            $tickets[] = $ticket;
+        }
+        return $tickets;
+    }
+
+    public static function get_total_tickets_by_user_id($user_id = null)
+    {
+        $table_support_category = Database::get_main_table(
+            TABLE_SUPPORT_CATEGORY
+        );
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $table_support_priority = Database::get_main_table(
+            TABLE_SUPPORT_PRIORITY
+        );
+        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
+        $table_support_messages = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE
+        );
+        $table_main_user = Database::get_main_table(TABLE_MAIN_USER);
+        $table_main_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
+        if (is_null($user_id) || $user_id == 0) {
+            $user_id = api_get_user_id();
+        }
+        $sql = "SELECT COUNT(ticket.ticket_id) AS total	FROM " . $table_support_tickets . " ticket ," . $table_support_category . " cat , " . $table_support_priority . " priority, " . $table_support_status . " status , " . Database::get_main_table(
+                TABLE_MAIN_USER
+            ) . " user
+				WHERE cat.category_id = ticket.category_id AND ticket.priority_id = priority.priority_id AND ticket.status_id = status.status_id  AND user.user_id = ticket.request_user ";
+        if (!api_is_platform_admin()) {
+            $sql .= " AND request_user = '$user_id' ";
+        }
+
+        //Search simple
+        if (isset($_GET['submit_simple'])) {
+            if ($_GET['keyword'] != '') {
+                $keyword = Database::escape_string(trim($_GET['keyword']));
+                $sql .= " AND (ticket.ticket_code = '" . $keyword . "' OR user.firstname LIKE '%" . $keyword . "%' OR user.lastname LIKE '%" . $keyword . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword . "%' OR user.username LIKE '%" . $keyword . "%')  ";
+            }
+        }
+        $keyword_unread = Database::escape_string(
+            trim($_GET['keyword_unread'])
+        );
+        //Search advanced
+        if (isset($_GET['submit_advanced'])) {
+            $keyword_category = Database::escape_string(
+                trim($_GET['keyword_category'])
+            );
+            $keyword_request_user = Database::escape_string(
+                trim($_GET['keyword_request_user'])
+            );
+            $keyword_admin = Database::escape_string(
+                trim($_GET['keyword_admin'])
+            );
+            $keyword_start_date_start = Database::escape_string(
+                trim($_GET['keyword_start_date_start'])
+            );
+            $keyword_start_date_end = Database::escape_string(
+                trim($_GET['keyword_start_date_end'])
+            );
+            $keyword_status = Database::escape_string(
+                trim($_GET['keyword_status'])
+            );
+            $keyword_source = Database::escape_string(
+                trim($_GET['keyword_source'])
+            );
+            $keyword_priority = Database::escape_string(
+                trim($_GET['keyword_priority'])
+            );
+            $keyword_range = Database::escape_string(
+                trim($_GET['keyword_dates'])
+            );
+            $keyword_course = Database::escape_string(
+                trim($_GET['keyword_course'])
+            );
+
+            if ($keyword_category != '') {
+                $sql .= " AND ticket.category_id = '$keyword_category'  ";
+            }
+            if ($keyword_request_user != '') {
+                $sql .= " AND (ticket.request_user = '$keyword_request_user' OR user.firstname LIKE '%" . $keyword_request_user . "%' OR user.official_code LIKE '%" . $keyword_request_user . "%' OR user.lastname LIKE '%" . $keyword_request_user . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword_request_user . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword_request_user . "%' OR user.username LIKE '%" . $keyword_request_user . "%') ";
+            }
+            if ($keyword_admin != '') {
+                $sql .= " AND ticket.assigned_last_user = '$keyword_admin'  ";
+            }
+            if ($keyword_status != '') {
+                $sql .= " AND ticket.status_id = '$keyword_status'  ";
+            }
+            if ($keyword_range == '' && $keyword_start_date_start != '') {
+                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') = '$keyword_start_date_start' ";
+            }
+            if ($keyword_range == '1' && $keyword_start_date_start != '' && $keyword_start_date_end != '') {
+                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') >= '$keyword_start_date_start' AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') <= '$keyword_start_date_end'";
+            }
+            if ($keyword_priority != '') {
+                $sql .= " AND ticket.priority_id = '$keyword_priority'  ";
+            }
+            if ($keyword_source != '') {
+                $sql .= " AND ticket.source = '$keyword_source' ";
+            }
+            if ($keyword_priority != '') {
+                $sql .= " AND ticket.priority_id = '$keyword_priority' ";
+            }
+            if ($keyword_course != '') {
+                $course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
+                $sql .= " AND ticket.course_id IN ( ";
+                $sql .= "SELECT id FROM $course_table WHERE (title LIKE '%" . $keyword_course . "%' OR code LIKE '%" . $keyword_course . "%' OR visual_code LIKE '%" . $keyword_course . "%' )) ";
+            }
+
+        }
+        if ($keyword_unread == 'yes') {
+            $sql .= " AND ticket.ticket_id IN (SELECT ticket.ticket_id FROM  $table_support_tickets ticket,  $table_support_messages message,  $table_main_user user WHERE ticket.ticket_id = message.ticket_id   AND message.status = 'NOL'   AND message.sys_insert_user_id = user.user_id   AND user.user_id NOT IN (SELECT user_id FROM $table_main_admin)    AND ticket.status_id != 'REE'   GROUP BY ticket.ticket_id)";
+        } else {
+            if ($keyword_unread == 'no') {
+                $sql .= " AND ticket.ticket_id NOT IN (SELECT ticket.ticket_id FROM  $table_support_tickets ticket,  $table_support_messages message,  $table_main_user user WHERE ticket.ticket_id = message.ticket_id   AND message.status = 'NOL'   AND message.sys_insert_user_id = user.user_id   AND user.user_id NOT IN (SELECT user_id FROM $table_main_admin)   AND ticket.status_id != 'REE'   GROUP BY ticket.ticket_id)";
+            }
+        }
+        $res = Database::query($sql);
+        $obj = Database::fetch_object($res);
+        return $obj->total;
+    }
+
+    public static function get_ticket_detail_by_id($ticket_id, $user_id)
+    {
+        $table_support_category = Database::get_main_table(
+            TABLE_SUPPORT_CATEGORY
+        );
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $table_support_priority = Database::get_main_table(
+            TABLE_SUPPORT_PRIORITY
+        );
+        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
+        $table_support_messages = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE
+        );
+        $table_support_message_attachments = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE_ATTACHMENTS
+        );
+
+        $sql = "SELECT ticket.* ,cat.name , status.name as status, priority.priority FROM " . $table_support_tickets . " ticket, " . $table_support_category . " cat ," . $table_support_priority . " priority , " . $table_support_status . " status
+		WHERE ticket.ticket_id = '$ticket_id' AND cat.category_id = ticket.category_id AND priority.priority_id = ticket.priority_id AND status.status_id = ticket.status_id  ";
+        if (!UserManager::is_admin($user_id)) {
+            $sql .= "AND ticket.request_user = '$user_id'";
+        }
+        $result = Database::query($sql);
+        $ticket = array();
+        if (Database::num_rows($result) > 0) {
+            while ($row = Database::fetch_assoc($result)) {
+                $row['course'] = null;
+                $row['start_date'] = api_convert_and_format_date(
+                    api_get_local_time($row['start_date']),
+                    DATE_TIME_FORMAT_LONG,
+                    _api_get_timezone()
+                );
+                $row['end_date'] = api_convert_and_format_date(
+                    api_get_local_time($row['end_date']),
+                    DATE_TIME_FORMAT_LONG,
+                    _api_get_timezone()
+                );
+                $row['sys_lastedit_datetime'] = api_convert_and_format_date(
+                    api_get_local_time($row['sys_lastedit_datetime']),
+                    DATE_TIME_FORMAT_LONG,
+                    _api_get_timezone()
+                );
+                $row['course_url'] = null;
+                if ($row['course_id'] != 0) {
+                    $course = api_get_course_info_by_id($row['course_id']);
+                    $row['course_url'] = '<a href="' . api_get_path(
+                            WEB_COURSE_PATH
+                        ) . $course['path'] . '">' . $course['name'] . '</a>';
+                }
+                $userInfo = api_get_user_info($row['request_user']);
+                $row['user_url'] = '<a href="' . api_get_path(
+                        WEB_PATH
+                    ) . 'main/admin/user_information.php?user_id=' . $row['request_user'] . '">' . api_get_person_name(
+                        $userInfo['firstname'],
+                        $userInfo['lastname']
+                    ) . '</a>';
+                $ticket['usuario'] = $userInfo;
+                $ticket['ticket'] = $row;
+            }
+            $sql = "SELECT  * FROM " . $table_support_messages . " message, " . Database::get_main_table(
+                    TABLE_MAIN_USER
+                ) . " user  WHERE message.ticket_id = '$ticket_id' AND message.sys_insert_user_id = user.user_id ";
+            $result = Database::query($sql);
+            $ticket['messages'] = array();
+            $attach_icon = Display::return_icon('attachment.gif', '');
+            $admin_table = Database::get_main_table(TABLE_MAIN_ADMIN);
+            while ($row = Database::fetch_assoc($result)) {
+                $message = $row;
+                //Check if user is an admin
+                $sql_admin = "SELECT user_id FROM $admin_table
+				WHERE user_id = '" . intval($message['user_id']) . "' LIMIT 1";
+                $result_admin = Database::query($sql_admin);
+                $message['admin'] = false;
+                if (Database::num_rows($result_admin) > 0) {
+                    $message['admin'] = true;
+                }
+                $message['user_created'] = '<a href="' . api_get_path(
+                        WEB_PATH
+                    ) . 'main/admin/user_information.php?user_id=' . $row['user_id'] . '">' . $row['firstname'] . ' ' . $row['lastname'] . '</a>';
+                $sql_atachment = "SELECT * FROM " . TABLE_SUPPORT_MESSAGE_ATTACHMENTS . " WHERE message_id = " . $row['message_id'] . " AND ticket_id= '$ticket_id'  ";
+                $result_attach = Database::query($sql_atachment);
+                while ($row2 = Database::fetch_assoc($result_attach)) {
+                    $archiveURL = $archiveURL = api_get_path(
+                            WEB_PLUGIN_PATH
+                        ) . PLUGIN_NAME . '/s/download.php?ticket_id=' . $ticket_id . '&file=';
+                    $row2['attachment_link'] = $attach_icon . '&nbsp;<a href="' . $archiveURL . $row2['path'] . '&title=' . $row2['filename'] . '">' . $row2['filename'] . '</a>&nbsp;(' . $row2['size'] . ')';
+                    $message['atachments'][] = $row2;
+                }
+                $ticket['messages'][] = $message;
+            }
+        }
+        return $ticket;
+    }
+
+    public static function update_message_status($ticket_id, $user_id)
+    {
+        $table_support_messages = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE
+        );
+        $now = api_get_utc_datetime();
+        $sql = "UPDATE " . $table_support_messages . " SET status = 'LEI' , sys_lastedit_user_id ='" . api_get_user_id(
+            ) . "' ,sys_lastedit_datetime ='" . $now . "' WHERE ticket_id ='$ticket_id' ";
+
+        if (api_is_platform_admin()) {
+            $sql .= " AND sys_insert_user_id = '$user_id'";
+        } else {
+
+            $sql .= " AND sys_insert_user_id != '$user_id'";
+        }
+        Database::query($sql);
+        if (Database::affected_rows() > 0) {
+            Database::query(
+                "UPDATE " . Database::get_main_table(TABLE_SUPPORT_TICKET) . " SET status_id = 'PND'  WHERE ticket_id ='$ticket_id' AND status_id = 'NAT'"
+            );
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public static function update_ticket_status(
+        $status_id,
+        $ticket_id,
+        $user_id
+    ) {
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $table_support_messages = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE
+        );
+        $now = api_get_utc_datetime();
+        $sql = "UPDATE " . $table_support_tickets . " SET status_id = '$status_id' , sys_lastedit_user_id ='$user_id' ,sys_lastedit_datetime ='" . $now . "'  WHERE ticket_id ='$ticket_id'";
+        Database::query($sql);
+        if (Database::affected_rows() > 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public static function get_number_of_messages()
+    {
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $table_support_messages = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE
+        );
+        $table_main_user = Database::get_main_table(TABLE_MAIN_USER);
+        $table_main_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
+        $user_info = api_get_user_info();
+        $user_id = $user_info['user_id'];
+        $sql = "SELECT COUNT( DISTINCT ticket.ticket_id) AS unread  FROM " . $table_support_tickets . " ticket, " . $table_support_messages . " message , " . $table_main_user . " user WHERE ticket.ticket_id = message.ticket_id AND message.status = 'NOL'    AND user.user_id = message.sys_insert_user_id ";
+        if (!api_is_platform_admin()) {
+            $sql .= " AND ticket.request_user = '$user_id'  AND user_id IN (SELECT user_id FROM $table_main_admin)  ";
+        } else {
+            $sql .= " AND user_id NOT IN (SELECT user_id FROM $table_main_admin) AND ticket.status_id != 'REE'";
+        }
+        $sql .= "  AND ticket.project_id != '' ";
+        $res = Database::query($sql);
+        $obj = Database::fetch_object($res);
+        return $obj->unread;
+
+    }
+
+    public static function send_alert($ticket_id, $user_id)
+    {
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $now = api_get_utc_datetime();
+        $sql = "UPDATE " . $table_support_tickets . " SET priority_id = 'ALT', sys_lastedit_user_id ='$user_id' ,sys_lastedit_datetime ='" . $now . "' WHERE ticket_id = '$ticket_id'";
+        Database::query($sql);
+    }
+
+    public static function close_ticket($ticket_id, $user_id)
+    {
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $now = api_get_utc_datetime();
+        $sql = "UPDATE " . $table_support_tickets . " SET status_id = 'CLS' , sys_lastedit_user_id ='$user_id' ,sys_lastedit_datetime ='" . $now . "' ,end_date ='" . $now . "' WHERE ticket_id ='$ticket_id'";
+        Database::query($sql);
+    }
+
+    public static function close_old_tickets()
+    {
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $now = api_get_utc_datetime();
+        $sql = "UPDATE " . $table_support_tickets . " SET status_id = 'CLS' , sys_lastedit_user_id ='" . api_get_user_id(
+            ) . "' ,sys_lastedit_datetime ='" . $now . "',end_date ='" . $now . "' WHERE DATEDIFF('$now',sys_lastedit_datetime) > 7 AND status_id != 'CLS' AND status_id != 'NAT' AND status_id != 'REE'";
+        Database::query($sql);
+    }
+
+    public static function get_assign_log($ticket_id)
+    {
+        $table_support_assigned_log = Database::get_main_table(
+            TABLE_SUPPORT_ASSIGNED_LOG
+        );
+        $sql = "SELECT log.* FROM " . TABLE_SUPPORT_ASSIGNED_LOG . " log  WHERE log.ticket_id = '$ticket_id' ORDER BY log.assigned_date";
+        $result = Database::query($sql);
+        $history = array();
+        while ($row = Database::fetch_assoc($result)) {
+            if ($row['user_id'] != 0) {
+                $assignuser = api_get_user_info(
+                    $row['user_id']
+                );
+            }
+            $insertuser = api_get_user_info($row['sys_insert_user_id']);
+            $row['assigned_date'] = api_convert_and_format_date(
+                api_get_local_time($row['assigned_date']),
+                '%d/%m/%y-%H:%M:%S',
+                _api_get_timezone()
+            );
+            $row['assignuser'] = ($row['user_id'] != 0) ? ('<a href="' . api_get_path(
+                    WEB_PATH
+                ) . 'main/admin/user_information.php?user_id=' . $row['user_id'] . '"  target="_blank">' . $assignuser['username'] . '</a>') : get_lang(
+                'Unassign'
+            );
+            $row['insertuser'] = '<a href="' . api_get_path(
+                    WEB_PATH
+                ) . 'main/admin/user_information.php?user_id=' . $row['sys_insert_user_id'] . '"  target="_blank">' . $insertuser['username'] . '</a>';
+            $history[] = $row;
+        }
+        return $history;
+    }
+
+    public static function export_tickets_by_user_id(
+        $from,
+        $number_of_items,
+        $column,
+        $direction,
+        $user_id = null
+    ) {
+        $table_support_category = Database::get_main_table(
+            TABLE_SUPPORT_CATEGORY
+        );
+        $table_support_tickets = Database::get_main_table(TABLE_SUPPORT_TICKET);
+        $table_support_priority = Database::get_main_table(
+            TABLE_SUPPORT_PRIORITY
+        );
+        $table_support_status = Database::get_main_table(TABLE_SUPPORT_STATUS);
+        $table_support_messages = Database::get_main_table(
+            TABLE_SUPPORT_MESSAGE
+        );
+        $table_main_user = Database::get_main_table(TABLE_MAIN_USER);
+        if (is_null($direction)) {
+            $direction = "DESC";
+        }
+        if (is_null($user_id) || $user_id == 0) {
+            $user_id = api_get_user_id();
+        }
+
+        $sql = "SELECT ticket.ticket_code, ticket.sys_insert_datetime , ticket.sys_lastedit_datetime , cat.name as category , CONCAT(user.lastname,' ', user.firstname) AS fullname , status.name as status , ticket.total_messages as messages , ticket.assigned_last_user as responsable
+				FROM " . $table_support_tickets . " ticket ," . $table_support_category . " cat , " . $table_support_priority . " priority, " . $table_support_status . " status , " . Database::get_main_table(
+                TABLE_MAIN_USER
+            ) . " user
+				WHERE cat.category_id = ticket.category_id AND ticket.priority_id = priority.priority_id AND ticket.status_id = status.status_id  AND user.user_id = ticket.request_user ";
+        //Search simple
+        if (isset($_GET['submit_simple'])) {
+            if ($_GET['keyword'] != '') {
+                $keyword = Database::escape_string(trim($_GET['keyword']));
+                $sql .= " AND (ticket.ticket_code = '" . $keyword . "' OR user.firstname LIKE '%" . $keyword . "%' OR user.lastname LIKE '%" . $keyword . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword . "%' OR user.username LIKE '%" . $keyword . "%')  ";
+            }
+        }
+        //Search advanced
+        if (isset($_GET['submit_advanced'])) {
+            $keyword_category = Database::escape_string(
+                trim($_GET['keyword_category'])
+            );
+            $keyword_request_user = Database::escape_string(
+                trim($_GET['keyword_request_user'])
+            );
+            $keyword_admin = Database::escape_string(
+                trim($_GET['keyword_admin'])
+            );
+            $keyword_start_date_start = Database::escape_string(
+                trim($_GET['keyword_start_date_start'])
+            );
+            $keyword_start_date_end = Database::escape_string(
+                trim($_GET['keyword_start_date_end'])
+            );
+            $keyword_status = Database::escape_string(
+                trim($_GET['keyword_status'])
+            );
+            $keyword_source = Database::escape_string(
+                trim($_GET['keyword_source'])
+            );
+            $keyword_priority = Database::escape_string(
+                trim($_GET['keyword_priority'])
+            );
+            $keyword_range = Database::escape_string(
+                trim($_GET['keyword_dates'])
+            );
+            $keyword_unread = Database::escape_string(
+                trim($_GET['keyword_unread'])
+            );
+            $keyword_course = Database::escape_string(
+                trim($_GET['keyword_course'])
+            );
+
+            if ($keyword_category != '') {
+                $sql .= " AND ticket.category_id = '$keyword_category'  ";
+            }
+            if ($keyword_request_user != '') {
+                $sql .= " AND (ticket.request_user = '$keyword_request_user' OR user.firstname LIKE '%" . $keyword_request_user . "%' OR user.official_code LIKE '%" . $keyword_request_user . "%' OR user.lastname LIKE '%" . $keyword_request_user . "%'  OR concat(user.firstname,' ',user.lastname) LIKE '%" . $keyword_request_user . "%'  OR concat(user.lastname,' ',user.firstname) LIKE '%" . $keyword_request_user . "%' OR user.username LIKE '%" . $keyword_request_user . "%') ";
+            }
+            if ($keyword_admin != '') {
+                $sql .= " AND ticket.assigned_last_user = '$keyword_admin'  ";
+            }
+            if ($keyword_status != '') {
+                $sql .= " AND ticket.status_id = '$keyword_status'  ";
+            }
+            if ($keyword_range == '' && $keyword_start_date_start != '') {
+                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') = '$keyword_start_date_start' ";
+            }
+            if ($keyword_range == '1' && $keyword_start_date_start != '' && $keyword_start_date_end != '') {
+                $sql .= " AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') >= '$keyword_start_date_start' AND DATE_FORMAT( ticket.start_date,'%d/%m/%Y') <= '$keyword_start_date_end'";
+            }
+            if ($keyword_priority != '') {
+                $sql .= " AND ticket.priority_id = '$keyword_priority'  ";
+            }
+            if ($keyword_source != '') {
+                $sql .= " AND ticket.source = '$keyword_source' ";
+            }
+            if ($keyword_priority != '') {
+                $sql .= " AND ticket.priority_id = '$keyword_priority' ";
+            }
+            if ($keyword_course != '') {
+                $course_table = Database :: get_main_table(TABLE_MAIN_COURSE);
+                $sql .= " AND ticket.course_id IN ( ";
+                $sql .= "SELECT id FROM $course_table WHERE (title LIKE '%" . $keyword_course . "%' OR code LIKE '%" . $keyword_course . "%' OR visual_code LIKE '%" . $keyword_course . "%' )) ";
+            }
+            if ($keyword_unread == 'yes') {
+                $sql .= " AND ticket.ticket_id IN (SELECT ticket.ticket_id FROM  $table_support_tickets ticket,  $table_support_messages message,  $table_main_user user WHERE ticket.ticket_id = message.ticket_id   AND message.status = 'NOL'   AND message.sys_insert_user_id = user.user_id   AND user.status != 1   AND ticket.status_id != 'REE'   GROUP BY ticket.ticket_id)";
+            } else {
+                if ($keyword_unread == 'no') {
+                    $sql .= " AND ticket.ticket_id NOT IN (SELECT ticket.ticket_id FROM  $table_support_tickets ticket,  $table_support_messages message,  $table_main_user user WHERE ticket.ticket_id = message.ticket_id   AND message.status = 'NOL'   AND message.sys_insert_user_id = user.user_id   AND user.status != 1   AND ticket.status_id != 'REE'   GROUP BY ticket.ticket_id)";
+                }
+            }
+
+        }
+
+
+        //$sql .= " ORDER BY col$column $direction";
+        $sql .= " LIMIT $from,$number_of_items";
+
+        $result = Database::query($sql);
+        $tickets[0] = array(
+            utf8_decode('Ticket#'),
+            utf8_decode('Fecha'),
+            utf8_decode('Fecha Edicion'),
+            utf8_decode('Categoria'),
+            utf8_decode('Usuario'),
+            utf8_decode('Estado'),
+            utf8_decode('Mensajes'),
+            utf8_decode('Responsable'),
+            utf8_decode('Programa')
+        );
+
+        while ($row = Database::fetch_assoc($result)) {
+            if ($row['responsable'] != 0) {
+                $row['responsable'] = api_get_user_info($row['responsable']);
+                $row['responsable'] = $row['responsable']['firstname'] . ' ' . $row['responsable']['lastname'];
+            }
+            $row['sys_insert_datetime'] = api_format_date(
+                $row['sys_insert_datetime'],
+                '%d/%m/%y - %I:%M:%S %p'
+            );
+            $row['sys_lastedit_datetime'] = api_format_date(
+                $row['sys_lastedit_datetime'],
+                '%d/%m/%y - %I:%M:%S %p'
+            );
+            $row['category'] = utf8_decode($row['category']);
+            $row['programa'] = utf8_decode($row['fullname']);
+            $row['fullname'] = utf8_decode($row['fullname']);
+            $row['responsable'] = utf8_decode($row['responsable']);
+            $tickets[] = $row;
+        }
+        return $tickets;
+    }
+}
+
 ?>

+ 0 - 0
plugin/ticket/s/ticket_assign_log.php → plugin/ticket/src/ticket_assign_log.php


+ 356 - 356
plugin/ticket/s/ticket_details.php → plugin/ticket/src/ticket_details.php

@@ -1,357 +1,357 @@
-<?php
-$language_file= array('messages','userInfo', 'admin');
-$cidReset	= true;
-require_once '../config.php';
-$plugin = TicketPlugin::create();
-
-api_block_anonymous_users();
-$interbreadcrumb[]= array ('url' =>'myticket.php','name' => get_lang('MisTickets'));
-$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('TicketDetail'));
-$htmlHeadXtra[]='
-<script src="/pie/PIE_IE678.js"></script>
-<script language="javascript">
-$(document).ready(function(){
-	$( "#dialog-form" ).dialog({
-		autoOpen: false,
-		height: 450,
-		width: 600,
-		modal: true,
-		buttons: {
-			Asignar: function(){
-				$("#genesis").submit()
-				},
-			 Close: function() {
-                    $( this ).dialog( "close" );
-             }
-		}
-		
-	});
-    	$("a#assign").click(function () {
-		$( "#dialog-form" ).dialog( "open" );
-        
-    	});
-		$("input#respuestasi").click(function () {
-			if(!confirm("Confirma que su respuesta es : SI ?. Si est\u00e1 seguro el ticket ser\u00e1 cerrado")){
-				return false;
-			}
-        
-    	});
-		$("input#respuestano").click(function () {
-			if(!confirm("Confirma que su respuesta es : NO ?")){
-				return false;
-			}
-        
-    	});
-	$("#unassign").click(function () {
-        if (!confirm("Estas seguro de Desasignarte")) {
-            return false		
-		}
-    });
-	$("#close").click(function () {
-        if (!confirm("Estas seguro de Cerrar el Ticket")) {
-			return false		
-		}
-    });
-});
-function validate() {	
-	fckEditor1val = FCKeditorAPI.__Instances["content"].GetHTML();	
-	document.getElementById("content").value= fckEditor1val;
-	if(fckEditor1val ==""){
-		alert("Debe escribir un mensaje");
-		return false;
-	}
-}
-var counter_image = 1;
-function remove_image_form(id_elem1) {
-	var elem1 = document.getElementById(id_elem1);
-	elem1.parentNode.removeChild(elem1);
-	counter_image = counter_image - 1;
-}
-function add_image_form() {
-	// Multiple filepaths for image form
-	var filepaths = document.getElementById("filepaths");
-	if (document.getElementById("filepath_"+counter_image)) {
-		counter_image = counter_image + 1;
-	}  else {
-		counter_image = counter_image;
-	}
-	var elem1 = document.createElement("div");
-	elem1.setAttribute("id","filepath_"+counter_image);
-	filepaths.appendChild(elem1);
-	id_elem1 = "filepath_"+counter_image;
-	id_elem1 = "\'"+id_elem1+"\'";
-	document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\"  />&nbsp;<a href=\"javascript:remove_image_form("+id_elem1+")\"><img src=\"'.api_get_path(WEB_CODE_PATH).'img/delete.gif\"></a>";
-	//document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<input type=\"text\" name=\"legend[]\" size=\"20\" />";
-	if (filepaths.childNodes.length == 6) {
-		var link_attach = document.getElementById("link-more-attach");
-		if (link_attach) {
-			link_attach.innerHTML="";
-		}
-	}
-}
-</script>';
-$htmlHeadXtra[] = '
-<style>
-div.row div.label2 {
-	float:left;
-	text-align: right;
-	width:22%;
-}
-div.row div.formw2 {
-    width:50%;	
-	margin-left: 2%;	
-	margin-right: 16%;
-	float:left;
-}
-.messageuser, .messagesupport {
-    border: 1px solid;
-    margin: 10px 0px;
-    padding:15px 10px 15px 50px;
-    background-repeat: no-repeat;
-    background-position: 10px center;
-    width:50%;	
-	behavior: url(/pie/PIE.htc);
-}
-.messageuser {
-    color: #00529B;
-    -moz-border-radius: 15px 15px 15px 15px;
-    -webkit-border-radius: 15px 15px 15px 15px;
-    background-color: #BDE5F8;    
-    margin-left:20%;
-    border-radius:15px;
-    float: left;
-}
-.messagesupport {
-    color: #4F8A10;
-    -moz-border-radius: 15px 15px 15px 15px;
-    -webkit-border-radius: 15px 15px 15px 15px;
-    background-color: #DFF2BF;
-    margin-right: 20%;
-    float: right;
-    border-radius:15px;
-}
-
-</style>';
-
-$user_id = api_get_user_id();
-$isAdmin = api_is_platform_admin();
-$ticket_id = $_GET['ticket_id'];
-$ticket = TicketManager::get_ticket_detail_by_id($ticket_id,$user_id);
-if(!isset($ticket['ticket'])){
-	api_not_allowed();
-}
-if(!isset($_GET['ticket_id'])){
-	header('location:myticket.php');
-}
-if(isset($_POST['respuesta'])){
-	if($user_id == $ticket['ticket']['request_user']){
-		$respuesta = ($_POST['respuesta']=='si')?true:(($_POST['respuesta']=='no'?false:null));
-		if ($respuesta  && $ticket['ticket']['status_id'] == 'XCF' ){
-			TicketManager::close_ticket($_GET['ticket_id'], $user_id);
-				$ticket['ticket']['status_id'] = 'CLS';
-				$ticket['ticket']['status'] = 'CERRADO';
-			}else if(!is_null($respuesta) && $ticket['ticket']['status_id'] == 'XCF'){
-				TicketManager::update_ticket_status('PND',$_GET['ticket_id'], $user_id);
-				$ticket['ticket']['status_id'] = 'PND';
-				$ticket['ticket']['status'] = 'PENDIENTE';
-			}
-	}
-	
-}
-if (isset($_REQUEST['action'])){
-	$action = $_REQUEST['action'];
-	switch ($action){
-		case 'assign':
-			if(api_is_platform_admin() && isset($_GET['ticket_id']) )
-				TicketManager::assign_ticket_user($_GET['ticket_id'], $_POST['admins']);
-				$ticket['ticket']['assigned_last_user'] = $_POST['admins'];
-			break;
-		case 'unassign':
-			if(api_is_platform_admin() && isset($_GET['ticket_id']) )
-				TicketManager::assign_ticket_user($_GET['ticket_id'], 0);
-				$ticket['ticket']['assigned_last_user'] = 0;
-			break;
-		default:
-			break;
-	}
-}
-if(!isset($_POST['compose'])){  
-	if(isset($_POST['close'])){
-		$_GET['ticket_id'] = $_POST['ticket_id'] ;
-		TicketManager::close_ticket($_GET['ticket_id'], $user_id);
-		$ticket['ticket']['status_id'] = 'CLS';
-		$ticket['ticket']['status'] = 'CERRADO';
-	}
-	$ticket['ticket']['request_user'] = intval($ticket['ticket']['request_user']);
-	if($ticket['ticket']['request_user'] == $user_id || intval($ticket['ticket']['assigned_last_user']) == $user_id ){
-		TicketManager::update_message_status($ticket_id, $ticket['ticket']['request_user']);
-	}
-	Display::display_header();
-	$form_close_ticket = "";
-	if($ticket['ticket']['status_id'] != 'REE' AND $ticket['ticket']['status_id'] != 'CLS' AND $isAdmin ){
-			if(intval($ticket['ticket']['assigned_last_user']) == $user_id){
-				if($ticket['ticket']['status_id']!='CLS'){
-					$form_close_ticket.= '<form enctype="multipart/form-data" action="'.api_get_self().'?ticket_id='.$ticket['ticket']['ticket_id'].'" method="post" name="close_ticket" id="close_ticket" >';
-					$form_close_ticket.= '<input type="hidden" name="ticket_id" value="'.$ticket['ticket']['ticket_id'].'"/>
-							<button class="minus" name="close" type="submit" id="close" >Cerrar</button>';
-					$form_close_ticket.= '</form>';
-				}
-			}
-		
-	}
-	$titulo = '<center><h1>Ticket #'.$ticket['ticket']['ticket_code'].'</h1></center>';
-	if($isAdmin && $ticket['ticket']['status_id'] != 'CLS' && $ticket['ticket']['status_id'] != 'REE'){
-		if( $ticket['ticket']['assigned_last_user'] != 0 && $ticket['ticket']['assigned_last_user'] == $user_id ){
-			$img_assing = '<a href="'.api_get_self().'?ticket_id='.$ticket['ticket']['ticket_id'].'&amp;action=unassign" id="unassign"><img src="../../../main/img/admin_star.png" border="0" title="Desasignarme" align="center"/></a>';					
-		}else{	
-			$img_assing .= '<a href="#" id="assign"><img src="../../../main/img/admin_star_na.png" border="0" title="Asignar" align="center"/></a>';				
-		}
-	}
-	$negrita = ($ticket['ticket']['status_id'] == 'CLS')?'style = "font-weight: bold;"':'';
-	$cadena = ($ticket['ticket']['status_id'] != 'CLS')?"sas":"";
-	echo '<div style="margin-left:20%;margin-right:20%;">
-			<table width="100%" >
-				<tr>
-	              <td colspan="3" style="width:65%">'.$titulo.'</td>
-	              <td >'.$img_assing.'</td>
-	              <td>'.$form_close_ticket.'</td>
-	            </tr>
-	         	<tr>
-	              <td style="width:45%;" ><p>Enviado  : '.$ticket['ticket']['start_date'].'</p></td>
-	              <td style="width:50px;"></td>
-	              <td style="width:45%;" ><p>Ultima Respuesta  : '.$ticket['ticket']['sys_lastedit_datetime'].'</p></td>
-	              <td colspan="2"></td>
-	            </tr>
-	            <tr>
-	               <td><p>Asunto  : '.$ticket['messages'][0]['subject'].'</p></td>
-	               <td></td>
-	               <td><p '.$negrita.'>Estado : '.$ticket['ticket']['status'].'</p></td>
-	               <td colspan="2"></td>
-	            </tr>
-	            <tr>
-	                <td><p>Categoria  : '.$ticket['ticket']['name'].'</p></td>
-	                <td></td>
-	                <td ><p>Prioridad :'.$ticket['ticket']['priority'].'<p></td>
-	                <td colspan="2"></td>
-	            </tr>';
-	if($ticket['ticket']['course_url']!=null){
-		echo '<tr>
-				<td><p>Curso:</p></td>
-	            <td></td>
-			    <td>'.$ticket['ticket']['course_url'].'</td>
-	            <td colspan="2"></td>
-	          </tr>';
-	}
-	if ($isAdmin){
-		echo '<tr>
-				<td><p>Usuario:</p></td>
-	            <td></td>
-			    <td>'.$user_info = $ticket['ticket']['user_url'].' ('.$ticket['usuario']['username'].')</td>
-	            <td colspan="2"></td>
-			 </tr>';
-	}
-	//select admins
-	$select_admins .= '<select  class ="chzn-select" style="width: 350px; " name = "admins" id="admins" ">';
-	
-	$admins = UserManager::get_user_list_like(array("status"=>"1"),array("username"),true);
-	foreach ($admins as $admin) {
-		$select_admins.= "<option value = '".$admin['user_id']."' ".(($user_id==$admin['user_id'])?("selected='selected'"):"").">".$admin['lastname']." ,".$admin['firstname']."</option>";
-	}
-	$select_admins .= "</select>";
-	echo '<div id="dialog-form" title="Asignar Ticket" >';
-	echo '<form id="genesis" method="POST" action="ticket_details.php?ticket_id='.$ticket['ticket']['ticket_id'].'">
-			<input type="hidden" name ="action" id="action" value="assign"/>
-			<div  class="row">
-				<div class="label">Responsable:</div>
-				<div class="formw">'.$select_admins.'</div>
-			</div>			
-		  </form>';
-	echo '</div>';
-	echo '</table></div>';
-	    $messages = $ticket['messages'];
-	    foreach($messages as $message){
-	        $class ="messageuser";
-	        if($message['admin']){
-	        	$class ="messagesupport";
-	        	if($isAdmin)$message['message'].="<br/><b>Atendido por: ".$message['user_created']." - ".api_convert_and_format_date(api_get_local_time($message['sys_insert_datetime']), DATE_TIME_FORMAT_LONG,_api_get_timezone())."</b>";
-	        }else{
-	        	$message['message'].="<b>Enviado: ".api_convert_and_format_date(api_get_local_time($message['sys_insert_datetime']), DATE_TIME_FORMAT_LONG,_api_get_timezone())."</b>";
-	        }
-	        echo '<div class="'.$class.'" ><b>Asunto: </b> '.$message['subject'].'<br/> <b> Mensaje:</b>'.$message['message'].'<br/>';
-	        if(isset($message['atachments'])){
-		        foreach($message['atachments'] as $attach){
-		                echo $attach['attachment_link'];
-		       }
-		    }
-	        echo '</div>';
-    	}
-    	$asunto = "RE: ".$message['subject'];
-    	$user_admin = api_is_platform_admin();
-    	if($ticket['ticket']['status_id'] != 'REE' AND $ticket['ticket']['status_id'] != 'CLS'  ){
-    		if(!$isAdmin && $ticket['ticket']['status_id'] != 'XCF'){
-    			show_form_send_message();
-    		}else{
-    			if(intval($ticket['ticket']['assigned_last_user']) == $user_id){
-    				show_form_send_message();
-    				$cheked ="";
-    	
-    			}
-    		}
-    	}
-    	
-}else{
-    $ticket_id	= $_POST['ticket_id'];
-    $content	=	$_POST['content'];
-    $subject	=	$_POST['subject'];
-    $mensajeconfirmacion = isset($_POST['confirmacion'])?true:false ; 
-    $file_attachments   =	$_FILES;
-    $user_id = api_get_user_id();
-    TicketManager::insert_message($ticket_id, $subject, $content, $file_attachments, $user_id,'NOL',$mensajeconfirmacion);
-    header("location:".api_get_self()."?ticket_id=".$ticket_id);
-}
-function show_form_send_message(){
-	global $isAdmin;
-	global $ticket;
-	global $asunto;
-    echo '<form enctype="multipart/form-data" action="'.api_get_self().'?ticket_id='.$ticket['ticket']['ticket_id'].'" method="post" name="send_ticket" id="send_ticket"
- 	onsubmit="return validate()" style="width:100%">';
-	echo '<div class="row" ><div class ="label">Asunto:</div>
-       		<div class="formw"><input type = "text" id ="subject" name="subject" value="'.$asunto.'" required ="" style="width:60%"/></div>
-		  </div>';
-	echo '<div class="row">
-		<div class="label2">mensaje
-		</div>
-		<div class="formw2">
-			<input type="hidden" id="content" name="content" value="" style="display:none">
-		<input type="hidden" id="content___Config" value="ToolbarSet=Messages&amp;Width=95%25&amp;Height=250&amp;ToolbarSets={ %22Messages%22: [  [ %22Bold%22,%22Italic%22,%22-%22,%22InsertOrderedList%22,%22InsertUnorderedList%22,%22Link%22,%22RemoveLink%22 ] ], %22MessagesMaximized%22: [  ] }&amp;LoadPlugin=[%22customizations%22]&amp;EditorAreaStyles=body { background: #ffffff; }&amp;ToolbarStartExpanded=false&amp;CustomConfigurationsPath=/main/inc/lib/fckeditor/myconfig.js&amp;EditorAreaCSS=/main/css/chamilo/default.css&amp;ToolbarComboPreviewCSS=/main/css/chamilo/default.css&amp;DefaultLanguage=es&amp;ContentLangDirection=ltr&amp;AdvancedFileManager=true&amp;BaseHref='.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/&amp;&amp;UserIsCourseAdmin=true&amp;UserIsPlatformAdmin=true" style="display:none">
-		<iframe id="content___Frame" src="/main/inc/lib/fckeditor/editor/fckeditor.html?InstanceName=content&amp;Toolbar=Messages" width="95%" height="250" frameborder="0" scrolling="no" style="margin: 0px; padding: 0px; border: 0px; background-color: transparent; background-image: none; width: 95%; height: 250px;">
-		</iframe>
-		</div>
-	</div>
-';
-    echo '<input type="hidden" id="ticket_id" name="ticket_id" value="'.$_GET['ticket_id'].'">';
-	echo '<div class="row">
-		<div class="label">'.get_lang('FilesAttachment').'</div>
-		<div class="formw">
-				<span id="filepaths">
-				<div id="filepath_1">
-					<input type="file" name="attach_1" id="attach_1"  size="20" style="width:59%;"/>
-				</div></span>
-		</div>
-	</div>';
-	echo '<div class="row">
-		<div class="formw">
-			<span id="link-more-attach">
-				<a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a></span>&nbsp;
-					('.sprintf(get_lang('MaximunFileSizeX'),format_file_size(api_get_setting('message_max_upload_filesize'))).')
-			</div>
-		</div>';
-	echo '<div class="row">
-		<div class="label"></div>
-		<div class="formw">	<button class="save" name="compose" type="submit">Enviar mensaje</button>'.($isAdmin?'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="confirmacion"/>Solicitar confirmaci&oacute;n':"").
-		'</div>
-	</div>';
-        echo '</form>';
-}
-Display::display_footer();
+<?php
+$language_file= array('messages','userInfo', 'admin');
+$cidReset	= true;
+require_once '../config.php';
+$plugin = TicketPlugin::create();
+
+api_block_anonymous_users();
+$interbreadcrumb[]= array ('url' =>'myticket.php','name' => get_lang('MisTickets'));
+$interbreadcrumb[]= array ('url' =>'#','name' => get_lang('TicketDetail'));
+$htmlHeadXtra[]='
+<script src="/pie/PIE_IE678.js"></script>
+<script language="javascript">
+$(document).ready(function(){
+	$( "#dialog-form" ).dialog({
+		autoOpen: false,
+		height: 450,
+		width: 600,
+		modal: true,
+		buttons: {
+			Asignar: function(){
+				$("#genesis").submit()
+				},
+			 Close: function() {
+                    $( this ).dialog( "close" );
+             }
+		}
+		
+	});
+    	$("a#assign").click(function () {
+		$( "#dialog-form" ).dialog( "open" );
+        
+    	});
+		$("input#respuestasi").click(function () {
+			if(!confirm("Confirma que su respuesta es : SI ?. Si est\u00e1 seguro el ticket ser\u00e1 cerrado")){
+				return false;
+			}
+        
+    	});
+		$("input#respuestano").click(function () {
+			if(!confirm("Confirma que su respuesta es : NO ?")){
+				return false;
+			}
+        
+    	});
+	$("#unassign").click(function () {
+        if (!confirm("Estas seguro de Desasignarte")) {
+            return false		
+		}
+    });
+	$("#close").click(function () {
+        if (!confirm("Estas seguro de Cerrar el Ticket")) {
+			return false		
+		}
+    });
+});
+function validate() {	
+	fckEditor1val = FCKeditorAPI.__Instances["content"].GetHTML();	
+	document.getElementById("content").value= fckEditor1val;
+	if(fckEditor1val ==""){
+		alert("Debe escribir un mensaje");
+		return false;
+	}
+}
+var counter_image = 1;
+function remove_image_form(id_elem1) {
+	var elem1 = document.getElementById(id_elem1);
+	elem1.parentNode.removeChild(elem1);
+	counter_image = counter_image - 1;
+}
+function add_image_form() {
+	// Multiple filepaths for image form
+	var filepaths = document.getElementById("filepaths");
+	if (document.getElementById("filepath_"+counter_image)) {
+		counter_image = counter_image + 1;
+	}  else {
+		counter_image = counter_image;
+	}
+	var elem1 = document.createElement("div");
+	elem1.setAttribute("id","filepath_"+counter_image);
+	filepaths.appendChild(elem1);
+	id_elem1 = "filepath_"+counter_image;
+	id_elem1 = "\'"+id_elem1+"\'";
+	document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\"  />&nbsp;<a href=\"javascript:remove_image_form("+id_elem1+")\"><img src=\"'.api_get_path(WEB_CODE_PATH).'img/delete.gif\"></a>";
+	//document.getElementById("filepath_"+counter_image).innerHTML = "<input type=\"file\" name=\"attach_"+counter_image+"\"  size=\"20\" />&nbsp;<input type=\"text\" name=\"legend[]\" size=\"20\" />";
+	if (filepaths.childNodes.length == 6) {
+		var link_attach = document.getElementById("link-more-attach");
+		if (link_attach) {
+			link_attach.innerHTML="";
+		}
+	}
+}
+</script>';
+$htmlHeadXtra[] = '
+<style>
+div.row div.label2 {
+	float:left;
+	text-align: right;
+	width:22%;
+}
+div.row div.formw2 {
+    width:50%;	
+	margin-left: 2%;	
+	margin-right: 16%;
+	float:left;
+}
+.messageuser, .messagesupport {
+    border: 1px solid;
+    margin: 10px 0px;
+    padding:15px 10px 15px 50px;
+    background-repeat: no-repeat;
+    background-position: 10px center;
+    width:50%;	
+	behavior: url(/pie/PIE.htc);
+}
+.messageuser {
+    color: #00529B;
+    -moz-border-radius: 15px 15px 15px 15px;
+    -webkit-border-radius: 15px 15px 15px 15px;
+    background-color: #BDE5F8;    
+    margin-left:20%;
+    border-radius:15px;
+    float: left;
+}
+.messagesupport {
+    color: #4F8A10;
+    -moz-border-radius: 15px 15px 15px 15px;
+    -webkit-border-radius: 15px 15px 15px 15px;
+    background-color: #DFF2BF;
+    margin-right: 20%;
+    float: right;
+    border-radius:15px;
+}
+
+</style>';
+
+$user_id = api_get_user_id();
+$isAdmin = api_is_platform_admin();
+$ticket_id = $_GET['ticket_id'];
+$ticket = TicketManager::get_ticket_detail_by_id($ticket_id,$user_id);
+if(!isset($ticket['ticket'])){
+	api_not_allowed();
+}
+if(!isset($_GET['ticket_id'])){
+	header('location:myticket.php');
+}
+if(isset($_POST['respuesta'])){
+	if($user_id == $ticket['ticket']['request_user']){
+		$respuesta = ($_POST['respuesta']=='si')?true:(($_POST['respuesta']=='no'?false:null));
+		if ($respuesta  && $ticket['ticket']['status_id'] == 'XCF' ){
+			TicketManager::close_ticket($_GET['ticket_id'], $user_id);
+				$ticket['ticket']['status_id'] = 'CLS';
+				$ticket['ticket']['status'] = 'CERRADO';
+			}else if(!is_null($respuesta) && $ticket['ticket']['status_id'] == 'XCF'){
+				TicketManager::update_ticket_status('PND',$_GET['ticket_id'], $user_id);
+				$ticket['ticket']['status_id'] = 'PND';
+				$ticket['ticket']['status'] = 'PENDIENTE';
+			}
+	}
+	
+}
+if (isset($_REQUEST['action'])){
+	$action = $_REQUEST['action'];
+	switch ($action){
+		case 'assign':
+			if(api_is_platform_admin() && isset($_GET['ticket_id']) )
+				TicketManager::assign_ticket_user($_GET['ticket_id'], $_POST['admins']);
+				$ticket['ticket']['assigned_last_user'] = $_POST['admins'];
+			break;
+		case 'unassign':
+			if(api_is_platform_admin() && isset($_GET['ticket_id']) )
+				TicketManager::assign_ticket_user($_GET['ticket_id'], 0);
+				$ticket['ticket']['assigned_last_user'] = 0;
+			break;
+		default:
+			break;
+	}
+}
+if(!isset($_POST['compose'])){  
+	if(isset($_POST['close'])){
+		$_GET['ticket_id'] = $_POST['ticket_id'] ;
+		TicketManager::close_ticket($_GET['ticket_id'], $user_id);
+		$ticket['ticket']['status_id'] = 'CLS';
+		$ticket['ticket']['status'] = 'CERRADO';
+	}
+	$ticket['ticket']['request_user'] = intval($ticket['ticket']['request_user']);
+	if($ticket['ticket']['request_user'] == $user_id || intval($ticket['ticket']['assigned_last_user']) == $user_id ){
+		TicketManager::update_message_status($ticket_id, $ticket['ticket']['request_user']);
+	}
+	Display::display_header();
+	$form_close_ticket = "";
+	if($ticket['ticket']['status_id'] != 'REE' AND $ticket['ticket']['status_id'] != 'CLS' AND $isAdmin ){
+			if(intval($ticket['ticket']['assigned_last_user']) == $user_id){
+				if($ticket['ticket']['status_id']!='CLS'){
+					$form_close_ticket.= '<form enctype="multipart/form-data" action="'.api_get_self().'?ticket_id='.$ticket['ticket']['ticket_id'].'" method="post" name="close_ticket" id="close_ticket" >';
+					$form_close_ticket.= '<input type="hidden" name="ticket_id" value="'.$ticket['ticket']['ticket_id'].'"/>
+							<button class="minus" name="close" type="submit" id="close" >Cerrar</button>';
+					$form_close_ticket.= '</form>';
+				}
+			}
+		
+	}
+	$titulo = '<center><h1>Ticket #'.$ticket['ticket']['ticket_code'].'</h1></center>';
+	if($isAdmin && $ticket['ticket']['status_id'] != 'CLS' && $ticket['ticket']['status_id'] != 'REE'){
+		if( $ticket['ticket']['assigned_last_user'] != 0 && $ticket['ticket']['assigned_last_user'] == $user_id ){
+			$img_assing = '<a href="'.api_get_self().'?ticket_id='.$ticket['ticket']['ticket_id'].'&amp;action=unassign" id="unassign"><img src="../../../main/img/admin_star.png" border="0" title="Desasignarme" align="center"/></a>';					
+		}else{	
+			$img_assing .= '<a href="#" id="assign"><img src="../../../main/img/admin_star_na.png" border="0" title="Asignar" align="center"/></a>';				
+		}
+	}
+	$negrita = ($ticket['ticket']['status_id'] == 'CLS')?'style = "font-weight: bold;"':'';
+	$cadena = ($ticket['ticket']['status_id'] != 'CLS')?"sas":"";
+	echo '<div style="margin-left:20%;margin-right:20%;">
+			<table width="100%" >
+				<tr>
+	              <td colspan="3" style="width:65%">'.$titulo.'</td>
+	              <td >'.$img_assing.'</td>
+	              <td>'.$form_close_ticket.'</td>
+	            </tr>
+	         	<tr>
+	              <td style="width:45%;" ><p>Enviado  : '.$ticket['ticket']['start_date'].'</p></td>
+	              <td style="width:50px;"></td>
+	              <td style="width:45%;" ><p>Ultima Respuesta  : '.$ticket['ticket']['sys_lastedit_datetime'].'</p></td>
+	              <td colspan="2"></td>
+	            </tr>
+	            <tr>
+	               <td><p>Asunto  : '.$ticket['messages'][0]['subject'].'</p></td>
+	               <td></td>
+	               <td><p '.$negrita.'>Estado : '.$ticket['ticket']['status'].'</p></td>
+	               <td colspan="2"></td>
+	            </tr>
+	            <tr>
+	                <td><p>Categoria  : '.$ticket['ticket']['name'].'</p></td>
+	                <td></td>
+	                <td ><p>Prioridad :'.$ticket['ticket']['priority'].'<p></td>
+	                <td colspan="2"></td>
+	            </tr>';
+	if($ticket['ticket']['course_url']!=null){
+		echo '<tr>
+				<td><p>Curso:</p></td>
+	            <td></td>
+			    <td>'.$ticket['ticket']['course_url'].'</td>
+	            <td colspan="2"></td>
+	          </tr>';
+	}
+	if ($isAdmin){
+		echo '<tr>
+				<td><p>Usuario:</p></td>
+	            <td></td>
+			    <td>'.$user_info = $ticket['ticket']['user_url'].' ('.$ticket['usuario']['username'].')</td>
+	            <td colspan="2"></td>
+			 </tr>';
+	}
+	//select admins
+	$select_admins .= '<select  class ="chzn-select" style="width: 350px; " name = "admins" id="admins" ">';
+	
+	$admins = UserManager::get_user_list_like(array("status"=>"1"),array("username"),true);
+	foreach ($admins as $admin) {
+		$select_admins.= "<option value = '".$admin['user_id']."' ".(($user_id==$admin['user_id'])?("selected='selected'"):"").">".$admin['lastname']." ,".$admin['firstname']."</option>";
+	}
+	$select_admins .= "</select>";
+	echo '<div id="dialog-form" title="Asignar Ticket" >';
+	echo '<form id="genesis" method="POST" action="ticket_details.php?ticket_id='.$ticket['ticket']['ticket_id'].'">
+			<input type="hidden" name ="action" id="action" value="assign"/>
+			<div  class="row">
+				<div class="label">Responsable:</div>
+				<div class="formw">'.$select_admins.'</div>
+			</div>			
+		  </form>';
+	echo '</div>';
+	echo '</table></div>';
+	    $messages = $ticket['messages'];
+	    foreach($messages as $message){
+	        $class ="messageuser";
+	        if($message['admin']){
+	        	$class ="messagesupport";
+	        	if($isAdmin)$message['message'].="<br/><b>Atendido por: ".$message['user_created']." - ".api_convert_and_format_date(api_get_local_time($message['sys_insert_datetime']), DATE_TIME_FORMAT_LONG,_api_get_timezone())."</b>";
+	        }else{
+	        	$message['message'].="<b>Enviado: ".api_convert_and_format_date(api_get_local_time($message['sys_insert_datetime']), DATE_TIME_FORMAT_LONG,_api_get_timezone())."</b>";
+	        }
+	        echo '<div class="'.$class.'" ><b>Asunto: </b> '.$message['subject'].'<br/> <b> Mensaje:</b>'.$message['message'].'<br/>';
+	        if(isset($message['atachments'])){
+		        foreach($message['atachments'] as $attach){
+		                echo $attach['attachment_link'];
+		       }
+		    }
+	        echo '</div>';
+    	}
+    	$asunto = "RE: ".$message['subject'];
+    	$user_admin = api_is_platform_admin();
+    	if($ticket['ticket']['status_id'] != 'REE' AND $ticket['ticket']['status_id'] != 'CLS'  ){
+    		if(!$isAdmin && $ticket['ticket']['status_id'] != 'XCF'){
+    			show_form_send_message();
+    		}else{
+    			if(intval($ticket['ticket']['assigned_last_user']) == $user_id){
+    				show_form_send_message();
+    				$cheked ="";
+    	
+    			}
+    		}
+    	}
+    	
+}else{
+    $ticket_id	= $_POST['ticket_id'];
+    $content	=	$_POST['content'];
+    $subject	=	$_POST['subject'];
+    $mensajeconfirmacion = isset($_POST['confirmacion'])?true:false ; 
+    $file_attachments   =	$_FILES;
+    $user_id = api_get_user_id();
+    TicketManager::insert_message($ticket_id, $subject, $content, $file_attachments, $user_id,'NOL',$mensajeconfirmacion);
+    header("location:".api_get_self()."?ticket_id=".$ticket_id);
+}
+function show_form_send_message(){
+	global $isAdmin;
+	global $ticket;
+	global $asunto;
+    echo '<form enctype="multipart/form-data" action="'.api_get_self().'?ticket_id='.$ticket['ticket']['ticket_id'].'" method="post" name="send_ticket" id="send_ticket"
+ 	onsubmit="return validate()" style="width:100%">';
+	echo '<div class="row" ><div class ="label">Asunto:</div>
+       		<div class="formw"><input type = "text" id ="subject" name="subject" value="'.$asunto.'" required ="" style="width:60%"/></div>
+		  </div>';
+	echo '<div class="row">
+		<div class="label2">mensaje
+		</div>
+		<div class="formw2">
+			<input type="hidden" id="content" name="content" value="" style="display:none">
+		<input type="hidden" id="content___Config" value="ToolbarSet=Messages&amp;Width=95%25&amp;Height=250&amp;ToolbarSets={ %22Messages%22: [  [ %22Bold%22,%22Italic%22,%22-%22,%22InsertOrderedList%22,%22InsertUnorderedList%22,%22Link%22,%22RemoveLink%22 ] ], %22MessagesMaximized%22: [  ] }&amp;LoadPlugin=[%22customizations%22]&amp;EditorAreaStyles=body { background: #ffffff; }&amp;ToolbarStartExpanded=false&amp;CustomConfigurationsPath=/main/inc/lib/fckeditor/myconfig.js&amp;EditorAreaCSS=/main/css/chamilo/default.css&amp;ToolbarComboPreviewCSS=/main/css/chamilo/default.css&amp;DefaultLanguage=es&amp;ContentLangDirection=ltr&amp;AdvancedFileManager=true&amp;BaseHref='.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/s/&amp;&amp;UserIsCourseAdmin=true&amp;UserIsPlatformAdmin=true" style="display:none">
+		<iframe id="content___Frame" src="/main/inc/lib/fckeditor/editor/fckeditor.html?InstanceName=content&amp;Toolbar=Messages" width="95%" height="250" frameborder="0" scrolling="no" style="margin: 0px; padding: 0px; border: 0px; background-color: transparent; background-image: none; width: 95%; height: 250px;">
+		</iframe>
+		</div>
+	</div>
+';
+    echo '<input type="hidden" id="ticket_id" name="ticket_id" value="'.$_GET['ticket_id'].'">';
+	echo '<div class="row">
+		<div class="label">'.get_lang('FilesAttachment').'</div>
+		<div class="formw">
+				<span id="filepaths">
+				<div id="filepath_1">
+					<input type="file" name="attach_1" id="attach_1"  size="20" style="width:59%;"/>
+				</div></span>
+		</div>
+	</div>';
+	echo '<div class="row">
+		<div class="formw">
+			<span id="link-more-attach">
+				<a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a></span>&nbsp;
+					('.sprintf(get_lang('MaximunFileSizeX'),format_file_size(api_get_setting('message_max_upload_filesize'))).')
+			</div>
+		</div>';
+	echo '<div class="row">
+		<div class="label"></div>
+		<div class="formw">	<button class="save" name="compose" type="submit">Enviar mensaje</button>'.($isAdmin?'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="confirmacion"/>Solicitar confirmaci&oacute;n':"").
+		'</div>
+	</div>';
+        echo '</form>';
+}
+Display::display_footer();
 ?>

+ 100 - 100
plugin/ticket/s/tutor.php → plugin/ticket/src/tutor.php

@@ -1,101 +1,101 @@
-<?php
-require_once '../config.php';
-$plugin = TicketPlugin::create();
-
-require_once 'tutor_report.lib.php';
-
-$htmlHeadXtra[] = '
-	<script type="text/javascript">
-$(document).ready(function (){
-    $(".ajax").live("click", function() {
-            var url     = this.href;
-            var dialog  = $("#dialog");
-            if ($("#dialog").length == 0) {
-                    dialog  = $("<div id=\"dialog\" style=\"display:hidden\"></div>").appendTo("body");
-            }
-
-            // load remote content
-            dialog.load(
-                            url,                    
-                            {},
-                            function(responseText, textStatus, XMLHttpRequest) {
-                                    dialog.dialog({
-                                            modal	: true, 
-                                            width	: 540, 
-                                            height	: 400        
-                                    });	                    
-            });
-            //prevent the browser to follow the link
-            return false;
-    });
-});	
-		
-		
-function mostrarContenido(div){
-	if($("div#"+div).attr("class")=="blackboard_hide"){
-		$("div#"+div).attr("class","blackboard_show");
-		$("div#"+div).attr("style","");
-	}else{
-		$("div#"+div).attr("class","blackboard_hide");
-		$("div#"+div).attr("style","");
-	}
-		
-}
-		
-function save() {
-	work_id = $("#work_id").val();
-	forum_id = $("#forum_id").val();
-	rs_id = $("#rs_id").val();
-	 $.ajax({
-		contentType: "application/x-www-form-urlencoded",
-		beforeSend: function(objeto) {
-		$("div#confirmacion").html("<img src=\'../../../main/inc/lib/javascript/indicator.gif\' />"); },
-		type: "POST",
-		url: "update_report.php",
-		data: "work_id="+work_id+"&forum_id="+forum_id+"&rs_id="+rs_id,
-		success: function(datos) {
-			$("div#confirmacion").html(datos);
-			 location.reload();
-		}
-	});
-}
-</script>
-<style>
-.blackboard_show {
-	float:left;
-	position:absolute;
-	border:1px solid black;
-	width: 350px;
-	background-color:white;
-	z-index:99; padding: 3px;
-	display: inline;
-}
-.blackboard_hide {
-	display: none;
-}
-.reportes{
-	border:1px ;	
-}
-.reportes th {
-    border-bottom: 1px solid #DDDDDD;
-    line-height: normal;
-    text-align: center;
-    vertical-align: middle;
-    background-color: #F2F2F2; 
-}
-</style>';
-
-$course_code = api_get_course_id();
-$resultado = inicializarReporte($course_code);
-if(isset($_GET['action'])){
-	Export::export_table_xls($resultado['exportar'],"REPORTE ALUMNOS CURSO".$course_code);
-}else{
-	Display::display_header();
-	api_protect_course_script();
-	if (!api_is_allowed_to_edit()){
-		api_not_allowed();
-	}
-	echo $resultado['mostrar'];
-	Display::display_footer();
-}
+<?php
+require_once '../config.php';
+$plugin = TicketPlugin::create();
+
+require_once 'tutor_report.lib.php';
+
+$htmlHeadXtra[] = '
+	<script type="text/javascript">
+$(document).ready(function (){
+    $(".ajax").live("click", function() {
+            var url     = this.href;
+            var dialog  = $("#dialog");
+            if ($("#dialog").length == 0) {
+                    dialog  = $("<div id=\"dialog\" style=\"display:hidden\"></div>").appendTo("body");
+            }
+
+            // load remote content
+            dialog.load(
+                            url,                    
+                            {},
+                            function(responseText, textStatus, XMLHttpRequest) {
+                                    dialog.dialog({
+                                            modal	: true, 
+                                            width	: 540, 
+                                            height	: 400        
+                                    });	                    
+            });
+            //prevent the browser to follow the link
+            return false;
+    });
+});	
+		
+		
+function mostrarContenido(div){
+	if($("div#"+div).attr("class")=="blackboard_hide"){
+		$("div#"+div).attr("class","blackboard_show");
+		$("div#"+div).attr("style","");
+	}else{
+		$("div#"+div).attr("class","blackboard_hide");
+		$("div#"+div).attr("style","");
+	}
+		
+}
+		
+function save() {
+	work_id = $("#work_id").val();
+	forum_id = $("#forum_id").val();
+	rs_id = $("#rs_id").val();
+	 $.ajax({
+		contentType: "application/x-www-form-urlencoded",
+		beforeSend: function(objeto) {
+		$("div#confirmacion").html("<img src=\'../../../main/inc/lib/javascript/indicator.gif\' />"); },
+		type: "POST",
+		url: "update_report.php",
+		data: "work_id="+work_id+"&forum_id="+forum_id+"&rs_id="+rs_id,
+		success: function(datos) {
+			$("div#confirmacion").html(datos);
+			 location.reload();
+		}
+	});
+}
+</script>
+<style>
+.blackboard_show {
+	float:left;
+	position:absolute;
+	border:1px solid black;
+	width: 350px;
+	background-color:white;
+	z-index:99; padding: 3px;
+	display: inline;
+}
+.blackboard_hide {
+	display: none;
+}
+.reportes{
+	border:1px ;	
+}
+.reportes th {
+    border-bottom: 1px solid #DDDDDD;
+    line-height: normal;
+    text-align: center;
+    vertical-align: middle;
+    background-color: #F2F2F2; 
+}
+</style>';
+
+$course_code = api_get_course_id();
+$resultado = inicializarReporte($course_code);
+if(isset($_GET['action'])){
+	Export::export_table_xls($resultado['exportar'],"REPORTE ALUMNOS CURSO".$course_code);
+}else{
+	Display::display_header();
+	api_protect_course_script();
+	if (!api_is_allowed_to_edit()){
+		api_not_allowed();
+	}
+	echo $resultado['mostrar'];
+	Display::display_footer();
+}
 ?>

+ 189 - 189
plugin/ticket/s/tutor_report.lib.php → plugin/ticket/src/tutor_report.lib.php

@@ -1,190 +1,190 @@
-<?php
-function inicializarReporte($course_code){
-	$course_info = api_get_course_info($course_code);
-	$table_reporte_semanas = Database::get_main_table('rp_reporte_semanas');
-	$table_students_report = Database::get_main_table('rp_students_report');
-	$table_semanas_curso = Database::get_main_table('rp_semanas_curso');
-	$table_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
-	$table_post = Database::get_course_table(TABLE_FORUM_POST, $course_info['dbName']);
-	$table_work = Database::get_course_table(TABLE_STUDENT_PUBLICATION, $course_info['dbName']);
-	$res = Database::query("SELECT COUNT(*) as cant FROM $table_reporte_semanas WHERE course_code = '".$course_code."'");
-	$sql_semanas = "SELECT semanas FROM $table_semanas_curso WHERE course_code = '$course_code'";
-	$res_semanas = Database::query($sql_semanas);
-	$semanas = Database::fetch_object($res_semanas);
-	$obj = Database::fetch_object($res);
-	$numero_semanas = (!isset($_POST['numerosemanas']))?(($semanas->semanas==0)?7:$semanas->semanas):$_POST['numerosemanas'];
-	Database::query("REPLACE INTO $table_semanas_curso (course_code , semanas) VALUES ('$course_code','$numero_semanas')");
-	if(intval($obj->cant) != $numero_semanas){
-		
-		if(intval($obj->cant) > $numero_semanas){
-			 $sql ="DELETE FROM $table_reporte_semanas WHERE  week_id > $numero_semanas AND course_code = '$course_code'";
-			 Database::query("DELETE FROM $table_reporte_semanas WHERE  week_id > $numero_semanas AND course_code = '$course_code'");
-		}else{
-			for ($i = $obj->cant+1 ; $i <= $numero_semanas ; $i++){
-				if(!Database::query("INSERT INTO $table_reporte_semanas (week_id,course_code,forum_id,work_id,quiz_id,pc_id)
-						VALUES ('$i','$course_code','0','0','0','0' )")){							
-						return false;
-				}
-			}
-		}		
-	}
-	
-	$sql = "REPLACE INTO $table_students_report (user_id,week_report_id, work_ok , thread_ok , quiz_ok , pc_ok)
-			SELECT cu.user_id, rs.id, 0, 0, 0, 0
-			FROM $table_course_rel_user cu
-			LEFT JOIN $table_reporte_semanas rs ON cu.course_code = rs.course_code
-			WHERE cu.status = '5' AND rs.course_code = '$course_code'
-			ORDER BY cu.user_id, rs.id";
-	if(!Database::query($sql)){
-		return false;
-	}else{
-		$pagina = (!isset($_GET['page']))?1:$_GET['page'];
-		Database::query("UPDATE $table_students_report sr SET sr.work_ok = 1
-		WHERE CONCAT (sr.user_id,',',sr.week_report_id)
-		IN (SELECT DISTINCT CONCAT(w.user_id,',',rs.id)
-		FROM $table_work w  JOIN $table_reporte_semanas rs ON w.parent_id = rs.work_id)");
-		Database::query("UPDATE $table_students_report sr SET sr.thread_ok = 1
-		WHERE CONCAT (sr.user_id,',',sr.week_report_id)
-		IN (SELECT DISTINCT CONCAT(f.poster_id,',',rs.id)
-		FROM $table_post f  JOIN $table_reporte_semanas rs ON f.thread_id = rs.forum_id)");
-		return mostrarResultados($course_info,$numero_semanas,$pagina);
-	}
-	
-}
-function mostrarResultados($course_info,$numero_semanas, $pagina){
-	$course_code = $course_info['code'];
-	$table_reporte_semanas = Database::get_main_table('rp_reporte_semanas');
-	$table_students_report = Database::get_main_table('rp_students_report');
-	$table_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
-	$table_user = Database::get_main_table(TABLE_MAIN_USER );
-	$table_thread = Database::get_course_table(TABLE_FORUM_THREAD, $course_info['dbName']);
-	$table_work = Database::get_course_table(TABLE_STUDENT_PUBLICATION, $course_info['dbName']);
-	
-	$resultados = array();
-	$table_export = array();
-	$sql_encabezado = "SELECT rs.id as id,rs.week_id, w.title AS work_title,  t.thread_title ,'EVALUACION' as eval_title ,'QUIZ' as pc_title
-						FROM $table_reporte_semanas rs
-						LEFT JOIN $table_thread t ON t.thread_id =  rs.forum_id
-						LEFT JOIN $table_work w ON w.id = rs.work_id
-						WHERE rs.course_code = '$course_code'
-						ORDER BY rs.week_id";
-	$result_encabezado = Database::query($sql_encabezado) ;
-	$ids = array();
-	$fila = '<tr>
-		<th ></th>';
-	$fila_export_encabezado = array(null,null);
-	$fila_export_encabezado2 = array(null,ull);
-	while ($rowe = Database::fetch_assoc($result_encabezado)){
-		$fila_export_encabezado[] =  utf8_decode('Tarea'.$rowe['week_id']);
-		$fila_export_encabezado[] =  utf8_decode('Foro'.$rowe['week_id']);
-		//$fila_export_encabezado[] =  utf8_decode('Eval'.$rowe['week_id']);
-		//$fila_export_encabezado[] =  utf8_decode('PC'.$rowe['week_id']);
-		$fila_export_encabezado2[] = utf8_decode($rowe['work_title']);
-		$fila_export_encabezado2[] = utf8_decode($rowe['thread_title']);
-		//$fila_export_encabezado2[] = utf8_decode($rowe['eval_title']);
-		//$fila_export_encabezado2[] = utf8_decode($rowe['pc_title']);
-		$fila_export = array('Tarea'.$rowe['week_id'],'Foro'.$rowe['week_id'],'Eval'.$rowe['week_id'],'PC'.$rowe['week_id']);
-		if ($rowe['week_id'] > (($pagina-1)*7) &&  $rowe['week_id'] <= (7*$pagina)){
-			$ids[$rowe['week_id']] = $rowe['id'];
-			$fila.='<th>
-				<a href="#" onClick="mostrarContenido('."'tarea".$rowe['week_id']."'".');">Tarea'.$rowe['week_id'].'
-						<div class="blackboard_hide" id="tarea'.$rowe['week_id'].'">'.$rowe['work_title'].'</div>
-				</a></th>';
-			$fila.= '<th>
-				<a href="#" onClick="mostrarContenido('."'foro".$rowe['week_id']."'".');">Foro'.$rowe['week_id'].'
-						<div class="blackboard_hide" id="foro'.$rowe['week_id'].'">'.$rowe['thread_title'].'</div>
-				</a>
-				</th>';
-			/*$fila.= '<th>
-				<a href="#" onClick="mostrarContenido('."'eval".$rowe['week_id']."'".');">Eval'.$rowe['week_id'].'
-					<div class="blackboard_hide" id="eval'.$rowe['week_id'].'">'.$rowe['eval_title'].'</div>
-				</a>
-				</th>';
-			$fila.= '<th>
-				<a href="#" onClick="mostrarContenido('."'pc".$rowe['week_id']."'".');">PC'.$rowe['week_id'].'
-					<div class="blackboard_hide" id="pc'.$rowe['week_id'].'">'.$rowe['pc_title'].'</div>
-				</a>
-				</th>';*/
-		}
-		
-	}
-	$table_export[] = $fila_export_encabezado;
-	$table_export[] = $fila_export_encabezado2;
-	$fila.=  '</tr>';
-	
-	$html = '<form action="tutor.php" name="semanas" id="semanas" method="POST">
-			<div class="row">
-			Seleccione cantidad de semanas: 
-			<select name="numerosemanas" id="numerosemanas" onChange="submit();">
-			<option value="7" '.(($numero_semanas ==7)?'selected="selected"':"").'>7 Semanas</option>
-			<option value="14" '.(($numero_semanas ==14)?'selected="selected"':"").'>14 Semanas</option>
-			</select>';
-	
-	
-	if($numero_semanas == 14) {
-		$html .= '<span style="float:right;"><a href="tutor.php?page='.(($pagina == 1)?2:1).'">'.(($pagina == 1)?"Siguiente":"Anterior").'</a></span>';		
-	}
-	$html .= '<span style="float:right;"><a href="'.api_get_self().'?action=export'.$get_parameter.$get_parameter2.'">'.Display::return_icon('import_excel.png',get_lang('Export'),'','32').'</a></span>';
-	
-	$html .=	'</form>';
-	$html .= '<table class="reportes">';
-	$html .= '<tr>
-			<th ></th>';
-	for ($i=(7*$pagina-6); $i <= $pagina*7;$i++){
-		$html .= '<th colspan="2">Semana '.$i.'<a href="assign_tickets.php?id='.$ids[$i].'" class="ajax">'.Display::return_icon('edit.png', get_lang('Edit'),  array('width'=>'16','height'=>'16'), 22).'</a></th>';
-	}
-	$html .=  '</tr>';
-	$html .= $fila;
-	$sql = "SELECT u.username , u.user_id , CONCAT(u.lastname,' ', u.firstname ) as fullname , rs.week_id , sr.work_ok ,sr.thread_ok , sr.quiz_ok , sr.pc_ok , rs.course_code
-			FROM $table_students_report sr
-			JOIN $table_reporte_semanas rs ON sr.week_report_id = rs.id
-			JOIN $table_user u ON u.user_id = sr.user_id
-			WHERE rs.course_code = '$course_code'
-			ORDER BY u.lastname , u.username , rs.week_id
-	";
-	$result = Database::query($sql);
-	while ($row = Database::fetch_assoc($result)){
-		$resultadose[$row['username']][$row['week_id']] = $row;
-		if ($row['week_id'] > (($pagina-1)*7) &&  $row['week_id'] <= (7*$pagina) ){
-			$resultados[$row['username']][$row['week_id']] = $row;
-			if(count($resultados[$row['username']]) == 7 ){
-				$html.= mostrarResultadoAlumno($resultados[$row['username']],$pagina);
-			}
-		}
-		if(count($resultadose[$row['username']]) == $numero_semanas ){
-				$table_export[] = mostrarResultadoAlumnoExportar($resultadose[$row['username']],$numero_semanas);
-		}
-	}
-	$html .= '
-		  </table>';
-	return array('mostrar'=>$html,'exportar'=>$table_export);
-}
-function mostrarResultadoAlumno($datos,$pagina){
-	$inicio = (7*$pagina-6);
-	$fila = '<tr>';
-	
-	$fila.= '<td><a href="'.api_get_path(WEB_CODE_PATH).'user/userInfo.php?'.api_get_cidreq().'&uInfo='.$datos[$inicio]['user_id'].'">'.$datos[$inicio]['username'].'</a></td>';
-	foreach ($datos as $dato){
-			$fila.= '<td align="center">'.(($dato['work_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
-			$fila.= '<td align="center">'.(($dato['thread_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
-			//$fila.= '<td>'.(($dato['quiz_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
-			//$fila.= '<td>'.(($dato['pc_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
-	}
-	$fila.= '</tr>';	
-	return $fila;
-}
-function mostrarResultadoAlumnoExportar($datos ,$numero_semanas){
-	$fila = array();
-	$fila[] = utf8_decode($datos[1]['username']);
-	$fila[]=  utf8_decode($datos[1]['fullname']);
-	foreach ($datos as $dato){
-		//if ($datos['week_id'] < $numero_semanas){
-			$fila[]= ($dato['work_ok']==1)?"SI":"NO";
-			$fila[]= ($dato['thread_ok']==1)?"SI":"NO";
-			//$fila[]= ($dato['quiz_ok']==1)?"SI":"NO";
-			//$fila[]= ($dato['pc_ok']==1)?"SI":"NO";
-		//}
-	}
-	return $fila;
-}
+<?php
+function inicializarReporte($course_code){
+	$course_info = api_get_course_info($course_code);
+	$table_reporte_semanas = Database::get_main_table('rp_reporte_semanas');
+	$table_students_report = Database::get_main_table('rp_students_report');
+	$table_semanas_curso = Database::get_main_table('rp_semanas_curso');
+	$table_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
+	$table_post = Database::get_course_table(TABLE_FORUM_POST, $course_info['dbName']);
+	$table_work = Database::get_course_table(TABLE_STUDENT_PUBLICATION, $course_info['dbName']);
+	$res = Database::query("SELECT COUNT(*) as cant FROM $table_reporte_semanas WHERE course_code = '".$course_code."'");
+	$sql_semanas = "SELECT semanas FROM $table_semanas_curso WHERE course_code = '$course_code'";
+	$res_semanas = Database::query($sql_semanas);
+	$semanas = Database::fetch_object($res_semanas);
+	$obj = Database::fetch_object($res);
+	$numero_semanas = (!isset($_POST['numerosemanas']))?(($semanas->semanas==0)?7:$semanas->semanas):$_POST['numerosemanas'];
+	Database::query("REPLACE INTO $table_semanas_curso (course_code , semanas) VALUES ('$course_code','$numero_semanas')");
+	if(intval($obj->cant) != $numero_semanas){
+		
+		if(intval($obj->cant) > $numero_semanas){
+			 $sql ="DELETE FROM $table_reporte_semanas WHERE  week_id > $numero_semanas AND course_code = '$course_code'";
+			 Database::query("DELETE FROM $table_reporte_semanas WHERE  week_id > $numero_semanas AND course_code = '$course_code'");
+		}else{
+			for ($i = $obj->cant+1 ; $i <= $numero_semanas ; $i++){
+				if(!Database::query("INSERT INTO $table_reporte_semanas (week_id,course_code,forum_id,work_id,quiz_id,pc_id)
+						VALUES ('$i','$course_code','0','0','0','0' )")){							
+						return false;
+				}
+			}
+		}		
+	}
+	
+	$sql = "REPLACE INTO $table_students_report (user_id,week_report_id, work_ok , thread_ok , quiz_ok , pc_ok)
+			SELECT cu.user_id, rs.id, 0, 0, 0, 0
+			FROM $table_course_rel_user cu
+			LEFT JOIN $table_reporte_semanas rs ON cu.course_code = rs.course_code
+			WHERE cu.status = '5' AND rs.course_code = '$course_code'
+			ORDER BY cu.user_id, rs.id";
+	if(!Database::query($sql)){
+		return false;
+	}else{
+		$pagina = (!isset($_GET['page']))?1:$_GET['page'];
+		Database::query("UPDATE $table_students_report sr SET sr.work_ok = 1
+		WHERE CONCAT (sr.user_id,',',sr.week_report_id)
+		IN (SELECT DISTINCT CONCAT(w.user_id,',',rs.id)
+		FROM $table_work w  JOIN $table_reporte_semanas rs ON w.parent_id = rs.work_id)");
+		Database::query("UPDATE $table_students_report sr SET sr.thread_ok = 1
+		WHERE CONCAT (sr.user_id,',',sr.week_report_id)
+		IN (SELECT DISTINCT CONCAT(f.poster_id,',',rs.id)
+		FROM $table_post f  JOIN $table_reporte_semanas rs ON f.thread_id = rs.forum_id)");
+		return mostrarResultados($course_info,$numero_semanas,$pagina);
+	}
+	
+}
+function mostrarResultados($course_info,$numero_semanas, $pagina){
+	$course_code = $course_info['code'];
+	$table_reporte_semanas = Database::get_main_table('rp_reporte_semanas');
+	$table_students_report = Database::get_main_table('rp_students_report');
+	$table_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
+	$table_user = Database::get_main_table(TABLE_MAIN_USER );
+	$table_thread = Database::get_course_table(TABLE_FORUM_THREAD, $course_info['dbName']);
+	$table_work = Database::get_course_table(TABLE_STUDENT_PUBLICATION, $course_info['dbName']);
+	
+	$resultados = array();
+	$table_export = array();
+	$sql_encabezado = "SELECT rs.id as id,rs.week_id, w.title AS work_title,  t.thread_title ,'EVALUACION' as eval_title ,'QUIZ' as pc_title
+						FROM $table_reporte_semanas rs
+						LEFT JOIN $table_thread t ON t.thread_id =  rs.forum_id
+						LEFT JOIN $table_work w ON w.id = rs.work_id
+						WHERE rs.course_code = '$course_code'
+						ORDER BY rs.week_id";
+	$result_encabezado = Database::query($sql_encabezado) ;
+	$ids = array();
+	$fila = '<tr>
+		<th ></th>';
+	$fila_export_encabezado = array(null,null);
+	$fila_export_encabezado2 = array(null,ull);
+	while ($rowe = Database::fetch_assoc($result_encabezado)){
+		$fila_export_encabezado[] =  utf8_decode('Tarea'.$rowe['week_id']);
+		$fila_export_encabezado[] =  utf8_decode('Foro'.$rowe['week_id']);
+		//$fila_export_encabezado[] =  utf8_decode('Eval'.$rowe['week_id']);
+		//$fila_export_encabezado[] =  utf8_decode('PC'.$rowe['week_id']);
+		$fila_export_encabezado2[] = utf8_decode($rowe['work_title']);
+		$fila_export_encabezado2[] = utf8_decode($rowe['thread_title']);
+		//$fila_export_encabezado2[] = utf8_decode($rowe['eval_title']);
+		//$fila_export_encabezado2[] = utf8_decode($rowe['pc_title']);
+		$fila_export = array('Tarea'.$rowe['week_id'],'Foro'.$rowe['week_id'],'Eval'.$rowe['week_id'],'PC'.$rowe['week_id']);
+		if ($rowe['week_id'] > (($pagina-1)*7) &&  $rowe['week_id'] <= (7*$pagina)){
+			$ids[$rowe['week_id']] = $rowe['id'];
+			$fila.='<th>
+				<a href="#" onClick="mostrarContenido('."'tarea".$rowe['week_id']."'".');">Tarea'.$rowe['week_id'].'
+						<div class="blackboard_hide" id="tarea'.$rowe['week_id'].'">'.$rowe['work_title'].'</div>
+				</a></th>';
+			$fila.= '<th>
+				<a href="#" onClick="mostrarContenido('."'foro".$rowe['week_id']."'".');">Foro'.$rowe['week_id'].'
+						<div class="blackboard_hide" id="foro'.$rowe['week_id'].'">'.$rowe['thread_title'].'</div>
+				</a>
+				</th>';
+			/*$fila.= '<th>
+				<a href="#" onClick="mostrarContenido('."'eval".$rowe['week_id']."'".');">Eval'.$rowe['week_id'].'
+					<div class="blackboard_hide" id="eval'.$rowe['week_id'].'">'.$rowe['eval_title'].'</div>
+				</a>
+				</th>';
+			$fila.= '<th>
+				<a href="#" onClick="mostrarContenido('."'pc".$rowe['week_id']."'".');">PC'.$rowe['week_id'].'
+					<div class="blackboard_hide" id="pc'.$rowe['week_id'].'">'.$rowe['pc_title'].'</div>
+				</a>
+				</th>';*/
+		}
+		
+	}
+	$table_export[] = $fila_export_encabezado;
+	$table_export[] = $fila_export_encabezado2;
+	$fila.=  '</tr>';
+	
+	$html = '<form action="tutor.php" name="semanas" id="semanas" method="POST">
+			<div class="row">
+			Seleccione cantidad de semanas: 
+			<select name="numerosemanas" id="numerosemanas" onChange="submit();">
+			<option value="7" '.(($numero_semanas ==7)?'selected="selected"':"").'>7 Semanas</option>
+			<option value="14" '.(($numero_semanas ==14)?'selected="selected"':"").'>14 Semanas</option>
+			</select>';
+	
+	
+	if($numero_semanas == 14) {
+		$html .= '<span style="float:right;"><a href="tutor.php?page='.(($pagina == 1)?2:1).'">'.(($pagina == 1)?"Siguiente":"Anterior").'</a></span>';		
+	}
+	$html .= '<span style="float:right;"><a href="'.api_get_self().'?action=export'.$get_parameter.$get_parameter2.'">'.Display::return_icon('import_excel.png',get_lang('Export'),'','32').'</a></span>';
+	
+	$html .=	'</form>';
+	$html .= '<table class="reportes">';
+	$html .= '<tr>
+			<th ></th>';
+	for ($i=(7*$pagina-6); $i <= $pagina*7;$i++){
+		$html .= '<th colspan="2">Semana '.$i.'<a href="assign_tickets.php?id='.$ids[$i].'" class="ajax">'.Display::return_icon('edit.png', get_lang('Edit'),  array('width'=>'16','height'=>'16'), 22).'</a></th>';
+	}
+	$html .=  '</tr>';
+	$html .= $fila;
+	$sql = "SELECT u.username , u.user_id , CONCAT(u.lastname,' ', u.firstname ) as fullname , rs.week_id , sr.work_ok ,sr.thread_ok , sr.quiz_ok , sr.pc_ok , rs.course_code
+			FROM $table_students_report sr
+			JOIN $table_reporte_semanas rs ON sr.week_report_id = rs.id
+			JOIN $table_user u ON u.user_id = sr.user_id
+			WHERE rs.course_code = '$course_code'
+			ORDER BY u.lastname , u.username , rs.week_id
+	";
+	$result = Database::query($sql);
+	while ($row = Database::fetch_assoc($result)){
+		$resultadose[$row['username']][$row['week_id']] = $row;
+		if ($row['week_id'] > (($pagina-1)*7) &&  $row['week_id'] <= (7*$pagina) ){
+			$resultados[$row['username']][$row['week_id']] = $row;
+			if(count($resultados[$row['username']]) == 7 ){
+				$html.= mostrarResultadoAlumno($resultados[$row['username']],$pagina);
+			}
+		}
+		if(count($resultadose[$row['username']]) == $numero_semanas ){
+				$table_export[] = mostrarResultadoAlumnoExportar($resultadose[$row['username']],$numero_semanas);
+		}
+	}
+	$html .= '
+		  </table>';
+	return array('mostrar'=>$html,'exportar'=>$table_export);
+}
+function mostrarResultadoAlumno($datos,$pagina){
+	$inicio = (7*$pagina-6);
+	$fila = '<tr>';
+	
+	$fila.= '<td><a href="'.api_get_path(WEB_CODE_PATH).'user/userInfo.php?'.api_get_cidreq().'&uInfo='.$datos[$inicio]['user_id'].'">'.$datos[$inicio]['username'].'</a></td>';
+	foreach ($datos as $dato){
+			$fila.= '<td align="center">'.(($dato['work_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
+			$fila.= '<td align="center">'.(($dato['thread_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
+			//$fila.= '<td>'.(($dato['quiz_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
+			//$fila.= '<td>'.(($dato['pc_ok']==1)?Display::return_icon('check.png'):Display::return_icon('aspa.png')).'</td>';
+	}
+	$fila.= '</tr>';	
+	return $fila;
+}
+function mostrarResultadoAlumnoExportar($datos ,$numero_semanas){
+	$fila = array();
+	$fila[] = utf8_decode($datos[1]['username']);
+	$fila[]=  utf8_decode($datos[1]['fullname']);
+	foreach ($datos as $dato){
+		//if ($datos['week_id'] < $numero_semanas){
+			$fila[]= ($dato['work_ok']==1)?"SI":"NO";
+			$fila[]= ($dato['thread_ok']==1)?"SI":"NO";
+			//$fila[]= ($dato['quiz_ok']==1)?"SI":"NO";
+			//$fila[]= ($dato['pc_ok']==1)?"SI":"NO";
+		//}
+	}
+	return $fila;
+}
 ?>

+ 0 - 0
plugin/ticket/s/update_report.php → plugin/ticket/src/update_report.php