Overview
  • Namespace
  • Class

Namespaces

  • MatthiasWeb
    • RealMediaLibrary
      • api
      • attachment
      • base
      • comp
        • complexquery
      • folder
      • general
      • metadata
      • order
      • rest
      • usersettings
  • None

Classes

  • MatthiasWeb\RealMediaLibrary\attachment\CountCache
  • MatthiasWeb\RealMediaLibrary\attachment\CustomField
  • MatthiasWeb\RealMediaLibrary\attachment\Filter
  • MatthiasWeb\RealMediaLibrary\attachment\Permissions
  • MatthiasWeb\RealMediaLibrary\attachment\Shortcut
  • MatthiasWeb\RealMediaLibrary\attachment\Structure
  • MatthiasWeb\RealMediaLibrary\attachment\Upload
  • MatthiasWeb\RealMediaLibrary\base\Assets
  • MatthiasWeb\RealMediaLibrary\base\Base
  • MatthiasWeb\RealMediaLibrary\base\Core
  • MatthiasWeb\RealMediaLibrary\comp\complexquery\ComplexQuery
  • MatthiasWeb\RealMediaLibrary\comp\complexquery\ResetNames
  • MatthiasWeb\RealMediaLibrary\comp\ExImport
  • MatthiasWeb\RealMediaLibrary\comp\PageBuilders
  • MatthiasWeb\RealMediaLibrary\comp\PolyLang
  • MatthiasWeb\RealMediaLibrary\comp\WPML
  • MatthiasWeb\RealMediaLibrary\folder\BaseFolder
  • MatthiasWeb\RealMediaLibrary\folder\Collection
  • MatthiasWeb\RealMediaLibrary\folder\Creatable
  • MatthiasWeb\RealMediaLibrary\folder\CRUD
  • MatthiasWeb\RealMediaLibrary\folder\Folder
  • MatthiasWeb\RealMediaLibrary\folder\Gallery
  • MatthiasWeb\RealMediaLibrary\folder\Root
  • MatthiasWeb\RealMediaLibrary\general\Activator
  • MatthiasWeb\RealMediaLibrary\general\Assets
  • MatthiasWeb\RealMediaLibrary\general\Core
  • MatthiasWeb\RealMediaLibrary\general\FolderShortcode
  • MatthiasWeb\RealMediaLibrary\general\Lang
  • MatthiasWeb\RealMediaLibrary\general\Migration
  • MatthiasWeb\RealMediaLibrary\general\Options
  • MatthiasWeb\RealMediaLibrary\general\QueryCount
  • MatthiasWeb\RealMediaLibrary\general\Util
  • MatthiasWeb\RealMediaLibrary\general\View
  • MatthiasWeb\RealMediaLibrary\metadata\CoverImage
  • MatthiasWeb\RealMediaLibrary\metadata\Description
  • MatthiasWeb\RealMediaLibrary\metadata\Meta
  • MatthiasWeb\RealMediaLibrary\order\GalleryOrder
  • MatthiasWeb\RealMediaLibrary\order\Sortable
  • MatthiasWeb\RealMediaLibrary\rest\Attachment
  • MatthiasWeb\RealMediaLibrary\rest\Folder
  • MatthiasWeb\RealMediaLibrary\rest\Reset
  • MatthiasWeb\RealMediaLibrary\rest\Service
  • MatthiasWeb\RealMediaLibrary\usersettings\Demo

Interfaces

  • MatthiasWeb\RealMediaLibrary\api\IFolder
  • MatthiasWeb\RealMediaLibrary\api\IFolderActions
  • MatthiasWeb\RealMediaLibrary\api\IFolderContent
  • MatthiasWeb\RealMediaLibrary\api\IMetadata
  • MatthiasWeb\RealMediaLibrary\api\IStructure
  • MatthiasWeb\RealMediaLibrary\api\IUserSettings

Exceptions

  • MatthiasWeb\RealMediaLibrary\general\FolderAlreadyExistsException

Functions

  • _wp_rml_active
  • _wp_rml_root
  • _wp_rml_sanitize
  • _wp_rml_sanitize_filename
  • add_media_folder_meta
  • add_rml_meta_box
  • add_rml_user_settings_box
  • delete_media_folder_meta
  • delete_media_folder_meta_by_key
  • get_media_folder_meta
  • is_rml_folder
  • rml_skip_php_admin_notice
  • rml_skip_rest_admin_notice
  • rml_skip_wp_admin_notice
  • truncate_media_folder_meta
  • update_media_folder_meta
  • wp_attachment_ensure_source_file
  • wp_attachment_folder
  • wp_attachment_get_shortcuts
  • wp_attachment_has_shortcuts
  • wp_attachment_is_shortcut
  • wp_attachment_order_update
  • wp_rml_create
  • wp_rml_create_all_children_sql
  • wp_rml_create_all_parents_sql
  • wp_rml_create_or_return_existing_id
  • wp_rml_create_shortcuts
  • wp_rml_created_shortcuts_last_ids
  • wp_rml_delete
  • wp_rml_dropdown
  • wp_rml_dropdown_collection
  • wp_rml_dropdown_gallery
  • wp_rml_dropdown_gallery_or_collection
  • wp_rml_get_attachments
  • wp_rml_get_by_absolute_path
  • wp_rml_get_by_id
  • wp_rml_get_object_by_id
  • wp_rml_get_parent_id
  • wp_rml_is_type
  • wp_rml_move
  • wp_rml_objects
  • wp_rml_register_creatable
  • wp_rml_rename
  • wp_rml_root_childs
  • wp_rml_structure
  • wp_rml_structure_reset
  • wp_rml_update_count
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 
<?php
namespace MatthiasWeb\RealMediaLibrary\general;
use MatthiasWeb\RealMediaLibrary\base;
use MatthiasWeb\RealMediaLibrary\attachment;
use MatthiasWeb\RealMediaLibrary\folder;

defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

/**
 * Handles the shortcode for [folder-gallery].
 */
class FolderShortcode extends base\Base {
    private static $me = null;
    
    public static $TAG = 'folder-gallery';
    
    function __construct($args = array()){
        if (is_admin()){
            add_action('admin_head', array($this, 'admin_head'));
            add_action('RML/Localize', array($this, 'localize'));
        }
    }
    
    function admin_head() {
        // check user permissions
        if (!current_user_can( 'edit_posts' ) && !current_user_can( 'edit_pages' )) {
            return;
        }
 
        // check if WYSIWYG is enabled
        if ('true' == get_user_option( 'rich_editing' )) {
            add_filter('mce_external_plugins', array( $this ,'mce_external_plugins' ));
            add_filter('mce_buttons', array($this, 'mce_buttons' ));
        }
    }
    
    public function shortcode_atts_gallery($out, $pairs, $atts) {
        $atts = shortcode_atts( array(
            'fid' => -2,
            'order' => 'DESC',
            'orderby' => 'date'
        ), $atts );
        
        // RML order is only available with ASC
        if ($atts["orderby"] == "rml") {
            $out["orderby"] = "menu_order ID";
        }
        
        if ($atts["fid"] > -2) {
            if ($atts["fid"] > -1) {
                $folder = wp_rml_get_object_by_id($atts["fid"]);
                if ($folder != null) {
                    $out["include"] .= ',' . implode(',', $folder->read($atts["order"], $atts["orderby"]));
                }
            }else{
                $out["include"] .= ',' . implode(',', folder\Creatable::xread(-1, $atts["order"], $atts["orderby"]));
            }
            $out["include"] = ltrim($out["include"], ',');
            $out["include"] = rtrim($out["include"], ',');
        }
        
        // Overwrite the default order by this shortcode
        if (isset($out["orderby"]) && $out["orderby"] == "menu_order ID") {
            $out["orderby"] = "post__in";
        }
        
        return $out;
    }
    
    /**
     * Localized variables for TinyMCE shortcode generator.
     */
    public function localize($arr) {
        $arr["mce"] = array(
            'mceButtonTooltip' => __('Gallery from Media Folder', RML_TD),
            'mceListBoxDirsTooltip' => __('Note: You can only select galleries. Folders and collections are grayed.', RML_TD),
            'mceBodyGallery' => __('Folder', RML_TD),
            'mceBodyLinkTo' => __('Link to'),
            'mceBodyColumns' => __('Columns'),
            'mceBodyRandomOrder' => __('Random Order'),
            'mceBodySize' => __('Size'),
            'mceBodyLinkToValues' => array(
                array("value" => "post", "text" => __('Attachment File')),
                array("value" => "file", "text" => __('Media File')),
                array("value" => "none", "text" => __('None'))
            ),
            'mceBodySizeValues' => array(
                array("value" => "thumbnail", "text" => __('Thumbnail')),
                array("value" => "medium", "text" => __('Medium')),
                array("value" => "large", "text" => __('Large')),
                array("value" => "full", "text" => __('Full Size'))
            )
        );
        return $arr;
    }
 
    function mce_external_plugins( $plugin_array ) {
        $min = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG === true ? '' : '.min';
        $assets = $this->getCore()->getAssets();
        $dir = $assets->isScriptDebug() ? "dev" : "dist";
        $plugin_array[self::$TAG] = plugins_url('public/' . $dir . '/rml_shortcode' . $min . '.js' , RML_FILE );
        return $plugin_array;
    }
 
    function mce_buttons( $buttons ) {
        array_push($buttons, self::$TAG);
        return $buttons;
    }

    public static function getInstance() {
        if (self::$me == null) {
            self::$me = new FolderShortcode();
        }
        return self::$me;
    }
}
API documentation generated by ApiGen