File "media.php"
Full Path: /www/wwwroot/shphe-en.com/wp-content/plugins/admin-columns-pro/classes/inline-edit/classes/media.php
File size: 8.56 KB
MIME-type: --
Charset: utf-8
<?php
/**
* Media storage model for editability
*
* @since 1.0
*/
class CACIE_Editable_Model_Media extends CACIE_Editable_Model {
/**
* @see CACIE_Editable_Model::is_editable()
* @since 1.0
*/
public function is_editable( $column ) {
// By default, inherit editability from parent
$is_editable = parent::is_editable( $column );
switch ( $column->properties->type ) {
// Default columns
case 'author':
case 'date':
case 'title':
// Custom columns
case 'column-alternate_text':
case 'column-caption':
case 'column-description':
case 'column-mime_type':
case 'column-taxonomy':
$is_editable = true;
break;
}
/**
* Filter the editability of a column
*
* @since 3.4
*
* @param bool $is_editable Whether the column is editable
* @param CPAC_Column $column Colum object
* @param CACIE_Editable_Model $model Editability storage model
*/
$is_editable = apply_filters( 'cac/editable/is_column_editable', $is_editable, $column, $this );
$is_editable = apply_filters( 'cac/editable/is_column_editable/column=' . $column->get_type(), $is_editable, $column, $this );
return $is_editable;
}
/**
* @see CACIE_Editable_Model::get_column_options()
* @since 1.0
*/
public function get_column_options( $column ) {
$options = parent::get_column_options( $column );
switch ( $column['type'] ) {
// WP Default
// Custom columns
case 'column-taxonomy':
$options = $this->get_term_options( $column['taxonomy'] );
break;
case 'column-mime_type':
$mime_types = wp_get_mime_types();
$options = array_combine( $mime_types, $mime_types );
break;
}
return $options;
}
/**
* @see CACIE_Editable_Model::get_editables_data()
* @since 1.0
*/
public function get_editables_data() {
$data = array(
/**
* Default columns
*
*/
'author' => array(
'type' => 'select2_dropdown',
'property' => 'post_author',
'ajax_populate' => true
),
'date' => array(
'type' => 'date',
'property' => 'post_date'
),
'title' => array(
'type' => 'text',
'property' => 'post_title',
'js' => array(
'selector' => 'strong > a',
),
'display_ajax' => false
),
/**
* Custom columns
*
*/
'column-alternate_text' => array(
'type' => 'text'
),
'column-caption' => array(
'type' => 'textarea',
'property' => 'post_excerpt'
),
'column-description' => array(
'type' => 'textarea',
'property' => 'post_content'
),
'column-mime_type' => array(
'type' => 'select',
'property' => 'post_mime_type'
),
'column-taxonomy' => array(
'type' => 'select2_tags'
),
);
// Handle capabilities for editing post status
$post_type_object = get_post_type_object( $this->storage_model->post_type );
if ( ! current_user_can( $post_type_object->cap->publish_posts ) ) {
unset( $data['column-status'] );
}
/**
* Filter the editability settings for a column
*
* @since 3.4
*
* @param array $data {
* Editability settings.
*
* @type string $type Editability type. Accepts 'text', 'select', 'textarea', 'media', 'float',
* 'togglable', 'select', 'select2_dropdown' and 'select2_tags'
* @type array $options Optional. Options for dropdown ([value] => [label]), only used when $type is "select"
* }
* @param CACIE_Editable_Model $model Editability storage model
*/
$data = apply_filters( 'cac/editable/editables_data', $data, $this );
$data = apply_filters( 'cac/editable/editables_data/type=' . $this->storage_model->get_type(), $data, $this );
return $data;
}
/**
* @see CACIE_Editable_Model::get_items()
* @since 1.0
*/
public function get_items() {
global $wp_query;
$items = array();
foreach ( (array) $wp_query->posts as $post ) {
if ( ! current_user_can( 'edit_post', $post->ID ) ) {
continue;
}
$columndata = array();
foreach ( $this->storage_model->columns as $column_name => $column ) {
// Edit enabled for this column?
if ( ! $this->is_edit_enabled( $column ) ) {
continue;
}
// Set current value
$value = '';
// WP Default column
if ( $column->properties->default ) {
switch ( $column_name ) {
case 'author':
$value = $post->post_author;
break;
case 'date':
$value = date( 'Ymd', strtotime( $post->post_date ) );
break;
case 'title':
$value = $post->post_title;
break;
}
}
// Custom column
else {
$raw_value = $this->get_column_editability_value( $column, $post->ID );
if ( $raw_value === NULL ) {
continue;
}
$value = $raw_value;
}
/**
* Filter the raw value, used for editability, for a column
*
* @since 3.4
*
* @param mixed $value Column value used for editability
* @param CPAC_Column $column Colum object
* @param int $id Post ID to get the column editability for
* @param CACIE_Editable_Model $model Editability storage model
*/
$value = apply_filters( 'cac/editable/column_value', $value, $column, $post->ID, $this );
$value = apply_filters( 'cac/editable/column_value/column=' . $column->get_type(), $value, $column, $post->ID, $this );
// Get item data
$itemdata = array();
if ( method_exists( $column, 'get_item_data' ) ) {
$itemdata = $column->get_item_data( $post->ID );
}
// Add data
$columndata[ $column_name ] = array(
'revisions' => array( $value ),
'current_revision' => 0,
'itemdata' => $itemdata,
'editable' => array(
'formattedvalue' => $this->get_formatted_value( $column, $value )
)
);
}
$items[ $post->ID ] = array(
'ID' => $post->ID,
'object' => get_object_vars( $post ),
'columndata' => $columndata
);
}
return $items;
}
/**
* @see CACIE_Editable_Model::manage_value()
* @since 1.0
*/
public function manage_value( $column, $id ){
global $post;
$post = get_post( $id );
setup_postdata( $post );
switch ( $column->properties->type ) {
case 'author':
printf( '<a href="%s">%s</a>',
esc_url( add_query_arg( array( 'author' => get_the_author_meta('ID') ), 'upload.php' ) ),
get_the_author()
);
break;
case 'date':
// copied from class-wp-media-list-table.php
if ( '0000-00-00 00:00:00' == $post->post_date ) {
$h_time = __( 'Unpublished' );
} else {
$m_time = $post->post_date;
$time = get_post_time( 'G', true, $post, false );
if ( ( abs( $t_diff = time() - $time ) ) < DAY_IN_SECONDS ) {
if ( $t_diff < 0 )
$h_time = sprintf( __( '%s from now' ), human_time_diff( $time ) );
else
$h_time = sprintf( __( '%s ago' ), human_time_diff( $time ) );
} else {
$h_time = mysql2date( __( 'Y/m/d' ), $m_time );
}
}
echo $h_time;
break;
case 'title':
// Set in DOM
break;
}
wp_reset_postdata();
}
/**
* @see CACIE_Editable_Model::column_save()
* @since 1.0
*/
public function column_save( $id, $column, $value ) {
if ( ! ( $post = get_post( $id ) ) ) {
exit;
}
if ( ! current_user_can( 'edit_post', $id ) ) {
exit;
}
// Third party columns can use the save() method as a callback for inline-editing
if ( method_exists( $column, 'save' ) ) {
$column->save( $id, $value );
return;
}
$editable = $this->get_editable( $column->properties->name );
switch ( $column->properties->type ) {
/**
* Default Columns
*
*/
case 'date':
// preserve the original time
$time = strtotime("1970-01-01 " . date( 'H:i:s', strtotime( $post->post_date ) ) );
wp_update_post( array(
'ID' => $post->ID,
'edit_date' => 1, // needed for GMT date
'post_date' => date( 'Y-m-d H:i:s', strtotime( $value ) + $time )
));
break;
/**
* Custom Columns
*
*/
case 'column-alternate_text':
$this->update_meta( $post->ID, '_wp_attachment_image_alt', $value );
break;
case 'column-meta':
$this->update_meta( $post->ID, $column->get_field_key(), $value );
break;
case 'column-taxonomy':
if ( ! empty( $column->options->taxonomy ) && taxonomy_exists( $column->options->taxonomy ) ) {
$this->set_post_terms( $id, $value, $column->options->taxonomy );
}
break;
// Save basic property such as title or description (data that is available in WP_Post)
default:
if ( ! empty( $editable['property'] ) ) {
$property = $editable['property'];
if ( isset( $post->{$property} ) ) {
wp_update_post( array(
'ID' => $post->ID,
$property => $value
) );
}
}
}
}
}