/** * Ajax callback for saving a column * * @since 1.0 */ public function ajax_column_save() { if ($this->storage_model->key != $_POST['storage_model']) { return; } // Basic request validation if (empty($_POST['plugin_id']) || empty($_POST['pk']) || empty($_POST['column'])) { wp_send_json_error(__('Required fields missing.', 'cpac')); } // Get ID of entry to edit if (!($id = intval($_POST['pk']))) { wp_send_json_error(__('Invalid item ID.', 'cpac')); } // Get column instance $column = $this->storage_model->get_column_by_name($_POST['column']); if (!$column) { wp_send_json_error(__('Invalid column.', 'cpac')); } $value = isset($_POST['value']) ? $_POST['value'] : ''; /** * Filter for changing the value before storing it to the DB * * @since 3.2.1 * * @param mixed $value Value send from inline edit ajax callback * @param object CPAC_Column instance * @param int $id ID */ $value = apply_filters('cac/inline-edit/ajax-column-save/value', $value, $column, $id); // Store column $save_result = $this->column_save($id, $column, $value); if (is_wp_error($save_result)) { status_header(400); echo $save_result->get_error_message(); exit; } ob_start(); // WP default column if ($column->properties->default) { $this->manage_value($column, $id); } else { if ('taxonomy' == $this->storage_model->type) { echo $this->storage_model->manage_value('', $column->properties->name, $id); } else { echo $this->storage_model->manage_value($column->properties->name, $id); } } $contents = ob_get_clean(); /** * Fires after a inline-edit succesfully saved a value * * @since ???? * * @param CPAC_Column $column Column instance * @param int $id Item ID * @param string $value User submitted input * @param object $this CACIE_Editable_Model $editable_model_instance Editability model instance */ do_action('cac/inline-edit/after_ajax_column_save', $column, $id, $value, $this); $jsondata = array('success' => true, 'data' => array('value' => $contents)); if (!$column->properties->default) { $jsondata['data']['rawvalue'] = $this->get_column_editability_value($column, $id); } if (is_callable(array($column, 'get_item_data'))) { $jsondata['data']['itemdata'] = $column->get_item_data($id); } wp_send_json($jsondata); }