/** * Returns an array containing the URLs for each avatar size available for * the given user * * @param array $socialForum * * @return array [$sizeCode => $url, $sizeCode => $url...] */ public static function getAvatarUrls(array $socialForum) { $urls = array(); foreach (ThemeHouse_SocialGroups_Model_SocialForumAvatar::getSizes() as $sizeCode => $maxDimensions) { $urls[$sizeCode] = self::getAvatarUrl($socialForum, $sizeCode); } return $urls; }
public function actionAvatarUpload() { $this->_assertPostOnly(); $socialForum = ThemeHouse_SocialGroups_SocialForum::getInstance()->toArray(); $forumId = $this->_input->filterSingle('node_id', XenForo_Input::UINT); $ftpHelper = $this->getHelper('ForumThreadPost'); $forum = $this->getHelper('ForumThreadPost')->assertForumValidAndViewable($forumId, $this->_getForumFetchOptions()); $this->_assertCanEditSocialForum($socialForum); $avatar = XenForo_Upload::getUploadedFile('avatar'); /* @var $avatarModel ThemeHouse_SocialGroups_Model_SocialForumAvatar */ $avatarModel = $this->getModelFromCache('ThemeHouse_SocialGroups_Model_SocialForumAvatar'); $inputData = $this->_input->filter(array('delete' => XenForo_Input::UINT)); $inputData['logo_crop_x'] = $this->_input->filterSingle('avatar_crop_x', XenForo_Input::UINT); $inputData['logo_crop_y'] = $this->_input->filterSingle('avatar_crop_y', XenForo_Input::UINT); // upload new avatar if ($avatar) { $avatarData = $avatarModel->uploadAvatar($avatar, $socialForum['social_forum_id'], XenForo_Visitor::getInstance()->getNodePermissions($socialForum['node_id'])); } elseif ($inputData['delete']) { $avatarData = $avatarModel->deleteAvatar($socialForum['social_forum_id']); } elseif ($inputData['logo_crop_x'] != $socialForum['logo_crop_x'] || $inputData['logo_crop_y'] != $socialForum['logo_crop_y']) { $avatarData = $avatarModel->recropAvatar($socialForum['social_forum_id'], $inputData['logo_crop_x'], $inputData['logo_crop_y']); } // merge new data into $socialForum, if there is any if (isset($avatarData) && is_array($avatarData)) { foreach ($avatarData as $key => $val) { $socialForum[$key] = $val; } } $message = new XenForo_Phrase('upload_completed_successfully'); // return a view if noredirect has been requested and we are not // deleting if ($this->_noRedirect()) { return $this->responseView('ThemeHouse_SocialGroups_ViewPublic_SocialForum_AvatarUpload', '', array('socialForum' => $socialForum, 'sizeCode' => 'm', 'maxWidth' => ThemeHouse_SocialGroups_Model_SocialForumAvatar::getSizeFromCode('m'), 'maxDimension' => $socialForum['logo_width'] > $socialForum['logo_height'] ? 'height' : 'width', 'width' => $socialForum['logo_width'], 'height' => $socialForum['logo_height'], 'cropX' => $socialForum['logo_crop_x'], 'cropY' => $socialForum['logo_crop_y'], 'social_forum_id' => $socialForum['social_forum_id'], 'logo_date' => $socialForum['logo_date'], 'message' => $message)); } else { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('account/personal-details'), $message); } }