/**
 *
 *
 */
function bookmarks_print_all_bookmarks_separategroups($id, $cmid)
{
    global $COURSE, $USER;
    $context = get_context_instance(CONTEXT_MODULE, $cmid);
    // Check for a wrong course config
    $groups = groups_get_all_groups($COURSE->id);
    if (empty($groups)) {
        notice(get_string('nogroupsset', 'bookmarks'));
    }
    // Set active group
    $gid = optional_param('gid', null, PARAM_INT);
    if (!isset($gid)) {
        $usergroups = groups_get_all_groups($COURSE->id, $USER->id);
        if (!empty($usergroups)) {
            $group = current($usergroups);
            $gid = $group->id;
        } else {
            $group = current($groups);
            $gid = $group->id;
        }
    } else {
        // Check if current user is member of $gid group (separate groups)
        if (bookmarks_check_group($gid)) {
            if (!groups_is_member($gid) && (!has_capability('moodle/site:accessallgroups', $context) || !has_capability('mod/bookmarks:manage', $context))) {
                notice(get_string('accessdenied', 'bookmarks'));
            }
        } else {
            error('Incorrect group id', 'view.php?id=' . $cmid);
        }
    }
    if (has_capability('moodle/site:accessallgroups', $context) || has_capability('mod/bookmarks:manage', $context)) {
        bookmarks_print_group_select($cmid, $groups, $gid);
    }
    $items = bookmarks_get_items_by_group($gid, $id);
    $users = bookmarks_get_groupmembers(array($gid));
    $userids = implode(',', $users);
    if (!empty($items)) {
        foreach ($items as $item) {
            bookmarks_print_item($item, $cmid, $userids);
        }
    } else {
        print_string('noitems', 'bookmarks');
    }
}
Esempio n. 2
0
/**
 * 
 * 
 * 
 */
function bookmarks_search_by($criteria, $id)
{
    global $CFG, $USER, $COURSE;
    $elements = array();
    $queries = array();
    $queries['text'] = array();
    $queries['tag'] = array();
    $queries['url'] = array();
    $queries['inurl'] = array();
    $elements = explode(',', $criteria);
    foreach ($elements as $element) {
        $element = trim($element);
        switch (substr($element, 0, 4)) {
            case 'tag:':
                $queries['tag'][] = substr($element, 4);
                break;
            case 'url:':
                $queries['url'][] = substr($element, 4);
                break;
            default:
                switch (substr($element, 0, 6)) {
                    case 'inurl:':
                        $queries['inurl'][] = substr($element, 6);
                        break;
                    default:
                        $queries['text'][] = $element;
                }
        }
    }
    $cm = get_coursemodule_from_instance('bookmarks', $id);
    $query = 'SELECT DISTINCT i.*
				FROM ' . $CFG->prefix . 'bookmarks_items i
				LEFT OUTER JOIN ' . $CFG->prefix . 'bookmarks_links l ON i.linkid = l.id
				LEFT OUTER JOIN ' . $CFG->prefix . 'tag_instance ti ON i.id = ti.itemid
				LEFT OUTER JOIN ' . $CFG->prefix . 'tag t ON ti.tagid = t.id
				WHERE i.bookmarksid = ' . $id;
    if (!empty($queries['text'])) {
        foreach ($queries['text'] as $text) {
            $query .= ' AND (';
            $query .= " i.name LIKE '%" . $text . "%' OR";
            $query .= " i.description LIKE '%" . $text . "%'";
            $query .= ')';
        }
    }
    if (!empty($queries['tag'])) {
        foreach ($queries['tag'] as $tag) {
            $query .= ' AND ';
            $query .= "t.name = '" . $tag . "'";
        }
    }
    if (!empty($queries['inurl'])) {
        foreach ($queries['inurl'] as $url) {
            $query .= ' AND ';
            $query .= "l.url LIKE '%" . $url . "%'";
        }
    }
    if (!empty($queries['url'])) {
        foreach ($queries['url'] as $url) {
            $query .= ' AND ';
            $query .= "l.url = '" . $url . "'";
        }
    }
    if ($cm->gropumode = 1) {
        $context = get_context_instance(CONTEXT_MODULE, $cm->id);
        $gids = bookmarks_get_user_groupids($USER->id, $COURSE->id);
        if ($gids) {
            $userids = bookmarks_get_groupmembers($gids);
            $query .= 'AND i.userid IN(' . implode(',', $userids) . ')';
        } elseif (!has_capability('mod/bookmarks:manage', $context)) {
            $query .= 'AND i.userid =' . $USER->id;
        }
    }
    $query .= ' ORDER BY i.name';
    return get_records_sql($query);
}