PluginProbe ʕ •ᴥ•ʔ
Responsive Tabs For Elementor / 11.0.1
Responsive Tabs For Elementor v11.0.1
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 2 weeks ago includes 2 weeks ago widgets 2 weeks ago widgets-templates 2 weeks ago class-responsive-tabs-for-elementor.php 2 weeks ago class-widgets.php 2 weeks ago readme.txt 2 weeks ago responsive-tabs-for-elementor.php 2 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