public static function get_public_galleries_by_contextid($contextid, $prefix = true) { global $DB; $context = \context::instance_by_id($contextid); if (!($coursecontext = $context->get_course_context(false))) { return array(); } $course = $DB->get_record('course', array('id' => $coursecontext->instanceid), '*', MUST_EXIST); $collections = get_all_instances_in_course('mediagallery', $course); $collids = array(); foreach ($collections as $collection) { $collids[] = $collection->id; } if (empty($collids)) { return array(); } $concat = $prefix ? $DB->sql_concat('mg.name', "' > '", 'g.name') : 'g.name'; list($insql, $params) = $DB->get_in_or_equal($collids, SQL_PARAMS_NAMED); $sql = "SELECT g.*,\n {$concat} AS label\n FROM {mediagallery_gallery} g\n JOIN {mediagallery} mg on (mg.id = g.instanceid)\n WHERE instanceid {$insql}"; $list = array(); foreach ($DB->get_records_sql($sql, $params) as $record) { $gallery = new gallery($record); if ($gallery->user_can_view()) { $list[$gallery->id] = $record->label; } } return $list; }