Separate function to get admin session list - refs BT#15394 #2801

pull/2858/head
Angel Fernando Quiroz Campos 7 years ago
parent 917ea46885
commit e15802e575
  1. 210
      main/inc/lib/sessionmanager.lib.php

@ -457,27 +457,22 @@ class SessionManager
} }
/** /**
* Gets the admin session list callback of the session/session_list.php page. * @param array $options Optional. Order and limit keys
* @param bool $getCount Optional. Whether to get all the results or only the count
* @param array $columns Optional. Columns from jqGrid
* *
* @param array $options order and limit keys * @return array
* @param bool $getCount Whether to get all the results or only the count
* @param array $columns
* @param array $extraFieldsToLoad
*
* @return mixed Integer for number of rows, or array of results
* @assert ([],true) !== false
*/ */
public static function formatSessionsAdminForGrid( public static function getSessionsAdmin(
$userId,
$options = [], $options = [],
$getCount = false, $getCount = false,
$columns = [], $columns = []
$extraFieldsToLoad = []
) { ) {
$tblSession = Database::get_main_table(TABLE_MAIN_SESSION); $tblSession = Database::get_main_table(TABLE_MAIN_SESSION);
$sessionCategoryTable = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY); $sessionCategoryTable = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY);
$where = 'WHERE 1 = 1 '; $where = 'WHERE 1 = 1 ';
$userId = api_get_user_id();
if (!api_is_platform_admin()) { if (!api_is_platform_admin()) {
if (api_is_session_admin() && if (api_is_session_admin() &&
@ -493,6 +488,7 @@ class SessionManager
) { ) {
$where .= " AND s.id_coach = $userId "; $where .= " AND s.id_coach = $userId ";
} }
$extraFieldModel = new ExtraFieldModel('session'); $extraFieldModel = new ExtraFieldModel('session');
$conditions = $extraFieldModel->parseConditions($options); $conditions = $extraFieldModel->parseConditions($options);
$sqlInjectJoins = $conditions['inject_joins']; $sqlInjectJoins = $conditions['inject_joins'];
@ -562,6 +558,7 @@ class SessionManager
if (api_is_multiple_url_enabled()) { if (api_is_multiple_url_enabled()) {
$tblAccessUrlRelSession = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $tblAccessUrlRelSession = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION);
$accessUrlId = api_get_current_access_url_id(); $accessUrlId = api_get_current_access_url_id();
if ($accessUrlId != -1) { if ($accessUrlId != -1) {
$where .= " AND ar.access_url_id = $accessUrlId "; $where .= " AND ar.access_url_id = $accessUrlId ";
$query = "$select $query = "$select
@ -574,7 +571,9 @@ class SessionManager
if ($showCountUsers) { if ($showCountUsers) {
$query .= ' GROUP by s.id'; $query .= ' GROUP by s.id';
} }
$allowOrder = api_get_configuration_value('session_list_order'); $allowOrder = api_get_configuration_value('session_list_order');
if ($allowOrder) { if ($allowOrder) {
$order = ' ORDER BY position ASC'; $order = ' ORDER BY position ASC';
} }
@ -583,6 +582,52 @@ class SessionManager
$query .= $limit; $query .= $limit;
$result = Database::query($query); $result = Database::query($query);
$sessions = Database::store_result($result, 'ASSOC');
if ($getCount) {
return $sessions[0]['total_rows'];
}
return $sessions;
}
/**
* Gets the admin session list callback of the session/session_list.php page.
*
* @param array $options order and limit keys
* @param bool $getCount Whether to get all the results or only the count
* @param array $columns
* @param array $extraFieldsToLoad
*
* @return mixed Integer for number of rows, or array of results
* @assert ([],true) !== false
*/
public static function formatSessionsAdminForGrid(
$options = [],
$getCount = false,
$columns = [],
$extraFieldsToLoad = []
) {
$showCountUsers = false;
if (!$getCount && !empty($columns['column_model'])) {
foreach ($columns['column_model'] as $column) {
if ($column['name'] == 'users') {
$showCountUsers = true;
}
}
}
$userId = api_get_user_id();
$sessions = self::getSessionsAdmin($userId, $options, $getCount, $columns);
if ($getCount) {
return (int) $sessions;
}
$formattedSessions = [];
$categories = self::get_all_session_category(); $categories = self::get_all_session_category();
$orderedCategories = []; $orderedCategories = [];
if (!empty($categories)) { if (!empty($categories)) {
@ -590,95 +635,88 @@ class SessionManager
$orderedCategories[$category['id']] = $category['name']; $orderedCategories[$category['id']] = $category['name'];
} }
} }
$formattedSessions = [];
if (Database::num_rows($result)) {
$sessions = Database::store_result($result, 'ASSOC');
if ($getCount) {
return $sessions[0]['total_rows'];
}
$activeIcon = Display::return_icon('accept.png', get_lang('Active')); $activeIcon = Display::return_icon('accept.png', get_lang('Active'));
$inactiveIcon = Display::return_icon('error.png', get_lang('Inactive')); $inactiveIcon = Display::return_icon('error.png', get_lang('Inactive'));
foreach ($sessions as $session) { foreach ($sessions as $session) {
if ($showCountUsers) { if ($showCountUsers) {
$session['users'] = self::get_users_by_session($session['id'], 0, true); $session['users'] = self::get_users_by_session($session['id'], 0, true);
} }
$url = api_get_path(WEB_CODE_PATH).'session/resume_session.php?id_session='.$session['id']; $url = api_get_path(WEB_CODE_PATH).'session/resume_session.php?id_session='.$session['id'];
if (api_is_drh() || $extraFieldsToLoad) { if (api_is_drh() || $extraFieldsToLoad) {
$url = api_get_path(WEB_PATH).'session/'.$session['id'].'/about/'; $url = api_get_path(WEB_PATH).'session/'.$session['id'].'/about/';
} }
$session['name'] = Display::url($session['name'], $url); $session['name'] = Display::url($session['name'], $url);
if (!empty($extraFieldsToLoad)) { if (!empty($extraFieldsToLoad)) {
foreach ($extraFieldsToLoad as $field) { foreach ($extraFieldsToLoad as $field) {
$extraFieldValue = new ExtraFieldValue('session'); $extraFieldValue = new ExtraFieldValue('session');
$fieldData = $extraFieldValue->getAllValuesByItemAndField( $fieldData = $extraFieldValue->getAllValuesByItemAndField(
$session['id'], $session['id'],
$field['id'] $field['id']
); );
$fieldDataArray = []; $fieldDataArray = [];
$fieldDataToString = ''; $fieldDataToString = '';
if (!empty($fieldData)) { if (!empty($fieldData)) {
foreach ($fieldData as $data) { foreach ($fieldData as $data) {
$fieldDataArray[] = $data['value']; $fieldDataArray[] = $data['value'];
}
$fieldDataToString = implode(', ', $fieldDataArray);
} }
$session[$field['variable']] = $fieldDataToString; $fieldDataToString = implode(', ', $fieldDataArray);
} }
$session[$field['variable']] = $fieldDataToString;
} }
}
if (isset($session['session_active']) && $session['session_active'] == 1) { if (isset($session['session_active']) && $session['session_active'] == 1) {
$session['session_active'] = $activeIcon; $session['session_active'] = $activeIcon;
} else { } else {
$session['session_active'] = $inactiveIcon; $session['session_active'] = $inactiveIcon;
} }
$session = self::convert_dates_to_local($session, true); $session = self::convert_dates_to_local($session, true);
switch ($session['visibility']) { switch ($session['visibility']) {
case SESSION_VISIBLE_READ_ONLY: //1 case SESSION_VISIBLE_READ_ONLY: //1
$session['visibility'] = get_lang('ReadOnly'); $session['visibility'] = get_lang('ReadOnly');
break; break;
case SESSION_VISIBLE: //2 case SESSION_VISIBLE: //2
case SESSION_AVAILABLE: //4 case SESSION_AVAILABLE: //4
$session['visibility'] = get_lang('Visible'); $session['visibility'] = get_lang('Visible');
break; break;
case SESSION_INVISIBLE: //3 case SESSION_INVISIBLE: //3
$session['visibility'] = api_ucfirst(get_lang('Invisible')); $session['visibility'] = api_ucfirst(get_lang('Invisible'));
break; break;
} }
// Cleaning double selects. // Cleaning double selects.
foreach ($session as $key => &$value) { foreach ($session as $key => &$value) {
if (isset($optionsByDouble[$key]) || isset($optionsByDouble[$key.'_second'])) { if (isset($optionsByDouble[$key]) || isset($optionsByDouble[$key.'_second'])) {
$options = explode('::', $value); $options = explode('::', $value);
} }
$original_key = $key; $original_key = $key;
if (strpos($key, '_second') !== false) { if (strpos($key, '_second') !== false) {
$key = str_replace('_second', '', $key); $key = str_replace('_second', '', $key);
} }
if (isset($optionsByDouble[$key]) && if (isset($optionsByDouble[$key]) &&
isset($options[0]) && isset($options[0]) &&
isset($optionsByDouble[$key][$options[0]]) isset($optionsByDouble[$key][$options[0]])
) { ) {
if (strpos($original_key, '_second') === false) { if (strpos($original_key, '_second') === false) {
$value = $optionsByDouble[$key][$options[0]]['option_display_text']; $value = $optionsByDouble[$key][$options[0]]['option_display_text'];
} else { } else {
$value = $optionsByDouble[$key][$options[1]]['option_display_text']; $value = $optionsByDouble[$key][$options[1]]['option_display_text'];
}
} }
} }
$categoryName = isset($orderedCategories[$session['session_category_id']])
? $orderedCategories[$session['session_category_id']]
: '';
$session['category_name'] = $categoryName;
$formattedSessions[] = $session;
} }
$categoryName = isset($orderedCategories[$session['session_category_id']])
? $orderedCategories[$session['session_category_id']]
: '';
$session['category_name'] = $categoryName;
$formattedSessions[] = $session;
} }
return $formattedSessions; return $formattedSessions;

Loading…
Cancel
Save