public static function getConfig($atts, $post) { $pdf_light_viewer_config = self::parseDefaultsSettings($atts, $post); // download options if ($pdf_light_viewer_config['download_allowed']) { $pdf_file_id = PdfLightViewer_Model::getPDFFileId($post->ID); $pdf_file_url = wp_get_attachment_url($pdf_file_id); $alternate_download_link = PdfLightViewer_Plugin::get_post_meta($post->ID, 'alternate_download_link', true); $pdf_light_viewer_config['download_link'] = $alternate_download_link ? $alternate_download_link : $pdf_file_url; } $pdf_upload_dir = PdfLightViewer_Plugin::getUploadDirectory($post->ID); $pdf_upload_dir_url = PdfLightViewer_Plugin::getUploadDirectoryUrl($post->ID); $pdf_light_viewer_config['pdf_upload_dir_url'] = $pdf_upload_dir_url; $pages = directory_map($pdf_upload_dir); $thumbs = directory_map($pdf_upload_dir . '-thumbs'); if (empty($pages) || empty($thumbs)) { echo '<span style="color: Salmon">' . __('[pdf-light-viewer] shortcode cannot be rendered due to the error: No converted pages found', PDF_LIGHT_VIEWER_PLUGIN) . '</span>'; return; } sort($pages); sort($thumbs); // check permissions $current_user = wp_get_current_user(); $current_user_roles = $current_user->roles; $pages_limits = PdfLightViewer_Plugin::get_post_meta($post->ID, 'pdf_light_viewer_permissions_metabox_repeat_group', true); $limit = 0; if (!empty($pages_limits)) { foreach ($pages_limits as $pages_limit) { if (empty($current_user_roles) && $pages_limit['pages_limit_user_role'] == 'anonymous') { $limit = isset($pages_limit['pages_limit_visible_pages']) ? $pages_limit['pages_limit_visible_pages'] : null; } else { if (in_array($pages_limit['pages_limit_user_role'], $current_user_roles)) { $limit = isset($pages_limit['pages_limit_visible_pages']) ? $pages_limit['pages_limit_visible_pages'] : null; } } } } // limit allowed pages for user role if (!$limit) { $pdf_light_viewer_config['pages'] = $pages; $pdf_light_viewer_config['thumbs'] = $thumbs; } else { for ($page = 0; $page < $limit; $page++) { $pdf_light_viewer_config['pages'][$page] = $pages[$page]; $pdf_light_viewer_config['thumbs'][$page] = $thumbs[$page]; } } $pdf_light_viewer_config = apply_filters(PDF_LIGHT_VIEWER_PLUGIN . ':front_config', $pdf_light_viewer_config, $post); return $pdf_light_viewer_config; }
public static function pdf_partially_import() { $unimported = PdfLightViewer_Model::getOneUnimported(); $post_id = $unimported->ID; if (!$post_id) { header('Content-Type: application/json'); echo json_encode(array('status' => 'error', 'progress' => 0, 'error' => __('Currently there are no unimported files in the queue.', PDF_LIGHT_VIEWER_PLUGIN))); return; } $status = PdfLightViewer_Plugin::get_post_meta($post_id, '_pdf-light-viewer-import-status', true); if ($status == static::STATUS_SCHEDULED) { $status_label = __('scheduled', PDF_LIGHT_VIEWER_PLUGIN); update_post_meta($post_id, '_pdf-light-viewer-import-status', static::STATUS_STARTED); } else { if ($status == static::STATUS_STARTED) { $status_label = __('started', PDF_LIGHT_VIEWER_PLUGIN); update_post_meta($post_id, '_pdf-light-viewer-import-status', 'processing'); } else { $status_label = __('processing', PDF_LIGHT_VIEWER_PLUGIN); } } ignore_user_abort(true); set_time_limit(0); $pdf_file_id = PdfLightViewer_Model::getPDFFileId($post_id); $pdf_file_path = get_attached_file($pdf_file_id); do_action(PDF_LIGHT_VIEWER_PLUGIN . ':before_import', $post_id, $pdf_file_path); $pdf_upload_dir = PdfLightViewer_Plugin::createUploadDirectory($post_id); $jpeg_resolution = PdfLightViewer_Plugin::get_post_meta($post_id, 'jpeg_resolution', true); $jpeg_compression_quality = PdfLightViewer_Plugin::get_post_meta($post_id, 'jpeg_compression_quality', true); $pdf_pages_number = (int) PdfLightViewer_Plugin::get_post_meta($post_id, 'pdf-pages-number', true); $current_page = (int) PdfLightViewer_Plugin::get_post_meta($post_id, '_pdf-light-viewer-import-current-page', true); $width = (int) PdfLightViewer_Plugin::get_post_meta($post_id, 'pdf-page-width', true); $height = (int) PdfLightViewer_Plugin::get_post_meta($post_id, 'pdf-page-height', true); if (!$width || !$height) { header('Content-Type: application/json'); echo json_encode(array('status' => 'error', 'progress' => 0, 'error' => __('Cannot get width and height of the first page.', PDF_LIGHT_VIEWER_PLUGIN))); return; } $ratio = $width / $height; if (!$current_page) { header('Content-Type: application/json'); echo json_encode(array('status' => 'error', 'progress' => 0, 'error' => __('Cannot detect current imported PDF page.', PDF_LIGHT_VIEWER_PLUGIN))); return; } $error = ''; for ($current_page; $current_page <= $pdf_pages_number; $current_page++) { $page_number = sprintf('%1$05d', $current_page); if (!file_exists($pdf_upload_dir . '/page-' . $page_number . '.jpg')) { try { $percent = static::process_pdf_page($post_id, $current_page, $page_number, $pdf_pages_number, $pdf_file_path, $pdf_upload_dir, $jpeg_resolution, $jpeg_compression_quality, $ratio); } catch (Exception $e) { PdfLightViewer_Plugin::log('Import exception: ' . $e->getMessage(), print_r($e, true)); $status_label = __('failed', PDF_LIGHT_VIEWER_PLUGIN); $error = $e->getMessage(); update_post_meta($post_id, '_pdf-light-viewer-import-status', static::STATUS_FAILED); } break; } } do_action(PDF_LIGHT_VIEWER_PLUGIN . ':after_import', $post_id, $pdf_file_path); if ($percent >= 100) { do_action(PDF_LIGHT_VIEWER_PLUGIN . ':finished_import', $post_id, $pdf_file_path); $status_label = __('finished', PDF_LIGHT_VIEWER_PLUGIN); update_post_meta($post_id, '_pdf-light-viewer-import-status', static::STATUS_FINISHED); } header('Content-Type: application/json'); echo json_encode(array('status' => $status_label, 'progress' => (int) $percent, 'error' => $error)); exit; }