resources
10 months ago
DonationHistoryWidget.php
10 months ago
DonationReceiptWidget.php
10 months ago
GiveDonorWallWidget.php
10 months ago
GiveFormGridWidget.php
9 months ago
GiveFormWidget.php
10 months ago
GiveGoalWidget.php
10 months ago
GiveLoginWidget.php
10 months ago
GiveMultiFormGoalWidget.php
10 months ago
GiveProfileEditorWidget.php
10 months ago
GiveRegisterWidget.php
10 months ago
GiveSubscriptionsWidget.php
10 months ago
GiveTotalsWidget.php
10 months ago
GiveSubscriptionsWidget.php
309 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Give\ThirdPartySupport\Elementor\Widgets\V1; |
| 4 | |
| 5 | use Elementor\Widget_Base; |
| 6 | |
| 7 | /** |
| 8 | * Elementor GiveWP Subscriptions Widget. |
| 9 | * |
| 10 | * Elementor widget that inserts the GiveWP [give_subscriptions] shortcode to output a donor's full donation history table. |
| 11 | * |
| 12 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 13 | */ |
| 14 | |
| 15 | class GiveSubscriptionsWidget extends Widget_Base |
| 16 | { |
| 17 | /** |
| 18 | * Get widget name. |
| 19 | * |
| 20 | * Retrieve GiveWP Subscriptions widget name. |
| 21 | * |
| 22 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 23 | * @access public |
| 24 | * |
| 25 | * @return string Widget name. |
| 26 | */ |
| 27 | public function get_name() |
| 28 | { |
| 29 | return 'GiveWP Subscriptions'; |
| 30 | } |
| 31 | |
| 32 | /** |
| 33 | * Get widget title. |
| 34 | * |
| 35 | * Retrieve GiveWP Subscriptions widget title. |
| 36 | * |
| 37 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 38 | * @access public |
| 39 | * |
| 40 | * @return string Widget title. |
| 41 | */ |
| 42 | public function get_title() |
| 43 | { |
| 44 | return __('Give Subscriptions (Legacy)', 'give'); |
| 45 | } |
| 46 | |
| 47 | /** |
| 48 | * Get widget icon. |
| 49 | * |
| 50 | * Retrieve GiveWP Subscriptions widget icon. |
| 51 | * |
| 52 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 53 | * @access public |
| 54 | * |
| 55 | * @return string Widget icon. |
| 56 | */ |
| 57 | public function get_icon() |
| 58 | { |
| 59 | return 'give-icon'; |
| 60 | } |
| 61 | |
| 62 | /** |
| 63 | * Get widget categories. |
| 64 | * |
| 65 | * Retrieve the list of categories the GiveWP Subscriptions widget belongs to. |
| 66 | * |
| 67 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 68 | * @access public |
| 69 | * |
| 70 | * @return array Widget categories. |
| 71 | */ |
| 72 | public function get_categories() |
| 73 | { |
| 74 | return ['givewp-category-legacy']; |
| 75 | } |
| 76 | |
| 77 | /** |
| 78 | * Widget inner wrapper. |
| 79 | * |
| 80 | * Use optimized DOM structure, without the inner wrapper. |
| 81 | * |
| 82 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 83 | * @access public |
| 84 | */ |
| 85 | public function has_widget_inner_wrapper(): bool |
| 86 | { |
| 87 | return false; |
| 88 | } |
| 89 | |
| 90 | /** |
| 91 | * Register GiveWP Subscriptions widget controls. |
| 92 | * |
| 93 | * Adds different input fields to allow the user to change and customize the widget settings. |
| 94 | * |
| 95 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 96 | * @access protected |
| 97 | */ |
| 98 | protected function register_controls() |
| 99 | { |
| 100 | $this->start_controls_section( |
| 101 | 'give_subscriptions_settings', |
| 102 | [ |
| 103 | 'label' => __('GiveWP Subscriptions Widget', 'give'), |
| 104 | 'tab' => \Elementor\Controls_Manager::TAB_CONTENT, |
| 105 | ] |
| 106 | ); |
| 107 | |
| 108 | $this->add_control( |
| 109 | 'show_status', |
| 110 | [ |
| 111 | 'label' => __('Status', 'give'), |
| 112 | 'type' => \Elementor\Controls_Manager::SWITCHER, |
| 113 | 'description' => __('Show or hide the subscription status column.', 'give'), |
| 114 | 'label_on' => __('Show', 'give'), |
| 115 | 'label_off' => __('Hide', 'give'), |
| 116 | 'default' => 'yes' |
| 117 | ] |
| 118 | ); |
| 119 | |
| 120 | $this->add_control( |
| 121 | 'show_renewal_date', |
| 122 | [ |
| 123 | 'label' => __('Renewal Date', 'give'), |
| 124 | 'type' => \Elementor\Controls_Manager::SWITCHER, |
| 125 | 'description' => __('Show or hide a column with the subscription renewal date.', 'give'), |
| 126 | 'label_on' => __('Show', 'give'), |
| 127 | 'label_off' => __('Hide', 'give'), |
| 128 | 'default' => 'yes' |
| 129 | ] |
| 130 | ); |
| 131 | |
| 132 | $this->add_control( |
| 133 | 'show_progress', |
| 134 | [ |
| 135 | 'label' => __('Progress', 'give'), |
| 136 | 'type' => \Elementor\Controls_Manager::SWITCHER, |
| 137 | 'description' => __('Show or hide a column with progress of the subscription.', 'give'), |
| 138 | 'label_on' => __('Show', 'give'), |
| 139 | 'label_off' => __('Hide', 'give'), |
| 140 | 'default' => 'no' |
| 141 | ] |
| 142 | ); |
| 143 | |
| 144 | $this->add_control( |
| 145 | 'show_start_date', |
| 146 | [ |
| 147 | 'label' => __('Start Date', 'give'), |
| 148 | 'type' => \Elementor\Controls_Manager::SWITCHER, |
| 149 | 'description' => __('Show or hide a column with the subscription start date.', 'give'), |
| 150 | 'label_on' => __('Show', 'give'), |
| 151 | 'label_off' => __('Hide', 'give'), |
| 152 | 'default' => 'no' |
| 153 | ] |
| 154 | ); |
| 155 | |
| 156 | $this->add_control( |
| 157 | 'show_end_date', |
| 158 | [ |
| 159 | 'label' => __('End Date', 'give'), |
| 160 | 'type' => \Elementor\Controls_Manager::SWITCHER, |
| 161 | 'description' => __('Show or hide a column with the subscription end date.', 'give'), |
| 162 | 'label_on' => __('Show', 'give'), |
| 163 | 'label_off' => __('Hide', 'give'), |
| 164 | 'default' => 'no' |
| 165 | ] |
| 166 | ); |
| 167 | |
| 168 | $this->add_control( |
| 169 | 'subscriptions_per_page', |
| 170 | [ |
| 171 | 'label' => __('Subscriptions per Page', 'give'), |
| 172 | 'type' => \Elementor\Controls_Manager::TEXT, |
| 173 | 'description' => __('The number of subscriptions to show before pagination appears.', 'give'), |
| 174 | 'input_type' => 'number', |
| 175 | 'default' => '30' |
| 176 | ] |
| 177 | ); |
| 178 | |
| 179 | $this->add_control( |
| 180 | 'give_subscriptions_info', |
| 181 | [ |
| 182 | 'label' => '', |
| 183 | 'type' => \Elementor\Controls_Manager::RAW_HTML, |
| 184 | 'content_classes' => 'give-info', |
| 185 | 'raw' => ' |
| 186 | <div class="give"> |
| 187 | <p class="info-head"> |
| 188 | ' . __('GIVEWP SUBSCRIPTION HISTORY WIDGET', 'give') . '</p> |
| 189 | <p class="info-message">' . __('This is the GiveWP Subscriptions widget. Choose which columns you want to have appear for your donors subscription history.', 'give') . '</p> |
| 190 | <p class="give-docs-links"> |
| 191 | <a href="https://givewp.com/documentation/add-ons/recurring-donations/managing-subscriptions/?utm_source=plugin_settings&utm_medium=referral&utm_campaign=Free_Addons&utm_content=givelementor" rel="noopener noreferrer" target="_blank"><i class="fa fa-book" aria-hidden="true"></i>' . __('Visit the GiveWP Docs for more info on the GiveWP Subscriptions table.', 'give') . '</a> |
| 192 | </p> |
| 193 | </div>' |
| 194 | ] |
| 195 | ); |
| 196 | |
| 197 | $this->end_controls_section(); |
| 198 | } |
| 199 | |
| 200 | /** |
| 201 | * Render the [give_subscriptions] output on the frontend. |
| 202 | * |
| 203 | * Written in PHP and used to generate the final HTML. |
| 204 | * |
| 205 | * @since 4.7.0 migrated from givewp-elementor-widgets |
| 206 | * @access protected |
| 207 | */ |
| 208 | protected function render() |
| 209 | { |
| 210 | $settings = $this->get_settings_for_display(); |
| 211 | |
| 212 | $showStatus = ('yes' === $settings['show_status'] ? '' : 'show_status="false"'); |
| 213 | $showRenewalDate = ('yes' === $settings['show_renewal_date'] ? 'show_renewal_date="true"' : ''); |
| 214 | $showProgress = ('yes' === $settings['show_progress'] ? '' : 'show_progress="false"'); |
| 215 | $showStartDate = ('yes' === $settings['show_start_date'] ? '' : 'show_start_date="false"'); |
| 216 | $showEndDate = ('yes' === $settings['show_end_date'] ? 'show_end_date="true"' : ''); |
| 217 | $subscriptionsPerPage = ('yes' === $settings['subscriptions_per_page'] ? 'subscriptions_per_page="true"' : ''); |
| 218 | |
| 219 | if (!\Elementor\Plugin::$instance->editor->is_edit_mode()) { |
| 220 | $html = do_shortcode( |
| 221 | ' |
| 222 | [give_subscriptions ' |
| 223 | . $showStatus . ' ' |
| 224 | . $showRenewalDate . ' ' |
| 225 | . $showProgress . ' ' |
| 226 | . $showStartDate . ' ' |
| 227 | . $showEndDate . ' ' |
| 228 | . $subscriptionsPerPage . |
| 229 | ']' |
| 230 | ); |
| 231 | } else { |
| 232 | ob_start(); ?> |
| 233 | <table id="give_user_history" class="give-table"> |
| 234 | <thead> |
| 235 | <tr class="give_purchase_row"> |
| 236 | <th><?php _e('Subscription', 'give'); ?></th> |
| 237 | <?php if ('yes' === $settings['show_status']) : ?> |
| 238 | <th><?php _e('Status', 'give'); ?></th> |
| 239 | <?php endif; ?> |
| 240 | <?php if ('yes' === $settings['show_renewal_date']) : ?> |
| 241 | <th><?php _e('Renewal Date', 'give'); ?></th> |
| 242 | <?php endif; ?> |
| 243 | <?php if ('yes' === $settings['show_progress']) : ?> |
| 244 | <th><?php _e('Progress', 'give'); ?></th> |
| 245 | <?php endif; ?> |
| 246 | <?php if ('yes' === $settings['show_start_date']) : ?> |
| 247 | <th><?php _e('Start Date', 'give'); ?></th> |
| 248 | <?php endif; ?> |
| 249 | <?php if ('yes' === $settings['show_end_date']) : ?> |
| 250 | <th><?php _e('End Date', 'give'); ?></th> |
| 251 | <?php endif; ?> |
| 252 | <th><?php _e('Actions', 'give'); ?></th> |
| 253 | </tr> |
| 254 | </thead> |
| 255 | <tbody> |
| 256 | <tr> |
| 257 | <td> |
| 258 | <span class="give-subscription-name"><?php _e('Form with a Goal', 'give'); ?></span><br> |
| 259 | <span class="give-subscription-billing-cycle"> |
| 260 | $25.00 / <?php _e('Monthly', 'give'); ?> </span> |
| 261 | </td> |
| 262 | <?php if ('yes' === $settings['show_status']) : ?> |
| 263 | <td> |
| 264 | <span class="give-subscription-status"><span class="give-donation-status status-active"><span class="give-donation-status-icon"></span> <?php _e('Active', 'give'); ?></span></span> |
| 265 | </td> |
| 266 | <?php endif; ?> |
| 267 | <?php if ('yes' === $settings['show_renewal_date']) : ?> |
| 268 | <td> |
| 269 | <span class="give-subscription-renewal-date"> |
| 270 | <?php _e('Auto renew on June 4, 2020', 'give'); ?> </span> |
| 271 | </td> |
| 272 | <?php endif; ?> |
| 273 | <?php if ('yes' === $settings['show_progress']) : ?> |
| 274 | <td> |
| 275 | <span class="give-subscription-times-billed">1 / <?php _e('Ongoing', 'give'); ?></span> |
| 276 | </td> |
| 277 | <?php endif; ?> |
| 278 | <?php if ('yes' === $settings['show_start_date']) : ?> |
| 279 | <td> |
| 280 | <?php _e('May 4, 2020', 'give'); ?> |
| 281 | </td> |
| 282 | <?php endif; ?> |
| 283 | <?php if ('yes' === $settings['show_end_date']) : ?> |
| 284 | <td> |
| 285 | <?php _e('Ongoing', 'give'); ?> |
| 286 | </td> |
| 287 | <?php endif; ?> |
| 288 | <td> |
| 289 | <a href="#"><?php _e('View Receipt', 'give'); ?></a> |
| 290 | | |
| 291 | <a href="#" class="give-cancel-subscription"><?php _e('Cancel', 'give'); ?></a> |
| 292 | </td> |
| 293 | </tr> |
| 294 | </tbody> |
| 295 | </table> |
| 296 | |
| 297 | <?php |
| 298 | ob_get_contents(); |
| 299 | $html = ob_get_clean(); |
| 300 | } |
| 301 | |
| 302 | echo '<div class="givewp-elementor-widget donation-history">'; |
| 303 | |
| 304 | echo $html; |
| 305 | |
| 306 | echo '</div>'; |
| 307 | } |
| 308 | } |
| 309 |