/** * Add a notification * * @param User_Model_User $user The user to receive the notification * @param Core_Model_Item_Abstract $subject The item responsible for causing the notification * @param Core_Model_Item_Abstract $object Bleh * @param string $type * @param array $params * @return Activity_Model_Notification */ public function addNotification(User_Model_User $user, Core_Model_Item_Abstract $subject, Core_Model_Item_Abstract $object, $type, array $params = null) { // We may want to check later if a request exists of the same type already $row = $this->createRow(); $row->user_id = $user->getIdentity(); $row->subject_type = $subject->getType(); $row->subject_id = $subject->getIdentity(); $row->object_type = $object->getType(); $row->object_id = $object->getIdentity(); $row->type = $type; $row->params = $params; $row->date = date('Y-m-d H:i:s'); $row->save(); // Try to add row to caching if (Zend_Registry::isRegistered('Zend_Cache')) { $cache = Zend_Registry::get('Zend_Cache'); $id = __CLASS__ . '_new_' . $user->getIdentity(); $cache->save(true, $id); } // Try to send an email $notificationSettingsTable = Engine_Api::_()->getDbtable('notificationSettings', 'activity'); if ($notificationSettingsTable->checkEnabledNotification($user, $type) && !empty($user->email)) { // Main params $defaultParams = array('host' => $_SERVER['HTTP_HOST'], 'email' => $user->email, 'date' => time(), 'recipient_title' => $user->getTitle(), 'recipient_link' => $user->getHref(), 'recipient_photo' => $user->getPhotoUrl('thumb.icon'), 'sender_title' => $subject->getTitle(), 'sender_link' => $subject->getHref(), 'sender_photo' => $subject->getPhotoUrl('thumb.icon'), 'object_title' => $object->getTitle(), 'object_link' => $object->getHref(), 'object_photo' => $object->getPhotoUrl('thumb.icon'), 'object_description' => $object->getDescription()); // Extra params try { $objectParent = $object->getParent(); if ($objectParent && !$objectParent->isSelf($object)) { $defaultParams['object_parent_title'] = $objectParent->getTitle(); $defaultParams['object_parent_link'] = $objectParent->getHref(); $defaultParams['object_parent_photo'] = $objectParent->getPhotoUrl('thumb.icon'); $defaultParams['object_parent_description'] = $objectParent->getDescription(); } } catch (Exception $e) { } try { $objectOwner = $object->getParent(); if ($objectOwner && !$objectOwner->isSelf($object)) { $defaultParams['object_owner_title'] = $objectOwner->getTitle(); $defaultParams['object_owner_link'] = $objectOwner->getHref(); $defaultParams['object_owner_photo'] = $objectOwner->getPhotoUrl('thumb.icon'); $defaultParams['object_owner_description'] = $objectOwner->getDescription(); } } catch (Exception $e) { } // Send try { Engine_Api::_()->getApi('mail', 'core')->sendSystem($user, 'notify_' . $type, array_merge($defaultParams, (array) $params)); } catch (Exception $e) { // Silence exception } } return $row; }
public function getHref() { // @todo take directly to the comment if (isset($this->resource_type)) { $resource = Engine_Api::_()->getItem($this->resource_type, $this->resource_id); if ($resource) { return $resource->getHref() . '#comment-' . $this->comment_id; } else { return null; } } else { if (method_exists($this->getTable(), 'getResourceType')) { $tmp = Engine_Api::_()->getItem($this->getTable()->getResourceType(), $this->resource_id); if ($tmp) { return $tmp->getHref() . '#comment-' . $this->comment_id; } else { return null; } } else { return parent::getHref(); // @todo fix this } } }