Example #1
0
/**
 * Submitted Bulk actions.
 */
function wpcf_admin_custom_fields_control_bulk_actions($action = '')
{
    if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'custom_fields_control_bulk')) {
        return;
    }
    switch ($action) {
        case 'wpcf-change-type-bulk':
            if (true && isset($_POST['wpcf-id']) && isset($_POST['fields'])) {
                wpcf_admin_custom_fields_change_type($_POST['fields'], $_POST['wpcf-id'], TYPES_CUSTOM_FIELD_GROUP_CPT_NAME);
            }
            break;
        case 'wpcf-deactivate-bulk':
            $fields = wpcf_admin_fields_get_fields(false, true);
            foreach ($_POST['fields'] as $field_id) {
                $field_id = sanitize_text_field($field_id);
                if (isset($fields[$field_id])) {
                    $fields[$field_id]['data']['disabled'] = 1;
                    wpcf_admin_message_store(sprintf(__('Removed from Types control: %s', 'wpcf'), $fields[$field_id]['name']));
                }
            }
            wpcf_admin_fields_save_fields($fields);
            break;
        case 'wpcf-activate-bulk':
            $fields = wpcf_admin_fields_get_fields(false, true);
            $fields_bulk = wpcf_types_cf_under_control('add', array('fields' => $_POST['fields']));
            foreach ($fields_bulk as $field_id) {
                if (isset($fields[$field_id])) {
                    $fields[$field_id]['data']['disabled'] = 0;
                }
                wpcf_admin_message_store(sprintf(__('Added to Types control: %s', 'wpcf'), $field_id));
            }
            wpcf_admin_fields_save_fields($fields);
            break;
        case 'wpcf-delete-bulk':
            require_once WPCF_INC_ABSPATH . '/fields.php';
            $failed = array();
            $success = array();
            foreach ($_POST['fields'] as $field_id) {
                $field_id = sanitize_text_field($field_id);
                $response = wpcf_admin_fields_delete_field($field_id);
                if (!$response) {
                    $failed[] = str_replace('_' . md5('wpcf_not_controlled'), '', $field_id);
                } else {
                    $success[] = $field_id;
                }
            }
            if (!empty($success)) {
                wpcf_admin_message_store(sprintf(__('Fields %s have been deleted.', 'wpcf'), implode(', ', $success)));
            }
            if (!empty($failed)) {
                wpcf_admin_message_store(sprintf(__('Fields %s are not Types fields. Types wont delete these fields.', 'wpcf'), implode(', ', $failed)), 'error');
            }
            break;
        case 'wpcf-add-to-group-bulk':
        case 'wpcf-remove-from-group-bulk':
            if (true && isset($_POST['wpcf-id']) && isset($_POST['fields'])) {
                $fields = array_values((array) $_POST['fields']);
                if (!empty($fields)) {
                    $groups = explode(',', $_POST['wpcf-id']);
                    foreach ($groups as $group_id) {
                        switch ($action) {
                            case 'wpcf-add-to-group-bulk':
                                wpcf_admin_fields_save_group_fields($group_id, $fields, true);
                                break;
                            case 'wpcf-remove-from-group-bulk':
                                wpcf_admin_fields_remove_field_from_group_bulk($group_id, $fields);
                                break;
                        }
                    }
                }
            }
            break;
    }
    wp_safe_redirect(esc_url_raw(add_query_arg(array('page' => 'wpcf-custom-fields-control'), admin_url('admin.php'))));
    die;
}
Example #2
0
/**
 * AJAX call from Bulk actions.
 */
function wpcf_admin_custom_fields_control_bulk_ajax()
{
    if (empty($_REQUEST['fields'])) {
        die(__('Please select fields', 'wpcf'));
    }
    if (!empty($_POST)) {
        if (!empty($_POST['groups']) && !empty($_POST['fields'])) {
            $action = isset($_POST['wpcf_action_control']) ? sanitize_text_field($_POST['wpcf_action_control']) : 'wpcf-add-to-group-bulk';
            foreach ($_POST['groups'] as $group_id) {
                $group_id = sanitize_text_field($group_id);
                switch ($action) {
                    case 'wpcf-add-to-group-bulk':
                        wpcf_admin_fields_save_group_fields($group_id, array_values((array) $_POST['fields']), true);
                        break;
                    case 'wpcf-remove-from-group-bulk':
                        wpcf_admin_fields_remove_field_from_group_bulk($group_id, array_values((array) $_POST['fields']));
                        break;
                    default:
                        break;
                }
            }
        } else {
            if (!empty($_POST['type']) && !empty($_POST['fields'])) {
                wpcf_admin_custom_fields_change_type($_POST['fields'], sanitize_text_field($_POST['type']));
            }
        }
        echo '<script type="text/javascript">
            window.parent.jQuery("#TB_closeWindowButton").click();
            window.parent.location.href=window.parent.location.href;
</script>';
        die;
    }
    $groups = wpcf_admin_fields_get_groups();
    $output = array();
    if (in_array($_GET['wpcf_bulk_action'], array('wpcf-add-to-group-bulk', 'wpcf-remove-from-group-bulk'))) {
        foreach ($groups as $group_id => $group) {
            $output[$group['id']] = array('#type' => 'checkbox', '#name' => 'groups[]', '#title' => $group['name'], '#value' => $group['id'], '#default_value' => false, '#inline' => true);
        }
    } else {
        if ($_GET['wpcf_bulk_action'] == 'wpcf-change-type-bulk') {
            $output['types'] = wpcf_admin_custom_fields_control_change_type_dropdown();
        } else {
            die('Not valid action');
        }
    }
    foreach ($_GET['fields'] as $field_id) {
        $field_id = sanitize_text_field($field_id);
        $output[$field_id] = array('#type' => 'hidden', '#name' => 'fields[]', '#value' => $field_id);
    }
    $output['submit'] = array('#type' => 'submit', '#name' => 'submit', '#value' => __('Save Changes'), '#attributes' => array('class' => 'button-primary'));
    echo '<form method="post" action="">';
    echo wpcf_form_simple($output);
    wp_nonce_field('custom_fields_control_bulk');
    echo '<input type="hidden" name="action" value="wpcf_ajax" />';
    echo '<input type="hidden" name="wpcf_action" value="custom_fields_control_bulk" />';
    echo '<input type="hidden" name="wpcf_action_control" value="' . esc_attr($_GET['wpcf_bulk_action']) . '" />';
    echo '</form>';
}
Example #3
0
 private function process_bulk_action()
 {
     $action = $this->current_action();
     if (false == $action) {
         return;
     }
     if (!wp_verify_nonce(wpcf_getpost('_wpnonce'), WPCF_Page_Control_Termmeta::BULK_ACTION_NONCE)) {
         wp_die(__('Invalid nonce.', 'wpcf'));
     }
     $selected_field_definitions = wpcf_getpost(self::INPUT_SLUGS, array());
     if (is_string($selected_field_definitions)) {
         $selected_field_definitions = array($selected_field_definitions);
     }
     if (!is_array($selected_field_definitions) || empty($selected_field_definitions)) {
         // Nothing to do here
         return;
     }
     $factory = WPCF_Field_Term_Definition_Factory::get_instance();
     switch ($action) {
         case self::BULK_ACTION_ADD_TO_GROUP:
             $group_ids = $this->read_group_ids();
             foreach ($group_ids as $group_id) {
                 wpcf_admin_fields_save_group_fields($group_id, $selected_field_definitions, true, WPCF_Field_Group_Term::POST_TYPE, WPCF_Field_Term_Definition_Factory::FIELD_DEFINITIONS_OPTION);
             }
             break;
         case self::BULK_ACTION_REMOVE_FROM_TO_GROUP:
             $group_ids = $this->read_group_ids();
             foreach ($group_ids as $group_id) {
                 wpcf_admin_fields_remove_field_from_group_bulk($group_id, $selected_field_definitions);
             }
             break;
         case self::BULK_ACTION_CHANGE_TYPE:
             $field_type_slug = wpcf_getpost('wpcf-id');
             if (!empty($field_type_slug)) {
                 wpcf_admin_custom_fields_change_type($selected_field_definitions, $field_type_slug, WPCF_Field_Group_Term::POST_TYPE, WPCF_Field_Term_Definition_Factory::FIELD_DEFINITIONS_OPTION);
             }
             break;
         case self::BULK_ACTION_ACTIVATE:
             $fields = wpcf_admin_fields_get_fields(false, true, false, WPCF_Field_Term_Definition_Factory::FIELD_DEFINITIONS_OPTION);
             $fields_bulk = wpcf_types_cf_under_control('add', array('fields' => $selected_field_definitions), WPCF_Field_Group_Term::POST_TYPE, WPCF_Field_Term_Definition_Factory::FIELD_DEFINITIONS_OPTION);
             foreach ($fields_bulk as $field_id) {
                 if (isset($fields[$field_id])) {
                     $fields[$field_id]['data']['disabled'] = 0;
                 }
                 wpcf_admin_message(sprintf(__('Added to Types control: %s', 'wpcf'), esc_html($field_id)), 'updated', 'echo');
             }
             wpcf_admin_fields_save_fields($fields, false, WPCF_Field_Term_Definition_Factory::FIELD_DEFINITIONS_OPTION);
             break;
         case self::BULK_ACTION_DEACTIVATE:
             $fields = wpcf_admin_fields_get_fields(false, true, false, WPCF_Field_Term_Definition_Factory::FIELD_DEFINITIONS_OPTION);
             foreach ($selected_field_definitions as $field_id) {
                 $field_id = sanitize_text_field($field_id);
                 if (isset($fields[$field_id])) {
                     $fields[$field_id]['data']['disabled'] = 1;
                     wpcf_admin_message(sprintf(__('Removed from Types control: %s', 'wpcf'), $fields[$field_id]['name']), 'updated', 'echo');
                 }
             }
             wpcf_admin_fields_save_fields($fields, false, WPCF_Field_Term_Definition_Factory::FIELD_DEFINITIONS_OPTION);
             break;
         case self::BULK_ACTION_DELETE:
             $failed = array();
             $success = array();
             foreach ($selected_field_definitions as $field_id) {
                 $field_id = sanitize_text_field($field_id);
                 // Permanently single field definition and field data.
                 $field_definition = $factory->load_field_definition($field_id);
                 if (null == $field_definition) {
                     $response = false;
                 } else {
                     $response = $factory->delete_definition($field_definition);
                 }
                 if (!$response) {
                     $failed[] = str_replace('_' . md5('wpcf_not_controlled'), '', $field_id);
                 } else {
                     $success[] = $field_id;
                 }
             }
             if (!empty($success)) {
                 wpcf_admin_message(sprintf(__('Fields %s have been deleted.', 'wpcf'), esc_html(implode(', ', $success))), 'updated', 'echo');
             }
             if (!empty($failed)) {
                 wpcf_admin_message(sprintf(__('Fields %s are not Types fields. Types wont delete these fields.', 'wpcf'), esc_html(implode(', ', $failed))), 'error', 'echo');
             }
             break;
     }
     // We made changes to field definitions and now the listing table is going to be rendered.
     $factory->clear_definition_storage();
 }