public function doUpload($formField, $hash, $contentType, array $contentData = array()) { if (isset($contentData['forum_id']) and !isset($contentData['node_id'])) { $contentData['node_id'] = $contentData['forum_id']; } $this->_assertCanUploadAndManageAttachments($hash, $contentType, $contentData); $attachmentModel = $this->_getAttachmentModel(); $attachmentHandler = $attachmentModel->getAttachmentHandler($contentType); // known to be valid $contentId = $attachmentHandler->getContentIdFromContentData($contentData); $existingAttachments = $contentId ? $attachmentModel->getAttachmentsByContentId($contentType, $contentId) : array(); $newAttachments = $attachmentModel->getAttachmentsByTempHash($hash); $attachmentConstraints = $attachmentHandler->getAttachmentConstraints(); if ($attachmentConstraints['count'] > 0) { $remainingUploads = $attachmentConstraints['count'] - (count($existingAttachments) + count($newAttachments)); if ($remainingUploads <= 0) { return $this->_controller->responseError(new XenForo_Phrase('you_may_not_upload_more_files_with_message_allowed_x', array('total' => $attachmentConstraints['count'])), 403); } } $file = XenForo_Upload::getUploadedFile($formField); if (!$file) { return $this->_controller->responseError(new XenForo_Phrase('bdapi_requires_upload_x', array('field' => $formField)), 400); } $file->setConstraints($attachmentConstraints); if (!$file->isValid()) { return $this->_controller->responseError($file->getErrors(), 403); } $dataId = $attachmentModel->insertUploadedAttachmentData($file, XenForo_Visitor::getUserId()); $attachmentId = $attachmentModel->insertTemporaryAttachment($dataId, $hash); return $attachmentModel->getAttachmentById($attachmentId); }
public function actionSigPicUpload() { $this->_assertPostOnly(); if (!XenForo_Visitor::getInstance()->hasPermission('signature', 'sigpic')) { return $this->responseNoPermission(); } $sigpic = XenForo_Upload::getUploadedFile('sigpic'); $sigpicModel = $this->getModelFromCache('TPUSigPic_Model_SigPic'); $visitor = XenForo_Visitor::getInstance(); $inputData = $this->_input->filter(array('delete' => XenForo_Input::UINT)); if ($sigpic) { $sigpicData = $sigpicModel->uploadSigPic($sigpic, $visitor['user_id'], $visitor->getPermissions()); } else { if ($inputData['delete']) { $sigpicData = $sigpicModel->deleteSigPic(XenForo_Visitor::getUserId()); } } if (isset($sigpicData) && is_array($sigpicData)) { foreach ($sigpicData as $key => $val) { $visitor[$key] = $val; } } $message = new XenForo_Phrase('upload_completed_successfully'); if ($this->_noRedirect()) { // TODO } else { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('account/signature'), $message); } }
public function actionUploadAvatar() { $this->_assertPostOnly(); if (!XenForo_Visitor::getInstance()->canUploadAvatar()) { return $this->responseNoPermission(); } $avatar = XenForo_Upload::getUploadedFile('upload'); $avatarModel = $this->getModelFromCache('XenForo_Model_Avatar'); $visitor = XenForo_Visitor::getInstance(); // upload new avatar if ($avatar) { try { $avatarData = $avatarModel->uploadAvatar($avatar, $visitor['user_id'], $visitor->getPermissions()); } catch (Exception $e) { json_error($e->getMessages()); } } // merge new data into $visitor, if there is any if (isset($avatarData) && is_array($avatarData)) { foreach ($avatarData as $key => $val) { $visitor[$key] = $val; } } return array('success' => true); }
/** * * @return XenForo_ControllerResponse_Abstract */ public function actionImport() { $fieldModel = $this->_getFieldModel(); if ($this->isConfirmedPost()) { $input = $this->_input->filter(array('target' => XenForo_Input::STRING, 'display_group' => XenForo_Input::STRING, 'overwrite_field_id' => XenForo_Input::STRING)); $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('please_upload_valid_field_xml_file')); } if ($input['target'] == 'overwrite') { $field = $this->_getFieldOrError($input['overwrite_field_id']); $input['display_group'] = $field['display_group']; } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $caches = $fieldModel->importFieldXml($document, $input['display_group'], $input['overwrite_field_id']); if (XenForo_Application::$versionId < 1020000) { return XenForo_CacheRebuilder_Abstract::getRebuilderResponse($this, $caches, XenForo_Link::buildAdminLink('user-fields')); } else { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildAdminLink('user-fields')); } } else { $fieldModel = $this->_getFieldModel(); $viewParams = array('displayGroups' => $fieldModel->getUserFieldGroups(), 'fields' => $fieldModel->prepareUserFields($fieldModel->getUserFields())); return $this->responseView('Waindigo_CustomFields_ViewAdmin_UserField_Import', 'user_field_import', $viewParams); } }
public function actionImport() { $moderatorModel = $this->_getModeratorModel(); if ($this->isConfirmedPost()) { $input = $this->_input->filter(array('overwrite' => XenForo_Input::UINT)); $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('th_please_upload_valid_moderator_xml_file_moderators')); } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $caches = $moderatorModel->importModeratorsXml($document, $input['overwrite']); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildAdminLink('moderators')); } else { return $this->responseView('ThemeHouse_Moderators_ViewAdmin_Moderator_Import', 'th_moderator_import_moderators'); } }
public function actionImportXml() { if ($this->isConfirmedPost()) { /* @var $smilieModel XenForo_Model_Smilie */ $smilieModel = $this->_getSmilieModel(); $input = $this->_input->filter(array('overwrite' => XenForo_Input::UINT)); $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('waindigo_please_upload_valid_smilies_xml_file_smilieimporter')); } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $caches = $smilieModel->importSmiliesXml($document, $input['overwrite']); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildAdminLink('smilies')); } else { return $this->responseView('Waindigo_SmilieImporter_ViewAdmin_Smilie_Import', 'waindigo_smilie_import_smilieimporter'); } }
public function actionImport() { $userGroupModel = $this->_getUserGroupModel(); if ($this->isConfirmedPost()) { $input = $this->_input->filter(array('target' => XenForo_Input::STRING, 'overwrite_user_group_id' => XenForo_Input::UINT)); $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('th_please_upload_valid_user_group_xml_file_usergroups')); } if ($input['target'] == 'overwrite') { $this->_getUserGroupOrError($input['overwrite_user_group_id']); } else { $input['overwrite_user_group_id'] = 0; } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $caches = $userGroupModel->importUserGroupXml($document, $input['overwrite_user_group_id']); return XenForo_CacheRebuilder_Abstract::getRebuilderResponse($this, $caches, XenForo_Link::buildAdminLink('user-groups')); } else { $viewParams = array('userGroups' => $userGroupModel->getAllUserGroups()); return $this->responseView('ThemeHouse_UserGroups_ViewAdmin_UserGroup_Import', 'th_user_group_import_usergroups', $viewParams); } }
public function actionUploadAttachment() { $vals = $this->_input->filter(array('poststarttime' => XenForo_Input::STRING, 'forumid' => XenForo_Input::UINT)); try { $this->_assertCanUploadAndManageAttachments($vals['poststarttime'], 'post', array('node_id' => $vals['forumid'])); } catch (Exception $e) { json_error($e->getControllerResponse()->errorText->render(), RV_UPLOAD_ERROR); } $contentid = 0; $attachment_model = $this->_getAttachmentModel(); $attachment_handler = $attachment_model->getAttachmentHandler('post'); $existing = array(); $new_attachments = $attachment_model->getAttachmentsByTempHash($vals['poststarttime']); $max = $attachment_handler->getAttachmentCountLimit(); if ($max !== true) { $remaining = $max - (count($existing) + count($new)); if ($remaining <= 0) { $error = new XenForo_Phrase('you_may_not_upload_more_files_with_message'); json_error($error->render(), RV_UPLOAD_ERROR); } } $cons = $attachment_model->getAttachmentConstraints(); $file = XenForo_Upload::getUploadedFile('attachment'); if (!$file) { $error = new XenForo_Phrase('do_not_have_permission'); json_error($error->render(), RV_UPLOAD_ERROR); } $file->setConstraints($cons); if (!$file->isValid()) { $error_text = ''; foreach ($file->getErrors() as $error) { $error_text .= $error->render() . "\n"; } json_error($error_text, RV_UPLOAD_ERROR); } $dataid = $attachment_model->insertUploadedAttachmentData($file, XenForo_Visitor::getUserId()); $attachmentid = $attachment_model->insertTemporaryAttachment($dataid, $vals['poststarttime']); return array('attachmentid' => $attachmentid); }
public function actionIcon() { list($resource, $category) = $this->_getResourceHelper()->assertResourceValidAndViewable(); $resourceModel = $this->_getResourceModel(); if (!$resourceModel->canEditResourceIcon($resource, $category, $errorPhraseKey)) { throw $this->getErrorOrNoPermissionResponseException($errorPhraseKey); } if ($this->isConfirmedPost()) { $icon = XenForo_Upload::getUploadedFile('icon'); $delete = $this->_input->filterSingle('delete', XenForo_Input::BOOLEAN); if ($icon) { $resourceModel->uploadResourceIcon($icon, $resource['resource_id']); } else { if ($delete) { $resourceModel->deleteResourceIcon($resource['resource_id']); } } return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('resources', $resource)); } else { $viewParams = array('resource' => $resource, 'category' => $category, 'iconSize' => XenResource_Model_Resource::$iconSize); return $this->responseView('XenResource_ViewPublic_Resource_Icon', 'resource_icon', $viewParams); } }
public function actionThumbnailChange() { $mediaId = $this->_input->filterSingle('media_id', XenForo_Input::UINT); if (!$mediaId) { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::RESOURCE_CANONICAL_PERMANENT, XenForo_Link::buildPublicLink('xengallery')); } $mediaHelper = $this->_getMediaHelper(); $mediaModel = $this->_getMediaModel(); $media = $mediaHelper->assertMediaValidAndViewable($mediaId); $media = $mediaModel->prepareMedia($media); $mediaHelper->assertCanChangeMediaThumbnail($media); if ($this->isConfirmedPost()) { $thumbnail = XenForo_Upload::getUploadedFile('thumbnail'); $delete = $this->_input->filterSingle('delete', XenForo_Input::BOOLEAN); if ($thumbnail) { $mediaModel->uploadMediaThumbnail($thumbnail, $media); if (XenForo_Visitor::getUserId() != $media['user_id']) { XenForo_Model_Log::logModeratorAction('xengallery_media', $media, 'thumbnail_add'); } } else { if ($delete) { $mediaModel->deleteMediaThumbnail($media); if (XenForo_Visitor::getUserId() != $media['user_id']) { XenForo_Model_Log::logModeratorAction('xengallery_media', $media, 'thumbnail_remove'); } } } return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('xengallery', $media)); } else { $viewParams = array('media' => $media, 'categoryBreadcrumbs' => $this->_getCategoryModel()->getCategoryBreadcrumb($media)); return $this->responseView('XenGallery_ViewPublic_Media_ThumbnailUpload', 'xengallery_media_thumbnail_upload', $viewParams); } }
public function actionImportForm() { $this->_assertPostOnly(); $hookModel = $this->_getAdvHookModel(); $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('please_upload_valid_hooks_xml_file')); } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $hookData = $hookModel->getHookDataFromXml($document); $viewParams = array('hooks' => $hookData['hooks']); return $this->responseView('Turki_Adv_ViewAdmin_Hook_ImportForm', 'adv_hook_xenforo_import_form', $viewParams); }
public function actionImport() { $styleModel = $this->_getStyleModel(); if ($this->isConfirmedPost()) { $input = $this->_input->filter(array('target' => XenForo_Input::STRING, 'parent_style_id' => XenForo_Input::UINT, 'overwrite_style_id' => XenForo_Input::UINT)); $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('please_upload_valid_style_xml_file')); } if ($input['target'] == 'overwrite') { $this->_getStyleOrError($input['overwrite_style_id']); $input['parent_style_id'] = 0; } else { $input['overwrite_style_id'] = 0; } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $styleModel->importStyleXml($document, $input['parent_style_id'], $input['overwrite_style_id']); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildAdminLink('styles')); } else { $viewParams = array('styles' => $styleModel->getAllStylesAsFlattenedTree()); return $this->responseView('XenForo_ViewAdmin_Style_Import', 'style_import', $viewParams); } }
public function actionImportForm() { $this->_checkCsrfFromToken($this->_request->getParam('_xfToken')); $input = $this->_input->filter(array('options' => XenForo_Input::ARRAY_SIMPLE, 'mode' => XenForo_Input::STRING)); $xenOptions = XenForo_Application::get('options'); $input['options'] = array_merge(array('start_row' => 0, 'row_count' => $xenOptions->th_userImpEx_batchImportUsers, 'filename' => ''), $input['options']); $userModel = $this->_getUserModel(); if ($input['mode'] == 'upload') { $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('th_please_upload_valid_users_xml_file_userimpex')); } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $users = $userModel->getUsersFromXml($document); } elseif ($input['mode'] == 'uploadcsv') { if (!$input['options']['filename']) { $upload = XenForo_Upload::getUploadedFile('uploadcsv'); if (!$upload) { return $this->responseError(new XenForo_Phrase('th_please_upload_valid_users_csv_file_userimpex')); } $tempFile = $upload->getTempFile(); if ($input['options']['row_count']) { $internalDataPath = XenForo_Helper_File::getInternalDataPath(); XenForo_Helper_File::createDirectory($internalDataPath . '/userimpex/'); $filename = $internalDataPath . '/userimpex/' . XenForo_Application::$time . '.csv'; copy($tempFile, $filename); } else { $filename = $tempFile; } } else { $filename = $input['options']['filename']; } $users = $this->getHelper('ThemeHouse_UserImpEx_ControllerHelper_Csv')->getCsvFromFile($filename, $input['options']['start_row'], $input['options']['row_count']); if (count($users) == $input['options']['row_count']) { $input['options']['start_row'] = $input['options']['start_row'] + $input['options']['row_count']; $input['options']['filename'] = $filename; } else { unset($input['options']['start_row'], $input['options']['row_count']); } } else { $users = $this->_input->filterSingle('users', XenForo_Input::ARRAY_SIMPLE); } $userCount = count($users); $users = $userModel->massImportUsers($users); $usersImported = $userCount - count($users); /* @var $userChangeLogModel XenForo_Model_UserChangeLog */ $userChangeLogModel = $this->getModelFromCache('XenForo_Model_UserChangeLog'); $fields = array(); foreach ($users as $user) { foreach ($user as $fieldName => $fieldValue) { if (!isset($fields[$fieldName])) { $field = array('field' => $fieldName, 'old_value' => '', 'new_value' => ''); $field = $userChangeLogModel->prepareField($field); $fields[$fieldName] = $field['name']; } } } $viewParams = array('options' => $input['options'], 'mode' => $input['mode'], 'users' => $users, 'usersImported' => $usersImported, 'fields' => $fields); if (!$users && empty($input['options']['filename'])) { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildAdminLink('users/list')); } return $this->responseView('ThemeHouse_UserImpEx_ViewAdmin_User_ImportForm', 'th_user_import_form_userimpex', $viewParams); }
public function actionImport() { $socialPermissionSetModel = $this->_getSocialPermissionSetModel(); if ($this->isConfirmedPost()) { $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('th_please_upload_valid_social_permission_set_xml_file_socialperms')); } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $caches = $socialPermissionSetModel->importSocialPermissionSetXml($document); return XenForo_CacheRebuilder_Abstract::getRebuilderResponse($this, $caches, XenForo_Link::buildAdminLink('social-permission-sets')); } else { return $this->responseView('ThemeHouse_SocialPerms_ViewAdmin_SocialPermissionSet_Import', 'th_social_permission_set_import_socialperms'); } }
/** * Handles uploading new attachments (and redirecting delete requests). * * @return XenForo_ControllerResponse_Abstract */ public function actionDoUpload() { $this->_assertPostOnly(); $deleteArray = array_keys($this->_input->filterSingle('delete', XenForo_Input::ARRAY_SIMPLE)); $delete = reset($deleteArray); if ($delete) { $this->_request->setParam('attachment_id', $delete); return $this->responseReroute(__CLASS__, 'delete'); } $input = $this->_input->filter(array('hash' => XenForo_Input::STRING, 'content_type' => XenForo_Input::STRING, 'content_data' => array(XenForo_Input::UINT, 'array' => true), 'key' => XenForo_Input::STRING)); if (!$input['hash']) { $input['hash'] = $this->_input->filterSingle('temp_hash', XenForo_Input::STRING); } $this->_assertCanUploadAndManageAttachments($input['hash'], $input['content_type'], $input['content_data']); $attachmentModel = $this->_getAttachmentModel(); $attachmentHandler = $attachmentModel->getAttachmentHandler($input['content_type']); // known to be valid $contentId = $attachmentHandler->getContentIdFromContentData($input['content_data']); $existingAttachments = $contentId ? $attachmentModel->getAttachmentsByContentId($input['content_type'], $contentId) : array(); $newAttachments = $attachmentModel->getAttachmentsByTempHash($input['hash']); $attachmentConstraints = $attachmentHandler->getAttachmentConstraints(); if ($attachmentConstraints['count'] > 0) { $remainingUploads = $attachmentConstraints['count'] - (count($existingAttachments) + count($newAttachments)); if ($remainingUploads <= 0) { return $this->responseError(new XenForo_Phrase('you_may_not_upload_more_files_with_message_allowed_x', array('total' => $attachmentConstraints['count']))); } } $file = XenForo_Upload::getUploadedFile('upload'); if (!$file) { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('attachments/upload', false, array('hash' => $input['hash'], 'content_type' => $input['content_type'], 'content_data' => $input['content_data'], 'key' => $input['key']))); } $filename = $this->_input->filterSingle('filename', XenForo_Input::STRING); if ($filename) { $file->setFileName($filename); } $file->setConstraints($attachmentConstraints); if (!$file->isValid()) { return $this->responseError($file->getErrors()); } $dataId = $attachmentModel->insertUploadedAttachmentData($file, XenForo_Visitor::getUserId()); $attachmentId = $attachmentModel->insertTemporaryAttachment($dataId, $input['hash']); $message = new XenForo_Phrase('upload_completed_successfully'); // return a view if noredirect has been requested and we are not deleting if ($this->_noRedirect()) { $contentId = $attachmentHandler->getContentIdFromContentData($input['content_data']); //$newAttachments = $attachmentModel->getAttachmentsByTempHash($input['hash']); $attachment = $attachmentModel->getAttachmentById($attachmentId); $viewParams = array('attachment' => $attachmentModel->prepareAttachment($attachment), 'message' => $message, 'hash' => $input['hash'], 'content_type' => $input['content_type'], 'content_data' => $input['content_data'], 'key' => $input['key']); return $this->responseView('XenForo_ViewPublic_Attachment_DoUpload', '', $viewParams); } else { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('attachments/upload', false, array('hash' => $input['hash'], 'content_type' => $input['content_type'], 'content_data' => $input['content_data'], 'key' => $input['key'])), $message); } }
public function imageUpload($threadId) { $image = XenForo_Upload::getUploadedFile('brtc_image'); $imageModel = $this->getModelFromCache('Brivium_ThreadClassified_Model_Image'); $imageData = array(); if ($image) { $imageData = $imageModel->uploadImage($image, $threadId, array()); } $message = new XenForo_Phrase('upload_completed_successfully'); return $imageData; }
public function actionImport() { if ($this->isConfirmedPost()) { $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('please_provide_valid_bb_code_xml_file')); } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $this->_getBbCodeModel()->importCustomBbCodeXml($document); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildAdminLink('bb-codes')); } else { return $this->responseView('XenForo_ViewAdmin_BbCode_Import', 'bb_code_import'); } }
public function actionImport() { $languageModel = $this->_getLanguageModel(); if ($this->isConfirmedPost()) { $input = $this->_input->filter(array('target' => XenForo_Input::STRING, 'parent_language_id' => XenForo_Input::UINT, 'overwrite_language_id' => XenForo_Input::UINT)); $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('please_upload_valid_language_xml_file')); } if ($input['target'] == 'overwrite') { $this->_getLanguageOrError($input['overwrite_language_id']); $input['parent_language_id'] = 0; } else { $input['overwrite_language_id'] = 0; } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $caches = $languageModel->importLanguageXml($document, $input['parent_language_id'], $input['overwrite_language_id']); return XenForo_CacheRebuilder_Abstract::getRebuilderResponse($this, $caches, XenForo_Link::buildAdminLink('languages')); } else { $viewParams = array('languages' => $languageModel->getAllLanguagesAsFlattenedTree()); return $this->responseView('XenForo_ViewAdmin_Language_Import', 'language_import', $viewParams); } }
public function actionImport() { $bibleModel = $this->_getBibleModel(); if ($this->isConfirmedPost()) { $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('th_please_upload_valid_bible_zip_file_bible')); } $bibleModel->importBibleZip($upload); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildAdminLink('bibles')); } else { return $this->responseView('ThemeHouse_Bible_ViewAdmin_Bible_Import', 'th_bible_import_bible'); } }
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); } }
public function actionAvatarUpload() { $this->_assertPostOnly(); if (!XenForo_Visitor::getInstance()->canUploadAvatar()) { return $this->responseNoPermission(); } $avatar = XenForo_Upload::getUploadedFile('avatar'); /* @var $avatarModel XenForo_Model_Avatar */ $avatarModel = $this->getModelFromCache('XenForo_Model_Avatar'); /* @var $visitor XenForo_Visitor */ $visitor = XenForo_Visitor::getInstance(); $inputData = $this->_input->filter(array('delete' => XenForo_Input::UINT, 'avatar_crop_x' => XenForo_Input::UINT, 'avatar_crop_y' => XenForo_Input::UINT, 'gravatar' => XenForo_Input::STRING, 'use_gravatar' => XenForo_Input::UINT)); // upload new avatar if ($avatar) { $avatarData = $avatarModel->uploadAvatar($avatar, $visitor['user_id'], $visitor->getPermissions()); } else { if ($inputData['delete']) { $avatarData = $avatarModel->deleteAvatar(XenForo_Visitor::getUserId()); } else { if (XenForo_Application::get('options')->gravatarEnable && $inputData['use_gravatar']) { if (!$inputData['gravatar']) { $inputData['gravatar'] = $visitor['email']; } if (!XenForo_Model_Avatar::gravatarExists($inputData['gravatar'], $errorText)) { return $this->responseError($errorText); } else { $avatarData = array('gravatar' => $inputData['gravatar']); $this->_saveVisitorSettings($avatarData, $errors); } } else { if ($inputData['avatar_crop_x'] != $visitor['avatar_crop_x'] || $inputData['avatar_crop_y'] != $visitor['avatar_crop_y']) { $avatarData = $avatarModel->recropAvatar(XenForo_Visitor::getUserId(), $inputData['avatar_crop_x'], $inputData['avatar_crop_y']); } else { if ($visitor['gravatar'] && !$inputData['use_gravatar']) { $avatarData = array('gravatar' => ''); $this->_saveVisitorSettings($avatarData, $errors); } } } } } // merge new data into $visitor, if there is any if (isset($avatarData) && is_array($avatarData)) { foreach ($avatarData as $key => $val) { $visitor[$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('XenForo_ViewPublic_Account_AvatarUpload', 'account_avatar_upload', array('user' => $visitor->toArray(), 'sizeCode' => 'm', 'maxWidth' => XenForo_Model_Avatar::getSizeFromCode('m'), 'maxDimension' => $visitor['avatar_width'] > $visitor['avatar_height'] ? 'height' : 'width', 'width' => $visitor['avatar_width'], 'height' => $visitor['avatar_height'], 'cropX' => $visitor['avatar_crop_x'], 'cropY' => $visitor['avatar_crop_y'], 'user_id' => $visitor['user_id'], 'avatar_date' => $visitor['avatar_date'], 'gravatar' => $visitor['gravatar'], 'message' => $message)); } else { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('account/personal-details'), $message); } }
public function actionPostAvatar() { $user = $this->_getUserOrError(); $visitor = XenForo_Visitor::getInstance(); if ($user['user_id'] != $visitor->get('user_id')) { return $this->responseNoPermission(); } if (!$visitor->canUploadAvatar()) { return $this->responseNoPermission(); } $avatar = XenForo_Upload::getUploadedFile('avatar'); if (empty($avatar)) { return $this->responseError(new XenForo_Phrase('bdapi_requires_upload_x', array('field' => 'avatar')), 400); } /* @var $avatarModel XenForo_Model_Avatar */ $avatarModel = $this->getModelFromCache('XenForo_Model_Avatar'); $avatarModel->uploadAvatar($avatar, $visitor->get('user_id'), $visitor->getPermissions()); return $this->responseMessage(new XenForo_Phrase('upload_completed_successfully')); }
public function actionThumbnailUpload() { $mediaHelper = $this->_getMediaHelper(); $albumModel = $this->_getAlbumModel(); $albumId = $this->_input->filterSingle('album_id', XenForo_Input::UINT); $album = $mediaHelper->assertAlbumValidAndViewable($albumId); $mediaHelper->assertCanChangeAlbumThumbnail($album); if ($this->isConfirmedPost()) { $thumbnail = XenForo_Upload::getUploadedFile('thumbnail'); $delete = $this->_input->filterSingle('delete', XenForo_Input::BOOLEAN); if ($thumbnail) { $albumModel->uploadAlbumThumbnail($thumbnail, $album['album_id']); if (XenForo_Visitor::getUserId() != $album['album_user_id']) { XenForo_Model_Log::logModeratorAction('xengallery_album', $album, 'thumbnail_add'); } } else { if ($delete) { $albumModel->deleteAlbumThumbnail($album['album_id']); if (XenForo_Visitor::getUserId() != $album['album_user_id']) { XenForo_Model_Log::logModeratorAction('xengallery_album', $album, 'thumbnail_remove'); } } } return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('xengallery/albums', $album)); } else { $viewParams = array('album' => $albumModel->prepareAlbum($album), 'categoryBreadcrumbs' => $this->_getCategoryModel()->getCategoryBreadcrumb($album)); return $this->responseView('XenGallery_ViewPublic_Album_ThumbnailUpload', 'xengallery_album_thumbnail_upload', $viewParams); } }
public function actionImport() { $fieldModel = $this->_getFieldModel(); if ($this->isConfirmedPost()) { $input = $this->_input->filter(array('target' => XenForo_Input::STRING, 'field_group_id' => XenForo_Input::UINT, 'overwrite_field_id' => XenForo_Input::STRING)); $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('please_upload_valid_field_xml_file')); } if ($input['target'] == 'overwrite') { $field = $this->_getFieldOrError($input['overwrite_field_id']); $input['field_group_id'] = $field['field_group_id']; } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $caches = $fieldModel->importFieldXml($document, $input['field_group_id'], $input['overwrite_field_id']); return XenForo_CacheRebuilder_Abstract::getRebuilderResponse($this, $caches, XenForo_Link::buildAdminLink('thread-fields')); } else { $fieldModel = $this->_getFieldModel(); $viewParams = array('fieldGroupOptions' => $fieldModel->getThreadFieldGroupOptions(), 'fields' => $fieldModel->prepareThreadFields($fieldModel->getThreadFields())); return $this->responseView('Waindigo_CustomFields_ViewAdmin_ThreadField_Import', 'thread_field_import', $viewParams); } }
public function actionDoUpload() { $this->_assertPostOnly(); $deleteArray = array_keys($this->_input->filterSingle('delete', XenForo_Input::ARRAY_SIMPLE)); $delete = reset($deleteArray); if ($delete) { $this->_request->setParam('attachment_id', $delete); return $this->responseReroute(__CLASS__, 'delete'); } $input = $this->_input->filter(array('hash' => XenForo_Input::STRING, 'content_type' => XenForo_Input::STRING, 'upload_type' => XenForo_Input::STRING, 'content_data' => array(XenForo_Input::UINT, 'array' => true), 'key' => XenForo_Input::STRING)); if (!$input['hash']) { $input['hash'] = $this->_input->filterSingle('image_upload_hash', XenForo_Input::STRING); } $this->_assertCanUploadAndManageAttachments($input['hash'], $input['content_type'], $input['content_data']); $attachmentModel = $this->_getAttachmentModel(); $attachmentHandler = $attachmentModel->getAttachmentHandler($input['content_type']); $newAttachments = $attachmentModel->getAttachmentsByTempHash($input['hash']); //$attachmentConstraints = $attachmentHandler->getUploadConstraints($input['upload_type']); $attachmentConstraints = $attachmentHandler->getAttachmentConstraints(); if ($attachmentConstraints['count'] > 0) { $remainingUploads = $attachmentConstraints['count'] - count($newAttachments); if ($remainingUploads <= 0) { return $this->responseError(new XenForo_Phrase('xengallery_you_can_upload_a_maximum_of_x_items_at_a_time', array('total' => $attachmentConstraints['count']))); } } $file = XenForo_Upload::getUploadedFile('upload'); if (!$file) { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('xengallery/files/upload', false, array('hash' => $input['hash'], 'content_type' => $input['content_type'], 'upload_type' => $input['upload_type'], 'content_data' => $input['content_data'], 'key' => $input['key']))); } $exif = array(); if (function_exists('exif_read_data')) { $filePath = $file->getTempFile(); $fileType = @getimagesize($filePath); if (isset($fileType[2]) && $fileType[2] == IMAGETYPE_JPEG) { @ini_set('exif.encode_unicode', 'UTF-8'); $exif = @exif_read_data($filePath, null, true); if (isset($exif['FILE'])) { $exif['FILE']['FileName'] = $file->getFileName(); } } } $file->setConstraints($attachmentConstraints); if (!$file->isValid()) { return $this->responseError($file->getErrors()); } if (isset($attachmentConstraints['storage']) && $attachmentConstraints['storage'] > 0) { $visitor = XenForo_Visitor::getInstance(); $existingFileSize = 0; foreach ($newAttachments as $newAttachment) { $existingFileSize += $newAttachment['file_size']; } $newFileSize = filesize($file->getTempFile()); if ($visitor['xengallery_media_quota'] + $newFileSize + $existingFileSize > $attachmentConstraints['storage']) { return $this->responseError(new XenForo_Phrase('xengallery_you_have_exceeded_your_allowed_storage_quota', array('quota' => XenForo_Locale::numberFormat($attachmentConstraints['storage'], 'size'), 'filesize' => XenForo_Locale::numberFormat($newFileSize, 'size'), 'storage' => XenForo_Locale::numberFormat($visitor['xengallery_media_quota'], 'size')))); } } //$fileModel = $this->_getFileModel(); $fileModel = $this->getModelFromCache('XenGallery_Model_File'); $dataId = $fileModel->insertUploadedAttachmentData($file, XenForo_Visitor::getUserId(), $exif); $attachmentId = $attachmentModel->insertTemporaryAttachment($dataId, $input['hash']); $message = new XenForo_Phrase('upload_completed_successfully'); // return a view if noredirect has been requested and we are not deleting if ($this->_noRedirect()) { $attachment = $attachmentModel->getAttachmentById($attachmentId); if (XenForo_Application::getOptions()->xengalleryAutoGenerateImageTitles) { $attachment['media_title'] = ucwords(pathinfo($attachment['filename'], PATHINFO_FILENAME)); } $viewParams = array('attachment' => $attachment ? $attachmentModel->prepareAttachment($attachment) : array(), 'message' => $message, 'hash' => $input['hash'], 'content_type' => $input['content_type'], 'upload_type' => $input['upload_type'], 'content_data' => $input['content_data'], 'key' => $input['key']); return $this->responseView('XenGallery_ViewPublic_Media_DoUpload', '', $viewParams); } else { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('xengallery/files/upload', false, array('hash' => $input['hash'], 'content_type' => $input['content_type'], 'content_data' => $input['content_data'], 'uploadType' => $input['upload_type'], 'key' => $input['key'])), $message); } }
public function actionImportForm() { $this->_assertPostOnly(); $input = $this->_input->filter(array('mode' => XenForo_Input::STRING, 'directory' => XenForo_Input::STRING)); $smilieModel = $this->_getSmilieModel(); $smilieCategoryOptions = $smilieModel->getSmilieCategoryOptions(); if ($input['mode'] == 'upload') { $upload = XenForo_Upload::getUploadedFile('upload'); if (!$upload) { return $this->responseError(new XenForo_Phrase('please_upload_valid_smilies_xml_file')); } $document = $this->getHelper('Xml')->getXmlFromFile($upload); $smilieData = $smilieModel->getSmilieDataFromXml($document, $smilieCategoryOptions); } else { $smilieData = $smilieModel->getSmilieDataFromDirectory($input['directory']); } $viewParams = array('uploadMode' => $input['mode'] == 'upload', 'smilies' => $smilieData['smilies'], 'newSmilieCategories' => $smilieData['newSmilieCategories'], 'newSmilieCategoryOptions' => $smilieData['newSmilieCategoryOptions'], 'smilieCategoryOptions' => $smilieCategoryOptions); return $this->responseView('XenForo_ViewAdmin_Smilie_ImportForm', 'smilie_import_form', $viewParams); }
public function actionCoverUpload() { $this->_assertPostOnly(); $cover = XenForo_Upload::getUploadedFile('cover'); $user = $this->_getAuthorOrError(); if (!$this->_getGalleryModel()->canManageCover($user)) { throw $this->_throwFriendlyNoPermission(); } $input = $this->_input->filter(array('crop_x' => XenForo_Input::UINT, 'crop_y' => XenForo_Input::UINT, 'width' => XenForo_Input::UINT, 'height' => XenForo_Input::UINT, 'delete' => XenForo_Input::UINT)); if ($cover) { $oldCover = $this->_getGalleryModel()->getAuthorCoverFile($user); $return = $this->_getGalleryModel()->uploadAuthorCover($cover, $user['user_id']); if ($return) { if (isset($user['sonnb_xengallery_cover']['bdattachmentstore_engine'])) { $engine = $user['sonnb_xengallery_cover']['bdattachmentstore_engine']; $options = $user['sonnb_xengallery_cover']['bdattachmentstore_options']; $keepLocalCopy = !empty($options['keepLocalCopy']); if (empty($engine) || !empty($engine) && $keepLocalCopy) { $oldLocalCover = $this->_getGalleryModel()->getAuthorCoverFile($user, true); @unlink($oldLocalCover); } if (!empty($engine)) { $this->_bdAttachmentStore_getFileModel()->deleteFile($engine, $options, $oldCover); } } else { $oldLocalCover = $this->_getGalleryModel()->getAuthorCoverFile($user, true); @unlink($oldLocalCover); } } } elseif ($input['delete']) { $return = $this->_getGalleryModel()->deleteAuthorCover($user); } elseif ($input['crop_x'] || $input['crop_y'] || $input['height']) { $return = $this->_getGalleryModel()->cropAuthorCover($user, $input['crop_x'], $input['crop_y'], $input['width'], $input['height']); } else { return $this->responseView('sonnb_XenGallery_ViewPublic_Author_CoverUpload', 'sonnb_xengallery_cover_upload', array('cover' => "", 'url' => "", 'message' => "")); } if ($return === false) { throw $this->_throwFriendlyNoPermission('unexpected_error_occurred'); } else { $user['sonnb_xengallery_cover'] = $return; } $message = new XenForo_Phrase('sonnb_xengallery_your_cover_has_been_saved'); if ($this->_noRedirect()) { return $this->responseView('sonnb_XenGallery_ViewPublic_Author_CoverUpload', 'sonnb_xengallery_cover_upload', array('cover' => $user['sonnb_xengallery_cover'], 'url' => $this->_getGalleryModel()->getAuthorCoverUrl($user), 'message' => $message)); } else { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('gallery/authors'), $message); } }
public function actionDoDownload() { $mediaHelper = $this->_getMediaHelper(); $mediaHelper->assertCanAddMedia(); $this->_assertPostOnly(); $input = $this->_input->filter(array('hash' => XenForo_Input::STRING, 'content_type' => XenForo_Input::STRING, 'upload_type' => XenForo_Input::STRING, 'content_data' => array(XenForo_Input::UINT, 'array' => true), 'key' => XenForo_Input::STRING, 'image_url' => XenForo_Input::STRING, 'unique_key' => XenForo_Input::STRING)); if (!$input['hash']) { $input['hash'] = $this->_input->filterSingle('temp_hash', XenForo_Input::STRING); } $this->_assertCanUploadAndManageAttachments($input['hash'], $input['content_type'], $input['content_data']); $attachmentModel = $this->_getAttachmentModel(); $attachmentHandler = $attachmentModel->getAttachmentHandler($input['content_type']); // known to be valid $contentId = $attachmentHandler->getContentIdFromContentData($input['content_data']); $existingAttachments = $contentId ? $attachmentModel->getAttachmentsByContentId($input['content_type'], $contentId) : array(); $newAttachments = $attachmentModel->getAttachmentsByTempHash($input['hash']); $attachmentConstraints = $attachmentHandler->getUploadConstraints($input['upload_type']); if ($attachmentConstraints['count'] > 0) { $remainingUploads = $attachmentConstraints['count'] - (count($existingAttachments) + count($newAttachments)); if ($remainingUploads <= 0) { return $this->responseError(new XenForo_Phrase('you_may_not_upload_more_files_with_message_allowed_x', array('total' => $attachmentConstraints['count']))); } } $fileModel = $this->_getFileModel(); $url = $input['image_url']; if (!($tempName = $fileModel->addToFilesFromUrl($input['unique_key'], $url, $error))) { return $this->responseError($error); } $file = XenForo_Upload::getUploadedFile($input['unique_key']); if (!$file) { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('xengallery/files/upload', false, array('hash' => $input['hash'], 'content_type' => $input['content_type'], 'content_data' => $input['content_data'], 'key' => $input['key']))); } $file->setConstraints($attachmentConstraints); if (!$file->isValid()) { return $this->responseError($file->getErrors()); } if (!$file->isImage()) { return $this->responseError(new XenForo_Phrase('xengallery_files_added_by_url_must_be_images')); } $dataId = $fileModel->insertUploadedAttachmentData($file, XenForo_Visitor::getUserId()); $attachmentId = $attachmentModel->insertTemporaryAttachment($dataId, $input['hash']); $message = new XenForo_Phrase('upload_completed_successfully'); @unlink($tempName); // return a view if noredirect has been requested and we are not deleting if ($this->_noRedirect()) { return $this->_getUploadResponse($attachmentId, $input, $message); } else { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('xengallery/files/upload', false, array('hash' => $input['hash'], 'content_type' => $input['content_type'], 'content_data' => $input['content_data'], 'key' => $input['key'])), $message); } }
public function actionLogoUpload() { $this->_assertPostOnly(); list($team, $category) = $this->_getTeamHelper()->assertTeamValidAndViewable(null, array()); if (!$this->_getTeamModel()->canUploadAvatar($team, $category, $error)) { throw $this->getErrorOrNoPermissionResponseException($error); } $avatar = XenForo_Upload::getUploadedFile('logo'); /* @var Nobita_Teams_Model_Avatar */ $avatarModel = $this->getModelFromCache('Nobita_Teams_Model_Avatar'); $inputData = $this->_input->filter(array('delete' => XenForo_Input::BOOLEAN, 'x' => XenForo_Input::UINT, 'y' => XenForo_Input::UINT, 'h' => XenForo_Input::UINT, 'w' => XenForo_Input::UINT, 'team_avatar_date' => XenForo_Input::UINT)); if ($avatar) { $success = $avatarModel->uploadAvatar($avatar, $team['team_id']); if ($success) { $team['team_avatar_date'] = $success; } } elseif ($inputData['delete']) { $success = $avatarModel->deleteAvatar($team['team_id']); if ($success) { $team['team_avatar_date'] = 0; } } if (empty($team['team_avatar_date'])) { // just delete avatar $message = new XenForo_Phrase('Teams_deleted_successfully'); $redirect = ''; } else { $message = new XenForo_Phrase('upload_completed_successfully'); $redirect = XenForo_Link::buildPublicLink(TEAM_ROUTE_PREFIX, $team); } if ($this->_noRedirect()) { return $this->responseView('Nobita_Teams_ViewPublic_Team_AvatarUpload', 'Team_avatar_upload', array('team' => $team, 'category' => $category, 'team_avatar_date' => $team['team_avatar_date'], 'message' => $message, 'redirectUri' => $redirect)); } else { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink(TEAM_ROUTE_PREFIX, $team), $message); } }