get('allow_student_add') != 'true'
) {
header('location:' . api_get_path(WEB_PLUGIN_PATH) . PLUGIN_NAME . '/src/myticket.php');
exit;
}
api_block_anonymous_users();
$scrollTop = '';
if (api_is_platform_admin()) {
$scrollTol = '$("html, body").animate({
scrollTop: $(".divTicket").offset().top - 20
}, "slow");';
}
$htmlHeadXtra[] = '
';
$types = TicketManager::get_all_tickets_categories();
$htmlHeadXtra[] = '';
/**
* @param $s
* @return string
*/
function js_str($s)
{
return '"' . addcslashes($s, "\0..\37\"\\") . '"';
}
/**
* @param $array
* @param $name
* @param $key
* @return string
*/
function js_array($array, $name, $key)
{
$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 '
';
// Category List
$categoryList = array();
foreach ($types as $type) {
$categoryList[$type['category_id']] = $type['name'] . ": " . $type['description'];
}
// Status List
$statusList = array();
$statusAttributes = array(
'style' => 'display: none;',
'id' => 'status_id',
'for' => 'status_id'
);
$statusList[NEWTCK] = $plugin->get_lang('StatusNew');
if (api_is_platform_admin()) {
$statusAttributes = array(
'id' => 'status_id',
'for' => 'status_id',
'style' => 'width: 562px;'
);
$statusList[PENDING] = $plugin->get_lang('StatusPending');
$statusList[UNCONFIRMED] = $plugin->get_lang('StatusUnconfirmed');
$statusList[CLOSE] = $plugin->get_lang('StatusClose');
$statusList[REENVIADO] = $plugin->get_lang('StatusForwarded');
}
//End Status List
//Source List
$sourceList = array();
$sourceAttributes = array(
'style' => 'display: none;',
'id' => 'source_id',
'for' => 'source_id'
);
$sourceList[SRC_PLATFORM] = $plugin->get_lang('SrcPlatform');
if (api_is_platform_admin()) {
$sourceAttributes = array(
'id' => 'source_id',
'for' => 'source_id',
'style' => 'width: 562px;'
);
$sourceList[SRC_EMAIL] = $plugin->get_lang('SrcEmail');
$sourceList[SRC_PHONE] = $plugin->get_lang('SrcPhone');
$sourceList[SRC_PRESC] = $plugin->get_lang('SrcPresential');
}
//End Source List
//Priority List
$priorityList = array();
$priorityList[NORMAL] = $plugin->get_lang('PriorityNormal');
$priorityList[HIGH] = $plugin->get_lang('PriorityHigh');
$priorityList[LOW] = $plugin->get_lang('PriorityLow');
//End Priority List
$form = new FormValidator(
'send_ticket',
'POST',
api_get_self(),
"",
array(
'enctype' => 'multipart/form-data',
'onsubmit' => 'return validate()',
'class' => 'span8 offset1 form-horizontal'
)
);
$form->addElement(
'hidden',
'user_id_request',
'',
array(
'id' => 'user_id_request'
)
);
$form->addElement(
'hidden',
'project_id',
'',
array(
'id' => 'project_id'
)
);
$form->addElement(
'hidden',
'other_area',
'',
array(
'id' => 'other_area'
)
);
$form->addElement(
'hidden',
'email',
'',
array(
'id' => 'email'
)
);
$form->addElement(
'select',
'category_id',
get_lang('Category'),
$categoryList,
array(
'onchange' => 'changeType()',
'id' => 'category_id',
'for' => 'category_id',
'style' => 'width: 562px;'
)
);
$form->addElement(
'html',
Display::div(
'',
array(
'id' => 'user_request'
)
)
);
$form->addElement(
'select',
'status_id',
get_lang('Status'),
$statusList,
$statusAttributes
);
$form->addElement(
'select',
'source_id',
$plugin->get_lang('Source'),
$sourceList,
$sourceAttributes
);
$form->addElement(
'text',
'subject',
get_lang('Subject'),
array(
'id' => 'subject',
'style' => 'width: 550px;'
)
);
$form->addElement(
'text',
'personal_email',
$plugin->get_lang('PersonalEmail'),
array(
'id' => 'personal_email',
'style' => 'width: 550px;'
)
);
$form->addHtmlEditor(
'content',
get_lang('Message'),
false,
false,
array(
'ToolbarSet' => 'Profile',
'Width' => '600',
'Height' => '250'
)
);
$form->addElement(
'text',
'phone',
get_lang('Phone') . ' (' . $plugin->get_lang('Optional') . ')',
array(
'id' => 'phone'
)
);
$form->addElement(
'select',
'priority_id',
$plugin->get_lang('Priority'),
$priorityList,
array(
'id' => 'priority_id',
'for' => 'priority_id'
)
);
$form->addElement('html', '
');
$form->addElement('html', '');
$form->addElement('file', 'attach_1', get_lang('FilesAttachment'));
$form->addElement('html', '
');
$form->addElement('html', '');
$form->addElement('html', '
');
$form->addElement('html', '
');
$form->addElement('html', '' . get_lang('AddOneMoreFile') . '');
$form->addElement('html', '');
$form->addElement('html', '(' . sprintf(get_lang('MaximunFileSizeX'), format_file_size(api_get_setting('message_max_upload_filesize'))) . ')');
$form->addElement('html', '
');
$form->addElement(
'button',
'compose',
get_lang('SendMessage'),
null,
null,
null,
'save',
array(
'id' => 'btnsubmit'
)
);
$form->display();
}
/**
*
*/
function save_ticket()
{
global $plugin;
$category_id = $_POST['category_id'];
$content = $_POST['content'];
if ($_POST['phone'] != "") {
$content .= '
' . get_lang('Phone') . ': ' . Security::remove_XSS($_POST['phone']). '
';
}
$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;
$responsible = (api_is_platform_admin() ? api_get_user_id() : 0);
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,
$responsible
)
) {
header('location:' . api_get_path(WEB_PLUGIN_PATH) . PLUGIN_NAME . '/src/myticket.php?message=success');
exit;
} else {
Display::display_header(get_lang('ComposeMessage'));
Display::display_error_message($plugin->get_lang('ErrorRegisterMessage'));
}
}
/**
* Get the total number of users on the platform
* @return int The number of users
* @see SortableTable#get_total_number_of_items()
*/
function get_number_of_users()
{
$user_table = Database :: get_main_table(TABLE_MAIN_USER);
$sql = "SELECT COUNT(u.user_id) AS total_number_of_items FROM $user_table u";
if ((api_is_platform_admin() || api_is_session_admin()) && api_get_multiple_access_url()) {
$access_url_rel_user_table = Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
$sql.= " INNER JOIN $access_url_rel_user_table url_rel_user ON (u.user_id=url_rel_user.user_id)";
}
if (isset($_GET['keyword'])) {
$keyword = Database::escape_string(trim($_GET['keyword']));
$sql .= " WHERE (u.firstname LIKE '%$keyword%' OR
u.lastname LIKE '%$keyword%' OR
concat(u.firstname,' ',u.lastname) LIKE '%$keyword%' OR
concat(u.lastname,' ',u.firstname) LIKE '%$keyword%' OR
u.username LIKE '%$keyword%' OR
u.email LIKE '%$keyword%' OR
u.official_code LIKE '%$keyword%') ";
}
$res = Database::query($sql);
$obj = Database::fetch_object($res);
return $obj->total_number_of_items;
}
/**
* Get the users to display on the current page (fill the sortable-table)
* @param int offset of first user to recover
* @param int Number of users to get
* @param int Column to sort on
* @param string Order (ASC,DESC)
* @return array A list of users with their data
* @see SortableTable#get_table_data($from)
*/
function get_user_data($from, $number_of_items, $column, $direction)
{
$user_table = Database :: get_main_table(TABLE_MAIN_USER);
if (api_is_western_name_order()) {
$col34 = "u.firstname AS col3,
u.lastname AS col4,";
} else {
$col34 = "u.lastname AS col3,
u.firstname AS col4,";
}
$sql = "SELECT
u.user_id AS col0,
u.official_code AS col2,
$col34
u.username AS col5,
u.email AS col6,
u.status AS col7,
u.active AS col8,
u.user_id AS col9 ,
u.expiration_date AS exp
FROM $user_table u ";
if (isset($_GET['keyword'])) {
$keyword = Database::escape_string(trim($_GET['keyword']));
$sql .= " WHERE (u.firstname LIKE '%$keyword%' OR
u.lastname LIKE '%$keyword%' OR
concat(u.firstname,' ',u.lastname) LIKE '%$keyword%' OR
concat(u.lastname,' ',u.firstname) LIKE '%$keyword%' OR
u.username LIKE '%$keyword%' OR
u.official_code LIKE '%$keyword%' OR
u.email LIKE '%$keyword%' )";
}
if (!in_array($direction, array('ASC', 'DESC'))) {
$direction = 'ASC';
}
$column = intval($column);
$from = intval($from);
$number_of_items = intval($number_of_items);
$sql .= " ORDER BY col$column $direction ";
$sql .= " LIMIT $from, $number_of_items";
$res = Database::query($sql);
$users = array();
while ($user = Database::fetch_row($res)) {
$user_id = $user[0];
$userPicture = UserManager::getUserPicture($user_id);
$photo = '
![' . api_get_person_name($user[2], $user[3]) . ' ' . api_get_person_name($user[2], $user[3]) . '](' . $userPicture. ')
';
$button = '
'
. Display::return_icon('view_more_stats.gif', get_lang('Info')) .
' ';
$users[] = array(
$photo,
$user_id,
$user[2],
$user[3],
$user[4],
$user[5],
$button,
);
}
return $users;
}
if (!isset($_POST['compose'])) {
if (api_is_platform_admin()) {
Display::display_header(get_lang('ComposeMessage'));
$message = $plugin->get_lang('PleaseBeforeRegisterATicketSelectOneUser');
Display::display_warning_message($message);
echo '
';
echo '
';
$order = (api_is_western_name_order() || api_sort_by_first_name()) ? 3 : 2;
$table = new SortableTable(
'users',
'get_number_of_users',
'get_user_data',
$order,
10
);
$table->set_header(0, '', false, 'width="18px"');
$table->set_header(0, get_lang('Photo'), false);
$table->set_header(1, get_lang('OfficialCode'));
if (api_is_western_name_order()) {
$table->set_header(2, get_lang('FirstName'));
$table->set_header(3, get_lang('LastName'));
} else {
$table->set_header(2, get_lang('LastName'));
$table->set_header(3, get_lang('FirstName'));
}
$table->set_header(4, get_lang('LoginName'));
$table->set_header(5, get_lang('Email'));
$table->set_header(6, get_lang('Action'));
$table->display();
echo '
';
} else {
$userInfo = api_get_user_info();
$htmlHeadXtra[] = "
";
Display::display_header(get_lang('ComposeMessage'));
}
show_form_send_ticket();
} else {
save_ticket();
}
Display::display_footer();