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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
<?php
namespace MatthiasWeb\RealMediaLibrary\attachment;
use MatthiasWeb\RealMediaLibrary\general;
use MatthiasWeb\RealMediaLibrary\base;
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
class CustomField extends base\Base {
private static $me = null;
private function __construct() {
}
public function attachment_fields_to_edit($form_fields, $post) {
$folderID = wp_attachment_folder($post->ID);
$editable = true;
if ($folderID > 0) {
$folder = wp_rml_get_object_by_id($folderID);
$editable = is_rml_folder($folder) && !$folder->isRestrictFor("mov");
}
$textToMove = wp_attachment_is_shortcut($post->ID)
? __("When you move this shortcut, the folder location of the source/main file will not be changed.", RML_TD)
: __("When you move this attachment, the folder location of the associated shortcuts of this attachment will not be changed.", RML_TD);
$form_fields['rml_dir'] = array(
'label' => __('Folder', RML_TD),
'input' => 'html',
'html' => '<div class="rml-folder-edit">' .
($editable ? '<select class="rml-wprfc" data-wprfc="customField" data-selected="' . esc_attr($folderID) . '" name="attachments[' . $post->ID . '][rml_folder]"></select>' : '') .
Structure::getInstance()->getView()->breadcrumb($folderID, $editable) .
'</div><p class="description">' . $textToMove . '</p>'
);
$form_fields['rml_shortcut'] = array(
'label' => '',
'input' => 'html',
'html' => '<div class="rml-wprfc" data-wprfc="shortcutInfo" data-id="' . $post->ID . '"></div><script>jQuery(function() { window.rml.hooks.call("wprfc"); });</script>'
);
return $form_fields;
}
public function getShortcutInfoContainer($postId) {
$post = get_post($postId);
$output = "";
if ($post !== null) {
$output = '<div class="rml-shortcut-info-container" data-id="' . $postId . '">
<div style="clear:both;"></div>
<h2>' . __('Shortcut infos', RML_TD) . '</h2>';
$shortcut = wp_attachment_is_shortcut($post, true);
$output .= '<p class="description">';
if ($shortcut > 0) {
$output .= __('This is a shortcut of a media library file. Shortcuts doesn\'t need any physical storage <strong>(0kb)</strong>. If you want to change the file itself, you must do this in the original file (for example replace media file through a plugin).<br/>Note also that the fields in the shortcuts can be different to the original file, for example "Title", "Description" or "Caption".', RML_TD) . '
<a target="_blank" href="' . admin_url("post.php?post=" . $shortcut . "&action=edit") . '">Open original file.</a>';
}else{
$shortcuts = wp_attachment_get_shortcuts($post->ID, false, true);
$shortcutsCnt = count($shortcuts);
if ($shortcutsCnt > 0) {
$output .= sprintf(_n("For this file is one shortcut available in the following folder:", "For this file are %s shortcuts available in the following folders:", $shortcutsCnt, RML_TD), $shortcutsCnt);
foreach ($shortcuts as $value) {
$folderName = $value["folderId"] == "-1" ? wp_rml_get_object_by_id(-1)->getName(true) : htmlentities($value["name"]);
$output .= '<div>';
$output .= $folderName . ' (<a target="_blank" href="' . admin_url("post.php?post=" . $value["attachment"] . "&action=edit") . '">Open shortcut file</a>)';
$output .= '</div>';
}
}else{
$output .= __("This file has no associated shortcuts. You can create shortcuts by moving files per mouse and hold any key.", RML_TD);
}
}
$output .= '</p>';
apply_filters("RML/Shortcut/Info", $output, $post, $shortcut);
$output .= '</div>';
}
return $output;
}
public function attachment_fields_to_save($post, $attachment) {
if (isset($attachment['rml_folder'])){
if (wp_rml_get_object_by_id($attachment['rml_folder']) === null) {
$attachment['rml_folder'] = _wp_rml_root();
}
$updateCount = array(wp_attachment_folder($post["ID"]), $attachment["rml_folder"]);
$result = wp_rml_move($attachment['rml_folder'], array($post['ID']));
if (is_array($result)) {
$post['errors']['rml_folder']['errors'][] = implode(" ", $result);
}
CountCache::getInstance()->resetCountCache($updateCount);
}
return $post;
}
public static function getInstance() {
if (self::$me == null) {
self::$me = new CustomField();
}
return self::$me;
}
}