本文整理汇总了PHP中LocalFile::upload方法的典型用法代码示例。如果您正苦于以下问题:PHP LocalFile::upload方法的具体用法?PHP LocalFile::upload怎么用?PHP LocalFile::upload使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LocalFile
的用法示例。
在下文中一共展示了LocalFile::upload方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: execute
public function execute()
{
$this->params = $this->extractRequestParams();
// Extract the file and archiveName from the request parameters
$this->validateParameters();
// Check whether we're allowed to revert this file
$this->checkPermissions($this->getUser());
$sourceUrl = $this->file->getArchiveVirtualUrl($this->archiveName);
$status = $this->file->upload($sourceUrl, $this->params['comment'], $this->params['comment'], 0, false, false, $this->getUser());
if ($status->isGood()) {
$result = array('result' => 'Success');
} else {
$result = array('result' => 'Failure', 'errors' => $this->getResult()->convertStatusToArray($status));
}
$this->getResult()->addValue(null, $this->getModuleName(), $result);
}
示例2: uploadImage
/**
* Handle image upload
*
* Returns array with uploaded files details or error details
*/
public function uploadImage($uploadFieldName = self::DEFAULT_FILE_FIELD_NAME, $destFileName = null, $forceOverwrite = false)
{
global $IP, $wgRequest, $wgUser;
wfProfileIn(__METHOD__);
$ret = false;
// check whether upload is enabled (RT #53714)
if (!WikiaPhotoGalleryHelper::isUploadAllowed()) {
$ret = array('error' => true, 'message' => wfMsg('uploaddisabled'));
wfProfileOut(__METHOD__);
return $ret;
}
$imageName = stripslashes(!empty($destFileName) ? $destFileName : $wgRequest->getFileName($uploadFieldName));
// validate name and content of uploaded photo
$nameValidation = $this->checkImageName($imageName, $uploadFieldName);
if ($nameValidation == UploadBase::SUCCESS) {
// get path to uploaded image
$imagePath = $wgRequest->getFileTempName($uploadFieldName);
// check if image with this name is already uploaded
if ($this->imageExists($imageName) && !$forceOverwrite) {
// upload as temporary file
$this->log(__METHOD__, "image '{$imageName}' already exists!");
$tempName = $this->tempFileName($wgUser);
$title = Title::makeTitle(NS_FILE, $tempName);
$localRepo = RepoGroup::singleton()->getLocalRepo();
$file = new FakeLocalFile($title, $localRepo);
$file->upload($wgRequest->getFileTempName($uploadFieldName), '', '');
// store uploaded image in GarbageCollector (image will be removed if not used)
$tempId = $this->tempFileStoreInfo($tempName);
// generate thumbnail (to fit 200x200 box) of temporary file
$width = min(WikiaPhotoGalleryHelper::thumbnailMaxWidth, $file->width);
$height = min(WikiaPhotoGalleryHelper::thumbnailMaxHeight, $file->height);
$thumbnail = $file->transform(array('height' => $height, 'width' => $width));
// split uploaded file name into name + extension (foo-bar.png => foo-bar + png)
list($fileName, $extensionsName) = UploadBase::splitExtensions($imageName);
$extensionName = !empty($extensionsName) ? end($extensionsName) : '';
$this->log(__METHOD__, 'upload successful');
$ret = array('conflict' => true, 'name' => $imageName, 'nameParts' => array($fileName, $extensionName), 'tempId' => $tempId, 'size' => array('height' => $file->height, 'width' => $file->width), 'thumbnail' => array('height' => $thumbnail->height, 'url' => $thumbnail->url, 'width' => $thumbnail->width));
} else {
// use regular MW upload
$this->log(__METHOD__, "image '{$imageName}' is new one - uploading as MW file");
$this->log(__METHOD__, "uploading '{$imagePath}' as File:{$imageName}");
// create title and file objects for MW image to create
$imageTitle = Title::newFromText($imageName, NS_FILE);
$imageFile = new LocalFile($imageTitle, RepoGroup::singleton()->getLocalRepo());
// perform upload
$result = $imageFile->upload($imagePath, '', '');
$this->log(__METHOD__, !empty($result->ok) ? 'upload successful' : 'upload failed');
$ret = array('success' => !empty($result->ok), 'name' => $imageName, 'size' => array('height' => !empty($result->ok) ? $imageFile->getHeight() : 0, 'width' => !empty($result->ok) ? $imageFile->getWidth() : 0));
}
} else {
$reason = $nameValidation;
$this->log(__METHOD__, "upload failed - file name is not valid (error #{$reason})");
$ret = array('error' => true, 'reason' => $reason, 'message' => $this->translateError($reason));
}
wfProfileOut(__METHOD__);
return $ret;
}
示例3: uploadIntoMW
/**
* Upload given file into MW
*/
public function uploadIntoMW($imagePath, $imageName)
{
wfProfileIn(__METHOD__);
$this->log(__METHOD__, "uploading '{$imagePath}' as File:{$imageName}");
// create title and file objects for MW image to create
$imageTitle = Title::newFromText($imageName, NS_FILE);
$imageFile = new LocalFile($imageTitle, RepoGroup::singleton()->getLocalRepo());
// perform upload
$result = $imageFile->upload($imagePath, '', '');
wfProfileOut(__METHOD__);
return !empty($result->ok);
}
示例4: executeImage
private function executeImage()
{
if (empty($this->mParams['tempName'])) {
$this->dieUsageMsg('The tempName parameter must be set');
}
$tempFile = new FakeLocalFile(Title::newFromText($this->mParams['tempName'], 6), RepoGroup::singleton()->getLocalRepo());
$duplicate = $this->getFileDuplicate($tempFile->getLocalRefPath());
if ($duplicate) {
return array('title' => $duplicate->getTitle()->getText());
} else {
$title = $this->getUniqueTitle(wfStripIllegalFilenameChars($this->mParams['title']));
if (isset($this->mParams['license'])) {
$pageText = SpecialUpload::getInitialPageText('', $this->mParams['license']);
}
$file = new LocalFile($title, RepoGroup::singleton()->getLocalRepo());
$file->upload($tempFile->getPath(), '', $pageText ? $pageText : '');
return array('title' => $file->getTitle()->getText());
}
}
示例5: saveSettings
public function saveSettings($settings, $cityId = null)
{
global $wgCityId, $wgUser;
$cityId = empty($cityId) ? $wgCityId : $cityId;
// Verify wordmark length ( CONN-116 )
if (!empty($settings['wordmark-text'])) {
$settings['wordmark-text'] = trim($settings['wordmark-text']);
}
if (empty($settings['wordmark-text'])) {
// Do not save wordmark if its empty.
unset($settings['wordmark-text']);
} else {
if (mb_strlen($settings['wordmark-text']) > 50) {
$settings['wordmark-text'] = mb_substr($settings['wordmark-text'], 0, 50);
}
}
if (isset($settings['favicon-image-name']) && strpos($settings['favicon-image-name'], 'Temp_file_') === 0) {
$temp_file = new LocalFile(Title::newFromText($settings['favicon-image-name'], 6), RepoGroup::singleton()->getLocalRepo());
$file = new LocalFile(Title::newFromText(self::FaviconImageName, 6), RepoGroup::singleton()->getLocalRepo());
$file->upload($temp_file->getPath(), '', '');
$temp_file->delete('');
Wikia::invalidateFavicon();
$settings['favicon-image-url'] = $file->getURL();
$settings['favicon-image-name'] = $file->getName();
$file->repo->forceMaster();
$history = $file->getHistory(1);
if (count($history) == 1) {
$oldFaviconFile = array('url' => $history[0]->getURL(), 'name' => $history[0]->getArchiveName());
}
}
if (isset($settings['wordmark-image-name']) && strpos($settings['wordmark-image-name'], 'Temp_file_') === 0) {
$temp_file = new LocalFile(Title::newFromText($settings['wordmark-image-name'], 6), RepoGroup::singleton()->getLocalRepo());
$file = new LocalFile(Title::newFromText(self::WordmarkImageName, 6), RepoGroup::singleton()->getLocalRepo());
$file->upload($temp_file->getPath(), '', '');
$temp_file->delete('');
$settings['wordmark-image-url'] = $file->getURL();
$settings['wordmark-image-name'] = $file->getName();
$file->repo->forceMaster();
$history = $file->getHistory(1);
if (count($history) == 1) {
$oldFile = array('url' => $history[0]->getURL(), 'name' => $history[0]->getArchiveName());
}
}
if (isset($settings['background-image-name']) && strpos($settings['background-image-name'], 'Temp_file_') === 0) {
$temp_file = new LocalFile(Title::newFromText($settings['background-image-name'], 6), RepoGroup::singleton()->getLocalRepo());
$file = new LocalFile(Title::newFromText(self::BackgroundImageName, 6), RepoGroup::singleton()->getLocalRepo());
$file->upload($temp_file->getPath(), '', '');
$temp_file->delete('');
$settings['background-image'] = $file->getURL();
$settings['background-image-name'] = $file->getName();
$settings['background-image-width'] = $file->getWidth();
$settings['background-image-height'] = $file->getHeight();
$imageServing = new ImageServing(null, 120, array("w" => "120", "h" => "65"));
$settings['user-background-image'] = $file->getURL();
$settings['user-background-image-thumb'] = wfReplaceImageServer($file->getThumbUrl($imageServing->getCut($file->getWidth(), $file->getHeight(), "origin") . "-" . $file->getName()));
$file->repo->forceMaster();
$history = $file->getHistory(1);
if (count($history) == 1) {
$oldBackgroundFile = array('url' => $history[0]->getURL(), 'name' => $history[0]->getArchiveName());
}
}
$reason = wfMsg('themedesigner-reason', $wgUser->getName());
// update history
if (!empty($GLOBALS[self::WikiFactoryHistory])) {
$history = $GLOBALS[self::WikiFactoryHistory];
$lastItem = end($history);
$revisionId = intval($lastItem['revision']) + 1;
} else {
$history = array();
$revisionId = 1;
}
// #140758 - Jakub
// validation
// default color values
foreach (ThemeDesignerHelper::getColorVars() as $sColorVar => $sDefaultValue) {
if (!isset($settings[$sColorVar]) || !ThemeDesignerHelper::isValidColor($settings[$sColorVar])) {
$settings[$sColorVar] = $sDefaultValue;
}
}
// update WF variable with current theme settings
WikiFactory::setVarByName(self::WikiFactorySettings, $cityId, $settings, $reason);
// add entry
$history[] = array('settings' => $settings, 'author' => $wgUser->getName(), 'timestamp' => wfTimestampNow(), 'revision' => $revisionId);
// limit history size to last 10 changes
$history = array_slice($history, -self::HistoryItemsLimit);
if (count($history) > 1) {
for ($i = 0; $i < count($history) - 1; $i++) {
if (isset($oldFaviconFile) && isset($history[$i]['settings']['favicon-image-name'])) {
if ($history[$i]['settings']['favicon-image-name'] == self::FaviconImageName) {
$history[$i]['settings']['favicon-image-name'] = $oldFaviconFile['name'];
$history[$i]['settings']['favicon-image-url'] = $oldFaviconFile['url'];
}
}
if (isset($oldFile) && isset($history[$i]['settings']['wordmark-image-name'])) {
if ($history[$i]['settings']['wordmark-image-name'] == self::WordmarkImageName) {
$history[$i]['settings']['wordmark-image-name'] = $oldFile['name'];
$history[$i]['settings']['wordmark-image-url'] = $oldFile['url'];
}
}
if (isset($oldBackgroundFile) && isset($history[$i]['settings']['background-image-name'])) {
//.........这里部分代码省略.........
示例6: processUploadedFile
public function processUploadedFile($srcFileName)
{
if ($this->isValid()) {
// do not upload invalid filenames
$this->fileChanged = true;
$dst_file_title = Title::newFromText($this->getPathname(), NS_FILE);
$temp_file = RepoGroup::singleton()->getLocalRepo()->getUploadStash()->getFile($srcFileName);
$file = new LocalFile($dst_file_title, RepoGroup::singleton()->getLocalRepo());
$file->upload($temp_file->getPath(), '', '');
$temp_file->remove();
}
return $this;
}
示例7: execute
function execute($par)
{
global $wgOut, $wgUser, $wgRequest;
global $wgUseAjax, $wgAjaxUploadDestCheck, $wgAjaxLicensePreview;
if ($wgUser->isBlocked()) {
$wgOut->blockedPage();
return;
}
if ($wgUser->getID() == 0) {
$wgOut->setRobotpolicy('noindex,nofollow');
$wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext');
return;
}
if (!in_array('staff', $wgUser->getGroups())) {
$wgOut->setRobotpolicy('noindex,nofollow');
$wgOut->showErrorPage('nosuchspecialpage', 'nospecialpagetext');
return;
}
$this->errorFile = "";
$this->errorTitle = "";
if ($wgRequest->getVal('delete')) {
$wgOut->setArticleBodyOnly(true);
$hpid = str_replace('delete_', '', $wgRequest->getVal('delete'));
$html = self::deleteHPImage($hpid);
$wgOut->addHTML($html);
return;
}
$this->postSuccessful = true;
if ($wgRequest->wasPosted()) {
if ($wgRequest->getVal("updateActive")) {
$dbw = wfGetDB(DB_MASTER);
//first clear them all
$dbw->update(WikihowHomepageAdmin::HP_TABLE, array('hp_active' => 0, 'hp_order' => 0), '*', __METHOD__);
$images = $wgRequest->getArray("hp_images");
$count = 1;
foreach ($images as $image) {
if (!$image) {
continue;
}
$dbw->update(WikihowHomepageAdmin::HP_TABLE, array('hp_active' => 1, 'hp_order' => $count), array('hp_id' => $image));
$count++;
}
} else {
$title = WikiPhoto::getArticleTitleNoCheck($wgRequest->getVal('articleName'));
if (!$title->exists()) {
$this->postSuccessful = false;
$this->errorTitle = "* That article does not exist.";
}
if ($this->postSuccessful) {
//keep going
$imageTitle = Title::newFromText($wgRequest->getVal('wpDestFile'), NS_IMAGE);
$file = new LocalFile($imageTitle, RepoGroup::singleton()->getLocalRepo());
$file->upload($wgRequest->getFileTempName('wpUploadFile'), '', '');
$filesize = $file->getSize();
if ($filesize > 0) {
$dbw = wfGetDB(DB_MASTER);
$dbw->insert(WikihowHomepageAdmin::HP_TABLE, array('hp_page' => $title->getArticleID(), 'hp_image' => $imageTitle->getArticleID()));
$article = new Article($imageTitle);
$limit = array();
$limit['move'] = "sysop";
$limit['edit'] = "sysop";
$protectResult = $article->updateRestrictions($limit, "Used on homepage");
} else {
$this->postSuccessful = false;
$this->errorFile = "* We encountered an error uploading that file.";
}
}
}
}
$useAjaxDestCheck = $wgUseAjax && $wgAjaxUploadDestCheck;
$useAjaxLicensePreview = $wgUseAjax && $wgAjaxLicensePreview;
$adc = wfBoolToStr($useAjaxDestCheck);
$alp = wfBoolToStr($useAjaxLicensePreview);
$wgOut->setPageTitle('WikiHow Homepage Admin');
$wgOut->addScript("<script type=\"text/javascript\">\nwgAjaxUploadDestCheck = {$adc};\nwgAjaxLicensePreview = {$alp};\n</script>");
$wgOut->addScript(HtmlSnips::makeUrlTags('js', array('jquery-ui-1.8.custom.min.js'), 'extensions/wikihow/common/ui/js', false));
$wgOut->addScript(HtmlSnips::makeUrlTags('js', array('wikihowhomepageadmin.js'), 'extensions/wikihow/homepage', false));
$wgOut->addScript(HtmlSnips::makeUrlTags('css', array('wikihowhomepageadmin.css'), 'extensions/wikihow/homepage', false));
$wgOut->addScript(HtmlSnips::makeUrlTags('js', array('upload.js'), 'skins/common', false));
$this->displayHomepageData();
$this->displayForm();
}
示例8: saveHeroData
public function saveHeroData()
{
wfProfileIn(__METHOD__);
$success = false;
$this->getResponse()->setFormat('json');
$wikiData = $this->request->getVal('wikiData', []);
$wikiDataModel = new WikiDataModel(Title::newMainPage()->getText());
$wikiDataModel->setFromAttributes($wikiData);
$imageChanged = !empty($wikiData['imagechanged']);
$imageName = !empty($wikiData['imagename']) ? $wikiData['imagename'] : null;
if ($imageChanged && $imageName) {
wfProfileIn(__METHOD__ . '::uploadStart');
$stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash();
$temp_file = $stash->getFile($imageName);
$file = new LocalFile(static::HERO_IMAGE_FILENAME, RepoGroup::singleton()->getLocalRepo());
$status = $file->upload($temp_file->getPath(), '', '');
wfProfileIn(__METHOD__ . '::uploadEnd');
if ($status->isOK()) {
$wikiDataModel->setImageName($file->getTitle()->getDBKey());
$wikiDataModel->setImagePath($file->getFullUrl());
$success = $this->setWikiData($wikiDataModel);
//clean up stash
$stash->removeFile($imageName);
}
} else {
$wikiDataModel->setImageNameFromProps();
$success = $this->setWikiData($wikiDataModel);
}
if (!$success) {
$wikiDataModel->getFromProps();
}
$this->getResponse()->setVal('success', $success);
$this->getResponse()->setVal('wikiData', $wikiDataModel);
wfProfileOut(__METHOD__);
}
示例9: addMediawikiImage
/**
* Add a new image file into the mediawiki infrastructure so that it can
* be accessed as [[Image:filename.jpg]]
*/
private static function addMediawikiImage($articleID, &$image, $userIsScreenshotter)
{
// check if we've already uploaded this image
$dupTitle = DupImage::checkDupImage($image['filename']);
// if we've already uploaded this image, just return that filename
if ($dupTitle) {
$image['mediawikiName'] = $dupTitle;
return true;
}
// find name for image; change filename to Filename 1.jpg if
// Filename.jpg already existed
$regexp = '/[^' . Title::legalChars() . ']+/';
$first = preg_replace($regexp, '', $image['first']);
$ext = $image['ext'];
$newName = $first . '.' . $ext;
$i = 1;
do {
$title = Title::newFromText($newName, NS_IMAGE);
if ($title && !$title->exists()) {
break;
}
$newName = $first . ' Version ' . ++$i . '.' . $ext;
} while ($i <= 1000);
// insert image into wikihow mediawiki repos
if (!$userIsScreenshotter) {
$comment = '{{' . self::PHOTO_LICENSE . '}}';
} else {
$comment = '{{' . self::SCREENSHOT_LICENSE . '}}';
}
// next 6 lines taken and modified from
// extensions/wikihow/eiu/Easyimageupload.body.php
$title = Title::makeTitleSafe(NS_IMAGE, $newName);
if (!$title) {
return false;
}
$file = new LocalFile($title, RepoGroup::singleton()->getLocalRepo());
if (!$file) {
return false;
}
$ret = $file->upload($image['filename'], $comment, $comment);
if (!$ret->ok) {
return false;
}
// instruct later processing about which mediawiki name was used
$image['mediawikiName'] = $newName;
// Add our uploaded image to the dup table so it's no uploaded again
DupImage::addDupImage($image['filename'], $image['mediawikiName']);
// Keep a log of where images were uploaded in wikiphoto_image_names table
$dbw = self::getDB('write');
$imgname = $articleID . '/' . $image['name'];
$sql = 'INSERT INTO wikiphoto_image_names SET filename=' . $dbw->addQuotes($imgname) . ', wikiname=' . $dbw->addQuotes($image['mediawikiName']);
$dbw->query($sql, __METHOD__);
return true;
}
示例10: addMediawikiImage
/**
* Add a new image file into the mediawiki infrastructure so that it can
* be accessed as [[Image:filename.jpg]]
*/
private static function addMediawikiImage($articleID, &$image)
{
// Download the preview image and set the filename to the temporarary location
$err = self::downloadImagePreview($image);
if ($err) {
return $err;
}
// check if we've already uploaded this image
$dupTitle = DupImage::checkDupImage($image['filename']);
// if we've already uploaded this image, just return that filename
if ($dupTitle) {
//$image['dupTitle'] = true;
$image['mediawikiName'] = $dupTitle;
return '';
}
// find name for image; change filename to Filename 1.jpg if
// Filename.jpg already existed
$regexp = '/[^' . Title::legalChars() . ']+/';
$first = preg_replace($regexp, '', $image['first']);
$ext = $image['ext'];
$newName = $first . '-preview.' . $ext;
$i = 1;
do {
$title = Title::newFromText($newName, NS_IMAGE);
if ($title && !$title->exists()) {
break;
}
$newName = $first . '-preview Version ' . ++$i . '.' . $ext;
} while ($i <= 1000);
// insert image into wikihow mediawiki repos
$comment = '{{' . self::PHOTO_LICENSE . '}}';
// next 6 lines taken and modified from
// extensions/wikihow/eiu/Easyimageupload.body.php
$title = Title::makeTitleSafe(NS_IMAGE, $newName);
if (!$title) {
return "Couln't Make a title";
}
$file = new LocalFile($title, RepoGroup::singleton()->getLocalRepo());
if (!$file) {
return "Couldn't make a local file";
}
$ret = $file->upload($image['filename'], $comment, $comment);
if (!$ret->ok) {
return "Couldn't upload file " . $image['filename'];
}
// instruct later processing about which mediawiki name was used
$image['mediawikiName'] = $newName;
// Add our uploaded image to the dup table so it's no uploaded again
DupImage::addDupImage($image['filename'], $image['mediawikiName']);
return '';
}
示例11: insertImage
protected function insertImage($name, $mwname, $result)
{
global $wgRequest, $wgImageMagickConvertCommand, $wgServer;
if (!$result) {
$result = array();
} elseif ($result['error']) {
return $result;
}
$fromPage = $wgRequest->getVal('viapage');
if (!empty($mwname) && !empty($name)) {
$name = trim(urldecode($name));
$dateTime = new DateTime();
$mwDate = wfTimestamp(TS_MW);
// Mediawiki timestamp: 'YmdHis'
list($first, $ext) = self::splitFilenameExt($name);
$ext = strtolower($ext);
$validExts = array('GIF', 'JPG', 'JPEG', 'PNG');
if (!in_array(strtoupper($ext), $validExts)) {
$result['error'] = 'Error: Invalid file extension ' . strtoupper($ext) . '. Valid extensions are:';
foreach ($validExts as $validExt) {
$result['error'] .= ' ' . strtoupper($validExt);
}
$result['error'] .= '.';
return $result;
}
$saveName = false;
$titleExists = false;
$suffixNum = 1;
while (!$saveName || $titleExists) {
$saveName = 'User Completed Image ' . $fromPage . ' ' . $dateTime->format('Y.m.d H.i.s') . ' ' . $suffixNum . '.' . $ext;
$title = Title::makeTitleSafe(NS_IMAGE, $saveName);
$newFile = true;
$titleExists = $title->exists();
$suffixNum++;
}
$temp_file = new TempLocalImageFile(Title::newFromText($mwname, NS_IMAGE), RepoGroup::singleton()->getLocalRepo());
if (!$temp_file || !$temp_file->exists()) {
$result['error'] = 'Error: A server error has occurred. Please try again.';
return $result;
}
// Image orientation is a bit wonky on some mobile devices; use ImageMagick's auto-orient to try fixing it.
$tempFilePath = $temp_file->getPath();
$cmd = $wgImageMagickConvertCommand . ' ' . $tempFilePath . ' -auto-orient ' . $tempFilePath;
exec($cmd);
// Use a CC license
$comment = '{{Self}}';
$file = new LocalFile($title, RepoGroup::singleton()->getLocalRepo());
$file->upload($tempFilePath, $comment, $comment);
if (!$file || !$file->exists()) {
$result['error'] = 'Error: A server error has occurred. Please try again.';
return $result;
}
$temp_file->delete('');
$fileTitle = $file->getTitle();
$fileURL = $file->url;
$thumbURL = '';
$thumb = $file->getThumbnail(200, -1, true, true);
if (!$thumb) {
$result['error'] = 'Error: A server error has occurred. Please try again.';
$file->delete('');
return $result;
}
$thumbURL = $thumb->url;
$result['titleText'] = $fileTitle->getText();
$result['titleDBkey'] = substr($fileTitle->getDBkey(), 21);
// Only keep important info
$result['titlePreText'] = '/' . $fileTitle->getPrefixedText();
$result['titleArtID'] = $fileTitle->getArticleID();
$result['timestamp'] = $mwDate;
$result['fromPage'] = $wgRequest->getVal('viapage');
$result['thumbURL'] = $thumbURL;
$result['fileURL'] = $wgServer . $fileURL;
}
return $result;
}
示例12: insertImage
/**
* Insert an image upload into the mediawiki database tables. If the
* image insert was successful, a page showing the wiki text for their
* image is shown. Otherwise, if the image file name already exists in
* the database, a conflict page is returned to the user.
*
* @param $type string with either 'overwrite' or blank -- specifies
* whether to force-overwrite an existing image
* @param $name filename chosen by user for uploaded image
* @param $mwname filename of the file in mediawiki DB
* @param $fromIIA true iff source of call is Special:IntroImageAdder
* @param $image_comment a comment attached to the image upload (only
* used if $fromIIA == true)
* @return outputs either a wikitext results page (if image filename
* didn't exist or force overwrite was selected) or a conflict page.
* Returns an error string or empty string if no error.
*/
private function insertImage($type, $name, $mwname, $fromIIA = false, $image_comment = '')
{
global $wgRequest, $wgUser, $wgOut, $wgFileExtensions;
if (!$fromIIA) {
$license = $wgRequest->getVal('wpLicense', '');
if (!empty($license)) {
$attrib = $wgRequest->getVal('attribution');
$comment = '{{' . $license . (!empty($attrib) ? '|' . $attrib : '') . '}}';
if ($license != '') {
$wgUser->setOption('image_license', $license);
$wgUser->saveSettings();
}
} else {
$comment = $wgRequest->getVal('ImageAttribution', '');
}
} else {
$comment = $image_comment;
}
if (wfReadOnly()) {
return wfMsg('eiu-readonly');
}
if (!empty($mwname) && !empty($name)) {
$name = urldecode($name);
$name = preg_replace('/[^' . Title::legalChars() . ']|[:\\/\\\\]|\\?/', '-', $name);
$name = preg_replace('@&@', '&', $name);
$name = trim($name);
// did they give no extension at all when they changed the name?
list($first, $ext) = self::splitFilenameExt($name);
$ext = strtolower($ext);
$title = Title::makeTitleSafe(NS_IMAGE, $name);
if (is_null($title) || !in_array($ext, $wgFileExtensions)) {
return wfMsg('eiu-filetype-incorrect');
}
$newFile = true;
$titleExists = $title->exists();
if (!$titleExists || $fromIIA) {
//
// DB entry for file doesn't exist. User renamed their
// upload or it never existed.
//
if ($titleExists) {
$suggestedName = self::generateNewFilename($name);
$title = Title::makeTitleSafe(NS_IMAGE, $suggestedName);
}
// is the target protected?
$permErrors = $title->getUserPermissionsErrors('edit', $wgUser);
$permErrorsUpload = $title->getUserPermissionsErrors('upload', $wgUser);
if ($permErrors || $permErrorsUpload) {
return wfMsg('This image is protected');
}
$temp_file = new LocalFile(Title::newFromText($mwname, NS_IMAGE), RepoGroup::singleton()->getLocalRepo());
$file = new LocalFile($title, RepoGroup::singleton()->getLocalRepo());
$file->upload($temp_file->getPath(), $comment, $comment);
$temp_file->delete('');
} elseif ($type == 'overwrite') {
//
// DB entry exists and user selected to overwrite it
//
$title = Title::newFromText($name, NS_IMAGE);
// is the target protected?
$permErrors = $title->getUserPermissionsErrors('edit', $wgUser);
$permErrorsUpload = $title->getUserPermissionsErrors('upload', $wgUser);
$permErrorsCreate = $title->exists() ? array() : $title->getUserPermissionsErrors('create', $wgUser);
if ($permErrors || $permErrorsUpload || $permErrorsCreate) {
return wfMsg('This image is protected');
}
$file_name = new LocalFile($title, RepoGroup::singleton()->getLocalRepo());
$file_mwname = new TempLocalFile(Title::newFromText($mwname, NS_IMAGE), RepoGroup::singleton()->getLocalRepo());
$file_name->upload($file_mwname->getPath(), $comment, $comment);
$file_mwname->delete('');
$newFile = false;
} elseif ($type == 'existing') {
//
// DB entry exists and user doesn't want to overwrite or
// rename, so they use the existing file from the DB.
//
$title = Title::newFromText($name, NS_IMAGE);
} else {
//
// There was a conflict with an existing file in the
// DB. Title exists and overwrite action not taken yet.
//
$data = array('wpUpload' => 1, 'wpSourceType' => 'web', 'wpUploadFileURL' => '');
//.........这里部分代码省略.........
示例13: uploadFromUrl
/**
* @param LocalFile $file
* @param string $url
* @param string $comment
* @return FileRepoStatus
*/
private function uploadFromUrl($file, $url, $comment)
{
$tmpFile = tempnam(wfTempDir(), 'upload');
// fetch an asset
$res = Http::get($url, 'default', ['noProxy' => true]);
$this->assertTrue($res !== false, 'File from <' . $url . '> should be uploaded');
file_put_contents($tmpFile, $res);
$this->assertTrue(is_readable($tmpFile), 'Temp file for HTTP upload should be created and readable');
Wikia::log(__METHOD__, false, sprintf('uploading %s (%.2f kB) as %s', $tmpFile, filesize($tmpFile) / 1024, $file->getName()), true);
$res = $file->upload($tmpFile, $comment, '');
#unlink( $tmpFile );
return $res;
}
示例14: insertImage
/**
* This functions handle the third step of the WMU, image insertion
*
* @return bool|String
*/
function insertImage()
{
global $wgRequest, $wgUser, $wgContLang;
$type = $wgRequest->getVal('type');
$name = $wgRequest->getVal('name');
$mwname = $wgRequest->getVal('mwname');
$tempid = $wgRequest->getVal('tempid');
$gallery = $wgRequest->getVal('gallery', '');
$title_main = urldecode($wgRequest->getVal('article', ''));
$ns = $wgRequest->getVal('ns', '');
$link = urldecode($wgRequest->getVal('link', ''));
// Are we in the ck editor?
$ck = $wgRequest->getVal('ck');
$extraId = $wgRequest->getVal('extraId');
$newFile = true;
$file = null;
if ($name !== NULL) {
$name = urldecode($name);
if ($name == '') {
header('X-screen-type: error');
return WfMsg('wmu-warn3');
} else {
$name = preg_replace("/[^" . Title::legalChars() . "]|:/", '-', $name);
// did they give no extension at all when they changed the name?
$ext = explode('.', $name);
array_shift($ext);
if (count($ext)) {
$finalExt = $ext[count($ext) - 1];
} else {
$finalExt = '';
}
if ('' == $finalExt) {
header('X-screen-type: error');
return wfMsg('wmu-filetype-missing');
}
$title = Title::makeTitleSafe(NS_IMAGE, $name);
if (is_null($title)) {
header('X-screen-type: error');
return wfMsg('wmu-filetype-incorrect');
}
if ($title->exists()) {
if ($type == 'overwrite') {
$title = Title::newFromText($name, 6);
// is the target protected?
$permErrors = $title->getUserPermissionsErrors('edit', $wgUser);
$permErrorsUpload = $title->getUserPermissionsErrors('upload', $wgUser);
$permErrorsCreate = $title->exists() ? array() : $title->getUserPermissionsErrors('create', $wgUser);
if ($permErrors || $permErrorsUpload || $permErrorsCreate) {
header('X-screen-type: error');
return wfMsg('wmu-file-protected');
}
$file_name = new LocalFile($title, RepoGroup::singleton()->getLocalRepo());
$file_mwname = new FakeLocalFile(Title::newFromText($mwname, 6), RepoGroup::singleton()->getLocalRepo());
if (!empty($extraId)) {
$flickrResult = $this->getFlickrPhotoInfo($extraId);
$nsid = $flickrResult['owner']['nsid'];
// e.g. 49127042@N00
$username = $flickrResult['owner']['username'];
// e.g. bossa67
$license = $flickrResult['license'];
$caption = '{{MediaWiki:Flickr' . intval($license) . '|1=' . wfEscapeWikiText($extraId) . '|2=' . wfEscapeWikiText($nsid) . '|3=' . wfEscapeWikiText($username) . '}}';
} else {
$caption = '';
}
$file_name->upload($file_mwname->getPath(), '', $caption);
$file_mwname->delete('');
$this->tempFileClearInfo($tempid);
$newFile = false;
} else {
if ($type == 'existing') {
$file = wfFindFile(Title::newFromText($name, 6));
if (!empty($file)) {
header('X-screen-type: existing');
$props = array();
$props['file'] = $file;
$props['mwname'] = $name;
$props['default_caption'] = Wikia::getProps($file->getTitle()->getArticleID(), 'default_caption');
return $this->detailsPage($props);
} else {
header('X-screen-type: error');
return wfMsg('wmu-file-error');
}
} else {
header('X-screen-type: conflict');
$tmpl = new EasyTemplate(dirname(__FILE__) . '/templates/');
// extensions check
list($partname, $ext) = UploadBase::splitExtensions($name);
if (count($ext)) {
$finalExt = $ext[count($ext) - 1];
} else {
$finalExt = '';
}
// for more than one "extension"
if (count($ext) > 1) {
for ($i = 0; $i < count($ext) - 1; $i++) {
//.........这里部分代码省略.........
示例15: uploadImage
/**
* Accept a request to upload an image either via POST data (user upload)
* or via flickr or google / wikimedia.org search.
*
* @param $src string with value 'upload', 'flickr' or 'wiki'
* @return html outputs image details page
*/
private function uploadImage($src)
{
global $wgRequest, $wgUser, $IP, $wgOut;
$error = '';
$debugInfo = array();
if ($src == 'upload') {
$tempname = self::createTempFilename();
$tempUser = self::getTempFileUser();
$file = new LocalFile(Title::newFromText($tempname, NS_IMAGE), RepoGroup::singleton()->getLocalRepo());
$name = $wgRequest->getFileName('wpUploadFile');
$comment = '';
$file->upload($wgRequest->getFileTempName('wpUploadFile'), $comment, '', 0, false, false, $tempUser);
$filesize = $file->getSize();
if (!$filesize) {
$error = wfMsg('eiu-upload-error');
}
} elseif ($src == 'flickr' || $src == 'wiki') {
$sourceName = $src == 'flickr' ? 'Flickr' : 'Mediawiki Commons';
$tempname = self::createTempFilename();
$file = new LocalFile(Title::newFromText($tempname, NS_IMAGE), RepoGroup::singleton()->getLocalRepo());
$details = (array) json_decode($wgRequest->getVal('img-details'));
$name = $details['name'];
// scrape the file using curl
$filename = '/tmp/tmp-curl-' . mt_rand(0, 100000000) . '.jpg';
$remoteFile = strlen($details['url_l']) ? $details['url_l'] : $details['url'];
$ch = curl_init($remoteFile);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$fp = fopen($filename, 'w');
curl_setopt($ch, CURLOPT_FILE, $fp);
$ret = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
fclose($fp);
if ($err) {
$debugInfo['curl'] = $err;
}
$filesize = @filesize($filename);
if ($filesize) {
if ($src == 'flickr' || preg_match('@^http://[^/]*flickr@', $details['url'])) {
require_once $IP . '/extensions/3rdparty/phpFlickr-2.3.1/phpFlickr.php';
$flickr = new phpFlickr(WH_FLICKR_API_KEY);
$photo = $flickr->photos_getInfo($details['photoid']);
$err = $flickr->getErrorMsg();
if ($err) {
$debugInfo['flickrAPI'] = $err;
}
$license = $photo['license'];
$username = $photo['owner']['username'];
$comment = '{{flickr' . intval($license) . '|' . wfEscapeWikiText($details['photoid']) . '|' . wfEscapeWikiText($details['ownerid']) . '|' . wfEscapeWikiText($username) . '}}';
} else {
$comment = self::getWPLicenseTag($details['url']);
}
// finish initializing the $file obj
$tempUser = self::getTempFileUser();
$status = $file->upload($filename, '', '', 0, false, false, $tempUser);
if (!$status->ok) {
$error = wfMsg('eiu-upload-error');
}
} else {
$error = wfMsg('eiu-download-error', $sourceName);
}
}
if ($error) {
$html = EasyTemplate::html('eiu_file_error.tmpl.php', array('error' => $error));
$wgOut->addHTML($html);
error_log("file from {$src} error msgs: " . print_r($debugInfo, true));
} else {
$mwname = $tempname;
$props = array('src' => $src, 'name' => $name, 'mwname' => $mwname, 'is_image' => $file->getMediaType() == 'BITMAP' || $file->getMediaType() == 'DRAWING', 'width' => $file->getWidth(), 'height' => $file->getHeight(), 'upload_file' => $file, 'image_comment' => $comment, 'license' => $wgUser->getOption('image_license'), 'file' => $file);
$html = EasyTemplate::html('eiu_image_details.tmpl.php', $props);
$wgOut->addHTML($html);
}
}