PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.16
VikBooking Hotel Booking Engine & PMS v1.8.16
1.8.16 1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 All 37 releases
← All changes | libraries/adapter/database/query/element.php +123 -0 1.6.3 → 1.8.16 View file →
@@ -1,0 +1,123 @@
1 +<?php
2 +/**
3 + * @package VikWP - Libraries
4 + * @subpackage adapter.database
5 + * @author E4J s.r.l.
6 + * @copyright Copyright (C) 2023 E4J s.r.l. All Rights Reserved.
7 + * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
8 + * @link https://vikwp.com
9 + */
10 +
11 +// No direct access
12 +defined('ABSPATH') or die('No script kiddies please!');
13 +
14 +/**
15 + * Query Element Class.
16 + *
17 + * @since 10.0
18 + */
19 +class JDatabaseQueryElement
20 +{
21 + /**
22 + * The name of the element.
23 + *
24 + * @var string
25 + */
26 + protected $name = null;
27 +
28 + /**
29 + * An array of elements.
30 + *
31 + * @var array
32 + */
33 + protected $elements = null;
34 +
35 + /**
36 + * Glue piece.
37 + *
38 + * @var string
39 + */
40 + protected $glue = null;
41 +
42 + /**
43 + * Class constructor.
44 + *
45 + * @param string $name The name of the element.
46 + * @param mixed $elements String or array.
47 + * @param string $glue The glue for elements.
48 + *
49 + * @uses append()
50 + */
51 + public function __construct($name, $elements, $glue = ',')
52 + {
53 + $this->name = $name;
54 + $this->glue = $glue;
55 +
56 + $this->elements = array();
57 +
58 + $this->append($elements);
59 + }
60 +
61 + /**
62 + * Magic function to convert the query element to a string.
63 + *
64 + * @return string The query element as string.
65 + */
66 + public function __toString()
67 + {
68 + // check if the element is a function
69 + if (substr($this->name, -2) == '()')
70 + {
71 + // implode the elements between the parentheses, i.e. CONCAT_WS(' ', `a`, `b`)
72 + return PHP_EOL . substr($this->name, 0, -2) . '(' . implode($this->glue, $this->elements) . ')';
73 + }
74 + else
75 + {
76 + // implode the elements after the element, i.e. SELECT `a`, `b`
77 + return PHP_EOL . $this->name . ' ' . implode($this->glue, $this->elements);
78 + }
79 + }
80 +
81 + /**
82 + * Appends element parts to the internal list.
83 + *
84 + * @param mixed $elements String or array.
85 + *
86 + * @return void
87 + */
88 + public function append($elements)
89 + {
90 + if (is_array($elements))
91 + {
92 + $this->elements = array_merge($this->elements, $elements);
93 + }
94 + else
95 + {
96 + $this->elements[] = $elements;
97 + }
98 + }
99 +
100 + /**
101 + * Gets the elements of this element.
102 + *
103 + * @return array The elements.
104 + */
105 + public function getElements()
106 + {
107 + return $this->elements;
108 + }
109 +
110 + /**
111 + * Sets the name of this element.
112 + *
113 + * @param string $name Name of the element.
114 + *
115 + * @return self This object to support chaining.
116 + */
117 + public function setName($name)
118 + {
119 + $this->name = $name;
120 +
121 + return $this;
122 + }
123 +}