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

225 lines
6.7 KiB
PHP

<?php
/**
* Media Library Assistant Admin Columns (plugin) Support
*
* @package Media Library Assistant
* @since 2.22
*/
defined( 'ABSPATH' ) or die();
/**
* Class CPAC Storage Model MLA (Media Library Assistant) supports the Admin Columns plugin
*
* @package Media Library Assistant
* @since 2.22
*/
class CPAC_Deprecated_Storage_Model_MLA extends CPAC_Storage_Model {
/**
* Identifies submenu entry in the Admin sidebar, e.g., Media/Assistant in Media
*
* @since 2.25
* @var string
*/
public $subpage;
/**
* Initializes some properties, installs filters and then
* calls the parent constructor to set some default configs.
*
* @since 2.22
*/
public function __construct() {
$this->key = 'mla-media-assistant';
$this->label = __( 'Media Library Assistant' );
$this->singular_label = __( 'Assistant' );
$this->type = 'media';
$this->meta_type = 'post';
$this->page = 'upload';
$this->subpage = MLACore::ADMIN_PAGE_SLUG;
$this->post_type = 'attachment';
$this->menu_type = 'other';
// Increased the priority to overrule 3th party plugins such as Media Tags
add_filter( 'manage_media_page_' . MLACore::ADMIN_PAGE_SLUG . '_columns', array( $this, 'add_headings' ), 100 );
add_filter( 'mla_list_table_column_default', array( $this, 'mla_manage_value' ), 100, 3 );
parent::__construct();
}
/**
* Added in Admin Columns update to v2.4.9
*
* @since 2.23
*/
public function init_manage_columns() {
//add_filter( "manage_{$this->page}_columns", array( $this, 'add_headings' ), 100 );
//add_action( 'manage_comments_custom_column', array( $this, 'manage_value' ), 100, 2 );
}
/**
* Returns the Media/Assistant submenu table column definitions
*
* @since 2.22
*
* @return array ( 'column_slug' => 'column_heading' )
*/
public function get_default_columns() {
if ( ! class_exists( 'MLAQuery' ) ) {
require_once( MLA_PLUGIN_PATH . 'includes/class-mla-data-query.php' );
MLAQuery::initialize();
}
return apply_filters( 'mla_list_table_get_columns', MLAQuery::$default_columns );
}
/**
* Returns the Media/Assistant submenu table column slugs/keys
*
* @since 2.22
*
* @return array ( index => 'column_slug' )
*/
public function get_default_column_names() {
if ( ! class_exists( 'MLAQuery' ) ) {
require_once( MLA_PLUGIN_PATH . 'includes/class-mla-data-query.php' );
MLAQuery::initialize();
}
return array_keys( apply_filters( 'mla_list_table_get_columns', MLAQuery::$default_columns ) );
}
/**
* Returns the custom fields assigned to Media Library items, removing those already present
* in the Media/Assistant submenu table
*
* @since 2.22
*
* @return array ( index => array( 0 => 'custom field name' ) )
*/
public function get_meta() {
global $wpdb;
/*
* Find all of the custom field names assigned to Media Library items
*/
$meta = $wpdb->get_results( "SELECT DISTINCT meta_key FROM {$wpdb->postmeta} pm JOIN {$wpdb->posts} p ON pm.post_id = p.ID WHERE p.post_type = 'attachment' ORDER BY 1", ARRAY_N );
//error_log( __LINE__ . ' CPAC_Deprecated_Storage_Model_MLA::get_meta meta = ' . var_export( $meta, true ), 0 );
/*
* Find the fields already present in the submenu table
*/
$mla_columns = apply_filters( 'mla_list_table_get_columns', MLAQuery::$default_columns );
//error_log( __LINE__ . ' CPAC_Deprecated_Storage_Model_MLA::get_meta mla_columns = ' . var_export( $mla_columns, true ), 0 );
$mla_custom = array();
foreach ( $mla_columns as $slug => $heading ) {
if ( 'c_' === substr( $slug, 0, 2 ) ) {
$mla_custom[] = $heading;
}
}
//error_log( __LINE__ . ' CPAC_Deprecated_Storage_Model_MLA::get_meta mla_custom = ' . var_export( $mla_custom, true ), 0 );
/*
* Remove the fields already present in the submenu table
*/
foreach ( $meta as $index => $value ) {
if ( in_array( esc_html( current( $value ) ), $mla_custom ) ) {
unset( $meta[ $index ] );
}
}
//error_log( __LINE__ . ' CPAC_Deprecated_Storage_Model_MLA::get_meta meta = ' . var_export( $meta, true ), 0 );
return $meta;
}
/**
* Return the content of an Admin Columns custom column
*
* @since 2.22
*
* @param string $content Current column content (empty string)
* @param object $item Current Media Library item
* @param string $column_name Current column slug
*
* @return string Column value or NULL if not an Admin Columns custom column
*/
public function mla_manage_value( $content, $item, $column_name ) {
$media_id = $item->ID;
if ( ! ( $column = $this->get_column_by_name( $column_name ) ) ) {
return null;
}
$value = $column->get_value( $media_id );
// hooks
$value = apply_filters( "cac/column/value", $value, $media_id, $column, $this->key );
$value = apply_filters( "cac/column/value/{$this->type}", $value, $media_id, $column, $this->key );
return $value;
}
/**
* Test for current screen = the Media/Assistant submenu screen,
* For Admin Columns 2.4.9+
*
* @since 2.23
*
* @return boolean true if the Media/Assistant submenu is the current screen
*/
public function is_current_screen() {
$is_current_screen = parent::is_current_screen();
if ( ! $is_current_screen ) {
if ( ! empty( $_REQUEST['page'] ) && MLACore::ADMIN_PAGE_SLUG == $_REQUEST['page'] ) {
$is_current_screen = true;
}
}
return $is_current_screen;
}
/**
* Test for current screen = the Media/Assistant submenu screen
*
* @since 2.22
*
* @return boolean true if the Media/Assistant submenu is the current screen
*/
public function is_columns_screen() {
$is_columns_screen = parent::is_columns_screen();
if ( ! $is_columns_screen ) {
if ( ! empty( $_REQUEST['page'] ) && MLACore::ADMIN_PAGE_SLUG == $_REQUEST['page'] ) {
$is_columns_screen = true;
}
}
return $is_columns_screen;
}
/**
* Return a link to the Media/Assistant submenu screen
*
* @since 2.22
*
* @return string Link to the Media/Assistant submenu screen
*/
protected function get_screen_link() {
return is_network_admin() ? network_admin_url( $this->page . '.php?page=' . MLACore::ADMIN_PAGE_SLUG ) : admin_url( $this->page . '.php?page=' . MLACore::ADMIN_PAGE_SLUG );
}
/**
* Return a link to the Media/Assistant submenu Edit columns screen
*
* @since 2.22
*
* @return string Link to the Media/Assistant submenu Edit columns screen
*/
public function get_edit_link() {
return add_query_arg( array(
'page' => 'codepress-admin-columns',
'cpac_key' => $this->key,
), admin_url( 'options-general.php' ) );
}
} // class CPAC_Storage_Model_MLA