/**
  * Edits a question for the question manager
  *
  * @param Application $app
  * @param int $id
  * @return Response
  */
 public function editQuestionAction(Application $app, $id)
 {
     $extraJS = array();
     //@todo improve this JS includes should be added using twig
     $extraJS[] = '<link href="' . api_get_path(WEB_LIBRARY_PATH) . 'javascript/tag/style.css" rel="stylesheet" type="text/css" />';
     $extraJS[] = '<script src="' . api_get_path(WEB_LIBRARY_PATH) . 'javascript/tag/jquery.fcbkcomplete.js" type="text/javascript" language="javascript"></script>';
     $app['extraJS'] = $extraJS;
     // Setting exercise obj.
     $exercise = new \Exercise();
     $exercise->edit_exercise_in_lp = true;
     // Setting question obj.
     /** @var  \Question $question */
     $question = \Question::read($id, null, $exercise);
     $question->submitClass = "btn save";
     $question->submitText = get_lang('ModifyQuestion');
     $question->setDefaultValues = true;
     // Generating edit URL.
     $url = $app['url_generator']->generate('admin_questions_edit', array('id' => $id));
     // Creating a new form
     $form = new \FormValidator('edit_question', 'post', $url);
     $extraFields = new \ExtraField('question');
     $extraFields->addElements($form, $id);
     // Validating if there are extra fields to modify.
     if (count($form->_elements) > 1) {
         $form->addElement('button', 'submit', get_lang('Update'));
         $app['template']->assign('question', $question);
         $app['template']->assign('form', $form->toHtml());
     } else {
         $app['template']->assign('message', \Display::return_message(get_lang('ThereAreNotExtrafieldsAvailable'), 'warning'));
     }
     // If form was submitted.
     if ($form->validate()) {
         $field_value = new \ExtraFieldValue('question');
         $params = $form->exportValues();
         $params['question_id'] = $id;
         $field_value->save_field_values($params);
         $app['template']->assign('message', \Display::return_message(get_lang('ItemUpdated'), 'success'));
         $url = $app['url_generator']->generate('admin_questions_edit', array('id' => $id));
         return $app->redirect($url);
     }
     $response = $app['template']->render_template('admin/questionmanager/edit_question.tpl');
     return new Response($response, 200, array());
 }
 /**
  * Edits a question for the question manager
  *
  * @Route("/edit")
  * @Method({"GET"})
  * @param int $id
  * @return Response
  */
 public function editQuestionAction($id)
 {
     // Setting exercise obj.
     $exercise = new \Exercise();
     $exercise->edit_exercise_in_lp = true;
     // Setting question obj.
     /** @var  \Question $question */
     $question = \Question::read($id, null, $exercise);
     $question->submitClass = "btn save";
     $question->submitText = get_lang('ModifyQuestion');
     $question->setDefaultValues = true;
     // Generating edit URL.
     $url = $this->generateControllerUrl('editQuestionAction', array('id' => $id));
     // Creating a new form
     $form = new \FormValidator('edit_question', 'post', $url);
     $extraFields = new \ExtraField('question');
     $extraFields->addElements($form, $id);
     // Validating if there are extra fields to modify.
     if (count($form->_elements) > 1) {
         $form->addElement('button', 'submit', get_lang('Update'));
         $this->getTemplate()->assign('question', $question);
         $this->getTemplate()->assign('form', $form->toHtml());
     } else {
         $this->addFlash('warning', get_lang('ThereAreNotExtrafieldsAvailable'));
     }
     // If form was submitted.
     if ($form->validate()) {
         $field_value = new \ExtraFieldValue('question');
         $params = $form->exportValues();
         $params['question_id'] = $id;
         $field_value->save_field_values($params);
         $this->addFlash('success', get_lang('ItemUpdated'));
         $url = $this->generateControllerUrl('editQuestionAction', array('id' => $id));
         return $this->redirect($url);
     }
     $response = $this->renderTemplate('edit_question.tpl');
     return new Response($response, 200, array());
 }
Exemple #3
0
/**
 * Checks whether we already approved the last version term and condition
 * @param int user id
 * @return bool true if we pass false otherwise
 */
function api_check_term_condition($user_id)
{
    if (api_get_setting('registration.allow_terms_conditions') == 'true') {
        //check if exists terms and conditions
        if (LegalManager::count() == 0) {
            return true;
        }
        $extraFieldValue = new ExtraFieldValue('user');
        $data = $extraFieldValue->get_values_by_handler_and_field_variable($user_id, 'legal_accept');
        if (!empty($data) && isset($data['value'])) {
            $rowv = $data['value'];
            $user_conditions = explode(':', $rowv);
            $version = $user_conditions[0];
            $lang_id = $user_conditions[1];
            $real_version = LegalManager::get_last_version($lang_id);
            return $version >= $real_version;
        }
        return false;
    }
    return false;
}
 /**
  * Generate the URL for profile editing for a any user or the current user
  * @param int $userId Optional. The user id
  * @param boolean $asAdmin Optional. Whether get the URL for the platform admin
  * @return string If the URL is obtained return the drupal_user_id. Otherwise return false
  */
 public function generateProfileEditingURL($userId = 0, $asAdmin = false)
 {
     $userId = intval($userId);
     if (empty($userId)) {
         $userId = api_get_user_id();
     }
     $userExtraFieldValue = new ExtraFieldValue('user');
     $drupalUserIdData = $userExtraFieldValue->get_values_by_handler_and_field_variable($userId, 'drupal_user_id');
     // If this is an administrator, allow him to make some changes in
     // the Chamilo profile
     if ($asAdmin && api_is_platform_admin(true)) {
         return api_get_path(WEB_CODE_PATH) . "admin/user_edit.php?user_id={$userId}";
     }
     // If the user doesn't match a Drupal user, give the normal profile
     // link
     if ($drupalUserIdData === false) {
         return api_get_path(WEB_CODE_PATH) . 'auth/profile.php';
     }
     // In all other cases, generate a link to the Drupal profile edition
     $drupalUserId = $drupalUserIdData['value'];
     $url = "{$this->protocol}{$this->domain}/user/{$drupalUserId}/edit";
     return $url;
 }
Exemple #5
0
        if (isset($fields[$sessionFieldValue['field_id']])) {
            $var = $fields[$sessionFieldValue['field_id']];
            $val = $sessionFieldValue['value'];
            // Assign session field value to session
            $sessionArray[$var] = $val;
        }
    }
    $adminsArray = UserManager::get_all_administrators();
    $data['action'] = 'confirm';
    $data['sessionId'] = $sessionId;
    $data['currentUserId'] = api_get_user_id();
    $isWesternNameOrder = api_is_western_name_order();
    foreach ($studentList['students'] as &$student) {
        $studentId = intval($student['user_id']);
        $data['studentUserId'] = $studentId;
        $fieldValue = new ExtraFieldValue('user');
        $areaField = $fieldValue->get_values_by_handler_and_field_variable($studentId, 'area', true);
        $student['area'] = $areaField['value'];
        $student['userLink'] = api_get_path(WEB_CODE_PATH) . 'social/profile.php?u=' . $studentId;
        $data['queueId'] = intval($student['queue_id']);
        $data['newStatus'] = ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_APPROVED;
        $data['profile_completed'] = 100;
        $student['acceptUrl'] = $plugin->getQueueUrl($data);
        $data['newStatus'] = ADVANCED_SUBSCRIPTION_QUEUE_STATUS_ADMIN_DISAPPROVED;
        $student['rejectUrl'] = $plugin->getQueueUrl($data);
        $student['complete_name'] = $isWesternNameOrder ? $student['firstname'] . ', ' . $student['lastname'] : $student['lastname'] . ', ' . $student['firstname'];
    }
    $tpl->assign('session', $sessionArray);
    $tpl->assign('students', $studentList['students']);
}
// Assign variables
Exemple #6
0
/**
 * Get the users to display on the current page.
 */
function get_user_data($from, $number_of_items, $column, $direction)
{
    global $is_western_name_order;
    global $extraFields;
    $type = isset($_REQUEST['type']) ? intval($_REQUEST['type']) : STUDENT;
    $course_info = api_get_course_info();
    $sessionId = api_get_session_id();
    $course_code = $course_info['code'];
    $a_users = array();
    // limit
    if (!isset($_GET['keyword']) || empty($_GET['keyword'])) {
        $limit = 'LIMIT ' . intval($from) . ',' . intval($number_of_items);
    }
    if (!in_array($direction, array('ASC', 'DESC'))) {
        $direction = 'ASC';
    }
    switch ($column) {
        case 2:
            //official code
            $order_by = 'ORDER BY user.official_code ' . $direction;
            break;
        case 3:
            if ($is_western_name_order) {
                $order_by = 'ORDER BY user.firstname ' . $direction . ', user.lastname ' . $direction;
            } else {
                $order_by = 'ORDER BY user.lastname ' . $direction . ', user.firstname ' . $direction;
            }
            break;
        case 4:
            if ($is_western_name_order) {
                $order_by = 'ORDER BY user.lastname ' . $direction . ', user.firstname ' . $direction;
            } else {
                $order_by = 'ORDER BY user.firstname ' . $direction . ', user.lastname ' . $direction;
            }
            break;
        case 5:
            //username
            $order_by = 'ORDER BY user.username ' . $direction;
            break;
        default:
            if ($is_western_name_order) {
                $order_by = 'ORDER BY user.lastname ' . $direction . ', user.firstname ' . $direction;
            } else {
                $order_by = 'ORDER BY user.firstname ' . $direction . ', user.lastname ' . $direction;
            }
            break;
    }
    $active = isset($_GET['active']) ? $_GET['active'] : null;
    if (empty($sessionId)) {
        $status = $type;
    } else {
        if ($type == COURSEMANAGER) {
            $status = 2;
        } else {
            $status = 0;
        }
    }
    $a_course_users = CourseManager::get_user_list_from_course_code($course_code, $sessionId, $limit, $order_by, $status, null, false, false, null, array(), array(), $active);
    foreach ($a_course_users as $user_id => $o_course_user) {
        if (isset($_GET['keyword']) && searchUserKeyword($o_course_user['firstname'], $o_course_user['lastname'], $o_course_user['username'], $o_course_user['official_code'], $_GET['keyword']) || !isset($_GET['keyword']) || empty($_GET['keyword'])) {
            $groupsNameList = GroupManager::getAllGroupPerUserSubscription($user_id);
            $groupsNameListParsed = [];
            if (!empty($groupsNameList)) {
                $groupsNameListParsed = array_column($groupsNameList, 'name');
            }
            $temp = array();
            if (api_is_allowed_to_edit(null, true)) {
                $userInfo = api_get_user_info($user_id);
                $photo = '<img src="' . $userInfo['avatar_small'] . '" alt="' . $userInfo['complete_name'] . '" title="' . $userInfo['complete_name'] . '" />';
                $temp[] = $user_id;
                $temp[] = $photo;
                $temp[] = $o_course_user['official_code'];
                if ($is_western_name_order) {
                    $temp[] = $o_course_user['firstname'];
                    $temp[] = $o_course_user['lastname'];
                } else {
                    $temp[] = $o_course_user['lastname'];
                    $temp[] = $o_course_user['firstname'];
                }
                $temp[] = $o_course_user['username'];
                // Groups.
                $temp[] = implode(', ', $groupsNameListParsed);
                // Status
                $default_status = get_lang('Student');
                if (isset($o_course_user['status_rel']) && $o_course_user['status_rel'] == 1 || isset($o_course_user['status_session']) && $o_course_user['status_session'] == 2) {
                    $default_status = get_lang('CourseManager');
                } elseif (isset($o_course_user['is_tutor']) && $o_course_user['is_tutor'] == 1) {
                    $default_status = get_lang('Tutor');
                }
                $temp[] = $default_status;
                // Active
                $temp[] = $o_course_user['active'];
                if (!empty($extraFields)) {
                    foreach ($extraFields as $extraField) {
                        $extraFieldValue = new ExtraFieldValue('user');
                        $data = $extraFieldValue->get_values_by_handler_and_field_id($user_id, $extraField['id']);
                        $temp[] = $data['value'];
                    }
                }
                // User id for actions
                $temp[] = $user_id;
                $temp['is_tutor'] = isset($o_course_user['is_tutor']) ? $o_course_user['is_tutor'] : '';
                $temp['user_status_in_course'] = isset($o_course_user['status_rel']) ? $o_course_user['status_rel'] : '';
            } else {
                $userInfo = api_get_user_info($user_id);
                $userPicture = $userInfo['avatar'];
                $photo = '<img src="' . $userPicture . '" alt="' . $userInfo['complete_name'] . '" width="22" height="22" title="' . $userInfo['complete_name'] . '" />';
                $temp[] = $user_id;
                $temp[] = $photo;
                $temp[] = $o_course_user['official_code'];
                if ($is_western_name_order) {
                    $temp[] = $o_course_user['firstname'];
                    $temp[] = $o_course_user['lastname'];
                } else {
                    $temp[] = $o_course_user['lastname'];
                    $temp[] = $o_course_user['firstname'];
                }
                $temp[] = $o_course_user['username'];
                // Group.
                $temp[] = implode(', ', $groupsNameListParsed);
                if ($course_info['unsubscribe'] == 1) {
                    //User id for actions
                    $temp[] = $user_id;
                }
            }
            $a_users[$user_id] = $temp;
        }
    }
    return $a_users;
}
function WSDeleteSession($params)
{
    if (!WSHelperVerifyKey($params)) {
        return return_error(WS_ERROR_SECRET_KEY);
    }
    $tbl_session = Database::get_main_table(TABLE_MAIN_SESSION);
    $tbl_session_rel_course = Database::get_main_table(TABLE_MAIN_SESSION_COURSE);
    $tbl_session_rel_course_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_COURSE_USER);
    $tbl_session_rel_user = Database::get_main_table(TABLE_MAIN_SESSION_USER);
    $tbl_user = Database::get_main_table(TABLE_MAIN_USER);
    $session_params = $params['sessions'];
    $results = array();
    $orig_session_id_value = array();
    foreach ($session_params as $session_param) {
        $original_session_id_value = $session_param['original_session_id_value'];
        $original_session_id_name = $session_param['original_session_id_name'];
        $orig_session_id_value[] = $original_session_id_name;
        $idChecked = SessionManager::getSessionIdFromOriginalId($original_session_id_value, $original_session_id_name);
        if (empty($idChecked)) {
            $results[] = 0;
            continue;
        }
        $session_ids[] = $idChecked;
        $sql = "DELETE FROM {$tbl_session} WHERE id = '{$idChecked}'";
        Database::query($sql);
        $sql = "DELETE FROM {$tbl_session_rel_course} WHERE session_id = '{$idChecked}'";
        Database::query($sql);
        $sql = "DELETE FROM {$tbl_session_rel_course_rel_user} WHERE session_id = '{$idChecked}'";
        Database::query($sql);
        $sql = "DELETE FROM {$tbl_session_rel_user} WHERE session_id = '{$idChecked}'";
        Database::query($sql);
        $results[] = 1;
        continue;
    }
    $extraFieldValue = new ExtraFieldValue('session');
    //delete from table_session_field_value from a given session_id
    foreach ($session_ids as $session_id) {
        $extraFieldValue->deleteValuesByItem($session_id);
    }
    // Preparing output.
    $count_results = count($results);
    $output = array();
    for ($i = 0; $i < $count_results; $i++) {
        $output[] = array('original_session_id_value' => $orig_session_id_value[$i], 'result' => $results[$i]);
    }
    return $output;
}
 /**
  * Get the course id based on the original id and field name in the extra fields.
  * Returns 0 if course was not found
  *
  * @param string $value Original course code
  * @param string $variable Original field name
  * @return int Course id
  */
 public static function getCourseInfoFromOriginalId($value, $variable)
 {
     $extraFieldValue = new ExtraFieldValue('course');
     $result = $extraFieldValue->get_item_id_from_field_variable_and_field_value($variable, $value);
     if (!empty($result)) {
         $courseInfo = api_get_course_info_by_id($result['item_id']);
         return $courseInfo;
     }
     return 0;
 }
 /**
  * Executes a fields match
  * @param array List of fields that must be matched ('fields_match' => array(0=>array('orig'=>'...','dest'=>'...',...)))
  * @param array Row of data
  * @param array Extra fields table definition
  */
 function execute_field_match($table, $row, $extra_fields = array())
 {
     //error_log('execute_field_match');
     $dest_row = array();
     $first_field = '';
     // If a dest table has been defined, fill $my_extra_fields with the
     //  extra_fields defined for that table
     $my_extra_fields = isset($table['dest_table']) && isset($extra_fields[$table['dest_table']]) ? $extra_fields[$table['dest_table']] : null;
     $extra_field_obj = null;
     $extra_field_value_obj = null;
     if (!empty($table['dest_table'])) {
         $extra_field_obj = new ExtraField($table['dest_table']);
         $extra_field_value_obj = new ExtraFieldValue($table['dest_table']);
     }
     $extra_fields_to_insert = array();
     global $data_list;
     // Fill the data list, if possible
     if (count($data_list['users']) < 1) {
         MigrationCustom::fill_data_list($data_list);
     }
     foreach ($table['fields_match'] as $id_field => $details) {
         //if ($table['dest_table'] == 'session') {error_log('Processing field '.$details['orig']);}
         $params = array();
         // Remove the table name prefix if any (in the orig field)
         if (isset($details['orig'])) {
             $field_exploded = explode('.', $details['orig']);
             if (isset($field_exploded[1])) {
                 $details['orig'] = $field_exploded[1];
             }
         }
         // process the fields one by one
         if ($details['func'] == 'none' || empty($details['func'])) {
             // if no function is defined to alter the field, take it as is
             $dest_data = $row[$details['orig']];
         } else {
             // if an alteration function is defined, run it on the field
             //error_log(__FILE__.' '.__LINE__.' Preparing to treat field with '.$details['func']);
             $dest_data = MigrationCustom::$details['func']($row[$details['orig']], $data_list, $row);
         }
         if (isset($dest_row[$details['dest']])) {
             $dest_row[$details['dest']] .= ' ' . $dest_data;
         } else {
             $dest_row[$details['dest']] = $dest_data;
         }
         //Extra field values
         $extra_field = isset($my_extra_fields) && isset($my_extra_fields[$details['dest']]) ? $my_extra_fields[$details['dest']] : null;
         // Check the array is there
         //if($table['dest_table'] == 'session') error_log('Extra field: '.print_r($extra_field,1));
         if (!empty($extra_field) && $extra_field_obj) {
             //if($table['dest_table'] == 'session') error_log('Extra_field no es vacío');
             // Check the "options" array is defined for this field (checking is_array is crucial here, see BT#5215)
             if (is_array($extra_field['options']) && count($extra_field['options']) > 0) {
                 //if($table['dest_table'] == 'session') error_log('...y sus opciones son: '.print_r($extra_field['options'],1));
                 //if($details['orig']=='uidIdPrograma') { error_log('Eso era lo inicial, del cual se tomó '.$details['dest'].': '.print_r($my_extra_fields,1));}
                 $options = $extra_field['options'];
                 $field_type = $extra_field['field_type'];
                 //if ($table['dest_table'] == 'session') {error_log('Field orig: '.$details['orig']);}
                 if (!empty($options)) {
                     //if ($table['dest_table'] == 'session') {error_log('Options not empty');}
                     if (!is_array($options)) {
                         $options = array($options);
                     }
                     foreach ($options as $option) {
                         if (is_array($option)) {
                             foreach ($option as $key => $value) {
                                 //error_log("$key $value --> {$dest_row[$details['dest']]} ");
                                 if ($key == 'option_value' && $value == $dest_row[$details['dest']]) {
                                     $value = $option['option_display_text'];
                                     if ($field_type == Extrafield::FIELD_TYPE_SELECT) {
                                         $value = $option['option_value'];
                                     }
                                     $params = array('field_id' => $option['field_id'], 'field_value' => $value);
                                     break 2;
                                 }
                             }
                         }
                     }
                 }
             } else {
                 $params = array('field_id' => $extra_field, 'field_value' => $dest_row[$details['dest']]);
             }
             if (!empty($params)) {
                 $extra_fields_to_insert[] = $params;
             }
             unset($dest_row[$details['dest']]);
         }
         unset($extra_field);
     }
     //if ($table['dest_table']=='session') { error_log('Params: '.print_r($params,1)); }
     // If a dest_func entry has been defind, use this entry as the main
     // operation to execute when inserting the item
     if (!empty($table['dest_func'])) {
         //error_log('Calling '.$table['dest_func'].' on data recovered: '.print_r($dest_row, 1));
         $dest_row['return_item_if_already_exists'] = true;
         $item_result = false;
         // Using call_user_func_array() has a serious impact on performance
         switch ($table['dest_func']) {
             case USER_FUNC_EXCEPTION_GRADEBOOK:
                 MigrationCustom::add_gradebook_result_with_evaluation($dest_row);
                 break;
             case USER_FUNC_EXCEPTION_ATTENDANCE:
                 MigrationCustom::create_attendance($dest_row);
                 break;
             default:
                 $item_result = call_user_func_array($table['dest_func'], array($dest_row, $data_list));
         }
         //After the function was executed fill the $data_list array
         switch ($table['dest_table']) {
             case 'course':
                 //Saving courses in array
                 if ($item_result) {
                     //$data_list['courses'][$dest_row['uidIdCurso']] = $item_result;
                 } else {
                     error_log('Course Not FOUND');
                     error_log(print_r($item_result, 1));
                     return false;
                 }
                 $handler_id = $item_result['code'];
                 break;
             case 'user':
                 if (!empty($item_result)) {
                     $handler_id = $item_result['user_id'];
                     //error_log($dest_row['email'].' '.$dest_row['uidIdPersona']);
                     if (isset($dest_row['uidIdAlumno'])) {
                         //$data_list['users_alumno'][$dest_row['uidIdAlumno']]['extra'] = $item_result;
                     }
                     if (isset($dest_row['uidIdEmpleado'])) {
                         //print_r($dest_row['uidIdEmpleado']);exit;
                         //$data_list['users_empleado'][$dest_row['uidIdEmpleado']]['extra'] = $item_result;
                     }
                 } else {
                     global $api_failureList;
                     error_log('Empty user details');
                     error_log(print_r($api_failureList, 1));
                 }
                 break;
             case 'session':
                 //$data_list['sessions'][$dest_row['uidIdPrograma']] = $item_result;
                 $handler_id = $item_result;
                 //session_id
                 break;
         }
         //Saving extra fields of the element
         //error_log('Checking extra fields for '.$extra_field_value_obj->handler_id.' '.$handler_id);
         if (!empty($extra_fields_to_insert)) {
             foreach ($extra_fields_to_insert as $params) {
                 //error_log('Trying to save '.print_r($params,1));
                 $params[$extra_field_value_obj->handler_id] = $handler_id;
                 $extra_field_value_obj->save($params);
             }
         }
     } else {
         // $this->errors_stack[] = "No destination data dest_func found. Abandoning data with first field $first_field = " . $dest_row[$first_field];
     }
     unset($extra_fields_to_insert);
     //remove to free up memory
     return $dest_row;
 }
 static function get_horario_value($session_id)
 {
     $extra_field_value = new ExtraFieldValue('session');
     //Getting horario info
     $extra_field = new ExtraField('session');
     $extra_field_info = $extra_field->get_handler_field_info_by_field_variable('horario');
     $horario_info = $extra_field_value->get_values_by_handler_and_field_id($session_id, $extra_field_info['id']);
     $extra_field_option = new ExtraFieldOption('session');
     $horario_info = $extra_field_option->get_field_option_by_field_and_option($extra_field_info['id'], $horario_info['field_value']);
     $time = "08:00";
     if (isset($horario_info) && isset($horario_info[0])) {
         $horario = $horario_info[0]['option_display_text'];
         $horario_array = explode(' ', $horario);
         //Schedule format is "(01) 07:00 09:00" in this case. Adapt to your case
         if (isset($horario_array[1])) {
             $time = $horario_array[1];
         }
     }
     return $time;
 }
 /**
  *
  * @param int $start
  * @param int $limit
  * @param int $sidx
  * @param string $sord
  * @param array $where_condition
  * @param array $extraFields
  */
 public function getQuestionListPagination($start, $limit, $sidx, $sord, $where_condition = array(), $extraFields = array())
 {
     if (!empty($this->id)) {
         $category_list = TestCategory::getListOfCategoriesNameForTest($this->id, false);
         $TBL_EXERCICE_QUESTION = Database::get_course_table(TABLE_QUIZ_TEST_QUESTION);
         $TBL_QUESTIONS = Database::get_course_table(TABLE_QUIZ_QUESTION);
         $sql = "SELECT q.iid\n                    FROM {$TBL_EXERCICE_QUESTION} e INNER JOIN {$TBL_QUESTIONS}  q\n                        ON (e.question_id = q.iid AND e.c_id = " . $this->course_id . " )\n\t\t\t\t\tWHERE e.exercice_id\t= '" . Database::escape_string($this->id) . "'\n\t\t\t\t\t";
         $orderCondition = "ORDER BY question_order";
         if (!empty($sidx) && !empty($sord)) {
             if ($sidx == 'question') {
                 if (in_array(strtolower($sord), array('desc', 'asc'))) {
                     $orderCondition = " ORDER BY q.{$sidx} {$sord}";
                 }
             }
         }
         $sql .= $orderCondition;
         $limitCondition = null;
         if (isset($start) && isset($limit)) {
             $start = intval($start);
             $limit = intval($limit);
             $limitCondition = " LIMIT {$start}, {$limit}";
         }
         $sql .= $limitCondition;
         $result = Database::query($sql);
         $questions = array();
         if (Database::num_rows($result)) {
             if (!empty($extraFields)) {
                 $extraFieldValue = new ExtraFieldValue('question');
             }
             while ($question = Database::fetch_array($result, 'ASSOC')) {
                 /** @var Question $objQuestionTmp */
                 $objQuestionTmp = Question::read($question['iid']);
                 $category_labels = TestCategory::return_category_labels($objQuestionTmp->category_list, $category_list);
                 if (empty($category_labels)) {
                     $category_labels = "-";
                 }
                 // Question type
                 list($typeImg, $typeExpl) = $objQuestionTmp->get_type_icon_html();
                 $question_media = null;
                 if (!empty($objQuestionTmp->parent_id)) {
                     $objQuestionMedia = Question::read($objQuestionTmp->parent_id);
                     $question_media = Question::getMediaLabel($objQuestionMedia->question);
                 }
                 $questionType = Display::tag('div', Display::return_icon($typeImg, $typeExpl, array(), ICON_SIZE_MEDIUM) . $question_media);
                 $question = array('id' => $question['iid'], 'question' => $objQuestionTmp->selectTitle(), 'type' => $questionType, 'category' => Display::tag('div', '<a href="#" style="padding:0px; margin:0px;">' . $category_labels . '</a>'), 'score' => $objQuestionTmp->selectWeighting(), 'level' => $objQuestionTmp->level);
                 if (!empty($extraFields)) {
                     foreach ($extraFields as $extraField) {
                         $value = $extraFieldValue->get_values_by_handler_and_field_id($question['id'], $extraField['id']);
                         $stringValue = null;
                         if ($value) {
                             $stringValue = $value['field_value'];
                         }
                         $question[$extraField['field_variable']] = $stringValue;
                     }
                 }
                 $questions[] = $question;
             }
         }
         return $questions;
     }
 }
Exemple #12
0
$hash = Security::remove_XSS($_REQUEST['v']);
// Get data from request (GET or POST)
$data['action'] = 'confirm';
$data['currentUserId'] = 1;
$data['queueId'] = 0;
$data['is_connected'] = true;
$data['profile_completed'] = 90.0;
// Init result array
$data['sessionId'] = 1;
$data['studentUserId'] = 4;
// Prepare data
// Get session data
// Assign variables
$fieldsArray = array('description', 'target', 'mode', 'publication_end_date', 'recommended_number_of_participants');
$sessionArray = api_get_session_info($data['sessionId']);
$extraSession = new ExtraFieldValue('session');
$extraField = new ExtraField('session');
// Get session fields
$fieldList = $extraField->get_all(array('variable IN ( ?, ?, ?, ?, ?)' => $fieldsArray));
$fields = array();
// Index session fields
foreach ($fieldList as $field) {
    $fields[$field['id']] = $field['variable'];
}
$mergedArray = array_merge(array($data['sessionId']), array_keys($fields));
$sessionFieldValueList = $extraSession->get_all(array('item_id = ? field_id IN ( ?, ?, ?, ?, ?, ?, ? )' => $mergedArray));
foreach ($sessionFieldValueList as $sessionFieldValue) {
    // Check if session field value is set in session field list
    if (isset($fields[$sessionFieldValue['field_id']])) {
        $var = $fields[$sessionFieldValue['field_id']];
        $val = $sessionFieldValue['value'];
Exemple #13
0
/**
 * Get the users to display on the current page.
 */
function get_user_data($from, $number_of_items, $column, $direction)
{
    global $origin;
    global $course_info;
    global $is_western_name_order;
    global $session_id;
    global $extraFields;

    $a_users = array();

    // limit
    if (!isset($_GET['keyword']) || empty($_GET['keyword'])) {
        $limit = 'LIMIT '.intval($from).','.intval($number_of_items);
    }

    if (!in_array($direction, array('ASC', 'DESC'))) {
        $direction = 'ASC';
    }

    switch ($column) {
        case 2: //official code
            $order_by = 'ORDER BY user.official_code '.$direction;
            break;
        case 3:
            if ($is_western_name_order) {
                $order_by = 'ORDER BY user.firstname '.$direction.', user.lastname '.$direction;
            } else {
                $order_by = 'ORDER BY user.lastname '.$direction.', user.firstname '.$direction;
            }
            break;
        case 4:
            if ($is_western_name_order) {
                $order_by = 'ORDER BY user.lastname '.$direction.', user.firstname '.$direction;
            } else {
                $order_by = 'ORDER BY user.firstname '.$direction.', user.lastname '.$direction;
            }
            break;
        case 5: //username
            $order_by = 'ORDER BY user.username '.$direction;
            break;
        default:
            if ($is_western_name_order) {
                $order_by = 'ORDER BY user.lastname '.$direction.', user.firstname '.$direction;
            } else {
                $order_by = 'ORDER BY user.firstname '.$direction.', user.lastname '.$direction;
            }
            break;
    }

    $session_id = api_get_session_id();
    $course_code = api_get_course_id();
    $active = isset($_GET['active']) ? $_GET['active'] : null;
    $a_course_users = CourseManager :: get_user_list_from_course_code(
        $course_code,
        $session_id,
        $limit,
        $order_by,
        null,
        null,
        false,
        false,
        null,
        array(),
        array(),
        $active
    );

    foreach ($a_course_users as $user_id => $o_course_user) {
        if ((
                isset($_GET['keyword']) &&
                searchUserKeyword(
                    $o_course_user['firstname'],
                    $o_course_user['lastname'],
                    $o_course_user['username'],
                    $o_course_user['official_code'],
                    $_GET['keyword'])
            ) || !isset($_GET['keyword']) || empty($_GET['keyword'])
        ) {

            $groupsNameList = GroupManager::getAllGroupPerUserSubscription($user_id);
            $temp = array();
            if (api_is_allowed_to_edit(null, true)) {
                $temp[] = $user_id;
                $image_path = UserManager::get_user_picture_path_by_id(
                    $user_id,
                    'web',
                    false,
                    true
                );
                $user_profile = UserManager::get_picture_user(
                    $user_id,
                    $image_path['file'],
                    22,
                    USER_IMAGE_SIZE_SMALL,
                    ' width="22" height="22" '
                );
                if (!api_is_anonymous()) {
                    $photo = '<a href="userInfo.php?'.api_get_cidreq().'&origin='.$origin.'&amp;uInfo='.$user_id.'" title="'.get_lang('Info').'"  ><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'"  title="'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'" /></a>';
                } else {
                    $photo = '<img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'" title="'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'" />';
                }

                $temp[] = $photo;
                $temp[] = $o_course_user['official_code'];

                if ($is_western_name_order) {
                    $temp[] = $o_course_user['firstname'];
                    $temp[] = $o_course_user['lastname'];
                } else {
                    $temp[] = $o_course_user['lastname'];
                    $temp[] = $o_course_user['firstname'];
                }

                $temp[] = $o_course_user['username'];
                // Description.
                $temp[] = isset($o_course_user['role']) ? $o_course_user['role'] : null;
                // Groups.
                $temp[] = implode(', ', $groupsNameList);
                // Status
                $default_status = '-';
                if ((isset($o_course_user['status_rel']) && $o_course_user['status_rel'] == 1) ||
                    (isset($o_course_user['status_session']) && $o_course_user['status_session'] == 2)
                ) {
                    $default_status = get_lang('CourseManager');
                } elseif (isset($o_course_user['tutor_id']) && $o_course_user['tutor_id'] == 1) {
                    $default_status = get_lang('Tutor');
                }
                $temp[] = $default_status;

                // Active
                $temp[] = $o_course_user['active'];

                if (!empty($extraFields)) {
                    foreach ($extraFields as $extraField) {
                        $extraFieldValue = new ExtraFieldValue('user');
                        $data = $extraFieldValue->get_values_by_handler_and_field_id(
                            $user_id,
                            $extraField['id']
                        );
                        $temp[] = $data['field_value'];
                    }
                }

                // User id for actions
                $temp[] = $user_id;
            } else {
                $image_path = UserManager::get_user_picture_path_by_id($user_id, 'web', false, true);
                $image_repository = $image_path['dir'];
                $existing_image = $image_path['file'];
                if (!api_is_anonymous()) {
                    $photo= '<a href="userInfo.php?'.api_get_cidreq().'&origin='.$origin.'&amp;uInfo='.$user_id.'" title="'.get_lang('Info').'"  ><img src="'.$image_repository.$existing_image.'" alt="'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'"  width="22" height="22" title="'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'" /></a>';
                } else {
                    $photo= '<img src="'.$image_repository.$existing_image.'" alt="'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'"  width="22" height="22" title="'.api_get_person_name($o_course_user['firstname'], $o_course_user['lastname']).'" />';
                }
                $temp[] = $user_id;
                $temp[] = $photo;
                $temp[] = $o_course_user['official_code'];

                if ($is_western_name_order) {
                    $temp[] = $o_course_user['firstname'];
                    $temp[] = $o_course_user['lastname'];
                } else {
                    $temp[] = $o_course_user['lastname'];
                    $temp[] = $o_course_user['firstname'];
                }
                $temp[] = $o_course_user['username'];
                $temp[] = $o_course_user['role'];
                // Group.
                $temp[] = implode(', ', $groupsNameList);

                if ($course_info['unsubscribe'] == 1) {
                    //User id for actions
                    $temp[] = $user_id;
                }
            }
            $a_users[$user_id] = $temp;
        }
    }

    return $a_users;
}
Exemple #14
0
<?php

/* For licensing terms, see /license.txt */
/**
*   Session view
*   @package chamilo.session
*   @author Julio Montoya <*****@*****.**>  Beeznest
*/
use ChamiloSession as Session;
$cidReset = true;
//require_once '../inc/global.inc.php';
if (empty($_GET['session_id'])) {
    api_not_allowed();
}
$session_id = isset($_GET['session_id']) ? intval($_GET['session_id']) : null;
$sessionField = new ExtraFieldValue('session');
$valueAllowVisitors = $sessionField->get_values_by_handler_and_field_variable($session_id, 'allow_visitors');
$allowVisitors = $valueAllowVisitors != false;
if (!$allowVisitors) {
    // Only users who are logged in can proceed.
    api_block_anonymous_users();
}
$this_section = SECTION_COURSES;
$htmlHeadXtra[] = api_get_jqgrid_js();
$course_id = isset($_GET['course_id']) ? intval($_GET['course_id']) : null;
Session::write('id_session', $session_id);
// Clear the exercise session just in case
Session::erase('objExercise');
$userId = api_get_user_id();
$session_info = SessionManager::fetch($session_id);
$session_list = SessionManager::get_sessions_by_coach(api_get_user_id());
Exemple #15
0
 /**
  * Updates a course with the given array of attributes
  * @param array Array of attributes
  * @return array Array of course attributes
  * @assert () === false
  */
 public static function update($params)
 {
     if (!is_array($params) or count($params) < 1) {
         return false;
     }
     $course_user_table = Database::get_main_table(TABLE_MAIN_COURSE_USER);
     $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
     $course_code = $params['code'];
     $courseInfo = api_get_course_info($course_code);
     $visual_code = $params['visual_code'];
     $field_value = new ExtraFieldValue('course');
     $params['course_code'] = $course_code;
     $field_value->save_field_values($params);
     /*$tutor_id = $params['tutor_name'];
       $tutor_name=$platform_teachers[$tutor_id];*/
     $teachers = $params['group']['course_teachers'];
     $title = $params['title'];
     $category_code = $params['category_code'];
     $department_name = $params['department_name'];
     $department_url = $params['department_url'];
     $course_language = $params['course_language'];
     $course['disk_quota'] = $params['disk_quota'] * 1024 * 1024;
     $disk_quota = $params['disk_quota'];
     $visibility = $params['visibility'];
     $subscribe = $params['subscribe'];
     $unsubscribe = $params['unsubscribe'];
     if (!stristr($department_url, 'http://')) {
         $department_url = 'http://' . $department_url;
     }
     //tutor_name='".Database::escape_string($tutor_name)."',
     $sql = "UPDATE {$course_table} SET\n                    course_language='" . Database::escape_string($course_language) . "',\n                    title='" . Database::escape_string($title) . "',\n                    category_code='" . Database::escape_string($category_code) . "',\n                    visual_code='" . Database::escape_string($visual_code) . "',\n                    department_name='" . Database::escape_string($department_name) . "',\n                    department_url='" . Database::escape_string($department_url) . "',\n                    disk_quota='" . Database::escape_string($disk_quota) . "',\n                    visibility = '" . Database::escape_string($visibility) . "',\n                    subscribe = '" . Database::escape_string($subscribe) . "',\n                    unsubscribe='" . Database::escape_string($unsubscribe) . "'\n                WHERE code='" . Database::escape_string($course_code) . "'";
     Database::query($sql);
     //Delete only teacher relations that doesn't match the selected teachers
     $cond = '';
     if (count($teachers) > 0) {
         foreach ($teachers as $key) {
             $cond .= " AND user_id<>'" . $key . "'";
         }
     }
     $sql = 'DELETE FROM ' . $course_user_table . ' WHERE c_id = "' . Database::escape_string($courseInfo['real_id']) . '" AND status="1"' . $cond;
     Database::query($sql);
     if (count($teachers) > 0) {
         foreach ($teachers as $key) {
             //We check if the teacher is already subscribed in this course
             $sql_select_teacher = 'SELECT 1 FROM ' . $course_user_table . ' WHERE user_id = "' . $key . '" AND c_id = "' . $courseInfo['real_id'] . '" ';
             $result = Database::query($sql_select_teacher);
             if (Database::num_rows($result) == 1) {
                 $sql = 'UPDATE ' . $course_user_table . ' SET status = "1" WHERE c_id = "' . $courseInfo['real_id'] . '" AND user_id = "' . $key . '"  ';
             } else {
                 $sql = "INSERT INTO " . $course_user_table . " SET\n                        c_id = '" . Database::escape_string($courseInfo['real_id']) . "',\n                        user_id = '" . $key . "',\n                        status = '1',\n                        role = '',\n                        tutor_id = '0',\n                        sort = '0',\n                        user_course_cat = '0'";
             }
             Database::query($sql);
         }
     }
     //user_id = '".$tutor_id . "',
     $sql = "INSERT IGNORE INTO " . $course_user_table . " SET\n                    course_code = '" . Database::escape_string($course_code) . "',\n                    status = '1',\n                    role = '',\n                    tutor_id='0',\n                    sort='0',\n                    user_course_cat='0'";
     Database::query($sql);
     $course_info = api_get_course_info($course_code);
     return $course_info;
 }
 /**
  * Generate the URL for profile editing
  * @return string If the URL is obtained return the drupal_user_id. Otherwise return false 
  */
 public function generateProfileEditingURL()
 {
     $userId = api_get_user_id();
     $userExtraFieldValue = new ExtraFieldValue('user');
     $drupalUserIdData = $userExtraFieldValue->get_values_by_handler_and_field_variable($userId, 'drupal_user_id');
     if ($drupalUserIdData === false) {
         return false;
     }
     $drupalUserId = $drupalUserIdData['field_value'];
     $url = "{$this->protocol}{$this->domain}/user/{$drupalUserId}/edit";
     return $url;
 }
 $subscribe = $course['subscribe'];
 $unsubscribe = isset($course['unsubscribe']) ? $course['unsubscribe'] : '';
 $course['course_code'] = $course_code;
 if (!stristr($department_url, 'http://')) {
     $department_url = 'http://' . $department_url;
 }
 $manager = Database::getManager();
 $courseObj = $manager->getRepository('ChamiloCoreBundle:Course')->find($courseId);
 if ($courseObj) {
     $url = $manager->getRepository('ChamiloCoreBundle:AccessUrl')->find(api_get_current_access_url_id());
     $courseObj->setTitle($title)->setCourseLanguage($course_language)->setCategoryCode($category_code)->setVisualCode($visual_code)->setDepartmentName($department_name)->setDepartmentUrl($department_url)->setDiskQuota(intval($disk_quota))->setVisibility($visibility)->setSubscribe(intval($subscribe))->setUnsubscribe(intval($unsubscribe))->setCurrentUrl($url);
     $manager->persist($courseObj);
     $manager->flush();
 }
 // update the extra fields
 $courseFieldValue = new ExtraFieldValue('course');
 $courseFieldValue->saveFieldValues($course);
 $addTeacherToSessionCourses = isset($course['add_teachers_to_sessions_courses']) && !empty($course['add_teachers_to_sessions_courses']) ? 1 : 0;
 $sessionCoaches = isset($course['session_coaches']) ? $course['session_coaches'] : '';
 // Updating teachers
 if ($addTeacherToSessionCourses) {
     if (!empty($sessionCoaches)) {
         foreach ($sessionCoaches as $sessionId => $teacherInfo) {
             $coachesToSubscribe = $teacherInfo['coaches_by_session'];
             SessionManager::updateCoaches($sessionId, $courseId, $coachesToSubscribe, true);
         }
     }
     CourseManager::updateTeachers($courseId, $teachers, true, true, false);
 } else {
     // Normal behaviour
     CourseManager::updateTeachers($courseId, $teachers, true, false);
 /**
  * Get the extra fields and their formatted values
  * @param int|string $itemId The item ID (It could be a session_id, course_id or user_id)
  * @return array The extra fields data
  */
 public function getDataAndFormattedValues($itemId)
 {
     $valuesData = array();
     $fields = $this->get_all();
     foreach ($fields as $field) {
         if ($field['visible'] != '1') {
             continue;
         }
         $fieldValue = new ExtraFieldValue($this->type);
         $valueData = $fieldValue->get_values_by_handler_and_field_id($itemId, $field['id'], true);
         if (!$valueData) {
             continue;
         }
         $displayedValue = get_lang('None');
         switch ($field['field_type']) {
             case ExtraField::FIELD_TYPE_CHECKBOX:
                 if ($valueData !== false && $valueData['value'] == '1') {
                     $displayedValue = get_lang('Yes');
                 } else {
                     $displayedValue = get_lang('No');
                 }
                 break;
             case ExtraField::FIELD_TYPE_DATE:
                 if ($valueData !== false && !empty($valueData['value'])) {
                     $displayedValue = api_format_date($valueData['value'], DATE_FORMAT_LONG_NO_DAY);
                 }
                 break;
             case ExtraField::FIELD_TYPE_FILE_IMAGE:
                 if ($valueData === false || empty($valueData['value'])) {
                     break;
                 }
                 if (!file_exists(api_get_path(SYS_UPLOAD_PATH) . $valueData['value'])) {
                     break;
                 }
                 $image = Display::img(api_get_path(WEB_UPLOAD_PATH) . $valueData['value'], $field['display_text'], array('width' => '300'));
                 $displayedValue = Display::url($image, api_get_path(WEB_UPLOAD_PATH) . $valueData['value'], array('target' => '_blank'));
                 break;
             case ExtraField::FIELD_TYPE_FILE:
                 if ($valueData === false || empty($valueData['value'])) {
                     break;
                 }
                 if (!file_exists(api_get_path(SYS_UPLOAD_PATH) . $valueData['value'])) {
                     break;
                 }
                 $displayedValue = Display::url(get_lang('Download'), api_get_path(WEB_UPLOAD_PATH) . $valueData['value'], array('title' => $field['display_text'], 'target' => '_blank'));
                 break;
             default:
                 $displayedValue = $valueData['value'];
                 break;
         }
         $valuesData[] = array('text' => $field['display_text'], 'value' => $displayedValue);
     }
     return $valuesData;
 }
Exemple #19
0
$entityManager = Database::getManager();
$session = $entityManager->find('ChamiloCoreBundle:Session', $sessionId);
if (!$session) {
    api_not_allowed(true);
}
$sessionCourses = $entityManager->getRepository('ChamiloCoreBundle:Session')->getCoursesOrderedByPosition($session);
$courses = [];
$entityManager = Database::getManager();
$fieldsRepo = $entityManager->getRepository('ChamiloCoreBundle:ExtraField');
$fieldTagsRepo = $entityManager->getRepository('ChamiloCoreBundle:ExtraFieldRelTag');
$userRepo = $entityManager->getRepository('ChamiloUserBundle:User');
$sequenceResourceRepo = $entityManager->getRepository('ChamiloCoreBundle:SequenceResource');
$tagField = $fieldsRepo->findOneBy(['extraFieldType' => ExtraField::COURSE_FIELD_TYPE, 'variable' => 'tags']);
$courseValues = new ExtraFieldValue('course');
$userValues = new ExtraFieldValue('user');
$sessionValues = new ExtraFieldValue('session');
foreach ($sessionCourses as $sessionCourse) {
    $courseTags = [];
    if (!is_null($tagField)) {
        $courseTags = $fieldTagsRepo->getTags($tagField, $sessionCourse->getId());
    }
    $courseCoaches = $userRepo->getCoachesForSessionCourse($session, $sessionCourse);
    $coachesData = [];
    foreach ($courseCoaches as $courseCoach) {
        $coachData = ['complete_name' => $courseCoach->getCompleteName(), 'image' => UserManager::getUserPicture($courseCoach->getId(), USER_IMAGE_SIZE_ORIGINAL), 'extra_fields' => $userValues->getAllValuesForAnItem($courseCoach->getId(), true)];
        $coachesData[] = $coachData;
    }
    $courseDescriptionTools = $entityManager->getRepository('ChamiloCourseBundle:CCourseDescription')->findBy(['cId' => $sessionCourse->getId(), 'sessionId' => 0], ['id' => 'DESC', 'descriptionType' => 'ASC']);
    $courseDescription = $courseObjectives = $courseTopics = null;
    foreach ($courseDescriptionTools as $descriptionTool) {
        switch ($descriptionTool->getDescriptionType()) {
 /**
  * Get extra user data by field variable
  * @param string    field variable
  * @return array    data
  */
 public static function get_extra_user_data_by_field_variable($field_variable)
 {
     $extra_information_by_variable = self::get_extra_field_information_by_name($field_variable);
     $field_id = intval($extra_information_by_variable['id']);
     $extraField = new ExtraFieldValue('user');
     $data = $extraField->getValuesByFieldId($field_id);
     if (!empty($data) > 0) {
         foreach ($data as $row) {
             $user_id = $row['item_id'];
             $data[$user_id] = $row;
         }
     }
     return $data;
 }
Exemple #21
0
        if (api_get_setting('login_is_email') == 'true') {
            $username = $email;
        }
        UserManager::update_user($user_id, $firstname, $lastname, $username, $password, $auth_source, $email, $status, $official_code, $phone, $picture_uri, $expiration_date, $active, null, $hr_dept_id, null, $language, null, $send_mail, $reset_password);
        if (api_get_setting('openid_authentication') == 'true' && !empty($user['openid'])) {
            $up = UserManager::update_openid($user_id, $user['openid']);
        }
        $currentUserId = api_get_user_id();
        if ($user_id != $currentUserId) {
            if ($platform_admin == 1) {
                UserManager::add_user_as_admin($user_id);
            } else {
                UserManager::remove_user_admin($user_id);
            }
        }
        $extraFieldValue = new ExtraFieldValue('user');
        $extraFieldValue->saveFieldValues($user);
        $tok = Security::get_token();
        header('Location: user_list.php?action=show_message&message=' . urlencode(get_lang('UserUpdated')) . '&sec_token=' . $tok);
        exit;
    }
}
$message = null;
if ($error_drh) {
    $err_msg = get_lang('StatusCanNotBeChangedToHumanResourcesManager');
    $message = Display::return_message($err_msg, 'error');
}
$content = null;
$bigImage = Usermanager::getUserPicture(api_get_user_id(), USER_IMAGE_SIZE_BIG);
$normalImage = Usermanager::getUserPicture(api_get_user_id(), USER_IMAGE_SIZE_ORIGINAL);
$content .= '<a class="expand-image" href="' . $bigImage . '" /><img src="' . $normalImage . '"></a>';
 /**
  * Get session info
  * @param array $sessionId The session ID
  * @return array
  */
 public function getSessionInfo($sessionId)
 {
     $entityManager = Database::getManager();
     $session = $entityManager->find('ChamiloCoreBundle:Session', $sessionId);
     if (empty($session)) {
         return [];
     }
     $item = $this->getItemByProduct($session->getId(), self::PRODUCT_TYPE_SESSION);
     if (empty($item)) {
         return [];
     }
     $sessionDates = SessionManager::parseSessionDates(['display_start_date' => $session->getDisplayStartDate(), 'display_end_date' => $session->getDisplayEndDate(), 'access_start_date' => $session->getAccessStartDate(), 'access_end_date' => $session->getAccessEndDate(), 'coach_access_start_date' => $session->getCoachAccessStartDate(), 'coach_access_end_date' => $session->getCoachAccessEndDate()]);
     $sessionInfo = ['id' => $session->getId(), 'name' => $session->getName(), 'dates' => $sessionDates, 'courses' => [], 'price' => $item['price'], 'currency' => $item['iso_code'], 'image' => null];
     $fieldValue = new ExtraFieldValue('session');
     $sessionImage = $fieldValue->get_values_by_handler_and_field_variable($session->getId(), 'image');
     if (!empty($sessionImage)) {
         $sessionInfo['image'] = api_get_path(WEB_UPLOAD_PATH) . $sessionImage['value'];
     }
     $sessionCourses = $session->getCourses();
     foreach ($sessionCourses as $sessionCourse) {
         $course = $sessionCourse->getCourse();
         $sessionCourseData = ['title' => $course->getTitle(), 'coaches' => []];
         $userCourseSubscriptions = $session->getUserCourseSubscriptionsByStatus($course, Chamilo\CoreBundle\Entity\Session::COACH);
         foreach ($userCourseSubscriptions as $userCourseSubscription) {
             $user = $userCourseSubscription->getUser();
             $sessionCourseData['coaches'][] = $user->getCompleteName();
         }
         $sessionInfo['courses'][] = $sessionCourseData;
     }
     return $sessionInfo;
 }
    /**
     * @param FormValidator $form
     * @param array $extraData
     * @param string $form_name
     * @param bool $admin_permissions
     * @param int $user_id
     * @param array $extra
     * @param int $itemId
     *
     * @return array
     */
    public function set_extra_fields_in_form($form, $extraData, $form_name, $admin_permissions = false, $user_id = null, $extra = array(), $itemId = null)
    {
        $user_id = intval($user_id);
        $type = $this->type;
        // User extra fields
        if ($type == 'user') {
            $extra = UserManager::get_extra_fields(0, 50, 5, 'ASC', true, null, true);
        }
        $jquery_ready_content = null;
        if (!empty($extra)) {
            foreach ($extra as $field_details) {
                // Getting default value id if is set
                $defaultValueId = null;
                if (isset($field_details['options']) && !empty($field_details['options'])) {
                    $valueToFind = null;
                    if (isset($field_details['field_default_value'])) {
                        $valueToFind = $field_details['field_default_value'];
                    }
                    // If a value is found we override the default value
                    if (isset($extraData['extra_' . $field_details['field_variable']])) {
                        $valueToFind = $extraData['extra_' . $field_details['field_variable']];
                    }
                    foreach ($field_details['options'] as $option) {
                        if ($option['option_value'] == $valueToFind) {
                            $defaultValueId = $option['id'];
                        }
                    }
                }
                if (!$admin_permissions) {
                    if ($field_details['field_visible'] == 0) {
                        continue;
                    }
                }
                switch ($field_details['field_type']) {
                    case ExtraField::FIELD_TYPE_TEXT:
                        $form->addElement('text', 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], array('class' => 'span4'));
                        $form->applyFilter('extra_' . $field_details['field_variable'], 'stripslashes');
                        $form->applyFilter('extra_' . $field_details['field_variable'], 'trim');
                        if (!$admin_permissions) {
                            if ($field_details['field_visible'] == 0) {
                                $form->freeze('extra_' . $field_details['field_variable']);
                            }
                        }
                        break;
                    case ExtraField::FIELD_TYPE_TEXTAREA:
                        $form->add_html_editor('extra_' . $field_details['field_variable'], $field_details['field_display_text'], false, false, array('ToolbarSet' => 'Profile', 'Width' => '100%', 'Height' => '130'));
                        $form->applyFilter('extra_' . $field_details['field_variable'], 'stripslashes');
                        $form->applyFilter('extra_' . $field_details['field_variable'], 'trim');
                        if (!$admin_permissions) {
                            if ($field_details['field_visible'] == 0) {
                                $form->freeze('extra_' . $field_details['field_variable']);
                            }
                        }
                        break;
                    case ExtraField::FIELD_TYPE_RADIO:
                        $group = array();
                        if (isset($field_details['options']) && !empty($field_details['options'])) {
                            foreach ($field_details['options'] as $option_details) {
                                $options[$option_details['option_value']] = $option_details['option_display_text'];
                                $group[] = $form->createElement('radio', 'extra_' . $field_details['field_variable'], $option_details['option_value'], $option_details['option_display_text'] . '<br />', $option_details['option_value']);
                            }
                        }
                        $form->addGroup($group, 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], '');
                        if (!$admin_permissions) {
                            if ($field_details['field_visible'] == 0) {
                                $form->freeze('extra_' . $field_details['field_variable']);
                            }
                        }
                        break;
                    case ExtraField::FIELD_TYPE_CHECKBOX:
                        $group = array();
                        if (isset($field_details['options']) && !empty($field_details['options'])) {
                            foreach ($field_details['options'] as $option_details) {
                                $options[$option_details['option_value']] = $option_details['option_display_text'];
                                $group[] = $form->createElement('checkbox', 'extra_' . $field_details['field_variable'], $option_details['option_value'], $option_details['option_display_text'] . '<br />', $option_details['option_value']);
                            }
                        } else {
                            // We assume that is a switch on/off with 1 and 0 as values
                            $group[] = $form->createElement('checkbox', 'extra_' . $field_details['field_variable'], null, 'Yes <br />', null);
                        }
                        $form->addGroup($group, 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], '');
                        if (!$admin_permissions) {
                            if ($field_details['field_visible'] == 0) {
                                $form->freeze('extra_' . $field_details['field_variable']);
                            }
                        }
                        break;
                    case ExtraField::FIELD_TYPE_SELECT:
                        $get_lang_variables = false;
                        if (in_array($field_details['field_variable'], array('mail_notify_message', 'mail_notify_invitation', 'mail_notify_group_message'))) {
                            $get_lang_variables = true;
                        }
                        // Get extra field workflow
                        $userInfo = api_get_user_info();
                        $addOptions = array();
                        $optionsExists = Database::getManager()->getRepository('ChamiloCoreBundle:ExtraFieldOptionRelFieldOption')->findOneBy(array('fieldId' => $field_details['id']));
                        if ($optionsExists) {
                            if (isset($userInfo['status']) && !empty($userInfo['status'])) {
                                $fieldWorkFlow = Database::getManager()->getRepository('ChamiloCoreBundle:ExtraFieldOptionRelFieldOption')->findBy(array('fieldId' => $field_details['id'], 'relatedFieldOptionId' => $defaultValueId, 'roleId' => $userInfo['status']));
                                foreach ($fieldWorkFlow as $item) {
                                    $addOptions[] = $item->getFieldOptionId();
                                }
                            }
                        }
                        $options = array();
                        if (empty($defaultValueId)) {
                            $options[''] = get_lang('SelectAnOption');
                        }
                        $optionList = array();
                        if (!empty($field_details['options'])) {
                            foreach ($field_details['options'] as $option_details) {
                                $optionList[$option_details['id']] = $option_details;
                                if ($get_lang_variables) {
                                    $options[$option_details['option_value']] = get_lang($option_details['option_display_text']);
                                } else {
                                    if ($optionsExists) {
                                        // Adding always the default value
                                        if ($option_details['id'] == $defaultValueId) {
                                            $options[$option_details['option_value']] = $option_details['option_display_text'];
                                        } else {
                                            if (isset($addOptions) && !empty($addOptions)) {
                                                // Parsing filters
                                                if (in_array($option_details['id'], $addOptions)) {
                                                    $options[$option_details['option_value']] = $option_details['option_display_text'];
                                                }
                                            }
                                        }
                                    } else {
                                        // Normal behaviour
                                        $options[$option_details['option_value']] = $option_details['option_display_text'];
                                    }
                                }
                            }
                            if (isset($optionList[$defaultValueId])) {
                                if (isset($optionList[$defaultValueId]['option_value']) && $optionList[$defaultValueId]['option_value'] == 'aprobada') {
                                    if (api_is_question_manager() == false) {
                                        $form->freeze();
                                    }
                                }
                            }
                            // Setting priority message
                            if (isset($optionList[$defaultValueId]) && isset($optionList[$defaultValueId]['priority'])) {
                                if (!empty($optionList[$defaultValueId]['priority'])) {
                                    $priorityId = $optionList[$defaultValueId]['priority'];
                                    $option = new ExtraFieldOption($this->type);
                                    $messageType = $option->getPriorityMessageType($priorityId);
                                    $form->addElement('label', null, Display::return_message($optionList[$defaultValueId]['priority_message'], $messageType));
                                }
                            }
                        }
                        if ($get_lang_variables) {
                            $field_details['field_display_text'] = get_lang($field_details['field_display_text']);
                        }
                        // chzn-select doesn't work for sessions??
                        $form->addElement('select', 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], $options, array('id' => 'extra_' . $field_details['field_variable']));
                        if ($optionsExists && $field_details['field_loggeable'] && !empty($defaultValueId)) {
                            $form->addElement('textarea', 'extra_' . $field_details['field_variable'] . '_comment', $field_details['field_display_text'] . ' ' . get_lang('Comment'));
                            $em = Database::getManager();
                            $extraFieldValue = new ExtraFieldValue($this->type);
                            $repo = $em->getRepository($extraFieldValue->entityName);
                            $repoLog = $em->getRepository('Gedmo\\Loggable\\Entity\\LogEntry');
                            $newEntity = $repo->findOneBy(array($this->handlerEntityId => $itemId, 'fieldId' => $field_details['id']));
                            // @todo move this in a function inside the class
                            if ($newEntity) {
                                $logs = $repoLog->getLogEntries($newEntity);
                                if (!empty($logs)) {
                                    $html = '<b>' . get_lang('LatestChanges') . '</b><br /><br />';
                                    $table = new HTML_Table(array('class' => 'data_table'));
                                    $table->setHeaderContents(0, 0, get_lang('Value'));
                                    $table->setHeaderContents(0, 1, get_lang('Comment'));
                                    $table->setHeaderContents(0, 2, get_lang('ModifyDate'));
                                    $table->setHeaderContents(0, 3, get_lang('Username'));
                                    $row = 1;
                                    foreach ($logs as $log) {
                                        $column = 0;
                                        $data = $log->getData();
                                        $fieldValue = isset($data['fieldValue']) ? $data['fieldValue'] : null;
                                        $comment = isset($data['comment']) ? $data['comment'] : null;
                                        $table->setCellContents($row, $column, $fieldValue);
                                        $column++;
                                        $table->setCellContents($row, $column, $comment);
                                        $column++;
                                        $table->setCellContents($row, $column, api_get_local_time($log->getLoggedAt()->format('Y-m-d H:i:s')));
                                        $column++;
                                        $table->setCellContents($row, $column, $log->getUsername());
                                        $row++;
                                    }
                                    $form->addElement('label', null, $html . $table->toHtml());
                                }
                            }
                        }
                        if (!$admin_permissions) {
                            if ($field_details['field_visible'] == 0) {
                                $form->freeze('extra_' . $field_details['field_variable']);
                            }
                        }
                        break;
                    case ExtraField::FIELD_TYPE_SELECT_MULTIPLE:
                        $options = array();
                        foreach ($field_details['options'] as $option_id => $option_details) {
                            $options[$option_details['option_value']] = $option_details['option_display_text'];
                        }
                        $form->addElement('select', 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], $options, array('multiple' => 'multiple'));
                        if (!$admin_permissions) {
                            if ($field_details['field_visible'] == 0) {
                                $form->freeze('extra_' . $field_details['field_variable']);
                            }
                        }
                        break;
                    case ExtraField::FIELD_TYPE_DATE:
                        $form->addElement('datepickerdate', 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], array('form_name' => $form_name));
                        $form->_elements[$form->_elementIndex['extra_' . $field_details['field_variable']]]->setLocalOption('minYear', 1900);
                        $defaults['extra_' . $field_details['field_variable']] = date('Y-m-d 12:00:00');
                        if (!isset($form->_defaultValues['extra_' . $field_details['field_variable']])) {
                            $form->setDefaults($defaults);
                        }
                        if (!$admin_permissions) {
                            if ($field_details['field_visible'] == 0) {
                                $form->freeze('extra_' . $field_details['field_variable']);
                            }
                        }
                        $form->applyFilter('theme', 'trim');
                        break;
                    case ExtraField::FIELD_TYPE_DATETIME:
                        $form->addElement('datepicker', 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], array('form_name' => $form_name));
                        $form->_elements[$form->_elementIndex['extra_' . $field_details['field_variable']]]->setLocalOption('minYear', 1900);
                        $defaults['extra_' . $field_details['field_variable']] = date('Y-m-d 12:00:00');
                        if (!isset($form->_defaultValues['extra_' . $field_details['field_variable']])) {
                            $form->setDefaults($defaults);
                        }
                        if (!$admin_permissions) {
                            if ($field_details['field_visible'] == 0) {
                                $form->freeze('extra_' . $field_details['field_variable']);
                            }
                        }
                        $form->applyFilter('theme', 'trim');
                        break;
                    case ExtraField::FIELD_TYPE_DOUBLE_SELECT:
                        $first_select_id = 'first_extra_' . $field_details['field_variable'];
                        $url = api_get_path(WEB_AJAX_PATH) . 'extra_field.ajax.php?1=1';
                        $jquery_ready_content .= '
                        $("#' . $first_select_id . '").on("change", function() {
                            var id = $(this).val();
                            if (id) {
                                $.ajax({
                                    url: "' . $url . '&a=get_second_select_options",
                                    dataType: "json",
                                    data: "type=' . $type . '&field_id=' . $field_details['id'] . '&option_value_id="+id,
                                    success: function(data) {
                                        $("#second_extra_' . $field_details['field_variable'] . '").empty();
                                        $.each(data, function(index, value) {
                                            $("#second_extra_' . $field_details['field_variable'] . '").append($("<option/>", {
                                                value: index,
                                                text: value
                                            }));
                                        });
                                    },
                                });
                            } else {
                                $("#second_extra_' . $field_details['field_variable'] . '").empty();
                            }
                        });';
                        $first_id = null;
                        $second_id = null;
                        if (!empty($extraData)) {
                            $first_id = $extraData['extra_' . $field_details['field_variable']]['extra_' . $field_details['field_variable']];
                            $second_id = $extraData['extra_' . $field_details['field_variable']]['extra_' . $field_details['field_variable'] . '_second'];
                        }
                        $options = ExtraField::extra_field_double_select_convert_array_to_ordered_array($field_details['options']);
                        $values = array('' => get_lang('Select'));
                        $second_values = array();
                        if (!empty($options)) {
                            foreach ($options as $option) {
                                foreach ($option as $sub_option) {
                                    if ($sub_option['option_value'] == '0') {
                                        $values[$sub_option['id']] = $sub_option['option_display_text'];
                                    } else {
                                        if ($first_id === $sub_option['option_value']) {
                                            $second_values[$sub_option['id']] = $sub_option['option_display_text'];
                                        }
                                    }
                                }
                            }
                        }
                        $group = array();
                        $group[] = $form->createElement('select', 'extra_' . $field_details['field_variable'], null, $values, array('id' => $first_select_id));
                        $group[] = $form->createElement('select', 'extra_' . $field_details['field_variable'] . '_second', null, $second_values, array('id' => 'second_extra_' . $field_details['field_variable']));
                        $form->addGroup($group, 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], '&nbsp;');
                        if (!$admin_permissions) {
                            if ($field_details['field_visible'] == 0) {
                                $form->freeze('extra_' . $field_details['field_variable']);
                            }
                        }
                        break;
                    case ExtraField::FIELD_TYPE_DIVIDER:
                        $form->addElement('static', $field_details['field_variable'], '<br /><strong>' . $field_details['field_display_text'] . '</strong>');
                        break;
                    case ExtraField::FIELD_TYPE_TAG:
                        $field_variable = $field_details['field_variable'];
                        $field_id = $field_details['id'];
                        if ($this->type == 'user') {
                            // The magic should be here
                            $user_tags = UserManager::get_user_tags($user_id, $field_details['id']);
                            $tag_list = '';
                            if (is_array($user_tags) && count($user_tags) > 0) {
                                foreach ($user_tags as $tag) {
                                    $tag_list .= '<option value="' . $tag['tag'] . '" class="selected">' . $tag['tag'] . '</option>';
                                }
                            }
                            $url = api_get_path(WEB_AJAX_PATH) . 'user_manager.ajax.php?';
                        } else {
                            $extraFieldValue = new ExtraFieldValue($this->type);
                            $tags = array();
                            if (!empty($itemId)) {
                                $tags = $extraFieldValue->getAllValuesByItemAndField($itemId, $field_id);
                            }
                            $tag_list = '';
                            if (is_array($tags) && count($tags) > 0) {
                                $extraFieldOption = new ExtraFieldOption($this->type);
                                foreach ($tags as $tag) {
                                    $option = $extraFieldOption->get($tag['field_value']);
                                    $tag_list .= '<option value="' . $option['id'] . '" class="selected">' . $option['option_display_text'] . '</option>';
                                }
                            }
                            $url = api_get_path(WEB_AJAX_PATH) . 'extra_field.ajax.php';
                        }
                        $form->addElement('hidden', 'extra_' . $field_details['field_variable'] . '__persist__', 1);
                        $multiSelect = '<select id="extra_' . $field_details['field_variable'] . '" name="extra_' . $field_details['field_variable'] . '">
                                        ' . $tag_list . '
                                        </select>';
                        $form->addElement('label', $field_details['field_display_text'], $multiSelect);
                        $complete_text = get_lang('StartToType');
                        //if cache is set to true the jquery will be called 1 time
                        $jquery_ready_content .= <<<EOF
                    \$("#extra_{$field_variable}").fcbkcomplete({
                        json_url: "{$url}?a=search_tags&field_id={$field_id}&type={$this->type}",
                        cache: false,
                        filter_case: true,
                        filter_hide: true,
                        complete_text:"{$complete_text}",
                        firstselected: false,
                        filter_selected: true,
                        newel: true
                    });
EOF;
                        $jquery_ready_content = null;
                        break;
                    case ExtraField::FIELD_TYPE_TIMEZONE:
                        $form->addElement('select', 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], api_get_timezones(), '');
                        if ($field_details['field_visible'] == 0) {
                            $form->freeze('extra_' . $field_details['field_variable']);
                        }
                        break;
                    case ExtraField::FIELD_TYPE_SOCIAL_PROFILE:
                        // get the social network's favicon
                        $icon_path = UserManager::get_favicon_from_url($extraData['extra_' . $field_details['field_variable']], $field_details['field_default_value']);
                        // special hack for hi5
                        $leftpad = '1.7';
                        $top = '0.4';
                        $domain = parse_url($icon_path, PHP_URL_HOST);
                        if ($domain == 'www.hi5.com' or $domain == 'hi5.com') {
                            $leftpad = '3';
                            $top = '0';
                        }
                        // print the input field
                        $form->addElement('text', 'extra_' . $field_details['field_variable'], $field_details['field_display_text'], array('size' => 60, 'style' => 'background-image: url(\'' . $icon_path . '\'); background-repeat: no-repeat; background-position: 0.4em ' . $top . 'em; padding-left: ' . $leftpad . 'em; '));
                        $form->applyFilter('extra_' . $field_details['field_variable'], 'stripslashes');
                        $form->applyFilter('extra_' . $field_details['field_variable'], 'trim');
                        if ($field_details['field_visible'] == 0) {
                            $form->freeze('extra_' . $field_details['field_variable']);
                        }
                        break;
                }
            }
        }
        $return = array();
        $return['jquery_ready_content'] = $jquery_ready_content;
        return $return;
    }
 /**
  * @param $sessionId
  * @param array $extraFieldsToInclude
  * @return array
  */
 public static function getFilteredExtraFields($sessionId, $extraFieldsToInclude = array())
 {
     $extraData = array();
     $variables = array();
     $variablePlaceHolders = array();
     foreach ($extraFieldsToInclude as $sessionExtraField) {
         $variablePlaceHolders[] = "?";
         $variables[] = Database::escape_string($sessionExtraField);
     }
     $sessionExtraField = new ExtraField('session');
     $fieldList = $sessionExtraField->get_all(array("variable IN ( " . implode(", ", $variablePlaceHolders) . " ) " => $variables));
     $fields = array();
     // Index session fields
     foreach ($fieldList as $field) {
         $fields[$field['id']] = $field['variable'];
     }
     // Get session field values
     $extra = new ExtraFieldValue('session');
     $sessionFieldValueList = $extra->get_all(array("field_id IN ( " . implode(", ", $variablePlaceHolders) . " )" => array_keys($fields)));
     foreach ($sessionFieldValueList as $sessionFieldValue) {
         // Match session field values to session
         if ($sessionFieldValue['item_id'] != $sessionId) {
             continue;
         }
         // Check if session field value is set in session field list
         if (!isset($fields[$sessionFieldValue['field_id']])) {
             continue;
         }
         $extrafieldVariable = $fields[$sessionFieldValue['field_id']];
         $extrafieldValue = $sessionFieldValue['value'];
         $extraData[] = array('variable' => $extrafieldVariable, 'value' => $extrafieldValue);
     }
     return $extraData;
 }
 /**
  * @param string $file
  * @param bool   $moveFile
  *
  * @return int
  */
 private function importCalendarStatic($file, $moveFile = true)
 {
     $data = Import::csv_to_array($file);
     if (!empty($data)) {
         $this->logger->addInfo(count($data) . " records found.");
         $eventsToCreate = array();
         $errorFound = false;
         foreach ($data as $row) {
             $sessionId = null;
             $externalSessionId = null;
             if (isset($row['external_sessionID'])) {
                 $externalSessionId = $row['external_sessionID'];
                 $sessionId = SessionManager::get_session_id_from_original_id($externalSessionId, $this->extraFieldIdNameList['session']);
             }
             $courseCode = null;
             if (isset($row['coursecode'])) {
                 $courseCode = $row['coursecode'];
             }
             $courseInfo = api_get_course_info($courseCode);
             if (empty($courseInfo)) {
                 $this->logger->addInfo("Course '{$courseCode}' does not exists");
             }
             if (empty($sessionId)) {
                 $this->logger->addInfo("external_sessionID: " . $externalSessionId . " does not exists.");
             }
             $teacherId = null;
             if (!empty($sessionId) && !empty($courseInfo)) {
                 $courseIncluded = SessionManager::relation_session_course_exist($sessionId, $courseInfo['code']);
                 if ($courseIncluded == false) {
                     $this->logger->addInfo("Course '{$courseCode}' is not included in session: {$sessionId}");
                     $errorFound = true;
                 } else {
                     $teachers = CourseManager::get_coach_list_from_course_code($courseInfo['code'], $sessionId);
                     // Getting first teacher.
                     if (!empty($teachers)) {
                         $teacher = current($teachers);
                         $teacherId = $teacher['user_id'];
                     } else {
                         $sessionInfo = api_get_session_info($sessionId);
                         $teacherId = $sessionInfo['id_coach'];
                     }
                 }
             } else {
                 $errorFound = true;
             }
             if (empty($teacherId)) {
                 $errorFound = true;
                 $this->logger->addInfo("No teacher found in course code : '{$courseCode}' and session: '{$sessionId}'");
             }
             $date = $row['date'];
             $startTime = $row['time_start'];
             $endTime = $row['time_end'];
             $title = $row['title'];
             $comment = $row['comment'];
             $color = isset($row['color']) ? $row['color'] : '';
             $startDateYear = substr($date, 0, 4);
             $startDateMonth = substr($date, 4, 2);
             $startDateDay = substr($date, 6, 8);
             $startDate = $startDateYear . '-' . $startDateMonth . '-' . $startDateDay . ' ' . $startTime . ":00";
             $endDate = $startDateYear . '-' . $startDateMonth . '-' . $startDateDay . ' ' . $endTime . ":00";
             if (!api_is_valid_date($startDate) || !api_is_valid_date($endDate)) {
                 $this->logger->addInfo("Verify your dates:  '{$startDate}' : '{$endDate}' ");
                 $errorFound = true;
             }
             // If old events do nothing.
             /*if (api_strtotime($startDate) < time()) {
                   continue;
               }*/
             if ($errorFound == false) {
                 $eventsToCreate[] = array('start' => $startDate, 'end' => $endDate, 'title' => $title, 'sender_id' => $teacherId, 'course_id' => $courseInfo['real_id'], 'session_id' => $sessionId, 'comment' => $comment, 'color' => $color, $this->extraFieldIdNameList['calendar_event'] => $row['external_calendar_itemID']);
             }
         }
         if (empty($eventsToCreate)) {
             $this->logger->addInfo("No events to add");
             return 0;
         }
         $this->logger->addInfo("Ready to insert events");
         $agenda = new Agenda();
         $extraFieldValue = new ExtraFieldValue('calendar_event');
         $extraFieldName = $this->extraFieldIdNameList['calendar_event'];
         $externalEventId = null;
         $extraField = new ExtraField('calendar_event');
         $extraFieldInfo = $extraField->get_handler_field_info_by_field_variable($extraFieldName);
         if (empty($extraFieldInfo)) {
             $this->logger->addInfo("No calendar event extra field created: {$extraFieldName}");
             return 0;
         }
         foreach ($eventsToCreate as $event) {
             $update = false;
             $item = null;
             if (!isset($event[$extraFieldName])) {
                 $this->logger->addInfo("No external_calendar_itemID found. Skipping ...");
                 continue;
             } else {
                 $externalEventId = $event[$extraFieldName];
                 if (empty($externalEventId)) {
                     $this->logger->addInfo("external_calendar_itemID was set but empty. Skipping ...");
                     continue;
                 }
                 $items = $extraFieldValue->get_item_id_from_field_variable_and_field_value($extraFieldName, $externalEventId, false, false, true);
                 $item = null;
                 foreach ($items as $tempItem) {
                     if ($tempItem['c_id'] == $event['course_id']) {
                         $item = $tempItem;
                     }
                 }
                 if (!empty($item)) {
                     $this->logger->addInfo("Event #{$externalEventId} was already added. Updating ...");
                     $update = true;
                     //continue;
                 }
             }
             $courseInfo = api_get_course_info_by_id($event['course_id']);
             $agenda->set_course($courseInfo);
             $agenda->setType('course');
             $agenda->setSessionId($event['session_id']);
             $agenda->setSenderId($event['sender_id']);
             $agenda->setIsAllowedToEdit(true);
             $eventComment = $event['comment'];
             $color = $event['color'];
             // To use the event comment you need
             // ALTER TABLE c_calendar_event ADD COLUMN comment TEXT;
             // add in configuration.php allow_agenda_event_comment = true
             if (empty($courseInfo)) {
                 $this->logger->addInfo("No course found for added: #" . $event['course_id'] . " Skipping ...");
                 continue;
             }
             if (empty($event['sender_id'])) {
                 $this->logger->addInfo("No sender found: #" . $event['sender_id'] . " Skipping ...");
                 continue;
             }
             $content = '';
             if ($update && isset($item['calendar_event_id'])) {
                 //the event already exists, just update
                 $eventId = $agenda->edit_event($item['calendar_event_id'], $event['start'], $event['end'], false, $event['title'], $content, array('everyone'), array(), null, $eventComment, $color);
                 if ($eventId !== false) {
                     $this->logger->addInfo("Event updated: #{$eventId}");
                 } else {
                     $this->logger->addInfo("Error while updating event.");
                 }
             } else {
                 // New event. Create it.
                 $eventId = $agenda->add_event($event['start'], $event['end'], false, $event['title'], $content, array('everyone'), false, null, array(), null, $eventComment, $color);
                 if (!empty($eventId)) {
                     $extraFieldValue->is_course_model = true;
                     $extraFieldValue->save(array('field_value' => $externalEventId, 'field_id' => $extraFieldInfo['id'], 'calendar_event_id' => $eventId, 'c_id' => $event['course_id']));
                     $this->logger->addInfo("Event added: #{$eventId}");
                 } else {
                     $this->logger->addInfo("Error while creating event.");
                 }
             }
         }
     }
     if ($moveFile) {
         $this->moveFile($file);
     }
 }
Exemple #26
0
    if ($changePassword && !empty($password)) {
        UserManager::updatePassword(api_get_user_id(), $password);
    }
    if (api_get_setting('profile', 'officialcode') == 'true' && isset($user_data['official_code'])) {
        $sql .= ", official_code = '" . Database::escape_string($user_data['official_code']) . "'";
    }
    $sql .= " WHERE user_id  = '" . api_get_user_id() . "'";
    Database::query($sql);
    if ($passwordWasChecked == false) {
        Display::addFlash(Display::return_message(get_lang('ProfileReg'), 'normal', false));
    } else {
        if ($validPassword) {
            Display::addFlash(Display::return_message(get_lang('ProfileReg'), 'normal', false));
        }
    }
    $extraField = new ExtraFieldValue('user');
    $extraField->saveFieldValues($user_data);
    $userInfo = api_get_user_info();
    Session::write('_user', $userInfo);
    // re-init the system to take new settings into account
    //$_SESSION['_user']['uidReset'] = true;
    //$_SESSION['noredirection'] = true;
    $url = api_get_self();
    header("Location: " . $url);
    exit;
}
// the header
$actions = null;
if (api_get_setting('social.allow_social_tool') != 'true') {
    if (api_get_setting('profile.extended_profile') == 'true') {
        $actions .= '<div class="actions">';
            if (isset($_REQUEST['activate_end_date_check']) && $_REQUEST['activate_end_date_check'] == 1) {
            	$expired_on   = $_REQUEST['expired_on'];
            	$expired_on   = $expired_on['Y'].'-'.$expired_on['F'].'-'.$expired_on['d'].' '.$expired_on['H'].':'.$expired_on['i'].':00';
            } else {
            	$expired_on   = null;
            }

            $_SESSION['oLP']->set_modified_on();
            $_SESSION['oLP']->set_publicated_on($publicated_on);
            $_SESSION['oLP']->set_expired_on($expired_on);

            if (isset($_REQUEST['remove_picture']) && $_REQUEST['remove_picture']) {
                $_SESSION['oLP']->delete_lp_image();
            }

            $extraFieldValue = new ExtraFieldValue('lp');
            $params = array(
                'lp_id' => $_SESSION['oLP']->id
            );
            $extraFieldValue->save_field_values($_REQUEST);

            if ($_FILES['lp_preview_image']['size'] > 0)
                $_SESSION['oLP']->upload_image($_FILES['lp_preview_image']);

            if (api_get_setting('search_enabled') === 'true') {
                require_once api_get_path(LIBRARY_PATH).'specific_fields_manager.lib.php';
                $specific_fields = get_specific_field_list();
                foreach ($specific_fields as $specific_field) {
                    $_SESSION['oLP']->set_terms_by_prefix($_REQUEST[$specific_field['code']], $specific_field['code']);
                    $new_values = explode(',', trim($_REQUEST[$specific_field['code']]));
                    if (!empty($new_values)) {
Exemple #28
0
 /**
  * Get the course id based on the original id and field name in the extra fields.
  * Returns 0 if course was not found
  *
  * @param string $original_course_id_value Original course id
  * @param string $original_course_id_name Original field name
  * @return int Course id
  */
 public static function get_course_id_from_original_id($original_course_id_value, $original_course_id_name)
 {
     $extraFieldValue = new ExtraFieldValue('course');
     $value = $extraFieldValue->get_item_id_from_field_variable_and_field_value($original_course_id_name, $original_course_id_value);
     if ($value) {
         return $value['item_id'];
     }
     return 0;
 }
 /**
  * function which process the creation of questions
  * @param FormValidator $form the formvalidator instance
  * @param Exercise $objExercise the Exercise instance
  */
 public function processCreation($form, $objExercise = null)
 {
     $this->updateParentId($form->getSubmitValue('parent_id'));
     $this->updateTitle($form->getSubmitValue('questionName'));
     $this->updateDescription($form->getSubmitValue('questionDescription'));
     $this->updateLevel($form->getSubmitValue('questionLevel'));
     $this->updateCategory($form->getSubmitValue('questionCategory'));
     // Save normal question if NOT media
     if ($this->type != MEDIA_QUESTION) {
         $this->save($objExercise->id);
         $field_value = new ExtraFieldValue('question');
         $params = $form->getSubmitValues();
         $params['question_id'] = $this->id;
         $field_value->save_field_values($params);
         if ($objExercise) {
             // modify the exercise
             $objExercise->addToList($this->id);
             $objExercise->update_question_positions();
         }
     }
 }
 /**
  * Get the formated data for sessions block to be displayed on Session Catalog page
  * @param array $sessions The session list
  * @return array
  */
 private function getFormatedSessionsBlock(array $sessions)
 {
     $extraFieldValue = new ExtraFieldValue('session');
     $userId = api_get_user_id();
     $sessionsBlocks = [];
     $entityManager = Database::getManager();
     $sessionRelCourseRepo = $entityManager->getRepository('ChamiloCoreBundle:SessionRelCourse');
     $extraFieldRepo = $entityManager->getRepository('ChamiloCoreBundle:ExtraField');
     $extraFieldRelTagRepo = $entityManager->getRepository('ChamiloCoreBundle:ExtraFieldRelTag');
     $tagsField = $extraFieldRepo->findOneBy(['extraFieldType' => Chamilo\CoreBundle\Entity\ExtraField::COURSE_FIELD_TYPE, 'variable' => 'tags']);
     /** @var \Chamilo\CoreBundle\Entity\Session $session */
     foreach ($sessions as $session) {
         $sessionDates = SessionManager::parseSessionDates(['display_start_date' => $session->getDisplayStartDate(), 'display_end_date' => $session->getDisplayEndDate(), 'access_start_date' => $session->getAccessStartDate(), 'access_end_date' => $session->getAccessEndDate(), 'coach_access_start_date' => $session->getCoachAccessStartDate(), 'coach_access_end_date' => $session->getCoachAccessEndDate()]);
         $imageField = $extraFieldValue->get_values_by_handler_and_field_variable($session->getId(), 'image');
         $sessionCourseTags = [];
         if (!is_null($tagsField)) {
             $sessionRelCourses = $sessionRelCourseRepo->findBy(['session' => $session]);
             foreach ($sessionRelCourses as $sessionRelCourse) {
                 $courseTags = $extraFieldRelTagRepo->getTags($tagsField, $sessionRelCourse->getCourse()->getId());
                 foreach ($courseTags as $tag) {
                     $sessionCourseTags[] = $tag->getTag();
                 }
             }
         }
         if (!empty($sessionCourseTags)) {
             $sessionCourseTags = array_unique($sessionCourseTags);
         }
         $repo = $entityManager->getRepository('ChamiloCoreBundle:SequenceResource');
         $sequences = $repo->getRequirementsAndDependenciesWithinSequences($session->getId(), SequenceResource::SESSION_TYPE);
         $hasRequirements = false;
         foreach ($sequences['sequences'] as $sequence) {
             if (count($sequence['requirements']) === 0) {
                 continue;
             }
             $hasRequirements = true;
             break;
         }
         $sessionsBlock = array('id' => $session->getId(), 'name' => $session->getName(), 'image' => isset($imageField['value']) ? $imageField['value'] : null, 'nbr_courses' => $session->getNbrCourses(), 'nbr_users' => $session->getNbrUsers(), 'coach_name' => $session->getGeneralCoach()->getCompleteName(), 'is_subscribed' => SessionManager::isUserSubscribedAsStudent($session->getId(), $userId), 'icon' => $this->getSessionIcon($session->getName()), 'date' => $sessionDates['display'], 'subscribe_button' => $this->getRegisteredInSessionButton($session->getId(), $session->getName(), $hasRequirements), 'show_description' => $session->getShowDescription(), 'tags' => $sessionCourseTags);
         $sessionsBlock = array_merge($sessionsBlock, $sequences);
         $sessionsBlocks[] = $sessionsBlock;
     }
     return $sessionsBlocks;
 }