plugins.trac.wordpress.org
Open in
urlscan Pro
198.143.164.244
Public Scan
Submitted URL: https://plugins.trac.wordpress.org/browser/mediamatic/trunk/inc/sidebar.php?rev=2652957#L343
Effective URL: https://plugins.trac.wordpress.org/browser/mediamatic/trunk/inc/sidebar.php?rev=2652957
Submission: On January 25 via api from US — Scanned from DE
Effective URL: https://plugins.trac.wordpress.org/browser/mediamatic/trunk/inc/sidebar.php?rev=2652957
Submission: On January 25 via api from US — Scanned from DE
Form analysis
5 forms found in the DOMGET https://wordpress.org/search/do-search.php
<form action="https://wordpress.org/search/do-search.php" method="get">
<label for="global-search" class="screen-reader-text">Search WordPress.org for:</label>
<input id="global-search" class="text" name="search" type="text" value="" maxlength="150" placeholder="Search WordPress.org">
<button type="submit" class="button"><span class="screen-reader-text">Submit</span></button>
</form>
GET /search
<form id="search" action="/search" method="get">
<div>
<label for="proj-search">Search:</label>
<input type="text" id="proj-search" name="q" size="18" value="">
<input type="submit" value="Search">
</div>
</form>
GET /changeset
<form action="/changeset" method="get">
<div>
<label title="Show the diff against a specific revision"> View diff against: <input type="text" name="old" size="6">
<input type="hidden" name="old_path" value="mediamatic/trunk/inc/sidebar.php">
<input type="hidden" name="new" value="2652957">
<input type="hidden" name="new_path" value="mediamatic/trunk/inc/sidebar.php">
</label>
</div>
</form>
GET
<form action="" method="get">
<div>
<label for="rev" title="Hint: clear the field to view latest revision"> View revision:</label>
<input type="text" id="rev" name="rev" value="2652957" size="6">
</div>
</form>
GET /diff
<form action="/diff" method="get">
<div style="display:none;"><input type="text" name="sfp_email" value=""><input type="hidden" name="sfph_mail" value=""></div>
<div class="buttons">
<input type="hidden" name="new_path" value="/mediamatic/trunk/inc/sidebar.php">
<input type="hidden" name="old_path" value="/mediamatic/trunk/inc/sidebar.php">
<input type="hidden" name="new_rev" value="2652957">
<input type="hidden" name="old_rev" value="2652957">
<input type="submit" value="View changes..." title="Select paths and revs for Diff">
</div>
</form>
Text Content
Toggle Menu WORDPRESS.ORG Search WordPress.org for: Submit * Showcase * Themes * Plugins * Mobile * Support * Forums * Documentation * Get Involved * About * Blog * Hosting * Download WordPress PLUGIN DIRECTORY Search: * Login * Timeline * View Tickets * Browse Source CONTEXT NAVIGATION * ← Previous Revision * Latest Revision * Next Revision → * Blame * Revision Log -------------------------------------------------------------------------------- SOURCE: MEDIAMATIC/TRUNK/INC/SIDEBAR.PHP @ 2652957 View diff against: View revision: Last change on this file since 2652957 was 2652957, checked in by plugincraft, 13 months ago Database Issue is fixed File size: 24.0 KB Line 1<?php23use Mediamatic\Helper;45class Mediamatic_Sidebar {67 public function __construct() 8 {9 add_filter( 'restrict_manage_posts', array($this, 'mediamaticRestrictManagePosts'));10 add_filter( 'posts_clauses', array($this, 'mediamaticPostsClauses'), 10, 2);11 12 add_action( 'admin_enqueue_scripts', array($this, 'mediamaticEnqueueStyles' )); // load style files13 add_action( 'admin_enqueue_scripts', array($this, 'mediamaticEnqueueScripts' )); // load js files14 15 add_action( 'init', array($this,'mediamaticAddFolderToAttachments' )); // register MEDIAMATIC taxonomy16 add_action( 'admin_footer-upload.php', array($this,'mediamaticInitSidebar')); // get interface17 18 add_action( 'wp_ajax_mediamaticAjaxAddCategory', array($this,'mediamaticAjaxAddCategory')); // ajax: add new category19 add_action( 'wp_ajax_mediamaticAjaxDeleteCategory', array($this,'mediamaticAjaxDeleteCategory')); // ajax: delete existing category20 add_action( 'wp_ajax_mediamaticAjaxClearCategory', array($this,'mediamaticAjaxClearCategory')); // ajax: delete existing category21 add_action( 'wp_ajax_mediamaticAjaxRenameCategory', array($this,'mediamaticAjaxRenameCategory')); // ajax: rename existing category22 23 add_action( 'wp_ajax_mediamaticAjaxUpdateSidebarWidth', array($this,'mediamaticAjaxUpdateSidebarWidth')); // ajax: update sidebar width24 25 add_action( 'wp_ajax_mediamaticAjaxMoveMultipleMedia', array($this,'mediamaticAjaxMoveMultipleMedia')); // ajax: move multiple media26 add_action( 'wp_ajax_mediamaticAjaxGetTermsByMedia', array($this,'mediamaticAjaxGetTermsByMedia')); // ajax: get terms by media for single media27 add_action( 'wp_ajax_mediamaticAjaxMoveSingleMedia', array($this,'mediamaticAjaxMoveSingleMedia')); // ajax: move singe media28 29 add_action( 'wp_ajax_mediamaticAjaxCheckDeletingMedia', array($this,'mediamaticAjaxCheckDeletingMedia')); // ajax: check deleting media 30 31 add_action( 'wp_ajax_mediamaticAjaxMoveCategory', array($this,'mediamaticAjaxMoveCategory')); // move category32 add_action( 'wp_ajax_mediamaticAjaxUpdateFolderPosition', array($this,'mediamaticAjaxUpdateFolderPosition' )); // update folder position33 34 add_option( 'mediamatic_sidebar_width', 280); // add option for sidebar width35 36 add_filter( 'pre-upload-ui', array($this, 'mediamaticPreUploadUserInterface')); // upload uploader category to "Add new" 37 add_filter( 'wp_kses_allowed_html', array($this, 'mediamatic_allowed_html'), 10, 2 );38 39 40 if(MEDIAMATIC_PLUGIN_NAME != 'Mediamatic'){41 add_action( 'admin_notices', [$this, 'pro_version_notice'] );42 }43 //Support Elementor44 if (defined('ELEMENTOR_VERSION')) {45 add_action('elementor/editor/after_enqueue_scripts', [$this, 'mediamaticScripts']);46 add_action('elementor/editor/after_enqueue_scripts', [$this, 'mediamaticStyles']);47 }48 49 }50 51 public function mediamatic_allowed_html($allowed, $context){52 if (is_array($context))53 {54 return $allowed;55 }5657 if ($context === 'post')58 {59 $allowed['input']['type'] = true;60 $allowed['input']['name'] = true;61 $allowed['input']['id'] = true;62 $allowed['input']['class'] = true;63 $allowed['input']['value'] = true;64 $allowed['input']['placeholder'] = true;65 $allowed['input']['autocomplete'] = true;66 67 $allowed['select']['id'] = true;68 $allowed['select']['name'] = true;69 $allowed['select']['class'] = true;70 $allowed['option']['value'] = true;71 }7273 return $allowed;74 }75 76 public function pro_version_notice(){77 global $pagenow;78 if ( $pagenow == 'upload.php' ) {79 echo '<div class="notice notice-warning is-dismissible">80 <p>'.esc_html__('Mediamatic PRO has more handy features. You could rename a folder, add subfolders easily, clear folders, and search for folders. It also enables folders panel on the media pop-up window.', MEDIAMATIC_TEXT_DOMAIN).' <a href="https://frenify.net/envato/themedo/plugin/mediamatic/1/" target="_blank">Mediamatic PRO</a></p>81 </div>';82 }83 }84 85 86 public function mediamaticEnqueueStyles(){87 $this->mediamaticStyles();88 }89 90 91 public function mediamaticStyles()92 {93 wp_enqueue_style( 'iaoalert', MEDIAMATIC_ASSETS_URL . 'css/iaoalert.css', array(), MEDIAMATIC_PLUGIN_NAME, 'all' );94 wp_enqueue_style( 'mediamatic-admin', MEDIAMATIC_ASSETS_URL . 'css/core.css', array(), MEDIAMATIC_PLUGIN_NAME, 'all' );95 wp_enqueue_style( 'mediamatic-front', MEDIAMATIC_ASSETS_URL . 'css/front.css', array(), MEDIAMATIC_PLUGIN_NAME, 'all' );96 wp_enqueue_style( 'mediamatic-rtl', MEDIAMATIC_ASSETS_URL . 'css/rtl.css', array(), MEDIAMATIC_PLUGIN_NAME, 'all' );97 98 if(MEDIAMATIC_PLUGIN_NAME == 'Mediamatic'){99 $custom_css = "#mediamatic-attachment-filters{display: none;}";100 wp_add_inline_style( 'mediamatic-admin', $custom_css );101 }102 103 }104 105106 public function mediamaticEnqueueScripts()107 {108 $this->mediamaticScripts();109 }110 111 public function mediamaticScripts()112 {113 114 $allFilesText = esc_html__('All Files', MEDIAMATIC_TEXT_DOMAIN);115 $uncategorizedText = esc_html__('Uncategorized', MEDIAMATIC_TEXT_DOMAIN);116 $taxonomy = apply_filters('mediamatic_taxonomy', MEDIAMATIC_FOLDER);117 $dropdownOptions = array(118 'taxonomy' => $taxonomy,119 'hide_empty' => false,120 'hierarchical' => true,121 'orderby' => 'name',122 'show_count' => true,123 'walker' => new Mediamatic_Walker_Category_Mediagridfilter(),124 'value' => 'id',125 'echo' => false126 );127 $attachmentTerms = wp_dropdown_categories( $dropdownOptions );128 $attachmentTerms = preg_replace( array( "/<select([^>]*)>/", "/<\/select>/" ), "", $attachmentTerms );129 130 wp_register_script( 'inline-script-handle-header', '' );131 wp_enqueue_script( 'inline-script-handle-header' );132 wp_add_inline_script( 'inline-script-handle-header', '/* <![CDATA[ */ var mediamaticFolders = [{"folderID":"all","folderName":"'. esc_html($allFilesText) .'"}, {"folderID":"-1","folderName":"'. esc_html($uncategorizedText) .'"},' . wp_kses_post(substr($attachmentTerms, 2)) . ']; /* ]]> */' );133 134 135 wp_enqueue_script('jquery-ui-draggable');136 wp_enqueue_script('jquery-ui-droppable');137138 wp_register_script('iaoalert', MEDIAMATIC_ASSETS_URL . 'js/third-party-plugins/iaoalert.js',['jquery'], MEDIAMATIC_PLUGIN_NAME, false);139 wp_register_script('nicescroll', MEDIAMATIC_ASSETS_URL . 'js/third-party-plugins/nicescroll.js',['jquery'], MEDIAMATIC_PLUGIN_NAME, false);140 wp_register_script('mediamatic-resizable', MEDIAMATIC_ASSETS_URL . 'js/resizable.js',['jquery'], MEDIAMATIC_PLUGIN_NAME, false);141 wp_register_script('mediamatic-core', MEDIAMATIC_ASSETS_URL . 'js/core.js',['jquery'], MEDIAMATIC_PLUGIN_NAME, true);142 wp_register_script('mediamatic-filter', MEDIAMATIC_ASSETS_URL . 'js/filter.js',['jquery'], MEDIAMATIC_PLUGIN_NAME, false);143 wp_register_script('mediamatic-select-filter', MEDIAMATIC_ASSETS_URL . '/js/select-filter.js', ['media-views'], MEDIAMATIC_PLUGIN_NAME, true );144 wp_register_script('mediamatic-upload', MEDIAMATIC_ASSETS_URL . 'js/upload.js', ['jquery'], MEDIAMATIC_PLUGIN_NAME, false );145146 wp_localize_script(147 'mediamatic-core',148 'mediamaticConfig',149 [150 'plugin' => MEDIAMATIC_PLUGIN_NAME,151 'pluginURL' => MEDIAMATIC_URL,152 'nonce' => wp_create_nonce( 'ajax-nonce' ),153 'uploadURL' => admin_url( 'upload.php' ),154 'ajaxUrl' => admin_url( 'admin-ajax.php' ),155 'moveOneFile' => esc_html__( 'Move 1 file', MEDIAMATIC_TEXT_DOMAIN ),156 'move' => esc_html__( 'Move', MEDIAMATIC_TEXT_DOMAIN ),157 'files' => esc_html__( 'files', MEDIAMATIC_TEXT_DOMAIN ),158 'newFolderText' => esc_html__( 'New Subfolder', MEDIAMATIC_TEXT_DOMAIN ),159 'clearMediaText' => esc_html__( 'Clear Media', MEDIAMATIC_TEXT_DOMAIN ),160 'renameText' => esc_html__( 'Rename Folder', MEDIAMATIC_TEXT_DOMAIN ),161 'deleteText' => esc_html__( 'Delete Folder', MEDIAMATIC_TEXT_DOMAIN ),162 'clearText' => esc_html__( 'Clear Folder', MEDIAMATIC_TEXT_DOMAIN ),163 'cancelText' => esc_html__( 'Cancel', MEDIAMATIC_TEXT_DOMAIN ),164 'confirmText' => esc_html__( 'Confirm', MEDIAMATIC_TEXT_DOMAIN ),165 'areYouSure' => esc_html__( 'Are you confident?', MEDIAMATIC_TEXT_DOMAIN ),166 'willBeMovedToUncategorized' => esc_html__( 'All media inside this folder gets moved to "Uncategorized" folder.', MEDIAMATIC_TEXT_DOMAIN ),167 'hasSubFolder' => esc_html__( 'This folder contains subfolders, you should delete the subfolders first!', MEDIAMATIC_TEXT_DOMAIN ),168 'slugError' => esc_html__( 'Unfortunately, you already have a folder with that name.', MEDIAMATIC_TEXT_DOMAIN ),169 'enterName' => esc_html__( 'Please, enter your folder name!', MEDIAMATIC_TEXT_DOMAIN ),170 'item' => esc_html__( 'item', MEDIAMATIC_TEXT_DOMAIN ),171 'items' => esc_html__( 'items', MEDIAMATIC_TEXT_DOMAIN ),172 'currentFolder' => $this->getCurrentFolder(),173 'noItemDOM' => $this->noItemForListMode(),174 'mediamaticAllTitle' => esc_html__('All categories', MEDIAMATIC_TEXT_DOMAIN),175 ]176 );177 wp_localize_script(178 'mediamatic-filter',179 'mediamaticConfig2',180 [181 'pluginURL' => MEDIAMATIC_URL,182 'ajaxUrl' => admin_url( 'admin-ajax.php' ),183 'nonce' => wp_create_nonce( 'ajax-nonce' ),184 'moveOneFile' => esc_html__( 'Move 1 file', MEDIAMATIC_TEXT_DOMAIN ),185 'move' => esc_html__( 'Move', MEDIAMATIC_TEXT_DOMAIN ),186 'files' => esc_html__( 'files', MEDIAMATIC_TEXT_DOMAIN ),187 ]188 );189 190 wp_localize_script(191 'mediamatic-select-filter',192 'mediamaticConfig',193 [194 'mediamaticFolder' => MEDIAMATIC_FOLDER,195 'mediamaticAllTitle' => esc_html__('All categories', MEDIAMATIC_TEXT_DOMAIN),196 'uploadURL' => admin_url( 'upload.php' ),197 'assetsURL' => MEDIAMATIC_ASSETS_URL198 ]199 );200 201 wp_localize_script(202 'mediamatic-upload',203 'mediamaticConfig',204 [205 'nonce' => wp_create_nonce('ajax-nonce')206 ]207 );208209 wp_enqueue_script( 'iaoalert' );210 wp_enqueue_script( 'nicescroll' );211 wp_enqueue_script( 'mediamatic-resizable' );212 wp_enqueue_script( 'mediamatic-core' );213 wp_enqueue_script( 'mediamatic-filter' );214 wp_enqueue_script( 'mediamatic-select-filter' );215 wp_enqueue_script( 'mediamatic-upload' );216 217 218 219 }220 221 public function noItemForListMode()222 {223 return '<tr class="no-items"><td class="colspanchange" colspan="6">'.esc_html__('No media files found.', MEDIAMATIC_TEXT_DOMAIN).'</td></tr>';224 }225 226 public function getCurrentFolder()227 {228 if(isset($_GET['cc_mediamatic_folder'])){229 return sanitize_text_field($_GET['cc_mediamatic_folder']);230 }231 return '';232 }233 234 public function mediamaticRestrictManagePosts()235 {236 $scr = get_current_screen();237 if($scr->base !== 'upload'){238 return;239 }240 echo '<select id="mediao-attachment-filters" class="wpmediacategory-filter attachment-filters" name="cc_mediamatic_folder"></select>';241 }242243 public function getSidebarWidth()244 {245 $sidebarWidth = (int) get_option('mediamatic_sidebar_width', 380);246 if($sidebarWidth < 250 || $sidebarWidth > 750){247 $sidebarWidth = 380;248 }249 return $sidebarWidth;250 }251252 public function mediamaticInitSidebar()253 {254 $output = '';255 $helper = new Helper;256 $sidebarWidth = $this->getSidebarWidth().'px;';257 258 $output .= '<div class="cc_mediamatic_temporary">';259 $output .= '<div id="mediamatic_sidebar" class="cc_mediamatic_sidebar" style="width:'.$sidebarWidth.'">';260 $output .= '<div class="cc_mediamatic_sidebar_in" style="width:'.$sidebarWidth.'">';261 $output .= $helper->getSidebarHeader();262 $output .= $helper->getSidebarContent();263 $output .= '<input type="hidden" id="mediamatic_hidden_terms">';264 $output .= '</div>';265 $output .= '</div>';266 $output .= $this->splitter();267 $output .= '</div>';268 269 270 echo wp_kses_post($output);271 }272 273 public function splitter()274 {275 if(MEDIAMATIC_PLUGIN_NAME == 'Mediamatic'){276 $html = '<div class="mediamatic_splitter active">277 <span class="splitter_holder">278 <span class="splitter_a"></span>279 <span class="splitter_b"></span>280 <span class="splitter_c"></span>281 </span>282 </div>';283 }else{284 $html = '<div class="mediamatic_splitter"></div>';285 }286 return $html;287 }288 289 public function mediamaticPreUploadUserInterface() 290 {291 $helper = new Helper;292 $terms = $helper->mediamaticTermTreeArray(MEDIAMATIC_FOLDER, 0);293 $otherOptions = $helper->mediamaticTermTreeOption($terms);294 $text = esc_html__("New files go to chosen category", MEDIAMATIC_TEXT_DOMAIN);295 $output = '';296 297 // top section298 $output .= '<p class="cc_upload_paragraph attachments-category">';299 $output .= $text;300 $output .= '</p>';301 302 // select section303 $output .= '<p class="cc_upload_paragraph">';304 $output .= '<select name="ccFolder" class="mediamatic-editcategory-filter">';305 $output .= '<option value="-1">1.'.esc_html__('Uncategorized', MEDIAMATIC_TEXT_DOMAIN).'</option>';306 $output .= $otherOptions;307 $output .= '</select>';308 $output .= '</p>';309 310 // echo result311 echo wp_kses_post($output);312 }313 314 public function mediamaticAjaxAddCategory()315 {316 $categoryName = sanitize_text_field($_POST["categoryName"]);317 $parent = sanitize_text_field($_POST["parent"]);318 319 320 // check category name321 $name = self::mediamaticCheckMetaName($categoryName, $parent);322 $newTerm = wp_insert_term($name, MEDIAMATIC_FOLDER, array(323 'name' => $name,324 'parent' => $parent325 ));326327 if (is_wp_error($newTerm)){328 echo 'error';329 }else{330 add_term_meta( $newTerm["term_id"], 'folder_position', 9999 );331 332 333 $buffyArray = array(334 'termID' => $newTerm["term_id"],335 'termName' => $name,336 );337338 die(json_encode($buffyArray));339 }340 341 }342 343 public function mediamaticAjaxDeleteCategory()344 {345 $categoryID = sanitize_text_field($_POST["categoryID"]);346 $selectedTerm = get_term($categoryID , MEDIAMATIC_FOLDER );347 $count = $selectedTerm->count ? $selectedTerm->count : 0;348 $deleteTerm = wp_delete_term( $categoryID, MEDIAMATIC_FOLDER );349 350 351 if(is_wp_error($deleteTerm)){352 $error = 'yes';353 }else{354 $error = 'no';355 }356 $buffyArray = array(357 'error' => $error,358 'count' => $count,359 );360 361 die(json_encode($buffyArray));362 363 }364 365 public function mediamaticAjaxClearCategory()366 {367 global $wpdb;368 $categoryID = sanitize_text_field($_POST["categoryID"]);369 $selectedTerm = get_term($categoryID , MEDIAMATIC_FOLDER );370 $count = $selectedTerm->count ? $selectedTerm->count : 0;371 372 $wpdb->query($wpdb->prepare( "UPDATE {$wpdb->prefix}term_taxonomy SET count=%d WHERE term_id=%d AND taxonomy=%s", 0, $categoryID, MEDIAMATIC_FOLDER));373 $wpdb->query($wpdb->prepare( "DELETE FROM {$wpdb->prefix}term_relationships WHERE term_taxonomy_id=%d", $categoryID));374 375 $buffyArray = array(376 'error' => 'no',377 'count' => $count,378 );379 die(json_encode($buffyArray));380 381 }382 383 public function mediamaticAjaxRenameCategory()384 {385 $categoryID = sanitize_text_field($_POST["categoryID"]);386 $categoryTitle = sanitize_text_field($_POST["categoryTitle"]);387 $newSlug = $this->mediamaticSlugGenerator($categoryTitle,$categoryID);388 $renameCategory = wp_update_term($categoryID, MEDIAMATIC_FOLDER, array(389 'name' => $categoryTitle,390 'slug' => $newSlug391 ));392 393 if(is_wp_error($renameCategory)){394 $error = 'yes';395 }else{396 $error = 'no';397 }398 $buffyArray = array(399 'error' => $error,400 'title' => $categoryTitle,401 );402 die(json_encode($buffyArray));403 404 }405 406 public function mediamaticAjaxUpdateSidebarWidth()407 {408 $width = sanitize_text_field($_POST['width']);409 $error = 'yes';410 411 if(update_option( 'mediamatic_sidebar_width', $width )){412 $error = 'no';413 }414 415 $buffyArray = array(416 'error' => $error,417 );418 die(json_encode($buffyArray));419 420 }421 422 423 public function recursive_sanitize_text_field($array_or_string) {424 if( is_string($array_or_string) ){425 $array_or_string = sanitize_text_field($array_or_string);426 }elseif( is_array($array_or_string) ){427 foreach ( $array_or_string as $key => &$value ) {428 if ( is_array( $value ) ) {429 $value = recursive_sanitize_text_field($value);430 }431 else {432 $value = sanitize_text_field( $value );433 }434 }435 }436437 return $array_or_string;438 }439 440 441 public function mediamaticAjaxMoveMultipleMedia()442 {443 $IDs = $this->recursive_sanitize_text_field($_POST['IDs']);444 $folderID = sanitize_text_field($_POST['folderID']);445 $result = array();446447 foreach ($IDs as $ID){448 $termList = wp_get_post_terms( sanitize_text_field($ID), MEDIAMATIC_FOLDER, array( 'fields' => 'ids' ) );449 $from = -1;450451 if(count($termList)){452 $from = $termList[0];453 }454455 $obj = (object) array('id' => $ID, 'from' => $from, 'to' => $folderID);456 $result[] = $obj;457458 wp_set_object_terms( $ID, intval($folderID), MEDIAMATIC_FOLDER, false );459460 }461462 463 $buffyArray = array(464 'result' => $result,465 );466 die(json_encode($buffyArray));467 468 }469 470 public function mediamaticAjaxGetTermsByMedia()471 {472 $error = 'no';473 $nonce = sanitize_text_field($_POST['nonce']);474 $terms = array();475 476 if(!wp_verify_nonce($nonce, 'ajax-nonce')){477 $error = 'yes';478 }479 if(!isset($_POST['ID'])){480 $error = 'yes';481 }else{482 $ID = (int) sanitize_text_field($_POST['ID']);483 $terms = get_the_terms($ID, MEDIAMATIC_FOLDER);484 }485 486 $buffyArray = array(487 'terms' => $terms,488 'error' => $error,489 'id' => $ID,490 );491 die(json_encode($buffyArray));492 }493 494 public function mediamaticAjaxMoveSingleMedia()495 {496 $error = 'no';497 498 if (!isset($_POST['mediaID'])){499 $error = 'yes';500 }else{501 $mediaID = absint(sanitize_text_field($_POST['mediaID']));502 503 if(empty($_POST['attachments']) || empty($_POST['attachments'][ $mediaID ])){504 $error = 'yes';505 }else{506 $attachment_data = $_POST['attachments'][ $mediaID ];507 $post = get_post( $mediaID, ARRAY_A );508 if('attachment' != $post['post_type']){509 $error = 'yes';510 }else{511 $post = apply_filters( 'attachment_fields_to_save', $post, $attachment_data );512513 if(isset($post['errors'])){514 $errors = $post['errors']; 515 unset( $post['errors'] );516 }517518 wp_update_post($post);519520 wp_set_object_terms( $mediaID, intval(sanitize_text_field($_POST['folderID'])), MEDIAMATIC_FOLDER, false );521 if (!$attachment = wp_prepare_attachment_for_js($mediaID)){522 $error = 'yes';523 }524 }525 }526 }527 528 529 $buffyArray = array(530 'attachment' => $attachment,531 'error' => $error,532 );533 die(json_encode($buffyArray));534 535 }536 537 538 public function mediamaticSlugGenerator($categoryName,$ID)539 {540 global $wpdb;541 $categoryName = strtolower($categoryName);542 $newSlug = preg_replace('/[^A-Za-z0-9-]+/', '-', $categoryName);543 544 $ID = sanitize_text_field($ID);545 $ID = esc_sql($ID);546 547 $count = $wpdb->get_var($wpdb->prepare( "SELECT COUNT(*) FROM {$wpdb->prefix}terms WHERE slug=%s AND term_id<>%d", $newSlug, $ID ));548 549 550 if($count > 0){551 $newSlug = $newSlug . '1';552 $newSlug = $this->mediamaticSlugGenerator($newSlug,$ID);553 }554 return $newSlug;555 }556 557 public function mediamaticAjaxUpdateFolderPosition()558 {559 $results = sanitize_text_field($_POST["data"]);560 $results = explode('#', $results);561 foreach ($results as $result) {562 $result = explode(',', $result);563 update_term_meta($result[0], 'folder_position', $result[1]);564 }565 die();566 }567 568 public function mediamaticAjaxMoveCategory()569 {570 $current = sanitize_text_field($_POST["current"]);571 $parent = sanitize_text_field($_POST["parent"]);572 573 574 $checkError = wp_update_term($current, MEDIAMATIC_FOLDER, array(575 'parent' => $parent576 ));577 578579 if(is_wp_error($checkError)){580 $error = 'yes';581 }else{582 $error = 'no';583 }584 $buffyArray = array(585 'error' => $error,586 );587 die(json_encode($buffyArray));588 589 }590 591 public static function mediamaticCheckMetaName($name, $parent)592 {593 if(!$parent){ $parent = 0; }594 595 $terms = get_terms( MEDIAMATIC_FOLDER, array('parent' => $parent, 'hide_empty' => false) );596 $check = true;597598 if(count($terms)){599 foreach ($terms as $term){600 if($term->name === $name){601 $check = false;602 break;603 }604 }605 }else{606 return $name;607 }608609 610 if($check){611 return $name; 612 }613614 $arr = explode('_', $name); 615616 if($arr && count($arr) > 1){ 617 $suffix = array_values(array_slice($arr, -1))[0];618619 array_pop($arr);620621 $originName = implode($arr);622623 if(intval($suffix)){624 $name = $originName . '_' . (intval($suffix)+1);625 }626627 }else{628 $name = $name . '_1';629 } 630631 $name = self::mediamaticCheckMetaName($name, $parent);632633 return $name;634635 }636 637 public function mediamaticAddFolderToAttachments()638 {639 register_taxonomy( MEDIAMATIC_FOLDER, 640 array( "attachment" ), 641 array( "hierarchical" => true, 642 "labels" => array(), 643 'show_ui' => true,644 'show_in_menu' => false,645 'show_in_nav_menus' => false,646 'show_in_quick_edit' => false,647 'update_count_callback' => '_update_generic_term_count',648 'show_admin_column' => false,649 "rewrite" => false 650 )651 );652 }653 654 655 public function mediamaticPostsClauses($clauses, $query)656 {657 global $wpdb;658 659 if (isset($_GET['cc_mediamatic_folder'])){660 661 $folder = sanitize_text_field($_GET['cc_mediamatic_folder']);662 663 if (!empty($folder) != ''){664 $folder = (int)$folder;665 $wpdbPrefix = $wpdb->prefix;666 667 if($folder > 0){668 $clauses['where'] .= ' AND ('.$wpdbPrefix.'term_relationships.term_taxonomy_id = '.$folder.')';669 $clauses['join'] .= ' LEFT JOIN '.$wpdbPrefix.'term_relationships ON ('.$wpdbPrefix.'posts.ID = '.$wpdbPrefix.'term_relationships.object_id)';670 }else{671 672 $folders = get_terms(MEDIAMATIC_FOLDER, array(673 'hide_empty' => false674 ));675 $folderIDs = array();676 foreach ($folders as $k => $folder) {677 $folderIDs[] = $folder->term_id;678 }679 680 $folderIDs = esc_sql($folderIDs);681 682 $extraQuery = "SELECT `ID` FROM ".$wpdbPrefix."posts LEFT JOIN ".$wpdbPrefix."term_relationships ON (".$wpdbPrefix."posts.ID = ".$wpdbPrefix."term_relationships.object_id) WHERE (".$wpdbPrefix."term_relationships.term_taxonomy_id IN (".implode(', ', $folderIDs)."))";683 $clauses['where'] .= " AND (".$wpdbPrefix."posts.ID NOT IN (".$extraQuery."))";684 }685 }686 }687 688 return $clauses;689 }690 691 692 693 public function mediamaticAjaxCheckDeletingMedia()694 {695 $attachmentID = '';696 $error = 'no';697 $terms = array();698 $ajaxNonce = sanitize_text_field($_POST['ajaxNonce']);699700 if(!wp_verify_nonce($ajaxNonce,'ajax-nonce' )){701 $error = 'yes';702 }703 704 if(!isset($_POST['attachmentID'])){705 $error = 'yes';706 }707 if($error == 'no'){708 $attachmentID = absint(sanitize_text_field($_POST['attachmentID']));709 $terms = get_the_terms($attachmentID, MEDIAMATIC_FOLDER);710 }711 712 $buffyArray = array(713 'error' => $error,714 'terms' => $terms,715 );716 die(json_encode($buffyArray));717 }718719}720new Mediamatic_Sidebar();721722723// Custom Category Walker724class Mediamatic_Walker_Category_Mediagridfilter extends \Walker_CategoryDropdown 725{726 function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 )727 {728 $space = str_repeat( ' ', $depth * 3 );729 730 if(isset($category->name)){731 $folderName = $category->name;732 $folderID = $category->term_id;733 $folderName = apply_filters( 'list_cats', $folderName, $category );734 735 $output .= ',{"folderID":"' . $folderID . '",';736 $output .= '"folderName":"' . $space . $folderName . '"}';737 738 } 739 }740} Note: See TracBrowser for help on using the repository browser. Trac UI Preferences DOWNLOAD IN OTHER FORMATS: * Plain Text * Original Format * About * Blog * Hosting * Donate * Support * Developers * Get Involved * Learn * Showcase * Plugins * Themes * Ideas * WordCamp * WordPress.TV * BuddyPress * bbPress * WordPress.com * Matt * Privacy * License / GPLv2 Code is Poetry