hathormessage.php
3.99 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
<?php
/**
* @package Joomla.Administrator
* @subpackage Template.hathor
*
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*
*/
/**
* Checks if hathor is the default backend template or currently used as default style.
* If yes we want to show a message and action button.
*
* @return boolean
*
* @since 3.7
*/
function hathormessage_postinstall_condition()
{
$db = JFactory::getDbo();
$user = JFactory::getUser();
$globalTemplate = 'n/a';
$template = 'n/a';
// We can only do that if you have edit permissions in com_templates
if ($user->authorise('core.edit.state', 'com_templates'))
{
$query = $db->getQuery(true)
->select('template')
->from($db->quoteName('#__template_styles'))
->where($db->quoteName('home') . ' = ' . $db->quote('1'))
->where($db->quoteName('client_id') . ' = 1');
// Get the global setting about the default template
$globalTemplate = $db->setQuery($query)->loadResult();
}
// Get the current user admin style
$adminstyle = $user->getParam('admin_style');
if ($adminstyle)
{
$query = $db->getQuery(true)
->select('template')
->from($db->quoteName('#__template_styles'))
->where($db->quoteName('id') . ' = ' . (int) $adminstyle)
->where($db->quoteName('client_id') . ' = 1');
// Get the template name associated to the admin style
$template = $db->setquery($query)->loadResult();
}
if (($globalTemplate != 'hathor') && ($template != 'hathor'))
{
// Hathor is not default not global and not in the user so no message needed
return false;
}
// Hathor is default please add the message
return true;
}
/**
* Set the default backend template back to isis if you are allowed to do this
* This also sets the current user setting to isis if not done yet
*
* @return void
*
* @since 3.7
*/
function hathormessage_postinstall_action()
{
$db = JFactory::getDbo();
$user = JFactory::getUser();
$query = $db->getQuery(true)
->select(array('id', 'title'))
->from($db->quoteName('#__template_styles'))
->where($db->quoteName('template') . ' = "isis"')
->where($db->quoteName('client_id') . ' = 1');
$isisStyleId = $db->setQuery($query)->loadColumn();
$isisStyleName = $db->setQuery($query)->loadColumn(1);
$adminstyle = $user->getParam('admin_style');
// The user uses the system setting so no need to change that.
if ($adminstyle)
{
$query = $db->getQuery(true)
->select('template')
->from($db->quoteName('#__template_styles'))
->where($db->quoteName('id') . ' = ' . (int) $adminstyle)
->where($db->quoteName('client_id') . ' = 1');
$template = $db->setQuery($query)->loadResult();
// The current user uses hathor
if ($template == 'hathor')
{
$user->setParam('admin_style', $isisStyleId['0']);
$user->save();
}
}
// We can only do that if you have edit permissions in com_templates
if ($user->authorise('core.edit.state', 'com_templates'))
{
$query = $db->getQuery(true)
->update($db->quoteName('#__template_styles'))
->set($db->quoteName('home') . ' = ' . $db->quote('0'))
->where($db->quoteName('template') . ' = "hathor"')
->where($db->quoteName('client_id') . ' = 1');
// Execute
$db->setQuery($query)->execute();
$query = $db->getQuery(true)
->update($db->quoteName('#__template_styles'))
->set($db->quoteName('home') . ' = ' . $db->quote('1'))
->where($db->quoteName('template') . ' = "isis"')
->where($db->quoteName('client_id') . ' = 1')
->where($db->quoteName('id') . ' = ' . $isisStyleId[0]);
// Execute
$db->setQuery($query)->execute();
}
// The postinstall component load the language to late... so we need to make sure it is loaded here.
JFactory::getLanguage()->load('tpl_hathor', JPATH_ADMINISTRATOR, null, false, true);
// Template was successfully changed to isis
JFactory::getApplication()->enqueueMessage(JText::sprintf('TPL_HATHOR_CHANGED_DEFAULT_TEMPLATE_TO_ISIS', $isisStyleName[0]), 'message');
}