aboutsummaryrefslogtreecommitdiff
path: root/engine/lib/annotations.php
diff options
context:
space:
mode:
authoricewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-03-05 14:42:35 +0000
committericewing <icewing@36083f99-b078-4883-b0ff-0f9b5a30f544>2008-03-05 14:42:35 +0000
commit39065cc82c617b0fb35c6e05c9f8fbade512f203 (patch)
tree55c13c27d50a55a6a276f6af12d5becbb4939784 /engine/lib/annotations.php
parenta10c776fe15b6481fb872acfb8317eb6aed4f3b7 (diff)
downloadelgg-39065cc82c617b0fb35c6e05c9f8fbade512f203.tar.gz
elgg-39065cc82c617b0fb35c6e05c9f8fbade512f203.tar.bz2
Types forced on $object->value
git-svn-id: https://code.elgg.org/elgg/trunk@77 36083f99-b078-4883-b0ff-0f9b5a30f544
Diffstat (limited to 'engine/lib/annotations.php')
-rw-r--r--engine/lib/annotations.php26
1 files changed, 23 insertions, 3 deletions
diff --git a/engine/lib/annotations.php b/engine/lib/annotations.php
index 1a559b872..d1cf9905f 100644
--- a/engine/lib/annotations.php
+++ b/engine/lib/annotations.php
@@ -25,14 +25,19 @@
private $attributes;
/**
- * Construct a new site object, optionally from a given id value.
+ * Construct a new site object, optionally from a given id value or db row.
*
- * @param int $id
+ * @param mixed $id
*/
function __construct($id = null)
{
if (!empty($id)) {
- if ($annotation = get_annotation($id)) {
+ if ($id instanceof stdClass)
+ $annotation = $id;
+ else
+ $annotation = get_annotation($id);
+
+ if ($annotation) {
$objarray = (array) $annotation;
foreach($objarray as $key => $value) {
$this->attributes[$key] = $value;
@@ -43,6 +48,21 @@
function __get($name) {
if (isset($attributes[$name])) {
+
+ // Sanitise outputs if required
+ if ($name=='value')
+ {
+ switch ($attributes['value_type'])
+ {
+ case 'integer' : return (int)$attributes['value'];
+ case 'tag' :
+ case 'text' :
+ case 'file' : return sanitise_string($attributes['value']);
+
+ default : throw new InstallationException("Type {$attributes['value_type']} is not supported. This indicates an error in your installation, most likely caused by an incomplete upgrade.");
+ }
+ }
+
return $attributes[$name];
}
return null;