*/ class FileBird_Admin { /** * The ID of this plugin. * * @since 1.0.0 * @access private * @var string $plugin_name The ID of this plugin. */ private $plugin_name; /** * The version of this plugin. * * @since 1.0.0 * @access private * @var string $version The current version of this plugin. */ private $version; /** * Initialize the class and set its properties. * * @since 1.0.0 * @param string $plugin_name The name of this plugin. * @param string $version The version of this plugin. */ public function __construct($plugin_name, $version) { $this->plugin_name = $plugin_name; $this->version = $version; add_filter('restrict_manage_posts', array($this, 'restrictManagePosts')); //add_action('pre_get_posts', array($this, 'preGetPosts')); add_filter('posts_clauses', array($this, 'postsClauses'), 10, 2); add_filter('plugin_action_links_' . NJT_FILEBIRD_FOLDER_BASE, array($this, 'go_pro_version')); call_user_func(array($this, 'enqueue_PageBuilder')); } public function wpml_register_duplicate_attachment() { global $sitepress; $is_wpml_active = $sitepress !== null && get_class($sitepress) === "SitePress"; if ($is_wpml_active) { $settings = $sitepress->get_setting('custom_posts_sync_option', array()); if($settings['attachment']){ add_action('wpml_media_create_duplicate_attachment', array($this, 'wpml_media_create_duplicate_attachment'), 10, 2); } } } public function wpml_media_create_duplicate_attachment($post_id, $tr_id) { $filebird_Folder = isset($_REQUEST["ntWMCFolder"]) ? $_REQUEST["ntWMCFolder"] : null; if (is_null($filebird_Folder)) { $filebird_Folder = isset($_REQUEST["njt_filebird_folder"]) ? $_REQUEST["njt_filebird_folder"] : null; } if ($filebird_Folder !== null) { $filebird_Folder = (int) $filebird_Folder; wp_set_object_terms($tr_id, $filebird_Folder, NJT_FILEBIRD_FOLDER, false); } } public function go_pro_version($links) { if (NJT_FB_V == '0') { $links[] = '' . __('Go Pro', NJT_FILEBIRD_TEXT_DOMAIN) . ''; return $links; } return $links; } public function enqueue_PageBuilder() { // FL_BUILDER_VERSION : Beaver Builder // ET_BUILDER_PLUGIN_VERSION: Divi Builder if (defined('FL_BUILDER_VERSION') || defined('ET_BUILDER_PLUGIN_VERSION')) { if (defined('ET_BUILDER_PLUGIN_VERSION')) { add_action('wp_head', function () { echo ''; }); } add_action('wp_enqueue_scripts', array($this, 'nt_upload')); add_action('wp_enqueue_scripts', function(){ wp_enqueue_style('njt-filebird-admin', plugin_dir_url(__FILE__) . 'css/filebird-admin.css', array(), $this->version, 'all'); wp_style_add_data('njt-filebird-admin', 'rtl', 'replace'); }); } } public function postsClauses($clauses, $query) { global $wpdb; if (isset($_GET['njt_filebird_folder'])) { $folder = $_GET['njt_filebird_folder']; if (!empty($folder) != '') { $folder = (int) $folder; if ($folder > 0) { $clauses['where'] .= ' AND (' . $wpdb->prefix . 'term_relationships.term_taxonomy_id = ' . $folder . ')'; $clauses['join'] .= ' LEFT JOIN ' . $wpdb->prefix . 'term_relationships ON (' . $wpdb->prefix . 'posts.ID = ' . $wpdb->prefix . 'term_relationships.object_id)'; } else { //to improve performance: set default folder for files when addnew $folders = get_terms(NJT_FILEBIRD_FOLDER, array( 'hide_empty' => false, )); $folder_ids = array(); foreach ($folders as $k => $v) { $folder_ids[] = $v->term_id; } $files_have_folder_query = "SELECT `ID` FROM " . $wpdb->prefix . "posts LEFT JOIN " . $wpdb->prefix . "term_relationships ON (" . $wpdb->prefix . "posts.ID = " . $wpdb->prefix . "term_relationships.object_id) WHERE (" . $wpdb->prefix . "term_relationships.term_taxonomy_id IN (" . implode(', ', $folder_ids) . "))"; $clauses['where'] .= " AND (" . $wpdb->prefix . "posts.ID NOT IN (" . $files_have_folder_query . "))"; } } } return $clauses; } /*public function preGetPosts($query) { $folder = null; if ($query !== null) { $folder = $query->get('filebird_folder'); } if ($folder !== null) { $query->set('filebird_folder', $folder); } }*/ public function restrictManagePosts() { $scr = get_current_screen(); if ($scr->base !== 'upload') { return; } echo ''; } /** * Register the stylesheets for the admin area. * * @since 1.0.0 */ public function enqueue_styles() { wp_enqueue_style('njt-filebird-admin', plugin_dir_url(__FILE__) . 'css/filebird-admin.css', array(), $this->version, 'all'); wp_style_add_data('njt-filebird-admin', 'rtl', 'replace'); } /** * Register the JavaScript for the admin area. * * @since 1.0.0 */ public function enqueue_scripts() { wp_enqueue_script('njt-filebird-upload-event-scripts', plugin_dir_url(__FILE__) . 'js/hook-add-new-upload.js', array('jquery'), $this->version, false); } public function nt_upload() { if (!function_exists('get_current_screen')) { require_once ABSPATH . 'wp-admin/includes/screen.php'; } $screen = get_current_screen(); //Get mode $mode = get_user_option('media_library_mode', get_current_user_id()) ? get_user_option('media_library_mode', get_current_user_id()) : 'grid'; $modes = array('grid', 'list'); if (isset($_GET['mode']) && in_array($_GET['mode'], $modes)) { $mode = $_GET['mode']; update_user_option(get_current_user_id(), 'media_library_mode', $mode); } //Load Scripts And Styles for Media Upload wp_enqueue_style('njt-filebird-sweet-alert-styles', plugin_dir_url(__FILE__) . 'plugin/sweet-alert/sweetalert.css', array(), $this->version, 'all'); wp_enqueue_style('njt-filebird-mcustomscrollbar-styles', plugin_dir_url(__FILE__) . 'plugin/mCustomScrollbar/jquery.mCustomScrollbar.min.css', array(), $this->version, 'all'); wp_enqueue_style('njt-filebird-vakata-jstree-styles', plugin_dir_url(__FILE__) . 'plugin/vakata-jstree/themes/default/style.css', array(), $this->version, 'all'); wp_enqueue_style('njt-filebird-contextMenu' . $this->plugin_name, plugin_dir_url(__FILE__) . 'css/jquery.contextMenu.min.css', array(), $this->version, 'all'); wp_enqueue_style('njt-filebird-main' . $this->plugin_name, plugin_dir_url(__FILE__) . 'css/main.css', array(), $this->version, 'all'); wp_style_add_data('njt-filebird-main' . $this->plugin_name, 'rtl', 'replace'); wp_enqueue_style('njt-filebird-upload-styles', plugin_dir_url(__FILE__) . 'css/filebird-upload.css', array(), $this->version, 'all'); wp_style_add_data('njt-filebird-upload-styles', 'rtl', 'replace'); wp_enqueue_style('njt-filebird-folder-container', plugin_dir_url(__FILE__) . 'css/folder-container.css', array(), $this->version, 'all'); wp_enqueue_script('njt-filebird-vakata-jstree-scripts', plugin_dir_url(__FILE__) . 'plugin/vakata-jstree/jstree.min.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-jquery-resize', plugin_dir_url(__FILE__) . 'plugin/rick-strahl/jquery-resizable.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-mcustomscrollbar-scripts', plugin_dir_url(__FILE__) . 'plugin/mCustomScrollbar/jquery.mCustomScrollbar.min.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-sweet-alert-scripts', plugin_dir_url(__FILE__) . 'plugin/sweet-alert/sweetalert2.all.js', array('jquery'), $this->version, false); wp_enqueue_script('bootstrap', plugin_dir_url(__FILE__) . 'js/bootstrap.min.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-contextMenu', plugin_dir_url(__FILE__) . 'js/jquery.contextMenu.min.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-folder-in-content', plugin_dir_url(__FILE__) . 'js/folder-in-content.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-trigger', plugin_dir_url(__FILE__) . 'js/trigger-folder.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-folder', plugin_dir_url(__FILE__) . 'js/folder.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-upload-scripts', plugin_dir_url(__FILE__) . 'js/filebird-upload.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-modal', plugin_dir_url(__FILE__) . 'js/filebird-modal.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-modal-init', plugin_dir_url(__FILE__) . 'js/filebird-modal-init.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-modal-scripts', plugin_dir_url(__FILE__) . 'js/filebird-media.js', array('jquery'), $this->version, false); if ($mode === 'grid' || $screen->id != 'upload') { wp_enqueue_script('njt-filebird-upload-libray-scripts', plugin_dir_url(__FILE__) . 'js/hook-library-upload.js', array('jquery'), $this->version, false); wp_enqueue_script('njt-filebird-upload-grid-scripts', plugin_dir_url(__FILE__) . 'js/filebird-upload-grid.js', array('jquery'), $this->version, false); } else { wp_enqueue_script('njt-filebird-upload-list-scripts', plugin_dir_url(__FILE__) . 'js/filebird-upload-list.js', array('jquery'), $this->version, false); wp_localize_script( 'njt-filebird-upload-list-scripts', 'njt_filebird_dh', array( 'upload_url' => admin_url('upload.php'), 'current_folder' => ((isset($_GET['njt_filebird_folder'])) ? $_GET['njt_filebird_folder'] : ''), 'no_item_html' => '' . __('No media files found.', NJT_FILEBIRD_TEXT_DOMAIN) . '', 'item' => __('item', NJT_FILEBIRD_TEXT_DOMAIN), 'items' => __('items', NJT_FILEBIRD_TEXT_DOMAIN), ) ); } //$the_query = new WP_Query("post_type=attachment&posts_per_page=-1"); } public function convert_tree_to_flat_array($array) { $result = array(); foreach ($array as $key => $row) { $item = new stdClass(); $item->term_id = $row->term_id; $item->name = $row->name; $item->parent = $row->parent; $item->count = $row->count; $result[] = $item; if (count($row->children) > 0) { $result = array_merge($result, $this->convert_tree_to_flat_array($row->children)); } } return $result; } public function filebird_add_init_media_manager($hook) { $isCallModal = isset($_POST['action']) && $_POST['action'] == 'filebird_ajax_treeview_folder'; $all_count = FileBird_Topbar::count_all_categories_attachment(); $uncatetory_count = FileBird_Topbar::get_uncategories_attachment(); $tree = $this->filebird_term_tree_array(NJT_FILEBIRD_FOLDER, 0); $folders = $this->convert_tree_to_flat_array($tree); $sidebar_splitter_width = get_option('njt-filebird_splitter_width'); ?> parent != 0) { $depth = $depth + 1; $parent = $folder->parent; $find = array_filter($folders, function ($arr) use ($parent) { if ($arr->term_id == $parent) { return $arr; } else { return null; } }); if (is_null($find)) { return $depth; } else { foreach ($find as $k2 => $v2) { return $this->find_depth($v2, $folders, $depth); } } } else { return $depth; } } private function build_folder($folders) { // print_r($folders);die; //sort $orders = array(); foreach ($folders as $key => $row) { $orders[$key] = $key; } array_multisort($orders, SORT_ASC, $folders); //end sort echo '