Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 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
         }
     }
 }