PluginProbe ʕ •ᴥ•ʔ
Responsive Tabs For Elementor / trunk
Responsive Tabs For Elementor vtrunk
11.0.1 trunk 1.0.0 10.0.0 10.0.1 10.0.2 10.1.0 11.0.0 2.0.0 3.0.0 3.9.2 4.0.0 5.0.1 6.0.0 7.0.0 7.1.0 8.0.0 9.0.0 9.1.0 9.1.1 9.2.0 9.3.0 9.3.1 9.3.2
responsive-tabs-for-elementor / class-widgets.php
responsive-tabs-for-elementor Last commit date
assets 3 weeks ago includes 3 weeks ago widgets 3 weeks ago widgets-templates 3 weeks ago class-responsive-tabs-for-elementor.php 3 weeks ago class-widgets.php 3 weeks ago readme.txt 3 weeks ago responsive-tabs-for-elementor.php 3 weeks ago
class-widgets.php
197 lines
1 <?php
2 /**
3 * Widgets class.
4 *
5 * @category Class
6 * @package ResponsiveTabsForElementor
7 * @subpackage WordPress
8 * @author
9 * @copyright
10 * @license https://opensource.org/licenses/GPL-3.0 GPL-3.0-only
11 * @link
12 * @since 11.0.1
13 * php version 7.4.1
14 */
15
16 namespace ResponsiveTabsForElementor;
17
18 // Security Note: Blocks direct access to the plugin PHP files.
19 use Elementor\Plugin;
20
21 defined('ABSPATH') || die();
22
23 /**
24 * Class Plugin
25 *
26 * Main Plugin class
27 *
28 * @since 11.0.1
29 */
30 class Widgets
31 {
32 /**
33 * @var bool
34 */
35 private static $widgets_registered = false;
36
37 /**
38 * Instance
39 *
40 * @since 11.0.1
41 * @access private
42 * @static
43 *
44 * @var Plugin The single instance of the class.
45 */
46 private static $instance = null;
47
48 /**
49 * Instance
50 *
51 * Ensures only one instance of the class is loaded or can be loaded.
52 *
53 * @return Plugin An instance of the class.
54 * @since 11.0.1
55 * @access public
56 *
57 */
58 public static function instance()
59 {
60 if (is_null(self::$instance)) {
61 self::$instance = new self();
62 }
63
64 return self::$instance;
65 }
66
67 /**
68 * Include Widgets files
69 *
70 * Load widgets files
71 *
72 * @since 11.0.1
73 * @access private
74 */
75 private function include_widgets_files()
76 {
77 require_once 'widgets/class-responsive-tabs-with-icons.php';
78 require_once 'widgets/class-responsive-tabs-with-small-images.php';
79 require_once 'widgets/class-responsive-tabs-with-big-image.php';
80 require_once 'widgets/class-responsive-accordion.php';
81 require_once 'widgets/class-responsive-simple-tabs-with-icons.php';
82 require_once 'widgets/class-responsive-vertical-accordion.php';
83 require_once 'widgets/class-responsive-testimonials-tabs.php';
84 require_once 'widgets/class-responsive-accordion-with-counter.php';
85 require_once 'widgets/class-responsive-faq-accordion.php';
86 require_once 'widgets/class-responsive-parallax-tabs.php';
87 require_once 'widgets/hover-image-reveal-tabs/class-hover-image-reveal-tabs.php';
88 require_once 'widgets/class-responsive-portfolio-tabs.php';
89 }
90
91 /**
92 * Include Widgets Templates files
93 *
94 * Load widgets templates files
95 *
96 * @since 11.0.1
97 * @access private
98 */
99 private function include_widgets_templates_files()
100 {
101 require_once('widgets-templates/accordion-with-counter/default.php');
102 require_once('widgets-templates/accordion-with-counter/accordion-with-counter-and-image.php');
103 }
104
105 /**
106 * Include Widgets Templates controls
107 *
108 * Load widgets templates controls
109 *
110 * @since 11.0.1
111 * @access private
112 */
113 private function include_widgets_templates_controls()
114 {
115 require_once('widgets-templates/accordion-with-counter/control-elements/controls-accordion-with-counter.php');
116 require_once('widgets-templates/accordion-with-counter/control-elements/controls-template-accordion-with-counter-and-image.php');
117 require_once('widgets/hover-image-reveal-tabs/controls/hover-image-reveal-tabs-controls.php');
118 }
119
120 /**
121 * Register Widgets
122 *
123 * Register new Elementor widgets.
124 *
125 * @since 11.0.1
126 * @access public
127 */
128 public function register_widgets($widgets_manager = null)
129 {
130 if (self::$widgets_registered) {
131 return;
132 }
133
134 self::$widgets_registered = true;
135
136 // It's now safe to include Widgets files.
137 $this->include_widgets_files();
138
139 // It's now safe to include Widgets Templates.
140 $this->include_widgets_templates_files();
141
142 // It's now safe to include Widgets Controls.
143 $this->include_widgets_templates_controls();
144
145 if (null === $widgets_manager) {
146 $widgets_manager = Plugin::instance()->widgets_manager;
147 }
148
149 $this->register_widget($widgets_manager, new Widgets\Responsive_Tabs_With_Icons());
150 $this->register_widget($widgets_manager, new Widgets\Responsive_Tabs_With_Small_Images());
151 $this->register_widget($widgets_manager, new Widgets\Responsive_Tabs_With_Big_Image());
152 $this->register_widget($widgets_manager, new Widgets\Responsive_Accordion());
153 $this->register_widget($widgets_manager, new Widgets\Responsive_Simple_Tabs_With_Icons());
154 $this->register_widget($widgets_manager, new Widgets\Responsive_Vertical_Accordion());
155 $this->register_widget($widgets_manager, new Widgets\Responsive_Testimonials_Tabs());
156 $this->register_widget($widgets_manager, new Widgets\Responsive_Accordion_With_Counter());
157 $this->register_widget($widgets_manager, new Widgets\Responsive_FAQ_Accordion());
158 $this->register_widget($widgets_manager, new Widgets\Responsive_Parallax_Tabs());
159 $this->register_widget($widgets_manager, new Widgets\Responsive_Hover_Image_Reveal_Tabs());
160 $this->register_widget($widgets_manager, new Widgets\Responsive_Portfolio_Tabs());
161 }
162
163 /**
164 * Register a single widget with Elementor 3.5+ or legacy API.
165 *
166 * @param \Elementor\Widgets_Manager $widgets_manager Widgets manager instance.
167 * @param \Elementor\Widget_Base $widget Widget instance.
168 */
169 private function register_widget($widgets_manager, $widget)
170 {
171 if (method_exists($widgets_manager, 'register')) {
172 $widgets_manager->register($widget);
173 return;
174 }
175
176 $widgets_manager->register_widget_type($widget);
177 }
178
179
180 /**
181 * Plugin class constructor
182 *
183 * Register plugin action hooks and filters
184 *
185 * @since 11.0.1
186 * @access public
187 */
188 public function __construct()
189 {
190 // Elementor 3.5+ (plugin minimum is 3.10.0).
191 add_action('elementor/widgets/register', [$this, 'register_widgets']);
192 }
193 }
194
195 // Instantiate the Widgets class.
196 Widgets::instance();
197