summaryrefslogtreecommitdiff
path: root/modules/gallery/helpers/item.php
diff options
context:
space:
mode:
Diffstat (limited to 'modules/gallery/helpers/item.php')
-rw-r--r--modules/gallery/helpers/item.php25
1 files changed, 6 insertions, 19 deletions
diff --git a/modules/gallery/helpers/item.php b/modules/gallery/helpers/item.php
index eb528f8f..1fd9ef16 100644
--- a/modules/gallery/helpers/item.php
+++ b/modules/gallery/helpers/item.php
@@ -175,31 +175,18 @@ class item_Core {
}
/**
- * Return a random Item_Model, with optional filters
+ * Return a query to get a random Item_Model, with optional filters
*
* @param array (optional) where tuple
*/
- static function random($where=null) {
- $random = ((float)mt_rand()) / (float)mt_getrandmax();
-
- // Pick a random number and find the item that's got nearest smaller number. In the rare case
- // that we chose the smallest number in the system, choose the item with the smallest number.
+ static function random_query($where=null) {
+ // 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.
- $items = ORM::factory("item")
+ return ORM::factory("item")
->viewable()
- ->where("rand_key", "<", $random)
+ ->where("rand_key", "<", ((float)mt_rand()) / (float)mt_getrandmax())
->merge_where($where)
- ->order_by("rand_key", "DESC")
- ->find_all(1);
-
- if ($items->count() == 0) {
- $items = ORM::factory("item")
- ->viewable()
- ->merge_where($where)
- ->order_by("rand_key", "ASC")
- ->find_all(1);
- }
- return $items;
+ ->order_by("rand_key", "DESC");
}
} \ No newline at end of file