mirror of
https://gh.wpcy.net/https://github.com/pawankhated/one-click-wordpress-installer.git
synced 2026-04-22 00:39:17 +08:00
91 lines
3.1 KiB
PHP
91 lines
3.1 KiB
PHP
<?php
|
|
namespace FileBird\Classes;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
use FileBird\Model\Folder as FolderModel;
|
|
|
|
class Tree {
|
|
public static function getFolders( $order_by = null, $flat = false, $level = 0, $show_level = false ) {
|
|
$folders_from_db = FolderModel::allFolders( '*', null, $order_by );
|
|
$default_folders = array();
|
|
|
|
$tree = self::getTree( $folders_from_db, 0, $default_folders, $flat, $level, $show_level );
|
|
return $tree;
|
|
}
|
|
public static function getCount( $folder_id, $lang = null ) {
|
|
global $wpdb;
|
|
|
|
$select = "SELECT COUNT(*) FROM {$wpdb->posts} as posts WHERE ";
|
|
$where = array( "post_type = 'attachment'" );
|
|
|
|
// With $folder_id == -1. We get all
|
|
$where[] = "(posts.post_status = 'inherit' OR posts.post_status = 'private')";
|
|
|
|
// with specific folder
|
|
if ( $folder_id > 0 && ! apply_filters( 'fbv_speedup_get_count_query', false ) ) {
|
|
$post__in = $wpdb->get_col( "SELECT `attachment_id` FROM {$wpdb->prefix}fbv_attachment_folder WHERE `folder_id` = " . (int) $folder_id );
|
|
if ( count( $post__in ) == 0 ) {
|
|
$post__in = array( 0 );
|
|
}
|
|
$where[] = '(ID IN (' . implode( ', ', $post__in ) . '))';
|
|
} elseif ( $folder_id == 0 ) {
|
|
return 0;//return 0 if this is uncategorized folder
|
|
}
|
|
$where = apply_filters( 'fbv_get_count_where_query', $where );
|
|
$query = apply_filters( 'fbv_get_count_query', $select . implode( ' AND ', $where ), $folder_id, $lang );
|
|
return (int) $wpdb->get_var( $query );
|
|
}
|
|
public static function getAllFoldersAndCount( $lang = null ) {
|
|
global $wpdb;
|
|
$query = $wpdb->prepare(
|
|
"SELECT fbva.folder_id, count(fbva.attachment_id) as count FROM {$wpdb->prefix}fbv_attachment_folder as fbva
|
|
INNER JOIN {$wpdb->prefix}fbv as fbv ON fbv.id = fbva.folder_id
|
|
INNER JOIN {$wpdb->posts} as posts ON fbva.attachment_id = posts.ID
|
|
WHERE (posts.post_status = 'inherit' OR posts.post_status = 'private')
|
|
AND (posts.post_type = 'attachment')
|
|
AND fbv.created_by = %d
|
|
GROUP BY fbva.folder_id",
|
|
apply_filters( 'fbv_in_not_in_created_by', '0' )
|
|
);
|
|
$query = apply_filters( 'fbv_all_folders_and_count', $query, $lang );
|
|
|
|
$results = $wpdb->get_results( $query );
|
|
$return = array();
|
|
if ( is_array( $results ) ) {
|
|
foreach ( $results as $k => $v ) {
|
|
$return[ $v->folder_id ] = $v->count;
|
|
}
|
|
}
|
|
return $return;
|
|
}
|
|
private static function getTree( $data = array(), $parent = 0, $default = null, $flat = false, $level = 0, $show_level = false ) {
|
|
$tree = is_null( $default ) ? array() : $default;
|
|
foreach ( $data as $k => $v ) {
|
|
if ( $v->parent == $parent ) {
|
|
$children = self::getTree( $data, $v->id, null, $flat, $level + 1, $show_level );
|
|
$f = array(
|
|
'id' => (int) $v->id,
|
|
'text' => $show_level ? str_repeat( '-', $level ) . $v->name : $v->name,
|
|
'li_attr' => array(
|
|
'data-count' => 0,
|
|
'data-parent' => (int) $parent,
|
|
),
|
|
'count' => 0,
|
|
);
|
|
|
|
if ( $flat === true ) {
|
|
$tree[] = $f;
|
|
foreach ( $children as $k2 => $v2 ) {
|
|
$tree[] = $v2;
|
|
}
|
|
} else {
|
|
$f['children'] = $children;
|
|
$tree[] = $f;
|
|
}
|
|
}
|
|
}
|
|
return $tree;
|
|
}
|
|
|
|
}
|