Proyectos de Subversion Moodle

Rev

Rev 253 | Rev 263 | 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
 
253 ariadna 58
    public function __construct_statics_blocks($title, $blockNames, $regionName)
59
    {
60
        global $USER, $PAGE, $SITE;
61
        require_login(null, false);
62
 
63
        if (isguestuser()) {
64
            throw new require_login_exception('Guests are not allowed here.');
65
        }
66
 
67
        $this->userID = optional_param('userid', $USER->id, PARAM_INT);
68
        $this->currentUser = $this->userID == $USER->id;
69
        $this->user = core_user::get_user($this->userID);
70
        $this->title = get_string($title);
71
        $this->blockManager = $PAGE->blocks;
72
        $this->regionName = $regionName;
73
        $this->blockNames = is_array($blockNames) ? $blockNames : [$blockNames];
74
        $this->blockExists = true;
75
 
76
        if (!$this->user || !core_user::is_real_user($this->userID)) {
77
            throw new moodle_exception('invaliduser', 'error');
78
        }
79
    }
80
 
182 ariadna 81
    public function addRegion()
82
    {
262 ariadna 83
        // Si $this->regionName es un array, recorremos cada región
84
        if (is_array($this->regionName)) {
85
            foreach ($this->regionName as $region) {
86
                // Verificamos si la región no existe antes de añadirla
87
                if (!in_array($region, $this->blockManager->get_regions())) {
88
                    $this->blockManager->add_region($region);
89
                }
90
            }
91
        } else {
92
            // Si no es un array, lo manejamos como una sola región
93
            if (!in_array($this->regionName, $this->blockManager->get_regions())) {
94
                $this->blockManager->add_region($this->regionName);
95
            }
182 ariadna 96
        }
97
    }
172 efrain 98
 
182 ariadna 99
    public function validateIfExistBlocks()
100
    {
101
        $this->blockExists = true;
102
        $this->blocks = $this->blockManager->get_blocks_for_region($this->regionName);
103
        foreach ($this->blockNames as $blockName) {
104
            $blockFound = false;
105
            foreach ($this->blocks as $block) {
106
                $blockclass = get_class($block);
107
                if ($blockclass == 'block_' . $blockName) {
108
                    $blockFound = true;
109
                    break;
110
                }
172 efrain 111
            }
182 ariadna 112
            if (!$blockFound) {
113
                $this->blockExists = false;
114
                break; // Si un bloque no existe, no es necesario seguir buscando
115
            }
172 efrain 116
        }
117
        return $this->blockExists;
182 ariadna 118
    }
172 efrain 119
 
182 ariadna 120
    public function addBlocksIfNotExist($page = 'courses')
121
    {
122
        if (!$this->blockExists) {
123
            foreach ($this->blockNames as $blockName) {
124
                $this->blockManager->add_block($blockName, $this->regionName, 1, true);
125
            }
172 efrain 126
        }
182 ariadna 127
    }
172 efrain 128
}