/**
  * Used to set up our PDF template folder, 
  * save folder and font folder
  */
 public function set_directory_structure()
 {
     $upload_dir = PDF_Common::get_upload_dir();
     $site_name = PDF_Common::get_site_name();
     /*
      * As of Gravity PDF 3.7 we'll be dropping the 'site_name' folder for single installs 
      * And changing multisite installs to their site ID         
      */
     $this->template_location = apply_filters('gfpdfe_template_location', $upload_dir['basedir'] . '/' . PDF_SAVE_FOLDER . '/', $upload_dir['basedir'], PDF_SAVE_FOLDER);
     $this->template_site_location = $this->template_location;
     $this->template_save_location = $this->template_location . 'output/';
     $this->template_font_location = $this->template_location . 'fonts/';
     $this->template_location_url = apply_filters('gfpdfe_template_location_uri', $upload_dir['baseurl'] . '/' . PDF_SAVE_FOLDER . '/', $upload_dir['baseurl'], PDF_SAVE_FOLDER);
     $this->template_site_location_url = $this->template_location_url;
     $this->template_save_location_url = $this->template_location_url . 'output/';
     $this->template_font_location_url = $this->template_location_url . 'fonts/';
     $this->old_3_6_template_site_location = $this->template_location . $site_name . '/';
     /*
      * Use the network ID for multisite installs 
      */
     if (is_multisite()) {
         $blog_id = get_current_blog_id();
         $this->template_site_location = $this->template_location . $blog_id . '/';
         $this->template_save_location = $this->template_site_location . 'output/';
         $this->template_font_location = $this->template_site_location . 'fonts/';
         $this->template_site_location_url = $this->template_location_url . $blog_id . '/';
         $this->template_save_location_url = $this->template_site_location_url . 'output/';
         $this->template_font_location_url = $this->template_site_location_url . 'fonts/';
         $this->old_3_6_template_site_location = $this->template_location . $site_name . '/';
     }
     /*
      * Include old template locations to help with migrations 
      */
     $this->old_template_location = get_stylesheet_directory() . '/' . PDF_SAVE_FOLDER . '/';
     $this->upload_dir = $upload_dir['basedir'];
     /*
      * Include relative paths for display on the support pages 
      */
     $this->relative_output_location = str_replace(ABSPATH, '/', $this->template_save_location);
     $this->relative_font_location = str_replace(ABSPATH, '/', $this->template_font_location);
     $this->relative_mpdf_tmp = str_replace(ABSPATH, '/', PDF_PLUGIN_DIR) . 'mPDF/tmp/';
 }
<?php

/**
 * Debugging can be done by adding &html=1 to the end of the URL when viewing the PDF
 * We no longer need to access the file directly.
 */
if (!class_exists('RGForms')) {
    /* Accessed directly */
    exit;
}
/** 
 * Set up the form ID and lead ID, as well as we want page breaks displayed. 
 * Form ID and Lead ID can be set by passing it to the URL - ?fid=1&lid=10
 */
PDF_Common::setup_ids();
global $gfpdf;
$configuration_data = $gfpdf->get_config_data($form_id);
$show_html_fields = $configuration_data['default-show-html'] == 1 ? true : false;
$show_empty_fields = $configuration_data['default-show-empty'] == 1 ? true : false;
$show_page_names = $configuration_data['default-show-page-names'] == 1 ? true : false;
/**
 * Load the form data, including the custom style sheet which looks in the plugin's theme folder before defaulting back to the plugin's file.
 */
$form = RGFormsModel::get_form_meta($form_id);
$stylesheet_location = file_exists(PDF_TEMPLATE_LOCATION . 'template.css') ? PDF_TEMPLATE_URL_LOCATION . 'template.css' : PDF_PLUGIN_URL . 'styles/template.css';
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

</style>
    <title>Gravity Forms PDF Extended</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
	<body>
        <?php 
foreach ($lead_ids as $lead_id) {
    $lead = RGFormsModel::get_lead($lead_id);
    do_action("gform_print_entry_header", $form, $lead);
    $form_data = GFPDFEntryDetail::lead_detail_grid_array($form, $lead);
    /*
     * Add &data=1 when viewing the PDF via the admin area to view the $form_data array
     */
    PDF_Common::view_data($form_data);
    /* get all the form values */
    /*$date_created		= $form_data['date_created'];
    
    			$first_name 		= $form_data['1.Name']['first'];
    			$last_name 			= $form_data['1.Name']['last'];*/
    //echo print_r($form_data['field'], true);
    $fundName = $form_data['field']['Fund Name'];
    $trusteeType = $form_data['field']['Trustee Type'];
    $attendedBy = "";
    $trusteeTrustees = "";
    $trusteesDirectors = "";
    $individualTrustees = $form_data['field']['Individual Trustees'];
    $corporateDirectors = $form_data['field']['Directors of Corporate Trustee'];
    $attendedBy = substr($attendedBy, 0, -2);
    $lastComma = strrchr($attendedBy, ',');
 private static function set_notice_type()
 {
     global $gfpdfe_data;
     if (PDF_Common::is_settings()) {
         $gfpdfe_data->notice_type = 'gfpdfe_notices';
     } else {
         if (is_multisite() && is_network_admin()) {
             $gfpdfe_data->notice_type = 'network_admin_notices';
         } else {
             $gfpdfe_data->notice_type = 'admin_notices';
         }
     }
 }
 public static function do_template_migration()
 {
     /*
      * Initialise the Wordpress Filesystem API
      */
     if (PDF_Common::initialise_WP_filesystem_API(array(), 'gfpdfe_migrate') === false) {
         return 'false';
     }
     /*
      * If we got here we should have $wp_filesystem available
      */
     global $wp_filesystem, $gfpdfe_data;
     /*
      * Convert paths for SSH/FTP users who are rooted to a directory along the server absolute path
      */
     $base_template_directory = self::get_basedir($gfpdfe_data->template_location);
     $current_pdf_path = self::get_basedir($gfpdfe_data->template_site_location);
     if (is_dir($gfpdfe_data->old_template_location)) {
         $previous_pdf_path = self::get_basedir($gfpdfe_data->old_template_location);
     } elseif (is_dir($gfpdfe_data->old_3_6_template_site_location)) {
         $previous_pdf_path = self::get_basedir($gfpdfe_data->old_3_6_template_site_location);
     }
     /* create the base template directory */
     if (self::create_base_template_dir($base_template_directory) === false) {
         return false;
     }
     /* create the site template directory */
     if (self::create_site_template_dir($current_pdf_path) === false) {
         return false;
     }
     if ($wp_filesystem->is_dir($previous_pdf_path)) {
         if (is_dir($gfpdfe_data->old_template_location)) {
             /* swap back to TRUE to delete the theme folder */
             if (!self::pdf_extended_copy_directory($previous_pdf_path, $current_pdf_path, true, true, true)) {
                 return false;
             }
         } elseif (is_dir($gfpdfe_data->old_3_6_template_site_location)) {
             /* swap back to TRUE to delete the theme folder */
             if (!self::pdf_extended_copy_directory($previous_pdf_path, $current_pdf_path, true, false, true)) {
                 return false;
             }
         }
         /*
          * Clean up the DB
          */
         delete_option('gfpdfe_automated_install');
     }
     return true;
 }
Beispiel #6
0
 private static function get_product_array($form, $lead, $has_product_fields, $form_array)
 {
     $currency_type = method_exists('GFCommon', 'is_currency_decimal_dot') ? GFCommon::is_currency_decimal_dot() : PDF_Common::is_currency_decimal_dot();
     $currency_format = $currency_type ? 'decimal_dot' : 'decimal_comma';
     if ($has_product_fields) {
         $products = GFCommon::get_product_fields($form, $lead, true);
         /* check that there are actual product fields */
         if (sizeof($products['products']) > 0) {
             /*
              * Set up our variables
              */
             $total = 0;
             $subtotal = 0;
             foreach ($products['products'] as $id => $product) {
                 $price = GFCommon::to_number($product['price']);
                 /* add all options to total price */
                 if (is_array(rgar($product, 'options'))) {
                     foreach ($product['options'] as $option) {
                         $price += GFCommon::to_number($option['price']);
                     }
                 }
                 /* calculate subtotal */
                 $subtotal = floatval($product['quantity']) * $price;
                 $total += $subtotal;
                 /*
                  * Check if we should include options
                  */
                 $options = isset($product['options']) ? $product['options'] : array();
                 /*
                  * Add formated price for each product option 
                  */
                 foreach ($options as &$o) {
                     if (is_numeric($o['price'])) {
                         $o['price_formatted'] = GFCommon::format_number($o['price'], 'currency');
                     }
                 }
                 /*
                  * Store product in $form_array array
                  */
                 $form_array['products'][$id] = array('name' => esc_html($product['name']), 'price' => esc_html($product['price']), 'price_unformatted' => GFCommon::clean_number($product['price'], $currency_format), 'options' => $options, 'quantity' => $product['quantity'], 'subtotal' => $subtotal, 'subtotal_formatted' => GFCommon::format_number($subtotal, 'currency'));
             }
             /* Increment total */
             $total += floatval($products['shipping']['price']);
             $subtotal = $total - floatval($products['shipping']['price']);
             /* add totals to form data */
             $form_array['products_totals'] = array('subtotal' => $subtotal, 'shipping' => $products['shipping']['price'], 'total' => $total, 'shipping_formatted' => GFCommon::format_number($products['shipping']['price'], 'currency'), 'subtotal_formatted' => GFCommon::format_number($subtotal, 'currency'), 'total_formatted' => GFCommon::format_number($total, 'currency'));
         }
     }
     return $form_array;
 }
 public static function generate_pdf_parameters($index, $form_id, $lead_id, $template = '')
 {
     global $gfpdf;
     $config = $gfpdf->configuration[$index];
     $pdf_name = isset($config['filename']) && strlen($config['filename']) > 0 ? $gfpdf->get_pdf_name($index, $form_id, $lead_id) : PDF_Common::get_pdf_filename($form_id, $lead_id);
     $template = isset($template) && strlen($template) > 0 ? $template : $gfpdf->get_template($index);
     $pdf_size = isset($config['pdf_size']) && (is_array($config['pdf_size']) || strlen($config['pdf_size']) > 0) ? $config['pdf_size'] : PDFGenerator::$default['pdf_size'];
     $orientation = isset($config['orientation']) && strlen($config['orientation']) > 0 ? $config['orientation'] : PDFGenerator::$default['orientation'];
     $security = isset($config['security']) && $config['security'] ? $config['security'] : PDFGenerator::$default['security'];
     $premium = isset($config['premium']) && $config['premium'] === true ? true : false;
     /* added in v3.4.0 */
     $dpi = isset($config['dpi']) && (int) $config['dpi'] > 0 ? (int) $config['dpi'] : false;
     /* added in v3.4.0 */
     $pdfa1b = isset($config['pdfa1b']) && $config['pdfa1b'] === true ? true : false;
     /* added in v3.4.0 */
     $pdfx1a = isset($config['pdfx1a']) && $config['pdfx1a'] === true ? true : false;
     /*
      * Validate privileges 
      * If blank and security is true then set privileges to all
      */
     $privileges = isset($config['pdf_privileges']) ? $gfpdf->validate_privileges($config['pdf_privileges']) : $gfpdf->validate_privileges('');
     $pdf_password = isset($config['pdf_password']) ? PDF_Common::do_mergetags($config['pdf_password'], $form_id, $lead_id) : '';
     $master_password = isset($config['pdf_master_password']) ? PDF_Common::do_mergetags($config['pdf_master_password'], $form_id, $lead_id) : '';
     $rtl = isset($config['rtl']) ? $config['rtl'] : false;
     $form = RGFormsModel::get_form_meta($form_id);
     $lead = RGFormsModel::get_lead($lead_id);
     /*
      * Run the options through filters
      */
     $pdf_name = apply_filters('gfpdfe_pdf_name', $pdf_name, $form, $lead);
     $template = apply_filters('gfpdfe_template', $template, $form, $lead);
     $orientation = apply_filters('gfpdf_orientation', $orientation, $form, $lead);
     $security = apply_filters('gfpdf_security', $security, $form, $lead);
     $privileges = apply_filters('gfpdf_privilages', $privileges, $form, $lead);
     $pdf_password = apply_filters('gfpdf_password', $pdf_password, $form, $lead);
     $master_password = apply_filters('gfpdf_master_password', $master_password, $form, $lead);
     $rtl = apply_filters('gfpdf_rtl', $rtl, $form, $lead);
     $pdf_arguments = array('pdfname' => $pdf_name, 'template' => $template, 'pdf_size' => $pdf_size, 'orientation' => $orientation, 'security' => $security, 'pdf_password' => $pdf_password, 'pdf_privileges' => $privileges, 'pdf_master_password' => $master_password, 'rtl' => $rtl, 'premium' => $premium, 'dpi' => $dpi, 'pdfa1b' => $pdfa1b, 'pdfx1a' => $pdfx1a);
     return $pdf_arguments;
 }
 /**
  * Test GF replace variables function (merge tags)
  * i.e GFCommon::replace_variables
  *
  * @group gravityforms
  * @dataProvider provider_mergetag_test
  */
 public function test_replace_variables($mergetag, $value)
 {
     $this->assertEquals($value, PDF_Common::do_mergetags($mergetag, $this->form_id[0], $this->entries[2]));
 }
 protected function run_setting_routing()
 {
     global $gfpdfe_data;
     /* 
      * Check if we need to redeploy default PDF templates/styles to the theme folder 
      */
     if (rgpost("gfpdf_deploy") && (wp_verify_nonce(PDF_Common::post('gfpdf_deploy_nonce'), 'gfpdf_deploy_nonce_action') || wp_verify_nonce(PDF_Common::get('_wpnonce'), 'pdf-extended-filesystem'))) {
         /*
          * Check if the user wants to upgrade the system or only initialise the fonts
          */
         if (PDF_Common::post('font-initialise')) {
             /*
              * We only want to reinitialise the font files and configuration
              */
             if (GFPDF_InstallUpdater::initialise_fonts() === false) {
                 return true;
             }
         } else {
             if (rgpost('upgrade')) {
                 /* 
                  * Deploy new template styles 
                  * If we get false returned Wordpress is trying to get 
                  * access details to update files so don't display anything.
                  */
                 if (self::deploy() === 'false') {
                     return true;
                 }
             }
         }
     }
     /*
      * Check if we need to sync the theme folders because a user changes theme
      * Sniff the _wpnonce values to determine this.
      */
     if (isset($_GET['_wpnonce'])) {
         /*
          * Check if we want to copy the theme files
          */
         if ((is_dir($gfpdfe_data->old_template_location) || is_dir($gfpdfe_data->old_3_6_template_site_location)) && wp_verify_nonce(PDF_Common::get('_wpnonce'), 'gfpdfe_migrate')) {
             if (GFPDF_InstallUpdater::run_template_migration() === 'false') {
                 return true;
             }
         }
     }
 }
Beispiel #10
0
 /**
  * Loads the Gravity Form output script (actually the print preview)
  */
 private function load_entry_data($template)
 {
     global $gfpdfe_data;
     /* set up contstants for gravity forms to use so we can override the security on the printed version */
     if (file_exists($gfpdfe_data->template_site_location . $template)) {
         return PDF_Common::get_html_template($gfpdfe_data->template_site_location . $template);
     } else {
         /*
          * Check if template file exists in the plugin's core template folder
          */
         if (file_exists(PDF_PLUGIN_DIR . 'templates/' . $template)) {
             return PDF_Common::get_html_template(PDF_PLUGIN_DIR . 'initialisation/templates/' . $template);
         } else {
             return PDF_Common::get_html_template(PDF_PLUGIN_DIR . 'initialisation/templates/' . PDFGenerator::$default['template']);
         }
     }
 }
 /**
  * Write a stub to test a number of filename options 
  * We won't be testing form or lead merge tag data at this stage 
  * Just the basic naming convention (see common functions tests for full naming tests)
  *
  * @group configuration
  * @dataProvider provider_test_pdf_name
  */
 public function test_pdf_name($test, $result)
 {
     $this->assertEquals(PDF_Common::validate_pdf_name($test), $result);
 }
 public function get_pdf_name($id, $form_id = false, $lead_id = false)
 {
     if (isset($this->configuration[$id]['filename'])) {
         return PDF_Common::validate_pdf_name($this->configuration[$id]['filename'], $form_id, $lead_id);
     } else {
         return PDF_Common::validate_pdf_name(PDF_Common::get_pdf_filename($form_id, $lead_id), $form_id, $lead_id);
     }
 }