• File: class-image-placeholder.php
  • Full Path: /home/matthif/www/wp-content/plugins/visual-portfolio/classes/class-image-placeholder.php
  • Date Modified: 12/12/2023 4:36 AM
  • File size: 2.73 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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' ), );
        } else {
            
add_action'wp', array( $this'create_placeholder_image' ), );
        }
    }

    
/**
     * 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'0755true );
        }
        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_filetypebasename$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();