Esempio n. 1
0
 public function confirmAction()
 {
     if (!$this->_helper->requireUser()->isValid()) {
         return;
     }
     // Get viewer and other user
     $viewer = Engine_Api::_()->user()->getViewer();
     if (null == ($user_id = $this->_getParam('user_id')) || null == ($user = Engine_Api::_()->getItem('user', $user_id))) {
         $this->view->status = false;
         $this->view->error = Zend_Registry::get('Zend_Translate')->_('No member specified');
         return;
     }
     // Make form
     $this->view->form = $form = new User_Form_Friends_Confirm();
     if (!$this->getRequest()->isPost()) {
         $this->view->status = false;
         $this->view->error = Zend_Registry::get('Zend_Translate')->_('No action taken');
         return;
     }
     if (!$form->isValid($this->getRequest()->getPost())) {
         $this->view->status = false;
         $this->view->error = Zend_Registry::get('Zend_Translate')->_('Invalid data');
         return;
     }
     $friendship = $viewer->membership()->getRow($user);
     if ($friendship->active) {
         $this->view->status = false;
         $this->view->error = Zend_Registry::get('Zend_Translate')->_('Already friends');
         return;
     }
     // Process
     $db = Engine_Api::_()->getDbtable('membership', 'user')->getAdapter();
     $db->beginTransaction();
     try {
         $viewer->membership()->setResourceApproved($user);
         // Add activity
         if (!$user->membership()->isReciprocal()) {
             Engine_Api::_()->getDbtable('actions', 'activity')->addActivity($user, $viewer, 'friends_follow', '{item:$subject} is now following {item:$object}.');
         } else {
             Engine_Api::_()->getDbtable('actions', 'activity')->addActivity($user, $viewer, 'friends', '{item:$object} is now friends with {item:$subject}.');
             Engine_Api::_()->getDbtable('actions', 'activity')->addActivity($viewer, $user, 'friends', '{item:$object} is now friends with {item:$subject}.');
         }
         // Add notification
         if (!$user->membership()->isReciprocal()) {
             Engine_Api::_()->getDbtable('notifications', 'activity')->addNotification($user, $viewer, $user, 'friend_follow_accepted');
         } else {
             Engine_Api::_()->getDbtable('notifications', 'activity')->addNotification($user, $viewer, $user, 'friend_accepted');
         }
         // Set the requests as handled
         $notification = Engine_Api::_()->getDbtable('notifications', 'activity')->getNotificationBySubjectAndType($viewer, $user, 'friend_request');
         if ($notification) {
             $notification->mitigated = true;
             $notification->read = 1;
             $notification->save();
         }
         $notification = Engine_Api::_()->getDbtable('notifications', 'activity')->getNotificationBySubjectAndType($viewer, $user, 'friend_follow_request');
         if ($notification) {
             $notification->mitigated = true;
             $notification->read = 1;
             $notification->save();
         }
         // Increment friends counter
         Engine_Api::_()->getDbtable('statistics', 'core')->increment('user.friendships');
         $db->commit();
         $message = Zend_Registry::get('Zend_Translate')->_('You are now friends with %s');
         $message = sprintf($message, $user->__toString());
         $this->view->status = true;
         $this->view->message = $message;
         return $this->_forward('success', 'utility', 'core', array('smoothboxClose' => true, 'parentRefresh' => true, 'messages' => array($message)));
     } catch (Exception $e) {
         $db->rollBack();
         $this->view->status = false;
         $this->view->error = Zend_Registry::get('Zend_Translate')->_('An error has occurred.');
         $this->view->exception = $e->__toString();
     }
 }
Esempio n. 2
0
 public function followAction()
 {
     if (!$this->_helper->requireUser()->isValid()) {
         return;
     }
     // Get id of friend to add
     $user_id = $this->_getParam('user_id', null);
     if (null == $user_id) {
         $this->view->status = false;
         $this->view->error = Zend_Registry::get('Zend_Translate')->_('No member specified');
         return;
     }
     // Make form
     $this->view->form = $form = new User_Form_Friends_Confirm();
     if (!$this->getRequest()->isPost()) {
         $this->view->status = false;
         $this->view->error = Zend_Registry::get('Zend_Translate')->_('No action taken');
         return;
     }
     if (!$form->isValid($this->getRequest()->getPost())) {
         $this->view->status = false;
         $this->view->error = Zend_Registry::get('Zend_Translate')->_('Invalid data');
         return;
     }
     // Process
     $db = Engine_Api::_()->getDbtable('membership', 'user')->getAdapter();
     $db->beginTransaction();
     try {
         $viewer = $this->_helper->api()->user()->getViewer();
         $user = $this->_helper->api()->user()->getUser($user_id);
         $user->membership()->setFollowApproved($viewer);
         // Add activity
         Engine_Api::_()->getDbtable('actions', 'activity')->addActivity($user, $viewer, 'friends_follow', '{item:$object} is now following {item:$subject}.');
         // Add notification
         Engine_Api::_()->getDbtable('notifications', 'activity')->addNotification($user, $viewer, $user, 'friend_follow_accepted');
         // Set the request as handled
         $notification = Engine_Api::_()->getDbtable('notifications', 'activity')->getNotificationBySubjectAndType($viewer, $user, 'friend_follow_request');
         if ($notification) {
             $notification->mitigated = true;
             $notification->read = 1;
             $notification->save();
         }
         $db->commit();
         $message = Zend_Registry::get('Zend_Translate')->_('%s is now following you');
         $message = sprintf($message, $user->__toString());
         $this->view->status = true;
         $this->view->message = $message;
         $this->_forward('success', 'utility', 'core', array('smoothboxClose' => true, 'parentRefresh' => true, 'messages' => array($message)));
     } catch (Exception $e) {
         $db->rollBack();
         $this->view->status = false;
         $this->view->error = Zend_Registry::get('Zend_Translate')->_('An error has occurred.');
         $this->view->exception = $e->__toString();
     }
 }