Neste post vou compartilhar com vocês gerar uma lista de atividades que existem dentro do curso com programação PHP.
Para efetuar esse exemplo, crie uma classe com essa finalidade. Essa classe é composta por seguintes funções:
1- Lista de função
get_list
É a função principal. Essa função consulta a lista de atividades no banco. Em seguida, invoca as outras funções.
add_info_tolist
Essa função consulta o nome e descrição de cada atividade na sua respectiva tabela do modulo;
oder_list
Essa função ordena a lista de atividades
get_name
Esse função consulta nome e descrição de cada atividade no seu respetivo tabela do módulo. É invocado na função add_info_tolist
2- Código completo
Antes do início da classe, invocamos a classe, e passamos o parâmetro do curso. Veja o código completo
<?php
require("../config.php");
$courseid= optional_param('courseid', NULL,PARAM_INT);
$badiuccotent=new badiu_coursecontent($courseid);
echo "<pre>";
print_r($badiuccotent->getListcontent());
echo "</pre>";
class badiu_coursecontent {
private $listcontent=null;
function __construct($courseid,$section=null) {
$this->listcontent=$this->get_list($courseid,$section);
}
public function get_list($courseid,$section=null) {
if(empty($courseid)){return null;}
global $DB;
global $CFG;
$wsql="";
if($section > 0 ){$wsql=" AND s.section=$section";}
$sql = "SELECT cm.id,m.name AS module,cm.instance,cm.idnumber,s.id AS topicid,s.section,s.sequence AS activitysequence,cm.visible,cm.visible,cm.visibleold,cm.groupmode,cm.completion,cm.completiongradeitemnumber,cm.completionview,cm.added FROM {$CFG->prefix}course_modules cm INNER JOIN {$CFG->prefix}modules m ON m.id=cm.module INNER JOIN {$CFG->prefix}course_sections s ON s.id=cm.section WHERE s.course=cm.course AND cm.course=$courseid $wsql ORDER BY s.section ";
$listcontent = $DB->get_records_sql($sql);
$listcontent=$this->add_info_tolist($listcontent,$courseid,$section);
$listcontent=$this->oder_list($listcontent);
return $listcontent;
}
private function add_info_tolist($listcontent,$courseid,$section=null) {
if(empty($listcontent)) {return null;}
$listcontentnew=array();
$listplugins=array();
foreach ($listcontent as $d) {
$name=$d->module;
$listplugins[$name]= $name;
}
$listcontentname=array();
foreach ($listplugins as $plugin) {
$instacelist=$this->get_name($plugin,$courseid);
foreach ($instacelist as $linfo) {
$id=$linfo->id;
$key="$plugin/$id";
$listcontentname[$key]=$linfo;
}
}
foreach ( $listcontent as $lcontent) {
$instance=$lcontent->instance;
$module=$lcontent->module;
$key="$module/$instance";
if(array_key_exists($key,$listcontentname)){
$info=$listcontentname[$key];
$lcontent->name=$info->name;
$lcontent->intro=$info->intro;
}
array_push($listcontentnew,$lcontent);
}
return $listcontentnew;
}
private function oder_list($listcontent) {
if(empty($listcontent)) {return null;}
$newlistcontent=array();
$listbykey=array();
$sectionsequences=array();
foreach ($listcontent as $lc) {
$key= $lc->section."/".$lc->id;
$listbykey[$key]=$lc;
$seq=array();
$pos=stripos($lc->activitysequence, ",");
if($pos=== false){
$seq=array($lc->activitysequence);
}else{
$seq=explode(",",$lc->activitysequence);
}
$sectionsequences[$lc->section]=$seq;
}
foreach ( $sectionsequences as $skey => $listidativity) {
foreach ($listidativity as $ativityid) {
$ativkey=$skey."/".$ativityid;
if (array_key_exists($ativkey,$listbykey)){
$itemativity=$listbykey[$ativkey];
array_push($newlistcontent,$itemativity);
}
}
}
return $newlistcontent;
}
private function get_name($plugin,$courseid) {
global $DB;
global $CFG;
$sql="SELECT id,name,intro FROM {$CFG->prefix}$plugin WHERE course=$courseid";
$rows = $DB->get_records_sql($sql);
return $rows;
}
function getListcontent() {
return $this->listcontent;
}
function setListcontent($listcontent) {
$this->listcontent = $listcontent;
}
}
?>
3 - Instalação do script no seu Moodle
Para rodar esse scritp no seu Moodle. Siga os seguintes passos:
a) Faça download do arquivo courseactivities.php
2) Na raiz da instalação do seu Moodle, MOODLE_DIR_INSTALL cria uma pasta com nome _extra;
3) Coloque o arquivo que fez download na pasta MOODLE_DIR_INSTALL/_extra
4) Execute no navegador os seguintes url
MOODLE_URL/_extra/courseactivities.php?courseid=?
Passe parâmetro id do curso em courseid=?