Rev 287 | Rev 289 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phprequire_once(__DIR__ . '/cesa.php');class StaticsBlocks extends Cesa{public function __construct($title){global $USER, $PAGE, $SITE;require_login(null, false);if (isguestuser()) {throw new require_login_exception('Guests are not allowed here.');}$this->userID = optional_param('userid', $USER->id, PARAM_INT);$this->currentUser = $this->userID == $USER->id;$this->user = core_user::get_user($this->userID);$this->title = get_string($title);$this->blockManager = $PAGE->blocks;// Definimos varias regiones$this->regions = ['side-post'];$this->blockNames = ['cesa_course_rating', 'comments', 'messageteacher', 'mynotes'];$this->blockExists = true;if (!$this->user || !core_user::is_real_user($this->userID)) {throw new moodle_exception('invaliduser', 'error');}// Asignar y validar los bloques en todas las regionesforeach ($this->regions as $region) {$this->regionName = $region;// Añadir la región si no existe$this->addRegion($this->regionName);// Validar si los bloques existenif (!$this->validateIfExistBlocks($this->regionName)) {// Añadir bloques si no existen$this->addBlocksIfNotExist($this->regionName);}}}public function addRegion($region){// Validación alternativa: Verificamos si la región está en una lista predefinida de regiones.$existingRegions = $this->blockManager->get_regions();// Si la región no está presente en las regiones existentes, la añadimos.if (!in_array($region, $existingRegions)) {$this->blockManager->add_region($region);}}public function validateIfExistBlocks($region){// Obtener los bloques de la región actual.$blocks = $this->blockManager->get_blocks_for_region($region);// Validar si todos los bloques especificados existen en esta región.foreach ($this->blockNames as $blockName) {$blockFound = false;foreach ($blocks as $block) {if (get_class($block) == 'block_' . $blockName) {$blockFound = true;break;}}// Si algún bloque no se encuentra, devolvemos false.if (!$blockFound) {return false;}}// Si todos los bloques existen, devolvemos true.return true;}public function renderBlocks(){global $OUTPUT;$blocksView = '';// Renderizar bloques para cada regiónforeach ($this->regions as $region) {$this->regionName = $region;$this->blockManager->load_blocks(true); // Cargar bloques en la región$blocksView .= $OUTPUT->blocks_for_region($this->regionName); // Renderizar bloques}return $blocksView; // Devolver bloques renderizados}}/* // Instanciamos y renderizamos la página con los bloques estáticos$statics_blocks = new StaticsBlocks();echo $statics_blocks->renderBlocks(); */