Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
 
17
/**
18
 * Configuration helps with building block instance content.
19
 *
20
 * @package    block_dash
21
 * @copyright  2019 bdecent gmbh <https://bdecent.de>
22
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 */
24
 
25
namespace block_dash\local\configuration;
26
 
27
use block_dash\local\data_source\data_source_factory;
28
/**
29
 * Configuration helps with building block instance content.
30
 *
31
 * @package block_dash
32
 */
33
class configuration extends abstract_configuration {
34
 
35
    /**
36
     * Create configuration from block instance.
37
     *
38
     * @param \block_base $blockinstance
39
     * @return configuration|configuration_interface
40
     * @throws \coding_exception
41
     * @throws \dml_exception
42
     */
43
    public static function create_from_instance(\block_base $blockinstance) {
44
        $parentcontext = \context::instance_by_id($blockinstance->instance->parentcontextid);
45
 
46
        $datasource = null;
47
        if (isset($blockinstance->config->data_source_idnumber)) {
48
            if (!$datasource = data_source_factory::build_data_source($blockinstance->config->data_source_idnumber,
49
                $parentcontext)) {
50
                return false;
51
            }
52
 
53
            if (isset($blockinstance->config->preferences)
54
                && is_array($blockinstance->config->preferences)
55
                && !empty($blockinstance->config->preferences)) {
56
                $datasource->set_preferences($blockinstance->config->preferences);
57
            }
58
 
59
            $datasource->set_block_instance($blockinstance);
60
        }
61
 
62
        return new configuration($parentcontext, $datasource);
63
    }
64
}