|
|
|
|
@ -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 |
|
|
|
|
* @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 |
|
|
|
|
* @return array |
|
|
|
|
*/ |
|
|
|
|
public static function formatSessionsAdminForGrid( |
|
|
|
|
public static function getSessionsAdmin( |
|
|
|
|
$userId, |
|
|
|
|
$options = [], |
|
|
|
|
$getCount = false, |
|
|
|
|
$columns = [], |
|
|
|
|
$extraFieldsToLoad = [] |
|
|
|
|
$columns = [] |
|
|
|
|
) { |
|
|
|
|
$tblSession = Database::get_main_table(TABLE_MAIN_SESSION); |
|
|
|
|
$sessionCategoryTable = Database::get_main_table(TABLE_MAIN_SESSION_CATEGORY); |
|
|
|
|
|
|
|
|
|
$where = 'WHERE 1 = 1 '; |
|
|
|
|
$userId = api_get_user_id(); |
|
|
|
|
|
|
|
|
|
if (!api_is_platform_admin()) { |
|
|
|
|
if (api_is_session_admin() && |
|
|
|
|
@ -493,6 +488,7 @@ class SessionManager |
|
|
|
|
) { |
|
|
|
|
$where .= " AND s.id_coach = $userId "; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$extraFieldModel = new ExtraFieldModel('session'); |
|
|
|
|
$conditions = $extraFieldModel->parseConditions($options); |
|
|
|
|
$sqlInjectJoins = $conditions['inject_joins']; |
|
|
|
|
@ -562,6 +558,7 @@ class SessionManager |
|
|
|
|
if (api_is_multiple_url_enabled()) { |
|
|
|
|
$tblAccessUrlRelSession = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); |
|
|
|
|
$accessUrlId = api_get_current_access_url_id(); |
|
|
|
|
|
|
|
|
|
if ($accessUrlId != -1) { |
|
|
|
|
$where .= " AND ar.access_url_id = $accessUrlId "; |
|
|
|
|
$query = "$select |
|
|
|
|
@ -574,7 +571,9 @@ class SessionManager |
|
|
|
|
if ($showCountUsers) { |
|
|
|
|
$query .= ' GROUP by s.id'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$allowOrder = api_get_configuration_value('session_list_order'); |
|
|
|
|
|
|
|
|
|
if ($allowOrder) { |
|
|
|
|
$order = ' ORDER BY position ASC'; |
|
|
|
|
} |
|
|
|
|
@ -583,6 +582,52 @@ class SessionManager |
|
|
|
|
$query .= $limit; |
|
|
|
|
$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(); |
|
|
|
|
$orderedCategories = []; |
|
|
|
|
if (!empty($categories)) { |
|
|
|
|
@ -590,95 +635,88 @@ class SessionManager |
|
|
|
|
$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')); |
|
|
|
|
$inactiveIcon = Display::return_icon('error.png', get_lang('Inactive')); |
|
|
|
|
$activeIcon = Display::return_icon('accept.png', get_lang('Active')); |
|
|
|
|
$inactiveIcon = Display::return_icon('error.png', get_lang('Inactive')); |
|
|
|
|
|
|
|
|
|
foreach ($sessions as $session) { |
|
|
|
|
if ($showCountUsers) { |
|
|
|
|
$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']; |
|
|
|
|
if (api_is_drh() || $extraFieldsToLoad) { |
|
|
|
|
$url = api_get_path(WEB_PATH).'session/'.$session['id'].'/about/'; |
|
|
|
|
} |
|
|
|
|
foreach ($sessions as $session) { |
|
|
|
|
if ($showCountUsers) { |
|
|
|
|
$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']; |
|
|
|
|
if (api_is_drh() || $extraFieldsToLoad) { |
|
|
|
|
$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)) { |
|
|
|
|
foreach ($extraFieldsToLoad as $field) { |
|
|
|
|
$extraFieldValue = new ExtraFieldValue('session'); |
|
|
|
|
$fieldData = $extraFieldValue->getAllValuesByItemAndField( |
|
|
|
|
$session['id'], |
|
|
|
|
$field['id'] |
|
|
|
|
); |
|
|
|
|
$fieldDataArray = []; |
|
|
|
|
$fieldDataToString = ''; |
|
|
|
|
if (!empty($fieldData)) { |
|
|
|
|
foreach ($fieldData as $data) { |
|
|
|
|
$fieldDataArray[] = $data['value']; |
|
|
|
|
} |
|
|
|
|
$fieldDataToString = implode(', ', $fieldDataArray); |
|
|
|
|
if (!empty($extraFieldsToLoad)) { |
|
|
|
|
foreach ($extraFieldsToLoad as $field) { |
|
|
|
|
$extraFieldValue = new ExtraFieldValue('session'); |
|
|
|
|
$fieldData = $extraFieldValue->getAllValuesByItemAndField( |
|
|
|
|
$session['id'], |
|
|
|
|
$field['id'] |
|
|
|
|
); |
|
|
|
|
$fieldDataArray = []; |
|
|
|
|
$fieldDataToString = ''; |
|
|
|
|
if (!empty($fieldData)) { |
|
|
|
|
foreach ($fieldData as $data) { |
|
|
|
|
$fieldDataArray[] = $data['value']; |
|
|
|
|
} |
|
|
|
|
$session[$field['variable']] = $fieldDataToString; |
|
|
|
|
$fieldDataToString = implode(', ', $fieldDataArray); |
|
|
|
|
} |
|
|
|
|
$session[$field['variable']] = $fieldDataToString; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (isset($session['session_active']) && $session['session_active'] == 1) { |
|
|
|
|
$session['session_active'] = $activeIcon; |
|
|
|
|
} else { |
|
|
|
|
$session['session_active'] = $inactiveIcon; |
|
|
|
|
} |
|
|
|
|
if (isset($session['session_active']) && $session['session_active'] == 1) { |
|
|
|
|
$session['session_active'] = $activeIcon; |
|
|
|
|
} else { |
|
|
|
|
$session['session_active'] = $inactiveIcon; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$session = self::convert_dates_to_local($session, true); |
|
|
|
|
$session = self::convert_dates_to_local($session, true); |
|
|
|
|
|
|
|
|
|
switch ($session['visibility']) { |
|
|
|
|
case SESSION_VISIBLE_READ_ONLY: //1 |
|
|
|
|
$session['visibility'] = get_lang('ReadOnly'); |
|
|
|
|
break; |
|
|
|
|
case SESSION_VISIBLE: //2 |
|
|
|
|
case SESSION_AVAILABLE: //4 |
|
|
|
|
$session['visibility'] = get_lang('Visible'); |
|
|
|
|
break; |
|
|
|
|
case SESSION_INVISIBLE: //3 |
|
|
|
|
$session['visibility'] = api_ucfirst(get_lang('Invisible')); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
switch ($session['visibility']) { |
|
|
|
|
case SESSION_VISIBLE_READ_ONLY: //1 |
|
|
|
|
$session['visibility'] = get_lang('ReadOnly'); |
|
|
|
|
break; |
|
|
|
|
case SESSION_VISIBLE: //2 |
|
|
|
|
case SESSION_AVAILABLE: //4 |
|
|
|
|
$session['visibility'] = get_lang('Visible'); |
|
|
|
|
break; |
|
|
|
|
case SESSION_INVISIBLE: //3 |
|
|
|
|
$session['visibility'] = api_ucfirst(get_lang('Invisible')); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Cleaning double selects. |
|
|
|
|
foreach ($session as $key => &$value) { |
|
|
|
|
if (isset($optionsByDouble[$key]) || isset($optionsByDouble[$key.'_second'])) { |
|
|
|
|
$options = explode('::', $value); |
|
|
|
|
} |
|
|
|
|
$original_key = $key; |
|
|
|
|
if (strpos($key, '_second') !== false) { |
|
|
|
|
$key = str_replace('_second', '', $key); |
|
|
|
|
} |
|
|
|
|
// Cleaning double selects. |
|
|
|
|
foreach ($session as $key => &$value) { |
|
|
|
|
if (isset($optionsByDouble[$key]) || isset($optionsByDouble[$key.'_second'])) { |
|
|
|
|
$options = explode('::', $value); |
|
|
|
|
} |
|
|
|
|
$original_key = $key; |
|
|
|
|
if (strpos($key, '_second') !== false) { |
|
|
|
|
$key = str_replace('_second', '', $key); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (isset($optionsByDouble[$key]) && |
|
|
|
|
isset($options[0]) && |
|
|
|
|
isset($optionsByDouble[$key][$options[0]]) |
|
|
|
|
) { |
|
|
|
|
if (strpos($original_key, '_second') === false) { |
|
|
|
|
$value = $optionsByDouble[$key][$options[0]]['option_display_text']; |
|
|
|
|
} else { |
|
|
|
|
$value = $optionsByDouble[$key][$options[1]]['option_display_text']; |
|
|
|
|
} |
|
|
|
|
if (isset($optionsByDouble[$key]) && |
|
|
|
|
isset($options[0]) && |
|
|
|
|
isset($optionsByDouble[$key][$options[0]]) |
|
|
|
|
) { |
|
|
|
|
if (strpos($original_key, '_second') === false) { |
|
|
|
|
$value = $optionsByDouble[$key][$options[0]]['option_display_text']; |
|
|
|
|
} else { |
|
|
|
|
$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; |
|
|
|
|
|