<?php namespace BitApps\FM\Providers; \defined('ABSPATH') or exit(); class MediaSynchronizer { public $wp_upload_directory; function __construct() { require_once ABSPATH . 'wp-admin/includes/image.php'; $this->wp_upload_directory = wp_upload_dir(); $this->wp_upload_directory = $this->wp_upload_directory['path']; } // Triggers when a file is uploaded and initiates the uploading process for single or batch files. public function onFileUpload($cmd, &$result, $args, $elfinder, $volume) { $targetPath = $volume->getPath($args['target']); if (strpos($targetPath, $this->wp_upload_directory) !== false) { $images = []; for ($file = 0; $file < \count($args['FILES']['upload']['name']); $file++) { $images[] = [ 'name' => $args['FILES']['upload']['name'][$file], 'type' => wp_check_filetype($args['FILES']['upload']['name'][$file], null), 'path' => trailingslashit($targetPath) . $args['FILES']['upload']['name'][$file], 'url' => $this->abs_path_to_url( trailingslashit($targetPath) . $args['FILES']['upload']['name'][$file] ), ]; } $this->add_media($images); } } private function add_media($images) { foreach ($images as $image) { $attachment = [ 'post_mime_type' => $image['type']['type'], 'post_title' => sanitize_file_name($image['name']), ]; $attachmentId = wp_insert_attachment($attachment, $image['path']); $attachData = wp_generate_attachment_metadata($attachmentId, $image['path']); wp_update_attachment_metadata($attachmentId, $attachData); } } private function abs_path_to_url($path = '') { $url = str_replace( wp_normalize_path(untrailingslashit(ABSPATH)), site_url(), wp_normalize_path($path) ); return esc_url_raw($url); } }