| 177 |
ariadna |
1 |
<?php
|
| 279 |
ariadna |
2 |
|
| 177 |
ariadna |
3 |
require_once(__DIR__ . '/cesa.php');
|
| 183 |
ariadna |
4 |
|
| 177 |
ariadna |
5 |
class StaticsBlocks extends Cesa
|
|
|
6 |
{
|
| 261 |
ariadna |
7 |
|
| 254 |
ariadna |
8 |
public function __construct($title)
|
| 177 |
ariadna |
9 |
{
|
| 255 |
ariadna |
10 |
global $USER, $PAGE, $SITE;
|
|
|
11 |
require_login(null, false);
|
|
|
12 |
|
|
|
13 |
if (isguestuser()) {
|
|
|
14 |
throw new require_login_exception('Guests are not allowed here.');
|
|
|
15 |
}
|
|
|
16 |
|
|
|
17 |
$this->userID = optional_param('userid', $USER->id, PARAM_INT);
|
|
|
18 |
$this->currentUser = $this->userID == $USER->id;
|
|
|
19 |
$this->user = core_user::get_user($this->userID);
|
|
|
20 |
$this->title = get_string($title);
|
|
|
21 |
$this->blockManager = $PAGE->blocks;
|
| 261 |
ariadna |
22 |
|
|
|
23 |
// Definimos varias regiones
|
| 271 |
ariadna |
24 |
$this->regions = ['side-post'];
|
|
|
25 |
$this->blockNames = ['cesa_course_rating', 'comments', 'messageteacher', 'mynotes'];
|
| 255 |
ariadna |
26 |
$this->blockExists = true;
|
|
|
27 |
|
|
|
28 |
if (!$this->user || !core_user::is_real_user($this->userID)) {
|
|
|
29 |
throw new moodle_exception('invaliduser', 'error');
|
|
|
30 |
}
|
| 261 |
ariadna |
31 |
|
| 264 |
ariadna |
32 |
// Asignar y validar los bloques en todas las regiones
|
|
|
33 |
foreach ($this->regions as $region) {
|
|
|
34 |
$this->regionName = $region;
|
| 279 |
ariadna |
35 |
|
|
|
36 |
// Añadir la región si no existe
|
|
|
37 |
$this->addRegion($this->regionName);
|
|
|
38 |
|
|
|
39 |
// Validar si los bloques existen
|
|
|
40 |
if (!$this->validateIfExistBlocks($this->regionName)) {
|
|
|
41 |
// Añadir bloques si no existen
|
|
|
42 |
$this->addBlocksIfNotExist($this->regionName);
|
|
|
43 |
}
|
| 261 |
ariadna |
44 |
}
|
| 177 |
ariadna |
45 |
}
|
|
|
46 |
|
| 279 |
ariadna |
47 |
public function validateIfExistBlocks($region)
|
|
|
48 |
{
|
|
|
49 |
// Obtener los bloques de la región actual.
|
|
|
50 |
$blocks = $this->blockManager->get_blocks_for_region($region);
|
|
|
51 |
|
|
|
52 |
// Validar si todos los bloques especificados existen en esta región.
|
|
|
53 |
foreach ($this->blockNames as $blockName) {
|
|
|
54 |
$blockFound = false;
|
|
|
55 |
foreach ($blocks as $block) {
|
|
|
56 |
if (get_class($block) == 'block_' . $blockName) {
|
|
|
57 |
$blockFound = true;
|
|
|
58 |
break;
|
|
|
59 |
}
|
|
|
60 |
}
|
|
|
61 |
// Si algún bloque no se encuentra, devolvemos false.
|
|
|
62 |
if (!$blockFound) {
|
|
|
63 |
return false;
|
|
|
64 |
}
|
|
|
65 |
}
|
|
|
66 |
|
|
|
67 |
// Si todos los bloques existen, devolvemos true.
|
|
|
68 |
return true;
|
|
|
69 |
}
|
|
|
70 |
|
| 283 |
ariadna |
71 |
public function addBlocksIfNotExist()
|
|
|
72 |
{
|
|
|
73 |
// Obtener los bloques de la región actual.
|
|
|
74 |
$blocks = $this->blockManager->get_blocks_for_region($this->$regionName);
|
| 279 |
ariadna |
75 |
|
| 283 |
ariadna |
76 |
foreach ($this->blockNames as $blockName) {
|
|
|
77 |
$blockFound = false;
|
|
|
78 |
|
|
|
79 |
// Buscar si el bloque ya está presente en la región.
|
|
|
80 |
foreach ($blocks as $block) {
|
|
|
81 |
if (get_class($block) == 'block_' . $blockName) {
|
|
|
82 |
$blockFound = true;
|
|
|
83 |
break;
|
|
|
84 |
}
|
|
|
85 |
}
|
|
|
86 |
|
|
|
87 |
// Si el bloque no está presente, lo añadimos.
|
|
|
88 |
if (!$blockFound) {
|
|
|
89 |
$this->blockManager->add_block('block_' . $blockName, $this->$regionName);
|
|
|
90 |
}
|
|
|
91 |
}
|
|
|
92 |
}
|
|
|
93 |
|
|
|
94 |
|
| 269 |
ariadna |
95 |
public function renderBlocks()
|
|
|
96 |
{
|
|
|
97 |
global $OUTPUT;
|
|
|
98 |
|
|
|
99 |
$blocksView = '';
|
|
|
100 |
// Renderizar bloques para cada región
|
|
|
101 |
foreach ($this->regions as $region) {
|
|
|
102 |
$this->regionName = $region;
|
|
|
103 |
$this->blockManager->load_blocks(true); // Cargar bloques en la región
|
|
|
104 |
$blocksView .= $OUTPUT->blocks_for_region($this->regionName); // Renderizar bloques
|
|
|
105 |
}
|
|
|
106 |
|
|
|
107 |
return $blocksView; // Devolver bloques renderizados
|
|
|
108 |
}
|
| 177 |
ariadna |
109 |
}
|
|
|
110 |
|
| 269 |
ariadna |
111 |
|
|
|
112 |
|
| 193 |
ariadna |
113 |
/* // Instanciamos y renderizamos la página con los bloques estáticos
|
| 177 |
ariadna |
114 |
$statics_blocks = new StaticsBlocks();
|
| 193 |
ariadna |
115 |
echo $statics_blocks->renderBlocks(); */
|