aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/classes/ElggFile.php51
1 files changed, 27 insertions, 24 deletions
diff --git a/engine/classes/ElggFile.php b/engine/classes/ElggFile.php
index a6ed44a68..961a6ef13 100644
--- a/engine/classes/ElggFile.php
+++ b/engine/classes/ElggFile.php
@@ -313,41 +313,44 @@ class ElggFile extends ElggObject {
return $this->filestore;
}
- // ask for entity specific filestore
- // saved as filestore::className in metadata.
- // need to get all filestore::* metadata because the rest are "parameters" that
- // get passed to filestore::setParameters()
- if ($this->guid) {
- $db_prefix = elgg_get_config('dbprefix');
- $options = array(
- 'guid' => $this->guid,
- 'where' => array("n.string LIKE 'filestore::%'"),
- );
-
- $mds = elgg_get_metadata($options);
-
- $parameters = array();
- foreach ($mds as $md) {
- list($foo, $name) = explode("::", $md->name);
- if ($name == 'filestore') {
- $filestore = $md->value;
+ // If filestore meta set then retrieve filestore
+ // @todo Better way of doing this?
+ // ^ Yes....yes there is.
+ $metas = elgg_get_metadata(array(
+ 'guid' => $this->guid,
+ 'limit' => 0
+ ));
+ $parameters = array();
+ if (is_array($metas)) {
+ foreach ($metas as $meta) {
+ if (strpos($meta->name, "filestore::") !== false) {
+ // Filestore parameter tag
+ $comp = explode("::", $meta->name);
+ $name = $comp[1];
+
+ $parameters[$name] = $meta->value;
}
- $parameters[$name] = $md->value;
}
+ }
- if (!class_exists($filestore)) {
+ if (isset($parameters['filestore'])) {
+ if (!class_exists($parameters['filestore'])) {
$msg = elgg_echo('ClassNotFoundException:NotFoundNotSavedWithFile',
- array($filestore,
+ array($parameters['filestore'],
$this->guid));
throw new ClassNotFoundException($msg);
}
- $this->filestore = new $filestore();
+ // Create new filestore object
+ $this->filestore = new $parameters['filestore']();
+
$this->filestore->setParameters($parameters);
+ } else {
+ // @todo - should we log error if filestore not set
}
- // sometimes it doesn't get saved in the metadata.
- // fallback to default...
+
+ // if still nothing then set filestore to default
if (!$this->filestore) {
$this->filestore = get_default_filestore();
}