| @@ -6,8 +6,13 @@ | ||
| 6 | 6 | */ |
| 7 | 7 | |
| 8 | 8 | namespace MainWP\Dashboard; |
| 9 | 9 | |
| 10 | +// Exit if accessed directly. | |
| 11 | +if ( ! defined( 'ABSPATH' ) ) { | |
| 12 | + exit; | |
| 13 | +} | |
| 14 | + | |
| 10 | 15 | /** |
| 11 | 16 | * Class MainWP_Manage_Sites_Filter_Segment |
| 12 | 17 | * |
| 13 | 18 | * @package MainWP\Dashboard |
| @@ -58,25 +63,15 @@ | ||
| 58 | 63 | /** |
| 59 | 64 | * Method render_filters_segment(). |
| 60 | 65 | */ |
| 61 | 66 | public function render_filters_segment() { |
| 62 | - $saved_segments = $this->set_get_manage_sites_filter_segments(); | |
| 67 | + $saved_segments = static::set_get_manage_sites_filter_segments(); | |
| 63 | 68 | ?> |
| 64 | - <div class="three wide middle aligned right aligned column"> | |
| 65 | - <div class="ui middle aligned compact grid"> | |
| 66 | - <div class="eight wide column"> | |
| 67 | - <button class="ui mini fluid button" id="mainwp-manage-sites-filter-save-segment-button" selected-segment-id="" selected-segment-name=""><?php esc_html_e( 'Save Segment', 'mainwp' ); ?></button> | |
| 68 | - </div> | |
| 69 | - <div class="eight wide column"> | |
| 70 | - <?php if ( ! empty( $saved_segments ) ) : ?> | |
| 71 | - <button class="ui mini fluid button mainwp_manage_sites_filter_choose_segment"><?php esc_html_e( 'Load a Segment', 'mainwp' ); ?></button> | |
| 72 | - <?php else : ?> | |
| 73 | - <button class="ui mini fluid disabled button"><?php esc_html_e( 'Load a Segment', 'mainwp' ); ?></button> | |
| 74 | - <?php endif; ?> | |
| 75 | - </div> | |
| 76 | - </div> | |
| 77 | - | |
| 78 | - </div> | |
| 69 | + <div class="four wide right aligned column"> | |
| 70 | + <a class="ui mini button" id="mainwp-manage-sites-filter-save-segment-button" selected-segment-id="" selected-segment-name=""><?php esc_html_e( 'Save Segment', 'mainwp' ); ?></a> | |
| 71 | + <?php if ( ! empty( $saved_segments ) ) : ?> | |
| 72 | + <a class="ui mini button mainwp_manage_sites_filter_choose_segment"><?php esc_html_e( 'Load Segment', 'mainwp' ); ?></a> | |
| 73 | + <?php endif; ?> | |
| 79 | 74 | </div> |
| 80 | 75 | |
| 81 | 76 | <script type="text/javascript"> |
| 82 | 77 | jQuery( document ).ready( function( $ ) { |
| @@ -119,8 +114,9 @@ | ||
| 119 | 114 | action: 'mainwp_manage_sites_filter_save_segment', |
| 120 | 115 | name: seg_name, |
| 121 | 116 | seg_is_not: $( '#mainwp-sites-filters-row #mainwp_is_not_site').dropdown('get value'), |
| 122 | 117 | seg_site_tags: $( '#mainwp-sites-filters-row #mainwp-filter-sites-group').dropdown('get value'), |
| 118 | + seg_site_tags_logic: $( '#mainwp-sites-filters-row #mainwp-filter-sites-group-logic').dropdown('get value'), | |
| 123 | 119 | seg_site_status: $( '#mainwp-sites-filters-row #mainwp-filter-sites-status').dropdown('get value'), |
| 124 | 120 | seg_site_clients: $( '#mainwp-sites-filters-row #mainwp-filter-clients').dropdown('get value'), |
| 125 | 121 | seg_id:$('#mainwp-manage-sites-filter-save-segment-button').attr('selected-segment-id'), |
| 126 | 122 | }); |
| @@ -136,9 +132,9 @@ | ||
| 136 | 132 | jQuery('#mainwp-common-filter-edit-segment-status').fadeOut(300); |
| 137 | 133 | jQuery( '#mainwp-common-filter-segment-modal' ).modal('hide'); |
| 138 | 134 | }, 2000); |
| 139 | 135 | } else { |
| 140 | - jQuery('#mainwp-common-filter-edit-segment-status').html(__('Undefined error occured while saving your segment!')).addClass('red'); | |
| 136 | + jQuery('#mainwp-common-filter-edit-segment-status').html(__('Undefined error occurred while saving your segment!')).addClass('red'); | |
| 141 | 137 | } |
| 142 | 138 | }, 'json'); |
| 143 | 139 | return false; |
| 144 | 140 | }); |
| @@ -154,8 +150,9 @@ | ||
| 154 | 150 | let arrVal = ''; |
| 155 | 151 | let fieldsAllows = [ |
| 156 | 152 | 'seg_is_not', |
| 157 | 153 | 'seg_site_tags', |
| 154 | + 'seg_site_tags_logic', | |
| 158 | 155 | 'seg_site_status', |
| 159 | 156 | 'seg_site_clients', |
| 160 | 157 | ]; |
| 161 | 158 | if('' != seg_values ) { |
| @@ -167,15 +164,13 @@ | ||
| 167 | 164 | |
| 168 | 165 | for (const [key, value] of Object.entries(seg_values)) { |
| 169 | 166 | try { |
| 170 | 167 | if(fieldsAllows.includes(key)){ |
| 171 | - console.log(key + ' === '+ value); | |
| 172 | 168 | jQuery( '#mainwp-sites-filters-row .ui.dropdown.' + key ).dropdown('clear'); |
| 173 | 169 | arrVal = value.split(","); |
| 174 | 170 | jQuery( '#mainwp-sites-filters-row .ui.dropdown.' + key ).dropdown('set selected', arrVal); |
| 175 | 171 | } |
| 176 | 172 | } catch (err) { |
| 177 | - console.log(key + ' === '+ value); | |
| 178 | 173 | console.log(err); |
| 179 | 174 | } |
| 180 | 175 | } |
| 181 | 176 | jQuery( '#mainwp-common-filter-segment-modal' ).modal('hide'); |
| @@ -226,9 +221,9 @@ | ||
| 226 | 221 | jQuery('#mainwp-common-filter-edit-segment-status').fadeOut(300); |
| 227 | 222 | jQuery( '#mainwp-common-filter-segment-modal' ).modal('hide'); |
| 228 | 223 | }, 2000); |
| 229 | 224 | } else { |
| 230 | - jQuery('#mainwp-common-filter-edit-segment-status').html(__('Undefined error occured while deleting your segment!')).addClass('red'); | |
| 225 | + jQuery('#mainwp-common-filter-edit-segment-status').html(__('Undefined error occurred while deleting your segment!')).addClass('red'); | |
| 231 | 226 | } |
| 232 | 227 | }, 'json'); |
| 233 | 228 | |
| 234 | 229 | return false; |
| @@ -241,20 +236,24 @@ | ||
| 241 | 236 | |
| 242 | 237 | /** |
| 243 | 238 | * Method set_get_manage_sites_filter_segments() |
| 244 | 239 | * |
| 245 | - * @param bool $set_val Get or set value. | |
| 246 | - * @param array $saved_segments segments data. | |
| 240 | + * @param bool $set_val Get or set value. | |
| 241 | + * @param array $saved_segments segments data. | |
| 242 | + * @param string $save_field segments data. | |
| 247 | 243 | * |
| 248 | 244 | * @return array values |
| 249 | 245 | */ |
| 250 | - public function set_get_manage_sites_filter_segments( $set_val = false, $saved_segments = array() ) { | |
| 246 | + public static function set_get_manage_sites_filter_segments( $set_val = false, $saved_segments = array(), $save_field = 'manage_sites' ) { | |
| 251 | 247 | global $current_user; |
| 248 | + | |
| 249 | + $field = 'mainwp_' . sanitize_text_field( $save_field ) . '_filter_saved_segments'; | |
| 250 | + | |
| 252 | 251 | if ( $current_user && ! empty( $current_user->ID ) ) { |
| 253 | 252 | if ( $set_val ) { |
| 254 | - update_user_option( $current_user->ID, 'mainwp_manage_sites_filter_saved_segments', $saved_segments ); | |
| 253 | + update_user_option( $current_user->ID, $field, $saved_segments ); | |
| 255 | 254 | } else { |
| 256 | - $values = get_user_option( 'mainwp_manage_sites_filter_saved_segments', array() ); | |
| 255 | + $values = get_user_option( $field ); // fix incorrect param. | |
| 257 | 256 | if ( ! is_array( $values ) ) { |
| 258 | 257 | $values = array(); |
| 259 | 258 | } |
| 260 | 259 | return $values; |
| @@ -274,8 +273,9 @@ | ||
| 274 | 273 | //phpcs:disable WordPress.Security.NonceVerification.Missing |
| 275 | 274 | |
| 276 | 275 | $not_filters = array( |
| 277 | 276 | 'seg_site_tags' => 'nogroups', |
| 277 | + 'seg_site_tags_logic' => 'or', | |
| 278 | 278 | 'seg_site_status' => 'all', |
| 279 | 279 | 'seg_site_clients' => 'noclients', |
| 280 | 280 | ); |
| 281 | 281 | |
| @@ -282,8 +282,9 @@ | ||
| 282 | 282 | $fields = array( |
| 283 | 283 | 'name', |
| 284 | 284 | 'seg_is_not', |
| 285 | 285 | 'seg_site_tags', |
| 286 | + 'seg_site_tags_logic', | |
| 286 | 287 | 'seg_site_status', |
| 287 | 288 | 'seg_site_clients', |
| 288 | 289 | ); |
| 289 | 290 | |
| @@ -301,14 +302,14 @@ | ||
| 301 | 302 | |
| 302 | 303 | $seg_id = ! empty( $_POST['seg_id'] ) ? sanitize_text_field( wp_unslash( $_POST['seg_id'] ) ) : time(); |
| 303 | 304 | //phpcs:enable WordPress.Security.NonceVerification.Missing |
| 304 | 305 | |
| 305 | - $saved_segments = $this->set_get_manage_sites_filter_segments(); | |
| 306 | + $saved_segments = static::set_get_manage_sites_filter_segments(); | |
| 306 | 307 | if ( ! is_array( $saved_segments ) ) { |
| 307 | 308 | $saved_segments = array(); |
| 308 | 309 | } |
| 309 | 310 | $saved_segments[ $seg_id ] = $save_fields; |
| 310 | - $this->set_get_manage_sites_filter_segments( true, $saved_segments ); | |
| 311 | + static::set_get_manage_sites_filter_segments( true, $saved_segments ); | |
| 311 | 312 | die( wp_json_encode( array( 'result' => 'SUCCESS' ) ) ); |
| 312 | 313 | } |
| 313 | 314 | |
| 314 | 315 | |
| @@ -318,12 +319,12 @@ | ||
| 318 | 319 | * Post handler for save segment. |
| 319 | 320 | */ |
| 320 | 321 | public function ajax_sites_filter_load_segments() { |
| 321 | 322 | MainWP_Post_Handler::instance()->check_security( 'mainwp_manage_sites_filter_load_segments' ); |
| 322 | - $saved_segments = $this->set_get_manage_sites_filter_segments(); | |
| 323 | + $saved_segments = static::set_get_manage_sites_filter_segments(); | |
| 323 | 324 | $list_segs = ''; |
| 324 | 325 | if ( is_array( $saved_segments ) && ! empty( $saved_segments ) ) { |
| 325 | - $list_segs .= '<select id="mainwp_manage_sites_edit_payment_type" class="ui fluid dropdown">'; | |
| 326 | + $list_segs .= '<select id="mainwp-edit-segment-filters" class="ui fluid dropdown">'; | |
| 326 | 327 | $list_segs .= '<option segment-filters="" value="">' . esc_html__( 'Select a segment', 'mainwp' ) . '</option>'; |
| 327 | 328 | foreach ( $saved_segments as $sid => $values ) { |
| 328 | 329 | if ( empty( $values['name'] ) ) { |
| 329 | 330 | continue; |
| @@ -343,12 +344,12 @@ | ||
| 343 | 344 | public function ajax_sites_filter_delete_segment() { |
| 344 | 345 | MainWP_Post_Handler::instance()->check_security( 'mainwp_manage_sites_filter_delete_segment' ); |
| 345 | 346 | $seg_id = ! empty( $_POST['seg_id'] ) ? sanitize_text_field( wp_unslash( $_POST['seg_id'] ) ) : 0; //phpcs:ignore -- ok. |
| 346 | 347 | |
| 347 | - $saved_segments = $this->set_get_manage_sites_filter_segments(); | |
| 348 | + $saved_segments = static::set_get_manage_sites_filter_segments(); | |
| 348 | 349 | if ( ! empty( $seg_id ) && is_array( $saved_segments ) && isset( $saved_segments[ $seg_id ] ) ) { |
| 349 | 350 | unset( $saved_segments[ $seg_id ] ); |
| 350 | - $this->set_get_manage_sites_filter_segments( true, $saved_segments ); | |
| 351 | + static::set_get_manage_sites_filter_segments( true, $saved_segments ); | |
| 351 | 352 | die( wp_json_encode( array( 'result' =>'SUCCESS' ) ) ); //phpcs:ignore -- ok. |
| 352 | 353 | } |
| 353 | 354 | die( wp_json_encode( array( 'error' => esc_html__( 'Segment not found. Please try again.', 'mainwp' ) ) ) ); //phpcs:ignore -- ok. |
| 354 | 355 | } |