Пример #1
0
 /**
  * can post here?
  */
 public function canPostHere($user_id, $profile_type, $profile_id, $profile_owner)
 {
     $Connections = new Application_Model_Connections();
     // only account owner and friends can post to each other walls.
     if ($profile_type == 'user' && $user_id != $profile_id && !$Connections->areFriends($profile_id, $user_id)) {
         return false;
     }
     // only group members can post to a group
     if ($profile_type == 'group' && !$Connections->areFriends($profile_id, $user_id)) {
         return false;
     }
     // only page owner can write to a page
     if ($profile_type == 'page' && $user_id !== $profile_owner) {
         return false;
     }
     return true;
 }
 /**
  * Read / Compose a new message (via ajax)
  */
 public function newAction()
 {
     $current_user = Zend_Auth::getInstance()->getIdentity();
     $request = $this->getRequest();
     $to_user = $request->getParam('to', false);
     $offset = $request->getParam('offset', false);
     $Profiles = new Application_Model_Profiles();
     $ProfilesMeta = new Application_Model_ProfilesMeta();
     $Connections = new Application_Model_Connections();
     $Messages = new Application_Model_Messages();
     $Notifications = new Application_Model_Notifications();
     $message_form = new Application_Form_Message();
     $this->view->message_form = $message_form;
     $user = $Profiles->getProfile($to_user);
     $json_ret = array('errors' => '', 'html' => '', 'offset' => '');
     if (!$user || !isset($user->id) || $user->type != 'user') {
         $json_ret['errors'] = $this->view->translate('This user does not exist');
         // exit
         $this->getHelper('json')->sendJson($json_ret);
     }
     $users_meta = $ProfilesMeta->getMetaValues($user->id);
     // check private message privacy
     if ($current_user->role != 'admin' && $current_user->role != 'reviewer' && isset($users_meta['contact_privacy']) && $users_meta['contact_privacy'] == 'f' && !$Connections->areFriends($current_user->id, $user->id)) {
         $json_ret['errors'] = $this->view->translate('Private profile (friends only)');
         // exit
         $this->getHelper('json')->sendJson($json_ret);
     }
     $this->view->to_screen_name = $user->screen_name;
     if ($request->isPost() && $message_form->isValid($_POST)) {
         $content = $message_form->getValue('content');
         $result = $Messages->sendMessage($user->id, $content);
         if (!$result) {
             $json_ret['errors'] = $this->view->translate('Server-side error');
             // exit
             $this->getHelper('json')->sendJson($json_ret);
         }
         // mark as read
         $Messages->markAsRead($user->id);
     }
     // get new messages
     $messages = $Messages->getMessages($user->id, $offset);
     // clear email notifications since you are looking at them right now
     $Notifications->clearEmailNotifications(8);
     if (!empty($messages)) {
         // send last visible message
         $last = end($messages);
         $json_ret['offset'] = $last['message_id'];
         foreach ($messages as $message) {
             $this->view->message = $message;
             $json_ret['html'] .= $this->view->render('/partial/message.phtml');
         }
     }
     $this->getHelper('json')->sendJson($json_ret);
 }
 /**
  * Prepare profile for cover view
  */
 public function prepareProfile($profile)
 {
     if (Zend_Auth::getInstance()->hasIdentity()) {
         $current_user = (int) Zend_Auth::getInstance()->getIdentity()->id;
     } else {
         $current_user = 0;
     }
     $Images = new Application_Model_Images();
     $Connections = new Application_Model_Connections();
     $Reports = new Application_Model_Reports();
     $ProfilesMeta = new Application_Model_ProfilesMeta();
     $meta_values = $ProfilesMeta->getMetaValues($profile->id);
     // user's data, object style
     $this->view->profile_data = $profile;
     $this->view->profile_data->meta_values = $meta_values;
     // attach sidebar box
     Zend_Registry::get('hooks')->attach('hook_view_sidebar', 5, function () {
         echo Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view->render('/_sidebar/profileinfo.phtml');
     });
     $limit = (int) Zend_Registry::get('config')->get('sidebar_max_users');
     $is_following = $Connections->isFollowing($current_user, $profile->id);
     $is_friend = $Connections->areFriends($profile->id, $current_user);
     $is_reported = $Reports->isReported($profile->id, $profile->type);
     // @formatter:off
     // check privacy
     if (isset($profile) && (Zend_Auth::getInstance()->hasIdentity() && (Zend_Auth::getInstance()->getIdentity()->role == 'admin' || Zend_Auth::getInstance()->getIdentity()->role == 'reviewer') || Zend_Auth::getInstance()->hasIdentity() && Zend_Auth::getInstance()->getIdentity()->id == $profile->id || $profile->profile_privacy === 'friends' && $is_friend || $profile->profile_privacy === 'followers' && $is_following || $profile->profile_privacy === 'everyone' && Zend_Auth::getInstance()->hasIdentity() || $profile->profile_privacy === 'public')) {
         if ($profile->type === 'group') {
             $this->view->sidebar_members = $Connections->getFriends($profile->id, $limit, false, 'user');
             $this->view->sidebar_members_count = $Connections->getFriends($profile->id, false, true);
             // attach sidebar box
             Zend_Registry::get('hooks')->attach('hook_view_sidebar', 10, function () {
                 echo Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view->render('/_sidebar/members.phtml');
             });
             // check if secret group and this is a group owner
             if ($current_user > 0 && $current_user == $profile->owner && $profile->profile_privacy === 'friends') {
                 $Connections->mix_friends = false;
                 $this->view->sidebar_approve_members = $Connections->getFollowers($profile->id);
                 $this->view->sidebar_approve_members_count = $Connections->getFollowers($profile->id, false, true);
                 // attach sidebar box
                 Zend_Registry::get('hooks')->attach('hook_view_sidebar', 10, function () {
                     echo Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view->render('/_sidebar/approvemembers.phtml');
                 });
             }
         } elseif ($profile->type === 'user') {
             // TODO: optiomize this to a single join call
             $this->view->sidebar_followers = $Connections->getFollowers($profile->id, $limit);
             $this->view->sidebar_following = $Connections->getFollowing($profile->id, $limit);
             $this->view->sidebar_friends = $Connections->getFriends($profile->id, $limit, false, 'user');
             $this->view->sidebar_followers_count = $Connections->getFollowers($profile->id, false, true);
             $this->view->sidebar_following_count = $Connections->getFollowing($profile->id, false, true);
             $this->view->sidebar_friends_count = $Connections->getFriends($profile->id, false, true);
             $this->view->sidebar_groups = $Connections->getFriends($profile->id, $limit, false, 'group');
             $this->view->sidebar_groups_count = $Connections->getFriends($profile->id, $limit, true, 'group');
             // attach sidebar box
             Zend_Registry::get('hooks')->attach('hook_view_sidebar', 10, function () {
                 echo Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view->render('/_sidebar/followers.phtml');
                 echo Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view->render('/_sidebar/following.phtml');
                 echo Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view->render('/_sidebar/friends.phtml');
                 echo Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view->render('/_sidebar/groups.phtml');
             });
         } elseif ($profile->type === 'page') {
         }
         // put images to sidebar
         // $this->view->sidebar_images_count = $Images->getImages($profile->id, false, true);
         // $this->view->sidebar_images = $Images->getImages($profile->id, false, false, $limit);
         Zend_Registry::get('hooks')->attach('hook_view_sidebar', 10, function () {
             echo Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view->render('/_sidebar/images.phtml');
         });
     }
     // @formatter:on
     // set view params
     $this->view->user_cover = true;
     $this->view->is_following = $is_following;
     $this->view->is_friend = $is_friend;
     $this->view->is_reported = $is_reported;
     // override <head> for profile pages
     if (Zend_Registry::get('config')->get('profiles_head')) {
         $content = Zend_Registry::get('config')->get('profiles_head');
         $this->view->custom_head = Application_Plugin_Common::parseProfileTags($content, $profile);
     }
     // view perspective
     $this->view->view_perspective = 'profile_view';
     return;
 }