delete_zone() public static method

Delete a zone using it's ID
Since: 2.6.0
public static delete_zone ( integer $zone_id )
$zone_id integer
Exemplo n.º 1
0
 /**
  * Test: WC_Shipping_Zones::delete_zone
  */
 public function test_delete_zone()
 {
     // Setup
     WC_Helper_Shipping_Zones::create_mock_zones();
     // Test
     WC_Shipping_Zones::delete_zone(1);
     $zones = WC_Shipping_Zones::get_zones();
     // Assert
     $this->assertTrue(3 === sizeof($zones));
     // Clean
     WC_Helper_Shipping_Zones::remove_mock_zones();
 }
Exemplo n.º 2
0
 /**
  * Handle submissions from assets/js/wc-shipping-zones.js Backbone model.
  */
 public static function shipping_zones_save_changes()
 {
     if (!isset($_POST['wc_shipping_zones_nonce'], $_POST['changes'])) {
         wp_send_json_error('missing_fields');
         exit;
     }
     if (!wp_verify_nonce($_POST['wc_shipping_zones_nonce'], 'wc_shipping_zones_nonce')) {
         wp_send_json_error('bad_nonce');
         exit;
     }
     // Check User Caps
     if (!current_user_can('manage_woocommerce')) {
         wp_send_json_error('missing_capabilities');
         exit;
     }
     $changes = $_POST['changes'];
     foreach ($changes as $zone_id => $data) {
         if (isset($data['deleted'])) {
             if (isset($data['newRow'])) {
                 // So the user added and deleted a new row.
                 // That's fine, it's not in the database anyways. NEXT!
                 continue;
             }
             WC_Shipping_Zones::delete_zone($zone_id);
             continue;
         }
         $zone_data = array_intersect_key($data, array('zone_id' => 1, 'zone_name' => 1, 'zone_order' => 1, 'zone_locations' => 1, 'zone_postcodes' => 1));
         if (isset($zone_data['zone_id'])) {
             $zone = new WC_Shipping_Zone($zone_data['zone_id']);
             if (isset($zone_data['zone_name'])) {
                 $zone->set_zone_name($zone_data['zone_name']);
             }
             if (isset($zone_data['zone_order'])) {
                 $zone->set_zone_order($zone_data['zone_order']);
             }
             if (isset($zone_data['zone_locations'])) {
                 $zone->clear_locations(array('state', 'country', 'continent'));
                 $locations = array_filter(array_map('wc_clean', (array) $zone_data['zone_locations']));
                 foreach ($locations as $location) {
                     // Each posted location will be in the format type:code
                     $location_parts = explode(':', $location);
                     switch ($location_parts[0]) {
                         case 'state':
                             $zone->add_location($location_parts[1] . ':' . $location_parts[2], 'state');
                             break;
                         case 'country':
                             $zone->add_location($location_parts[1], 'country');
                             break;
                         case 'continent':
                             $zone->add_location($location_parts[1], 'continent');
                             break;
                     }
                 }
             }
             if (isset($zone_data['zone_postcodes'])) {
                 $zone->clear_locations('postcode');
                 $postcodes = array_filter(array_map('strtoupper', array_map('wc_clean', explode("\n", $zone_data['zone_postcodes']))));
                 foreach ($postcodes as $postcode) {
                     $zone->add_location($postcode, 'postcode');
                 }
             }
             $zone->save();
         }
     }
     wp_send_json_success(array('zones' => WC_Shipping_Zones::get_zones()));
 }
Exemplo n.º 3
0
 /**
  * Handle submissions from assets/js/wc-shipping-zones.js Backbone model.
  */
 public static function shipping_zones_save_changes()
 {
     if (!isset($_POST['wc_shipping_zones_nonce'], $_POST['changes'])) {
         wp_send_json_error('missing_fields');
         exit;
     }
     if (!wp_verify_nonce($_POST['wc_shipping_zones_nonce'], 'wc_shipping_zones_nonce')) {
         wp_send_json_error('bad_nonce');
         exit;
     }
     // Check User Caps
     if (!current_user_can('manage_woocommerce')) {
         wp_send_json_error('missing_capabilities');
         exit;
     }
     $changes = $_POST['changes'];
     foreach ($changes as $zone_id => $data) {
         if (isset($data['deleted'])) {
             if (isset($data['newRow'])) {
                 // So the user added and deleted a new row.
                 // That's fine, it's not in the database anyways. NEXT!
                 continue;
             }
             WC_Shipping_Zones::delete_zone($zone_id);
             continue;
         }
         $zone_data = array_intersect_key($data, array('zone_id' => 1, 'zone_order' => 1));
         if (isset($zone_data['zone_id'])) {
             $zone = new WC_Shipping_Zone($zone_data['zone_id']);
             if (isset($zone_data['zone_order'])) {
                 $zone->set_zone_order($zone_data['zone_order']);
             }
             $zone->save();
         }
     }
     wp_send_json_success(array('zones' => WC_Shipping_Zones::get_zones()));
 }