コード例 #1
0
 /**
  * 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);
 }