wp_back/wp-content/plugins/visual-portfolio/classes/class-image-placeholder.php
2024-05-20 15:37:46 +03:00

94 lines
2.7 KiB
PHP

<?php
/**
* Image placeholder.
*
* @package visual-portfolio
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Class Visual_Portfolio_Image_Placeholder
*/
class Visual_Portfolio_Image_Placeholder {
/**
* Visual_Portfolio_Image_Placeholder constructor.
*/
public function __construct() {
if ( is_admin() ) {
add_action( 'admin_init', array( $this, 'create_placeholder_image' ), 3 );
} else {
add_action( 'wp', array( $this, 'create_placeholder_image' ), 3 );
}
}
/**
* Create a placeholder image in the media library.
* For code thanks to WooCommerce.
*/
public function create_placeholder_image() {
// Run only on first plugin install.
// This option added in Migration class.
if ( get_option( 'vpf_db_version' ) ) {
return;
}
$general_settings = get_option( 'vp_general' );
if ( ! is_array( $general_settings ) ) {
$general_settings = array();
}
// Don't run when already added placeholder.
if ( isset( $general_settings['no_image'] ) && $general_settings['no_image'] ) {
return;
}
// Upload placeholder image to Media Library.
$upload_dir = wp_upload_dir();
$source = visual_portfolio()->plugin_path . '/assets/images/placeholder.png';
$filename = $upload_dir['basedir'] . '/visual-portfolio/placeholder.png';
// try to move to /visual-portfolio/ directory.
if ( ! file_exists( $upload_dir['basedir'] . '/visual-portfolio' ) ) {
// phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged
@mkdir( $upload_dir['basedir'] . '/visual-portfolio', 0755, true );
}
if ( ! file_exists( $upload_dir['basedir'] . '/visual-portfolio' ) ) {
$filename = $upload_dir['basedir'] . '/visual-portfolio-placeholder.png';
}
if ( ! file_exists( $filename ) ) {
copy( $source, $filename );
}
if ( ! file_exists( $filename ) ) {
return;
}
$filetype = wp_check_filetype( basename( $filename ), null );
$attachment = array(
'guid' => $upload_dir['url'] . '/' . basename( $filename ),
'post_mime_type' => $filetype['type'],
'post_title' => preg_replace( '/\.[^.]+$/', '', basename( $filename ) ),
'post_content' => '',
'post_status' => 'inherit',
);
$attach_id = wp_insert_attachment( $attachment, $filename );
// Update settings.
$general_settings['no_image'] = $attach_id;
update_option( 'vp_general', $general_settings );
// Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
require_once ABSPATH . 'wp-admin/includes/image.php';
// Generate the metadata for the attachment, and update the database record.
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
}
}
new Visual_Portfolio_Image_Placeholder();