diff --git a/lib/subscriptions/Subscription.inc b/lib/subscriptions/Subscription.inc index 7b657c5..c6ba755 100644 --- a/lib/subscriptions/Subscription.inc +++ b/lib/subscriptions/Subscription.inc @@ -180,6 +180,14 @@ class Subscription extends KTEntity { return generateControllerUrl("browse", "fBrowseType=folder&fFolderId=$this->iExternalID"); } } + + function isValid() { + if ($this->iSubscriptionType == SubscriptionConstants::subscriptionType("DocumentSubscription")) { + return !PEAR::isError(Document::get($this->iExternalID)); + } else if ($this->iSubscriptionType == SubscriptionConstants::subscriptionType("FolderSubscription")) { + return !PEAR::isError(Folder::get($this->iExternalID)); + } + } function getAlertLink() { global $default; diff --git a/lib/subscriptions/SubscriptionManager.inc b/lib/subscriptions/SubscriptionManager.inc index ddfd273..83e10b4 100644 --- a/lib/subscriptions/SubscriptionManager.inc +++ b/lib/subscriptions/SubscriptionManager.inc @@ -154,20 +154,30 @@ class SubscriptionManager { * @return array of subscription objects, false if the database interaction fails */ function retrieveUserSubscriptions($iUserID, $iSubscriptionType) { - global $default; + + $table = Subscription::getTableName($iSubscriptionType); // EVIL! + $aQuery = array( + "SELECT id FROM $table WHERE user_id = ?", + $iUserID, + ); + + + $res = DBUtil::getResultArrayKey($aQuery, 'id'); + if (PEAR::isError($res)) { + // isn't this hideous? + $_SESSION['_ktErrorMessage'][] = $res->getMessage(); + return false; + } - $sql = $default->db; - if ($sql->query(array("SELECT id FROM " . Subscription::getTableName($iSubscriptionType) . " " ./*ok*/ - "WHERE user_id = ?", $iUserID))) { - $aSubscriptions = array(); - while ($sql->next_record()) { - $aSubscriptions[] = & Subscription::get($sql->f("id"), $iSubscriptionType); + $items = array(); + foreach ($res as $id) { + $item = Subscription::get($id, $iSubscriptionType); + if ($item->isValid()) { + $items[] = $item; } - } else { - $_SESSION["errorMessage"] = $lang_err_database; - return false; } - return $aSubscriptions; + + return $items; } /**