Moodle plugins directory: Course Category Finder: Versions: 3.6 | Moodle.org
Course Category Finder
Course Category Finder 3.6
course_category_finder
Course Category Finder
Blockbeschreibung:
Der „Course Category Finder“ ist eine Erweiterung des Blocks „Course Finder“ von Azmat Ullah und Talha Noor. Zusätzlich, zu der Suche nach Kursnamen, ist es mit dem Course Category Finder dem Nutzer möglich auch nach Kategorien zu suchen, denen Kurse zugeordnet wurden. Über eine neu hinzugefügte Combo-Box lässt sich die Option für die Suche auswählen. Über einen Button wird die Suche gestartet. Das gelieferte Ergebnis ist eine Auflistung aller Kurse, die dem Suchbegriff entsprechen. Sollte bei der Suche nach Kategorien kein Treffer erzielt werden, so wird auf die Index-Seite der vorhandenen Kategorien verwiesen.
Aufbau des Blocks:
Der Block besteht aus den folgenden Teilkomponenten:
db/access.php
Hier werden die Befähigungen des Blocks gesetzt.
defined('MOODLE_INTERNAL') || die();
$capabilities = array(
'block/search_course_category:addinstance' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_BLOCK,
'archetypes' => array(
'editingteacher' => CAP_ALLOW,
'manager' => CAP_ALLOW
),
'clonepermissionsfrom' => 'moodle/site:manageblocks'
),
);
lang/de/block_search_course_category.php lang/de/block_search_course_category.php
Diese Dateien enthalten Sprachoptionen in Deutsch und englisch.
$string['pluginname'] = 'Kurs Kategorie Suche'; $string['search_course_category'] = 'Kurs Kategorie Suche';
version.php
In dieser Datei ist die aktualle Versionsnummer des Blockes enthalten, als auch die benötigte version von Moodle.
$plugin->version = 2019060600;
$plugin->requires = 2010112400;
$plugin->release = '3.6';
$plugin->component = 'block_search_course_category';
block_search_course_category.php
In dieser Datei wird das Layout und der Titel für den Block festgelegt. Der Block besteht aus einem Texttfeld, in dem der Suchbegriff eingegeben werden kann, einer Combo-Box in der die Suchoption(Category, Course) gewählt werden kann und einem Button um die Suche zu starten. Beim Betätigen des Buttons wird auf die Datei search_course_category.php verwiesen, die dann den Suchbegriff verarbeitet.
search_course_category.php
Diese Datei enthält die Logik, die anhand des Suchbegriffs innerhalb der Datenbank eine Suche durchführt und das Ergebnis auflistet. Die Variable $option enthält die gewählte Suchoption, die entweder 'course' oder 'category' enthalten kann. In $search befindet sich der Suchbegriff.
$option = $_POST['combo_option']; $search = optional_param('search', '', PARAM_RAW);
Die Suche nach Kursen entspricht dem gleichen Verfahren wie sie in der standardmäßigen search.php von moodle vorhanden ist und wurde um die Option der Suche nach Kategorien erweitert. Da die standardmäßige search.php nicht geändert werden darf, damit sich die Moodle-Version nicht unterscheidet, musste die neue search_course_category.php erstellt werden.
Über eine Bedingung wird zunächst geprüft, um welche Art von Suche es sich handelt. Wenn es die neue Suche nach einer Kategorie ist, so wird zunächst eine Datenbankabfrage innerhalb der Tabelle course_categories gestartet. Alle Suchergebnisse werden in $records aufgenommen:
$select = "name LIKE '%".$search."%'"; $table = 'course_categories'; $records = $DB->get_records_select($table,$select);
Danach wird das Seitenlayout festgelegt. Dazuwird der courserenderer verwendet:
$PAGE->set_pagelayout('coursecategory'); $courserenderer = $PAGE->get_renderer('core', 'course');
Als nächstes wird geprüft, ob der Nutzer eingeloggt ist. Sollte er nicht eingeloggt sein, so hat er keinen Zugang zu den Kursen.
if ($CFG->forcelogin) require_login();
Verborgene Kategorieren sind ohne Berechtigung nicht sichtbar:
if ($categoryid && !$category->visible && !has_capability('moodle/category:viewhiddencategories', $PAGE->context)) { throw new moodle_exception('unknowncategory'); }
Über eine Schleife werden alle gefunden Kategorien aufgelistet. Zur Anzeige dient der courserenderer, an den die id der Kategorie übergeben wird.
foreach($records as $record){ $content = $courserenderer->course_category($record->id); echo $content; }
Schließlich werden noch die Namen der gefundenen Kategorien aufgelistet:
echo "Found Categories:"; foreach($records as $record){ echo $record->name; echo ""; }
Dieser Codeabschnitt dient dazu zu Prüfen, ob der Nutzer die Berechtigung versteckte Kategorieen zu sehen. (Datei search_course_category.php Zeile 130). Er wurde entfernt, damit auch nicht eingeloggte Nutzer nach allen Kategorien suchen könnnen, da sonst eine Exception geworfen werden würde.
if (!has_capability('moodle/category:viewhiddencategories', $PAGE->context)) { throw new moodle_exception('unknowncategory'); }
Version information
- Version build number
- 2019060600
- Version release name
- 3.6
- Maturity
- Stable version
- MD5 Sum
- 29ec04b3de7eb62413e0365dada32aeb
- Supported software
- Moodle 3.2, Moodle 3.3, Moodle 3.4, Moodle 3.5, Moodle 3.6, Moodle 3.7, Moodle 3.8, Moodle 3.9
- The more recent release 3.7 (2021062300) exists for Moodle 3.2
- The more recent release 3.7 (2021062300) exists for Moodle 3.3
- The more recent release 3.7 (2021062300) exists for Moodle 3.4
- The more recent release 3.7 (2021062300) exists for Moodle 3.5
- The more recent release 3.7 (2021062300) exists for Moodle 3.6
- The more recent release 3.7 (2021062300) exists for Moodle 3.7
- The more recent release 3.7 (2021062300) exists for Moodle 3.8
- The more recent release 3.7 (2021062300) exists for Moodle 3.9
Version control information
- Version control system (VCS)
- GIT
- VCS repository URL
Default installation instructions for plugins of the type Blocks
- Make sure you have all the required versions.
- Download and unpack the block folder.
- Place the folder (eg "myblock") in the "blocks" subdirectory.
- Visit http://yoursite.com/admin to complete the installation
- Turn editing on in any home or course page.
- Add the block to the page
- Visit the config link in the block for more options.