* @since 0.1.0-alpha * @version 1.0.0 * @copyright 2016-2018 Eoxia * @package EO_Framework\EO_Upload\Action */ namespace eoxia; if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( '\eoxia\WPEO_Upload_Action' ) ) { /** * Actions for wpeo_upload. */ class WPEO_Upload_Action { /** * Add actions * * @since 0.1.0-alpha * @version 1.0.0 */ public function __construct() { add_action( 'admin_enqueue_scripts', array( $this, 'callback_admin_scripts' ) ); add_action( 'init', array( $this, 'callback_plugins_loaded' ) ); add_action( 'wp_ajax_eo_upload_associate_file', array( $this, 'callback_associate_file' ) ); add_action( 'wp_ajax_eo_upload_dissociate_file', array( $this, 'callback_dissociate_file' ) ); add_action( 'wp_ajax_eo_upload_load_gallery', array( $this, 'callback_load_gallery' ) ); add_action( 'wp_ajax_eo_upload_set_thumbnail', array( $this, 'callback_set_thumbnail' ) ); } /** * Charges le CSS et le JS de WPEO_Upload * * @since 1.0.0 * @version 1.0.0 */ public function callback_admin_scripts() { wp_enqueue_style( 'wpeo_upload_style', \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->url . '/assets/css/style.css', array() ); wp_enqueue_script( 'wpeo_upload_script', \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->url . '/assets/js/wpeo-upload.js', array( 'jquery' ), \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->version ); } /** * Initialise le fichier MO * * @since 1.0.0 * @version 1.0.0 */ public function callback_plugins_loaded() { $path = str_replace( str_replace( '\\', '/', WP_PLUGIN_DIR ), '', str_replace( '\\', '/', \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path ) ); load_plugin_textdomain( 'wpeo-upload', false, $path . '/asset/language/' ); } /** * Associate a file to an element. * * @since 0.1.0-alpha * @version 1.0.0 * * @return void * @todo: nonce */ public function callback_associate_file() { // check_ajax_referer( 'associate_file' ); $data = WPEO_Upload_Class::g()->get_post_data( 'associate_file' ); $view = ''; $document_view = ''; // If post ID is not empty. if ( ! empty( $data['id'] ) ) { if ( 'true' === $data['single'] ) { $element = WPEO_Upload_Class::g()->set_thumbnail( $data ); } else { $element = WPEO_Upload_Class::g()->associate_file( $data ); if ( empty( $element->data['thumbnail_id'] ) ) { $element = WPEO_Upload_Class::g()->set_thumbnail( $data ); } } if ( ! empty( $element->data['id'] ) ) { ob_start(); do_shortcode( '[wpeo_upload id="' . $element->data['id'] . '" model_name="' . str_replace( '\\', '/', $data['model_name'] ) . '" field_name="' . $data['field_name'] . '" mime_type="' . $data['mime_type'] . '" single="' . $data['single'] . '" size="' . $data['size'] . '" ]' ); $view = ob_get_clean(); } } else { if ( 'application' === $data['mime_type'] ) { $document_view = '
'; } } if ( 'list' === $data['display_type'] ) { $filelink = get_attached_file( $data['file_id'] ); $filename_only = basename( $filelink ); $fileurl_only = wp_get_attachment_url( $data['file_id'] ); ob_start(); require \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/' . $data['display_type'] . '/list-item.view.php'; $view = ob_get_clean(); } $media_view = wp_get_attachment_image( $data['file_id'], $data['size'] ); wp_send_json_success( array( 'view' => $view, 'document_view' => $document_view, 'id' => $data['id'], 'display_type' => $data['display_type'], 'media' => ! empty( $media_view ) ? $media_view : '', ) ); } /** * Delete the index founded in the array * * @since 0.1.0-alpha * @version 1.0.0 * * @return void */ public function callback_dissociate_file() { $data = WPEO_Upload_Class::g()->get_post_data( 'dissociate_file' ); $element = WPEO_Upload_Class::g()->dissociate_file( $data ); ob_start(); do_shortcode( '[wpeo_upload id="' . $element->data['date']['id'] . '" model_name="' . str_replace( '\\', '/', $data['model_name'] ) . '" field_name="' . $data['field_name'] . '" mime_type="' . $data['mime_type'] . '" single="' . $data['single'] . '" size="' . $data['size'] . '" ]' ); wp_send_json_success( array( 'namespace' => '', 'module' => 'gallery', 'callback_success' => 'dissociatedFileSuccess', 'view' => ob_get_clean(), 'id' => $data['id'], 'close_popup' => ! empty( $element->data['data']['associated_document_id'][ $data['field_name'] ] ) ? false : true, ) ); } /** * Load all image and return the display gallery view. * * @since 0.1.0-alpha * @version 1.0.0 * * @return void */ public function callback_load_gallery() { // check_ajax_referer( 'load_gallery' ); $data = WPEO_Upload_Class::g()->get_post_data( 'load_gallery' ); ob_start(); require( \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/' . $data['display_type'] . '/gallery/button-add.view.php' ); $data['title'] .= ob_get_clean(); ob_start(); WPEO_Upload_Class::g()->display_gallery( $data ); wp_send_json_success( array( 'view' => ob_get_clean(), ) ); } /** * Update the thumbnail of an element. * The thumbnail ID is not used. The thumbnail of an element is the first index of the array $field_name. * * @since 0.1.0-alpha * @version 1.0.0 * * @return void */ public function callback_set_thumbnail() { $data = WPEO_Upload_Class::g()->get_post_data( 'set_thumbnail' ); $element = WPEO_Upload_Class::g()->set_thumbnail( $data ); ob_start(); do_shortcode( '[wpeo_upload id="' . $element->data['id'] . '" model_name="' . str_replace( '\\', '/', $data['model_name'] ) . '" field_name="' . $data['field_name'] . '" mime_type="' . $data['mime_type'] . '" single="' . $data['single'] . '" size="' . $data['size'] . '" ]' ); wp_send_json_success( array( 'namespace' => '', 'module' => 'gallery', 'callback_success' => 'successfulSetThumbnail', 'view' => ob_get_clean(), 'id' => $data['id'], 'file_id' => $data['file_id'], ) ); } } new WPEO_Upload_Action(); }