templates.php
4.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
<?php
/**
* @package Joomla.Administrator
* @subpackage com_templates
*
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Templates component helper.
*
* @since 1.6
*/
class TemplatesHelper
{
/**
* Configure the Linkbar.
*
* @param string $vName The name of the active view.
*
* @return void
*/
public static function addSubmenu($vName)
{
JHtmlSidebar::addEntry(
JText::_('COM_TEMPLATES_SUBMENU_STYLES'),
'index.php?option=com_templates&view=styles',
$vName == 'styles'
);
JHtmlSidebar::addEntry(
JText::_('COM_TEMPLATES_SUBMENU_TEMPLATES'),
'index.php?option=com_templates&view=templates',
$vName == 'templates'
);
}
/**
* Gets a list of the actions that can be performed.
*
* @return JObject
*
* @deprecated 3.2 Use JHelperContent::getActions() instead
*/
public static function getActions()
{
// Log usage of deprecated function
try
{
JLog::add(
sprintf('%s() is deprecated. Use JHelperContent::getActions() with new arguments order instead.', __METHOD__),
JLog::WARNING,
'deprecated'
);
}
catch (RuntimeException $exception)
{
// Informational log only
}
// Get list of actions
return JHelperContent::getActions('com_templates');
}
/**
* Get a list of filter options for the application clients.
*
* @return array An array of JHtmlOption elements.
*/
public static function getClientOptions()
{
// Build the filter options.
$options = array();
$options[] = JHtml::_('select.option', '0', JText::_('JSITE'));
$options[] = JHtml::_('select.option', '1', JText::_('JADMINISTRATOR'));
return $options;
}
/**
* Get a list of filter options for the templates with styles.
*
* @param mixed $clientId The CMS client id (0:site | 1:administrator) or '*' for all.
*
* @return array An array of JHtmlOption elements.
*/
public static function getTemplateOptions($clientId = '*')
{
// Build the filter options.
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName('element', 'value'))
->select($db->quoteName('name', 'text'))
->select($db->quoteName('extension_id', 'e_id'))
->from($db->quoteName('#__extensions'))
->where($db->quoteName('type') . ' = ' . $db->quote('template'))
->where($db->quoteName('enabled') . ' = 1')
->order($db->quoteName('client_id') . ' ASC')
->order($db->quoteName('name') . ' ASC');
if ($clientId != '*')
{
$query->where($db->quoteName('client_id') . ' = ' . (int) $clientId);
}
$db->setQuery($query);
$options = $db->loadObjectList();
return $options;
}
/**
* TODO
*
* @param string $templateBaseDir TODO
* @param string $templateDir TODO
*
* @return boolean|JObject
*/
public static function parseXMLTemplateFile($templateBaseDir, $templateDir)
{
$data = new JObject;
// Check of the xml file exists
$filePath = JPath::clean($templateBaseDir . '/templates/' . $templateDir . '/templateDetails.xml');
if (is_file($filePath))
{
$xml = JInstaller::parseXMLInstallFile($filePath);
if ($xml['type'] != 'template')
{
return false;
}
foreach ($xml as $key => $value)
{
$data->set($key, $value);
}
}
return $data;
}
/**
* TODO
*
* @param integer $clientId TODO
* @param string $templateDir TODO
*
* @return boolean|array
*
* @since 3.0
*/
public static function getPositions($clientId, $templateDir)
{
$positions = array();
$templateBaseDir = $clientId ? JPATH_ADMINISTRATOR : JPATH_SITE;
$filePath = JPath::clean($templateBaseDir . '/templates/' . $templateDir . '/templateDetails.xml');
if (is_file($filePath))
{
// Read the file to see if it's a valid component XML file
$xml = simplexml_load_file($filePath);
if (!$xml)
{
return false;
}
// Check for a valid XML root tag.
// Extensions use 'extension' as the root tag. Languages use 'metafile' instead
if ($xml->getName() != 'extension' && $xml->getName() != 'metafile')
{
unset($xml);
return false;
}
$positions = (array) $xml->positions;
if (isset($positions['position']))
{
$positions = (array) $positions['position'];
}
else
{
$positions = array();
}
}
return $positions;
}
}