/** * 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; }