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
 * An object that contains sql join fragments.
19
 *
20
 * @since      Moodle 3.1
21
 * @package    core
22
 * @category   dml
23
 * @copyright  2016 The Open University
24
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25
 */
26
 
27
namespace core\dml;
28
 
29
defined('MOODLE_INTERNAL') || die();
30
 
31
/**
32
 * An object that contains sql join fragments.
33
 *
34
 * An example of how to use this class in a simple query, where you have got
35
 * a join that is a join to the user table:
36
 *
37
 * $users = $DB->get_records_sql("SELECT u.*
38
 *         FROM {user} u
39
 *         {$sqljoin->joins}
40
 *         WHERE {$sqljoin->wheres}", $sqljoin->params);
41
 *
42
 * @since      Moodle 3.1
43
 * @package    core
44
 * @category   dml
45
 * @copyright  2016 The Open University
46
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
47
 */
48
class sql_join {
49
 
50
    /**
51
     * @var string joins.
52
     */
53
    public $joins;
54
 
55
    /**
56
     * @var string wheres.
57
     */
58
    public $wheres;
59
 
60
    /**
61
     * @var array params.
62
     */
63
    public $params;
64
 
65
    /**
66
     * @var bool if true this join is guaranteed to never match any rows.
67
     *      In this case, the calling code may be able to completely
68
     *      skip doing the database query.
69
     * @since Moodle 3.9/3.8.3/3.7.6.
70
     */
71
    public $cannotmatchanyrows;
72
 
73
    /**
74
     * Create an object that contains sql join fragments.
75
     *
76
     * Note, even if you set $cannotmatchanyrows to true, it is
77
     * important to also set the other fields because the calling
78
     * code is not required to check it. For example
79
     * new \core\dml\sql_join('', '1 = 2', [], true);
80
     *
81
     * @param string $joins The join sql fragment.
82
     * @param string $wheres The where sql fragment.
83
     * @param array $params Any parameter values.
84
     * @param bool $cannotmatchanyrows If true, this join is guaranteed to match no rows. See comment on the field above.
85
     */
86
    public function __construct($joins = '', $wheres = '', $params = array(), $cannotmatchanyrows = false) {
87
        $this->joins = $joins;
88
        $this->wheres = $wheres;
89
        $this->params = $params;
90
        $this->cannotmatchanyrows = $cannotmatchanyrows;
91
    }
92
}