Gerar lista de atividades de um curso com PHP

Gerar lista de atividades de um curso com PHP

por Lino Vaz Moniz -
Número de respostas: 0

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=?