PluginProbe
FileBird – WordPress Media Library Folders & File Manager / 5.5
FileBird – WordPress Media Library Folders & File Manager v5.5
6.5.8 6.5.7 6.5.5 6.5.4 trunk 4.3.1 5.1.6 5.3 5.3.2 5.4.3 5.4.4 5.4.5 5.5 5.5.3 5.5.5 5.5.8 5.5.8.1 5.6 5.6.1 5.6.2 5.6.3 5.6.4 6.2.3 6.2.5 6.3 All 36 releases
filebird / includes / Support / Polylang.php

Polylang.php in FileBird – WordPress Media Library Folders & File Manager 5.5, at includes/Support/Polylang.php

131 lines 4.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace FileBird\Support;
3
4 use FileBird\Model\Folder as FolderModel;
5 use FileBird\Controller\Controller;
6
7 defined( 'ABSPATH' ) || exit;
8
9 class Polylang extends Controller {
10 private $active;
11 private $lang;
12 private $lang_id = null;
13
14 public function __construct() {
15 global $polylang;
16
17 $this->active = function_exists( 'pll_get_post_translations' );
18 if ( $this->active ) {
19 if ( $polylang->options['media_support'] == 1 ) {
20 $this->lang = PLL()->model->get_language( get_user_meta( get_current_user_id(), 'pll_filter_content', true ) );
21 if ( $this->lang ) {
22 $this->lang_id = $this->lang->term_id;
23 }
24 if ( $this->lang_id != null ) {
25 add_filter( 'fbv_speedup_get_count_query', '__return_true' );
26 }
27 add_action( 'pll_translate_media', array( $this, 'duplicateAttachmentToFolder' ), 10, 3 );
28 add_filter( 'fbv_get_count_query', array( $this, 'fbv_get_count_query' ), 10, 3 );
29 add_filter( 'fbv_all_folders_and_count', array( $this, 'all_folders_and_count_query' ), 10, 2 );
30 add_filter( 'fbv_pll_lang', array( $this, 'fbv_pll_lang' ), 10, 1 );
31 }
32 }
33 }
34
35 public function get_preferred_language( $lang ) {
36 $pll_lang = PLL()->model->get_language( $lang );
37 if ( $pll_lang ) {
38 return $pll_lang->term_id;
39 }
40 return $this->lang_id;
41 }
42
43 public function fbv_pll_lang( $lang ) {
44 if ( ! PLL_SETTINGS && ! PLL_ADMIN && PLL()->model->get_languages_list() ) {
45 return true;
46 }
47 }
48
49 public function fbv_get_count_query( $q, $folder_id, $lang ) {
50 $lang_id = $this->lang_id;
51
52 if ( $lang ) {
53 $lang_id = $this->get_preferred_language( $lang );
54 }
55
56 global $wpdb;
57 if ( is_null( $lang_id ) ) {
58 return $q;
59 } else {
60 if ( $folder_id == -1 ) {
61 $q = "SELECT COUNT(tmp.ID) FROM
62 (
63 SELECT posts.ID
64 FROM $wpdb->posts AS posts
65 LEFT JOIN $wpdb->term_relationships AS trs
66 ON posts.ID = trs.object_id
67 WHERE posts.post_type = 'attachment'
68 AND posts.ID NOT IN (SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_elementor_is_screenshot') ";
69 $q .= "AND trs.term_taxonomy_id IN ({$lang_id})";
70 $q .= "AND (posts.post_status = 'inherit' OR posts.post_status = 'private')
71 GROUP BY posts.ID
72 ) as tmp";
73 } else {
74 if ( $folder_id > 0 ) {
75 $q = "SELECT COUNT(tmp.ID) FROM
76 (
77 SELECT posts.ID
78 FROM $wpdb->posts AS posts
79 LEFT JOIN $wpdb->term_relationships AS trs ON posts.ID = trs.object_id
80 RIGHT JOIN {$wpdb->prefix}fbv_attachment_folder as fbv ON (posts.ID = fbv.attachment_id)
81 WHERE posts.post_type = 'attachment'
82 AND posts.ID NOT IN (SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_elementor_is_screenshot')
83 AND fbv.folder_id = " . (int) $folder_id . ' ';
84 $q .= "AND trs.term_taxonomy_id IN ({$lang_id}) ";
85 $q .= "AND (posts.post_status = 'inherit' OR posts.post_status = 'private')
86 GROUP BY posts.ID
87 ) as tmp";
88 // exit($q);
89 }
90 }
91 return $q;
92 }
93 }
94
95 public function all_folders_and_count_query( $query, $lang ) {
96 global $wpdb;
97
98 $lang_id = $this->lang_id;
99
100 if ( $lang ) {
101 $lang_id = $this->get_preferred_language( $lang );
102 }
103
104 $select = '';
105 $join = '';
106 $where = '';
107 if ( is_null( $lang_id ) ) {
108 $select = "SELECT fbva.folder_id as folder_id, count(DISTINCT(fbva.attachment_id)) as count
109 FROM {$wpdb->prefix}fbv_attachment_folder AS fbva";
110 } else {
111 $select = "SELECT fbva.folder_id as folder_id, count(fbva.attachment_id) as count
112 FROM {$wpdb->prefix}fbv_attachment_folder AS fbva";
113 $join .= " INNER JOIN {$wpdb->term_relationships} AS trs ON fbva.attachment_id = trs.object_id ";
114 $where .= " AND trs.term_taxonomy_id IN ({$lang_id}) ";
115 }
116
117 $join .= " INNER JOIN {$wpdb->prefix}fbv as fbv ON fbv.id = fbva.folder_id ";
118 $join .= " INNER JOIN {$wpdb->posts} as posts ON posts.ID = fbva.attachment_id ";
119
120 $where .= " WHERE posts.post_type = 'attachment' AND (posts.post_status = 'inherit' OR posts.post_status = 'private') ";
121 $where .= ' AND fbv.created_by = ' . apply_filters( 'fbv_in_not_in_created_by', '0' ) . ' GROUP BY fbva.folder_id';
122
123 $query = $select . $join . $where;
124 return $query;
125 }
126
127 public function duplicateAttachmentToFolder( $post_id, $tr_id, $lang_slug ) {
128 $folders_of_source = FolderModel::getFoldersOfPost( $post_id );
129 FolderModel::setFoldersForPosts( $tr_id, $folders_of_source );
130 }
131 }