code Format - refs #6715

1.9.x
Francis Gonzales 12 years ago
parent b0fd490384
commit 6fdb56391a
  1. 17
      plugin/ticket/config.php
  2. 2
      plugin/ticket/src/course_user_list.php
  3. 3
      plugin/ticket/src/download.php
  4. 2
      plugin/ticket/src/index.php
  5. 14
      plugin/ticket/src/myticket.php
  6. 419
      plugin/ticket/src/new_ticket.php
  7. 242
      plugin/ticket/src/report.php
  8. 188
      plugin/ticket/src/send_ticket.php
  9. 382
      plugin/ticket/src/ticket.class.php
  10. 34
      plugin/ticket/src/ticket_assign_log.php
  11. 327
      plugin/ticket/src/ticket_details.php
  12. 25
      plugin/ticket/src/tutor.php
  13. 178
      plugin/ticket/src/tutor_report.lib.php
  14. 3
      plugin/ticket/src/update_report.php

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.plugin.ticket
@ -36,12 +37,12 @@ define('CAT_DOCU', 'DOC');
define('CAT_FORO', 'FOR');
define('CAT_ANNU', 'ANN');
require_once __DIR__.'/../../main/inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH).'plugin.class.php';
require_once api_get_path(LIBRARY_PATH).'course.lib.php';
require_once api_get_path(LIBRARY_PATH).'mail.lib.inc.php';
require_once api_get_path(LIBRARY_PATH).'export.lib.inc.php';
require_once __DIR__ . '/../../main/inc/global.inc.php';
require_once api_get_path(LIBRARY_PATH) . 'plugin.class.php';
require_once api_get_path(LIBRARY_PATH) . 'course.lib.php';
require_once api_get_path(LIBRARY_PATH) . 'mail.lib.inc.php';
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.'/src/ticket.class.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 . '/src/ticket.class.php';

@ -13,7 +13,7 @@ $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);
$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>

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
*
@ -53,4 +54,4 @@ if (Security::check_abs_path($full_file_name, $path_message_attach)) {
DocumentManager::file_send_for_download($full_file_name, true, $title);
}
exit;
exit;

@ -8,4 +8,4 @@
* Code
*/
require_once '../config.php';
header('location:'.api_get_path(WEB_PLUGIN_PATH).PLUGIN_NAME.'/src/myticket.php?message=success');
header('location:' . api_get_path(WEB_PLUGIN_PATH) . PLUGIN_NAME . '/src/myticket.php?message=success');

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
* This script is the Tickets plugin main entry point
@ -20,14 +21,14 @@ api_block_anonymous_users();
$libPath = api_get_path(LIBRARY_PATH);
$webLibPath = api_get_path(WEB_LIBRARY_PATH);
require_once $libPath. 'formvalidator/FormValidator.class.php';
require_once $libPath . 'formvalidator/FormValidator.class.php';
require_once $libPath . '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=\''.$webLibPath.'javascript/indicator.gif\' />"); },
$("div#"+div_course).html("<img src=\'' . $webLibPath . 'javascript/indicator.gif\' />"); },
type: "POST",
url: "ticket_assign_log.php",
data: "ticket_id="+ticket_id,
@ -90,8 +91,7 @@ div.row div.formw2 {
$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');
$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;
}
@ -198,11 +198,11 @@ if ($isAdmin) {
'<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 . '">' .
'<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">' .
'<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;">' .
@ -320,4 +320,4 @@ if ($isAdmin) {
}
$table->display();
Display::display_footer();
Display::display_footer();

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.plugin.ticket
@ -6,16 +7,16 @@
/**
* INIT SECTION
*/
$language_file = array('messages','userInfo', 'admin');
$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';
require_once api_get_path(LIBRARY_PATH) . 'formvalidator/FormValidator.class.php';
require_once api_get_path(LIBRARY_PATH) . 'group_portal_manager.lib.php';
$htmlHeadXtra[]='
$htmlHeadXtra[] = '
<script>
$(document).ready(function(){
document.getElementById("divEmail").style.display="none";
@ -67,22 +68,22 @@ function validate() {
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").'");
alert("' . $plugin->get_lang("ValidUser") . '");
return false;
}else if( id == 0){
alert("'.$plugin->get_lang("ValidType").'");
alert("' . $plugin->get_lang("ValidType") . '");
return false;
}else if(document.getElementById("subject").value == ""){
alert("'.$plugin->get_lang("ValidSubject").'");
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").'");
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").'");
alert("' . $plugin->get_lang("ValidEmail") . '");
return false;
}else if(fckEditor1val ==""){
alert("'.$plugin->get_lang("ValidMessage").'");
alert("' . $plugin->get_lang("ValidMessage") . '");
return false;
}
}
@ -106,7 +107,7 @@ function add_image_form() {
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;<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");
@ -135,20 +136,21 @@ div.divTicket {
</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').'
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" />';
$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" />';
/**
* @param $s
* @return string
*/
function js_str($s) {
return '"'.addcslashes($s, "\0..\37\"\\").'"';
function js_str($s)
{
return '"' . addcslashes($s, "\0..\37\"\\") . '"';
}
/**
@ -157,143 +159,145 @@ function js_str($s) {
* @param $key
* @return string
*/
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 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"
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>
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" >
$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 = '
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="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 .= '
//$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 = '
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="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 .='
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>
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>
// 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>
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">
<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>
// 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>
// 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>
$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">
@ -301,67 +305,72 @@ function show_form_send_ticket(){
</div></span>
</div>
</div>';
echo '<div class="row">
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'))).')
<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">
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 class="formw2"><button class="save" name="compose" type="submit" id="btnsubmit">' . get_lang('SendMessage') . '</button>
</div>
</div>';
echo '</form></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'));
}
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";
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)";
$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;
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
@ -372,76 +381,72 @@ function get_number_of_users() {
*/
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
$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,")."
" . (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 ".
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';
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);
$from = intval($from);
$number_of_items = intval($number_of_items);
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$res = Database::query($sql);
$res = Database::query($sql);
$users = array ();
$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').'"/>
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;
$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">
<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>
<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'])){
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);
@ -460,7 +465,7 @@ if (!isset($_POST['compose'])) {
}
//if(isset($_GET['user_request']))
show_form_send_ticket();
}else{
} else {
save_ticket();
}

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.plugin.ticket
@ -6,27 +7,27 @@
/**
* INIT SECTION
*/
$language_file= array('messages','userInfo', 'admin','trad4all');
$cidReset = true;
$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';
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();
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[]='
$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'".' });
$( "#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() != ""){
@ -71,54 +72,56 @@ div.formulario {
</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" />';
$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['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'));
$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 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"
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" >
$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" >
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">
$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>
@ -126,35 +129,37 @@ function show_form(){
<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">
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";
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)";
$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 . "%') ";
}
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;
$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
@ -165,71 +170,67 @@ function get_number_of_users() {
*/
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
$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,")."
" . (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 ".
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';
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);
$from = intval($from);
$number_of_items = intval($number_of_items);
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from,$number_of_items";
$res = Database::query($sql);
$res = Database::query($sql);
$users = array ();
$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').'"/>
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;
$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">
<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'])){
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);
@ -252,23 +253,24 @@ 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' ";
$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 != ''){
$end_date = $_POST['keyword_start_date_end'];
if ($start_date != '' || $end_date != '') {
$sql .= " HAVING ";
if ($start_date != '') $sql .= " access_date >= '$start_date' ";
if ($start_date != '')
$sql .= " access_date >= '$start_date' ";
if ($end_date != '') {
$sql = ($start_date == '')?$sql:($sql." AND ");
$sql .= " access_date <= '$end_date' ";
$sql = ($start_date == '') ? $sql : ($sql . " AND ");
$sql .= " access_date <= '$end_date' ";
}
}
$result = Database::query($sql);
$table_result = new SortableTable();
@ -277,14 +279,12 @@ if (isset($_POST['report'])) {
$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']));
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{
} else {
show_form();
}

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
*
@ -7,16 +8,16 @@
/**
* INIT SECTION
*/
$language_file = array('messages','userInfo', 'admin');
$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';
require_once api_get_path(LIBRARY_PATH) . 'formvalidator/FormValidator.class.php';
require_once api_get_path(LIBRARY_PATH) . 'group_portal_manager.lib.php';
$htmlHeadXtra[]='
$htmlHeadXtra[] = '
<script>
$(document).ready(function(){
if(document.getElementById("divEmail")){
@ -53,19 +54,19 @@ function validate() {
var selected = document.getElementById("category_id").selectedIndex;
var id = document.getElementById("category_id").options[selected].value;
if( id == 0){
alert("'.$plugin->get_lang("ValidType").'");
alert("' . $plugin->get_lang("ValidType") . '");
return false;
}else if(document.getElementById("subject").value == ""){
alert("'.$plugin->get_lang("ValidSubject").'");
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").'");
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").'");
alert("' . $plugin->get_lang("ValidEmail") . '");
return false;
}else if(fckEditor1val ==""){
alert("'.$plugin->get_lang("ValidMessage").'");
alert("' . $plugin->get_lang("ValidMessage") . '");
return false;
}
}
@ -89,7 +90,7 @@ function add_image_form() {
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;<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");
@ -128,79 +129,82 @@ div.divTicket {
</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').'
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" />';
$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_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 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"
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>
$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>
$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>
$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>
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>
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">
<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>
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>
echo '<div class="row">
<div class="label2">' . get_lang('FilesAttachment') . '</div>
<div class="formw2">
<span id="filepaths">
<div id="filepath_1">
@ -208,46 +212,48 @@ function show_form_send_ticket(){
</div></span>
</div>
</div>';
echo '<div class="row">
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'))).')
<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">
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 class="formw2"><button class="save" name="compose" type="submit" id="btnsubmit">' . get_lang('SendMessage') . '</button>
</div>
</div>';
echo '</form></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'));
}
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();
if (!isset($_POST['compose'])) {
Display::display_header(get_lang('ComposeMessage'));
show_form_send_ticket();
} else {
save_ticket();
}
Display::display_footer();
Display::display_footer();

@ -1,20 +1,24 @@
<?php
/* For licensing terms, see /license.txt */
/**
* Declaration of TicketManager class
* @package chamilo.plugin.ticket
*/
/**
* Class TicketManager
*
*/
class TicketManager
{
/**
* Constructor
*/
function __construct()
{
}
/**
@ -24,10 +28,10 @@ class TicketManager
public static function get_all_tickets_categories()
{
$table_support_category = Database::get_main_table(
TABLE_TICKET_CATEGORY
TABLE_TICKET_CATEGORY
);
$table_support_project = Database::get_main_table(
TABLE_TICKET_PROJECT
TABLE_TICKET_PROJECT
);
$sql = "SELECT category.*, project.other_area , project.email
FROM " . $table_support_category . " category," . $table_support_project . " project
@ -76,24 +80,12 @@ class TicketManager
* @return bool
*/
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
) {
$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_TICKET_TICKET);
$table_support_category = Database::get_main_table(
TABLE_TICKET_CATEGORY
TABLE_TICKET_CATEGORY
);
$course_id = intval($course_id);
$category_id = intval($category_id);
@ -152,11 +144,8 @@ class TicketManager
}
if ($ticket_id != 0) {
$ticket_code = "A" . str_pad(
(int)$ticket_id,
11,
"0",
STR_PAD_LEFT
);
(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);
@ -170,45 +159,34 @@ class TicketManager
$user = UserManager::get_user_info_by_id($request_user);
$helpDeskMessage = '<table>
<tr>
<td width="100px"><b>'.get_lang('User').'</b></td>
<td width="100px"><b>' . get_lang('User') . '</b></td>
<td width="400px">' . $user['firstname']
. ' ' . $user['lastname'] . '</td>
. ' ' . $user['lastname'] . '</td>
</tr>
<tr>
<td width="100px"><b>'.get_lang('Username').'</b></td>
<td width="100px"><b>' . get_lang('Username') . '</b></td>
<td width="400px">' . $user['username'] . '</td>
</tr>
<tr>
<td width="100px"><b>'.get_lang('Date').'</b></td>
<td width="100px"><b>' . get_lang('Date') . '</b></td>
<td width="400px">' . api_convert_and_format_date($now, DATE_TIME_FORMAT_LONG) . '</td>
</tr>
<tr>
<td width="100px"><b>'.get_lang('Topic').'</b></td>
<td width="100px"><b>' . get_lang('Topic') . '</b></td>
<td width="400px">' . $subject . '</td>
</tr>
<tr>
<td width="100px"><b>'.get_lang('Description').'</b></td>
<td width="100px"><b>' . get_lang('Description') . '</b></td>
<td width="400px">' . $content . '</td>
</tr>
</table>';
api_mail_html(
'Soporte virtual',
$email,
"[SOPORTE] Incidente Reenviado de Soporte Virtual",
$helpDeskMessage,
$user['firstname'] . ' ' . $user['lastname'],
$personalEmail,
array('cc' => 'soportevirtual@usil.edu.pe'),
$data_files
'Soporte virtual', $email, "[SOPORTE] Incidente Reenviado de Soporte Virtual", $helpDeskMessage, $user['firstname'] . ' ' . $user['lastname'], $personalEmail, array('cc' => 'soportevirtual@usil.edu.pe'), $data_files
);
$studentMessage = '<p>Su consulta fue reenviada al area responsable : <a href="mailto:' . $email . '">' . $email . '</a></p>';
$studentMessage .= '<p>La respuesta a su consulta ser&aacute; enviada al correo : <a href="#">' . $personalEmail . '</a></p>';
self::insert_message(
$ticket_id,
get_lang('MessageResent'),
$studentMessage,
null,
1
$ticket_id, get_lang('MessageResent'), $studentMessage, null, 1
);
}
@ -259,16 +237,12 @@ class TicketManager
$sender = api_get_user_info($insert_id);
$message = '<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 . '/src/ticket_details.php?ticket_id=' . $ticket_id . '">Ticket</a></p>';
WEB_PLUGIN_PATH
) . PLUGIN_NAME . '/src/ticket_details.php?ticket_id=' . $ticket_id . '">Ticket</a></p>';
api_mail_html(
$info['firstname'] . " " . $info['lastname'],
$info['mail'],
"[TICKETS] Asignacion de Ticket #$ticket_id ",
$message,
null, // sender name
null, // sender e-mail
array('cc' => $sender['email']) // should be support e-mail (platform admin) here
$info['firstname'] . " " . $info['lastname'], $info['mail'], "[TICKETS] Asignacion de Ticket #$ticket_id ", $message, null, // sender name
null, // sender e-mail
array('cc' => $sender['email']) // should be support e-mail (platform admin) here
);
}
}
@ -285,13 +259,7 @@ class TicketManager
* @return bool
*/
public static function insert_message(
$ticket_id,
$subject,
$content,
$file_attachments,
$user_id,
$status = 'NOL',
$sendConfirmation = false
$ticket_id, $subject, $content, $file_attachments, $user_id, $status = 'NOL', $sendConfirmation = false
)
{
global $data_files;
@ -302,19 +270,19 @@ class TicketManager
$status = Database::escape_string($status);
$table_support_messages = Database::get_main_table(
TABLE_TICKET_MESSAGE
TABLE_TICKET_MESSAGE
);
$table_support_tickets = Database::get_main_table(TABLE_TICKET_TICKET);
$table_support_message_attachments = Database::get_main_table(TABLE_TICKET_MESSAGE_ATTACHMENTS);
if ($sendConfirmation) {
$form = '<form action="ticket_details.php?ticket_id=' . $ticket_id . '" id="confirmticket" method="POST" >
<p>'.get_lang('TicketWasThisAnswerSatisfying').'</p>
<input id="responseyes" type="submit" value="'.get_lang('Yes').'" name="response" />
<input id="responseno" type="submit" value="'.get_lang('No').'" name="response" />
<p>' . get_lang('TicketWasThisAnswerSatisfying') . '</p>
<input id="responseyes" type="submit" value="' . get_lang('Yes') . '" name="response" />
<input id="responseno" type="submit" value="' . get_lang('No') . '" name="response" />
</form>';
$content .= $form;
Database::query(
"UPDATE $table_support_tickets SET status_id='XCF' WHERE ticket_id = '$ticket_id'"
"UPDATE $table_support_tickets SET status_id='XCF' WHERE ticket_id = '$ticket_id'"
);
}
$sql_message_id = "SELECT COUNT(*) as total_messages
@ -370,10 +338,7 @@ class TicketManager
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
$file_attach, $ticket_id, $message_id, $message_attch_id
);
$message_attch_id++;
} else {
@ -395,26 +360,22 @@ class TicketManager
* @return array
*/
public static function save_message_attachment_file(
$file_attach,
$ticket_id,
$message_id,
$message_attch_id
$file_attach, $ticket_id, $message_id, $message_attch_id
)
{
$now = api_get_utc_datetime();
$user_id = api_get_user_id();
$ticket_id = intval($ticket_id);
$new_file_name = add_ext_on_mime(
stripslashes($file_attach['name']),
$file_attach['type']
stripslashes($file_attach['name']), $file_attach['type']
);
$file_name = $file_attach['name'];
$table_support_message_attachments = Database::get_main_table(
TABLE_TICKET_MESSAGE_ATTACHMENTS
TABLE_TICKET_MESSAGE_ATTACHMENTS
);
if (!filter_extension($new_file_name)) {
Display :: display_error_message(
get_lang('UplUnableToSaveFileFilteredExtension')
get_lang('UplUnableToSaveFileFilteredExtension')
);
} else {
$new_file_name = uniqid('');
@ -422,9 +383,7 @@ class TicketManager
$path_message_attach = $path_attachment . 'plugin_ticket_messageattch/';
if (!file_exists($path_message_attach)) {
@mkdir(
$path_message_attach,
api_get_permissions_for_new_directories(),
true
$path_message_attach, api_get_permissions_for_new_directories(), true
);
}
$new_path = $path_message_attach . $new_file_name;
@ -473,22 +432,19 @@ class TicketManager
* @return array
*/
public static function get_tickets_by_user_id(
$from,
$number_of_items,
$column,
$direction,
$user_id = null
) {
$from, $number_of_items, $column, $direction, $user_id = null
)
{
$table_support_category = Database::get_main_table(
TABLE_TICKET_CATEGORY
TABLE_TICKET_CATEGORY
);
$table_support_tickets = Database::get_main_table(TABLE_TICKET_TICKET);
$table_support_priority = Database::get_main_table(
TABLE_TICKET_PRIORITY
TABLE_TICKET_PRIORITY
);
$table_support_status = Database::get_main_table(TABLE_TICKET_STATUS);
$table_support_messages = Database::get_main_table(
TABLE_TICKET_MESSAGE
TABLE_TICKET_MESSAGE
);
$table_main_user = Database::get_main_table(TABLE_MAIN_USER);
$table_main_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
@ -528,7 +484,7 @@ class TicketManager
$sql .= " AND request_user = '$user_id' ";
}
$keyword_unread = Database::escape_string(
trim($_GET['keyword_unread'])
trim($_GET['keyword_unread'])
);
//Search simple
if (isset($_GET['submit_simple'])) {
@ -546,34 +502,34 @@ class TicketManager
//Search advanced
if (isset($_GET['submit_advanced'])) {
$keyword_category = Database::escape_string(
trim($_GET['keyword_category'])
trim($_GET['keyword_category'])
);
$keyword_request_user = Database::escape_string(
trim($_GET['keyword_request_user'])
trim($_GET['keyword_request_user'])
);
$keyword_admin = Database::escape_string(
trim($_GET['keyword_admin'])
trim($_GET['keyword_admin'])
);
$keyword_start_date_start = Database::escape_string(
trim($_GET['keyword_start_date_start'])
trim($_GET['keyword_start_date_start'])
);
$keyword_start_date_end = Database::escape_string(
trim($_GET['keyword_start_date_end'])
trim($_GET['keyword_start_date_end'])
);
$keyword_status = Database::escape_string(
trim($_GET['keyword_status'])
trim($_GET['keyword_status'])
);
$keyword_source = Database::escape_string(
trim($_GET['keyword_source'])
trim($_GET['keyword_source'])
);
$keyword_priority = Database::escape_string(
trim($_GET['keyword_priority'])
trim($_GET['keyword_priority'])
);
$keyword_range = Database::escape_string(
trim($_GET['keyword_dates'])
trim($_GET['keyword_dates'])
);
$keyword_course = Database::escape_string(
trim($_GET['keyword_course'])
trim($_GET['keyword_course'])
);
if ($keyword_category != '') {
@ -614,7 +570,6 @@ class TicketManager
)
)";
}
}
if ($keyword_unread == 'yes') {
$sql .= " AND ticket.ticket_id IN (SELECT ticket.ticket_id
@ -660,29 +615,28 @@ class TicketManager
$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>';
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['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>';
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;">'.get_lang('ToBeAssigned').'</span>';
$row['responsable'] = '<span style="color:#ff0000;">' . get_lang('ToBeAssigned') . '</span>';
} else {
$row['responsable'] = '<span style="color:#00ff00;">'.get_lang('MessageResent').'</span>';
$row['responsable'] = '<span style="color:#00ff00;">' . get_lang('MessageResent') . '</span>';
}
}
switch ($row['source']) {
@ -703,16 +657,14 @@ class TicketManager
$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;';
'synthese_view.gif', get_lang('Info')
) . '</a>&nbsp;&nbsp;';
if ($row['priority_id'] == 'ALT' && $row['status_id'] != 'CLS') {
$actions .= '<img src="'.api_get_path(WEB_CODE_PATH).'img/exclamation.png" border="0" />';
$actions .= '<img src="' . api_get_path(WEB_CODE_PATH) . '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>';
$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>';
}
@ -728,21 +680,17 @@ class TicketManager
$row['col8'],
$actions,
eregi_replace(
"[\n|\r|\n\r|\r\n]",
' ',
strip_tags($row['col9'])
"[\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;';
'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>';
$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;
@ -751,7 +699,7 @@ class TicketManager
$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="'.api_get_path(WEB_CODE_PATH).'img/admin_star.png" border="0" />';
$actions .= '<img src="' . api_get_path(WEB_CODE_PATH) . 'img/admin_star.png" border="0" />';
}
$ticket = array(
$row['col0'],
@ -765,13 +713,12 @@ class TicketManager
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') . '"/>
'Historial'
) . '" alt="' . get_lang('Historial') . '"/>
<div class="blackboard_hide" id="div_' . $row['ticket_id'] . '">&nbsp;&nbsp;</div>
</a>&nbsp;&nbsp;';
}
@ -789,15 +736,15 @@ class TicketManager
{
$user_id = intval($user_id);
$table_support_category = Database::get_main_table(
TABLE_TICKET_CATEGORY
TABLE_TICKET_CATEGORY
);
$table_support_tickets = Database::get_main_table(TABLE_TICKET_TICKET);
$table_support_priority = Database::get_main_table(
TABLE_TICKET_PRIORITY
TABLE_TICKET_PRIORITY
);
$table_support_status = Database::get_main_table(TABLE_TICKET_STATUS);
$table_support_messages = Database::get_main_table(
TABLE_TICKET_MESSAGE
TABLE_TICKET_MESSAGE
);
$table_main_user = Database::get_main_table(TABLE_MAIN_USER);
$table_main_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
@ -805,8 +752,8 @@ class TicketManager
$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
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' ";
@ -820,39 +767,39 @@ class TicketManager
}
}
$keyword_unread = Database::escape_string(
trim($_GET['keyword_unread'])
trim($_GET['keyword_unread'])
);
//Search advanced
if (isset($_GET['submit_advanced'])) {
$keyword_category = Database::escape_string(
trim($_GET['keyword_category'])
trim($_GET['keyword_category'])
);
$keyword_request_user = Database::escape_string(
trim($_GET['keyword_request_user'])
trim($_GET['keyword_request_user'])
);
$keyword_admin = Database::escape_string(
trim($_GET['keyword_admin'])
trim($_GET['keyword_admin'])
);
$keyword_start_date_start = Database::escape_string(
trim($_GET['keyword_start_date_start'])
trim($_GET['keyword_start_date_start'])
);
$keyword_start_date_end = Database::escape_string(
trim($_GET['keyword_start_date_end'])
trim($_GET['keyword_start_date_end'])
);
$keyword_status = Database::escape_string(
trim($_GET['keyword_status'])
trim($_GET['keyword_status'])
);
$keyword_source = Database::escape_string(
trim($_GET['keyword_source'])
trim($_GET['keyword_source'])
);
$keyword_priority = Database::escape_string(
trim($_GET['keyword_priority'])
trim($_GET['keyword_priority'])
);
$keyword_range = Database::escape_string(
trim($_GET['keyword_dates'])
trim($_GET['keyword_dates'])
);
$keyword_course = Database::escape_string(
trim($_GET['keyword_course'])
trim($_GET['keyword_course'])
);
if ($keyword_category != '') {
@ -887,7 +834,6 @@ class TicketManager
$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)";
@ -910,18 +856,18 @@ class TicketManager
public static function get_ticket_detail_by_id($ticket_id, $user_id)
{
$table_support_category = Database::get_main_table(
TABLE_TICKET_CATEGORY
TABLE_TICKET_CATEGORY
);
$table_support_tickets = Database::get_main_table(TABLE_TICKET_TICKET);
$table_support_priority = Database::get_main_table(
TABLE_TICKET_PRIORITY
TABLE_TICKET_PRIORITY
);
$table_support_status = Database::get_main_table(TABLE_TICKET_STATUS);
$table_support_messages = Database::get_main_table(
TABLE_TICKET_MESSAGE
TABLE_TICKET_MESSAGE
);
$table_support_message_attachments = Database::get_main_table(
TABLE_TICKET_MESSAGE_ATTACHMENTS
TABLE_TICKET_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
@ -935,40 +881,33 @@ class TicketManager
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()
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()
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()
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>';
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>';
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 ";
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', '');
@ -984,14 +923,14 @@ class TicketManager
$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>';
WEB_PATH
) . 'main/admin/user_information.php?user_id=' . $row['user_id'] . '">' . $row['firstname'] . ' ' . $row['lastname'] . '</a>';
$sql_atachment = "SELECT * FROM " . TABLE_TICKET_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=';
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;
}
@ -1010,11 +949,11 @@ class TicketManager
public static function update_message_status($ticket_id, $user_id)
{
$table_support_messages = Database::get_main_table(
TABLE_TICKET_MESSAGE
TABLE_TICKET_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' ";
) . "' ,sys_lastedit_datetime ='" . $now . "' WHERE ticket_id ='$ticket_id' ";
if (api_is_platform_admin()) {
$sql .= " AND sys_insert_user_id = '$user_id'";
@ -1025,7 +964,7 @@ class TicketManager
Database::query($sql);
if (Database::affected_rows() > 0) {
Database::query(
"UPDATE " . Database::get_main_table(TABLE_TICKET_TICKET) . " SET status_id = 'PND' WHERE ticket_id ='$ticket_id' AND status_id = 'NAT'"
"UPDATE " . Database::get_main_table(TABLE_TICKET_TICKET) . " SET status_id = 'PND' WHERE ticket_id ='$ticket_id' AND status_id = 'NAT'"
);
return true;
} else {
@ -1040,13 +979,12 @@ class TicketManager
* @return bool
*/
public static function update_ticket_status(
$status_id,
$ticket_id,
$user_id
) {
$status_id, $ticket_id, $user_id
)
{
$table_support_tickets = Database::get_main_table(TABLE_TICKET_TICKET);
$table_support_messages = Database::get_main_table(
TABLE_TICKET_MESSAGE
TABLE_TICKET_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'";
@ -1065,7 +1003,7 @@ class TicketManager
{
$table_support_tickets = Database::get_main_table(TABLE_TICKET_TICKET);
$table_support_messages = Database::get_main_table(
TABLE_TICKET_MESSAGE
TABLE_TICKET_MESSAGE
);
$table_main_user = Database::get_main_table(TABLE_MAIN_USER);
$table_main_admin = Database::get_main_table(TABLE_MAIN_ADMIN);
@ -1081,7 +1019,6 @@ class TicketManager
$res = Database::query($sql);
$obj = Database::fetch_object($res);
return $obj->unread;
}
/**
@ -1116,7 +1053,7 @@ class TicketManager
$table_support_tickets = Database::get_main_table(TABLE_TICKET_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'";
) . "' ,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);
}
@ -1127,7 +1064,7 @@ class TicketManager
public static function get_assign_log($ticket_id)
{
$table_support_assigned_log = Database::get_main_table(
TABLE_TICKET_ASSIGNED_LOG
TABLE_TICKET_ASSIGNED_LOG
);
$sql = "SELECT log.* FROM " . TABLE_TICKET_ASSIGNED_LOG . " log WHERE log.ticket_id = '$ticket_id' ORDER BY log.assigned_date";
$result = Database::query($sql);
@ -1135,23 +1072,21 @@ class TicketManager
while ($row = Database::fetch_assoc($result)) {
if ($row['user_id'] != 0) {
$assignuser = api_get_user_info(
$row['user_id']
$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()
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'
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>';
WEB_PATH
) . 'main/admin/user_information.php?user_id=' . $row['sys_insert_user_id'] . '" target="_blank">' . $insertuser['username'] . '</a>';
$history[] = $row;
}
return $history;
@ -1166,22 +1101,19 @@ class TicketManager
* @return array
*/
public static function export_tickets_by_user_id(
$from,
$number_of_items,
$column,
$direction,
$user_id = null
) {
$from, $number_of_items, $column, $direction, $user_id = null
)
{
$table_support_category = Database::get_main_table(
TABLE_TICKET_CATEGORY
TABLE_TICKET_CATEGORY
);
$table_support_tickets = Database::get_main_table(TABLE_TICKET_TICKET);
$table_support_priority = Database::get_main_table(
TABLE_TICKET_PRIORITY
TABLE_TICKET_PRIORITY
);
$table_support_status = Database::get_main_table(TABLE_TICKET_STATUS);
$table_support_messages = Database::get_main_table(
TABLE_TICKET_MESSAGE
TABLE_TICKET_MESSAGE
);
$table_main_user = Database::get_main_table(TABLE_MAIN_USER);
if (is_null($direction)) {
@ -1193,8 +1125,8 @@ class TicketManager
$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
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'])) {
@ -1206,37 +1138,37 @@ class TicketManager
//Search advanced
if (isset($_GET['submit_advanced'])) {
$keyword_category = Database::escape_string(
trim($_GET['keyword_category'])
trim($_GET['keyword_category'])
);
$keyword_request_user = Database::escape_string(
trim($_GET['keyword_request_user'])
trim($_GET['keyword_request_user'])
);
$keyword_admin = Database::escape_string(
trim($_GET['keyword_admin'])
trim($_GET['keyword_admin'])
);
$keyword_start_date_start = Database::escape_string(
trim($_GET['keyword_start_date_start'])
trim($_GET['keyword_start_date_start'])
);
$keyword_start_date_end = Database::escape_string(
trim($_GET['keyword_start_date_end'])
trim($_GET['keyword_start_date_end'])
);
$keyword_status = Database::escape_string(
trim($_GET['keyword_status'])
trim($_GET['keyword_status'])
);
$keyword_source = Database::escape_string(
trim($_GET['keyword_source'])
trim($_GET['keyword_source'])
);
$keyword_priority = Database::escape_string(
trim($_GET['keyword_priority'])
trim($_GET['keyword_priority'])
);
$keyword_range = Database::escape_string(
trim($_GET['keyword_dates'])
trim($_GET['keyword_dates'])
);
$keyword_unread = Database::escape_string(
trim($_GET['keyword_unread'])
trim($_GET['keyword_unread'])
);
$keyword_course = Database::escape_string(
trim($_GET['keyword_course'])
trim($_GET['keyword_course'])
);
if ($keyword_category != '') {
@ -1278,7 +1210,6 @@ class TicketManager
$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)";
}
}
}
@ -1304,12 +1235,10 @@ class TicketManager
$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_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['sys_lastedit_datetime'], '%d/%m/%y - %I:%M:%S %p'
);
$row['category'] = utf8_decode($row['category']);
$row['programa'] = utf8_decode($row['fullname']);
@ -1320,4 +1249,5 @@ class TicketManager
return $tickets;
}
}

@ -6,7 +6,7 @@
/**
*
*/
$language_file = array ('registration');
$language_file = array('registration');
require_once '../config.php';
$plugin = TicketPlugin::create();
@ -14,20 +14,20 @@ $ticket_id = intval($_POST['ticket_id']);
$history = TicketManager::get_assign_log($ticket_id);
?>
<table width="350px" border="0" cellspacing="2" cellpadding="2">
<?php
if (count($history)==0) {
?>
<tr>
<td colspan="2"><?php echo api_ucfirst(('Sin Historial')); ?></td>
</tr>
<?php
}
?>
<?php for($k=0;$k<count($history);$k++) { ?>
<tr>
<td width="125px"><?php echo api_convert_encoding($history[$k]['assignuser'],'UTF-8',$charset);?></td>
<td width="100px"><?php echo api_convert_encoding($history[$k]['assigned_date'],'UTF-8',$charset);?></td>
<td width="125px"><?php echo api_convert_encoding($history[$k]['insertuser'],'UTF-8',$charset);?></td>
</tr>
<?php }?>
<?php
if (count($history) == 0) {
?>
<tr>
<td colspan="2"><?php echo api_ucfirst(('Sin Historial')); ?></td>
</tr>
<?php
}
?>
<?php for ($k = 0; $k < count($history); $k++) { ?>
<tr>
<td width="125px"><?php echo api_convert_encoding($history[$k]['assignuser'], 'UTF-8', $charset); ?></td>
<td width="100px"><?php echo api_convert_encoding($history[$k]['assigned_date'], 'UTF-8', $charset); ?></td>
<td width="125px"><?php echo api_convert_encoding($history[$k]['insertuser'], 'UTF-8', $charset); ?></td>
</tr>
<?php } ?>
</table>

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
*
@ -7,15 +8,15 @@
/**
*
*/
$language_file= array('messages','userInfo', 'admin');
$cidReset = true;
$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[]='
$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(){
@ -88,7 +89,7 @@ function add_image_form() {
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;<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");
@ -144,202 +145,201 @@ div.row div.formw2 {
$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();
$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($_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($_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($_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'].'"/>
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%;">
$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>
<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: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 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><p>Asunto : ' . $ticket['messages'][0]['subject'] . '</p></td>
<td></td>
<td><p '.$negrita.'>Estado : '.$ticket['ticket']['status'].'</p></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><p>Categoria : ' . $ticket['ticket']['name'] . '</p></td>
<td></td>
<td ><p>Prioridad :'.$ticket['ticket']['priority'].'<p></td>
<td ><p>Prioridad :' . $ticket['ticket']['priority'] . '<p></td>
<td colspan="2"></td>
</tr>';
if($ticket['ticket']['course_url']!=null){
echo '<tr>
if ($ticket['ticket']['course_url'] != null) {
echo '<tr>
<td><p>Curso:</p></td>
<td></td>
<td>'.$ticket['ticket']['course_url'].'</td>
<td>' . $ticket['ticket']['course_url'] . '</td>
<td colspan="2"></td>
</tr>';
}
if ($isAdmin){
echo '<tr>
}
if ($isAdmin) {
echo '<tr>
<td><p>Usuario:</p></td>
<td></td>
<td>'.$user_info = $ticket['ticket']['user_url'].' ('.$ticket['usuario']['username'].')</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'].'">
}
//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 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['confirmation'])?true:false ;
$file_attachments = $_FILES;
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['confirmation']) ? 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);
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"
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>
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">
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">
<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>
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">
@ -347,19 +347,20 @@ function show_form_send_message(){
</div></span>
</div>
</div>';
echo '<div class="row">
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'))).')
<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">
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="confirmation"/>Solicitar confirmaci&oacute;n':"").
'</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="confirmation"/>Solicitar confirmaci&oacute;n' : "") .
'</div>
</div>';
echo '</form>';
echo '</form>';
}
Display::display_footer();
?>

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
*
@ -19,7 +20,7 @@ $(document).ready(function (){
var url = this.href;
var dialog = $("#dialog");
if ($("#dialog").length == 0) {
dialog = $("'.'<div id="dialog" style="display:hidden"></div>'.'").appendTo("body");
dialog = $("' . '<div id="dialog" style="display:hidden"></div>' . '").appendTo("body");
}
// load remote content
@ -57,7 +58,7 @@ function save() {
$.ajax({
contentType: "application/x-www-form-urlencoded",
beforeSend: function(objeto) {
$("div#confirmation").html("<img src=\"'.api_get_path(WEB_LIBRARY_PATH).'javascript/indicator.gif\" />"); },
$("div#confirmation").html("<img src=\"' . api_get_path(WEB_LIBRARY_PATH) . 'javascript/indicator.gif\" />"); },
type: "POST",
url: "update_report.php",
data: "work_id="+work_id+"&forum_id="+forum_id+"&rs_id="+rs_id,
@ -95,15 +96,15 @@ function save() {
$course_code = api_get_course_id();
$results = initializeReport($course_code);
if(isset($_GET['action'])){
Export::export_table_xls($results['export'],"COURSE_USER_REPORT".$course_code);
}else{
Display::display_header();
api_protect_course_script();
if (!api_is_allowed_to_edit()){
api_not_allowed();
}
echo $results['show'];
Display::display_footer();
if (isset($_GET['action'])) {
Export::export_table_xls($results['export'], "COURSE_USER_REPORT" . $course_code);
} else {
Display::display_header();
api_protect_course_script();
if (!api_is_allowed_to_edit()) {
api_not_allowed();
}
echo $results['show'];
Display::display_footer();
}
?>

@ -1,66 +1,67 @@
<?php
/* For licensing terms, see /license.txt */
/**
* Helper library for weekly reports
* @package chamilo.plugin.ticket
*/
/**
* @param $course_code
* @return array|bool
*/
function initializeReport($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."'");
$sqlWeeks = "SELECT semanas FROM $table_semanas_curso WHERE course_code = '$course_code'";
$resWeeks = Database::query($sqlWeeks);
$weeks = Database::fetch_object($resWeeks);
$obj = Database::fetch_object($res);
$weeksCount = (!isset($_POST['numerosemanas']))?(($weeks->semanas==0)?7:$weeks->semanas):$_POST['numerosemanas'];
Database::query("REPLACE INTO $table_semanas_curso (course_code , semanas) VALUES ('$course_code','$weeksCount')");
if (intval($obj->cant) != $weeksCount) {
if (intval($obj->cant) > $weeksCount) {
$sql ="DELETE FROM $table_reporte_semanas WHERE week_id > $weeksCount AND course_code = '$course_code'";
Database::query("DELETE FROM $table_reporte_semanas WHERE week_id > $weeksCount AND course_code = '$course_code'");
} else {
for ($i = $obj->cant+1 ; $i <= $weeksCount ; $i++){
if (!Database::query("INSERT INTO $table_reporte_semanas (week_id, course_code, forum_id, work_id, quiz_id, pc_id)
$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 . "'");
$sqlWeeks = "SELECT semanas FROM $table_semanas_curso WHERE course_code = '$course_code'";
$resWeeks = Database::query($sqlWeeks);
$weeks = Database::fetch_object($resWeeks);
$obj = Database::fetch_object($res);
$weeksCount = (!isset($_POST['numerosemanas'])) ? (($weeks->semanas == 0) ? 7 : $weeks->semanas) : $_POST['numerosemanas'];
Database::query("REPLACE INTO $table_semanas_curso (course_code , semanas) VALUES ('$course_code','$weeksCount')");
if (intval($obj->cant) != $weeksCount) {
if (intval($obj->cant) > $weeksCount) {
$sql = "DELETE FROM $table_reporte_semanas WHERE week_id > $weeksCount AND course_code = '$course_code'";
Database::query("DELETE FROM $table_reporte_semanas WHERE week_id > $weeksCount AND course_code = '$course_code'");
} else {
for ($i = $obj->cant + 1; $i <= $weeksCount; $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)
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 {
$page = (!isset($_GET['page']))?1:$_GET['page'];
Database::query("UPDATE $table_students_report sr SET sr.work_ok = 1
if (!Database::query($sql)) {
return false;
} else {
$page = (!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
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 showResults($course_info,$weeksCount,$page);
}
return showResults($course_info, $weeksCount, $page);
}
}
/**
@ -69,13 +70,13 @@ function initializeReport($course_code)
* @param $page
* @return array
*/
function showResults($courseInfo,$weeksCount, $page)
function showResults($courseInfo, $weeksCount, $page)
{
$course_code = $courseInfo['code'];
$tableWeeklyReport = Database::get_main_table('rp_reporte_semanas');
$tableStudentsReport = Database::get_main_table('rp_students_report');
//$table_course_rel_user = Database::get_main_table(TABLE_MAIN_COURSE_USER);
$tableUser = Database::get_main_table(TABLE_MAIN_USER );
$tableUser = Database::get_main_table(TABLE_MAIN_USER);
$tableThread = Database::get_course_table(TABLE_FORUM_THREAD, $courseInfo['dbName']);
$tableWork = Database::get_course_table(TABLE_STUDENT_PUBLICATION, $courseInfo['dbName']);
@ -87,72 +88,71 @@ function showResults($courseInfo,$weeksCount, $page)
LEFT JOIN $tableWork w ON w.id = rs.work_id
WHERE rs.course_code = '$course_code'
ORDER BY rs.week_id";
$resultHeader = Database::query($sqlHeader) ;
$resultHeader = Database::query($sqlHeader);
$ids = array();
$line = '<tr>
<th ></th>';
$lineHeaderExport = array(null,null);
$lineHeaderExport2 = array(null,ull);
while ($rowe = Database::fetch_assoc($resultHeader)){
$lineHeaderExport[] = utf8_decode('Work'.$rowe['week_id']);
$lineHeaderExport[] = utf8_decode('Forum'.$rowe['week_id']);
$lineHeaderExport = array(null, null);
$lineHeaderExport2 = array(null, ull);
while ($rowe = Database::fetch_assoc($resultHeader)) {
$lineHeaderExport[] = utf8_decode('Work' . $rowe['week_id']);
$lineHeaderExport[] = utf8_decode('Forum' . $rowe['week_id']);
//$fila_export_encabezado[] = utf8_decode('Eval'.$rowe['week_id']);
//$fila_export_encabezado[] = utf8_decode('PC'.$rowe['week_id']);
$lineHeaderExport2[] = utf8_decode($rowe['work_title']);
$lineHeaderExport2[] = utf8_decode($rowe['thread_title']);
//$fila_export_encabezado2[] = utf8_decode($rowe['eval_title']);
//$fila_export_encabezado2[] = utf8_decode($rowe['pc_title']);
$fila_export = array('Work'.$rowe['week_id'],'Forum'.$rowe['week_id'],'Eval'.$rowe['week_id'],'PC'.$rowe['week_id']);
if ($rowe['week_id'] > (($page-1)*7) && $rowe['week_id'] <= (7*$page)){
$fila_export = array('Work' . $rowe['week_id'], 'Forum' . $rowe['week_id'], 'Eval' . $rowe['week_id'], 'PC' . $rowe['week_id']);
if ($rowe['week_id'] > (($page - 1) * 7) && $rowe['week_id'] <= (7 * $page)) {
$ids[$rowe['week_id']] = $rowe['id'];
$line.='<th>
<a href="#" onClick="showContent('."'tarea".$rowe['week_id']."'".');">Work'.$rowe['week_id'].'
<div class="blackboard_hide" id="tarea'.$rowe['week_id'].'">'.$rowe['work_title'].'</div>
<a href="#" onClick="showContent(' . "'tarea" . $rowe['week_id'] . "'" . ');">Work' . $rowe['week_id'] . '
<div class="blackboard_hide" id="tarea' . $rowe['week_id'] . '">' . $rowe['work_title'] . '</div>
</a></th>';
$line.= '<th>
<a href="#" onClick="showContent('."'foro".$rowe['week_id']."'".');">Forum'.$rowe['week_id'].'
<div class="blackboard_hide" id="foro'.$rowe['week_id'].'">'.$rowe['thread_title'].'</div>
</a>
</th>';
/*$fila.= '<th>
<a href="#" onClick="showContent('."'eval".$rowe['week_id']."'".');">Eval'.$rowe['week_id'].'
<div class="blackboard_hide" id="eval'.$rowe['week_id'].'">'.$rowe['eval_title'].'</div>
<a href="#" onClick="showContent(' . "'foro" . $rowe['week_id'] . "'" . ');">Forum' . $rowe['week_id'] . '
<div class="blackboard_hide" id="foro' . $rowe['week_id'] . '">' . $rowe['thread_title'] . '</div>
</a>
</th>';
$fila.= '<th>
<a href="#" onClick="showContent('."'pc".$rowe['week_id']."'".');">PC'.$rowe['week_id'].'
<div class="blackboard_hide" id="pc'.$rowe['week_id'].'">'.$rowe['pc_title'].'</div>
</a>
</th>';*/
/* $fila.= '<th>
<a href="#" onClick="showContent('."'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="showContent('."'pc".$rowe['week_id']."'".');">PC'.$rowe['week_id'].'
<div class="blackboard_hide" id="pc'.$rowe['week_id'].'">'.$rowe['pc_title'].'</div>
</a>
</th>'; */
}
}
$tableExport[] = $lineHeaderExport;
$tableExport[] = $lineHeaderExport2;
$line.= '</tr>';
$line.= '</tr>';
$html = '<form action="tutor.php" name="semanas" id="semanas" method="POST">
<div class="row">
'.get_lang('SelectWeeksSpan').'
' . get_lang('SelectWeeksSpan') . '
<select name="numerosemanas" id="numerosemanas" onChange="submit();">
<option value="7" '.(($weeksCount ==7)?'selected="selected"':"").'>7 weeks</option>
<option value="14" '.(($weeksCount ==14)?'selected="selected"':"").'>14 weeks</option>
<option value="7" ' . (($weeksCount == 7) ? 'selected="selected"' : "") . '>7 weeks</option>
<option value="14" ' . (($weeksCount == 14) ? 'selected="selected"' : "") . '>14 weeks</option>
</select>';
if ($weeksCount == 14) {
$html .= '<span style="float:right;"><a href="tutor.php?page='.(($page == 1)?2:1).'">'.(($page == 1)?"Siguiente":"Anterior").'</a></span>';
$html .= '<span style="float:right;"><a href="tutor.php?page=' . (($page == 1) ? 2 : 1) . '">' . (($page == 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 .= '<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 .= '</form>';
$html .= '<table class="reportes">';
$html .= '<tr>
<th ></th>';
for ($i=(7*$page-6); $i <= $page*7;$i++) {
$html .= '<th colspan="2">Week '.$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>';
for ($i = (7 * $page - 6); $i <= $page * 7; $i++) {
$html .= '<th colspan="2">Week ' . $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 .= '</tr>';
$html .= $line;
$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 $tableStudentsReport sr
@ -164,20 +164,20 @@ function showResults($courseInfo,$weeksCount, $page)
$result = Database::query($sql);
while ($row = Database::fetch_assoc($result)) {
$resultadose[$row['username']][$row['week_id']] = $row;
if ($row['week_id'] > (($page-1)*7) && $row['week_id'] <= (7*$page) ) {
if ($row['week_id'] > (($page - 1) * 7) && $row['week_id'] <= (7 * $page)) {
$results[$row['username']][$row['week_id']] = $row;
if (count($results[$row['username']]) == 7 ) {
$html.= showStudentResult($results[$row['username']],$page);
if (count($results[$row['username']]) == 7) {
$html.= showStudentResult($results[$row['username']], $page);
}
}
if (count($resultadose[$row['username']]) == $weeksCount ) {
$tableExport[] = showStudentResultExport($resultadose[$row['username']],$weeksCount);
if (count($resultadose[$row['username']]) == $weeksCount) {
$tableExport[] = showStudentResultExport($resultadose[$row['username']], $weeksCount);
}
}
$html .= '
</table>';
return array('show'=>$html,'export'=>$tableExport);
return array('show' => $html, 'export' => $tableExport);
}
/**
@ -185,15 +185,15 @@ function showResults($courseInfo,$weeksCount, $page)
* @param $pagina
* @return string
*/
function showStudentResult($datos,$pagina)
function showStudentResult($datos, $pagina)
{
$inicio = (7*$pagina-6);
$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><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.= '</tr>';
return $fila;
@ -204,14 +204,14 @@ function showStudentResult($datos,$pagina)
* @param $numero_semanas
* @return array
*/
function showStudentResultExport($data ,$numero_semanas)
function showStudentResultExport($data, $numero_semanas)
{
$fila = array();
$fila[] = utf8_decode($data[1]['username']);
$fila[]= utf8_decode($data[1]['fullname']);
$fila[] = utf8_decode($data[1]['fullname']);
foreach ($data as $line) {
$fila[]= ($line['work_ok']==1)?get_lang('Yes'):get_lang('No');
$fila[]= ($line['thread_ok']==1)?get_lang('Yes'):get_lang('No');
$fila[] = ($line['work_ok'] == 1) ? get_lang('Yes') : get_lang('No');
$fila[] = ($line['thread_ok'] == 1) ? get_lang('Yes') : get_lang('No');
}
return $fila;

@ -1,4 +1,5 @@
<?php
/* For licensing terms, see /license.txt */
/**
* @package chamilo.plugin.ticket
@ -17,7 +18,7 @@ api_protect_course_script();
if (!api_is_allowed_to_edit()) {
Display::display_error_message($plugin->get_lang("DeniedAccess"));
} else {
$sql ="UPDATE ".Database::get_main_table('rp_reporte_semanas')."
$sql = "UPDATE " . Database::get_main_table('rp_reporte_semanas') . "
SET work_id = '$work_id', forum_id = '$forum_id'
WHERE id ='$rs_id'";
Database::query($sql);

Loading…
Cancel
Save