Exponential Basic 2.4.0.1 Exponential Basic CMS — PHP Class Reference

hotdealsgallery.php
Go to the documentation of this file.
1 <?php
3 //
4 // $Id: hotdealsgallery.php,v 1.1.2.1 2002/05/14 13:02:54 kracker Exp $
5 //
6 // Created on: <12-Nov-2000 19:34:40 bf>
7 //
8 // This source file is part of Exponential Basic, publishing software.
9 //
10 // Copyright (C) 1999-2001 eZ Systems. All rights reserved.
11 //
12 // This program is free software; you can redistribute it and/or
13 // modify it under the terms of the GNU General Public License
14 // as published by the Free Software Foundation; either version 2
15 // of the License, or (at your option) any later version.
16 //
17 // This program is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU General Public License for more details.
21 //
22 // You should have received a copy of the GNU General Public License
23 // along with this program; if not, write to the Free Software
24 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, US
25 //
26
27 // include_once( "classes/INIFile.php" );
28 // include_once( "classes/eztemplate.php" );
29 // include_once( "classes/ezlocale.php" );
30 // include_once( "classes/ezcurrency.php" );
31 // include_once( "eztrade/classes/ezproduct.php" );
32 // include_once( "eztrade/classes/ezproductcategory.php" );
33 // include_once( "ezuser/classes/ezuser.php" );
34 // include_once( "eztrade/classes/ezpricegroup.php" );
35
36
37 $ini =& eZINI::instance( 'site.ini' );
38
39 $Language = $ini->variable( "eZTradeMain", "Language" );
40 $hotDealColumns = $ini->variable( "eZTradeMain", "HotDealColumns" );
41 $hotDealImageWidth = $ini->variable( "eZTradeMain", "HotDealImageWidth" );
42 $hotDealImageHeight = $ini->variable( "eZTradeMain", "HotDealImageHeight" );
43 $ShowPriceGroups = $ini->variable( "eZTradeMain", "PriceGroupsEnabled" ) == "true";
44 $PricesIncludeVAT = $ini->variable( "eZTradeMain", "PricesIncludeVAT" ) == "enabled" ? true : false;
45 $RequireUserLogin = $ini->variable( "eZTradeMain", "RequireUserLogin" ) == "enabled" ? true : false;
46
47 $ThumbnailImageWidth = $ini->variable( "eZTradeMain", "ThumbnailImageWidth" );
48 $ThumbnailImageHeight = $ini->variable( "eZTradeMain", "ThumbnailImageHeight" );
49
50 $ShowPrice = $ini->variable( "eZTradeMain", "PriceGroupsEnabled" ) == "true";
51
52 $SimpleOptionHeaders = $ini->variable( "eZTradeMain", "SimpleOptionHeaders" ) == "true";
53 $ShowOptionQuantity = $ini->variable( "eZTradeMain", "ShowOptionQuantity" ) == "true";
54 $RequireQuantity = $ini->variable( "eZTradeMain", "RequireQuantity" ) == "true" ;
55
56 $ShowPrice = $RequireUser ? get_class( $user ) == "ezuser" : true;
57 $GenerateStaticPage = true;
58 $PriceGroup = 0;
59
60 $user =& eZUser::currentUser();
61
62 if ( !isset( $Limit ) or !is_numeric( $Limit ) )
63 $Limit = 10;
64 if ( !isset( $Offset ) or !is_numeric( $Offset ) )
65 $Offset = 0;
66
67 if ( is_object( $user ) && get_class( $user ) == "ezuser" )
68 {
69 $PriceGroup = eZPriceGroup::correctPriceGroup( $user->groups( false ) );
70 }
71 if ( !$ShowPrice )
72 $PriceGroup = -1;
73
74 $t = new eZTemplate( "kernel/eztrade/user/" . $ini->variable( "eZTradeMain", "TemplateDir" ),
75 "kernel/eztrade/user/intl/", $Language, "hotdealsgallery.php" );
76
77 if ( isset( $HotDealsPage ) )
78 {
79 $t->set_file( "product_list_page_tpl", "hotdealspage.tpl" );
80 }
81 else
82 {
83 if ( !isset( $HotDealsTemplate ) )
84 $HotDealsTemplate = "hotdealsgallery.tpl";
85
86 $t->set_file( "product_list_page_tpl", $HotDealsTemplate );
87 }
88
89 $t->set_block( "product_list_page_tpl", "price_tpl", "price" );
90 $t->set_block( "product_list_page_tpl", "path_tpl", "path" );
91 $t->set_block( "product_list_page_tpl", "product_list_tpl", "product_list" );
92
93 $t->set_block( "product_list_tpl", "product_tpl", "product" );
94 $t->set_block( "product_tpl", "product_image_tpl", "product_image" );
95
96 $t->set_block( "product_tpl", "option_tpl", "option" );
97 $t->set_block( "option_tpl", "value_price_header_tpl", "value_price_header" );
98 $t->set_block( "option_tpl", "value_tpl", "value" );
99
100 $t->set_block( "value_price_header_tpl", "value_description_header_tpl", "value_description_header" );
101 $t->set_block( "value_price_header_tpl", "value_price_header_item_tpl", "value_price_header_item" );
102 $t->set_block( "value_price_header_tpl", "value_currency_header_item_tpl", "value_currency_header_item" );
103
104 $t->set_block( "value_tpl", "value_description_tpl", "value_description" );
105 $t->set_block( "value_tpl", "value_price_item_tpl", "value_price_item" );
106 $t->set_block( "value_tpl", "value_availability_item_tpl", "value_availability_item" );
107 $t->set_block( "value_tpl", "value_price_currency_list_tpl", "value_price_currency_list" );
108
109 $t->set_block( "value_price_currency_list_tpl", "value_price_currency_item_tpl", "value_price_currency_item" );
110
111 $t->set_block( "product_tpl", "add_to_cart_tpl", "add_to_cart" );
112
113
114 if ( !isset( $ModuleName ) )
115 $ModuleName = "trade";
116 if ( !isset( $ModuleView ) )
117 $ModuleView = "productview";
118 if ( !isset( $ModuleList ) )
119 $ModuleList = "hotdealsgallery";
120
121 $t->set_var( "module", $ModuleName );
122 $t->set_var( "module_view", $ModuleView );
123 $t->set_var( "module_list", $ModuleList );
124
125 $t->setAllStrings();
126
127 $product = new eZProduct();
128
129 if ( !isset( $MaxHotDeals ) )
130 $MaxHotDeals = false;
131 if ( isset( $HotDealColumns ) )
132 $hotDealColumns = $HotDealColumns;
133 $t->set_var( "hotdeal_columns", $hotDealColumns );
134
135 // products
136 $productList =& $product->hotDealProducts( $MaxHotDeals );
137
138 $locale = new eZLocale( $Language );
139 $i=0;
140 $trEnded = false;
141
142 $groupi = 0;
143
144 foreach ( $productList as $product )
145 {
146 $gallaryarraysize = sizeof($productList) - 1;
147 $groupi_size = $groupi; // - 1;
148 $groupitemnumber = 3;
149 $groupitempreceeding = $groupitemnumber - 1;
150
151 if ( $i == 0 )
152 {
153 $t->set_var( "begin_tr", "<tr>" );
154 $t->set_var( "end_tr", "" );
155 }
156 elseif ( $i == $gallaryarraysize )
157 {
158 $t->set_var( "begin_tr", "" );
159 $t->set_var( "end_tr", "</tr>" );
160 }
161 elseif ( $groupi_size == $groupitempreceeding )
162 {
163 $t->set_var( "begin_tr", "" );
164 $t->set_var( "end_tr", "</tr>" );
165 }
166 elseif ( $groupi_size == $groupitemnumber )
167 {
168 $t->set_var( "begin_tr", "<tr><td colspan='$hotDealColumns'>&nbsp;</td></tr><tr>" );
169 $t->set_var( "end_tr", "" );
170 $groupi = 0;
171 }
172 else
173 {
174 $t->set_var( "begin_tr", "" );
175 $t->set_var( "end_tr", "" );
176 }
177
178 if ( eZObjectPermission::hasPermission( $product->id(), "trade_product", "r", $user ) )
179 {
180 $t->set_var( "product_id", $product->id() );
181 $t->set_var( "category_id", $product->categories()[0]->id() );
182
183 // preview image
184 $thumbnailImage = $product->thumbnailImage();
185
186 if ( $thumbnailImage )
187 {
188 $variation =& $thumbnailImage->requestImageVariation( $ThumbnailImageWidth, $ThumbnailImageHeight );
189
190 $t->set_var( "product_image_uri", "/" . $variation->imagePath() );
191 $t->set_var( "product_image_width", $variation->width() );
192 $t->set_var( "product_image_height", $variation->height() );
193 $t->set_var( "product_image_caption", $thumbnailImage->caption() );
194
195 $t->parse( "product_image", "product_image_tpl" );
196 }
197 else
198 {
199 $t->set_var( "product_image", "" );
200 }
201
202 $options = $product->options();
203 $t->set_var( "option", "" );
204
205 $t->set_var( "value_price_header", "" );
206 if ( $ShowPrice and $product->showPrice() == true )
207 $t->parse( "value_price_header", "value_price_header_tpl" );
208
209 // show alternative currencies
210 $currency = new eZProductCurrency( );
211 $currencies =& $currency->getAll();
212 $t->set_var( "currency_count", count( $currencies ) );
213 $t->set_var( "value_price_header_item", "" );
214 $t->set_var( "value_currency_header_item", "" );
215 if ( !$RequireUserLogin or is_a( $user, "eZUser" ) )
216 {
217 $t->parse( "value_price_header_item", "value_price_header_item_tpl" );
218 if ( count( $currencies ) > 0 )
219 $t->parse( "value_currency_header_item", "value_currency_header_item_tpl" );
220 }
221
222 $can_checkout = true;
223
224 $currency_locale = new eZLocale( $Language );
225 foreach ( $options as $option )
226 {
227 $values = $option->values();
228
229 $t->set_var( "value", "" );
230 $i = 0;
231 $headers = $option->descriptionHeaders();
232 $t->set_var( "value_description_header", "" );
233 if ( $SimpleOptionHeaders )
234 {
235 $t->set_var( "description_header", $headers[0] );
236 $t->parse( "value_description_header", "value_description_header_tpl" );
237 }
238 else
239 {
240 foreach ( $headers as $header )
241 {
242 $t->set_var( "description_header", $header );
243 $t->parse( "value_description_header", "value_description_header_tpl", true );
244 }
245 }
246
247 foreach ( $values as $value )
248 {
249 $value_quantity = $value->totalQuantity();
250 if ( $ShowOptionQuantity or ( is_bool( $value_quantity ) and !$value_quantity ) or
251 !$RequireQuantity or ( $RequireQuantity and $value_quantity > 0 ) )
252 {
253 if ( !$value->hasQuantity( $RequireQuantity ) )
254 $can_checkout = false;
255 $t->set_var( "value_td_class", ( $i % 2 ) == 0 ? "bglight" : "bgdark" );
256 $id = $value->id();
257
258 $descriptions = $value->descriptions();
259 $t->set_var( "value_description", "" );
260 if ( $SimpleOptionHeaders )
261 {
262 $t->set_var( "value_id", $value->id() );
263
264 $t->set_var( "value_name", $descriptions[0] );
265 $t->parse( "value_description", "value_description_tpl" );
266 }
267 else
268 {
269 foreach ( $descriptions as $description )
270 {
271 $t->set_var( "value_name", $description );
272 $t->parse( "value_description", "value_description_tpl", true );
273 }
274 }
275
276 $t->set_var( "value_price", "" );
277 $t->set_var( "value_price_item", "" );
278 $t->set_var( "value_price_currency_list", "" );
279 if ( $ShowPrice and $product->showPrice() == true )
280 {
281 $price = new eZCurrency( $value->correctPrice( $PricesIncludeVAT, $product ) );
282 if ( $value->price() != 0 )
283 $t->set_var( "value_price", "+".$value->localePrice( $PricesIncludeVAT, $product ) );
284 else
285 $t->set_var( "value_price", "" );
286
287 $t->parse( "value_price_item", "value_price_item_tpl" );
288
289 $t->set_var( "value_price_currency_item", "" );
290 foreach ( $currencies as $currency )
291 {
292 $altPrice = $price;
293 $altPrice->setValue( $price->value() * $currency->value() );
294
295 $currency_locale->setSymbol( $currency->sign() );
296 $currency_locale->setPrefixSymbol( $currency->prefixSign() );
297
298 $t->set_var( "alt_value_price", $currency_locale->format( $altPrice ) );
299 $t->parse( "value_price_currency_item", "value_price_currency_item_tpl", true );
300 }
301
302 $t->set_var( "value_price_currency_list", "" );
303 if ( count( $currencies ) > 0 )
304 $t->parse( "value_price_currency_list", "value_price_currency_list_tpl" );
305 }
306
307 $t->set_var( "value_availability_item", "" );
308 if ( !( is_bool( $value_quantity ) and !$value_quantity ) )
309 {
310 $named_quantity = $value_quantity;
311 if ( $ShowNamedQuantity )
312 $named_quantity = eZProduct::namedQuantity( $value_quantity );
313 $t->set_var( "value_availability", $named_quantity );
314 $t->parse( "value_availability_item", "value_availability_item_tpl" );
315 }
316
317 $t->parse( "value", "value_tpl", true );
318 $i++;
319 }
320 }
321
322 if ( $i > 0 )
323 {
324 $t->set_var( "option_name", $option->name() );
325 $t->set_var( "option_description", $option->description() );
326 $t->set_var( "option_id", $option->id() );
327 // $t->set_var( "product_id", isset( $ProductID ) ? $ProductID : false );
328
329 $t->parse( "option", "option_tpl", true );
330 }
331 }
332
333 if( isset( $SiteDescriptionOverride ) )
334 $SiteDescriptionOverride .= $product->name() . " ";
335 // $SiteDescriptionOverride = addslashes( $SiteDescriptionOverride );
336 $t->set_var( "product_name", $product->name() );
337
338 $t->set_var( "product_intro_text", eZTextTool::nl2br( $product->brief() ) );
339
340 if ( $ShowPrice and $product->showPrice() == true and $product->hasPrice() )
341 {
342 $t->set_var( "product_price", $product->localePrice( $PricesIncludeVAT ) );
343 $priceRange = $product->correctPriceRange( $PricesIncludeVAT );
344
345 if ( ( empty( $priceRange["min"] ) and empty( $priceRange["max"] ) ) and !($product->correctPrice( $PricesIncludeVAT ) > 0) )
346 {
347 $t->set_var( "product_price", "" );
348 }
349 $t->parse( "price", "price_tpl" );
350 }
351 elseif( $product->showPrice() == false )
352 {
353 $t->set_var( "product_price", "" );
354 $t->parse( "price", "price_tpl" );
355 }
356 else
357 {
358 $priceArray = "";
359 $options =& $product->options();
360 if ( count( $options ) == 1 )
361 {
362 $option = $options[0];
363 if ( get_class( $option ) == "ezoption" )
364 {
365 $optionValues =& $option->values();
366 if ( count( $optionValues ) > 1 )
367 {
368 $i=0;
369 foreach ( $optionValues as $optionValue )
370 {
371 $priceArray[$i] = $optionValue->localePrice( $PricesIncludeVAT, $product );
372 $i++;
373 }
374 $high = max( $priceArray );
375 $low = min( $priceArray );
376
377 $t->set_var( "product_price", $low . " - " . $high );
378
379 $t->parse( "price", "price_tpl" );
380 }
381 }
382 }
383 else
384 $t->set_var( "price", "" );
385 }
386
387 if ( ( $i % 2 ) == 0 )
388 {
389 $t->set_var( "td_class", "bglight" );
390 }
391 else
392 {
393 $t->set_var( "td_class", "bgdark" );
394 }
395
396 $t->set_var( "action_url", "cart/add" );
397 $t->parse( "add_to_cart", "add_to_cart_tpl" );
398 $t->parse( "product", "product_tpl", true );
399 $i++;
400 }
401 }
402
403 $TotalTypes = count( $productList );
404 eZList::drawNavigator( $t, $TotalTypes, $Limit, $Offset, "product_list_tpl" );
405
406
407 if ( count( $productList ) > 0 )
408 {
409 $t->pparse( "product_list", "product_list_tpl" );
410 }
411 else
412 {
413 $t->set_var( "product_list", "" );
414 }
415
416 /*
417 foreach ( $productList as $product )
418 {
419
420 $t->set_var( "product_id", $product->id() );
421 $t->set_var( "category_id", $product->categories()[0]->id() );
422 $t->set_var( "product_name", $product->name() );
423 $t->set_var( "product_intro_text", $product->brief() );
424 $t->set_var( "product_number", "" );
425
426 if ( $product->productNumber() != "" )
427 {
428 $t->set_var( "product_number", $product->productNumber() );
429 }
430
431 $t->set_var( "product_catalog_number", "" );
432 $t->set_var( "catalog_number", "" );
433
434 if ( $product->catalogNumber() != "" )
435 {
436 $t->set_var( "catalog_number", $product->catalogNumber() );
437 $t->parse( "product_catalog_number", "product_catalog_number_tpl" );
438
439 }
440
441
442 $image = $product->thumbnailImage();
443
444 if ( $image )
445 {
446 $thumbnail =& $image->requestImageVariation( $hotDealImageWidth, $hotDealImageHeight );
447 // $thumbnail =& $image->requestImageVariation( 109, 109 );
448
449 if ( $thumbnail )
450 {
451 if ( !isset( $HotDealsPage ) )
452 {
453 $t->set_var( "product_image_path", "/" . $thumbnail->imagePath() );
454 $t->set_var( "product_image_width", $thumbnail->width() );
455 $t->set_var( "product_image_height", $thumbnail->height() );
456 $t->set_var( "product_image_caption", $image->caption() );
457 $t->set_var( "thumbnail_image_caption", $image->caption() );
458 }
459 else
460 {
461 $t->set_var( "thumbnail_image_uri", "/" . $thumbnail->imagePath() );
462 $t->set_var( "thumbnail_image_width", $thumbnail->width() );
463 $t->set_var( "thumbnail_image_height", $thumbnail->height() );
464 $t->set_var( "thumbnail_image_caption", $image->caption() );
465 }
466 $t->parse( "product_image", "product_image_tpl" );
467 }
468 else
469 {
470 $t->set_var( "product_image", "" );
471 }
472
473
474 }
475 else
476 {
477 $t->set_var( "product_image", "" );
478 }
479
480 if ( ( !$RequireUserLogin or get_class( $user ) == "ezuser" ) and
481 $ShowPrice and $product->showPrice() == true )
482 {
483 $t->set_var( "product_price", $product->localePrice( $PricesIncludeVAT ) );
484 $priceRange = $product->correctPriceRange( $PricesIncludeVAT );
485
486 if ( ( empty( $priceRange["min"] ) and empty( $priceRange["max"] ) )
487 and !($product->correctPrice( $PricesIncludeVAT ) > 0) )
488 {
489 $t->set_var( "product_price", "" );
490 }
491
492 $t->parse( "price", "price_tpl" );
493 }
494 else
495 {
496 $t->set_var( "price", "" );
497 }
498
499 $defCat = $product->categoryDefinition();
500 if ( $defCat )
501 {
502 $t->set_var( "category_id", $defCat->id() );
503 }
504
505 $t->set_var( "action_url", "cart/add" );
506 $t->parse( "add_to_cart", "add_to_cart_tpl" );
507
508 $t->parse( "product", "product_tpl", true );
509 $i++;
510 $groupi++;
511 }
512
513 if ( count( $productList ) > 0 )
514 {
515 $t->parse( "product_list", "product_list_tpl" );
516 }
517 else
518 {
519 $t->set_var( "product_list", "" );
520 }
521
522
523
524 if ( $GenerateStaticPage == "true" )
525 {
526 // include_once( "classes/ezcachefile.php" );
527 $CacheFile = new eZCacheFile( "kernel/eztrade/cache/",
528 array( "hotdealsgallery", $PriceGroup ),
529 "cache", "," );
530 $output = $t->parse( "output", "product_list_page_tpl" );
531 // print the output the first time while printing the cache file.
532 print( $output );
533 $CacheFile->store( $output );
534 }
535 else
536 {
537 $t->pparse( "output", "product_list_page_tpl" );
538 }
539 */
540 ?>
eZCurrency
Definition: ezcurrency.php:46
eZList\drawNavigator
static drawNavigator(&$t, $total_types, $max_types, $index, $parent=false, $variables=false)
Definition: ezlist.php:401
eZLocale
Definition: ezlocale.php:119
eZObjectPermission\hasPermission
static hasPermission( $objectID, $moduleTable, $permission, $user=false)
Definition: ezobjectpermission.php:76
eZPriceGroup\correctPriceGroup
static correctPriceGroup( $group_id, $debug=false)
Definition: ezpricegroup.php:240
eZProductCurrency
Definition: ezproductcurrency.php:40
eZProduct
Definition: ezproduct.php:71
eZProduct\namedQuantity
static namedQuantity( $quantity)
Definition: ezproduct.php:1037
eZTemplate
Definition: eztemplate.php:107
eZTextTool\nl2br
static nl2br( $string, $xhtml=true)
Definition: eztexttool.php:65
eZUser\currentUser
static & currentUser()
Definition: ezuser.php:896
$id
$id
Definition: companytypelist.php:193
$currency
$currency
Definition: companyview.php:529
$currencies
$currencies
Definition: currency.php:99
$Limit
$Limit
Definition: ezarticle/admin/categorylist.php:66
$Offset
$Offset
Definition: ezarticle/user/search.php:110
$ModuleName
$ModuleName
Definition: ezarticle/user/searchsupplier.php:30
$variation
$variation
Definition: ezimagecatalogue/user/menubox.php:55
$RequireUser
$RequireUser
Definition: eztrade/user/datasupplier.php:37
$priceRange
$priceRange
Definition: eztrade/user/extendedsearch.php:85
$values
$values
Definition: fixedvalues.php:103
$ThumbnailImageHeight
$ThumbnailImageHeight
Definition: hotdealsgallery.php:48
$ShowOptionQuantity
$ShowOptionQuantity
Definition: hotdealsgallery.php:53
$groupi
$groupi
Definition: hotdealsgallery.php:142
$locale
$locale
Definition: hotdealsgallery.php:138
$t
$t
Definition: hotdealsgallery.php:74
$hotDealColumns
$hotDealColumns
Definition: hotdealsgallery.php:40
$TotalTypes
foreach( $productList as $product) $TotalTypes
Definition: hotdealsgallery.php:403
$user
$user
Definition: hotdealsgallery.php:60
$GenerateStaticPage
$GenerateStaticPage
Definition: hotdealsgallery.php:57
$PricesIncludeVAT
$PricesIncludeVAT
Definition: hotdealsgallery.php:44
$product
$product
Definition: hotdealsgallery.php:127
$i
$i
Definition: hotdealsgallery.php:139
$Language
$Language
Definition: hotdealsgallery.php:39
$ini
$ini
Definition: hotdealsgallery.php:37
$hotDealImageHeight
$hotDealImageHeight
Definition: hotdealsgallery.php:42
$PriceGroup
$PriceGroup
Definition: hotdealsgallery.php:58
$ShowPriceGroups
$ShowPriceGroups
Definition: hotdealsgallery.php:43
$ShowPrice
$ShowPrice
Definition: hotdealsgallery.php:50
$trEnded
$trEnded
Definition: hotdealsgallery.php:140
$SimpleOptionHeaders
$SimpleOptionHeaders
Definition: hotdealsgallery.php:52
$hotDealImageWidth
$hotDealImageWidth
Definition: hotdealsgallery.php:41
$ThumbnailImageWidth
$ThumbnailImageWidth
Definition: hotdealsgallery.php:47
$RequireQuantity
$RequireQuantity
Definition: hotdealsgallery.php:54
$productList
$productList
Definition: hotdealsgallery.php:136
$RequireUserLogin
$RequireUserLogin
Definition: hotdealsgallery.php:45
$ModuleList
$ModuleList
Definition: hotdealslist.php:87
$HotDealColumns
$HotDealColumns
Definition: hotdealslist.php:98
$options
$options
Definition: optionlist.php:56
$header
$header
Definition: paypalnotify.php:141
$price
$price
Definition: pricegroupedit.php:39
$currency_locale
$currency_locale
Definition: productpreview.php:265
$can_checkout
$can_checkout
Definition: productpreview.php:263
$ShowNamedQuantity
$ShowNamedQuantity
Definition: productpreview.php:54
$headers
$headers
Definition: requestpagelist.php:61
$SiteDescriptionOverride
$SiteDescriptionOverride
Definition: user/articlelist.php:383
Copyright © 1998 – 2026 7x. All rights reserved. Licensed under the GNU GPLv2+.