/** * @param $visible * @param $id * @param int $start * @param string $user_id * @return string */ public static function display_all_announcements($visible, $id = -1, $start = 0,$user_id='') { $user_selected_language = api_get_interface_language(); $start = intval($start); $tbl_announcement_group = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS_GROUPS); $temp_user_groups = GroupPortalManager::get_groups_by_user(api_get_user_id(),0); $groups =array(); foreach ($temp_user_groups as $user_group) { $groups = array_merge($groups, array($user_group['id'])); $groups = array_merge($groups, GroupPortalManager::get_parent_groups($user_group['id'])); } //checks if tables exists to not break platform not updated $ann_group_db_ok =false; if( Database::num_rows(Database::query("SHOW TABLES LIKE 'announcement_rel_group'")) > 0) $ann_group_db_ok =true; $groups_string = '('.implode($groups,',').')'; $db_table = Database :: get_main_table(TABLE_MAIN_SYSTEM_ANNOUNCEMENTS); $now = api_get_utc_datetime(); $sql = "SELECT * FROM ".$db_table." WHERE ( lang = '$user_selected_language' OR lang IS NULL) AND ( '$now' >= date_start AND '$now' <= date_end) "; switch ($visible) { case self::VISIBLE_GUEST : $sql .= " AND visible_guest = 1 "; break; case self::VISIBLE_STUDENT : $sql .= " AND visible_student = 1 "; break; case self::VISIBLE_TEACHER : $sql .= " AND visible_teacher = 1 "; break; } if (count($groups) > 0 and $ann_group_db_ok ) { $sql .= " OR id IN (SELECT announcement_id FROM $tbl_announcement_group WHERE group_id in $groups_string) "; } if (api_is_multiple_url_enabled()) { $current_access_url_id = api_get_current_access_url_id(); $sql .= " AND access_url_id IN ('1', '$current_access_url_id')"; } if(!isset($_GET['start']) || $_GET['start'] == 0) { $sql .= " ORDER BY date_start DESC LIMIT ".$start.",20"; } else { $sql .= " ORDER BY date_start DESC LIMIT ".($start+1).",20"; } $announcements = Database::query($sql); $content = ''; if (Database::num_rows($announcements) > 0) { $query_string = ereg_replace('announcement=[1-9]+', '', $_SERVER['QUERY_STRING']); $query_string = ereg_replace('&$', '', $query_string); $url = api_get_self(); $content .= '<div class="system_announcements">'; $content .= '<h3>'.get_lang('SystemAnnouncements').'</h3>'; $content .= '<table align="center">'; $content .= '<tr>'; $content .= '<td>'; $content .= SystemAnnouncementManager :: display_arrow($user_id); $content .= '</td>'; $content .= '</tr>'; $content .= '</table>'; $content .= '<table align="center" border="0" width="900px">'; while ($announcement = Database::fetch_object($announcements)) { $display_date = api_convert_and_format_date($announcement->display_date, DATE_FORMAT_LONG); $content .= '<tr><td>'; $content .= '<a name="'.$announcement->id.'"></a> <div class="system_announcement"> <h2>'.$announcement->title.'</h2><div class="system_announcement_date">'.$display_date.'</div> <br /> <div class="system_announcement_content">' .$announcement->content.' </div> </div><br />'; $content .= '</tr></td>'; } $content .= '</table>'; $content .= '<table align="center">'; $content .= '<tr>'; $content .= '<td>'; $content .= SystemAnnouncementManager :: display_arrow($user_id); $content .= '</td>'; $content .= '</tr>'; $content .= '</table>'; $content .= '</div>'; } return $content; }
/** * Set header parameters */ private function set_header_parameters() { global $httpHeadXtra, $_course, $interbreadcrumb, $language_file, $noPHP_SELF, $_configuration, $this_section; $help = $this->help; $nameTools = $this->title; $navigation = return_navigation_array(); $this->menu_navigation = $navigation['menu_navigation']; $this->assign('system_charset', api_get_system_encoding()); if (isset($httpHeadXtra) && $httpHeadXtra) { foreach ($httpHeadXtra as & $thisHttpHead) { header($thisHttpHead); } } $this->assign('online_button', Display::return_icon('online.png')); $this->assign('offline_button',Display::return_icon('offline.png')); // Get language iso-code for this page - ignore errors $this->assign('document_language', api_get_language_isocode()); $course_title = isset($_course['name']) ? $_course['name'] : null; $title_list = array(); $title_list[] = api_get_setting('Institution'); $title_list[] = api_get_setting('siteName'); if (!empty($course_title)) { $title_list[] = $course_title; } if ($nameTools != '') { $title_list[] = $nameTools; } $title_string = ''; for ($i = 0; $i < count($title_list); $i++) { $title_string .= $title_list[$i]; if (isset($title_list[$i + 1])) { $item = trim($title_list[$i + 1]); if (!empty($item)) { $title_string .= ' - '; } } } $this->assign('title_string', $title_string); //Setting the theme and CSS files $this->set_css_files(); $this->set_js_files(); //$this->set_js_files_post(); $browser = api_browser_support('check_browser'); if ($browser[0] == 'Internet Explorer' && $browser[1] >= '11') { $browser_head = '<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />'; $this->assign('browser_specific_head', $browser_head); } // Implementation of prefetch. // See http://cdn.chamilo.org/main/img/online.png for details $prefetch = ''; if (!empty($_configuration['cdn_enable'])) { $prefetch .= '<meta http-equiv="x-dns-prefetch-control" content="on">'; foreach ($_configuration['cdn'] as $host => $exts) { $prefetch .= '<link rel="dns-prefetch" href="'.$host.'">'; } } $this->assign('prefetch', $prefetch); $this->assign('text_direction', api_get_text_direction()); $this->assign('section_name', 'section-'.$this_section); $favico = '<link rel="shortcut icon" href="'.api_get_path(WEB_PATH).'favicon.ico" type="image/x-icon" />'; if (isset($_configuration['multiple_access_urls']) && $_configuration['multiple_access_urls']) { $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1) { $url_info = api_get_access_url($access_url_id); $url = api_remove_trailing_slash(preg_replace('/https?:\/\//i', '', $url_info['url'])); $clean_url = replace_dangerous_char($url); $clean_url = str_replace('/', '-', $clean_url); $clean_url .= '/'; $homep = api_get_path(REL_PATH).'home/'.$clean_url; //homep for Home Path $icon_real_homep = api_get_path(SYS_PATH).'home/'.$clean_url; //we create the new dir for the new sites if (is_file($icon_real_homep.'favicon.ico')) { $favico = '<link rel="shortcut icon" href="'.$homep.'favicon.ico" type="image/x-icon" />'; } } } $this->assign('favico', $favico); $this->set_help(); //@todo move this in the template $bug_notification_link = ''; if (api_get_setting('show_link_bug_notification') == 'true' && $this->user_is_logged_in) { $bug_notification_link = '<li class="report"> <a href="http://support.chamilo.org/projects/chamilo-18/wiki/How_to_report_bugs" target="_blank"> <img src="'.api_get_path(WEB_IMG_PATH).'bug.large.png" style="vertical-align: middle;" alt="'.get_lang('ReportABug').'" title="'.get_lang( 'ReportABug' ).'"/></a> </li>'; } $this->assign('bug_notification_link', $bug_notification_link); $notification = return_notification_menu(); $this->assign('notification_menu', $notification); //Preparing values for the menu //Logout link if (isset($_configuration['hide_logout_button']) && $_configuration['hide_logout_button'] == 'true') { $this->assign('logout_link', null); } else { $this->assign('logout_link', api_get_path(WEB_PATH).'index.php?logout=logout&uid='.api_get_user_id()); } //Profile link if (api_get_setting('allow_social_tool') == 'true') { $profile_url = api_get_path(WEB_CODE_PATH).'social/home.php'; $profile_link = Display::url(get_lang('Profile'), $profile_url); } else { $profile_url = api_get_path(WEB_CODE_PATH).'auth/profile.php'; $profile_link = Display::url(get_lang('Profile'), $profile_url); } $this->assign('profile_link', $profile_link); $this->assign('profile_url', $profile_url); //Message link $message_link = null; $message_url = null; if (api_get_setting('allow_message_tool') == 'true') { $message_url = api_get_path(WEB_CODE_PATH).'messages/inbox.php'; $message_link = '<a href="'.api_get_path(WEB_CODE_PATH).'messages/inbox.php">'.get_lang('Inbox').'</a>'; } $this->assign('message_link', $message_link); $this->assign('message_url', $message_url); $institution = api_get_setting('Institution'); $portal_name = empty($institution) ? api_get_setting('siteName') : $institution; $this->assign('portal_name', $portal_name); //Menu $menu = return_menu(); $this->assign('menu', $menu); //Setting notifications $count_unread_message = 0; if (api_get_setting('allow_message_tool') == 'true') { // get count unread message and total invitations $count_unread_message = MessageManager::get_number_of_messages(true); } $total_invitations = 0; if (api_get_setting('allow_social_tool') == 'true') { $number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id( api_get_user_id() ); $group_pending_invitations = GroupPortalManager::get_groups_by_user( api_get_user_id(), GROUP_USER_PERMISSION_PENDING_INVITATION, false ); $group_pending_invitations = 0; if (!empty($group_pending_invitations)) { $group_pending_invitations = count($group_pending_invitations); } $total_invitations = intval($number_of_new_messages_of_friend) + $group_pending_invitations + intval( $count_unread_message ); } $total_invitations = (!empty($total_invitations) ? Display::badge($total_invitations) : null); $this->assign('user_notifications', $total_invitations); //Breadcrumb $breadcrumb = return_breadcrumb($interbreadcrumb, $language_file, $nameTools); $this->assign('breadcrumb', $breadcrumb); //Extra content $extra_header = null; if (!api_is_platform_admin()) { $extra_header = trim(api_get_setting('header_extra_content')); } $this->assign('header_extra_content', $extra_header); //if ($this->show_header == 1) { header('Content-Type: text/html; charset='.api_get_system_encoding()); header( 'X-Powered-By: '.$_configuration['software_name'].' '.substr($_configuration['system_version'], 0, 1) ); //} }
<td colspan="3" align="center"> <br /> <button class="save" type="button" value="" onclick="valide()" >' . get_lang( 'InviteUsersToGroup' ) . '</button> </td> </tr> </table> </form>'; $social_right_content .= $form; // Current group members $members = GroupPortalManager::get_users_by_group( $group_id, false, array(GROUP_USER_PERMISSION_PENDING_INVITATION) ); if (is_array($members) && count($members) > 0) { foreach ($members as &$member) { $image_path = UserManager::get_user_picture_path_by_id( $member['user_id'], 'web', false, true ); $picture = UserManager::get_picture_user( $member['user_id'], $image_path['file'], 80 );
/** * @param EntityManager $em * * @throws \Doctrine\DBAL\DBALException */ function fixIds(EntityManager $em) { $connection = $em->getConnection(); $sql = "SELECT * FROM c_lp_item"; $result = $connection->fetchAll($sql); foreach ($result as $item) { $courseId = $item['c_id']; $iid = isset($item['iid']) ? $item['iid'] : 0; $ref = isset($item['ref']) ? $item['ref'] : 0; $sql = null; $newId = ''; switch ($item['item_type']) { case TOOL_LINK: $sql = "SELECT * FROM c_link WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case TOOL_STUDENTPUBLICATION: $sql = "SELECT * FROM c_student_publication WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case TOOL_QUIZ: $sql = "SELECT * FROM c_quiz WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case TOOL_DOCUMENT: $sql = "SELECT * FROM c_document WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case TOOL_FORUM: $sql = "SELECT * FROM c_forum_forum WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case 'thread': $sql = "SELECT * FROM c_forum_thread WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; } if (!empty($sql) && !empty($newId) && !empty($iid)) { $sql = "UPDATE c_lp_item SET ref = {$newId} WHERE iid = {$iid}"; $connection->executeQuery($sql); } } // Set NULL if session = 0 $sql = "UPDATE c_item_property SET session_id = NULL WHERE session_id = 0"; $connection->executeQuery($sql); // Set NULL if group = 0 $sql = "UPDATE c_item_property SET to_group_id = NULL WHERE to_group_id = 0"; $connection->executeQuery($sql); // Set NULL if insert_user_id = 0 $sql = "UPDATE c_item_property SET insert_user_id = NULL WHERE insert_user_id = 0"; $connection->executeQuery($sql); // Delete session data of sessions that don't exist. $sql = "DELETE FROM c_item_property\n WHERE session_id IS NOT NULL AND session_id NOT IN (SELECT id FROM session)"; $connection->executeQuery($sql); // Delete group data of groups that don't exist. $sql = "DELETE FROM c_item_property\n WHERE to_group_id IS NOT NULL AND to_group_id NOT IN (SELECT DISTINCT id FROM c_group_info)"; $connection->executeQuery($sql); // This updates the group_id with c_group_info.iid instead of c_group_info.id $groupTableToFix = ['c_group_rel_user', 'c_group_rel_tutor', 'c_permission_group', 'c_role_group', 'c_survey_invitation', 'c_attendance_calendar_rel_group']; foreach ($groupTableToFix as $table) { $sql = "SELECT * FROM {$table}"; $result = $connection->fetchAll($sql); foreach ($result as $item) { $iid = $item['iid']; $courseId = $item['c_id']; $groupId = intval($item['group_id']); // Fix group id if (!empty($groupId)) { $sql = "SELECT * FROM c_group_info\n WHERE c_id = {$courseId} AND id = {$groupId}\n LIMIT 1"; $data = $connection->fetchAssoc($sql); if (!empty($data)) { $newGroupId = $data['iid']; $sql = "UPDATE {$table} SET group_id = {$newGroupId}\n WHERE iid = {$iid}"; $connection->executeQuery($sql); } else { // The group does not exists clean this record $sql = "DELETE FROM {$table} WHERE iid = {$iid}"; $connection->executeQuery($sql); } } } } // Fix c_item_property $sql = "SELECT * FROM c_item_property"; $result = $connection->fetchAll($sql); foreach ($result as $item) { $courseId = $item['c_id']; $sessionId = intval($item['session_id']); $groupId = intval($item['to_group_id']); $iid = $item['iid']; $ref = $item['ref']; // Fix group id if (!empty($groupId)) { $sql = "SELECT * FROM c_group_info\n WHERE c_id = {$courseId} AND id = {$groupId}"; $data = $connection->fetchAssoc($sql); if (!empty($data)) { $newGroupId = $data['iid']; $sql = "UPDATE c_item_property SET to_group_id = {$newGroupId}\n WHERE iid = {$iid}"; $connection->executeQuery($sql); } else { // The group does not exists clean this record $sql = "DELETE FROM c_item_property WHERE iid = {$iid}"; $connection->executeQuery($sql); } } $sql = ''; $newId = ''; switch ($item['tool']) { case TOOL_LINK: $sql = "SELECT * FROM c_link WHERE c_id = {$courseId} AND id = {$ref} "; break; case TOOL_STUDENTPUBLICATION: $sql = "SELECT * FROM c_student_publication WHERE c_id = {$courseId} AND id = {$ref}"; break; case TOOL_QUIZ: $sql = "SELECT * FROM c_quiz WHERE c_id = {$courseId} AND id = {$ref}"; break; case TOOL_DOCUMENT: $sql = "SELECT * FROM c_document WHERE c_id = {$courseId} AND id = {$ref}"; break; case TOOL_FORUM: $sql = "SELECT * FROM c_forum_forum WHERE c_id = {$courseId} AND id = {$ref}"; break; case 'thread': $sql = "SELECT * FROM c_forum_thread WHERE c_id = {$courseId} AND id = {$ref}"; break; } if (!empty($sql) && !empty($newId)) { $data = $connection->fetchAssoc($sql); if (isset($data['iid'])) { $newId = $data['iid']; } $sql = "UPDATE c_item_property SET ref = {$newId} WHERE iid = {$iid}"; $connection->executeQuery($sql); } } // Fix gradebook_link $sql = "SELECT * FROM gradebook_link"; $result = $connection->fetchAll($sql); foreach ($result as $item) { $courseCode = $item['course_code']; $courseInfo = api_get_course_info($courseCode); if (empty($courseInfo)) { continue; } $courseId = $courseInfo['real_id']; $ref = $item['ref_id']; $iid = $item['id']; $sql = ''; switch ($item['type']) { case LINK_LEARNPATH: $sql = "SELECT * FROM c_link WHERE c_id = {$courseId} AND id = {$ref} "; break; case LINK_STUDENTPUBLICATION: $sql = "SELECT * FROM c_student_publication WHERE c_id = {$courseId} AND id = {$ref}"; break; case LINK_EXERCISE: $sql = "SELECT * FROM c_quiz WHERE c_id = {$courseId} AND id = {$ref}"; break; case LINK_ATTENDANCE: //$sql = "SELECT * FROM c_document WHERE c_id = $courseId AND id = $ref"; break; case LINK_FORUM_THREAD: $sql = "SELECT * FROM c_forum_thread WHERE c_id = {$courseId} AND id = {$ref}"; break; } if (!empty($sql)) { $data = $connection->fetchAssoc($sql); if (isset($data) && isset($data['iid'])) { $newId = $data['iid']; $sql = "UPDATE gradebook_link SET ref_id = {$newId}\n WHERE id = {$iid}"; $connection->executeQuery($sql); } } } $sql = "SELECT * FROM groups"; $result = $connection->executeQuery($sql); $groups = $result->fetchAll(); $oldGroups = array(); if (!empty($groups)) { foreach ($groups as $group) { $sql = "INSERT INTO usergroup (name, group_type, description, picture, url, visibility, updated_at, created_at)\n VALUES ('{$group['name']}', '1', '{$group['description']}', '{$group['picture_uri']}', '{$group['url']}', '{$group['visibility']}', '{$group['updated_on']}', '{$group['created_on']}')"; $connection->executeQuery($sql); $id = $connection->lastInsertId('id'); $oldGroups[$group['id']] = $id; } } if (!empty($oldGroups)) { foreach ($oldGroups as $oldId => $newId) { $path = \GroupPortalManager::get_group_picture_path_by_id($oldId, 'system'); if (!empty($path)) { $newPath = str_replace("groups/{$oldId}/", "groups/{$newId}/", $path['dir']); $command = "mv {$path['dir']} {$newPath} "; system($command); } } $sql = "SELECT * FROM group_rel_user"; $result = $connection->executeQuery($sql); $dataList = $result->fetchAll(); if (!empty($dataList)) { foreach ($dataList as $data) { if (isset($oldGroups[$data['group_id']])) { $data['group_id'] = $oldGroups[$data['group_id']]; $sql = "INSERT INTO usergroup_rel_user (usergroup_id, user_id, relation_type)\n VALUES ('{$data['group_id']}', '{$data['user_id']}', '{$data['relation_type']}')"; $connection->executeQuery($sql); } } } $sql = "SELECT * FROM group_rel_group"; $result = $connection->executeQuery($sql); $dataList = $result->fetchAll(); if (!empty($dataList)) { foreach ($dataList as $data) { if (isset($oldGroups[$data['group_id']]) && isset($oldGroups[$data['subgroup_id']])) { $data['group_id'] = $oldGroups[$data['group_id']]; $data['subgroup_id'] = $oldGroups[$data['subgroup_id']]; $sql = "INSERT INTO usergroup_rel_usergroup (group_id, subgroup_id, relation_type)\n VALUES ('{$data['group_id']}', '{$data['subgroup_id']}', '{$data['relation_type']}')"; $connection->executeQuery($sql); } } } $sql = "SELECT * FROM announcement_rel_group"; $result = $connection->executeQuery($sql); $dataList = $result->fetchAll(); if (!empty($dataList)) { foreach ($dataList as $data) { if (isset($oldGroups[$data['group_id']])) { //Deleting relation $sql = "DELETE FROM announcement_rel_group WHERE id = {$data['id']}"; $connection->executeQuery($sql); //Add new relation $data['group_id'] = $oldGroups[$data['group_id']]; $sql = "INSERT INTO announcement_rel_group(group_id, announcement_id)\n VALUES ('{$data['group_id']}', '{$data['announcement_id']}')"; $connection->executeQuery($sql); } } } $sql = "SELECT * FROM group_rel_tag"; $result = $connection->executeQuery($sql); $dataList = $result->fetchAll(); if (!empty($dataList)) { foreach ($dataList as $data) { if (isset($oldGroups[$data['group_id']])) { $data['group_id'] = $oldGroups[$data['group_id']]; $sql = "INSERT INTO usergroup_rel_tag (tag_id, usergroup_id)\n VALUES ('{$data['tag_id']}', '{$data['group_id']}')"; $connection->executeQuery($sql); } } } } // Extra fields $extraFieldTables = [ExtraField::USER_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_USER_FIELD), ExtraField::COURSE_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_COURSE_FIELD), ExtraField::SESSION_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_SESSION_FIELD)]; foreach ($extraFieldTables as $type => $table) { //continue; $sql = "SELECT * FROM {$table} "; $result = $connection->query($sql); $fields = $result->fetchAll(); foreach ($fields as $field) { $originalId = $field['id']; $extraField = new ExtraField(); $extraField->setExtraFieldType($type)->setVariable($field['field_variable'])->setFieldType($field['field_type'])->setDisplayText($field['field_display_text'])->setDefaultValue($field['field_default_value'])->setFieldOrder($field['field_order'])->setVisible($field['field_visible'])->setChangeable($field['field_changeable'])->setFilter($field['field_filter']); $em->persist($extraField); $em->flush(); $values = array(); switch ($type) { case ExtraField::USER_FIELD_TYPE: $optionTable = Database::get_main_table(TABLE_MAIN_USER_FIELD_OPTIONS); $valueTable = Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES); $handlerId = 'user_id'; break; case ExtraField::COURSE_FIELD_TYPE: $optionTable = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_OPTIONS); $valueTable = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES); $handlerId = 'c_id'; break; case ExtraField::SESSION_FIELD_TYPE: $optionTable = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_OPTIONS); $valueTable = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES); $handlerId = 'session_id'; break; } if (!empty($optionTable)) { $sql = "SELECT * FROM {$optionTable} WHERE field_id = {$originalId} "; $result = $connection->query($sql); $options = $result->fetchAll(); foreach ($options as $option) { $extraFieldOption = new ExtraFieldOptions(); $extraFieldOption->setDisplayText($option['option_display_text'])->setField($extraField)->setOptionOrder($option['option_order'])->setValue($option['option_value']); $em->persist($extraFieldOption); $em->flush(); } $sql = "SELECT * FROM {$valueTable} WHERE field_id = {$originalId} "; $result = $connection->query($sql); $values = $result->fetchAll(); } if (!empty($values)) { foreach ($values as $value) { $extraFieldValue = new ExtraFieldValues(); $extraFieldValue->setValue($value['field_value'])->setField($extraField)->setItemId($value[$handlerId]); $em->persist($extraFieldValue); $em->flush(); } } } } }
if (GroupPortalManager::is_group_admin($group_id)) { GroupPortalManager::update_user_role( $user_moderator, $group_id, GROUP_USER_PERMISSION_READER ); $show_message = Display::return_message(get_lang('UserChangeToReader')); } } $users = GroupPortalManager::get_users_by_group( $group_id, false, array( GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_READER, GROUP_USER_PERMISSION_MODERATOR ), 0, 1000 ); $new_member_list = array(); $social_avatar_block = SocialManager::show_social_avatar_block( 'member_list', $group_id ); $social_menu_block = SocialManager::show_social_menu('member_list', $group_id); $social_right_content = '<h2>' . $group_info['name'] . '</h2>'; $social_right_content .= '<div style="width:90%">';
/** * Delete message attachment files (logically updating the row with a suffix _DELETE_id) * @param int message id * @param int message user id (receiver user id or sender user id) * @param int group id (optional) * @return void */ public static function delete_message_attachment_file($message_id, $message_uid, $group_id = 0) { $message_id = intval($message_id); $message_uid = intval($message_uid); $table_message_attach = Database::get_main_table(TABLE_MESSAGE_ATTACHMENT); $sql = "SELECT * FROM {$table_message_attach} WHERE message_id = '{$message_id}'"; $rs = Database::query($sql); while ($row = Database::fetch_array($rs)) { $path = $row['path']; $attach_id = $row['id']; $new_path = $path . '_DELETED_' . $attach_id; if (!empty($group_id)) { $path_user_info = GroupPortalManager::get_group_picture_path_by_id($group_id, 'system', true); } else { $path_user_info = UserManager::get_user_picture_path_by_id($message_uid, 'system', true); } $path_message_attach = $path_user_info['dir'] . 'message_attachments/'; if (is_file($path_message_attach . $path)) { if (rename($path_message_attach . $path, $path_message_attach . $new_path)) { $sql_upd = "UPDATE {$table_message_attach} set path='{$new_path}' WHERE id ='{$attach_id}'"; Database::query($sql_upd); } } } }
$language_list_with_keys[$language_list['folder'][$i]] = $language_list['name'][$i]; } $form->addElement('select', 'lang', get_lang('Language'), $language_list_with_keys); if (api_get_setting('wcag_anysurfer_public_pages') == 'true') { $form->addElement('textarea', 'content', get_lang('Content')); } else { $form->add_html_editor('content', get_lang('Content'), true, false, array('ToolbarSet' => 'PortalNews', 'Width' => '100%', 'Height' => '300')); } $form->addDateRangePicker('range', get_lang('StartTimeWindow'), true, array('id' => 'date_range')); $group = array(); $group[] = $form->createElement('checkbox', 'visible_teacher', null, get_lang('Teacher')); $group[] = $form->createElement('checkbox', 'visible_student', null, get_lang('Student')); $group[] = $form->createElement('checkbox', 'visible_guest', null, get_lang('Guest')); $form->addGroup($group, null, get_lang('Visible'), ''); $form->addElement('hidden', 'id'); $group_list = GroupPortalManager::get_groups_list(); $group_list[0] = get_lang('All'); $form->addElement('select', 'group', get_lang('AnnouncementForGroup'), $group_list); $values['group'] = isset($values['group']) ? $values['group'] : '0'; $form->addElement('checkbox', 'send_mail', null, get_lang('SendMail')); if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'add') { $form->addElement('checkbox', 'add_to_calendar', null, get_lang('AddToCalendar')); $text = get_lang('AddNews'); $class = 'add'; $form->addElement('hidden', 'action', 'add'); } elseif (isset($_REQUEST['action']) && $_REQUEST['action'] == 'edit') { $text = get_lang('EditNews'); $class = 'save'; $form->addElement('hidden', 'action', 'edit'); } $form->addElement('checkbox', 'send_email_test', null, get_lang('SendOnlyAnEmailToMySelfToTest'));
/** * Shows the right menu of the Social Network tool * * @param string $show highlight link possible values: * group_add, * home, * messages, * messages_inbox, * messages_compose , * messages_outbox, * invitations, * shared_profile, * friends, * groups search * @param int $group_id group id * @param int $user_id user id * @param bool $show_full_profile show profile or not (show or hide the user image/information) * @param bool $show_delete_account_button * */ public static function show_social_menu( $show = '', $group_id = 0, $user_id = 0, $show_full_profile = false, $show_delete_account_button = false ) { if (empty($user_id)) { $user_id = api_get_user_id(); } $user_info = api_get_user_info($user_id, true); $current_user_id = api_get_user_id(); $current_user_info = api_get_user_info($current_user_id, true); if ($current_user_id == $user_id) { $user_friend_relation = null; } else { $user_friend_relation = SocialManager::get_relation_between_contacts($current_user_id, $user_id); } $show_groups = array( 'groups', 'group_messages', 'messages_list', 'group_add', 'mygroups', 'group_edit', 'member_list', 'invite_friends', 'waiting_list', 'browse_groups' ); // get count unread message and total invitations $count_unread_message = MessageManager::get_number_of_messages(true); $count_unread_message = !empty($count_unread_message) ? Display::badge($count_unread_message) : null; $number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id(api_get_user_id()); $group_pending_invitations = GroupPortalManager::get_groups_by_user( api_get_user_id(), GROUP_USER_PERMISSION_PENDING_INVITATION, false ); $group_pending_invitations = count($group_pending_invitations); $total_invitations = $number_of_new_messages_of_friend + $group_pending_invitations; $total_invitations = (!empty($total_invitations) ? Display::badge($total_invitations) : ''); $html = ''; $active = null; if (!in_array($show, array('shared_profile', 'groups', 'group_edit', 'member_list', 'waiting_list', 'invite_friends'))) { $html .= '<div class="well sidebar-nav"><ul class="nav nav-list">'; $active = $show == 'home' ? 'active' : null; $html .= '<li class="home-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/home.php">'.get_lang('Home').'</a></li>'; $active = $show == 'messages' ? 'active' : null; $html .= '<li class="messages-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'messages/inbox.php?f=social">'.get_lang('Messages').$count_unread_message.'</a></li>'; //Invitations $active = $show == 'invitations' ? 'active' : null; $html .= '<li class="invitations-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/invitations.php">'.get_lang('Invitations').$total_invitations.'</a></li>'; //Shared profile and groups $active = $show == 'shared_profile' ? 'active' : null; $html .= '<li class="shared-profile-icon'.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/profile.php">'.get_lang('ViewMySharedProfile').'</a></li>'; $active = $show == 'friends' ? 'active' : null; $html .= '<li class="friends-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/friends.php">'.get_lang('Friends').'</a></li>'; $active = $show == 'browse_groups' ? 'active' : null; $html .= '<li class="browse-groups-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/groups.php">'.get_lang('SocialGroups').'</a></li>'; //Search users $active = $show == 'search' ? 'active' : null; $html .= '<li class="search-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/search.php">'.get_lang('Search').'</a></li>'; //My files $active = $show == 'myfiles' ? 'active' : null; $html .= '<li class="myfiles-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/myfiles.php">'.get_lang('MyFiles').'</span></a></li>'; $html .='</ul> </div>'; } if (in_array($show, $show_groups) && !empty($group_id)) { $html .= GroupPortalManager::show_group_column_information( $group_id, api_get_user_id(), $show ); } if ($show == 'shared_profile') { $html .= '<div class="well sidebar-nav"> <ul class="nav nav-list">'; // My own profile if ($show_full_profile && $user_id == intval(api_get_user_id())) { $html .= '<li class="home-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/home.php">'.get_lang('Home').'</a></li> <li class="messages-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'messages/inbox.php?f=social">'.get_lang('Messages').$count_unread_message.'</a></li>'; $active = $show == 'invitations' ? 'active' : null; $html .= '<li class="invitations-icon'.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/invitations.php">'.get_lang('Invitations').$total_invitations.'</a></li>'; $html .= '<li class="shared-profile-icon active"><a href="'.api_get_path(WEB_CODE_PATH).'social/profile.php">'.get_lang('ViewMySharedProfile').'</a></li> <li class="friends-icon"><a href="'.api_get_path(WEB_CODE_PATH).'social/friends.php">'.get_lang('Friends').'</a></li> <li class="browse-groups-icon"><a href="'.api_get_path(WEB_CODE_PATH).'social/groups.php">'.get_lang('SocialGroups').'</a></li>'; $active = $show == 'search' ? 'active' : null; $html .= '<li class="search-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/search.php">'.get_lang('Search').'</a></li>'; $active = $show == 'myfiles' ? 'active' : null; $html .= '<li class="myfiles-icon '.$active.'"><a href="'.api_get_path(WEB_CODE_PATH).'social/myfiles.php">'.get_lang('MyFiles').'</a></li>'; } // My friend profile. if ($user_id != api_get_user_id()) { $html .= '<li><a href="javascript:void(0);" onclick="javascript:send_message_to_user(\''.$user_id.'\');" title="'.get_lang('SendMessage').'">'; $html .= Display::return_icon('compose_message.png', get_lang('SendMessage')).' '.get_lang('SendMessage').'</a></li>'; } // Check if I already sent an invitation message $invitation_sent_list = SocialManager::get_list_invitation_sent_by_user_id(api_get_user_id()); if (isset($invitation_sent_list[$user_id]) && is_array($invitation_sent_list[$user_id]) && count($invitation_sent_list[$user_id]) > 0) { $html .= '<li><a href="'.api_get_path(WEB_CODE_PATH).'social/invitations.php">'.Display::return_icon('invitation.png', get_lang('YouAlreadySentAnInvitation')).' '.get_lang('YouAlreadySentAnInvitation').'</a></li>'; } else { if (!$show_full_profile) { $html .= '<li><a href="javascript:void(0);" onclick="javascript:send_invitation_to_user(\''.$user_id.'\');" title="'.get_lang('SendInvitation').'">'.Display :: return_icon('invitation.png', get_lang('SocialInvitationToFriends')).' '.get_lang('SendInvitation').'</a></li>'; } } // Chat //@todo check if user is online and if it's a friend to show the chat link if (api_is_global_chat_enabled()) { $user_name = $user_info['complete_name']; if ($user_friend_relation == USER_RELATION_TYPE_FRIEND) { if ($user_id != api_get_user_id()) { //Only show chat if I'm available to talk if ($current_user_info['user_is_online_in_chat'] == 1) { $options = array('onclick' => "javascript:chatWith('".$user_id."', '".Security::remove_XSS($user_name)."', '".$user_info['user_is_online_in_chat']."')"); $chat_icon = $user_info['user_is_online_in_chat'] ? Display::return_icon('online.png', get_lang('Online')) : Display::return_icon('offline.png', get_lang('Offline')); $html .= Display::tag('li', Display::url( $chat_icon.' '.get_lang('Chat'), 'javascript:void(0);', $options ) ); } } } else { if ($user_id != api_get_user_id()) { if ($current_user_info['user_is_online_in_chat'] == 1) { $message = Security::remove_XSS(sprintf(get_lang("YouHaveToAddXAsAFriendFirst"), $user_name)); $options = array('onclick' => "javascript:chatNotYetWith('".$message."')"); $chat_icon = $user_info['user_is_online_in_chat'] ? Display::return_icon('online.png', get_lang('Online')) : Display::return_icon('offline.png', get_lang('Offline')); $html .= Display::tag('li', Display::url( $chat_icon.' '.get_lang('Chat'), 'javascript:void(0);', $options ) ); } } } } $html .= '</ul></div>'; if ($show_full_profile && $user_id == intval(api_get_user_id())) { $personal_course_list = UserManager::get_personal_session_course_list($user_id); $course_list_code = array(); $i = 1; if (is_array($personal_course_list)) { foreach ($personal_course_list as $my_course) { if ($i <= 10) { $course_list_code[] = array('code' => $my_course['code']); } else { break; } $i++; } //to avoid repeted courses $course_list_code = array_unique_dimensional($course_list_code); } //-----Announcements $my_announcement_by_user_id = intval($user_id); $announcements = array(); foreach ($course_list_code as $course) { $course_info = api_get_course_info($course['code']); if (!empty($course_info)) { $content = AnnouncementManager::get_all_annoucement_by_user_course($course_info['code'], $my_announcement_by_user_id); if (!empty($content)) { $url = Display::url(Display::return_icon('announcement.png', get_lang('Announcements')).$course_info['name'].' ('.$content['count'].')', api_get_path(WEB_CODE_PATH).'announcements/announcements.php?cidReq='.$course['code']); $announcements[] = Display::tag('li', $url); } } } if (!empty($announcements)) { $html .= '<div class="social_menu_items">'; $html .= '<ul>'; foreach ($announcements as $announcement) { $html .= $announcement; } $html .= '</ul>'; $html .= '</div>'; } } } if ($show_delete_account_button) { $html .= '<div class="sidebar-nav"><ul><li>'; $url = api_get_path(WEB_CODE_PATH).'auth/unsubscribe_account.php'; $html .= Display::url(Display::return_icon('delete.png', get_lang('Unsubscribe'), array(), ICON_SIZE_TINY).get_lang('Unsubscribe'), $url); $html .= '</li></ul></div>'; } $html .= ''; return $html; }
$picture_uri = GroupPortalManager::update_group_picture($group_id, $_FILES['picture']['name'], $_FILES['picture']['tmp_name']); } $name = $group['name']; $description = $group['description']; $url = $group['url']; $status = intval($group['visibility']); $parent_group_id = intval($group['parent_group']); GroupPortalManager::update($group_id, $name, $description, $url, $status, $picture_uri); GroupPortalManager::set_parent_group($group_id, $parent_group_id); $tok = Security::get_token(); header('Location: group_list.php?action=show_message&message=' . urlencode(get_lang('GroupUpdated')) . '&sec_token=' . $tok); exit; } Display::display_header($tool_name); // Group picture $image_path = GroupPortalManager::get_group_picture_path_by_id($group_id, 'web'); $image_dir = $image_path['dir']; $image = $image_path['file']; $image_file = $image != '' ? $image_dir . $image : api_get_path(WEB_CODE_PATH) . 'img/unknown_group.jpg'; $image_size = api_getimagesize($image_file); $img_attributes = 'src="' . $image_file . '?rand=' . time() . '" ' . 'alt="' . api_get_person_name($user_data['firstname'], $user_data['lastname']) . '" ' . 'style="float:' . ($text_dir == 'rtl' ? 'left' : 'right') . '; padding:5px;" '; if ($image_size['width'] > 300) { //limit display width to 300px $img_attributes .= 'width="300" '; } // get the path,width and height from original picture $big_image = $image_dir . 'big_' . $image; $big_image_size = api_getimagesize($big_image); $big_image_width = $big_image_size['width']; $big_image_height = $big_image_size['height']; $url_big_image = $big_image . '?rnd=' . time();
$social_right_content .= '<ul class="thumbnails">'; foreach ($groups as $group) { $group['name'] = Security::remove_XSS($group['name'], STUDENT, true); $group['description'] = Security::remove_XSS($group['description'], STUDENT, true); $id = $group['id']; $url_open = '<a href="groups.php?id='.$id.'">'; $url_close = '</a>'; $name = cut($group['name'], 60, true); $count_users_group = count(GroupPortalManager::get_all_users_by_group($id)); if ($count_users_group == 1) { $count_users_group = $count_users_group.' '.get_lang('Member'); } else { $count_users_group = $count_users_group.' '.get_lang('Members'); } $picture = GroupPortalManager::get_picture_group($group['id'], $group['picture_uri'], 80); $tags = GroupPortalManager::get_group_tags($group['id']); $group['picture_uri'] = '<img src="'.$picture['file'].'" width="50" />'; $item_0 = Display::div($group['picture_uri']); $members = Display::span($count_users_group); $item_1 = Display::tag('h3', $url_open.$name.$url_close).$members; $social_right_content .= ' <li class="span8"> <div class="row-fluid"> <div class="span1"> <div class="media"> '.$item_0.' </div> </div>
/** * @param EntityManager $em * * @throws \Doctrine\DBAL\DBALException */ function fixIds(EntityManager $em) { $debug = true; $connection = $em->getConnection(); if ($debug) { error_log('fixIds'); } // Create temporary indexes to increase speed of the following operations // Adding and removing indexes will usually take much less time than // the execution without indexes of the queries in this function, particularly // for large tables $sql = "ALTER TABLE c_document ADD INDEX tmpidx_doc(c_id, id)"; $connection->executeQuery($sql); $sql = "ALTER TABLE c_student_publication ADD INDEX tmpidx_stud (c_id, id)"; $connection->executeQuery($sql); $sql = "ALTER TABLE c_quiz ADD INDEX tmpidx_quiz (c_id, id)"; $connection->executeQuery($sql); $sql = "ALTER TABLE c_item_property ADD INDEX tmpidx_ip (to_group_id)"; $connection->executeQuery($sql); $sql = "SELECT * FROM c_lp_item"; $result = $connection->fetchAll($sql); foreach ($result as $item) { $courseId = $item['c_id']; $iid = isset($item['iid']) ? intval($item['iid']) : 0; $ref = isset($item['ref']) ? intval($item['ref']) : 0; $sql = null; $newId = ''; switch ($item['item_type']) { case TOOL_LINK: $sql = "SELECT * FROM c_link WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case TOOL_STUDENTPUBLICATION: $sql = "SELECT * FROM c_student_publication WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case TOOL_QUIZ: $sql = "SELECT * FROM c_quiz WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case TOOL_DOCUMENT: $sql = "SELECT * FROM c_document WHERE c_id = {$courseId} AND id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case TOOL_FORUM: $sql = "SELECT * FROM c_forum_forum WHERE c_id = {$courseId} AND forum_id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; case 'thread': $sql = "SELECT * FROM c_forum_thread WHERE c_id = {$courseId} AND thread_id = {$ref}"; $data = $connection->fetchAssoc($sql); if ($data) { $newId = $data['iid']; } break; } if (!empty($sql) && !empty($newId) && !empty($iid)) { $sql = "UPDATE c_lp_item SET ref = {$newId} WHERE iid = {$iid}"; $connection->executeQuery($sql); } } // Set NULL if session = 0 $sql = "UPDATE c_item_property SET session_id = NULL WHERE session_id = 0"; $connection->executeQuery($sql); // Set NULL if group = 0 $sql = "UPDATE c_item_property SET to_group_id = NULL WHERE to_group_id = 0"; $connection->executeQuery($sql); // Set NULL if insert_user_id = 0 $sql = "UPDATE c_item_property SET insert_user_id = NULL WHERE insert_user_id = 0"; $connection->executeQuery($sql); // Delete session data of sessions that don't exist. $sql = "DELETE FROM c_item_property\n WHERE session_id IS NOT NULL AND session_id NOT IN (SELECT id FROM session)"; $connection->executeQuery($sql); // Delete group data of groups that don't exist. $sql = "DELETE FROM c_item_property\n WHERE to_group_id IS NOT NULL AND to_group_id NOT IN (SELECT DISTINCT id FROM c_group_info)"; $connection->executeQuery($sql); // This updates the group_id with c_group_info.iid instead of c_group_info.id if ($debug) { error_log('update iids'); } $groupTableToFix = ['c_group_rel_user', 'c_group_rel_tutor', 'c_permission_group', 'c_role_group', 'c_survey_invitation', 'c_attendance_calendar_rel_group']; foreach ($groupTableToFix as $table) { $sql = "SELECT * FROM {$table}"; $result = $connection->fetchAll($sql); foreach ($result as $item) { $iid = $item['iid']; $courseId = $item['c_id']; $groupId = intval($item['group_id']); // Fix group id if (!empty($groupId)) { $sql = "SELECT * FROM c_group_info\n WHERE c_id = {$courseId} AND id = {$groupId}\n LIMIT 1"; $data = $connection->fetchAssoc($sql); if (!empty($data)) { $newGroupId = $data['iid']; $sql = "UPDATE {$table} SET group_id = {$newGroupId}\n WHERE iid = {$iid}"; $connection->executeQuery($sql); } else { // The group does not exists clean this record $sql = "DELETE FROM {$table} WHERE iid = {$iid}"; $connection->executeQuery($sql); } } } } // Fix c_item_property if ($debug) { error_log('update c_item_property'); } $sql = "SELECT * FROM course"; $courseList = $connection->fetchAll($sql); if ($debug) { error_log('Getting course list'); } $totalCourse = count($courseList); $counter = 0; foreach ($courseList as $courseData) { $courseId = $courseData['id']; if ($debug) { error_log('Updating course: ' . $courseData['code']); } $sql = "SELECT * FROM c_item_property WHERE c_id = {$courseId}"; $result = $connection->fetchAll($sql); foreach ($result as $item) { //$courseId = $item['c_id']; $sessionId = intval($item['session_id']); $groupId = intval($item['to_group_id']); $iid = $item['iid']; $ref = $item['ref']; // Fix group id if (!empty($groupId)) { $sql = "SELECT * FROM c_group_info\n WHERE c_id = {$courseId} AND id = {$groupId}"; $data = $connection->fetchAssoc($sql); if (!empty($data)) { $newGroupId = $data['iid']; $sql = "UPDATE c_item_property SET to_group_id = {$newGroupId}\n WHERE iid = {$iid}"; $connection->executeQuery($sql); } else { // The group does not exists clean this record $sql = "DELETE FROM c_item_property WHERE iid = {$iid}"; $connection->executeQuery($sql); } } $sql = ''; $newId = ''; switch ($item['tool']) { case TOOL_LINK: $sql = "SELECT * FROM c_link WHERE c_id = {$courseId} AND id = {$ref} "; break; case TOOL_STUDENTPUBLICATION: $sql = "SELECT * FROM c_student_publication WHERE c_id = {$courseId} AND id = {$ref}"; break; case TOOL_QUIZ: $sql = "SELECT * FROM c_quiz WHERE c_id = {$courseId} AND id = {$ref}"; break; case TOOL_DOCUMENT: $sql = "SELECT * FROM c_document WHERE c_id = {$courseId} AND id = {$ref}"; break; case TOOL_FORUM: $sql = "SELECT * FROM c_forum_forum WHERE c_id = {$courseId} AND id = {$ref}"; break; case 'thread': $sql = "SELECT * FROM c_forum_thread WHERE c_id = {$courseId} AND id = {$ref}"; break; } if (!empty($sql) && !empty($newId)) { $data = $connection->fetchAssoc($sql); if (isset($data['iid'])) { $newId = $data['iid']; } $sql = "UPDATE c_item_property SET ref = {$newId} WHERE iid = {$iid}"; error_log($sql); $connection->executeQuery($sql); } if ($debug) { // Print a status in the log once in a while error_log("Process item #{$counter}/{$totalCourse}"); } $counter++; } } if ($debug) { error_log('update gradebook_link'); } // Fix gradebook_link $sql = "SELECT * FROM gradebook_link"; $result = $connection->fetchAll($sql); foreach ($result as $item) { $courseCode = $item['course_code']; $courseInfo = api_get_course_info($courseCode); if (empty($courseInfo)) { continue; } $courseId = $courseInfo['real_id']; $ref = $item['ref_id']; $iid = $item['id']; $sql = ''; switch ($item['type']) { case LINK_LEARNPATH: $sql = "SELECT * FROM c_link WHERE c_id = {$courseId} AND id = {$ref} "; break; case LINK_STUDENTPUBLICATION: $sql = "SELECT * FROM c_student_publication WHERE c_id = {$courseId} AND id = {$ref}"; break; case LINK_EXERCISE: $sql = "SELECT * FROM c_quiz WHERE c_id = {$courseId} AND id = {$ref}"; break; case LINK_ATTENDANCE: //$sql = "SELECT * FROM c_document WHERE c_id = $courseId AND id = $ref"; break; case LINK_FORUM_THREAD: $sql = "SELECT * FROM c_forum_thread WHERE c_id = {$courseId} AND thread_id = {$ref}"; break; } if (!empty($sql)) { $data = $connection->fetchAssoc($sql); if (isset($data) && isset($data['iid'])) { $newId = $data['iid']; $sql = "UPDATE gradebook_link SET ref_id = {$newId}\n WHERE id = {$iid}"; $connection->executeQuery($sql); } } } if ($debug) { error_log('update groups'); } $sql = "SELECT * FROM groups"; $result = $connection->executeQuery($sql); $groups = $result->fetchAll(); $oldGroups = array(); if (!empty($groups)) { foreach ($groups as $group) { if (empty($group['name'])) { continue; } /*$group['description'] = Database::escape_string($group['description']); $group['name'] = Database::escape_string($group['name']); $sql = "INSERT INTO usergroup (name, group_type, description, picture, url, visibility, updated_at, created_at) VALUES ('{$group['name']}', '1', '{$group['description']}', '{$group['picture_uri']}', '{$group['url']}', '{$group['visibility']}', '{$group['updated_on']}', '{$group['created_on']}')"; */ $params = ['name' => $group['name'], 'description' => $group['description'], 'group_type' => 1, 'picture' => $group['picture_uri'], 'url' => $group['url'], 'visibility' => $group['visibility'], 'updated_at' => $group['updated_on'], 'created_at' => $group['created_on']]; $connection->insert('usergroup', $params); //$connection->executeQuery($sql); $id = $connection->lastInsertId('id'); $oldGroups[$group['id']] = $id; } } if (!empty($oldGroups)) { foreach ($oldGroups as $oldId => $newId) { $path = \GroupPortalManager::get_group_picture_path_by_id($oldId, 'system'); if (!empty($path)) { $newPath = str_replace("groups/{$oldId}/", "groups/{$newId}/", $path['dir']); $command = "mv {$path['dir']} {$newPath} "; system($command); } } $sql = "SELECT * FROM group_rel_user"; $result = $connection->executeQuery($sql); $dataList = $result->fetchAll(); if (!empty($dataList)) { foreach ($dataList as $data) { if (isset($oldGroups[$data['group_id']])) { $data['group_id'] = $oldGroups[$data['group_id']]; $sql = "INSERT INTO usergroup_rel_user (usergroup_id, user_id, relation_type)\n VALUES ('{$data['group_id']}', '{$data['user_id']}', '{$data['relation_type']}')"; $connection->executeQuery($sql); } } } $sql = "SELECT * FROM group_rel_group"; $result = $connection->executeQuery($sql); $dataList = $result->fetchAll(); if (!empty($dataList)) { foreach ($dataList as $data) { if (isset($oldGroups[$data['group_id']]) && isset($oldGroups[$data['subgroup_id']])) { $data['group_id'] = $oldGroups[$data['group_id']]; $data['subgroup_id'] = $oldGroups[$data['subgroup_id']]; $sql = "INSERT INTO usergroup_rel_usergroup (group_id, subgroup_id, relation_type)\n VALUES ('{$data['group_id']}', '{$data['subgroup_id']}', '{$data['relation_type']}')"; $connection->executeQuery($sql); } } } $sql = "SELECT * FROM announcement_rel_group"; $result = $connection->executeQuery($sql); $dataList = $result->fetchAll(); if (!empty($dataList)) { foreach ($dataList as $data) { if (isset($oldGroups[$data['group_id']])) { // Deleting relation $sql = "DELETE FROM announcement_rel_group WHERE group_id = {$data['group_id']}"; $connection->executeQuery($sql); // Add new relation $data['group_id'] = $oldGroups[$data['group_id']]; $sql = "INSERT INTO announcement_rel_group(group_id, announcement_id)\n VALUES ('{$data['group_id']}', '{$data['announcement_id']}')"; $connection->executeQuery($sql); } } } $sql = "SELECT * FROM group_rel_tag"; $result = $connection->executeQuery($sql); $dataList = $result->fetchAll(); if (!empty($dataList)) { foreach ($dataList as $data) { if (isset($oldGroups[$data['group_id']])) { $data['group_id'] = $oldGroups[$data['group_id']]; $sql = "INSERT INTO usergroup_rel_tag (tag_id, usergroup_id)\n VALUES ('{$data['tag_id']}', '{$data['group_id']}')"; $connection->executeQuery($sql); } } } } if ($debug) { error_log('update extra fields'); } // Extra fields $extraFieldTables = [ExtraField::USER_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_USER_FIELD), ExtraField::COURSE_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_COURSE_FIELD), ExtraField::SESSION_FIELD_TYPE => Database::get_main_table(TABLE_MAIN_SESSION_FIELD)]; foreach ($extraFieldTables as $type => $table) { //continue; $sql = "SELECT * FROM {$table} "; if ($debug) { error_log($sql); } $result = $connection->query($sql); $fields = $result->fetchAll(); foreach ($fields as $field) { if ($debug) { error_log("Loading field: " . $field['field_variable']); } $originalId = $field['id']; $extraField = new ExtraField(); $extraField->setExtraFieldType($type)->setVariable($field['field_variable'])->setFieldType($field['field_type'])->setDisplayText($field['field_display_text'])->setDefaultValue($field['field_default_value'])->setFieldOrder($field['field_order'])->setVisible($field['field_visible'])->setChangeable($field['field_changeable'])->setFilter($field['field_filter']); $em->persist($extraField); $em->flush(); $values = array(); $handlerId = null; switch ($type) { case ExtraField::USER_FIELD_TYPE: $optionTable = Database::get_main_table(TABLE_MAIN_USER_FIELD_OPTIONS); $valueTable = Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES); $handlerId = 'user_id'; break; case ExtraField::COURSE_FIELD_TYPE: $optionTable = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_OPTIONS); $valueTable = Database::get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES); $handlerId = 'c_id'; break; case ExtraField::SESSION_FIELD_TYPE: $optionTable = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_OPTIONS); $valueTable = Database::get_main_table(TABLE_MAIN_SESSION_FIELD_VALUES); $handlerId = 'session_id'; break; } if (!empty($optionTable)) { $sql = "SELECT * FROM {$optionTable} WHERE field_id = {$originalId} "; $result = $connection->query($sql); $options = $result->fetchAll(); foreach ($options as $option) { $extraFieldOption = new ExtraFieldOptions(); $extraFieldOption->setDisplayText($option['option_display_text'])->setField($extraField)->setOptionOrder($option['option_order'])->setValue($option['option_value']); $em->persist($extraFieldOption); $em->flush(); } $sql = "SELECT * FROM {$valueTable} WHERE field_id = {$originalId} "; $result = $connection->query($sql); $values = $result->fetchAll(); if ($debug) { error_log("Fetch all values for field"); } } if (!empty($values)) { if ($debug) { error_log("Saving field value in new table"); } $k = 0; foreach ($values as $value) { if (isset($value[$handlerId])) { /* $extraFieldValue = new ExtraFieldValues(); $extraFieldValue ->setValue($value['field_value']) ->setField($extraField) ->setItemId($value[$handlerId]); $em->persist($extraFieldValue); $em->flush(); */ // Insert without the use of the entity as it reduces // speed to 2 records per second (much too slow) $params = ['field_id' => $extraField->getId(), 'value' => $value['field_value'], 'item_id' => $value[$handlerId]]; $connection->insert('extra_field_values', $params); if ($debug && $k % 10000 == 0) { error_log("Saving field {$k}"); } $k++; } } } } } if ($debug) { error_log('Remove index'); } // Drop temporary indexes added to increase speed of this function's queries $sql = "ALTER TABLE c_document DROP INDEX tmpidx_doc"; $connection->executeQuery($sql); $sql = "ALTER TABLE c_student_publication DROP INDEX tmpidx_stud"; $connection->executeQuery($sql); $sql = "ALTER TABLE c_quiz DROP INDEX tmpidx_quiz"; $connection->executeQuery($sql); $sql = "ALTER TABLE c_item_property DROP INDEX tmpidx_ip"; $connection->executeQuery($sql); if ($debug) { error_log('Finish fixId function'); } }
$users_group = GroupPortalManager::get_all_users_by_group($row_users['group_id']); if (!in_array($current_uid,array_keys($users_group))) { $not_allowed_to_edit = true; } } else { if ($current_uid != $message_uid) { $not_allowed_to_edit = true; } } if ($not_allowed_to_edit) { api_not_allowed(); exit; } // set the path directory file if (!empty($row_users['group_id'])) { $path_user_info = GroupPortalManager::get_group_picture_path_by_id($row_users['group_id'], 'system', true); } else { $path_user_info = UserManager::get_user_picture_path_by_id($message_uid, 'system', true); } $full_file_name = $path_user_info['dir'].'message_attachments/'.$file_url; if (Security::check_abs_path($full_file_name, $path_user_info['dir'].'message_attachments/')) { // launch event event_download($file_url); DocumentManager::file_send_for_download($full_file_name,TRUE, $title); } exit;
$show_message = get_lang('UserDeleted'); } } if (isset($_GET['action']) && $_GET['action']=='set_moderator') { // we add a user only if is a open group $user_moderator= intval($_GET['u']); //if i'm the admin if (GroupPortalManager::is_group_admin($group_id)) { GroupPortalManager::update_user_role($user_moderator, $group_id, GROUP_USER_PERMISSION_MODERATOR); $show_message = get_lang('UserChangeToModerator'); } } $users = GroupPortalManager::get_users_by_group($group_id, true, array(GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER), 0, 1000); $new_member_list = array(); $social_avatar_block = SocialManager::show_social_avatar_block('waiting_list', $group_id); $social_menu_block = SocialManager::show_social_menu('waiting_list', $group_id); if (!empty($show_message)){ $social_right_content .= Display :: return_message($show_message); } // Display form foreach($users as $user) { switch ($user['relation_type']) { case GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER: $user['link'] = '<a href="group_waiting_list.php?id='.$group_id.'&u='.$user['user_id'].'&action=accept">'.Display::return_icon('invitation_friend.png', get_lang('AddNormalUser')).'</a>'; $user['link'] .= '<a href="group_waiting_list.php?id='.$group_id.'&u='.$user['user_id'].'&action=set_moderator">'.Display::return_icon('social_moderator_add.png', get_lang('AddModerator')).'</a>'; $user['link'] .= '<a href="group_waiting_list.php?id='.$group_id.'&u='.$user['user_id'].'&action=deny">'.Display::return_icon('user_delete.png', get_lang('DenyEntry')).'</a>';
<div> '. $title.' : '.$content.' </div> <div> '. get_lang('DateSend').' : '.$date.' </div> </div> </div>'; } } if (count($pending_invitations) > 0) { $social_right_content .= '<div class="row"><div class="span9">'.Display::page_subheader(get_lang('GroupsWaitingApproval')).'</div></div>'; $new_invitation = array(); foreach ($pending_invitations as $invitation) { $picture = GroupPortalManager::get_picture_group($invitation['id'], $invitation['picture_uri'],80); $img = '<img class="social-groups-image" src="'.$picture['file'].'" />'; $invitation['picture_uri'] = '<a href="groups.php?id='.$invitation['id'].'">'.$img.'</a>'; $invitation['name'] = '<div class="title-group"><a href="groups.php?id='.$invitation['id'].'">'.cut($invitation['name'],120,true).'</a></div>'; $invitation['join'] = '<a class="btn btn-success" href="invitations.php?accept='.$invitation['id'].'">'.get_lang('AcceptInvitation').'</a>'; $invitation['deny'] = '<a class="btn btn-danger" href="invitations.php?deny='.$invitation['id'].'">'.get_lang('DenyInvitation').'</a>'; $invitation['description'] = cut($invitation['description'],220,true); $new_invitation[]=$invitation; $social_right_content .= '<div class="row invitation-clear"> <div class="span2"><div class="thumbnail">'.$invitation['picture_uri'].'</div></div> <div class="span7">' .$invitation['name'].'<div class="description-group">'.$invitation['description'].'</div> <div class="buttons">'.$invitation['join'].' '.$invitation['deny'].'</div> </div> </div>
Display::display_normal_message($message); break; } Security::clear_token(); } } if (isset($_POST['action'])) { $check = Security::check_token('get'); if ($check) { switch ($_POST['action']) { case 'delete': if (api_is_platform_admin()) { $number_of_selected_groups = count($_POST['id']); $number_of_deleted_groups = 0; foreach ($_POST['id'] as $index => $group_id) { if (GroupPortalManager::delete($group_id)) { $number_of_deleted_groups++; } } } if ($number_of_selected_groups == $number_of_deleted_groups) { Display::display_confirmation_message(get_lang('SelectedGroupsDeleted')); } else { Display::display_error_message(get_lang('SomeGroupsNotDeleted')); } break; } Security::clear_token(); } } // Create a search-box
function manage_form($default, $select_from_user_list = null, $sent_to = null) { $group_id = isset($_REQUEST['group_id']) ? intval($_REQUEST['group_id']) : null; $message_id = isset($_GET['message_id']) ? intval($_GET['message_id']) : null; $param_f = isset($_GET['f']) && $_GET['f'] == 'social' ? 'social' : null; $form = new FormValidator('compose_message', null, api_get_self().'?f='.$param_f, null, array('enctype'=>'multipart/form-data')); if (empty($group_id)) { if (isset($select_from_user_list)) { $form->add_textfield( 'id_text_name', get_lang('SendMessageTo'), true, array( 'class' => 'span4', 'id'=>'id_text_name', 'onkeyup'=>'send_request_and_search()', 'autocomplete'=>'off' ) ); $form->addRule('id_text_name', get_lang('ThisFieldIsRequired'), 'required'); $form->addElement('html','<div id="id_div_search" style="padding:0px" class="message-select-box" > </div>'); $form->addElement('hidden','user_list', 0, array('id'=>'user_list')); } else { if (!empty($sent_to)) { $form->addElement('html',$sent_to); } if (empty($default['users'])) { //fb select $form->addElement('select', 'users', get_lang('SendMessageTo'), array(), array('id' => 'users')); } else { $form->addElement('hidden','hidden_user',$default['users'][0],array('id'=>'hidden_user')); } } } else { $group_info = GroupPortalManager::get_group_data($group_id); $form->addElement('label', get_lang('ToGroup'), api_xml_http_response_encode($group_info['name'])); $form->addElement('hidden','group_id',$group_id); $form->addElement('hidden','parent_id',$message_id); } $form->add_textfield('title', get_lang('Subject'), true, array('class' => 'span4')); $form->add_html_editor('content', get_lang('Message'), false, false, array('ToolbarSet' => 'Messages', 'Width' => '95%', 'Height' => '250')); if (isset($_GET['re_id'])) { $message_reply_info = MessageManager::get_message_by_id($_GET['re_id']); $default['title'] = get_lang('MailSubjectReplyShort')." ".$message_reply_info['title']; $form->addElement('hidden','re_id', intval($_GET['re_id'])); $form->addElement('hidden','save_form','save_form'); //adding reply mail $user_reply_info = UserManager::get_user_info_by_id($message_reply_info['user_sender_id']); $default['content'] = '<p><br/></p>'.sprintf(get_lang('XWroteY'), api_get_person_name($user_reply_info['firstname'], $user_reply_info['lastname']), Security::filter_terms($message_reply_info['content'])); } if (empty($group_id)) { $form->addElement('advanced_settings', get_lang('FilesAttachment').'<span id="filepaths"> <div id="filepath_1"> <input type="file" name="attach_1"/><br /> '.get_lang('Description').' <input type="text" name="legend[]" /><br /><br /> </div> </span>'); $form->addElement('advanced_settings','<span id="link-more-attach"><a href="javascript://" onclick="return add_image_form()">'.get_lang('AddOneMoreFile').'</a></span> ('.sprintf(get_lang('MaximunFileSizeX'),format_file_size(api_get_setting('message_max_upload_filesize'))).')'); } $form->addElement('style_submit_button','compose',api_xml_http_response_encode(get_lang('SendMessage')),'class="save"'); $form->setRequiredNote('<span class="form_required">*</span> <small>'.get_lang('ThisFieldIsRequired').'</small>'); if (!empty($group_id) && !empty($message_id)) { $message_info = MessageManager::get_message_by_id($message_id); $default['title'] = get_lang('MailSubjectReplyShort')." ".$message_info['title']; } $form->setDefaults($default); $html = ''; if ($form->validate()) { $check = Security::check_token('post'); if ($check) { $user_list = $default['users']; $file_comments = $_POST['legend']; $title = $default['title']; $content = $default['content']; $group_id = isset($default['group_id']) ? $default['group_id'] : null; $parent_id = isset($default['parent_id']) ? $default['parent_id'] : null; if (is_array($user_list) && count($user_list)> 0) { //all is well, send the message foreach ($user_list as $user) { $res = MessageManager::send_message( $user, $title, $content, $_FILES, $file_comments, $group_id, $parent_id ); if ($res) { if (is_string($res)) { $html .= Display::return_message($res, 'error'); } else { $html .= MessageManager::display_success_message($user); } } } } else { Display::display_error_message('ErrorSendingMessage'); } } Security::clear_token(); } else { $token = Security::get_token(); $form->addElement('hidden','sec_token'); $form->setConstants(array('sec_token' => $token)); $html .= $form->return_form(); } return $html; }
$sql = "SELECT * FROM {$dbNameForm}.groups"; $result = $mainConnection->executeQuery($sql); $groups = $result->fetchAll(); $oldGroups = array(); if (!empty($groups)) { foreach ($groups as $group) { $sql = "INSERT INTO {$dbNameForm}.usergroup (name, group_type, description, picture, url, visibility, updated_on, created_on)\n VALUES ('{$group['name']}', '1', '{$group['description']}', '{$group['picture_uri']}', '{$group['url']}', '{$group['visibility']}', '{$group['updated_on']}', '{$group['created_on']}')"; $mainConnection->executeQuery($sql); $id = $mainConnection->lastInsertId('id'); $oldGroups[$group['id']] = $id; } } if (!empty($oldGroups)) { $output->writeln('Moving group files'); foreach ($oldGroups as $oldId => $newId) { $path = GroupPortalManager::get_group_picture_path_by_id($oldId, 'system'); if (!empty($path)) { $newPath = str_replace("groups/{$oldId}/", "groups/{$newId}/", $path['dir']); $command = "mv {$path['dir']} {$newPath} "; system($command); $output->writeln("Moving files: {$command}"); } } $sql = "SELECT * FROM {$dbNameForm}.group_rel_user"; $result = $mainConnection->executeQuery($sql); $dataList = $result->fetchAll(); if (!empty($dataList)) { foreach ($dataList as $data) { if (isset($oldGroups[$data['group_id']])) { $data['group_id'] = $oldGroups[$data['group_id']]; $sql = "INSERT INTO {$dbNameForm}.usergroup_rel_user (usergroup_id, user_id, relation_type)\n VALUES ('{$data['group_id']}', '{$data['user_id']}', '{$data['relation_type']}')";
/** * Shows the left column of the group page * @param int group id * @param int user id * */ public static function show_group_column_information($group_id, $user_id, $show = '') { global $relation_group_title, $my_group_role; $html = ''; $group_info = GroupPortalManager::get_group_data($group_id); //$picture = GroupPortalManager::get_picture_group($group_id, $group_info['picture_uri'],160,GROUP_IMAGE_SIZE_MEDIUM); //$big_image = GroupPortalManager::get_picture_group($group_id, $group_info['picture_uri'],'',GROUP_IMAGE_SIZE_BIG); //$tags = GroupPortalManager::get_group_tags($group_id, true); //$groups_by_user = GroupPortalManager::get_groups_by_user($user_id, 0); //my relation with the group is set here $my_group_role = self::get_user_group_role($user_id, $group_id); //@todo this must be move to default.css for dev use only $html .= '<style> #group_members { width:270px; height:300px; overflow-x:none; overflow-y: auto;} .group_member_item { width:100px; height:130px; float:left; margin:5px 5px 15px 5px; } .group_member_picture { display:block; margin:0; overflow:hidden; }; </style>'; //Loading group permission $links = ''; switch ($my_group_role) { case GROUP_USER_PERMISSION_READER: // I'm just a reader $relation_group_title = get_lang('IAmAReader'); $links .= '<li><a href="group_invitation.php?id=' . $group_id . '">' . Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')) . '<span class="' . ($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('InviteFriends') . '</span></a></li>'; $links .= '<li><a href="groups.php?id=' . $group_id . '&action=leave&u=' . api_get_user_id() . '">' . Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')) . '<span class="social-menu-text4" >' . get_lang('LeaveGroup') . '</span></a></li>'; break; case GROUP_USER_PERMISSION_ADMIN: $relation_group_title = get_lang('IAmAnAdmin'); $links .= '<li><a href="group_edit.php?id=' . $group_id . '">' . Display::return_icon('group_edit.png', get_lang('EditGroup'), array('hspace' => '6')) . '<span class="' . ($show == 'group_edit' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('EditGroup') . '</span></a></li>'; $links .= '<li><a href="group_waiting_list.php?id=' . $group_id . '">' . Display::return_icon('waiting_list.png', get_lang('WaitingList'), array('hspace' => '6')) . '<span class="' . ($show == 'waiting_list' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('WaitingList') . '</span></a></li>'; $links .= '<li><a href="group_invitation.php?id=' . $group_id . '">' . Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')) . '<span class="' . ($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('InviteFriends') . '</span></a></li>'; $links .= '<li><a href="groups.php?id=' . $group_id . '&action=leave&u=' . api_get_user_id() . '">' . Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')) . '<span class="social-menu-text4" >' . get_lang('LeaveGroup') . '</span></a></li>'; break; case GROUP_USER_PERMISSION_PENDING_INVITATION: // $links .= '<li><a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.Display::return_icon('addd.gif', get_lang('YouHaveBeenInvitedJoinNow'), array('hspace'=>'6')).'<span class="social-menu-text4" >'.get_lang('YouHaveBeenInvitedJoinNow').'</span></a></li>'; break; case GROUP_USER_PERMISSION_PENDING_INVITATION_SENT_BY_USER: $relation_group_title = get_lang('WaitingForAdminResponse'); break; case GROUP_USER_PERMISSION_MODERATOR: $relation_group_title = get_lang('IAmAModerator'); //$links .= '<li><a href="'.api_get_path(WEB_CODE_PATH).'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend='.api_get_user_id().'&group_id='.$group_id.'&action=add_message_group" class="thickbox" title="'.get_lang('ComposeMessage').'">'.Display::return_icon('compose_message.png', get_lang('NewTopic'), array('hspace'=>'6')).'<span class="social-menu-text4" >'.get_lang('NewTopic').'</span></a></li>'; //$links .= '<li><a href="groups.php?id='.$group_id.'">'. Display::return_icon('message_list.png', get_lang('MessageList'), array('hspace'=>'6')).'<span class="'.($show=='messages_list'?'social-menu-text-active':'social-menu-text4').'" >'.get_lang('MessageList').'</span></a></li>'; //$links .= '<li><a href="group_members.php?id='.$group_id.'">'. Display::return_icon('member_list.png', get_lang('MemberList'), array('hspace'=>'6')).'<span class="'.($show=='member_list'?'social-menu-text-active':'social-menu-text4').'" >'.get_lang('MemberList').'</span></a></li>'; if ($group_info['visibility'] == GROUP_PERMISSION_CLOSED) { $links .= '<li><a href="group_waiting_list.php?id=' . $group_id . '">' . Display::return_icon('waiting_list.png', get_lang('WaitingList'), array('hspace' => '6')) . '<span class="' . ($show == 'waiting_list' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('WaitingList') . '</span></a></li>'; } $links .= '<li><a href="group_invitation.php?id=' . $group_id . '">' . Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')) . '<span class="' . ($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('InviteFriends') . '</span></a></li>'; $links .= '<li><a href="groups.php?id=' . $group_id . '&action=leave&u=' . api_get_user_id() . '">' . Display::return_icon('group_leave.png', get_lang('LeaveGroup'), array('hspace' => '6')) . '<span class="social-menu-text4" >' . get_lang('LeaveGroup') . '</span></a></li>'; break; case GROUP_USER_PERMISSION_HRM: $relation_group_title = get_lang('IAmAHRM'); $links .= '<li><a href="' . api_get_path(WEB_CODE_PATH) . 'social/message_for_group_form.inc.php?view_panel=1&height=400&width=610&&user_friend=' . api_get_user_id() . '&group_id=' . $group_id . '&action=add_message_group" class="ajax" title="' . get_lang('ComposeMessage') . '">' . Display::return_icon('compose_message.png', get_lang('NewTopic'), array('hspace' => '6')) . '<span class="social-menu-text4" >' . get_lang('NewTopic') . '</span></a></li>'; $links .= '<li><a href="groups.php?id=' . $group_id . '">' . Display::return_icon('message_list.png', get_lang('MessageList'), array('hspace' => '6')) . '<span class="' . ($show == 'messages_list' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('MessageList') . '</span></a></li>'; $links .= '<li><a href="group_invitation.php?id=' . $group_id . '">' . Display::return_icon('invitation_friend.png', get_lang('InviteFriends'), array('hspace' => '6')) . '<span class="' . ($show == 'invite_friends' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('InviteFriends') . '</span></a></li>'; $links .= '<li><a href="group_members.php?id=' . $group_id . '">' . Display::return_icon('member_list.png', get_lang('MemberList'), array('hspace' => '6')) . '<span class="' . ($show == 'member_list' ? 'social-menu-text-active' : 'social-menu-text4') . '" >' . get_lang('MemberList') . '</span></a></li>'; $links .= '<li><a href="groups.php?id=' . $group_id . '&action=leave&u=' . api_get_user_id() . '">' . Display::return_icon('delete_data.gif', get_lang('LeaveGroup'), array('hspace' => '6')) . '<span class="social-menu-text4" >' . get_lang('LeaveGroup') . '</span></a></li>'; break; default: //$links .= '<li><a href="groups.php?id='.$group_id.'&action=join&u='.api_get_user_id().'">'.Display::return_icon('addd.gif', get_lang('JoinGroup'), array('hspace'=>'6')).'<span class="social-menu-text4" >'.get_lang('JoinGroup').'</a></span></li>'; break; } if (!empty($links)) { $html .= '<div class="well sidebar-nav"><ul class="nav nav-list">'; if (!empty($group_info['description'])) { $html .= Display::tag('li', Security::remove_XSS($group_info['description'], STUDENT, true), array('class' => 'group_description')); } $html .= $links; $html .= '</ul></div>'; } return $html; }
function return_profile_block() { global $_configuration; $user_id = api_get_user_id(); if (empty($user_id)) { return; } $profile_content = '<ul class="nav nav-list">'; // @todo Add a platform setting to add the user image. if (api_get_setting('allow_message_tool') == 'true') { require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php'; // New messages. $number_of_new_messages = MessageManager::get_new_messages(); // New contact invitations. $number_of_new_messages_of_friend = SocialManager::get_message_number_invitation_by_user_id(api_get_user_id()); // New group invitations sent by a moderator. $group_pending_invitations = GroupPortalManager::get_groups_by_user(api_get_user_id(), GROUP_USER_PERMISSION_PENDING_INVITATION, false); $group_pending_invitations = count($group_pending_invitations); $total_invitations = $number_of_new_messages_of_friend + $group_pending_invitations; $cant_msg = Display::badge($number_of_new_messages); $link = ''; if (api_get_setting('allow_social_tool') == 'true') { $link = '?f=social'; } $profile_content .= '<li class="inbox-social"><a href="'.api_get_path(WEB_PATH).'main/messages/inbox.php'.$link.'">'.get_lang('Inbox').$cant_msg.' </a></li>'; $profile_content .= '<li class="new-message-social"><a href="'.api_get_path(WEB_PATH).'main/messages/new_message.php'.$link.'">'.get_lang('Compose').' </a></li>'; if (api_get_setting('allow_social_tool') == 'true') { $total_invitations = Display::badge($total_invitations); $profile_content .= '<li class="invitations-social"><a href="'.api_get_path(WEB_PATH).'main/social/invitations.php">'.get_lang('PendingInvitations').$total_invitations.'</a></li>'; } if (isset($_configuration['allow_my_files_link_in_homepage']) && $_configuration['allow_my_files_link_in_homepage']) { $profile_content .= '<li class="myfiles-social"><a href="'.api_get_path(WEB_PATH).'main/social/myfiles.php">'.get_lang('MyFiles').'</a></li>'; } } $editProfileUrl = api_get_path(WEB_CODE_PATH) . 'auth/profile.php'; if (api_get_setting('sso_authentication') === 'true') { $subSSOClass = api_get_setting('sso_authentication_subclass'); $objSSO = null; if (!empty($subSSOClass)) { require_once api_get_path(SYS_CODE_PATH) . 'auth/sso/sso.' . $subSSOClass . '.class.php'; $subSSOClass = 'sso' . $subSSOClass; $objSSO = new $subSSOClass(); } else { $objSSO = new sso(); } $editProfileUrl = $objSSO->generateProfileEditingURL(); } $profile_content .= '<li class="profile-social"><a href="' . $editProfileUrl . '">'.get_lang('EditProfile').'</a></li>'; $profile_content .= '</ul>'; $html = self::show_right_block(get_lang('Profile'), $profile_content, 'profile_block'); return $html; }
$group_id = intval($_GET['group_id']); $message_id = isset($_GET['message_id']) ? intval($_GET['message_id']) : null; $actions = array( 'add_message_group', 'edit_message_group', 'reply_message_group' ); $allowed_action = (isset($_GET['action']) && in_array($_GET['action'], $actions)) ? Security::remove_XSS($_GET['action']) : ''; $to_group = ''; $subject = ''; $message = ''; if (!empty($group_id) && $allowed_action) { $group_info = GroupPortalManager::get_group_data($group_id); $is_member = GroupPortalManager::is_group_member($group_id); if ($group_info['visibility'] == GROUP_PERMISSION_CLOSED && !$is_member) { api_not_allowed(true); } $to_group = $group_info['name']; if (!empty($message_id)) { $message_info = MessageManager::get_message_by_id($message_id); if ($allowed_action == 'reply_message_group') { $subject = get_lang('Reply') . ': ' . api_xml_http_response_encode( $message_info['title'] ); //$message = api_xml_http_response_encode($message_info['content']); } else { $subject = api_xml_http_response_encode($message_info['title']);
) ); if ($count_users_group == 1) { $count_users_group = $count_users_group . ' ' . get_lang( 'Member' ); } else { $count_users_group = $count_users_group . ' ' . get_lang( 'Members' ); } $name = cut($result['name'], GROUP_TITLE_LENGTH, true); $picture = GroupPortalManager::get_picture_group( $result['id'], $result['picture_uri'], 80 ); $result['picture_uri'] = '<img class="social-groups-image" src="' . $picture['file'] . '" hspace="4" height="50" border="2" align="left" width="50" />'; $item_0 = Display::div( $result['picture_uri'], array('class' => 'box_description_group_image') ); $members = Display::span( $count_users_group, array('class' => 'box_description_group_member') ); $item_1 = Display::div( Display::tag('h3', $url_open . $name . $url_close) . $members, array('class' => 'box_description_group_title')
/** * Get the group member list by a user and his group role * @param int $userId The user ID * @param int $relationType Optional. The relation type. GROUP_USER_PERMISSION_ADMIN by default * @param boolean $includeSubgroupsUsers Optional. Whether include the users from subgroups * @return array */ public static function getGroupUsersByUser($userId, $relationType = GROUP_USER_PERMISSION_ADMIN, $includeSubgroupsUsers = true) { $userId = intval($userId); $groups = GroupPortalManager::get_groups_by_user($userId, $relationType); $groupsId = array_keys($groups); $subgroupsId = []; $userIdList = []; if ($includeSubgroupsUsers) { foreach ($groupsId as $groupId) { $subgroupsId = array_merge($subgroupsId, GroupPortalManager::getGroupsByDepthLevel($groupId)); } $groupsId = array_merge($groupsId, $subgroupsId); } $groupsId = array_unique($groupsId); if (empty($groupsId)) { return []; } foreach ($groupsId as $groupId) { $groupUsers = GroupPortalManager::get_users_by_group($groupId); if (empty($groupUsers)) { continue; } foreach ($groupUsers as $member) { if ($member['user_id'] == $userId) { continue; } $userIdList[] = intval($member['user_id']); } } return array_unique($userIdList); }
GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR ) ) ) { $show_message = get_lang( 'UserIsAlreadySubscribedToThisGroup' ); } else { $show_message = get_lang('UserIsNotSubscribedToThisGroup'); } break 2; case 'deny': // delete invitation GroupPortalManager::delete_user_rel_group( api_get_user_id(), $value ); $show_message = get_lang('GroupInvitationWasDeny'); break 2; } } } $social_avatar_block = SocialManager::show_social_avatar_block('myfiles'); $social_menu_block = SocialManager::show_social_menu('myfiles'); $actions = null; if (isset($_GET['cidReq'])) { $actions = '<a href="' . api_get_path( WEB_CODE_PATH ) . 'document/document.php?cidReq=' . Security::remove_XSS(
$icon = ''; $name = cut($result['name'],CUT_GROUP_NAME,true); if ($result['relation_type'] == GROUP_USER_PERMISSION_ADMIN) { $icon = Display::return_icon( 'social_group_admin.png', get_lang('Admin'), array('style'=>'vertical-align:middle;width:16px;height:16px;') ); } elseif ($result['relation_type'] == GROUP_USER_PERMISSION_MODERATOR) { $icon = Display::return_icon( 'social_group_moderator.png', get_lang('Moderator'), array('style'=>'vertical-align:middle;width:16px;height:16px;') ); } $count_users_group = count(GroupPortalManager::get_all_users_by_group($id)); if ($count_users_group == 1 ) { $count_users_group = $count_users_group.' '.get_lang('Member'); } else { $count_users_group = $count_users_group.' '.get_lang('Members'); } //$picture = GroupPortalManager::get_picture_group($result['id'], $result['picture_uri'],80); $item_name = $url_open.$name.$icon.$url_close; if ($result['description'] != '') { //$item_description = '<div class="box_shared_profile_group_description">' //.'<p class="social-groups-text4">'.cut($result['description'],100,true).'</p></div>'; } else { //$item_description = '<div class="box_shared_profile_group_description">' //.'<span class="social-groups-text2"></span><p class="social-groups-text4"></p></div>'; }
if ($check) { $values = $form->exportValues(); $picture_element = $form->getElement('picture'); $picture = $picture_element->getValue(); $picture_uri = ''; $name = $values['name']; $description = $values['description']; $url = $values['url']; $status = intval($values['visibility']); $picture = $_FILES['picture']; $parent_group_id = intval($values['parent_group']); $group_id = GroupPortalManager::add($name, $description, $url, $status); GroupPortalManager::set_parent_group($group_id, $parent_group_id); if (!empty($picture['name'])) { $picture_uri = GroupPortalManager::update_group_picture($group_id, $_FILES['picture']['name'], $_FILES['picture']['tmp_name']); GroupPortalManager::update($group_id, $name, $description, $url, $status, $picture_uri); } //@todo send emails /* if (!empty($email) && $send_mail) { $recipient_name = api_get_person_name($firstname, $lastname, null, PERSON_NAME_EMAIL_ADDRESS); $emailsubject = '['.api_get_setting('siteName').'] '.get_lang('YourReg').' '.api_get_setting('siteName'); $sender_name = api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'), null, PERSON_NAME_EMAIL_ADDRESS); $email_admin = api_get_setting('emailAdministrator'); if ($_configuration['multiple_access_urls']) { $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1) { $url = api_get_access_url($access_url_id); $emailbody = get_lang('Dear')." ".stripslashes(api_get_person_name($firstname, $lastname)).",\n\n".get_lang('YouAreReg')." ".api_get_setting('siteName') ." ".get_lang('WithTheFollowingSettings')."\n\n".get_lang('Username')." : ". $username ."\n". get_lang('Pass')." : ".stripslashes($password)."\n\n" .get_lang('Address') ." ". api_get_setting('siteName') ." ". get_lang('Is') ." : ". $url['url'] ."\n\n". get_lang('Problem'). "\n\n". get_lang('SignatureFormula').",\n\n".api_get_person_name(api_get_setting('administratorName'), api_get_setting('administratorSurname'))."\n". get_lang('Manager'). " ".api_get_setting('siteName')."\nT. ".api_get_setting('administratorTelephone')."\n" .get_lang('Email') ." : ".api_get_setting('emailAdministrator'); }
$UserList = $_POST['sessionUsersList']; $group_id = intval($_POST['id']); $relation_type = intval($_POST['relation']); if (!is_array($UserList)) { $UserList = array(); } if ($form_sent == 1) { $users_by_group = GroupPortalManager::get_users_by_group($group_id, null, array($relation_type)); $user_id_relation = array_keys($users_by_group); $user_relation_diff = array_diff($user_id_relation, $UserList); if (!empty($user_relation_diff)) { foreach ($user_relation_diff as $user_id) { GroupPortalManager::delete_user_rel_group($user_id, $group_id); } } $result = GroupPortalManager::add_users_to_groups($UserList, array($group_id), $relation_type); Display::display_confirmation_message(get_lang('UsersEdited')); } } $nosessionUsersList = $sessionUsersList = array(); $ajax_search = $add_type == 'unique' ? true : false; $order_clause = api_sort_by_first_name() ? ' ORDER BY firstname, lastname, username' : ' ORDER BY lastname, firstname, username'; if ($ajax_search) { // data for destination list if (isset($_POST['id']) && isset($_POST['relation'])) { // data for destination user list $id = intval($_POST['id']); $relation_type = intval($_POST['relation']); $condition_relation = " AND groups.relation_type = '{$relation_type}' "; $sql = "SELECT user.user_id, user.username, user.lastname, user.firstname\n FROM {$tbl_group_rel_user} groups\n INNER JOIN {$tbl_user} user ON user.user_id = groups.user_id\n WHERE groups.group_id = '{$id}' {$condition_relation} "; $rs_destination = Database::query($sql);
api_not_allowed(true); } } if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'delete') { $group_role = GroupPortalManager::get_user_group_role( api_get_user_id(), $group_id ); if (api_is_platform_admin() || in_array( $group_role, array(GROUP_USER_PERMISSION_ADMIN, GROUP_USER_PERMISSION_MODERATOR) ) ) { GroupPortalManager::delete_topic($group_id, $topic_id); header( "Location: groups.php?id=$group_id&action=show_message&msg=topic_deleted" ); } } // save message group if (isset($_POST['token']) && $_POST['token'] === $_SESSION['sec_token']) { if (isset($_POST['action'])) { $title = isset($_POST['title']) ? $_POST['title'] : null; $content = $_POST['content']; $group_id = intval($_POST['group_id']); $parent_id = intval($_POST['parent_id']);
/** * Delete a user from the platform, and all its belongings. This is a * very dangerous function that should only be accessible by * super-admins. Other roles should only be able to disable a user, * which removes access to the platform but doesn't delete anything. * @param int The ID of th user to be deleted * @return boolean true if user is successfully deleted, false otherwise * @assert (null) === false * @assert ('abc') === false */ public static function delete_user($user_id) { if ($user_id != strval(intval($user_id))) { return false; } if ($user_id === false) { return false; } if (!self::can_delete_user($user_id)) { return false; } $table_user = Database :: get_main_table(TABLE_MAIN_USER); $usergroup_rel_user = Database :: get_main_table(TABLE_USERGROUP_REL_USER); $table_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER); $table_course = Database :: get_main_table(TABLE_MAIN_COURSE); $table_session = Database :: get_main_table(TABLE_MAIN_SESSION); $table_admin = Database :: get_main_table(TABLE_MAIN_ADMIN); $table_session_user = Database :: get_main_table(TABLE_MAIN_SESSION_USER); $table_session_course_user = Database :: get_main_table(TABLE_MAIN_SESSION_COURSE_USER); $table_group = Database :: get_course_table(TABLE_GROUP_USER); $table_work = Database :: get_course_table(TABLE_STUDENT_PUBLICATION); // Unsubscribe the user from all groups in all his courses $sql = "SELECT c.id FROM $table_course c, $table_course_user cu WHERE cu.user_id = '".$user_id."' AND relation_type<>".COURSE_RELATION_TYPE_RRHH." AND c.code = cu.course_code"; $res = Database::query($sql); while ($course = Database::fetch_object($res)) { $sql = "DELETE FROM $table_group WHERE c_id = {$course->id} AND user_id = $user_id"; Database::query($sql); } // Unsubscribe user from all classes //Classes are not longer supported /* $sql = "DELETE FROM $table_class_user WHERE user_id = '".$user_id."'"; Database::query($sql); */ // Unsubscribe user from usergroup_rel_user $sql = "DELETE FROM $usergroup_rel_user WHERE user_id = '".$user_id."'"; Database::query($sql); // Unsubscribe user from all courses $sql = "DELETE FROM $table_course_user WHERE user_id = '".$user_id."'"; Database::query($sql); // Unsubscribe user from all courses in sessions $sql = "DELETE FROM $table_session_course_user WHERE id_user = '******'"; Database::query($sql); // If the user was added as a id_coach then set the current admin as coach see BT# $currentUserId = api_get_user_id(); $sql = "UPDATE $table_session SET id_coach = $currentUserId WHERE id_coach = '".$user_id."'"; Database::query($sql); $sql = "UPDATE $table_session SET id_coach = $currentUserId WHERE session_admin_id = '".$user_id."'"; Database::query($sql); // Unsubscribe user from all sessions $sql = "DELETE FROM $table_session_user WHERE id_user = '******'"; Database::query($sql); // Delete user picture /* TODO: Logic about api_get_setting('split_users_upload_directory') == 'true' a user has 4 differnt sized photos to be deleted. */ $user_info = api_get_user_info($user_id); if (strlen($user_info['picture_uri']) > 0) { $img_path = api_get_path(SYS_CODE_PATH).'upload/users/'.$user_id.'/'.$user_info['picture_uri']; if (file_exists($img_path)) unlink($img_path); } // Delete the personal course categories $course_cat_table = Database::get_user_personal_table(TABLE_USER_COURSE_CATEGORY); $sql = "DELETE FROM $course_cat_table WHERE user_id = '".$user_id."'"; Database::query($sql); // Delete user from database $sql = "DELETE FROM $table_user WHERE user_id = '".$user_id."'"; Database::query($sql); // Delete user from the admin table $sql = "DELETE FROM $table_admin WHERE user_id = '".$user_id."'"; Database::query($sql); // Delete the personal agenda-items from this user $agenda_table = Database :: get_user_personal_table(TABLE_PERSONAL_AGENDA); $sql = "DELETE FROM $agenda_table WHERE user = '******'"; Database::query($sql); $gradebook_results_table = Database :: get_main_table(TABLE_MAIN_GRADEBOOK_RESULT); $sql = 'DELETE FROM '.$gradebook_results_table.' WHERE user_id = '.$user_id; Database::query($sql); $t_ufv = Database::get_main_table(TABLE_MAIN_USER_FIELD_VALUES); $sqlv = "DELETE FROM $t_ufv WHERE user_id = $user_id"; Database::query($sqlv); require_once api_get_path(LIBRARY_PATH).'urlmanager.lib.php'; if (api_get_multiple_access_url()) { $url_id = api_get_current_access_url_id(); UrlManager::delete_url_rel_user($user_id, $url_id); } else { //we delete the user from the url_id =1 UrlManager::delete_url_rel_user($user_id, 1); } if (api_get_setting('allow_social_tool') == 'true') { require_once api_get_path(LIBRARY_PATH).'group_portal_manager.lib.php'; //Delete user from portal groups $group_list = GroupPortalManager::get_groups_by_user($user_id); if (!empty($group_list)) { foreach ($group_list as $group_id => $data) { GroupPortalManager::delete_user_rel_group($user_id, $group_id); } } // Delete user from friend lists SocialManager::remove_user_rel_user($user_id, true); } // Removing survey invitation survey_manager::delete_all_survey_invitations_by_user($user_id); // Delete students works $sql = "DELETE FROM $table_work WHERE user_id = $user_id AND c_id <> 0"; Database::query($sql); // Add event to system log $user_id_manager = api_get_user_id(); event_system(LOG_USER_DELETE, LOG_USER_ID, $user_id, api_get_utc_datetime(), $user_id_manager, null, $user_info); event_system(LOG_USER_DELETE, LOG_USER_OBJECT, $user_info, api_get_utc_datetime(), $user_id_manager, null, $user_info); return true; }