/** * bulk update groups * */ public function update_groups() { // check nonce if (!isset($_POST['advads-group-update-nonce']) || !wp_verify_nonce($_POST['advads-group-update-nonce'], 'update-advads-groups')) { return new WP_Error('invalid_ad_group', __('Invalid Ad Group', 'advanced-ads')); } // check user rights if (!current_user_can('manage_options')) { return new WP_Error('invalid_ad_group_rights', __('You don’t have permission to change the ad groups', 'advanced-ads')); } // iterate through groups if (isset($_POST['advads-groups']) && count($_POST['advads-groups'])) { // empty group settings update_option('advads-ad-groups', array()); foreach ($_POST['advads-groups'] as $_group_id => $_group) { // save basic wp term wp_update_term($_group_id, Advanced_Ads::AD_GROUP_TAXONOMY, $_group); // save ad weights $group = new Advanced_Ads_Group($_group['id']); if (isset($_group['ads'])) { $group->save_ad_weights($_group['ads']); } // save other attributes $type = isset($_group['type']) ? $_group['type'] : 'default'; $ad_count = isset($_group['ad_count']) ? $_group['ad_count'] : 1; $options = isset($_group['options']) ? $_group['options'] : array(); // allow other add-ons to save their own group attributes $atts = apply_filters('advanced-ads-group-save-atts', array('type' => $type, 'ad_count' => $ad_count, 'options' => $options), $_group); $group->save($atts); } } // reload groups $this->load_groups(); return true; }