Files
2025-02-24 22:33:42 +01:00

204 lines
5.9 KiB
PHP

<?php
namespace FileBird\Controller\Import;
use FileBird\Admin\Settings;
defined( 'ABSPATH' ) || exit;
class ImportController {
const IMPORT_ENDPOINT = 'import';
public function __construct() {
add_action( 'rest_api_init', array( $this, 'register_rest_routes' ) );
$this->add(
'happyfiles',
array(
'name' => 'HappyFiles',
'author' => 'Codeer',
'taxonomy' => 'happyfiles_category',
)
);
$this->add(
'enhanced',
array(
'name' => 'Enhanced Media Library',
'author' => 'wpUXsolutions',
'taxonomy' => 'media_category',
)
);
$this->add(
'wpmf',
array(
'name' => 'WP Media folder',
'author' => 'Joomunited',
'taxonomy' => 'wpmf-category',
)
);
$this->add(
'premio',
array(
'name' => 'Folders',
'author' => 'Premio',
'taxonomy' => 'media_folder',
)
);
$this->add(
'wf',
array(
'name' => 'Wicked Folders',
'author' => 'Wicked Plugins',
'taxonomy' => 'wf_attachment_folders',
)
);
$this->add(
'feml',
array(
'name' => 'WP Media Folders',
'author' => 'Damien Barrère',
'taxonomy' => 'feml-folder',
)
);
$this->add(
'wpmlf',
array(
'name' => 'WordPress Media Library Folders',
'author' => 'Max Foundry',
)
);
$this->add(
'mla',
array(
'name' => 'Media Library Assistant',
'author' => 'David Lingren',
'taxonomy' => 'attachment_category',
)
);
$this->add(
'realmedia',
array(
'name' => 'WP Real Media Library',
'author' => 'devowl.io GmbH',
)
);
$this->add(
'mediamatic',
array(
'name' => 'Mediamatic',
'author' => 'Plugincraft',
'taxonomy' => 'mediamatic_wpfolder',
)
);
}
public function add( $prefix, $attributes ) {
new DataImport( $prefix, $attributes );
}
public function get_all() {
return DataImport::get();
}
public static function get_all_plugins_import() {
$data_import = DataImport::get();
$total_folder_import = 0;
foreach ( $data_import as $prefix => $data ) {
$data_import[ $prefix ]->counter = self::get_counters( $prefix );
$data_import[ $prefix ]->completed = get_option( 'njt_fb_updated_from_' . $data->prefix ) === '1';
$data_import[ $prefix ]->noThanks = get_option( "njt_fb_{$data->prefix}_no_thanks" ) === '1';
$data_import[ $prefix ]->description = sprintf( esc_html__( 'We found you have %1$s categories you created from %2$s plugin. Would you like to import it to %3$s?', 'filebird' ), '<strong>(' . esc_html( $data_import[ $prefix ]->counter ) . ')</strong>', '<strong>' . esc_html( $data->name ) . '</strong>', '<strong>FileBird</strong>' );
$total_folder_import += $data_import[ $prefix ]->counter;
}
return (object) array(
'plugins' => array_filter(
$data_import,
function( $data ) {
return $data->counter !== 0;
}
),
'total_folder_import' => $total_folder_import,
);
}
public static function get_notice_import( $screen ) {
if ( $screen !== 'upload.php' && $screen !== Settings::getInstance()->getSettingHookSuffix() ) {
return (object) array( 'plugins' => new \stdClass() );
}
return self::get_all_plugins_import();
}
public function register_rest_routes() {
register_rest_route(
NJFB_REST_URL,
self::IMPORT_ENDPOINT . '/get-folders/(?P<prefix>[a-zA-Z]+)',
array(
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this, 'get_folders' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
self::IMPORT_ENDPOINT . '/get-attachments/(?P<prefix>[a-zA-Z]+)',
array(
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this, 'get_attachments' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
register_rest_route(
NJFB_REST_URL,
self::IMPORT_ENDPOINT . '/run/(?P<prefix>[a-zA-Z]+)',
array(
'methods' => \WP_REST_Server::READABLE,
'callback' => array( $this, 'run_import' ),
'permission_callback' => array( $this, 'permission_callback' ),
)
);
}
public function permission_callback() {
return current_user_can( 'upload_files' );
}
public static function get_counters( $prefix ) {
$import_method = ImportFactory::getImportMethod( $prefix );
$data = DataImport::get( $prefix );
return $import_method->get_counters( $data );
}
public function get_folders( $request ) {
$prefix = sanitize_key( $request->get_param( 'prefix' ) );
$import_method = ImportFactory::getImportMethod( $prefix );
$data = DataImport::get( $prefix );
return $import_method->get_folders( $data );
}
public function get_attachments( $request ) {
$prefix = sanitize_key( $request->get_param( 'prefix' ) );
$import_method = ImportFactory::getImportMethod( $prefix );
$data = DataImport::get( $prefix );
return $import_method->get_attachments( $data );
}
public function run_import( $request ) {
$prefix = sanitize_key( $request->get_param( 'prefix' ) );
$import_method = ImportFactory::getImportMethod( $prefix );
$data = DataImport::get( $prefix );
return $import_method->run( $data );
}
}