0byt3m1n1
Path:
/
var
/
www
/
clients
/
client38
/
web37
/
web
/
wp-content
/
plugins
/
filebird-pro
/
includes
/
Controller
/
[
Home
]
File: Convert.php
<?php namespace FileBird\Controller; defined('ABSPATH') || exit; /** * Helps to convert old-data (from filebird old version) to new data */ class Convert { private static $folder_table = 'fbv'; private static $relation_table = 'fbv_attachment_folder'; public function __construct() { } public static function insertToNewTable($folders = null) { global $wpdb; if(is_null($folders)) $folders = Convert::getOldFolers(); foreach($folders as $k => $folder) { if(is_array($folder)) { $folder = json_decode(json_encode($folder)); } $parent = $folder->parent; if($parent > 0) { $parent = get_term_meta($parent, 'new_fbv_id', true); } $check = self::detail($folder->name, $parent, $folder->created_by); $insert_id = 0; if(is_null($check)) { $wpdb->insert(self::getTable(self::$folder_table), array( 'name' => $folder->name, 'parent' => $parent, 'created_by' => $folder->created_by, 'type' => 0 )); $insert_id = (int)$wpdb->insert_id; } else { $insert_id = (int)$check->id; } //attachments if(isset($folder->attachments)) { foreach($folder->attachments as $k2 => $attachment_id) { $post = get_post($attachment_id); if(is_object($post) && $post->post_type == 'attachment') { self::setFolder($attachment_id, $insert_id, false); } } } //update new_fbv_id for this term update_term_meta($folder->id, 'new_fbv_id', $insert_id); } } private static function setFolder($ids, $folder, $delete_first = false) { global $wpdb; if(is_numeric($ids)) { $ids = array($ids); } foreach ($ids as $k => $v) { if($delete_first) { $wpdb->delete(self::getTable(self::$relation_table), array('attachment_id' => $v), array('%d')); } if((int)$folder > 0) { $wpdb->insert(self::getTable(self::$relation_table), array('attachment_id' => (int)$v, 'folder_id' => (int)$folder), array('%d', '%d')); } } } private static function detail($name, $parent, $created_by = null) { global $wpdb; $query = $wpdb->prepare('SELECT id FROM %1$s WHERE `name` = "%2$s" AND `parent` = %3$d', self::getTable(self::$folder_table), $name, $parent); if(!is_null($created_by)) { $query .= " AND created_by = " . (int)$created_by; } else { $user_has_own_folder = get_option('njt_fbv_folder_per_user', '0') === '1'; if($user_has_own_folder) { $query .= " AND created_by = " . get_current_user_id(); } else { $query .= " AND created_by = 0"; } } $check = $wpdb->get_results($query); if($check != null && count($check) > 0) { return $check[0]; } else { return null; } } private static function getTable($table) { global $wpdb; return $wpdb->prefix . $table; } public static function getOldFolers() { $folders = self::_getOldFolers(0); return $folders; } private static function _getOldFolers($parent) { global $wpdb; $folders = array(); $query = $wpdb->prepare("SELECT t.term_id as id, t.name FROM $wpdb->terms as t LEFT JOIN $wpdb->term_taxonomy as tt ON (t.term_id = tt.term_id) WHERE parent = %d and taxonomy = 'nt_wmc_folder'", $parent); $folders = $wpdb->get_results($query); foreach($folders as $k => $v) { $folders[$k]->parent = $parent; $folders[$k]->created_by = (int)$wpdb->get_var("SELECT meta_value FROM {$wpdb->termmeta} WHERE meta_key = 'fb_created_by' AND term_id = " . (int)$v->id); $folders[$k]->attachments = self::_getAttachments($v->id); } foreach($folders as $k => $v) { $children = self::_getOldFolers($v->id); foreach($children as $k2 => $v2) { $folders[] = $v2; } } return $folders; } private static function _getAttachments($term_id) { global $wpdb; $term_taxonomy_id = $wpdb->get_var($wpdb->prepare("SELECT term_taxonomy_id FROM $wpdb->term_taxonomy WHERE term_id = %d", $term_id)); $query = $wpdb->prepare("SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term_taxonomy_id); $_data = $wpdb->get_results($query); $ids = array(); foreach($_data as $k => $v) { $ids[] = $v->object_id; } return $ids; } }