コード例 #1
0
ファイル: settings.php プロジェクト: hikaram/wee
 public function __construct()
 {
     parent::__construct();
     self::$upload_transient = 'pmxi_uploads_path';
     $uploads = wp_upload_dir();
     $is_secure_import = PMXI_Plugin::getInstance()->getOption('secure');
     if (!$is_secure_import) {
         self::$path = wp_all_import_secure_file($uploads['basedir'] . DIRECTORY_SEPARATOR . PMXI_Plugin::UPLOADS_DIRECTORY);
     } else {
         self::$path = get_transient(self::$upload_transient);
         if (empty(self::$path)) {
             self::$path = wp_all_import_secure_file($uploads['basedir'] . DIRECTORY_SEPARATOR . PMXI_Plugin::UPLOADS_DIRECTORY);
             set_transient(self::$upload_transient, self::$path);
         }
     }
 }
コード例 #2
0
ファイル: settings.php プロジェクト: rebeccayshen/kitlist
 public function __construct()
 {
     parent::__construct();
     self::$upload_transient = 'pmxi_uploads_path';
     $uploads = wp_upload_dir();
     $is_secure_import = PMXI_Plugin::getInstance()->getOption('secure');
     if (!$is_secure_import) {
         self::$path = pmxi_secure_file($uploads['basedir'] . '/wpallimport/uploads', 'uploads');
     } else {
         self::$path = get_transient(self::$upload_transient);
         if (empty(self::$path)) {
             self::$path = pmxi_secure_file($uploads['basedir'] . '/wpallimport/uploads', 'uploads');
             set_transient(self::$upload_transient, self::$path);
         }
     }
 }
コード例 #3
0
function pmxi_wp_loaded()
{
    $table = PMXI_Plugin::getInstance()->getTablePrefix() . 'imports';
    global $wpdb;
    $imports = $wpdb->get_results("SELECT `id`, `name`, `path` FROM {$table} WHERE `path` IS NULL", ARRAY_A);
    if (!empty($imports)) {
        $importRecord = new PMXI_Import_Record();
        $importRecord->clear();
        foreach ($imports as $imp) {
            $importRecord->getById($imp['id']);
            if (!$importRecord->isEmpty()) {
                $importRecord->delete(true);
            }
            $importRecord->clear();
        }
    }
    /* Check if cron is manualy, then execute import */
    $cron_job_key = PMXI_Plugin::getInstance()->getOption('cron_job_key');
    if (!empty($cron_job_key) and !empty($_GET['import_key']) and $_GET['import_key'] == $cron_job_key and !empty($_GET['action']) and in_array($_GET['action'], array('processing', 'trigger', 'pipe', 'cancel', 'cleanup'))) {
        $logger = create_function('$m', 'echo "<p>$m</p>\\n";');
        if (empty($_GET['import_id'])) {
            if ($_GET['action'] == 'cleanup') {
                $settings = new PMXI_Admin_Settings();
                $settings->cleanup(true);
                wp_send_json(array('status' => 200, 'message' => __('Cleanup completed.', 'wp_all_import_plugin')));
                return;
            }
            wp_send_json(array('status' => 403, 'message' => __('Missing import ID.', 'wp_all_import_plugin')));
            return;
        }
        $import = new PMXI_Import_Record();
        $ids = explode(',', $_GET['import_id']);
        if (!empty($ids) and is_array($ids)) {
            foreach ($ids as $id) {
                if (empty($id)) {
                    continue;
                }
                $import->getById($id);
                if (!$import->isEmpty()) {
                    if (!empty($_GET['sync'])) {
                        $imports = $wpdb->get_results("SELECT `id`, `name`, `path` FROM {$table} WHERE `processing` = 1", ARRAY_A);
                        if (!empty($imports)) {
                            $processing_ids = array();
                            foreach ($imports as $imp) {
                                $processing_ids[] = $imp['id'];
                            }
                            wp_send_json(array('status' => 403, 'message' => sprintf(__('Other imports are currently in process [%s].', 'wp_all_import_plugin'), implode(",", $processing_ids))));
                            //$logger and call_user_func($logger, sprintf(__('Other imports are currently in process [%s].', 'wp_all_import_plugin'), implode(",", $processing_ids)));
                            break;
                        }
                    }
                    if (!in_array($import->type, array('url', 'ftp', 'file'))) {
                        wp_send_json(array('status' => 500, 'message' => sprintf(__('Scheduling update is not working with "upload" import type. Import #%s.', 'wp_all_import_plugin'), $id)));
                        //$logger and call_user_func($logger, sprintf(__('Scheduling update is not working with "upload" import type. Import #%s.', 'wp_all_import_plugin'), $id));
                    }
                    switch ($_GET['action']) {
                        case 'trigger':
                            if ((int) $import->executing) {
                                wp_send_json(array('status' => 403, 'message' => sprintf(__('Import #%s is currently in manually process. Request skipped.', 'wp_all_import_plugin'), $id)));
                                //$logger and call_user_func($logger, sprintf(__('Import #%s is currently in manually process. Request skipped.', 'wp_all_import_plugin'), $id));
                            } elseif (!$import->processing and !$import->triggered) {
                                $import->set(array('triggered' => 1, 'imported' => 0, 'created' => 0, 'updated' => 0, 'skipped' => 0, 'deleted' => 0, 'queue_chunk_number' => 0, 'last_activity' => date('Y-m-d H:i:s')))->update();
                                $history_log = new PMXI_History_Record();
                                $history_log->set(array('import_id' => $import->id, 'date' => date('Y-m-d H:i:s'), 'type' => 'trigger', 'summary' => __("triggered by cron", "wp_all_import_plugin")))->save();
                                //$logger and call_user_func($logger, sprintf(__('#%s Cron job triggered.', 'wp_all_import_plugin'), $id));
                                wp_send_json(array('status' => 200, 'message' => sprintf(__('#%s Cron job triggered.', 'wp_all_import_plugin'), $id)));
                            } elseif ($import->processing and !$import->triggered) {
                                wp_send_json(array('status' => 403, 'message' => sprintf(__('Import #%s currently in process. Request skipped.', 'wp_all_import_plugin'), $id)));
                                //$logger and call_user_func($logger, sprintf(__('Import #%s currently in process. Request skipped.', 'wp_all_import_plugin'), $id));
                            } elseif (!$import->processing and $import->triggered) {
                                wp_send_json(array('status' => 403, 'message' => sprintf(__('Import #%s already triggered. Request skipped.', 'wp_all_import_plugin'), $id)));
                                //$logger and call_user_func($logger, sprintf(__('Import #%s already triggered. Request skipped.', 'wp_all_import_plugin'), $id));
                            }
                            break;
                        case 'processing':
                            if ($import->processing == 1 and time() - strtotime($import->registered_on) > (PMXI_Plugin::getInstance()->getOption('cron_processing_time_limit') ? PMXI_Plugin::getInstance()->getOption('cron_processing_time_limit') : 120)) {
                                // it means processor crashed, so it will reset processing to false, and terminate. Then next run it will work normally.
                                $import->set(array('processing' => 0))->update();
                            }
                            // start execution imports that is in the cron process
                            if (!(int) $import->triggered) {
                                wp_send_json(array('status' => 403, 'message' => sprintf(__('Import #%s is not triggered. Request skipped.', 'wp_all_import_plugin'), $id)));
                                //$logger and call_user_func($logger, sprintf(__('Import #%s is not triggered. Request skipped.', 'wp_all_import_plugin'), $id));
                            } elseif ((int) $import->executing) {
                                wp_send_json(array('status' => 403, 'message' => sprintf(__('Import #%s is currently in manually process. Request skipped.', 'wp_all_import_plugin'), $id)));
                                //$logger and call_user_func($logger, sprintf(__('Import #%s is currently in manually process. Request skipped.', 'wp_all_import_plugin'), $id));
                            } elseif ((int) $import->triggered and !(int) $import->processing) {
                                $log_storage = (int) PMXI_Plugin::getInstance()->getOption('log_storage');
                                // unlink previous logs
                                if ((int) $import->queue_chunk_number < (int) $import->count) {
                                    $by = array();
                                    $by[] = array(array('import_id' => $id, 'type NOT LIKE' => 'trigger'), 'AND');
                                    $historyLogs = new PMXI_History_List();
                                    $historyLogs->setColumns('id', 'import_id', 'type', 'date')->getBy($by, 'id ASC');
                                    if ($historyLogs->count() and $historyLogs->count() >= $log_storage) {
                                        $logsToRemove = $historyLogs->count() - $log_storage;
                                        foreach ($historyLogs as $i => $file) {
                                            $historyRecord = new PMXI_History_Record();
                                            $historyRecord->getBy('id', $file['id']);
                                            if (!$historyRecord->isEmpty()) {
                                                $historyRecord->delete();
                                            }
                                            // unlink history file only
                                            if ($i == $logsToRemove) {
                                                break;
                                            }
                                        }
                                    }
                                    $history_log = new PMXI_History_Record();
                                    $history_log->set(array('import_id' => $import->id, 'date' => date('Y-m-d H:i:s'), 'type' => 'processing', 'summary' => __("cron processing", "wp_all_import_plugin")))->save();
                                    if ($log_storage) {
                                        $wp_uploads = wp_upload_dir();
                                        $log_file = wp_all_import_secure_file($wp_uploads['basedir'] . DIRECTORY_SEPARATOR . PMXI_Plugin::LOGS_DIRECTORY, $history_log->id) . DIRECTORY_SEPARATOR . $history_log->id . '.html';
                                        if (@file_exists($log_file)) {
                                            wp_all_import_remove_source($log_file, false);
                                        }
                                        //@file_put_contents($log_file, sprintf(__('<p>Source path `%s`</p>', 'wp_all_import_plugin'), $import->path));
                                    }
                                }
                                ob_start();
                                $response = $import->set(array('canceled' => 0, 'failed' => 0))->execute($logger, true, $history_log->id);
                                $log_data = ob_get_clean();
                                if ($log_storage) {
                                    $log = @fopen($log_file, 'a+');
                                    @fwrite($log, $log_data);
                                    @fclose($log);
                                }
                                if (!empty($response) and is_array($response)) {
                                    wp_send_json($response);
                                } elseif (!(int) $import->queue_chunk_number) {
                                    wp_send_json(array('status' => 200, 'message' => sprintf(__('Import #%s complete', 'wp_all_import_plugin'), $import->id)));
                                    //$logger and call_user_func($logger, sprintf(__('Import #%s complete', 'wp_all_import_plugin'), $import->id));
                                } else {
                                    wp_send_json(array('status' => 200, 'message' => sprintf(__('Records Processed %s. Records Count %s.', 'wp_all_import_plugin'), (int) $import->queue_chunk_number, (int) $import->count)));
                                    // $logger and call_user_func($logger, sprintf(__('Records Count %s', 'wp_all_import_plugin'), (int) $import->count));
                                    // $logger and call_user_func($logger, sprintf(__('Records Processed %s', 'wp_all_import_plugin'), (int) $import->queue_chunk_number));
                                }
                            } else {
                                wp_send_json(array('status' => 403, 'message' => sprintf(__('Import #%s already processing. Request skipped.', 'wp_all_import_plugin'), $id)));
                                //$logger and call_user_func($logger, sprintf(__('Import #%s already processing. Request skipped.', 'wp_all_import_plugin'), $id));
                            }
                            break;
                        case 'pipe':
                            $import->execute($logger);
                            break;
                        case 'cancel':
                            $import->set(array('triggered' => 0, 'processing' => 0, 'executing' => 0, 'canceled' => 1, 'canceled_on' => date('Y-m-d H:i:s')))->update();
                            wp_send_json(array('status' => 200, 'message' => sprintf(__('Import #%s canceled', 'wp_all_import_plugin'), $import->id)));
                            break;
                    }
                }
            }
        }
    }
}