mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-05-05 12:39:07 -04:00
item::random_query() doesn't need to take a "where" clause because
it's returning a query, so the caller can add the where clause himself. This makes for a cleaner API.
This commit is contained in:
@@ -209,17 +209,14 @@ class item_Core {
|
||||
|
||||
/**
|
||||
* Return a query to get a random Item_Model, with optional filters
|
||||
*
|
||||
* @param array (optional) where tuple
|
||||
*/
|
||||
static function random_query($where=null) {
|
||||
static function random_query() {
|
||||
// Pick a random number and find the item that's got nearest smaller number.
|
||||
// This approach works best when the random numbers in the system are roughly evenly
|
||||
// distributed so this is going to be more efficient with larger data sets.
|
||||
return ORM::factory("item")
|
||||
->viewable()
|
||||
->where("rand_key", "<", ((float)mt_rand()) / (float)mt_getrandmax())
|
||||
->merge_where($where)
|
||||
->order_by("rand_key", "DESC");
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,7 @@ class image_block_block_Core {
|
||||
// @todo Consider another fallback if further optimizations are necessary.
|
||||
$attempts = 0;
|
||||
do {
|
||||
$item = item::random_query(array(array("type", "!=", "album")))->find_all(1)->current();
|
||||
$item = item::random_query()->where("type", "!=", "album")->find_all(1)->current();
|
||||
} while (!$item && $attempts++ < 3);
|
||||
if ($item && $item->loaded()) {
|
||||
$block = new Block();
|
||||
|
||||
Reference in New Issue
Block a user