Changeset 30895
- Timestamp:
- Jan 19, 2015, 5:43:43 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/AMenuManager/amm_pip.class.inc.php
r28688 r30895 398 398 private function getRandomPictures($num=25) 399 399 { 400 global $user ;400 global $user, $persistent_cache, $conf; 401 401 402 402 $returned=array(); … … 407 407 } 408 408 409 $sql=array(); 410 411 // because ORDER BY RAND() can be very slow on a big database, let's 412 // make a first query with no join and by security take 5 times 413 // $num. We keep the result in session for 5 minutes. 414 if (!isset($_SESSION['amm_random_pics']) 415 or !isset($_SESSION['amm_random_pics_generated_on']) 416 or $_SESSION['amm_random_pics_generated_on'] < time() - 5*60) // 5 minutes ago 417 { 418 $query = ' 409 $cache_key = $persistent_cache->make_key( 410 array( 411 'amm_random_pics', 412 $conf['order_by'], 413 $user['id'], 414 $user['cache_update_time'], 415 $this->config['amm_randompicture_selectMode'] 416 ) 417 ); 418 419 if ($persistent_cache->get($cache_key, $returned)) 420 { 421 shuffle($returned); 422 return $returned; 423 } 424 425 $query = ' 419 426 SELECT id 420 427 FROM '.IMAGES_TABLE.' … … 422 429 ORDER BY RAND() LIMIT '.($num*5).' 423 430 ;'; 424 $_SESSION['amm_random_pics']= query2array($query, null, 'id');425 $_SESSION['amm_random_pics_generated_on'] = time(); 426 }427 431 $image_ids = query2array($query, null, 'id'); 432 433 $sql = array(); 434 428 435 $sql['select'] = ' 429 436 SELECT … … 445 452 446 453 $sql['where'] = ' 447 WHERE i.id IN ('.implode(',', $ _SESSION['amm_random_pics']).')454 WHERE i.id IN ('.implode(',', $image_ids).') 448 455 AND i.level <= '.$user['level'].' 449 456 '; … … 493 500 } 494 501 502 if (count($returned) > 0) 503 {// cache the results only if not empty - otherwise it is useless 504 $persistent_cache->set($cache_key, $returned, 300); 505 } 506 495 507 return($returned); 496 508 }
Note: See TracChangeset
for help on using the changeset viewer.