summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/image_block/helpers/image_block_block.php8
1 files changed, 7 insertions, 1 deletions
diff --git a/modules/image_block/helpers/image_block_block.php b/modules/image_block/helpers/image_block_block.php
index 185df850..82c92f19 100644
--- a/modules/image_block/helpers/image_block_block.php
+++ b/modules/image_block/helpers/image_block_block.php
@@ -26,7 +26,13 @@ class image_block_block_Core {
$block = "";
switch ($block_id) {
case "random_image":
- $item = item::random_query(array(array("type", "!=", "album")))->find_all(1)->current();
+ // The random_query approach is flawed and doesn't always return a
+ // result when there actually is one. Retry a *few* times.
+ // @todo Consider another fallback if further optimizations are necessary.
+ $attempts = 0;
+ do {
+ $item = item::random_query(array(array("type", "!=", "album")))->find_all(1)->current();
+ } while (!$item && $attempts++ < 3);
if ($item && $item->loaded()) {
$block = new Block();
$block->css_id = "g-image-block";