165 lines
4.5 KiB
PHP
165 lines
4.5 KiB
PHP
<?php
|
|
namespace FileBird\Classes;
|
|
|
|
use FileBird\Controller\Convert as ConvertController;
|
|
use FileBird\Model\Folder as FolderModel;
|
|
use FileBird\Controller\Import\DataImport;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
class Convert {
|
|
|
|
protected static $instance = null;
|
|
public static function getInstance() {
|
|
if ( null == self::$instance ) {
|
|
self::$instance = new self();
|
|
self::$instance->doHooks();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
public function __construct() {
|
|
}
|
|
|
|
private function doHooks() {
|
|
add_action( 'rest_api_init', array( $this, 'registerRestFields' ) );
|
|
}
|
|
|
|
public function registerRestFields() {
|
|
//get old data
|
|
register_rest_route(
|
|
NJFB_REST_URL,
|
|
'fb-get-old-data',
|
|
array(
|
|
'methods' => 'POST',
|
|
'callback' => array( $this, 'ajaxGetOldData' ),
|
|
'permission_callback' => array( $this, 'resPermissionsCheck' ),
|
|
)
|
|
);
|
|
//insert old data
|
|
register_rest_route(
|
|
NJFB_REST_URL,
|
|
'fb-insert-old-data',
|
|
array(
|
|
'methods' => 'POST',
|
|
'callback' => array( $this, 'ajaxInsertOldData' ),
|
|
'permission_callback' => array( $this, 'resPermissionsCheck' ),
|
|
)
|
|
);
|
|
//wipe old data
|
|
register_rest_route(
|
|
NJFB_REST_URL,
|
|
'fb-wipe-old-data',
|
|
array(
|
|
'methods' => 'POST',
|
|
'callback' => array( $this, 'ajaxWipeOldData' ),
|
|
'permission_callback' => array( $this, 'resPermissionsCheck' ),
|
|
)
|
|
);
|
|
//wipe old data
|
|
register_rest_route(
|
|
NJFB_REST_URL,
|
|
'fb-wipe-clear-all-data',
|
|
array(
|
|
'methods' => 'POST',
|
|
'callback' => array( $this, 'ajaxClearAllData' ),
|
|
'permission_callback' => array( $this, 'resPermissionsCheck' ),
|
|
)
|
|
);
|
|
register_rest_route(
|
|
NJFB_REST_URL,
|
|
'fb-no-thanks',
|
|
array(
|
|
'methods' => 'POST',
|
|
'callback' => array( $this, 'ajaxNoThanks' ),
|
|
'permission_callback' => array( $this, 'resPermissionsCheck' ),
|
|
)
|
|
);
|
|
}
|
|
public function resPermissionsCheck() {
|
|
return current_user_can( 'upload_files' );
|
|
}
|
|
|
|
public function ajaxGetOldData() {
|
|
$folders = ConvertController::getOldFolders();
|
|
$folders_chunk = array_chunk( $folders, 20 );
|
|
wp_send_json_success(
|
|
array(
|
|
'folders' => $folders_chunk,
|
|
)
|
|
);
|
|
}
|
|
public function ajaxInsertOldData( $request ) {
|
|
$folders = isset( $request ) ? $request->get_params()['folders'] : '';
|
|
if ( $folders != '' ) {
|
|
ConvertController::insertToNewTable( $folders );
|
|
update_option( 'fbv_old_data_updated_to_v4', '1' );
|
|
wp_send_json_success( array( 'mess' => __( 'success', 'filebird' ) ) );
|
|
} else {
|
|
wp_send_json_error( array( 'mess' => __( 'validation failed', 'filebird' ) ) );
|
|
}
|
|
}
|
|
|
|
public function ajaxWipeOldData() {
|
|
global $wpdb;
|
|
$queries = array(
|
|
'DELETE FROM ' . $wpdb->prefix . 'termmeta WHERE `term_id` IN (SELECT `term_id` FROM ' . $wpdb->prefix . 'term_taxonomy WHERE `taxonomy` = %s)',
|
|
'DELETE FROM ' . $wpdb->prefix . 'term_relationships WHERE `term_taxonomy_id` IN (SELECT `term_taxonomy_id` FROM ' . $wpdb->prefix . 'term_taxonomy WHERE `taxonomy` = %s)',
|
|
'DELETE FROM ' . $wpdb->prefix . 'terms WHERE `term_id` IN (SELECT `term_id` FROM ' . $wpdb->prefix . 'term_taxonomy WHERE `taxonomy` = %s)',
|
|
'DELETE FROM ' . $wpdb->prefix . 'term_taxonomy WHERE `taxonomy` = %s',
|
|
);
|
|
foreach ( $queries as $k => $query ) {
|
|
// phpcs:disable WordPress.DB.PreparedSQL.NotPrepared
|
|
$wpdb->query( $wpdb->prepare( $query, 'nt_wmc_folder' ) );
|
|
}
|
|
wp_send_json_success(
|
|
array(
|
|
'mess' => __( 'Successfully wiped.', 'filebird' ),
|
|
)
|
|
);
|
|
}
|
|
public function ajaxClearAllData() {
|
|
global $wpdb;
|
|
$table_name = $wpdb->prefix . 'fbv';
|
|
if ( $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->esc_like( $table_name ) ) ) == $table_name ) {
|
|
FolderModel::deleteAll();
|
|
|
|
foreach ( DataImport::get() as $data ) {
|
|
update_option( "njt_fb_updated_from_{$data->prefix}", '0' );
|
|
}
|
|
|
|
wp_send_json_success(
|
|
array(
|
|
'mess' => __( 'Successfully cleared!', 'filebird' ),
|
|
)
|
|
);
|
|
} else {
|
|
wp_send_json_error(
|
|
array(
|
|
'mess' => __( 'Please try again.', 'filebird' ),
|
|
)
|
|
);
|
|
}
|
|
|
|
}
|
|
|
|
public function ajaxNoThanks( $request ) {
|
|
$site = $request->get_param( 'site' );
|
|
|
|
$site = isset( $site ) ? sanitize_text_field( $site ) : '';
|
|
|
|
if ( $site === 'all' ) {
|
|
foreach ( DataImport::get() as $data ) {
|
|
update_option( "njt_fb_{$data->prefix}_no_thanks", '1' );
|
|
}
|
|
} else {
|
|
update_option( "njt_fb_{$site}_no_thanks", '1' );
|
|
}
|
|
|
|
return new \WP_REST_Response(
|
|
array(
|
|
'mess' => __( 'Success', 'filebird' ),
|
|
)
|
|
);
|
|
}
|
|
} |