helper = Helper_E2pdf_Helper::instance(); } /** * Get Base64 Encoded Pdf * @param string $value - Pdf path * @return mixed - Base64 encoded Pdf OR FALSE */ public function get_file($value, $extension = null) { $source = false; $protected = false; if ($value) { $value = trim($value); $site_url = site_url('/'); $https = str_replace('http://', 'https://', $site_url); $http = str_replace('https://', 'http://', $site_url); if (!get_option('e2pdf_images_remote_request', '0')) { if (0 === strpos($value, $https)) { $tmp_value = ABSPATH . substr($value, strlen($https)); if (@file_exists($tmp_value)) { $value = $tmp_value; } } elseif (0 === strpos($value, $http)) { $tmp_value = ABSPATH . substr($value, strlen($http)); if (@file_exists($tmp_value)) { $value = $tmp_value; } } } if (!$source) { if ((0 === strpos($value, ABSPATH) || 0 === strpos($value, '/')) && @file_exists($value) && $this->get_extension($value)) { if ($extension->info('key') == 'formidable' && class_exists('FrmProFileField') && !@is_readable($value)) { FrmProFileField::chmod($value, apply_filters('frm_protected_file_readonly_permission', 0400)); if (@!is_readable($value)) { @chmod($value, apply_filters('frm_protected_file_readonly_permission', 0400)); } if (@is_readable($value)) { $protected = true; } } $contents = @file_get_contents($value); if ($contents) { $source = base64_encode($contents); } if ($protected) { FrmProFileField::chmod($value, 0200); } } elseif (@file_exists(ABSPATH . $value) && $this->get_extension(ABSPATH . $value)) { if ($extension->info('key') == 'formidable' && class_exists('FrmProFileField') && !@is_readable(ABSPATH . $value)) { FrmProFileField::chmod(ABSPATH . $value, apply_filters('frm_protected_file_readonly_permission', 0400)); if (@!is_readable(ABSPATH . $value)) { @chmod(ABSPATH . $value, apply_filters('frm_protected_file_readonly_permission', 0400)); } if (@is_readable(ABSPATH . $value)) { $protected = true; } } $contents = @file_get_contents(ABSPATH . $value); if ($contents) { $source = base64_encode($contents); } if ($protected) { FrmProFileField::chmod(ABSPATH . $value, 0200); } } elseif ($tmp_file = base64_decode($value, true)) { if ($this->get_extension($tmp_file)) { $source = $value; } } elseif ($body = $this->get_by_url($value)) { $source = base64_encode($body); } } } return $source; } public function get_attachments($list, $extension = null) { $attachments = array(); if ($extension) { $value = array_filter(array_map('trim', preg_split('/[\n\,]+/', $list, 0, PREG_SPLIT_NO_EMPTY))); foreach ($value as $shortcode) { $files = array_filter(array_map('trim', preg_split('/[\n\,]+/', $extension->render($shortcode, array()), 0, PREG_SPLIT_NO_EMPTY))); foreach ($files as $file) { $source = $this->get_file(trim($file), $extension); if ($source) { $attachments[] = array( 'value' => $source, 'name' => $this->get_attachment_name($file, $extension, $shortcode), 'description' => $this->get_attachment_description($file, $extension, $shortcode), ); } } } } return $attachments; } public function get_attachment_name($file, $extension = null, $shortcode = '') { $name = basename(trim($file)); if (false !== strpos($name, 'index.php?gf-download')) { $parse_url = wp_parse_args(wp_parse_url($name, PHP_URL_QUERY)); if (!empty($parse_url['gf-download'])) { $name = basename($parse_url['gf-download']); } } return apply_filters('e2pdf_attachments_attachment_name', $name, $extension, $file, trim($shortcode)); } public function get_attachment_description($file, $extension = null, $shortcode = '') { return apply_filters('e2pdf_attachments_attachment_description', '', $extension, $file, trim($shortcode)); } /** * Get pdf by Url * @param string $url - Url to pdf * @return array(); */ public function get_by_url($url) { $response = wp_remote_get( $url, array( 'timeout' => get_option('e2pdf_images_timeout', '30'), 'sslverify' => false, ) ); if (wp_remote_retrieve_response_code($response) === 200) { return wp_remote_retrieve_body($response); } else { return ''; } } public function get_allowed_extensions() { return apply_filters( 'e2pdf_pdf_allowed_attachments_extensions', array( 'image/jpeg' => 'jpg', 'image/jpeg2' => 'jpeg', 'image/png' => 'png', 'image/gif' => 'gif', 'image/svg' => 'svg', 'image/svg+xml' => 'svg', 'image/webp' => 'webp', 'image/x-ms-bmp' => 'bmp', 'image/bmp' => 'bmp', 'image/tif' => 'tiff', 'image/tiff' => 'tiff', 'application/pdf' => 'pdf', 'text/csv' => 'csv', 'application/msword' => 'doc', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx', 'application/vnd.ms-excel' => '.xls', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => '.xlsx', 'application/vnd.oasis.opendocument.text' => 'odt', 'application/vnd.oasis.opendocument.spreadsheet' => 'ods', 'application/vnd.oasis.opendocument.presentation' => '.odp', ) ); } public function get_extension($value = false) { $value = trim($value); if (!$value) { return false; } $extensions = $this->get_allowed_extensions(); $extension = false; $mime = false; if (@file_exists($value)) { $file_extension = strtolower(pathinfo($value, PATHINFO_EXTENSION)); if (in_array($file_extension, $extensions)) { return $file_extension; } elseif (function_exists('finfo_open') && function_exists('finfo_file')) { $f = finfo_open(); $mime = @finfo_file($f, $value, FILEINFO_MIME_TYPE); } } else { $file_extension = strtolower(pathinfo($value, PATHINFO_EXTENSION)); if (in_array($file_extension, $extensions)) { return $file_extension; } elseif (function_exists('finfo_open') && function_exists('finfo_buffer')) { $f = finfo_open(); $mime = finfo_buffer($f, $value, FILEINFO_MIME_TYPE); } } if ($mime && isset($extensions[$mime])) { $extension = $extensions[$mime]; } return $extension; } }