PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / trunk
Matomo Analytics – Powerful, Privacy-First Insights for WordPress vtrunk
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / libs / HTML / QuickForm2 / Factory.php
matomo / app / libs / HTML / QuickForm2 Last commit date
Container 1 year ago Controller 2 years ago DataSource 2 years ago Element 1 year ago Renderer 1 year ago Rule 2 years ago Container.php 1 year ago Controller.php 1 year ago DataSource.php 2 years ago Element.php 2 years ago Exception.php 2 years ago Factory.php 2 years ago JavascriptBuilder.php 2 years ago Loader.php 2 years ago Node.php 1 year ago Renderer.php 1 year ago Rule.php 2 years ago
Factory.php
171 lines
1 <?php
2
3 namespace {
4 /**
5 * Static Factory class for HTML_QuickForm2 package
6 *
7 * PHP version 5
8 *
9 * LICENSE:
10 *
11 * Copyright (c) 2006-2010, Alexey Borzov <avb@php.net>,
12 * Bertrand Mansion <golgote@mamasam.com>
13 * All rights reserved.
14 *
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
17 * are met:
18 *
19 * * Redistributions of source code must retain the above copyright
20 * notice, this list of conditions and the following disclaimer.
21 * * Redistributions in binary form must reproduce the above copyright
22 * notice, this list of conditions and the following disclaimer in the
23 * documentation and/or other materials provided with the distribution.
24 * * The names of the authors may not be used to endorse or promote products
25 * derived from this software without specific prior written permission.
26 *
27 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
28 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
29 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
31 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
32 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
33 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
34 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
35 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
36 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
37 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 *
39 * @category HTML
40 * @package HTML_QuickForm2
41 * @author Alexey Borzov <avb@php.net>
42 * @author Bertrand Mansion <golgote@mamasam.com>
43 * @license http://opensource.org/licenses/bsd-license.php New BSD License
44 * @version SVN: $Id: Factory.php 299305 2010-05-12 20:15:28Z avb $
45 * @link http://pear.php.net/package/HTML_QuickForm2
46 */
47 /**
48 * Class with static methods for loading classes and files
49 */
50 // require_once 'HTML/QuickForm2/Loader.php';
51 /**
52 * Static factory class
53 *
54 * The class handles instantiation of Element and Rule objects as well as
55 * registering of new Element and Rule classes.
56 *
57 * @category HTML
58 * @package HTML_QuickForm2
59 * @author Alexey Borzov <avb@php.net>
60 * @author Bertrand Mansion <golgote@mamasam.com>
61 * @version Release: @package_version@
62 */
63 class HTML_QuickForm2_Factory
64 {
65 /**
66 * List of element types known to Factory
67 * @var array
68 */
69 protected static $elementTypes = array('button' => array('HTML_QuickForm2_Element_Button', null), 'checkbox' => array('HTML_QuickForm2_Element_InputCheckbox', null), 'date' => array('HTML_QuickForm2_Element_Date', null), 'fieldset' => array('HTML_QuickForm2_Container_Fieldset', null), 'group' => array('HTML_QuickForm2_Container_Group', null), 'file' => array('HTML_QuickForm2_Element_InputFile', null), 'hidden' => array('HTML_QuickForm2_Element_InputHidden', null), 'image' => array('HTML_QuickForm2_Element_InputImage', null), 'inputbutton' => array('HTML_QuickForm2_Element_InputButton', null), 'password' => array('HTML_QuickForm2_Element_InputPassword', null), 'radio' => array('HTML_QuickForm2_Element_InputRadio', null), 'reset' => array('HTML_QuickForm2_Element_InputReset', null), 'select' => array('HTML_QuickForm2_Element_Select', null), 'submit' => array('HTML_QuickForm2_Element_InputSubmit', null), 'text' => array('HTML_QuickForm2_Element_InputText', null), 'textarea' => array('HTML_QuickForm2_Element_Textarea', null));
70 /**
71 * List of registered rules
72 * @var array
73 */
74 protected static $registeredRules = array('nonempty' => array('HTML_QuickForm2_Rule_Nonempty', null), 'empty' => array('HTML_QuickForm2_Rule_Empty', null), 'required' => array('HTML_QuickForm2_Rule_Required', null), 'compare' => array('HTML_QuickForm2_Rule_Compare', null), 'eq' => array('HTML_QuickForm2_Rule_Compare', null, array('operator' => '===')), 'neq' => array('HTML_QuickForm2_Rule_Compare', null, array('operator' => '!==')), 'lt' => array('HTML_QuickForm2_Rule_Compare', null, array('operator' => '<')), 'lte' => array('HTML_QuickForm2_Rule_Compare', null, array('operator' => '<=')), 'gt' => array('HTML_QuickForm2_Rule_Compare', null, array('operator' => '>')), 'gte' => array('HTML_QuickForm2_Rule_Compare', null, array('operator' => '>=')), 'regex' => array('HTML_QuickForm2_Rule_Regex', null), 'callback' => array('HTML_QuickForm2_Rule_Callback', null), 'length' => array('HTML_QuickForm2_Rule_Length', null), 'minlength' => array('HTML_QuickForm2_Rule_Length', null, array('max' => 0)), 'maxlength' => array('HTML_QuickForm2_Rule_Length', null, array('min' => 0)), 'maxfilesize' => array('HTML_QuickForm2_Rule_MaxFileSize', null), 'mimetype' => array('HTML_QuickForm2_Rule_MimeType', null), 'each' => array('HTML_QuickForm2_Rule_Each', null), 'notcallback' => array('HTML_QuickForm2_Rule_NotCallback', null), 'notregex' => array('HTML_QuickForm2_Rule_NotRegex', null));
75 /**
76 * Registers a new element type
77 *
78 * @param string Type name (treated case-insensitively)
79 * @param string Class name
80 * @param string File containing the class, leave empty if class already loaded
81 */
82 public static function registerElement($type, $className, $includeFile = null)
83 {
84 self::$elementTypes[\strtolower($type)] = array($className, $includeFile);
85 }
86 /**
87 * Checks whether an element type is known to factory
88 *
89 * @param string Type name (treated case-insensitively)
90 * @return bool
91 */
92 public static function isElementRegistered($type)
93 {
94 return isset(self::$elementTypes[\strtolower($type)]);
95 }
96 /**
97 * Creates a new element object of the given type
98 *
99 * @param string Type name (treated case-insensitively)
100 * @param mixed Element name (passed to element's constructor)
101 * @param mixed Element attributes (passed to element's constructor)
102 * @param array Element-specific data (passed to element's constructor)
103 * @return HTML_QuickForm2_Node A created element
104 * @throws HTML_QuickForm2_InvalidArgumentException If type name is unknown
105 * @throws HTML_QuickForm2_NotFoundException If class for the element can
106 * not be found and/or loaded from file
107 */
108 public static function createElement($type, $name = null, $attributes = null, array $data = array())
109 {
110 $type = \strtolower($type);
111 if (!isset(self::$elementTypes[$type])) {
112 throw new \HTML_QuickForm2_InvalidArgumentException("Element type '{$type}' is not known");
113 }
114 list($className, $includeFile) = self::$elementTypes[$type];
115 if (!\class_exists($className)) {
116 \HTML_QuickForm2_Loader::loadClass($className, $includeFile);
117 }
118 return new $className($name, $attributes, $data);
119 }
120 /**
121 * Registers a new rule type
122 *
123 * @param string Rule type name (treated case-insensitively)
124 * @param string Class name
125 * @param string File containing the class, leave empty if class already loaded
126 * @param mixed Configuration data for rules of the given type
127 */
128 public static function registerRule($type, $className, $includeFile = null, $config = null)
129 {
130 self::$registeredRules[\strtolower($type)] = array($className, $includeFile, $config);
131 }
132 /**
133 * Checks whether a rule type is known to Factory
134 *
135 * @param string Rule type name (treated case-insensitively)
136 * @return bool
137 */
138 public static function isRuleRegistered($type)
139 {
140 return isset(self::$registeredRules[\strtolower($type)]);
141 }
142 /**
143 * Creates a new Rule of the given type
144 *
145 * @param string Rule type name (treated case-insensitively)
146 * @param HTML_QuickForm2_Node Element to validate by the rule
147 * @param string Message to display if validation fails
148 * @param mixed Configuration data for the rule
149 * @return HTML_QuickForm2_Rule A created Rule
150 * @throws HTML_QuickForm2_InvalidArgumentException If rule type is unknown
151 * @throws HTML_QuickForm2_NotFoundException If class for the rule
152 * can't be found and/or loaded from file
153 */
154 public static function createRule($type, \HTML_QuickForm2_Node $owner, $message = '', $config = null)
155 {
156 $type = \strtolower($type);
157 if (!isset(self::$registeredRules[$type])) {
158 throw new \HTML_QuickForm2_InvalidArgumentException("Rule '{$type}' is not known");
159 }
160 list($className, $includeFile) = self::$registeredRules[$type];
161 if (!\class_exists($className)) {
162 \HTML_QuickForm2_Loader::loadClass($className, $includeFile);
163 }
164 if (isset(self::$registeredRules[$type][2])) {
165 $config = \call_user_func(array($className, 'mergeConfig'), $config, self::$registeredRules[$type][2]);
166 }
167 return new $className($owner, $message, $config);
168 }
169 }
170 }
171