1: <?php
2: /**
3: * @package OpenCart
4: *
5: * @author Daniel Kerr
6: * @copyright Copyright (c) 2005 - 2017, OpenCart, Ltd. (https://www.opencart.com/)
7: * @license https://opensource.org/licenses/GPL-3.0
8: *
9: * @see https://www.opencart.com
10: */
11: namespace Opencart\System\Library;
12: /**
13: * Class Document
14: */
15: class Document {
16: /**
17: * @var string
18: */
19: private string $title = '';
20: /**
21: * @var string
22: */
23: private string $description = '';
24: /**
25: * @var string
26: */
27: private string $keywords = '';
28: /**
29: * @var array<string, array<string, string>>
30: */
31: private array $links = [];
32: /**
33: * @var array<string, array<string, string>>
34: */
35: private array $styles = [];
36: /**
37: * @var array<string, array<string, array<string, string>>>
38: */
39: private array $scripts = [];
40:
41: /**
42: * setTitle
43: *
44: * @param string $title
45: *
46: * @return void
47: */
48: public function setTitle(string $title): void {
49: $this->title = $title;
50: }
51:
52: /**
53: * getTitle
54: *
55: * @return string
56: */
57: public function getTitle(): string {
58: return $this->title;
59: }
60:
61: /**
62: * setDescription
63: *
64: * @param string $description
65: *
66: * @return void
67: */
68: public function setDescription(string $description): void {
69: $this->description = $description;
70: }
71:
72: /**
73: * getDescription
74: *
75: * @return string
76: */
77: public function getDescription(): string {
78: return $this->description;
79: }
80:
81: /**
82: * setKeywords
83: *
84: * @param string $keywords
85: */
86: public function setKeywords(string $keywords): void {
87: $this->keywords = $keywords;
88: }
89:
90: /**
91: * getKeywords
92: *
93: * @return string
94: */
95: public function getKeywords(): string {
96: return $this->keywords;
97: }
98:
99: /**
100: * addLink
101: *
102: * @param string $href
103: * @param string $rel
104: *
105: * @return void
106: */
107: public function addLink(string $href, string $rel): void {
108: $this->links[$href] = [
109: 'href' => $href,
110: 'rel' => $rel
111: ];
112: }
113:
114: /**
115: * getLinks
116: *
117: * @return array<string, array<string, string>>
118: */
119: public function getLinks(): array {
120: return $this->links;
121: }
122:
123: /**
124: * addStyle
125: *
126: * @param string $href
127: * @param string $rel
128: * @param string $media
129: *
130: * @return void
131: */
132: public function addStyle(string $href, string $rel = 'stylesheet', string $media = 'screen'): void {
133: $this->styles[$href] = [
134: 'href' => $href,
135: 'rel' => $rel,
136: 'media' => $media
137: ];
138: }
139:
140: /**
141: * getStyles
142: *
143: * @return array<string, array<string, string>>
144: */
145: public function getStyles(): array {
146: return $this->styles;
147: }
148:
149: /**
150: * addScript
151: *
152: * @param string $href
153: * @param string $position
154: *
155: * @return void
156: */
157: public function addScript(string $href, string $position = 'header'): void {
158: $this->scripts[$position][$href] = ['href' => $href];
159: }
160:
161: /**
162: * getScripts
163: *
164: * @param string $position
165: *
166: * @return array<string, array<string, string>>
167: */
168: public function getScripts(string $position = 'header'): array {
169: if (isset($this->scripts[$position])) {
170: return $this->scripts[$position];
171: } else {
172: return [];
173: }
174: }
175: }
176: