1: <?php
2: /**
3: * LICENSE (BSD)
4: *
5: * Copyright (c) 2013, Gerd Christian Kunze
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions are
10: * met:
11: *
12: * * Redistributions of source code must retain the above copyright
13: * notice, this list of conditions and the following disclaimer.
14: *
15: * * Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
18: *
19: * * Neither the name of Gerd Christian Kunze nor the names of the
20: * contributors may be used to endorse or promote products derived from
21: * this software without specific prior written permission.
22: *
23: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
24: * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
25: * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
27: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
28: * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
29: * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
30: * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
31: * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
32: * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34: *
35: * Instance
36: * 14.02.2013 11:25
37: */
38: namespace MOC\Extension\Pdf;
39: use MOC\Api;
40: use MOC\Generic\Device\Extension;
41: /**
42: *
43: */
44: class Instance implements Extension {
45:
46: /** @var Instance $Singleton */
47: private static $Singleton = null;
48:
49: /**
50: * Get Singleton/Instance
51: *
52: * @static
53: * @throws \Exception
54: * @return Instance
55: */
56: public static function InterfaceInstance() {
57: require_once( '3rdParty/tFPDF/tfpdf.php' );
58: require_once( '3rdParty/tFPDF/makefont/makefont.php' );
59: // This Addon must be purchased to use at http://www.interpid.eu
60: if( file_exists( __DIR__.'/3rdParty/Addons/TFPDFTable/class.tfpdftable.php' ) ) {
61: /** @noinspection PhpIncludeInspection */
62: require_once( __DIR__.'/3rdParty/Addons/TFPDFTable/class.tfpdftable.php' );
63: } else {
64: throw new \Exception('This Addon must be purchased to use at http://www.interpid.eu');
65: }
66: // Those are bundled
67: require_once( '3rdParty/Addons/EndAddonChain.php' );
68: require_once( '3rdParty/Addons/JavaScript.php' );
69: require_once( '3rdParty/Addons/AutoPrint.php' );
70: require_once( '3rdParty/Addons/BeginAddonChain.php' );
71:
72: if( self::$Singleton === null ) {
73: self::$Singleton = new Instance();
74: } return self::$Singleton;
75: }
76:
77: /**
78: * Get Changelog
79: *
80: * @static
81: * @return \MOC\Core\Changelog
82: */
83: public static function InterfaceChangelog() {
84: return Api::Core()->Changelog()->Create( __CLASS__ )
85: ->Build()->Clearance( '18.02.2013 11:22', 'Alpha' )
86: ;
87: }
88:
89: /**
90: * Get Dependencies
91: *
92: * @static
93: * @return \MOC\Core\Depending
94: */
95: public static function InterfaceDepending() {
96: return Api::Core()->Depending();
97: }
98:
99: /**
100: * Set external Extension-Instance
101: *
102: * Contains:
103: * - Set new (external created) 3rdParty Instance to Current
104: *
105: * @param $Instance
106: *
107: * @return Extension
108: */
109: public function Define( $Instance ) {
110: // TODO: Implement Define() method.
111: }
112:
113: /**
114: * Select Index as active 3rdParty Instance
115: *
116: * @param int $Index
117: *
118: * @return Extension
119: */
120: public function Select( $Index ) {
121: // TODO: Implement Select() method.
122: }
123:
124: /**
125: * Get Index for Select() from Current() 3rdParty Instance
126: *
127: * @return int
128: */
129: public function Index() {
130: // TODO: Implement Index() method.
131: }
132:
133:
134: /** @var \tFPDF[] $Queue */
135: private $Queue = array();
136: /** @var \tFPDF $Current */
137: private $Current = null;
138:
139: /**
140: * @return Instance
141: */
142: public function Create() {
143: $Instance = new Addon\BeginAddonChain( 'P', 'mm', 'A4' );
144: if( null === $this->Current ) {
145: $this->Current = $Instance;
146: return $this;
147: } else {
148: array_push( $this->Queue, $this->Current );
149: $this->Current = $Instance;
150: return $this;
151: }
152: }
153:
154: /**
155: * @return null|\tFPDF
156: */
157: public function Current() {
158: return $this->Current;
159: }
160:
161: /**
162: * @return Instance
163: */
164: public function Destroy() {
165: if( count( $this->Queue ) ) {
166: $this->Current = array_pop( $this->Queue );
167: } else {
168: $this->Current = null;
169: }
170: return $this;
171: }
172: }
173: