Files
wordpress-preseed/wp-content/plugins/media-library-assistant/includes/class-mla-admin-columns-pro-support.php
2019-10-24 00:12:05 +02:00

1426 lines
34 KiB
PHP

<?php
/**
* Media Library Assistant Admin Columns Pro (plugin) Support
*
* @package Media Library Assistant
* @since 2.71
*/
defined( 'ABSPATH' ) or die();
/**
* Class Admin Columns Addon MLA (Media Library Assistant) List Screen supports the Admin Columns plugin
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_ListScreen extends AC_Addon_MLA_ListScreen
implements ACP\Editing\ListScreen, ACP\Export\ListScreen {
/**
* Initializes some properties, installs filters and then
* calls the parent constructor to set some default configs.
*
* @since 2.71
*/
public function __construct() {
parent::__construct();
add_action( 'ac/table/list_screen', array( $this, 'export_table_global' ) );
if ( version_compare( ACP()->get_version(), '4.5.4', '>=' ) ) {
add_filter('acp/editing/bulk/active', array( $this, 'disable_bulk_editing' ), 10, 2 );
}
}
/**
* Set MLA-specific inline editing strategy for Admin Columns Pro
*
* @since 2.71
*/
public function editing() {
return new ACP_Addon_MLA_Editing_Strategy( 'attachment' );
}
/**
* Set MLA-specific inline editing strategy for Admin Columns Pro
*
* @since 2.79
*
* @param boolean $active
* @param AC_ListScreen $list_screen
*/
public function disable_bulk_editing( $active, $list_screen ){
if( $list_screen instanceof ACP_Addon_MLA_ListScreen ){
return false;
}
return $active;
}
/**
* Create and populate an MLA_List_Table object in the $wp_list_table global variable
*
* When exporting the same page is being requested by an ajax request and triggers the filter 'the_posts'.
* The callback for this filter will print a json string. This needs to be done before any rendering of the page.
*
* Also, export needs the $GLOBALS['wp_list_table'] to be populated for displaying the export button.
*
* @since 2.71
*
* @param AC_ListScreen $list_screen
*/
public function export_table_global( AC_ListScreen $list_screen ) {
global $wp_list_table;
if ( ! $list_screen instanceof ACP_Addon_MLA_ListScreen ) {
return;
}
if ( ! class_exists( 'MLA_List_Table' ) ) {
require_once( MLA_PLUGIN_PATH . 'includes/class-mla-list-table.php' );
MLA_List_Table::mla_admin_init_action();
}
if ( $wp_list_table instanceof MLA_List_Table ) {
return;
}
$wp_list_table = new MLA_List_Table();
$wp_list_table->prepare_items();
}
/**
* Set MLA-specific export strategy for Admin Columns Pro
*
* @since 2.71
*/
public function export() {
return new ACP_Addon_MLA_Export_Strategy( $this );
}
/**
* Register MLA-specific column definitions for Admin Columns Pro
*
* @since 2.71
*/
public function register_column_types() {
parent::register_column_types();
// Autoload the CustomField class if necessary
if ( class_exists( 'ACP\Column\CustomField' ) ) {
$this->register_column_type( new ACP\Column\CustomField );
}
$this->register_column_type( new ACP_Addon_MLA_Column_ID_Parent );
$this->register_column_type( new ACP_Addon_MLA_Column_Title_Name() );
$this->register_column_type( new ACP_Addon_MLA_Column_Title() );
$this->register_column_type( new ACP_Addon_MLA_Column_Name() );
$this->register_column_type( new ACP_Addon_MLA_Column_Parent() );
$this->register_column_type( new ACP_Addon_MLA_Column_MenuOrder() );
$this->register_column_type( new ACP_Addon_MLA_Column_Features() );
$this->register_column_type( new ACP_Addon_MLA_Column_Inserts() );
$this->register_column_type( new ACP_Addon_MLA_Column_Galleries() );
$this->register_column_type( new ACP_Addon_MLA_Column_MLA_Galleries() );
$this->register_column_type( new ACP_Addon_MLA_Column_AltText() );
$this->register_column_type( new ACP_Addon_MLA_Column_Caption() );
$this->register_column_type( new ACP_Addon_MLA_Column_Description() );
$this->register_column_type( new ACP_Addon_MLA_Column_MimeType() );
$this->register_column_type( new ACP_Addon_MLA_Column_FileURL() );
$this->register_column_type( new ACP_Addon_MLA_Column_Base_File() );
$this->register_column_type( new ACP_Addon_MLA_Column_Date() );
$this->register_column_type( new ACP_Addon_MLA_Column_Modified() );
$this->register_column_type( new ACP_Addon_MLA_Column_Author() );
$this->register_column_type( new ACP_Addon_MLA_Column_Attached() );
// Set up the taxonomy column definitions
$taxonomies = get_taxonomies( array ( 'show_ui' => true ), 'names' );
foreach ( $taxonomies as $tax_name ) {
if ( MLACore::mla_taxonomy_support( $tax_name ) ) {
$tax_object = get_taxonomy( $tax_name );
$column = new ACP_Addon_MLA_Column_Taxonomy();
$column->set_type( 't_' . $tax_object->name );
$this->register_column_type( $column );
} // supported taxonomy
} // foreach $tax_name
// Set up the custom field definitions
$custom_columns = MLACore::mla_custom_field_support( 'custom_columns' );
foreach ( $custom_columns as $type => $label ) {
$column = new ACP_Addon_MLA_Column_CustomField();
$column->set_type( $type );
$column->set_name( $type );
$column->set_label( $label );
$this->register_column_type( $column );
} // foreach custom column
}
/**
* Return list table item object given ID
*
* @param integer $id List table item ID
*
* @since 2.71
*/
public static function get_item( $id ) {
global $wp_list_table;
if ( $wp_list_table instanceof MLA_List_Table ) {
foreach ( $wp_list_table->items as $index => $item ) {
if ( $id == $item->ID ) {
return $item;
}
}
}
return get_post( $id );
}
/**
* Translate post_status 'future', 'pending', 'draft' and 'trash' to label
*
* @since 2.01
*
* @param string post_status
*
* @return string Status label or empty string
*/
public static function format_post_status( $post_status ) {
$flag = ', ';
switch ( $post_status ) {
case 'draft' :
$flag .= __('Draft');
break;
case 'future' :
$flag .= __('Scheduled');
break;
case 'pending' :
$flag .= _x('Pending', 'post state');
break;
case 'trash' :
$flag .= __('Trash');
break;
default:
$flag = '';
}
return $flag;
}
} // class ACP_Addon_MLA_ListScreen
/**
* Exportability class for posts list screen
*
* @since 2.71
*/
class ACP_Addon_MLA_Export_Strategy extends ACP\Export\Strategy {
/**
* Call parent constructor
*
* @param AC_ListScreen $list_screen
*/
public function __construct( $list_screen ) {
parent::__construct( $list_screen );
}
/**
* Retrieve the headers for the columns
*
* @param AC\Column[] $columns
*
* @since 1.0
* @return string[] Associative array of header labels for the columns.
*/
public function get_headers( array $columns ) {
$headers = parent::get_headers( $columns );
// Fix the first header to avoid MS Excel SYLK file format error
foreach ( $headers as $name => $label ) {
if ( 'ID' === substr( $label, 0, 2) ) {
$headers[ $name ] = '.' . $label;
}
break; // Only the first label matters
}
return $headers;
}
/**
* Add hooks for MLA_List_table to support AJAX export operation
*
* @since 2.71
* @see ACP_Export_ExportableListScreen::ajax_export()
*/
protected function ajax_export() {
// Hooks
add_filter( 'mla_list_table_query_final_terms', array( $this, 'mla_list_table_query_final_terms' ), 1e6 );
add_action( 'mla_list_table_prepare_items', array( $this, 'mla_list_table_prepare_items' ), 10, 2 );
}
/**
* Modify the main posts query to use the correct pagination arguments. This should be attached
* to the pre_get_posts hook when an AJAX request is sent
*
* @param WP_Query $request
*
* @since 2.71
* @see action:pre_get_posts
*/
public function mla_list_table_query_final_terms( $request ) {
$per_page = $this->get_num_items_per_iteration();
$request['offset'] = $this->get_export_counter() * $per_page;
$request['posts_per_page'] = $per_page;
$request['posts_per_archive_page'] = $per_page;
return $request;
}
/**
* Run the actual export when the posts query is finalized. This should be attached to the
* the_posts filter when an AJAX request is run
*
* @param WP_Query $query
*
* @since 2.71
* @see action:the_posts
*/
public function mla_list_table_prepare_items( $query ) {
$this->export( wp_list_pluck( $query->items, 'ID' ) );
}
} // class ACP_Addon_MLA_Export_Strategy
/**
* Class Admin Columns Addon MLA (Media Library Assistant) Editing Strategy supports the Admin Columns plugin
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Editing_Strategy extends ACP\Editing\Strategy\Post {
/**
* Get the available items on the current page for passing them to JS
*
* @since 2.71
*
* @return array Items on the current page ([entry_id] => (array) [entry_data])
*/
public function get_rows() {
global $wp_list_table;
// Re-execute the query because the table object can be shared with custom plugins using the MLA filters/actions
$wp_list_table->prepare_items();
return $this->get_editable_rows( $wp_list_table->items );
}
} // class ACP_Addon_MLA_Editing_Strategy
/**
* Provides view_settings for MLA's post_title
*
* @package Media Library Assistant
* @since 2.52
*/
class ACP_Addon_MLA_Editing_Model_Media_Title extends ACP\Editing\Model\Media\Title {
/**
* Remove JavaScript selector settings
*/
public function get_view_settings() {
return array(
'type' => 'text',
'display_ajax' => false,
);
}
}
/**
* Provides export for ID portion of ID/Parent
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_ID_Parent extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
// Mark as an existing column
$this->set_original( true );
// Type of column
$this->set_type( 'ID_parent' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return $item->ID;
}
}
/**
* Provides export for Name (slug)
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_Title_Name extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'title_name' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
$errors = $item->mla_references['parent_errors'];
if ( '(' . __( 'NO REFERENCE TESTS', 'media-library-assistant' ) . ')' == $errors ) {
$errors = '';
}
$format = "%1\$s\n%2\$s\n%3\$s";
return sprintf( $format, _draft_or_post_title( $item ), esc_attr( $item->post_name ), $errors );
}
}
/**
* Provides inline-editing, export for post_title
*
* @package Media Library Assistant
* @since 2.52
* @since 2.71 Added export
*/
class ACP_Addon_MLA_Column_Title extends AC\Column\Media\Title
implements ACP\Editing\Editable, ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'post_title' );
}
/**
* Add inline editing support
*
* @return ACP\Editing\Model\Media\Title
*/
public function editing() {
return new ACP_Addon_MLA_Editing_Model_Media_Title( $this );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return (string) $item->post_title;
}
}
/**
* Provides export for Name (slug)
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_Name extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'post_name' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return (string) $item->post_name;
}
}
/**
* Removes ACP defaults, provides export for post_parent
*
* @package Media Library Assistant
* @since 2.52
* @since 2.71 Added export
*/
class ACP_Addon_MLA_Column_Parent extends AC\Column\Media\MediaParent
implements ACP\Export\Exportable {
/**
* Remove default column width
*/
public function register_settings() {
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return (string) $item->post_parent;
}
}
/**
* Provides inline-editing, export for menu_order
*
* @package Media Library Assistant
* @since 2.52
* @since 2.71 Added export
*/
class ACP_Addon_MLA_Column_MenuOrder extends AC\Column
implements ACP\Editing\Editable, ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'menu_order' );
}
/**
* Add inline editing support
*
* @return ACP\Editing\Model\Post\Order
*/
public function editing() {
return new ACP\Editing\Model\Post\Order( $this );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return (string) $item->menu_order;
}
}
/**
* Provides export for Featured in
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_Features extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'featured' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
if ( !MLACore::$process_featured_in ) {
return __( 'Disabled', 'media-library-assistant' );
}
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
// Move parent to the top of the list
$features = $item->mla_references['features'];
if ( isset( $features[ $item->post_parent ] ) ) {
$parent = $features[ $item->post_parent ];
unset( $features[ $item->post_parent ] );
array_unshift( $features, $parent );
}
$format = "%1\$s (%2\$s %3\$s%4\$s%5\$s),\n";
$value = '';
foreach ( $features as $feature ) {
$status = ACP_Addon_MLA_ListScreen::format_post_status( $feature->post_status );
if ( $feature->ID == $item->post_parent ) {
$parent = ", " . __( 'PARENT', 'media-library-assistant' );
} else {
$parent = '';
}
$value .= sprintf( $format, esc_attr( $feature->post_title ), esc_attr( $feature->post_type ), $feature->ID, $status, $parent );
} // foreach $feature
return $value;
}
}
/**
* Provides export for Inserted in
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_Inserts extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'inserted' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
if ( !MLACore::$process_inserted_in ) {
return __( 'Disabled', 'media-library-assistant' );
}
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
$format = "%1\$s (%2\$s %3\$s%4\$s%5\$s),\n";
$value = '';
foreach ( $item->mla_references['inserts'] as $file => $inserts ) {
if ( 'base' != $item->mla_references['inserted_option'] ) {
$value .= $file . "\n";
}
// Move parent to the top of the list
if ( isset( $inserts[ $item->post_parent ] ) ) {
$parent = $inserts[ $item->post_parent ];
unset( $inserts[ $item->post_parent ] );
array_unshift( $inserts, $parent );
}
foreach ( $inserts as $insert ) {
$status = ACP_Addon_MLA_ListScreen::format_post_status( $insert->post_status );
if ( $insert->ID == $item->post_parent ) {
$parent = ", " . __( 'PARENT', 'media-library-assistant' );
} else {
$parent = '';
}
$value .= sprintf( $format, esc_attr( $insert->post_title ), esc_attr( $insert->post_type ), $insert->ID, $status, $parent );
} // foreach $insert
} // foreach $file
return $value;
}
}
/**
* Provides export for Gallery in
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_Galleries extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'galleries' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
if ( !MLACore::$process_gallery_in ) {
return __( 'Disabled', 'media-library-assistant' );
}
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
// Move parent to the top of the list
$galleries = $item->mla_references['galleries'];
if ( isset( $galleries[ $item->post_parent ] ) ) {
$parent = $galleries[ $item->post_parent ];
unset( $galleries[ $item->post_parent ] );
array_unshift( $galleries, $parent );
}
$format = "%1\$s (%2\$s %3\$s%4\$s%5\$s),\n";
$value = '';
foreach ( $galleries as $ID => $gallery ) {
$status = ACP_Addon_MLA_ListScreen::format_post_status( $gallery['post_status'] );
if ( $gallery['ID'] == $item->post_parent ) {
$parent = ", " . __( 'PARENT', 'media-library-assistant' );
} else {
$parent = '';
}
$value .= sprintf( $format, esc_attr( $gallery['post_title'] ), esc_attr( $gallery['post_type'] ), $gallery['ID'], $status, $parent );
} // foreach $gallery
return $value;
}
}
/**
* Provides export for Gallery in
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_MLA_Galleries extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'mla_galleries' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
if ( !MLACore::$process_mla_gallery_in ) {
return __( 'Disabled', 'media-library-assistant' );
}
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
// Move parent to the top of the list
$mla_galleries = $item->mla_references['mla_galleries'];
if ( isset( $mla_galleries[ $item->post_parent ] ) ) {
$parent = $mla_galleries[ $item->post_parent ];
unset( $mla_galleries[ $item->post_parent ] );
array_unshift( $mla_galleries, $parent );
}
$format = "%1\$s (%2\$s %3\$s%4\$s%5\$s),\n";
$value = '';
foreach ( $mla_galleries as $gallery ) {
$status = ACP_Addon_MLA_ListScreen::format_post_status( $gallery['post_status'] );
if ( $gallery['ID'] == $item->post_parent ) {
$parent = ", " . __( 'PARENT', 'media-library-assistant' );
} else {
$parent = '';
}
$value .= sprintf( $format, esc_attr( $gallery['post_title'] ), esc_attr( $gallery['post_type'] ), $gallery['ID'], $status, $parent );
} // foreach $gallery
return $value;
}
}
/**
* Provides inline-editing, export for alt_text
*
* @package Media Library Assistant
* @since 2.52
* @since 2.71 Added export
*/
class ACP_Addon_MLA_Column_AltText extends ACP\Column\Media\AlternateText
implements ACP\Editing\Editable, ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'alt_text' );
}
/**
* Add inline editing support
*
* @return ACP\Editing\Model\Media\AlternateText
*/
public function editing() {
return new ACP\Editing\Model\Media\AlternateText( $this );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
if ( isset( $item->mla_wp_attachment_image_alt ) ) {
if ( is_array( $item->mla_wp_attachment_image_alt ) ) {
$alt_text = $item->mla_wp_attachment_image_alt[0];
} else {
$alt_text = $item->mla_wp_attachment_image_alt;
}
return $alt_text;
}
return '';
}
}
/**
* Provides inline-editing, export for Caption/Excerpt
*
* @package Media Library Assistant
* @since 2.52
* @since 2.71 Added export
*/
class ACP_Addon_MLA_Column_Caption extends ACP\Column\Media\Caption
implements ACP\Editing\Editable, ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'caption' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return (string) $item->post_excerpt;
}
}
/**
* Provides inline-editing, export for Description
*
* @package Media Library Assistant
* @since 2.52
* @since 2.71 Added export
*/
class ACP_Addon_MLA_Column_Description extends AC\Column\Media\Description
implements ACP\Editing\Editable, ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'description' );
}
/**
* Add inline editing and provides export for Description
*
* @return ACP\Editing\Model\Post\Content
*/
public function editing() {
return new ACP\Editing\Model\Post\Content( $this );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return (string) $item->post_content;
}
}
/**
* Provides inline-editing, export for MIME Type
*
* @package Media Library Assistant
* @since 2.52
* @since 2.71 Added export
*/
class ACP_Addon_MLA_Column_MimeType extends AC\Column\Media\MimeType
implements ACP\Editing\Editable, ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'post_mime_type' );
}
/**
* Add inline editing support
*
* @return ACP\Editing\Model\Media\MimeType
*/
public function editing() {
return new ACP\Editing\Model\Media\MimeType( $this );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return (string) $item->post_mime_type;
}
}
/**
* Provides export for File URL
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_FileURL extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'file_url' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$attachment_url = wp_get_attachment_url( $id );
return $attachment_url ? $attachment_url : __( 'None', 'media-library-assistant' );
}
}
/**
* Provides export for Base File
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_Base_File extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'base_file' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
if ( isset( $item->mla_wp_attached_file ) ) {
return (string) $item->mla_wp_attached_file;
}
return 'ERROR';
}
}
/**
* Provides export for Attached to
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_Attached extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'attached_to' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
if ( isset( $item->parent_title ) ) {
$parent_type = get_post_type_object( $item->parent_type );
if ( $parent_type ) {
if ( $parent_type->show_ui ) {
$user_can_read_parent = current_user_can( 'read_post', $item->post_parent );
} else {
$user_can_read_parent = true;
}
} else {
$user_can_read_parent = false;
}
if ( $user_can_read_parent ) {
$parent_title = esc_attr( $item->parent_title );
} else {
$parent_title = __( '(Private post)' );
}
if ( isset( $item->parent_date ) && $user_can_read_parent ) {
$parent_date = "\n" . mysql2date( __( 'Y/m/d', 'media-library-assistant' ), $item->parent_date );
} else {
$parent_date = '';
}
if ( isset( $item->parent_type ) && $user_can_read_parent ) {
$parent_type = "\n" . '(' . $item->parent_type . ' ' . (string) $item->post_parent . ACP_Addon_MLA_ListScreen::format_post_status( $item->parent_status ) . ')';
} else {
$parent_type = '';
}
$parent = sprintf( '%1$s%2$s%3$s', /*%1$s*/ $parent_title, /*%2$s*/ $parent_date, /*%3$s*/ $parent_type );
} else {
$parent = '(' . _x( 'Unattached', 'table_view_singular', 'media-library-assistant' ) . ')';
}
return $parent;
}
}
/**
* Removes ACP defaults and provides export for date
*
* @package Media Library Assistant
* @since 2.52
* @since 2.71 Added export
*/
class ACP_Addon_MLA_Column_Date extends ACP\Column\Media\Date
implements ACP\Export\Exportable {
/**
* Remove default column width
*/
public function register_settings() {
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return (string) $item->post_date;
}
}
/**
* Provides export for Last Modified date
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_Modified extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*/
public function __construct() {
$this->set_original( true );
$this->set_type( 'modified' );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
return (string) $item->post_modified;
}
}
/**
* Removes ACP defaults & provides inline-editing, export for Author name
*
* @package Media Library Assistant
* @since 2.52
* @since 2.71 Added export
*/
class ACP_Addon_MLA_Column_Author extends AC\Column\Media\Author
implements ACP\Editing\Editable, ACP\Export\Exportable {
/**
* Remove default column width
*/
public function register_settings() {
}
/**
* Add inline editing support
*
* @return ACP\Editing\Model\Post\Author
*/
public function editing() {
return new ACP\Editing\Model\Post\Author( $this );
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
$user = get_user_by( 'id', $item->post_author );
if ( isset( $user->data->display_name ) ) {
return $user->data->display_name;
}
return 'unknown';
}
}
/**
* Provides export for supported taxonomies
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_Taxonomy extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*
* set_type( 't_' . taxonomy ) is done by the calling function.
*/
public function __construct() {
$this->set_original( true );
}
/**
* Extract taxonomy slug from type name
*
* @return string Taxonomy name/slug
*/
public function get_taxonomy() {
return substr( $this->get_type(), 2 );
}
/**
* Does this post type have registered taxonomies
*
* @return bool True when post type has associated taxonomies
*/
public function is_valid() {
return true;
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
$terms = wp_get_post_terms( $id, $this->get_taxonomy(), array( 'fields' => 'names' ) );
if ( ! $terms || is_wp_error( $terms ) ) {
return '';
}
return implode( ', ', $terms );
}
}
/**
* Provides export for supported custom fields
*
* @package Media Library Assistant
* @since 2.71
*/
class ACP_Addon_MLA_Column_CustomField extends AC\Column
implements ACP\Export\Exportable {
/**
* Define column properties
*
* set_type( 'c_' . field number ) is done by the calling function.
*/
public function __construct() {
$this->set_original( true );
}
/**
* Does this post type support custom fields
*
* @return bool True when post type has custom fields
*/
public function is_valid() {
return true;
}
/**
* Support export
*/
public function export() {
return new ACP\Export\Model\StrippedValue( $this );
}
/**
* Supply value for export
*
* @param integer $id MLA_List_table item ID
*/
public function get_raw_value( $id ) {
static $custom_columns = NULL;
if ( NULL === $custom_columns ) {
$custom_columns = MLACore::mla_custom_field_support( 'custom_columns' );
}
$column_name = $this->get_name();
$item = ACP_Addon_MLA_ListScreen::get_item( $id );
if ( 'meta:' == substr( $custom_columns[ $column_name ], 0, 5 ) ) {
$is_meta = true;
$meta_key = substr( $custom_columns[ $column_name ], 5 );
if ( !empty( $item->mla_wp_attachment_metadata ) ) {
$values = MLAData::mla_find_array_element( $meta_key, $item->mla_wp_attachment_metadata, 'array' );
if ( is_scalar( $values ) ) {
$values = array( $values );
}
} else {
$values = NULL;
}
} else {
$is_meta = false;
$values = get_post_meta( $item->ID, $custom_columns[ $column_name ], false );
}
if ( empty( $values ) ) {
return '';
}
$list = array();
foreach ( $values as $index => $value ) {
/*
* For display purposes, convert array values.
* Use "@" because embedded arrays throw PHP Warnings from implode.
*/
if ( is_array( $value ) ) {
$list[] = 'array( ' . @implode( ', ', $value ) . ' )'; // TODO PHP 7 error handling
} elseif ( $is_meta ) {
$list[] = $value;
} else {
$list[] = esc_html( $value );
}
}
if ( count( $list ) > 1 ) {
return '[' . join( '], [', $list ) . ']';
} else {
return $list[0];
}
}
}
?>