aboutsummaryrefslogtreecommitdiff
path: root/engine/lib
diff options
context:
space:
mode:
Diffstat (limited to 'engine/lib')
-rw-r--r--engine/lib/elgglib.php64
-rw-r--r--engine/lib/entities.php38
2 files changed, 101 insertions, 1 deletions
diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php
index 2aabe5c36..abfa28b35 100644
--- a/engine/lib/elgglib.php
+++ b/engine/lib/elgglib.php
@@ -277,6 +277,70 @@
return false;
}
+
+ /**
+ * Get the icon for an entity
+ *
+ * @param ElggEntity $entity The entity (passed an entity rather than a guid to handle non-created entities)
+ * @param string $size
+ */
+ function elgg_get_entity_icon_url(ElggEntity $entity, $size = 'medium')
+ {
+ global $CONFIG;
+
+ $size = sanitise_string($size);
+ switch (strtolower($size))
+ {
+ case 'master':
+ case 'large' : $size = 'large'; break;
+
+ case 'topbar' :
+ case 'tiny' : $size = 'tiny'; break;
+
+ case 'small' : $size = 'small'; break;
+
+ case 'medium' :
+ default: $size = 'medium';
+ }
+
+ $url = false;
+
+ $view = elgg_get_viewtype();
+ $location = elgg_get_view_location($view);
+
+ // Use the object/subtype
+ $type = $entity->type;
+ $subtype = $entity->subtype;
+
+ if (!$url)
+ {
+ $tmp_url = $location . "{$view}/graphics/icons/$type/$subtype/$size.png";
+ if (file_exists($tmp_url))
+ $url = $tmp_url;
+ }
+
+ // Get the default for the object
+ if (!$url)
+ {
+ $tmp_url = $location . "{$view}/graphics/icons/$type/default/$size.png";
+ if (file_exists($tmp_url))
+ $url = $tmp_url;
+ }
+
+ // If url still blank then attempt to use the view's defaults
+ if (!$url)
+ {
+ $tmp_url = $location . "{$view}/graphics/icons/default/$size.png";
+ if (file_exists($tmp_url))
+ $url = $tmp_url;
+ }
+
+ // If all else fails
+ if (!$url)
+ $url = $CONFIG->url . "_graphics/icons/default/$size.png";
+
+ return $url;
+ }
/**
* When given an entity, views it intelligently.
diff --git a/engine/lib/entities.php b/engine/lib/entities.php
index 663ac9c4e..47ad8f89c 100644
--- a/engine/lib/entities.php
+++ b/engine/lib/entities.php
@@ -43,7 +43,12 @@
/**
* If set, overrides the value of getURL()
*/
- protected $url_override;
+ protected $url_override;
+
+ /**
+ * Icon override, overrides the value of getIcon().
+ */
+ protected $icon_override;
/**
* Temporary cache for metadata, permitting meta data access before a guid has obtained.
@@ -498,6 +503,36 @@
}
/**
+ * Return a url for the entity's icon, trying multiple alternatives.
+ *
+ * @param string $size Either 'large','medium','small' or 'tiny'
+ * @return string The url or false if no url could be worked out.
+ */
+ public function getIcon($size = 'medium')
+ {
+ if (isset($this->icon_override[$size])) return $this->icon_override[$size];
+ return elgg_get_entity_icon_url($this, $size);
+ }
+
+ /**
+ * Set an icon override for an icon and size.
+ *
+ * @param string $url The url of the icon.
+ * @param string $size The size its for.
+ * @return bool
+ */
+ public function setIcon($url, $size = 'medium')
+ {
+ $url = sanitise_string($url);
+ $size = sanitise_string($size);
+
+ if (!$this->icon_override) $this->icon_override = array();
+ $this->icon_override[$size] = $url;
+
+ return true;
+ }
+
+ /**
* Tests to see whether the object has been fully loaded.
*
* @return bool
@@ -1632,6 +1667,7 @@
}
+
/**
* Gets the URL for an entity, given a particular GUID
*