Proyectos de Subversion Moodle

Rev

Rev 284 | Rev 286 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
172 efrain 1
<?php
2
//namespace Cesa;
3
require_once(__DIR__ . '/../config.php');
4
require_once($CFG->libdir . '/navigationlib.php');
182 ariadna 5
require_once($CFG->libdir . '/blocklib.php');
6
 
172 efrain 7
use \require_login_exception;
8
use \core_user;
9
use \moodle_exception;
10
use \context_user;
11
 
12
/**
13
 *
14
 * Cesa
15
 *
16
 */
17
 
182 ariadna 18
class Cesa
19
{
172 efrain 20
 
182 ariadna 21
    public $user;
172 efrain 22
    public $title;
23
    public $blocks;
24
    public $userID;
25
    public $currentUser;
26
    public $blockManager;
27
    public $blockExists;
207 ariadna 28
    public $blockNames;
172 efrain 29
    public $regionName;
30
 
182 ariadna 31
    public function __construct($title, $blockNames, $regionName)
32
    {
33
        global $USER, $PAGE, $SITE;
172 efrain 34
        require_login(null, false);
35
 
36
        if (isguestuser()) {
37
            throw new require_login_exception('Guests are not allowed here.');
38
        }
39
 
40
        $this->userID = optional_param('userid', $USER->id, PARAM_INT);
41
        $this->currentUser = $this->userID == $USER->id;
42
        $this->user = core_user::get_user($this->userID);
43
        $this->title = get_string($title);
44
        $this->blockManager = $PAGE->blocks;
45
        $this->regionName = $regionName;
182 ariadna 46
        $this->blockNames = is_array($blockNames) ? $blockNames : [$blockNames];
47
        $this->blockExists = true;
172 efrain 48
 
49
        if (!$this->user || !core_user::is_real_user($this->userID)) {
50
            throw new moodle_exception('invaliduser', 'error');
51
        }
52
 
253 ariadna 53
        $PAGE->set_context(context_user::instance($this->userID));
54
        $PAGE->set_pagelayout('mydashboard');
55
        $PAGE->set_title("{$SITE->shortname}: " . $this->title);
182 ariadna 56
    }
172 efrain 57
 
284 ariadna 58
    public function addRegion($region = $this->regionName)
182 ariadna 59
    {
283 ariadna 60
        // Validación alternativa: Verificamos si la región está en una lista predefinida de regiones.
61
        $existingRegions = $this->blockManager->get_regions();
62
 
63
        // Si la región no está presente en las regiones existentes, la añadimos.
64
        if (!in_array($region, $existingRegions)) {
65
            $this->blockManager->add_region($region);
182 ariadna 66
        }
67
    }
172 efrain 68
 
283 ariadna 69
    public function validateIfExistBlocks($region)
182 ariadna 70
    {
71
        $this->blockExists = true;
72
        $this->blocks = $this->blockManager->get_blocks_for_region($this->regionName);
73
        foreach ($this->blockNames as $blockName) {
74
            $blockFound = false;
75
            foreach ($this->blocks as $block) {
76
                $blockclass = get_class($block);
77
                if ($blockclass == 'block_' . $blockName) {
78
                    $blockFound = true;
79
                    break;
80
                }
172 efrain 81
            }
182 ariadna 82
            if (!$blockFound) {
83
                $this->blockExists = false;
84
                break; // Si un bloque no existe, no es necesario seguir buscando
85
            }
172 efrain 86
        }
87
        return $this->blockExists;
182 ariadna 88
    }
172 efrain 89
 
281 ariadna 90
    public function addBlocksIfNotExist($page = 'courses')
182 ariadna 91
    {
92
        if (!$this->blockExists) {
93
            foreach ($this->blockNames as $blockName) {
94
                $this->blockManager->add_block($blockName, $this->regionName, 1, true);
95
            }
172 efrain 96
        }
182 ariadna 97
    }
172 efrain 98
}