/** * * */ 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'); } }
/** * * * */ 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); }