/
helper.php
146 lines (130 loc) · 5.15 KB
/
helper.php
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
<?php
// $HeadURL: https://joomgallery.org/svn/joomgallery/JG-3/Modules/JoomStats/trunk/helper.php $
// $Id: helper.php 4104 2013-02-19 16:53:27Z erftralle $
/****************************************************************************************\
** Module JoomGalleryStats for JoomGallery **
** By: JoomGallery::ProjectTeam **
** Released under GNU GPL Public License **
** License: http://www.gnu.org/copyleft/gpl.html or have a look **
** at administrator/components/com_joomgallery/LICENSE.TXT **
\****************************************************************************************/
defined('_JEXEC') or die('Restricted access');
/**
*
* Helper class for module JoomGalleryStats
*
*/
class modJoomStatsHelper
{
/**
*
* Get parameters from backend, prepare and execute the database queries,
* and fill an array for later output in template
* @param $params
* @param $debugmode boolean true to output the database query and the
* database error text if existent
*/
public static function getList(&$params, &$debugmode)
{
// Array for storing the e.g. results and db query clauses
$elems = array();
// Retreive parameters and fill the array
// Get parameters for images and fill array element
$elems['allpics'] = new stdClass();
$elems['allpics']->enabled = intval($params->get('all_pics', false));
if($elems['allpics']->enabled)
{
$elems['allpics']->outputtext = $params->get('all_picstext', '');
$elems['allpics']->queryselect = 'COUNT(id)';
$elems['allpics']->queryfrom = '#__joomgallery';
}
// Get parameters for categories and fill array element
$elems['allcats'] = new stdClass();
$elems['allcats']->enabled = intval($params->get('all_cats'));
if($elems['allcats']->enabled)
{
$elems['allcats']->outputtext = $params->get('all_catstext');
$elems['allcats']->queryselect = 'COUNT(cid)';
$elems['allcats']->queryfrom = '#__joomgallery_catg';
}
// Get parameters for hits and fill array element
$elems['allhits'] = new stdClass();
$elems['allhits']->enabled = intval($params->get('all_hits', false));
if($elems['allhits']->enabled)
{
$elems['allhits']->outputtext = $params->get('all_hitstext', '');
$elems['allhits']->queryselect = 'sum(hits)';
$elems['allhits']->queryfrom = '#__joomgallery';
}
// Get parameters for comments and fill array element
$elems['allcomments'] = new stdClass();
$elems['allcomments']->enabled = intval($params->get('all_comments'), false);
if($elems['allcomments']->enabled)
{
$elems['allcomments']->outputtext = $params->get('all_commentstext', '');
$elems['allcomments']->queryselect = 'COUNT(cmtid)';
$elems['allcomments']->queryfrom = '#__joomgallery_comments';
}
// Get parameters for votes and fill array element
$elems['allvotes'] = new stdClass();
$elems['allvotes']->enabled = intval($params->get('all_votes', false));
if($elems['allvotes']->enabled)
{
$elems['allvotes']->outputtext = $params->get('all_votestext', '');
$elems['allvotes']->queryselect = 'COUNT(voteid)';
$elems['allvotes']->queryfrom = '#__joomgallery_votes';
}
// Get parameters for nametags and fill array element
$elems['allnametags'] = new stdClass();
$elems['allnametags']->enabled = intval($params->get('all_nametags', false));
if($elems['allnametags']->enabled)
{
$elems['allnametags']->outputtext = $params->get('all_nametagstext', '');
$elems['allnametags']->queryselect = 'COUNT(nid)';
$elems['allnametags']->queryfrom = '#__joomgallery_nameshields';
}
// Get instance of database object ans set debug mode if enabled
$database = JFactory::getDBo();
// Get an instance of JDatabaseQuery object and clear them initially
$query = $database->getQuery(true);
// Set debug mode of database to fill the log array of database object
// if debug mode enabled
if($debugmode)
{
$database->setdebug(true);
}
// Iterate through array
// reference to element for adding the results (possible since PHP5)
foreach($elems as &$elem)
{
if($elem->enabled)
{
// Fill the select and from clause of query
$query->select($elem->queryselect);
$query->from($elem->queryfrom);
// Set the query and get the result from database
$database->setQuery($query);
$elem->outputresult = $database->loadResult();
}
// Clear the query for next element
$query->clear();
}
if($debugmode)
{
// Get the database log array
$log = $database->getLog();
// And add the text to elements
$logcount = 0;
foreach($elems as &$elem)
{
if($elem->enabled)
{
$elem->dbquerylog = '•'.nl2br($log[$logcount], true).'•<br />';
$logcount++;
}
}
$database->debug(0);
}
return $elems;
}
}