From 5857dfaa427e847d5d9f32047ec5d6f508cde868 Mon Sep 17 00:00:00 2001
From: Jared Hancock <gravydish@gmail.com>
Date: Mon, 18 Jun 2012 13:53:14 -0500
Subject: [PATCH] Add default paper size for printing

Allow staff members the ability to select a default paper size which will be
used in printing tickets via PDF. In the future, this may be overridden per
ticket by a dialog box at print time.
---
 include/class.pdf.php                     |  3 ++-
 include/class.staff.php                   |  7 ++++++-
 include/staff/profile.inc.php             | 17 +++++++++++++++++
 main.inc.php                              |  2 +-
 setup/inc/sql/c2d2fabf-aa4664af.patch.sql | 13 +++++++++++++
 setup/inc/sql/osticket-v1.7-mysql.sql     |  1 +
 setup/inc/sql/osticket-v1.7-mysql.sql.md5 |  2 +-
 7 files changed, 41 insertions(+), 4 deletions(-)
 create mode 100644 setup/inc/sql/c2d2fabf-aa4664af.patch.sql

diff --git a/include/class.pdf.php b/include/class.pdf.php
index 537fb5fe1..dae066b5b 100644
--- a/include/class.pdf.php
+++ b/include/class.pdf.php
@@ -30,8 +30,9 @@ class Ticket2PDF extends FPDF
     var $ticket = null;
 
 	function Ticket2PDF($ticket, $notes=false) {
+        global $thisstaff;
 
-        parent::FPDF();
+        parent::FPDF('P', 'mm', $thisstaff->getDefaultPaperSize());
 
         $this->ticket = $ticket;
 
diff --git a/include/class.staff.php b/include/class.staff.php
index bd7379ed9..2f5726d01 100644
--- a/include/class.staff.php
+++ b/include/class.staff.php
@@ -159,6 +159,10 @@ class Staff {
         return $this->ht['default_signature_type'];
     }
 
+    function getDefaultPaperSize() {
+        return $this->ht['default_paper_size'];
+    }
+
     function forcePasswdChange() {
         return ($this->ht['change_passwd']);
     }
@@ -388,7 +392,8 @@ class Staff {
             .' ,show_assigned_tickets='.db_input(isset($vars['show_assigned_tickets'])?1:0)
             .' ,max_page_size='.db_input($vars['max_page_size'])
             .' ,auto_refresh_rate='.db_input($vars['auto_refresh_rate'])
-            .' ,default_signature_type='.db_input($vars['default_signature_type']);
+            .' ,default_signature_type='.db_input($vars['default_signature_type'])
+            .' ,default_paper_size='.db_input($vars['default_paper_size']);
 
 
         if($vars['passwd1'])
diff --git a/include/staff/profile.inc.php b/include/staff/profile.inc.php
index e2b883e1b..39eaf80a5 100644
--- a/include/staff/profile.inc.php
+++ b/include/staff/profile.inc.php
@@ -156,6 +156,23 @@ $info['id']=$staff->getId();
                 &nbsp;<span class="error">&nbsp;<?php echo $errors['default_signature_type']; ?></span>
             </td>
         </tr>
+        <tr>
+            <td width="180">Default Paper Size:</td>
+            <td>
+                <select name="default_paper_size">
+                  <option value="none" selected="selected">&mdash; None &mdash;</option>
+                  <?php
+                  $options=array('Letter', 'Legal', 'A4', 'A3');
+                  foreach($options as $v) {
+                      echo sprintf('<option value="%s" %s>%s</option>',
+                                $v,($info['default_paper_size']==$v)?'selected="selected"':'',$v);
+                  }
+                  ?>
+                </select>
+                <em>Paper size used when printing tickets to PDF</em>
+                &nbsp;<span class="error">&nbsp;<?php echo $errors['default_paper_size']; ?></span>
+            </td>
+        </tr>
         <?php
         //Show an option to show assigned tickets to admins & managers.
         if($staff->isAdmin() || $staff->isManager()){ ?>
diff --git a/main.inc.php b/main.inc.php
index 57769d32c..8421be6ce 100644
--- a/main.inc.php
+++ b/main.inc.php
@@ -55,7 +55,7 @@
 
     #Current version && schema signature (Changes from version to version)
     define('THIS_VERSION','1.7-DPR3'); //Shown on admin panel
-    define('SCHEMA_SIGNATURE','c2d2fabfdf15e1632f00850ffb361558'); //MD5 signature of the db schema. (used to trigger upgrades)
+    define('SCHEMA_SIGNATURE','aa4664afc3b43d4068eb2e82684fc28e'); //MD5 signature of the db schema. (used to trigger upgrades)
 
     #load config info
     $configfile='';
diff --git a/setup/inc/sql/c2d2fabf-aa4664af.patch.sql b/setup/inc/sql/c2d2fabf-aa4664af.patch.sql
new file mode 100644
index 000000000..5b5cce6a3
--- /dev/null
+++ b/setup/inc/sql/c2d2fabf-aa4664af.patch.sql
@@ -0,0 +1,13 @@
+/**
+ * Add column for default paper size when printing tickets from the system
+ * 
+ * @version 1.7-rc1 default-paper-size
+ */
+
+ALTER TABLE %TABLE_PREFIX%staff ADD
+    `default_paper_size` ENUM( 'Letter', 'Legal', 'Ledger', 'A4', 'A3' ) NOT NULL DEFAULT 'Letter'
+    AFTER `default_signature_type`;
+
+-- Finished with patch
+UPDATE `%TABLE_PREFIX%config`
+    SET `schema_signature`='aa4664afc3b43d4068eb2e82684fc28e';
diff --git a/setup/inc/sql/osticket-v1.7-mysql.sql b/setup/inc/sql/osticket-v1.7-mysql.sql
index a3d03dd72..b8bb7ce26 100644
--- a/setup/inc/sql/osticket-v1.7-mysql.sql
+++ b/setup/inc/sql/osticket-v1.7-mysql.sql
@@ -478,6 +478,7 @@ CREATE TABLE `%TABLE_PREFIX%staff` (
   `max_page_size` int(11) unsigned NOT NULL default '0',
   `auto_refresh_rate` int(10) unsigned NOT NULL default '0',
   `default_signature_type` ENUM( 'none', 'mine', 'dept' ) NOT NULL DEFAULT 'none',
+  `default_paper_size` ENUM( 'Letter', 'Legal', 'Ledger', 'A4', 'A3' ) NOT NULL DEFAULT 'Letter',
   `created` datetime NOT NULL,
   `lastlogin` datetime default NULL,
   `passwdreset` datetime default NULL,
diff --git a/setup/inc/sql/osticket-v1.7-mysql.sql.md5 b/setup/inc/sql/osticket-v1.7-mysql.sql.md5
index 798a76acc..4bdfcd1ce 100644
--- a/setup/inc/sql/osticket-v1.7-mysql.sql.md5
+++ b/setup/inc/sql/osticket-v1.7-mysql.sql.md5
@@ -1 +1 @@
-c2d2fabfdf15e1632f00850ffb361558
+aa4664afc3b43d4068eb2e82684fc28e
-- 
GitLab