This repository has been archived by the owner on Jun 19, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhelper.php
217 lines (176 loc) · 7.93 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
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
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<?php
/**
* @license GNU/GPL v2
* @copyright Copyright (c) Lyquix. All rights reserved.
*/
defined( '_JEXEC' ) or die( 'Restricted access' );
class modLyquixItemsHelper {
static function getList(&$params) {
// Load libraries
require_once("components/com_flexicontent/classes/flexicontent.helper.php");
require_once("components/com_flexicontent/helpers/permission.php");
// Initialize
global $mainframe;
$mainframe = JFactory::getApplication();
$db = JFactory::getDBO();
$query = $db -> getQuery(true);
// build query
$query -> select("DISTINCT c.id");
$query -> from("#__content AS c, #__flexicontent_cats_item_relations as fcir, #__flexicontent_items_ext as fie");
$query -> where("c.id = fcir.itemid AND c.id = fie.item_id AND c.state = 1 AND c.publish_up < UTC_TIMESTAMP() AND (c.publish_down = '0000-00-00 00:00:00' OR c.publish_down > UTC_TIMESTAMP())");
// category scope
if($params -> get('cats')) {
$query -> where("fcir.catid " . ($params -> get('cats_scope',0) ? "NOT " : "") . "IN (" . implode(",",$params -> get('cats')) . ")");
}
// types scope
if($params -> get('types')) {
$query -> where("fie.type_id " . ($params -> get('types_scope',0) ? "NOT " : "") . "IN (" . implode(",",$params -> get('types')) . ")");
}
// current item scope
preg_match('/(\d+)[:]*(\d*)/', JRequest::getVar('id'), $current_itemid);
if ($params -> get('item_scope', 1) && JRequest::getVar('option') == 'com_flexicontent' && array_key_exists(1, $current_itemid)) {
$query .= " AND c.id <> " . $current_itemid[1];
}
// featured item scope
if ($params->get('feat_scope') == 1) {
$query -> where("c.featured = '1'");
} elseif ($params->get('feat_scope') == 2) {
$query -> where("c.featured = '0'");
}
// language scope
if($params -> get('lang_scope', 1)) {
$lang = flexicontent_html::getUserCurrentLang();
$query -> where("(fie.language = '*' OR fie.language LIKE '" . $lang . "%')");
}
// remove unauthorized items
$user = JFactory::getUser();
$gid = !FLEXI_J16GE ? (int)$user -> get('aid') : max($user -> getAuthorisedViewLevels());
if(FLEXI_ACCESS && class_exists('FAccess')) {
$readperms = FAccess::checkUserElementsAccess($user -> gmid, 'read');
if (isset($readperms['item']) && count($readperms['item']) ) {
$query -> where("(c.access <= " . $gid . " OR c.id IN (" . implode(",", $readperms['item']) . "))");
}
else {
$query -> where("c.access <= " . $gid);
}
}
else {
$query -> where("c.access <= " . $gid);
}
$items_selection_mode = $params -> get('items_selection_mode', 'basic');
// basic selection
if($items_selection_mode == 'basic') {
$query -> order($params -> get('ordering','c.created DESC'));
}
// events selection
if($items_selection_mode == 'events' && $params -> get('event_date_field')) {
$fieldname = $params -> get('event_date_field');
if($fieldname != 'created' && $fieldname != 'modified') {
$query -> from("#__flexicontent_fields as ff, #__flexicontent_fields_item_relations as ffir");
$query -> where("ff.name = '" . $fieldname . "'");
$query -> where("ffir.field_id = ff.id");
$query -> where("c.id = ffir.item_id");
$fieldname = 'ffir.value';
}
else $fieldname = 'c.' . $fieldname;
// get anchor date from URL if available
$anchor_date = JRequest::getString($params -> get('event_url_parameter','date'));
if(!$anchor_date){
// no anchor date from url, get today's date
$anchor_date = date('Y-m-d');
}
// adjust anchor date to this week, month or year if needed
$event_date_anchor = $params -> get('event_date_anchor', 'day');
if($event_date_anchor == 'week') {
$week_start = $params -> get('event_week_start',0);
if($params -> get('event_week_start', 'monday') == 'monday'){
$anchor_date = date("Y-m-d", strtotime($anchor_date.' monday this week'));
}
else if($params -> get('event_week_start', 'monday') == 'sunday') {
$anchor_date = date("Y-m-d", strtotime($anchor_date.' sunday last week'));
}
}
else if($event_date_anchor == 'month') {
$anchor_date = date('Y-m', strtotime($anchor_date)) . '-01';
}
else if($event_date_anchor == 'year') {
$anchor_date = date('Y', strtotime($anchor_date)) . '-01-01';
}
// calculate range start
$range = date("Y-m-d", strtotime($anchor_date . " -" . $params -> get('event_date_range_start', 0) . " " . $params -> get('event_date_range_unit', 'day')));
$query -> where($fieldname . " >= '" . $range . "'");
// calculate range end
$range = date("Y-m-d", strtotime($anchor_date . " +" . $params -> get('event_date_range_end', 0) . " " . $params -> get('event_date_range_unit', 'day')));
$query -> where($fieldname . " < '" . $range . "'");
// set ordering
$query -> order($fieldname . " " . $params -> get('event_ordering', 'ASC'));
}
// advanced selection
if($items_selection_mode == 'advanced') {
$query -> from($params -> get('advanced_query_from'));
$query -> where($params -> get('advanced_query_where'));
$query -> order($params -> get('advanced_query_order'));
}
// set count limit and execute
$db -> setQuery($query, 0, $params -> get('count', 5));
$items = $db -> loadColumn();
return $items;
}
// function to generate URL from image field
static function getImage(&$item, $fieldname, $image_size, $image_width = null, $image_height = null, $image_resize = null) {
$url = '';
$value = '';
if (isset($item -> fieldvalues[$item -> fields[$fieldname] -> id])) {
// Unserialize value's properties and check for empty original name property
$value = unserialize($item -> fieldvalues[$item -> fields[$fieldname] -> id][0]);
$image_name = trim(@$value['originalname']);
if (strlen($image_name)) {
$field = $item -> fields[$fieldname];
$field -> parameters = json_decode($field -> attribs, true);
$image_source = $field -> parameters['image_source'];
$dir_url = str_replace('\\', '/', $field -> parameters['dir']);
$multiple_image_usages = !$image_source && $field -> parameters['list_all_media_files'] && $field -> parameters['unique_thumb_method'] == 0;
$extra_prefix = $multiple_image_usages ? 'fld' . $field -> id . '_' : '';
$of_usage = $field -> untranslatable ? 1 : $field -> parameters['of_usage'];
$u_item_id = ($of_usage && $item -> lang_parent_id && $item -> lang_parent_id != $item -> id) ? $item -> lang_parent_id : $item -> id;
$extra_folder = '/item_' . $u_item_id . '_field_' . $field -> id;
if ($image_size == 'custom') {
// get the original image file path
$image_file = JPATH_SITE . '/';
// supports only db mode and item-field folder mode
if ($image_source == 0) {
// db mode
$cparams = JComponentHelper::getParams('com_flexicontent');
$image_file .= str_replace('\\', '/', $cparams -> get('file_path', 'components/com_flexicontent/uploads'));
} else if ($image_source == 1) {
// item+field specific folder
$image_file .= $dir_url . $extra_folder . '/original';
}
$image_file .= '/' . $image_name;
$h = '&h=' . $image_height;
$w = '&w=' . $image_width;
$aoe = '&aoe=1';
$q = '&q=95';
$ar = '&ar=x';
$zc = $image_resize ? '&zc=1' : '';
$ext = strtolower(pathinfo($image_file, PATHINFO_EXTENSION));
$f = in_array( $ext, array('png', 'ico', 'gif') ) ? '&f='.$ext : '';
$conf = $w . $h . $aoe . $q . $ar . $zc . $f;
$url = JURI::root(true) . '/components/com_flexicontent/librairies/phpthumb/phpThumb.php?src=' . urlencode($image_file) . $conf;
}
else {
// Create thumbs URL path
$url = JURI::root(true) . '/' . $dir_url;
// Extra thumbnails sub-folder
if ($image_source == 1) {
// item+field specific folder
$url .= $extra_folder;
}
$url .= '/' . $image_size . '_' . $extra_prefix . $image_name;
}
}
$value['url'] = $url;
}
return $value;
}
}