Výpis kurzů i s přiřazenými učiteli

Výpis kurzů i s přiřazenými učiteli

autor Dan Slováček -
Počet odpovědí: 2

Dobrý den

potřeboval bych nasměrovat jak mohu udělat celkový soupis všech kurzů a v nich přiřazené lidi v roli učitel. Popřípadě i obráceně soupis všech lidí, kteří jsou zařazeni do role učitel v jednom či více kurzech. Diky za pomoc.

PS: napsat si skript v PHP který by toto uměl snad zvládnu, jenom nemám ponětí ze kterých datových struktur to mohu vytáhnout. Zatím jsem prohlídl mdl_course, mdl_role_assignments a mdl_user a nejsem schopen to naprogramovat.

 

 

 

Počet hodnocení: -
V odpovědi na Dan Slováček

Re: Výpis kurzů i s přiřazenými učiteli

autor David Mudrák -
Obrázek: Moodle HQ Obrázek: Obzvláště nápomocní moodlisté Obrázek: Překladatelé Obrázek: Vývojáři

Za předpokladu, že roli učitele přiřazujete pouze na úrovni kurzu (a nikoliv kategorie nebo jako globální), může vám pro nasměrování pomoci následující:

<?php

define('CLI_SCRIPT', true);

require('config.php');

$sql = "SELECT c.shortname, c.fullname, u.firstname, u.lastname
          FROM {role} r
          JOIN {context} ctx ON ctx.contextlevel = 50
          JOIN {course} c ON c.id = ctx.instanceid
          JOIN {role_assignments} ra ON ra.roleid = r.id AND r.shortname = 'teacher'
          JOIN {user} u ON ra.userid = u.id
      ORDER BY c.id, u.id";

$records = $DB->get_recordset_sql($sql);

foreach ($records as $record) {
    echo "$record->shortname $record->fullname $record->firstname $record->lastname" . PHP_EOL;
}

$records->close();

Hodnota contextlevel = 50 udává, že se budou hledat přiřazení role pouze na úrovni kurzu. Podmínku r.shortname = 'teacher' si možná budete muset upravit podle toho, jaké údaje máte v tabulce {role}.

Pokud byste si s uvedeným SQL hrál přímo v klientovi, musíte samozřejmě namísto {tabulka} používat skutečný název včetně předdefinovaného prefixu, např. mdl_role namísto {role}.

HTH