summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--actions/publictagcloud.php2
-rw-r--r--classes/Safe_DataObject.php24
2 files changed, 25 insertions, 1 deletions
diff --git a/actions/publictagcloud.php b/actions/publictagcloud.php
index 9993b2d3f..70c356659 100644
--- a/actions/publictagcloud.php
+++ b/actions/publictagcloud.php
@@ -109,7 +109,7 @@ class PublictagcloudAction extends Action
$cutoff = sprintf("notice_tag.created > '%s'",
common_sql_date(time() - common_config('tag', 'cutoff')));
$tags->selectAdd($calc . ' as weight');
- $tags->addWhere($cutoff);
+ $tags->whereAdd($cutoff);
$tags->groupBy('tag');
$tags->orderBy('weight DESC');
diff --git a/classes/Safe_DataObject.php b/classes/Safe_DataObject.php
index 08bc6846f..e926cb0d5 100644
--- a/classes/Safe_DataObject.php
+++ b/classes/Safe_DataObject.php
@@ -96,6 +96,30 @@ class Safe_DataObject extends DB_DataObject
$this->_link_loaded = false;
}
+ /**
+ * Magic function called when someone attempts to call a method
+ * that doesn't exist. DB_DataObject uses this to implement
+ * setters and getters for fields, but neglects to throw an error
+ * when you just misspell an actual method name. This leads to
+ * silent failures which can cause all kinds of havoc.
+ *
+ * @param string $method
+ * @param array $params
+ * @return mixed
+ * @throws Exception
+ */
+ function __call($method, $params)
+ {
+ $return = null;
+ // Yes, that's _call with one underscore, which does the
+ // actual implementation.
+ if ($this->_call($method, $params, $return)) {
+ return $return;
+ } else {
+ throw new Exception('Call to undefined method ' .
+ get_class($this) . '::' . $method);
+ }
+ }
/**
* Work around memory-leak bugs...