Proyectos de Subversion Moodle

Rev

Rev 289 | Rev 291 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 289 Rev 290
Línea 37... Línea 37...
37
            $this->addRegion($this->regionName);
37
            $this->addRegion($this->regionName);
Línea 38... Línea 38...
38
 
38
 
39
            // Validar si los bloques existen
39
            // Validar si los bloques existen
40
            if (!$this->validateIfExistBlocks($this->regionName)) {
40
            if (!$this->validateIfExistBlocks($this->regionName)) {
41
                // Añadir bloques si no existen
41
                // Añadir bloques si no existen
42
                $this->addBlocksIfNotExist($this->regionName);
42
                $this->addBlocksIfNotExist('courses', $this->regionName);
43
            }
43
            }
44
        }
44
        }
Línea 45... Línea 45...
45
    }
45
    }
Línea 84... Línea 84...
84
 
84
 
85
        // Si todos los bloques existen y son únicos, devolvemos true.
85
        // Si todos los bloques existen y son únicos, devolvemos true.
86
        return true;
86
        return true;
Línea -... Línea 87...
-
 
87
    }
-
 
88
 
-
 
89
    public function addBlocksIfNotExist($page = 'courses', $region)
-
 
90
    {
-
 
91
        // Obtener los bloques actuales en todas las regiones
-
 
92
        $allBlocks = [];
-
 
93
        foreach ($this->regions as $region) {
-
 
94
            $blocks = $this->blockManager->get_blocks_for_region($region);
-
 
95
            foreach ($blocks as $block) {
-
 
96
                $blockClass = get_class($block);
-
 
97
                if (!isset($allBlocks[$blockClass])) {
-
 
98
                    $allBlocks[$blockClass] = $region;
-
 
99
                } else {
-
 
100
                    // Si el bloque ya existe en otra región, marcarlo como duplicado
-
 
101
                    $allBlocks[$blockClass] = 'duplicate';
-
 
102
                }
-
 
103
            }
-
 
104
        }
-
 
105
 
-
 
106
        // Añadir los bloques si no existen en la región actual
-
 
107
        foreach ($this->blockNames as $blockName) {
-
 
108
            $expectedBlockClass = 'block_' . $blockName;
-
 
109
 
-
 
110
            // Verificar si el bloque es único y no está marcado como duplicado
-
 
111
            if (!isset($allBlocks[$expectedBlockClass]) || $allBlocks[$expectedBlockClass] === $region) {
-
 
112
                // Solo añadir el bloque si no está en la lista de bloques existentes de la región actual
-
 
113
                if (!$this->blockExistsInRegion($expectedBlockClass, $region)) {
-
 
114
                    $this->blockManager->add_block($blockName, $region, 1, true);
-
 
115
                }
-
 
116
            }
-
 
117
        }
-
 
118
    }
-
 
119
 
-
 
120
    private function blockExistsInRegion($blockClass, $region)
-
 
121
    {
-
 
122
        // Obtener los bloques actuales en la región especificada
-
 
123
        $blocks = $this->blockManager->get_blocks_for_region($region);
-
 
124
 
-
 
125
        // Verificar si el bloque ya existe en la región
-
 
126
        foreach ($blocks as $block) {
-
 
127
            if (get_class($block) === $blockClass) {
-
 
128
                return true;
-
 
129
            }
-
 
130
        }
-
 
131
 
-
 
132
        return false;
Línea 87... Línea 133...
87
    }
133
    }
88
 
134
 
89
 
135