Exemple #1
0
//Autowidth
$extra_params['autowidth'] = 'true';
//height auto
$extra_params['height'] = 'auto';
//With this function we can add actions to the jgrid (edit, delete, etc)
/*
$action_links = 'function action_formatter(cellvalue, options, rowObject) {
     return \'<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
     '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;"  href="?sec_token='.$token.'&action=copy&id=\'+options.rowId+\'">'.Display::return_icon('copy.png',get_lang('Copy'),'',ICON_SIZE_SMALL).'</a>'.
     '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;"  href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'.
     '\';
 }';*/
$action_links = null;
$room = UserManager::get_extra_user_data_by_field(api_get_user_id(), 'exam_room');
$room = $room['exam_room'];
$schedule = UserManager::get_extra_user_data_by_field(api_get_user_id(), 'exam_schedule');
$schedule = $schedule['exam_schedule'];
echo Display::page_subheader(get_lang('UserList') . ": " . $room . " - " . $schedule);
?>
<script>
$(function() {
<?php 
echo Display::grid_js('user_list', $url, $columns, $column_model, $extra_params, array(), $action_links, true);
?>
    jQuery("#user_list").jqGrid("navGrid","#user_list_pager",{view:false, edit:false, add:false, del:false, search:false, excel:true});
    jQuery("#user_list").jqGrid("navButtonAdd","#user_list_pager",{
       caption:"",
       onClickButton : function () {
           jQuery("#user_list").jqGrid("excelExport",{"url": "<? echo $url?>&export_format=xls"});
    }
});
/**
 * Returns the timezone to be converted to/from, based on user or admin preferences
 *
 * @return string The timezone chosen
 */
function _api_get_timezone()
{
    // First, get the default timezone of the server
    $to_timezone = date_default_timezone_get();
    // Second, see if a timezone has been chosen for the platform
    $timezone_value = api_get_setting('timezone_value', 'timezones');
    if ($timezone_value != null) {
        $to_timezone = $timezone_value;
    }
    // If allowed by the administrator
    $use_users_timezone = api_get_setting('use_users_timezone', 'timezones');
    if ($use_users_timezone == 'true') {
        $userId = api_get_user_id();
        // Get the timezone based on user preference, if it exists
        $timezone_user = UserManager::get_extra_user_data_by_field($userId, 'timezone');
        if (isset($timezone_user['timezone']) && $timezone_user['timezone'] != null) {
            $to_timezone = $timezone_user['timezone'];
        }
    }
    return $to_timezone;
}
Exemple #3
0
 /**
  * Get user chat status
  * @return int 0 if disconnected, 1 if connected
  */
 function get_user_status()
 {
     $status = UserManager::get_extra_user_data_by_field(api_get_user_id(), 'user_chat_status', false, true);
     return $status['user_chat_status'];
 }
Exemple #4
0
        api_protect_course_script(true);
        $this_section = SECTION_COURSES;
        if (api_is_allowed_to_edit()) {
            $can_add_events = 1;
        }
        if (!empty($group_id)) {
            if ($is_group_tutor) {
                $can_add_events = 1;
            }
        }
        break;
    case 'personal':
        if (api_is_anonymous(null, true)) {
            api_not_allowed(true);
        }
        $extra_field_data = UserManager::get_extra_user_data_by_field(api_get_user_id(), 'google_calendar_url');
        if (!empty($extra_field_data) && isset($extra_field_data['google_calendar_url']) && !empty($extra_field_data['google_calendar_url'])) {
            $tpl->addGlobal('use_google_calendar', 1);
            $tpl->addGlobal('google_calendar_url', $extra_field_data['google_calendar_url']);
        }
        $this_section = SECTION_MYAGENDA;
        if (!api_is_anonymous()) {
            $can_add_events = 1;
        }
        break;
}
//Setting translations
$day_short = api_get_week_days_short();
$days = api_get_week_days_long();
$months = api_get_months_long();
$months_short = api_get_months_short();
 /**
  * Return user info array of all users registered in a course
  * This only returns the users that are registered in this actual course, not linked courses.
  * @param string $course_code
  * @param int $session_id
  * @param string $limit
  * @param string $order_by the field to order the users by.
  * Valid values are 'lastname', 'firstname', 'username', 'email', 'official_code' OR a part of a SQL statement
  * that starts with ORDER BY ...
  * @param null $filter_by_status if using the session_id: 0 or 2 (student, coach),
  * if using session_id = 0 STUDENT or COURSEMANAGER
  * @param null $return_count
  * @param bool $add_reports
  * @param bool $resumed_report
  * @param array $extra_field
  * @param array $courseCodeList
  * @param array $userIdList
  * @param string $filterByActive
  * @param array $sessionIdList
  * @return array|int
  */
 public static function get_user_list_from_course_code($course_code = null, $session_id = 0, $limit = null, $order_by = null, $filter_by_status = null, $return_count = null, $add_reports = false, $resumed_report = false, $extra_field = array(), $courseCodeList = array(), $userIdList = array(), $filterByActive = null, $sessionIdList = array())
 {
     $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
     $sessionTable = Database::get_main_table(TABLE_MAIN_SESSION);
     $session_id = intval($session_id);
     $course_code = Database::escape_string($course_code);
     $courseInfo = api_get_course_info($course_code);
     $courseId = 0;
     if (!empty($courseInfo)) {
         $courseId = $courseInfo['real_id'];
     }
     $where = array();
     if (empty($order_by)) {
         $order_by = 'user.lastname, user.firstname';
         if (api_is_western_name_order()) {
             $order_by = 'user.firstname, user.lastname';
         }
     }
     // if the $order_by does not contain 'ORDER BY'
     // we have to check if it is a valid field that can be sorted on
     if (!strstr($order_by, 'ORDER BY')) {
         if (!empty($order_by)) {
             $order_by = 'ORDER BY ' . $order_by;
         } else {
             $order_by = '';
         }
     }
     $filter_by_status_condition = null;
     if (!empty($session_id) || !empty($sessionIdList)) {
         $sql = 'SELECT DISTINCT
                     user.user_id,
                     user.email,
                     session_course_user.status as status_session,
                     session_id,
                     user.*,
                     course.*,
                     session.name as session_name
                 ';
         if ($return_count) {
             $sql = " SELECT COUNT(user.user_id) as count";
         }
         $sessionCondition = " session_course_user.session_id = {$session_id}";
         if (!empty($sessionIdList)) {
             $sessionIdListTostring = implode("','", array_map('intval', $sessionIdList));
             $sessionCondition = " session_course_user.session_id IN ('{$sessionIdListTostring}') ";
         }
         $courseCondition = " course.id = {$courseId}";
         if (!empty($courseCodeList)) {
             $courseCodeListForSession = array_map(array('Database', 'escape_string'), $courseCodeList);
             $courseCodeListForSession = implode('","', $courseCodeListForSession);
             $courseCondition = ' course.code IN ("' . $courseCodeListForSession . '")  ';
         }
         $sql .= ' FROM ' . Database::get_main_table(TABLE_MAIN_USER) . ' as user ';
         $sql .= " LEFT JOIN " . Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER) . " as session_course_user\n                      ON\n                        user.user_id = session_course_user.user_id AND\n                        {$sessionCondition}\n                        INNER JOIN {$course_table} course ON session_course_user.c_id = course.id AND\n                        {$courseCondition}\n                        INNER JOIN {$sessionTable} session ON session_course_user.session_id = session.id\n                   ";
         $where[] = ' session_course_user.c_id IS NOT NULL ';
         // 2 = coach
         // 0 = student
         if (isset($filter_by_status)) {
             $filter_by_status = intval($filter_by_status);
             $filter_by_status_condition = " session_course_user.status = {$filter_by_status} AND ";
         }
     } else {
         if ($return_count) {
             $sql = " SELECT COUNT(*) as count";
             if ($resumed_report) {
                 //$sql = " SELECT count(field_id) ";
             }
         } else {
             if (empty($course_code)) {
                 $sql = 'SELECT DISTINCT
                             course.title,
                             course.code,
                             course_rel_user.status as status_rel,
                             user.user_id,
                             user.email,
                             course_rel_user.is_tutor,
                             user.*  ';
             } else {
                 $sql = 'SELECT DISTINCT
                             course_rel_user.status as status_rel,
                             user.user_id,
                             user.email,
                             course_rel_user.is_tutor,
                             user.*  ';
             }
         }
         $sql .= ' FROM ' . Database::get_main_table(TABLE_MAIN_USER) . ' as user ';
         $sql .= ' LEFT JOIN ' . Database::get_main_table(TABLE_MAIN_COURSE_USER) . ' as course_rel_user
                     ON user.user_id = course_rel_user.user_id AND
                     course_rel_user.relation_type <> ' . COURSE_RELATION_TYPE_RRHH . '  ';
         $sql .= " INNER JOIN {$course_table} course ON course_rel_user.c_id = course.id ";
         if (!empty($course_code)) {
             $sql .= ' AND course_rel_user.c_id="' . $courseId . '"';
         }
         $where[] = ' course_rel_user.c_id IS NOT NULL ';
         if (isset($filter_by_status) && is_numeric($filter_by_status)) {
             $filter_by_status = intval($filter_by_status);
             $filter_by_status_condition = " course_rel_user.status = {$filter_by_status} AND ";
         }
     }
     $multiple_access_url = api_get_multiple_access_url();
     if ($multiple_access_url) {
         $sql .= ' LEFT JOIN ' . Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER) . ' au
                   ON (au.user_id = user.user_id) ';
     }
     $extraFieldWasAdded = false;
     if ($return_count && $resumed_report) {
         foreach ($extra_field as $extraField) {
             $extraFieldInfo = UserManager::get_extra_field_information_by_name($extraField);
             if (!empty($extraFieldInfo)) {
                 $fieldValuesTable = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES);
                 $sql .= ' LEFT JOIN ' . $fieldValuesTable . ' as ufv
                         ON (
                             user.user_id = ufv.item_id AND
                             (field_id = ' . $extraFieldInfo['id'] . ' OR field_id IS NULL)
                         )';
                 $extraFieldWasAdded = true;
             }
         }
     }
     $sql .= ' WHERE ' . $filter_by_status_condition . ' ' . implode(' OR ', $where);
     if ($multiple_access_url) {
         $current_access_url_id = api_get_current_access_url_id();
         $sql .= " AND (access_url_id =  {$current_access_url_id} ) ";
     }
     if ($return_count && $resumed_report && $extraFieldWasAdded) {
         $sql .= ' AND field_id IS NOT NULL GROUP BY value ';
     }
     if (!empty($courseCodeList)) {
         $courseCodeList = array_map(array('Database', 'escape_string'), $courseCodeList);
         $courseCodeList = implode('","', $courseCodeList);
         if (empty($sessionIdList)) {
             $sql .= ' AND course.code IN ("' . $courseCodeList . '")';
         }
     }
     if (!empty($userIdList)) {
         $userIdList = array_map('intval', $userIdList);
         $userIdList = implode('","', $userIdList);
         $sql .= ' AND user.user_id IN ("' . $userIdList . '")';
     }
     if (isset($filterByActive)) {
         $filterByActive = intval($filterByActive);
         $sql .= ' AND user.active = ' . $filterByActive;
     }
     $sql .= ' ' . $order_by . ' ' . $limit;
     $rs = Database::query($sql);
     $users = array();
     $extra_fields = UserManager::get_extra_fields(0, 100, null, null, true, true);
     $counter = 1;
     $count_rows = Database::num_rows($rs);
     if ($return_count && $resumed_report) {
         return $count_rows;
     }
     $table_user_field_value = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES);
     $tableExtraField = Database::get_main_table(TABLE_EXTRA_FIELD);
     if ($count_rows) {
         while ($user = Database::fetch_array($rs)) {
             if ($return_count) {
                 return $user['count'];
             }
             $report_info = array();
             $user_info = $user;
             $user_info['status'] = $user['status'];
             if (isset($user['is_tutor'])) {
                 $user_info['is_tutor'] = $user['is_tutor'];
             }
             if (!empty($session_id)) {
                 $user_info['status_session'] = $user['status_session'];
             }
             $sessionId = isset($user['session_id']) ? $user['session_id'] : 0;
             $course_code = isset($user['code']) ? $user['code'] : null;
             if ($add_reports) {
                 if ($resumed_report) {
                     $extra = array();
                     if (!empty($extra_fields)) {
                         foreach ($extra_fields as $extra) {
                             if (in_array($extra['1'], $extra_field)) {
                                 $user_data = UserManager::get_extra_user_data_by_field($user['user_id'], $extra['1']);
                                 break;
                             }
                         }
                     }
                     $row_key = '-1';
                     $name = '-';
                     if (!empty($extra)) {
                         if (!empty($user_data[$extra['1']])) {
                             $row_key = $user_data[$extra['1']];
                             $name = $user_data[$extra['1']];
                             $users[$row_key]['extra_' . $extra['1']] = $name;
                         }
                     }
                     $users[$row_key]['training_hours'] += Tracking::get_time_spent_on_the_course($user['user_id'], $courseId, $sessionId);
                     $users[$row_key]['count_users'] += $counter;
                     $registered_users_with_extra_field = 0;
                     if (!empty($name) && $name != '-') {
                         $extraFieldType = EntityExtraField::COURSE_FIELD_TYPE;
                         $name = Database::escape_string($name);
                         $sql = "SELECT count(v.item_id) as count\n                                    FROM {$table_user_field_value} v INNER JOIN\n                                    {$tableExtraField} f\n                                    ON (f.id = v.field_id)\n                                    WHERE value = '{$name}' AND extra_field_type = {$extraFieldType}";
                         $result_count = Database::query($sql);
                         if (Database::num_rows($result_count)) {
                             $row_count = Database::fetch_array($result_count);
                             $registered_users_with_extra_field = $row_count['count'];
                         }
                     }
                     $users[$row_key]['count_users_registered'] = $registered_users_with_extra_field;
                     $users[$row_key]['average_hours_per_user'] = $users[$row_key]['training_hours'] / $users[$row_key]['count_users'];
                     $category = Category::load(null, null, $course_code, null, null, $sessionId);
                     if (!isset($users[$row_key]['count_certificates'])) {
                         $users[$row_key]['count_certificates'] = 0;
                     }
                     if (isset($category[0]) && $category[0]->is_certificate_available($user['user_id'])) {
                         $users[$row_key]['count_certificates']++;
                     }
                     foreach ($extra_fields as $extra) {
                         if ($extra['1'] == 'ruc') {
                             continue;
                         }
                         if (!isset($users[$row_key][$extra['1']])) {
                             $user_data = UserManager::get_extra_user_data_by_field($user['user_id'], $extra['1']);
                             if (!empty($user_data[$extra['1']])) {
                                 $users[$row_key][$extra['1']] = $user_data[$extra['1']];
                             }
                         }
                     }
                 } else {
                     $sessionName = !empty($sessionId) ? ' - ' . $user['session_name'] : '';
                     $report_info['course'] = $user['title'] . $sessionName;
                     $report_info['user'] = api_get_person_name($user['firstname'], $user['lastname']);
                     $report_info['email'] = $user['email'];
                     $report_info['time'] = api_time_to_hms(Tracking::get_time_spent_on_the_course($user['user_id'], $courseId, $sessionId));
                     $category = Category::load(null, null, $course_code, null, null, $sessionId);
                     $report_info['certificate'] = Display::label(get_lang('No'));
                     if (isset($category[0]) && $category[0]->is_certificate_available($user['user_id'])) {
                         $report_info['certificate'] = Display::label(get_lang('Yes'), 'success');
                     }
                     $progress = intval(Tracking::get_avg_student_progress($user['user_id'], $course_code, array(), $sessionId));
                     $report_info['progress_100'] = $progress == 100 ? Display::label(get_lang('Yes'), 'success') : Display::label(get_lang('No'));
                     $report_info['progress'] = $progress . "%";
                     foreach ($extra_fields as $extra) {
                         $user_data = UserManager::get_extra_user_data_by_field($user['user_id'], $extra['1']);
                         $report_info[$extra['1']] = $user_data[$extra['1']];
                     }
                     $report_info['user_id'] = $user['user_id'];
                     $users[] = $report_info;
                 }
             } else {
                 $users[$user['user_id']] = $user_info;
             }
         }
     }
     return $users;
 }
/**
 * Returns the timezone to be converted to/from, based on user or admin preferences
 *
 * @return string The timezone chosen
 */
function _api_get_timezone()
{
    $timezone = api_get_setting('platform.timezone');
    // If allowed by the administrator
    $use_users_timezone = api_get_setting('profile.use_users_timezone');
    if ($use_users_timezone == 'true') {
        $userId = api_get_user_id();
        // Get the timezone based on user preference, if it exists
        $timezone_user = UserManager::get_extra_user_data_by_field($userId, 'timezone');
        if (isset($timezone_user['timezone']) && $timezone_user['timezone'] != null) {
            $timezone = $timezone_user['timezone'];
        }
    }
    return $timezone;
}
Exemple #7
0
 /**
  * This function get user block data (block id with its number of column) from extra user data
  * @param int  		User id
  * @return array  	data (block_id,column)
  */
 public static function get_user_block_data($user_id)
 {
     $user_id = intval($user_id);
     $field_variable = 'dashboard';
     $extra_user_data = UserManager::get_extra_user_data_by_field($user_id, $field_variable);
     $extra_user_data = explode(';', $extra_user_data[$field_variable]);
     $data = array();
     foreach ($extra_user_data as $extra) {
         $split_extra = explode(':', $extra);
         if (!empty($split_extra)) {
             $block_id = $split_extra[0];
             $column = isset($split_extra[1]) ? $split_extra[1] : null;
             $data[$block_id] = array('block_id' => $block_id, 'column' => $column);
         }
     }
     return $data;
 }
    } else {
        echo get_lang('NoOfficialCode');
    }
    ?>
                </td>
            </tr>
            <tr>
                <td><?php 
    echo get_lang('OnLine') . ' : ' . $online;
    ?>
 </td>
            </tr>
            <?php 
    // Display timezone if the user selected one and if the admin allows the use of user's timezone
    $timezone = null;
    $timezone_user = UserManager::get_extra_user_data_by_field($user_info['user_id'], 'timezone');
    $use_users_timezone = api_get_setting('profile.use_users_timezone');
    if (isset($timezone_user['timezone']) && !empty($timezone_user['timezone']) && $use_users_timezone == 'true') {
        $timezone = $timezone_user['timezone'];
    }
    if ($timezone !== null) {
        ?>
                <tr>
                    <td> <?php 
        echo get_lang('Timezone') . ' : ' . $timezone;
        ?>
 </td>
                </tr>
            <?php 
    }
    ?>
Exemple #9
0
/**
 * @param string $username
 * @return bool
 */
function api_get_user_blocked_by_captcha($username)
{
    $userInfo = api_get_user_info_from_username($username);
    if (empty($userInfo)) {
        return false;
    }
    $data = UserManager::get_extra_user_data_by_field($userInfo['user_id'], 'captcha_blocked_until_date');
    if (isset($data) && isset($data['captcha_blocked_until_date'])) {
        return $data['captcha_blocked_until_date'];
    }
    return false;
}
Exemple #10
0
 /**
  * Get user's feeds
  * @param   int User ID
  * @param   int Limit of posts per feed
  * @return  string  HTML section with all feeds included
  * @author  Yannick Warnier
  * @since   Dokeos 1.8.6.1
  */
 public static function get_user_feeds($user, $limit = 5)
 {
     $feed = UserManager::get_extra_user_data_by_field($user, 'rssfeeds');
     if (empty($feed)) {
         return '';
     }
     $feeds = explode(';', $feed['rssfeeds']);
     if (count($feeds) == 0) {
         return '';
     }
     $res = '';
     foreach ($feeds as $url) {
         if (empty($url)) {
             continue;
         }
         $rss = Zend\Feed\Reader\Reader::import($url);
         $i = 1;
         if (!empty($rss)) {
             $icon_rss = '';
             if (!empty($feed)) {
                 $icon_rss = Display::url(Display::return_icon('rss.png', '', array(), 32), Security::remove_XSS($feed['rssfeeds']), array('target' => '_blank'));
             }
             $res .= '<h2>' . $rss->getTitle() . '' . $icon_rss . '</h2>';
             $res .= '<div class="social-rss-channel-items">';
             /** @var Zend\Feed\Reader\Extension\Atom\Entry $item */
             foreach ($rss as $item) {
                 if ($limit >= 0 and $i > $limit) {
                     break;
                 }
                 $res .= '<h3><a href="' . $item->getTitle() . '">' . $item->getTitle() . '</a></h3>';
                 $res .= '<div class="social-rss-item-date">' . $item->getDateCreated()->format('Y-m-d') . '</div>';
                 $res .= '<div class="social-rss-item-content">' . $item->getDescription() . '</div><br />';
                 $i++;
             }
             $res .= '</div>';
         }
     }
     return $res;
 }
Exemple #11
0
 /**
  * Get user's feeds
  * @param   int User ID
  * @param   int Limit of posts per feed
  * @return  string  HTML section with all feeds included
  * @author  Yannick Warnier
  * @since   Dokeos 1.8.6.1
  */
 public static function get_user_feeds($user, $limit = 5)
 {
     if (!function_exists('fetch_rss')) {
         return '';
     }
     $feed = UserManager::get_extra_user_data_by_field($user, 'rssfeeds');
     if (empty($feed)) {
         return '';
     }
     $feeds = explode(';', $feed['rssfeeds']);
     if (count($feeds) == 0) {
         return '';
     }
     $res = '';
     foreach ($feeds as $url) {
         if (empty($url)) {
             continue;
         }
         $rss = @fetch_rss($url);
         $i = 1;
         if (!empty($rss->items)) {
             $icon_rss = '';
             if (!empty($feed)) {
                 $icon_rss = Display::url(Display::return_icon('social_rss.png', '', array(), 22), Security::remove_XSS($feed['rssfeeds']), array('target' => '_blank'));
             }
             $res .= '<h3 class="title-rss">' . $icon_rss . ' ' . $rss->channel['title'] . '</h3>';
             $res .= '<div class="rss-items">';
             foreach ($rss->items as $item) {
                 if ($limit >= 0 and $i > $limit) {
                     break;
                 }
                 $res .= '<h4 class="rss-title"><a href="' . $item['link'] . '">' . $item['title'] . '</a></h4>';
                 $res .= '<div class="rss-date">' . api_get_local_time($item['date_timestamp']) . '</div>';
                 $res .= '<div class="rss-content"><p>' . $item['description'] . '</p></div>';
                 $i++;
             }
             $res .= '</div>';
         }
     }
     return $res;
 }
 /**
  * Manage the user creation, including checking if the user hasn't been
  * created previously
  * @param array User data
  * @param object List of migrated things
  * @return array User info (from Chamilo DB)
  */
 static function create_user($data, &$omigrate = null)
 {
     //error_log('In create_user, receiving '.print_r($data,1));
     if (empty($data['uidIdPersona'])) {
         error_log('User does not have a uidIdPersona');
         error_log(print_r($data, 1));
         return false;
         //exit;
     }
     $data['uidIdPersona'] = strtoupper($data['uidIdPersona']);
     $data['status'] = STUDENT;
     if (isset($data['uidIdEmpleado'])) {
         $data['status'] = COURSEMANAGER;
     }
     if (!isset($data['username']) || empty($data['username'])) {
         $data['firstname'] = (string) trim($data['firstname']);
         $data['lastname'] = (string) trim($data['lastname']);
         if (empty($data['firstname']) && empty($data['lastname'])) {
             $wanted_user_name = UserManager::purify_username($data['uidIdPersona']);
             //$wanted_user_name = UserManager::create_unique_username(null, null);
         } else {
             $wanted_user_name = UserManager::create_username($data['firstname'], $data['lastname']);
         }
         $extra_data = UserManager::get_extra_user_data_by_value('uidIdPersona', $data['uidIdPersona']);
         if ($extra_data) {
             $user_info = api_get_user_info($extra_data[0]);
             //print_r($extra_data);
             //error_log("User_already_added - {$user_info['user_id']}  - {$user_info['username']} - {$user_info['firstname']} - {$user_info['lastname']}");
             return $user_info;
         }
         if (UserManager::is_username_available($wanted_user_name)) {
             $data['username'] = $wanted_user_name;
             error_log("username available  {$wanted_user_name}");
         } else {
             //the user already exists?
             $user_info = UserManager::get_user_info_simple($wanted_user_name);
             $user_persona = UserManager::get_extra_user_data_by_field($user_info['user_id'], 'uidIdPersona');
             if (isset($user_persona['uidIdPersona']) && $data['uidIdPersona'] == $user_persona['uidIdPersona']) {
                 error_log("Skip user already added: {$user_info['username']}");
                 return $user_info;
             } else {
                 error_log("Homonym - wanted_username: {$wanted_user_name} - uidIdPersona: {$user_persona['uidIdPersona']} - username: {$user_info['username']}");
                 //print_r($data);
                 //The user has the same firstname and lastname but it has another uiIdPersona could by an homonym
                 $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']);
                 error_log("homonym username created " . $data['username']);
             }
         }
         if (empty($data['username'])) {
             //Last chance to have a nice username
             if (empty($data['firstname']) && empty($data['lastname'])) {
                 $data['username'] = UserManager::create_unique_username(uniqid());
                 error_log("username empty 1" . $data['username']);
             } else {
                 $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']);
                 error_log("username empty 2" . $data['username']);
             }
         }
     } else {
         if (UserManager::is_username_available($data['username'])) {
             //error_log("username available {$data['username']} ");
         } else {
             //the user already exists?
             $user_info = UserManager::get_user_info_simple($data['username']);
             $user_persona = UserManager::get_extra_user_data_by_field($user_info['user_id'], 'uidIdPersona');
             if (isset($user_persona['uidIdPersona']) && (string) $data['uidIdPersona'] == (string) $user_persona['uidIdPersona']) {
                 //error_log("2 Skip user already added: {$user_info['username']}");
                 return $user_info;
             } else {
                 //print_r($user_persona);
                 //error_log("2 homonym - wanted_username: {$data['username']} - uidIdPersona: {$user_persona['uidIdPersona']} - username: {$user_info['username']}");
                 //print_r($data);
                 //The user has the same firstname and lastname but it has another uiIdPersona could by an homonym
                 $data['username'] = UserManager::create_unique_username($data['firstname'], $data['lastname']);
                 //error_log("2 homonym username created ". $data['username']);
             }
         }
     }
     if (empty($data['username'])) {
         error_log('No Username provided');
         error_log(print_r($data, 1));
         return false;
         //exit;
     }
     $id_persona = $data['uidIdPersona'];
     unset($data['uidIdPersona']);
     unset($data['uidIdAlumno']);
     unset($data['uidIdEmpleado']);
     $data['encrypt_method'] = 'sha1';
     global $api_failureList;
     $api_failureList = array();
     //error_log(print_r($data, 1));
     $user_info = UserManager::add($data);
     if (!$user_info) {
         error_log('User ' . $id_persona . ' could not be inserted (maybe duplicate?)');
     } else {
         //error_log('User '.$id_persona.' was created as user '.$user_info['user_id']);
     }
     if (is_array($omigrate) && isset($omigrate) && $omigrate['boost_users']) {
         $omigrate['users'][$id_persona] = $user_info['user_id'];
     }
     UserManager::update_extra_field_value($user_info['user_id'], 'uidIdPersona', $id_persona);
     return $user_info;
 }
Exemple #13
0
 /**
  * Return user info array of all users registered in the specified course
  * This only returns the users that are registered in this actual course, not linked courses.
  *
  * @param string    $course_code the code of the course
  * @param boolean   $with_session determines if the course is used in a session or not
  * @param integer   $session_id the id of the session
  * @param string    $limit the LIMIT statement of the sql statement
  * @param string    $order_by the field to order the users by. Valid values are 'lastname', 'firstname', 'username', 'email', 'official_code' OR a part of a SQL statement that starts with ORDER BY ...
  * @param int       if using the session_id: 0 or 2 (student, coach), if using session_id = 0 STUDENT or COURSEMANAGER
  * @return array
  */
 public static function get_user_list_from_course_code($course_code = null, $session_id = 0, $limit = null, $order_by = null, $filter_by_status = null, $return_count = null, $add_reports = false, $resumed_report = false, $extra_field = null)
 {
     // variable initialisation
     $session_id = intval($session_id);
     $course_code = Database::escape_string($course_code);
     $where = array();
     // if the $order_by does not contain 'ORDER BY' we have to check if it is a valid field that can be sorted on
     if (!strstr($order_by, 'ORDER BY')) {
         //if (!empty($order_by) AND in_array($order_by, array('lastname', 'firstname', 'username', 'email', 'official_code'))) {
         if (!empty($order_by)) {
             $order_by = 'ORDER BY ' . $order_by;
         } else {
             $order_by = '';
         }
     }
     $courseInfo = api_get_course_info($course_code);
     $courseId = null;
     if ($courseInfo) {
         $courseId = $courseInfo['real_id'];
     }
     $filter_by_status_condition = null;
     if (!empty($session_id) && !empty($courseId)) {
         $sql = 'SELECT DISTINCT user.user_id, session_course_user.status as status_session, user.*  ';
         $sql .= ' FROM ' . Database::get_main_table(TABLE_MAIN_USER) . ' as user ';
         $sql .= ' LEFT JOIN ' . Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER) . ' as session_course_user
                   ON user.user_id = session_course_user.id_user
                   AND session_course_user.c_id="' . $courseId . '"
                   AND session_course_user.id_session = ' . $session_id;
         $where[] = ' session_course_user.c_id IS NOT NULL ';
         // 2 = coach
         // 0 = student
         if (isset($filter_by_status)) {
             $filter_by_status = intval($filter_by_status);
             $filter_by_status_condition = " session_course_user.status = {$filter_by_status} AND ";
         }
     } else {
         if ($return_count) {
             $sql = " SELECT COUNT(*) as count";
             if ($resumed_report) {
                 //$sql = " SELECT count(field_id) ";
             }
         } else {
             if (empty($course_code)) {
                 $sql = 'SELECT DISTINCT course.title, course.code, course_rel_user.status as status_rel, user.user_id, course_rel_user.role, course_rel_user.tutor_id, user.*  ';
             } else {
                 $sql = 'SELECT DISTINCT course_rel_user.status as status_rel, user.user_id, course_rel_user.role, course_rel_user.tutor_id, user.*  ';
             }
         }
         $sql .= ' FROM ' . Database::get_main_table(TABLE_MAIN_USER) . ' as user ';
         $sql .= ' LEFT JOIN ' . Database::get_main_table(TABLE_MAIN_COURSE_USER) . ' as course_rel_user
                     ON user.user_id = course_rel_user.user_id AND
                     course_rel_user.relation_type <> ' . COURSE_RELATION_TYPE_RRHH;
         if (!empty($courseInfo)) {
             $sql .= " AND course_rel_user.c_id = " . $courseId;
         } else {
             $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
             $sql .= " INNER JOIN {$course_table} course ON course_rel_user.c_id = course.id";
         }
         $where[] = ' course_rel_user.c_id IS NOT NULL ';
         if (isset($filter_by_status) && $filter_by_status != '') {
             $filter_by_status = intval($filter_by_status);
             $filter_by_status_condition = " course_rel_user.status = {$filter_by_status} AND ";
         }
     }
     $multiple_access_url = api_get_multiple_access_url();
     if ($multiple_access_url) {
         $sql .= ' LEFT JOIN ' . Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER) . '  au ON (au.user_id = user.user_id) ';
     }
     if ($return_count && $resumed_report) {
         $extra_field_info = UserManager::get_extra_field_information_by_name($extra_field);
         $sql .= ' LEFT JOIN ' . Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES) . ' as ufv ON (user.user_id = ufv.user_id AND (field_id = ' . $extra_field_info['id'] . ' OR field_id IS NULL ) )';
     }
     $sql .= ' WHERE ' . $filter_by_status_condition . ' ' . implode(' OR ', $where);
     if ($multiple_access_url) {
         $current_access_url_id = api_get_current_access_url_id();
         $sql .= " AND (access_url_id =  {$current_access_url_id} ) ";
     }
     if ($return_count && $resumed_report) {
         $sql .= ' AND field_id IS NOT NULL  GROUP BY field_value ';
     }
     $sql .= ' ' . $order_by . ' ' . $limit;
     $rs = Database::query($sql);
     $users = array();
     if ($add_reports) {
         $extra_fields = UserManager::get_extra_fields(0, 100, null, null, true, true);
     }
     $counter = 1;
     $count_rows = Database::num_rows($rs);
     if ($return_count && $resumed_report) {
         return $count_rows;
     }
     $table_user_field_value = Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES);
     if ($count_rows) {
         while ($user = Database::fetch_array($rs)) {
             $report_info = array();
             if ($return_count) {
                 return $user['count'];
             }
             $user_info = $user;
             $user_info['status'] = $user['status'];
             if (isset($user['role'])) {
                 $user_info['role'] = $user['role'];
             }
             if (isset($user['tutor_id'])) {
                 $user_info['tutor_id'] = $user['tutor_id'];
             }
             if (!empty($session_id)) {
                 $user_info['status_session'] = $user['status_session'];
             }
             $user_info['complete_name'] = api_get_person_name($user_info['firstname'], $user_info['lastname']);
             if ($add_reports) {
                 $course_code = $user['code'];
                 if ($resumed_report) {
                     foreach ($extra_fields as $extra) {
                         if ($extra['1'] == $extra_field) {
                             $user_data = UserManager::get_extra_user_data_by_field($user['user_id'], $extra['1']);
                             break;
                         }
                     }
                     if (empty($user_data[$extra['1']])) {
                         $row_key = '-1';
                         $name = '-';
                     } else {
                         $row_key = $user_data[$extra['1']];
                         $name = $user_data[$extra['1']];
                     }
                     $users[$row_key]['extra_' . $extra['1']] = $name;
                     $users[$row_key]['training_hours'] += Tracking::get_time_spent_on_the_course($user['user_id'], $courseId, 0);
                     $users[$row_key]['count_users'] += $counter;
                     $registered_users_with_extra_field = 0;
                     if (!empty($name) && $name != '-') {
                         $name = Database::escape_string($name);
                         $sql = "SELECT count(user_id) as count FROM {$table_user_field_value} WHERE field_value = '{$name}'";
                         $result_count = Database::query($sql);
                         if (Database::num_rows($result_count)) {
                             $row_count = Database::fetch_array($result_count);
                             $registered_users_with_extra_field = $row_count['count'];
                         }
                     }
                     $users[$row_key]['count_users_registered'] = $registered_users_with_extra_field;
                     $users[$row_key]['average_hours_per_user'] = $users[$row_key]['training_hours'] / $users[$row_key]['count_users'];
                     $category = Category::load(null, null, $course_code);
                     if (!isset($users[$row_key]['count_certificates'])) {
                         $users[$row_key]['count_certificates'] = 0;
                     }
                     if (isset($category[0]) && $category[0]->is_certificate_available($user['user_id'])) {
                         $users[$row_key]['count_certificates']++;
                     }
                 } else {
                     $report_info['course'] = $user['title'];
                     $report_info['user'] = api_get_person_name($user['firstname'], $user['lastname']);
                     $report_info['time'] = api_time_to_hms(Tracking::get_time_spent_on_the_course($user['user_id'], $courseId, 0));
                     $category = Category::load(null, null, $course_code);
                     $report_info['certificate'] = Display::label(get_lang('No'));
                     if (isset($category[0]) && $category[0]->is_certificate_available($user['user_id'])) {
                         $report_info['certificate'] = Display::label(get_lang('Yes'), 'success');
                     }
                     //$report_info['score'] = Tracking::get_avg_student_score($user['user_id'], $courseId, array(), 0);
                     $progress = intval(Tracking::get_avg_student_progress($user['user_id'], $courseId, array(), 0));
                     $report_info['progress_100'] = $progress == 100 ? Display::label(get_lang('Yes'), 'success') : Display::label(get_lang('No'));
                     $report_info['progress'] = $progress . "%";
                     foreach ($extra_fields as $extra) {
                         $user_data = UserManager::get_extra_user_data_by_field($user['user_id'], $extra['1']);
                         $report_info[$extra['1']] = $user_data[$extra['1']];
                     }
                     $users[] = $report_info;
                 }
             } else {
                 $users[$user['user_id']] = $user_info;
             }
         }
         $counter++;
     }
     return $users;
 }
Exemple #14
0
/**
 * Finds all the information about a user. If no paramater is passed you find all the information about the current user.
 * @param $user_id (integer): the id of the user
 * @return $user_info (array): user_id, lastname, firstname, username, email, ...
 * @author Patrick Cool <*****@*****.**>
 * @version 21 September 2004
 */
function api_get_user_info($user_id = '', $check_if_user_is_online = false, $show_password = false, $add_extra_values = false)
{
    if (empty($user_id)) {
        $_user = Session::read('_user');
        return api_format_user($_user);
    }
    $sql = "SELECT * FROM " . Database::get_main_table(TABLE_MAIN_USER) . " WHERE user_id = '" . Database::escape_string($user_id) . "'";
    $result = Database::query($sql);
    if (Database::num_rows($result) > 0) {
        $result_array = Database::fetch_array($result);
        if ($check_if_user_is_online) {
            $use_status_in_platform = Online::user_is_online($user_id);
            $result_array['user_is_online'] = $use_status_in_platform;
            $user_online_in_chat = 0;
            if ($use_status_in_platform) {
                $user_status = UserManager::get_extra_user_data_by_field($user_id, 'user_chat_status', false, true);
                if (intval($user_status['user_chat_status']) == 1) {
                    $user_online_in_chat = 1;
                }
            }
            $result_array['user_is_online_in_chat'] = $user_online_in_chat;
        }
        $user = api_format_user($result_array, $show_password);
        if ($add_extra_values) {
            $extra_field_values = new ExtraField('user');
            $user['extra_fields'] = $extra_field_values->get_handler_extra_data($user_id);
        }
        return $user;
    }
    return false;
}
Exemple #15
0
             header('Location: ' . api_get_path(WEB_PATH) . 'index.php?loginFailed=1&error=blocked_by_captcha');
             exit;
         }
     }
 }
 if ($uData['auth_source'] == PLATFORM_AUTH_SOURCE || $uData['auth_source'] == CAS_AUTH_SOURCE) {
     $validPassword = false;
     $user = $userManager->findUserByUsername($login);
     if ($user) {
         $validPassword = UserManager::isPasswordValid($password, $user);
     }
     // The authentication of this user is managed by Chamilo itself
     //$password = api_get_encrypted_password(trim(stripslashes($password)));
     // Check the user's password
     if (($validPassword || $cas_login) && trim($login) == $uData['username']) {
         $update_type = UserManager::get_extra_user_data_by_field($uData['user_id'], 'update_type');
         $update_type = $update_type['update_type'];
         if (!empty($extAuthSource[$update_type]['updateUser']) && file_exists($extAuthSource[$update_type]['updateUser'])) {
             include_once $extAuthSource[$update_type]['updateUser'];
         }
         // Check if the account is active (not locked)
         if ($uData['active'] == '1') {
             // Check if the expiration date has not been reached
             if ($uData['expiration_date'] > date('Y-m-d H:i:s') || empty($uData['expiration_date'])) {
                 global $_configuration;
                 if (api_is_multiple_url_enabled()) {
                     // Check if user is an admin
                     $my_user_is_admin = UserManager::is_admin($uData['user_id']);
                     // This user is subscribed in these sites => $my_url_list
                     $my_url_list = api_get_access_url_from_user($uData['user_id']);
                     //Check the access_url configuration setting if
 /** Used by the widescale plugin */
 static function get_user_data($from, $number_of_items, $column, $direction, $get_count = false)
 {
     $user_table = Database::get_main_table(TABLE_MAIN_USER);
     $select = "SELECT\n                     u.user_id,\n                     u.username,\n                     u.firstname,\n                     u.lastname,\n                     ufv1.field_value as exam_password\n                     ";
     if ($get_count) {
         $select = "SELECT count(u.user_id) as total_rows";
     }
     $sql = "{$select} FROM {$user_table} u ";
     // adding the filter to see the user's only of the current access_url
     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)";
     }
     $extra_fields = array('exam_password', 'exam_room', 'exam_schedule');
     $counter = 1;
     $where_condition = "";
     $and_conditions = array();
     foreach ($extra_fields as $keyword_extra_data) {
         $extra_info = UserManager::get_extra_field_information_by_name($keyword_extra_data);
         $field_id = $extra_info['id'];
         $table_alias = "ufv{$counter}";
         $sql .= " INNER JOIN user_field_values {$table_alias} ON u.user_id = {$table_alias}.user_id AND {$table_alias}.field_id = {$field_id} ";
         $counter++;
         if ($keyword_extra_data == 'exam_password') {
             continue;
         }
         $keyword_extra_data_text = UserManager::get_extra_user_data_by_field(api_get_user_id(), $extra_info['field_variable']);
         $keyword_extra_data_text = $keyword_extra_data_text[$extra_info['field_variable']];
         if (!empty($keyword_extra_data_text)) {
             $and_conditions[] = " {$table_alias}.field_value LIKE '%" . trim($keyword_extra_data_text) . "%' ";
         }
     }
     if (!empty($and_conditions)) {
         $where_condition = implode(' AND ', $and_conditions);
     }
     if (!empty($where_condition)) {
         $sql .= " WHERE  {$where_condition} ";
     }
     $sql .= " AND u.user_id <> " . api_get_user_id();
     // adding the filter to see the user's only of the current access_url
     if ((api_is_platform_admin() || api_is_session_admin()) && api_get_multiple_access_url()) {
         $sql .= " AND url_rel_user.access_url_id=" . api_get_current_access_url_id();
     }
     if (!in_array($direction, array('ASC', 'DESC'))) {
         $direction = 'ASC';
     }
     if (in_array($column, array('username', 'firstname', 'lastname'))) {
         $column = $column;
     }
     $from = intval($from);
     $number_of_items = intval($number_of_items);
     //Returns counts and exits function
     if ($get_count) {
         $res = Database::query($sql);
         $user = Database::fetch_array($res);
         return $user['total_rows'];
     }
     $sql .= " ORDER BY {$column} {$direction} ";
     $sql .= " LIMIT {$from}, {$number_of_items}";
     $res = Database::query($sql);
     $users = array();
     while ($user = Database::fetch_array($res, 'ASSOC')) {
         $users[] = $user;
     }
     return $users;
 }