PluginProbe
FileBird – WordPress Media Library Folders & File Manager / 5.6
FileBird – WordPress Media Library Folders & File Manager v5.6
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.6, at includes/Support/Polylang.php

144 lines 4.8 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 add_filter( 'fbv_data', array( $this, 'fbv_data' ), 10, 1 );
32 }
33 }
34 }
35
36 public function fbv_data( $data ) {
37 $data['icl_lang'] = null;
38 return $data;
39 }
40
41 public function get_preferred_language( $lang ) {
42 $pll_lang = PLL()->model->get_language( $lang );
43
44 if ( $pll_lang ) {
45 if ( version_compare( POLYLANG_VERSION, '3.4', '>=' ) ) {
46 return $pll_lang->get_tax_prop( 'language', 'term_taxonomy_id' );
47 } else {
48 return $pll_lang->term_props['language']['term_taxonomy_id'];
49 }
50 }
51 return $this->lang_id;
52 }
53
54 public function fbv_pll_lang( $lang ) {
55 // Fixed for new polylang version
56 // if ( ! PLL_SETTINGS && ! PLL_ADMIN && PLL()->model->get_languages_list() ) {
57 // return true;
58 // }
59 return pll_current_language();
60 }
61
62 public function fbv_get_count_query( $q, $folder_id, $lang ) {
63 $lang_id = $this->lang_id;
64
65 if ( $lang ) {
66 $lang_id = $this->get_preferred_language( $lang );
67 }
68
69 global $wpdb;
70 if ( is_null( $lang_id ) ) {
71 return $q;
72 } else {
73 if ( $folder_id == -1 ) {
74 $q = "SELECT COUNT(tmp.ID) FROM
75 (
76 SELECT posts.ID
77 FROM $wpdb->posts AS posts
78 LEFT JOIN $wpdb->term_relationships AS trs
79 ON posts.ID = trs.object_id
80 WHERE posts.post_type = 'attachment'
81 AND posts.ID NOT IN (SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_elementor_is_screenshot') ";
82 $q .= "AND trs.term_taxonomy_id IN ({$lang_id})";
83 $q .= "AND (posts.post_status = 'inherit' OR posts.post_status = 'private')
84 GROUP BY posts.ID
85 ) as tmp";
86 } else {
87 if ( $folder_id > 0 ) {
88 $q = "SELECT COUNT(tmp.ID) FROM
89 (
90 SELECT posts.ID
91 FROM $wpdb->posts AS posts
92 LEFT JOIN $wpdb->term_relationships AS trs ON posts.ID = trs.object_id
93 RIGHT JOIN {$wpdb->prefix}fbv_attachment_folder as fbv ON (posts.ID = fbv.attachment_id)
94 WHERE posts.post_type = 'attachment'
95 AND posts.ID NOT IN (SELECT post_id FROM {$wpdb->postmeta} WHERE meta_key = '_elementor_is_screenshot')
96 AND fbv.folder_id = " . (int) $folder_id . ' ';
97 $q .= "AND trs.term_taxonomy_id IN ({$lang_id}) ";
98 $q .= "AND (posts.post_status = 'inherit' OR posts.post_status = 'private')
99 GROUP BY posts.ID
100 ) as tmp";
101 // exit($q);
102 }
103 }
104 return $q;
105 }
106 }
107
108 public function all_folders_and_count_query( $query, $lang ) {
109 global $wpdb;
110
111 $lang_id = $this->lang_id;
112
113 if ( $lang ) {
114 $lang_id = $this->get_preferred_language( $lang );
115 }
116
117 $select = '';
118 $join = '';
119 $where = '';
120 if ( is_null( $lang_id ) ) {
121 $select = "SELECT fbva.folder_id as folder_id, count(DISTINCT(fbva.attachment_id)) as count
122 FROM {$wpdb->prefix}fbv_attachment_folder AS fbva";
123 } else {
124 $select = "SELECT fbva.folder_id as folder_id, count(fbva.attachment_id) as count
125 FROM {$wpdb->prefix}fbv_attachment_folder AS fbva";
126 $join .= " INNER JOIN {$wpdb->term_relationships} AS trs ON fbva.attachment_id = trs.object_id ";
127 $where .= " AND trs.term_taxonomy_id IN ({$lang_id}) ";
128 }
129
130 $join .= " INNER JOIN {$wpdb->prefix}fbv as fbv ON fbv.id = fbva.folder_id ";
131 $join .= " INNER JOIN {$wpdb->posts} as posts ON posts.ID = fbva.attachment_id ";
132
133 $where .= " WHERE posts.post_type = 'attachment' AND (posts.post_status = 'inherit' OR posts.post_status = 'private') ";
134 $where .= ' AND fbv.created_by = ' . apply_filters( 'fbv_in_not_in_created_by', '0' ) . ' GROUP BY fbva.folder_id';
135
136 $query = $select . $join . $where;
137 return $query;
138 }
139
140 public function duplicateAttachmentToFolder( $post_id, $tr_id, $lang_slug ) {
141 $folders_of_source = FolderModel::getFoldersOfPost( $post_id );
142 FolderModel::setFoldersForPosts( $tr_id, $folders_of_source );
143 }
144 }