コード例 #1
0
    /**
     * @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;
	}
コード例 #2
0
    /**
     * 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)
            );
        //}
    }
コード例 #3
0
	<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
        );
コード例 #4
0
ファイル: install.lib.php プロジェクト: KRCM13/chamilo-lms
/**
* @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();
                }
            }
        }
    }
}
コード例 #5
0
    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%">';
コード例 #6
0
 /**
  * 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);
             }
         }
     }
 }
コード例 #7
0
     $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'));
コード例 #8
0
    /**
     * 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')).'&nbsp;&nbsp;'.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')).'&nbsp;&nbsp;'.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')).'&nbsp;'.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.'&nbsp;&nbsp;'.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.'&nbsp;&nbsp;'.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;
    }
コード例 #9
0
        $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();
コード例 #10
0
ファイル: search.php プロジェクト: annickvdp/Chamilo1.9.10
        $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>
コード例 #11
0
/**
* @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');
    }
}
コード例 #12
0
ファイル: download.php プロジェクト: annickvdp/Chamilo1.9.10
	$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;
コード例 #13
0
        $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>';
コード例 #14
0
                            <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>
コード例 #15
0
ファイル: group_list.php プロジェクト: KRCM13/chamilo-lms
                 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
コード例 #16
0
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" >&nbsp;</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').'&nbsp;&nbsp;<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>&nbsp;('.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;
}
コード例 #17
0
 $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']}')";
コード例 #18
0
    /**
     * 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;
    }
コード例 #19
0
    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;
    }
コード例 #20
0
$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']);
コード例 #21
0
ファイル: groups.php プロジェクト: annickvdp/Chamilo1.9.10
                )
            );
            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')
コード例 #22
0
 /**
  * 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);
 }
コード例 #23
0
ファイル: myfiles.php プロジェクト: annickvdp/Chamilo1.9.10
                        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(
コード例 #24
0
ファイル: profile.php プロジェクト: annickvdp/Chamilo1.9.10
            $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>';
            }
コード例 #25
0
ファイル: group_add.php プロジェクト: KRCM13/chamilo-lms
 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');
     				}
コード例 #26
0
    $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);
コード例 #27
0
        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']);
コード例 #28
0
    /**
     * 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;
    }