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(); }
/** * 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); } }
public function testGetSize() { $this->assertNotEquals(0, $this->fixture_file->getSize()); $this->assertEquals(filesize(TESTS_FSI_LOCALFILE_TMP_PATH . '/myFile.ext'), $this->fixture_file->getSize()); $myNonExistingFile = new LocalFile(TESTS_FSI_LOCALFILE_TMP_PATH . '/myDir/myFile2.ext'); $this->assertEquals(0, $myNonExistingFile->getSize()); }
/** * @return int The size of the file (in KB) */ public function getSize($recursive = false) { $this->checkReadPermission(); return parent::getSize($recursive); }