first commit
This commit is contained in:
@@ -0,0 +1,219 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* WP File Download
|
||||
*
|
||||
* @package WP File Download
|
||||
* @author Joomunited
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
// no direct access
|
||||
defined('ABSPATH') or die();
|
||||
use Joomunited\WPFramework\v1_0_4\Application;
|
||||
|
||||
class wpfdTool {
|
||||
/**
|
||||
* Show error message
|
||||
*/
|
||||
function wpfd_import_notice(){
|
||||
global $wpdb;
|
||||
if($wpdb->get_var("SHOW TABLES LIKE '".$wpdb->prefix."wpfd_categories'") == $wpdb->prefix."wpfd_categories") {
|
||||
echo '<script type="text/javascript">'.PHP_EOL
|
||||
. 'function importWpfdTaxonomy(doit,button){'.PHP_EOL
|
||||
.'jQuery(button).find(".spinner").show().css({"visibility":"visible"});'.PHP_EOL
|
||||
.'jQuery.post(ajaxurl, {action: "wpfd_import",doit:doit}, function(response) {'.PHP_EOL
|
||||
.'jQuery(button).closest("div#wpfd_error").hide();'.PHP_EOL
|
||||
.'if(doit===true){'.PHP_EOL
|
||||
.'jQuery("#wpfd_error").after("<div class=\'updated\'> <p><strong>'. __('Categories imported into taxanomies. Enjoy!!!','wp-smart-editor') .'</strong></p></div>");'.PHP_EOL
|
||||
.'}'.PHP_EOL
|
||||
.'window.location.reload(true);'.PHP_EOL
|
||||
.'});'.PHP_EOL
|
||||
. '}'.PHP_EOL
|
||||
. '</script>';
|
||||
echo '<div class="error" id="wpfd_error">'
|
||||
. '<p>'
|
||||
. __('You\'ve just installed new version WP File Download, You can import your categories into taxonomies','wp-smart-editor')
|
||||
. '<a href="#" class="button button-primary" style="margin: 0 5px;" onclick="importWpfdTaxonomy(true,this);" id="wpfdImportBtn">'.__('Import categories now','wp-smart-editor').' <span class="spinner" style="display:none"></span></a> or <a href="#" onclick="importWpfdTaxonomy(false,this);" style="margin: 0 5px;" class="button">'.__('No thanks ','wp-smart-editor').' <span class="spinner" style="display:none"></span></a>'
|
||||
. '</p>'
|
||||
. '</div>';
|
||||
} else {
|
||||
wpfdTool::createCategoryIfNoneExist();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Import categories
|
||||
*/
|
||||
static function wpfd_import_categories() {
|
||||
$option_import_taxo = get_option('_wpfd_import_notice_flag');
|
||||
if(isset($option_import_taxo) && $option_import_taxo == 'yes'){
|
||||
die();
|
||||
}
|
||||
|
||||
if($_POST['doit']==='true'){
|
||||
|
||||
$app = Application::getInstance('wpfd');
|
||||
require_once $app->getPath().DIRECTORY_SEPARATOR.$app->getType().DIRECTORY_SEPARATOR.'models'.DIRECTORY_SEPARATOR.'categories.php';
|
||||
$modelCats = new wpfdModelCategories();
|
||||
$categories = $modelCats->getCategoriesOld();
|
||||
if(!$categories ) {
|
||||
if($_POST['doit']==='true'){
|
||||
update_option('_wpfd_import_notice_flag', 'yes');
|
||||
}else{
|
||||
update_option('_wpfd_import_notice_flag', 'no');
|
||||
}
|
||||
die();
|
||||
}
|
||||
|
||||
require_once $app->getPath().DIRECTORY_SEPARATOR.$app->getType().DIRECTORY_SEPARATOR.'models'.DIRECTORY_SEPARATOR.'category.php';
|
||||
$modelCat = new wpfdModelCategory();
|
||||
$termsRel = array('0'=>0);
|
||||
foreach ($categories as $category) {
|
||||
$inserted = wp_insert_term($category->title, 'wpfd-category',array('slug'=>sanitize_title($category->title)));
|
||||
if ( is_wp_error($inserted) ) {
|
||||
//try again
|
||||
$inserted = wp_insert_term($category->title, 'wpfd-category',array('slug'=>sanitize_title($category->title).'-'.time() ));
|
||||
if ( is_wp_error($inserted) ) {
|
||||
wp_send_json($inserted->get_error_message());
|
||||
}
|
||||
}
|
||||
|
||||
$modelCat->updateTermOrder($inserted['term_id'],$category->lft);
|
||||
|
||||
$termsRel[$category->id] = $inserted['term_id'];
|
||||
}
|
||||
foreach ($categories as $category) {
|
||||
wp_update_term($termsRel[$category->id], 'wpfd-category',array('parent'=>$termsRel[$category->parent_id]));
|
||||
}
|
||||
|
||||
//update files to attachments
|
||||
global $wpdb;
|
||||
$query = 'SELECT f.* FROM '.$wpdb->prefix.'wpfd_files as f ORDER BY f.ordering ASC';
|
||||
$result = $wpdb->query($query);
|
||||
if($result===false){
|
||||
return false;
|
||||
}
|
||||
$files = stripslashes_deep($wpdb->get_results($query,OBJECT));
|
||||
// Get the path to the upload directory.
|
||||
$wp_upload_dir = wp_upload_dir();
|
||||
|
||||
// Make sure that this file is included, as wp_generate_attachment_metadata() depends on it.
|
||||
require_once( ABSPATH . 'wp-admin/includes/image.php' );
|
||||
|
||||
foreach ($files as $file) {
|
||||
|
||||
$filename = $wp_upload_dir['basedir'].'/wpfd/'.$file->catid.'/'.$file->file ;
|
||||
//move file to new term_id: $termsRel[$file->catid]
|
||||
if(file_exists($filename)) {
|
||||
$file_dir = wpfdBase::getFilesPath($termsRel[$file->catid]);
|
||||
if(!file_exists($file_dir)){
|
||||
mkdir($file_dir,0777,true);
|
||||
$data = '<html><body bgcolor="#FFFFFF"></body></html>';
|
||||
$tmpfile = fopen($file_dir.'index.html', 'w');
|
||||
fwrite($tmpfile, $data);
|
||||
fclose($tmpfile);
|
||||
$data = 'deny from all';
|
||||
$tmpfile = fopen($file_dir.'.htaccess', 'w');
|
||||
fwrite($tmpfile, $data);
|
||||
fclose($tmpfile);
|
||||
}
|
||||
$newFile = $wp_upload_dir['basedir'].'/wpfd/'. $termsRel[$file->catid] .'/'.$file->file ;
|
||||
copy($filename, $newFile);
|
||||
$filename = $newFile;
|
||||
}
|
||||
|
||||
// Check the type of file. We'll use this as the 'post_mime_type'.
|
||||
$filetype = wp_check_filetype( basename( $filename ), null );
|
||||
$post_title = $file->title;
|
||||
if(empty($post_title)) $post_title = preg_replace( '/\.[^.]+$/', '', basename( $filename ) );
|
||||
// Prepare an array of post data for the attachment.
|
||||
$attachment = array(
|
||||
'guid' => $wp_upload_dir['baseurl'].'/wpfd/'.$termsRel[$file->catid] . '/' . basename( $filename ),
|
||||
'post_type' => 'wpfd_file',
|
||||
'post_mime_type' => $filetype['type'],
|
||||
'post_title' => $post_title,
|
||||
'post_excerpt' => $file->description,
|
||||
'post_content' => '',
|
||||
'post_status' => 'publish',
|
||||
'menu_order' => $file->ordering
|
||||
);
|
||||
$attach_id = wp_insert_post( $attachment );
|
||||
if($attach_id) {
|
||||
// Generate the metadata for the attachment, and update the database record.
|
||||
//$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
|
||||
//wp_update_attachment_metadata( $attach_id, $attach_data );
|
||||
|
||||
$metadata = array();
|
||||
$metadata['ext'] = $file->ext;
|
||||
$metadata['size'] = $file->size;
|
||||
$metadata['hits'] = $file->hits;
|
||||
$metadata['version'] = $file->version;
|
||||
$metadata['file'] = $file->file;
|
||||
update_post_meta( $attach_id, '_wpfd_file_metadata', $metadata );
|
||||
|
||||
$termsArray = array();
|
||||
$termsArray[] = $termsRel[$file->catid];
|
||||
wp_set_post_terms( $attach_id, $termsArray, 'wpfd-category');
|
||||
}
|
||||
}
|
||||
|
||||
}else { //if there isn't any categories then create one
|
||||
wpfdTool::createCategoryIfNoneExist();
|
||||
}
|
||||
|
||||
if($_POST['doit']==='true'){
|
||||
update_option('_wpfd_import_notice_flag', 'yes');
|
||||
}else{
|
||||
update_option('_wpfd_import_notice_flag', 'no');
|
||||
}
|
||||
die();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create category if not exist
|
||||
*/
|
||||
static function createCategoryIfNoneExist() {
|
||||
$app = Application::getInstance('wpfd');
|
||||
require_once $app->getPath().DIRECTORY_SEPARATOR.$app->getType().DIRECTORY_SEPARATOR.'models'.DIRECTORY_SEPARATOR.'categories.php';
|
||||
$modelCats = new wpfdModelCategories();
|
||||
$cats = $modelCats->getSubCategories(0);
|
||||
if(count($cats)==0) { //if there isn't any categories then create one
|
||||
require_once $app->getPath().DIRECTORY_SEPARATOR.$app->getType().DIRECTORY_SEPARATOR.'models'.DIRECTORY_SEPARATOR.'category.php';
|
||||
$modelCat = new wpfdModelCategory();
|
||||
$cat_id = $modelCat->addCategory(__('New category','wp-smart-editor'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all data
|
||||
*/
|
||||
function deleteAllData() {
|
||||
$taxonomy = 'wpfd-category';
|
||||
$terms = get_terms($taxonomy);
|
||||
$count = count($terms);
|
||||
if ( $count > 0 ){
|
||||
|
||||
foreach ( $terms as $term ) {
|
||||
wp_delete_term( $term->term_id, $taxonomy );
|
||||
}
|
||||
}
|
||||
|
||||
//delete posts and meta key
|
||||
$args = array(
|
||||
'posts_per_page' => -1,
|
||||
'post_type' => 'wpfd_file' ,
|
||||
'orderby' => 'menu_order',
|
||||
'order' => 'ASC'
|
||||
);
|
||||
$results = get_posts( $args );
|
||||
if(count($results)>0) {
|
||||
foreach ($results as $result) {
|
||||
// Delete's each post.
|
||||
wp_delete_post( $result->ID, true);
|
||||
delete_post_meta($result->ID, '_wpfd_file_metadata');
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user