94 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			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();
 |