PluginProbe ʕ •ᴥ•ʔ
WPFront Scroll Top / 1.3
WPFront Scroll Top v1.3
1.5 1.6 1.6.1 1.6.2 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1 2.1.1 2.2 3.0.0 3.0.1 trunk 1.0 1.0.1 1.1 1.1.1 1.2 1.3 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5
wpfront-scroll-top / classes / base / class-wpfront-options-base.php
wpfront-scroll-top / classes / base Last commit date
images 12 years ago class-wpfront-base-menu.php 12 years ago class-wpfront-base.php 12 years ago class-wpfront-options-base.php 12 years ago class-wpfront-static.php 12 years ago
class-wpfront-options-base.php
156 lines
1 <?php
2
3 /*
4 WPFront Plugins Options Base
5 Copyright (C) 2013, WPFront.com
6 Website: wpfront.com
7 Contact: syam@wpfront.com
8
9 WPFront Plugins are distributed under the GNU General Public License, Version 3,
10 June 2007. Copyright (C) 2007 Free Software Foundation, Inc., 51 Franklin
11 St, Fifth Floor, Boston, MA 02110, USA
12
13 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
14 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
17 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 */
24
25 if (!class_exists('WPFront_Options_Base')) {
26
27 /**
28 * Options framework base class
29 *
30 * @author Syam Mohan <syam@wpfront.com>
31 * @copyright 2013 WPFront.com
32 */
33 class WPFront_Options_Base {
34
35 //variables to hold options data
36 public $__data = array();
37 public $__optionName;
38 public $__localizeSlug;
39 public $__options;
40 private $lastOptionName;
41 private $optionNames;
42
43 function __construct($optionName, $localizeSlug) {
44 $this->__optionName = $optionName;
45 $this->__localizeSlug = $localizeSlug;
46
47 $this->__options = get_option($this->__optionName);
48
49 if (!is_array($this->__options)) {
50 $this->__options = array();
51 }
52
53 $this->optionNames = array();
54 }
55
56 //defines option with data
57 protected function addOption($name, $type, $default, $validate = NULL) {
58 if (isset($this->__data[$name])) {
59 echo 'Duplicate option ' . $name;
60 return $this;
61 }
62 $this->__data[$name]['name'] = $name;
63 $this->__data[$name]['type'] = $type;
64 $this->__data[$name]['default'] = $default;
65 $this->__data[$name]['validate'] = isset($validate) ? $validate : array(&$this, 'validate_default');
66
67 //dynamic function returning option value
68 $this->__data[$name]['func'] = create_function('$self, $data', '
69 $value = NULL;
70 if(array_key_exists($data["name"], $self->__options))
71 $value = $self->__options[$data["name"]];
72 return $self->get_value($data["type"], $value, $data["default"], $data["validate"]);
73 ');
74
75 $this->__data[$name . '_name'] = $this->__data[$name];
76 //dynamic function returning option name for settings page
77 $this->__data[$name . '_name']['func'] = create_function('$self, $data', '
78 return $self->__optionName . "[" . $data["name"] . "]";
79 ');
80
81 $this->__data[$name . '_label'] = $this->__data[$name];
82
83 //dynamic function returning option label for settings page
84 $this->__data[$name . '_label']['func'] = create_function('$self, $data', '
85 return __($data["label"], $self->__localizeSlug);
86 ');
87
88 $this->lastOptionName = $name;
89 array_push($this->optionNames, $name);
90
91 return $this;
92 }
93
94 //default validation function
95 private function validate_default($arg) {
96 return $arg;
97 }
98
99 //validates a zero or positive number
100 protected function validate_zero_positive($arg) {
101 if ($arg < 0) {
102 return 0;
103 }
104
105 return $arg;
106 }
107
108 //sets the label of the option, for POEDIT compatibility
109 protected function __($label) {
110 $this->__data[$this->lastOptionName . '_label']['label'] = $label;
111 }
112
113 //returns the value of option
114 public function get_value($type, $value, $default, $validate) {
115 if (!isset($value)) {
116 return $default;
117 }
118
119 switch ($type) {
120 case 'bool':
121 return (bool) $value;
122 case 'int':
123 return call_user_func($validate, intval($value));
124 case 'float':
125 return call_user_func($validate, floatval($value));
126 case 'string':
127 return call_user_func($validate, strval($value));
128 }
129 return $value;
130 }
131
132 //returns optons array
133 public function get_options() {
134 $options = array();
135 foreach ($this->optionNames as $val) {
136 $options[$val] = $this->$val();
137 }
138 return $options;
139 }
140
141 //PHP magic function to call dynamic methods
142 public function __call($name, array $args) {
143 if (!array_key_exists($name, $this->__data)) {
144 echo '"' . $name . '" option not yet added';
145 return;
146 }
147
148 array_unshift($args, $this->__data[$name]);
149 array_unshift($args, $this);
150 return call_user_func_array($this->__data[$name]['func'], $args);
151 }
152
153 }
154
155 }
156