* @since 0.1.0-alpha * @version 1.0.0 * @copyright 2017-2018 Eoxia * @package EO_Framework\EO_Upload\Class */ namespace eoxia; if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( '\eoxia\WPEO_Upload_Class' ) ) { /** * All methods utils for associate, dessociate and anothers things about upload. */ class WPEO_Upload_Class extends \eoxia\Singleton_Util { /** * Need to be declared for Singleton_Util. * * @since 0.1.0-alpha * @version 0.1.0-alpha */ protected function construct() {} /** * Get and sanitize $_POST data and return it. * * @since 1.0.0 * @version 1.0.0 * * @param string $nonce_name Nonce name from the request AJAX. * * @return array $param { * Les variables renvoyées. * * @type integer $id The id of the POST Element (Can be a custom post). * @type string $title The popup title. * @type string $mode Can be "edit" or "view". * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". * @type string $custom_class Add custom class. * @type string $size The size of the box (button for upload or open the gallery). * @type boolean $single One media or more. * @type string $mime_type Can be application/document, application/png or empty for all mime types. * @type string $display_type Can be box or list. By default box. * @type integer $file_id The uploaded file ID. * } */ public function get_post_data( $nonce_name ) { // check_ajax_referer( $nonce_name ); $data = array(); $data['id'] = ! empty( $_POST['id'] ) ? (int) $_POST['id'] : 0; $data['title'] = ! empty( $_POST['title'] ) ? sanitize_text_field( $_POST['title'] ) : ''; $data['mode'] = ! empty( $_POST['mode'] ) ? sanitize_text_field( $_POST['mode'] ) : ''; $data['field_name'] = ! empty( $_POST['field_name'] ) ? sanitize_text_field( $_POST['field_name'] ) : ''; $data['model_name'] = ! empty( $_POST['model_name'] ) ? stripslashes( sanitize_text_field( $_POST['model_name'] ) ) : ''; $data['custom_class'] = ! empty( $_POST['custom_class'] ) ? stripslashes( sanitize_text_field( $_POST['custom_class'] ) ) : ''; $data['size'] = ! empty( $_POST['size'] ) ? sanitize_text_field( $_POST['size'] ) : 'thumbnail'; $data['single'] = ! empty( $_POST['single'] ) ? sanitize_text_field( $_POST['single'] ) : 'false'; $data['mime_type'] = ! empty( $_POST['mime_type'] ) ? sanitize_text_field( $_POST['mime_type'] ) : ''; $data['display_type'] = ! empty( $_POST['display_type'] ) ? sanitize_text_field( $_POST['display_type'] ) : ''; $data['file_id'] = ! empty( $_POST['file_id'] ) ? (int) $_POST['file_id'] : 0; return $data; } /** * Associate the file_id in the Object. * * @since 0.1.0-alpha * @version 1.0.0 * * @param array $data { * Les variables du tableau. * * @type integer $id The id of the POST Element (Can be a custom post). * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". * @type integer $file_id The uploaded file ID. * } * * @return mixed */ public function associate_file( $data ) { $element = null; if ( ! empty( $data['id'] ) ) { $element = $data['model_name']::g()->get( array( 'id' => $data['id'], ), true ); $element->data['associated_document_id'][ $data['field_name'] ][] = (int) $data['file_id']; $data['model_name']::g()->update( $element->data ); } return $element; } /** * Dessociate the file_id in the Object. * * @since 0.1.0-alpha * @version 1.0.0 * * @param array $data { * Les variables du tableau. * * @type integer $id The id of the POST Element (Can be a custom post). * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". * @type integer $file_id The uploaded file ID. * } * * @return mixed */ public function dissociate_file( $data ) { $element = $data['model_name']::g()->get( array( 'id' => $data['id'], ), true ); // Check if the file is in associated file list. if ( isset( $element->data['associated_document_id'] ) && isset( $element->data['associated_document_id'][ $data['field_name'] ] ) ) { $key = array_search( $data['file_id'], $element->data['associated_document_id'][ $data['field_name'] ], true ); if ( false !== $key ) { array_splice( $element->data['associated_document_id'][ $data['field_name'] ], $key, 1 ); } } // Check if the file is set as thumbnail. if ( $data['file_id'] === $element->data['thumbnail_id'] ) { $element->data['thumbnail_id'] = 0; } // Set another thumbnail id. if ( empty( $element->data['thumbnail_id'] ) && ! empty( $element->data['associated_document_id'][ $data['field_name'] ] ) ) { $element->data['thumbnail_id'] = $element->data['associated_document_id'][ $data['field_name'] ][0]; } $data['model_name']::g()->update( $element->data ); return $element; } /** * Load and display the gallery. * * @since 0.1.0-alpha * @version 1.0.0 * * @param array $data { * Les variables du tableau. * * @type integer $id The id of the POST Element (Can be a custom post). * @type string $title The popup title. * @type string $mode Can be "edit" or "view". * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". * @type string $custom_class Add custom class. * @type string $size The size of the box (button for upload or open the gallery). * @type boolean $single One media or more. * @type string $mime_type Can be application/document, application/png or empty for all mime types. * @type string $display_type Can be box or list. By default box. * @type integer $file_id The uploaded file ID. * } * * @return void */ public function display_gallery( $data ) { $element = $data['model_name']::g()->get( array( 'id' => $data['id'], ), true ); $main_picture_id = $element->data['thumbnail_id']; if ( empty( $main_picture_id ) ) { $main_picture_id = $element->data['associated_document_id'][ $data['field_name'] ][0]; } $list_id = ! empty( $element->data['associated_document_id'][ $data['field_name'] ] ) ? $element->data['associated_document_id'][ $data['field_name'] ] : array(); require \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/box/gallery/main.view.php'; } /** * Set the thumbnail. * * @since 0.1.0-alpha * @version 1.0.0 * * @param array $data { * Les variables du tableau. * * @type integer $id The id of the POST Element (Can be a custom post). * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". * @type integer $file_id The uploaded file ID. * } * * @return mixed */ public function set_thumbnail( $data ) { $element = $data['model_name']::g()->get( array( 'id' => $data['id'] ), true ); $element->data['thumbnail_id'] = $data['file_id']; $element = $data['model_name']::g()->update( $element->data ); return $element; } /** * Output all attributes to send to the AJAX request. * * @since 1.0.0 * @version 1.0.0 * * @param array $data { * Les variables du tableau. * * @type integer $id The id of the POST Element (Can be a custom post). * @type string $title The popup title. * @type string $mode Can be "edit" or "view". * @type string $field_name For use "_thumbnail_id" postmeta of WordPress let it empty. * @type string $model_name Say to WPEO_Model the model used. Write double slashes when use in shortcode. This method convert it from "//" to "\". * @type string $custom_class Add custom class. * @type string $size The size of the box (button for upload or open the gallery). * @type boolean $single One media or more. * @type string $mime_type Can be application/document, application/png or empty for all mime types. * @type string $display_type Can be box or list. By default box. * @type integer $file_id The uploaded file ID. * } * * @return void */ public function out_all_attributes( $data ) { require \eoxia\Config_Util::$init['eo-framework']->wpeo_upload->path . '/view/box/gallery/attributes.view.php'; } } WPEO_Upload_Class::g(); }