Remove unused file transforms
Summary: Ref T7707. - Modernize the file transform endpoint a bit. - Delete transforms which are no longer used in the product. Test Plan: - Used Pholio (navigation, inline thumbs). - Uploaded images (embed thumb). - Changed profile picture (profile thumb). Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T7707 Differential Revision: https://secure.phabricator.com/D12807
|
@ -2824,7 +2824,6 @@ phutil_register_library_map(array(
|
|||
'PholioImageUploadController' => 'applications/pholio/controller/PholioImageUploadController.php',
|
||||
'PholioInlineController' => 'applications/pholio/controller/PholioInlineController.php',
|
||||
'PholioInlineListController' => 'applications/pholio/controller/PholioInlineListController.php',
|
||||
'PholioInlineThumbController' => 'applications/pholio/controller/PholioInlineThumbController.php',
|
||||
'PholioMock' => 'applications/pholio/storage/PholioMock.php',
|
||||
'PholioMockCommentController' => 'applications/pholio/controller/PholioMockCommentController.php',
|
||||
'PholioMockEditController' => 'applications/pholio/controller/PholioMockEditController.php',
|
||||
|
@ -6311,7 +6310,6 @@ phutil_register_library_map(array(
|
|||
'PholioImageUploadController' => 'PholioController',
|
||||
'PholioInlineController' => 'PholioController',
|
||||
'PholioInlineListController' => 'PholioController',
|
||||
'PholioInlineThumbController' => 'PholioController',
|
||||
'PholioMock' => array(
|
||||
'PholioDAO',
|
||||
'PhabricatorMarkupInterface',
|
||||
|
|
|
@ -3,43 +3,36 @@
|
|||
final class PhabricatorFileTransformController
|
||||
extends PhabricatorFileController {
|
||||
|
||||
private $transform;
|
||||
private $phid;
|
||||
private $key;
|
||||
|
||||
public function shouldRequireLogin() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public function willProcessRequest(array $data) {
|
||||
$this->transform = $data['transform'];
|
||||
$this->phid = $data['phid'];
|
||||
$this->key = $data['key'];
|
||||
}
|
||||
|
||||
public function processRequest() {
|
||||
$viewer = $this->getRequest()->getUser();
|
||||
public function handleRequest(AphrontRequest $request) {
|
||||
$viewer = $this->getViewer();
|
||||
|
||||
// NOTE: This is a public/CDN endpoint, and permission to see files is
|
||||
// controlled by knowing the secret key, not by authentication.
|
||||
|
||||
$source_phid = $request->getURIData('phid');
|
||||
$file = id(new PhabricatorFileQuery())
|
||||
->setViewer(PhabricatorUser::getOmnipotentUser())
|
||||
->withPHIDs(array($this->phid))
|
||||
->withPHIDs(array($source_phid))
|
||||
->executeOne();
|
||||
if (!$file) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
if (!$file->validateSecretKey($this->key)) {
|
||||
$secret_key = $request->getURIData('key');
|
||||
if (!$file->validateSecretKey($secret_key)) {
|
||||
return new Aphront403Response();
|
||||
}
|
||||
|
||||
$transform = $request->getURIData('transform');
|
||||
$xform = id(new PhabricatorTransformedFile())
|
||||
->loadOneWhere(
|
||||
'originalPHID = %s AND transform = %s',
|
||||
$this->phid,
|
||||
$this->transform);
|
||||
$source_phid,
|
||||
$transform);
|
||||
|
||||
if ($xform) {
|
||||
return $this->buildTransformedFileResponse($xform);
|
||||
|
@ -48,35 +41,26 @@ final class PhabricatorFileTransformController
|
|||
$type = $file->getMimeType();
|
||||
|
||||
if (!$file->isViewableInBrowser() || !$file->isTransformableImage()) {
|
||||
return $this->buildDefaultTransformation($file);
|
||||
return $this->buildDefaultTransformation($file, $transform);
|
||||
}
|
||||
|
||||
// We're essentially just building a cache here and don't need CSRF
|
||||
// protection.
|
||||
$unguarded = AphrontWriteGuard::beginScopedUnguardedWrites();
|
||||
|
||||
switch ($this->transform) {
|
||||
switch ($transform) {
|
||||
case 'thumb-profile':
|
||||
$xformed_file = $this->executeThumbTransform($file, 50, 50);
|
||||
break;
|
||||
case 'thumb-280x210':
|
||||
$xformed_file = $this->executeThumbTransform($file, 280, 210);
|
||||
break;
|
||||
case 'thumb-220x165':
|
||||
$xformed_file = $this->executeThumbTransform($file, 220, 165);
|
||||
break;
|
||||
case 'preview-100':
|
||||
$xformed_file = $this->executePreviewTransform($file, 100);
|
||||
break;
|
||||
case 'preview-220':
|
||||
$xformed_file = $this->executePreviewTransform($file, 220);
|
||||
break;
|
||||
case 'thumb-160x120':
|
||||
$xformed_file = $this->executeThumbTransform($file, 160, 120);
|
||||
break;
|
||||
case 'thumb-60x45':
|
||||
$xformed_file = $this->executeThumbTransform($file, 60, 45);
|
||||
break;
|
||||
default:
|
||||
return new Aphront400Response();
|
||||
}
|
||||
|
@ -85,16 +69,18 @@ final class PhabricatorFileTransformController
|
|||
return new Aphront400Response();
|
||||
}
|
||||
|
||||
$xform = new PhabricatorTransformedFile();
|
||||
$xform->setOriginalPHID($this->phid);
|
||||
$xform->setTransform($this->transform);
|
||||
$xform->setTransformedPHID($xformed_file->getPHID());
|
||||
$xform->save();
|
||||
$xform = id(new PhabricatorTransformedFile())
|
||||
->setOriginalPHID($source_phid)
|
||||
->setTransform($transform)
|
||||
->setTransformedPHID($xformed_file->getPHID())
|
||||
->save();
|
||||
|
||||
return $this->buildTransformedFileResponse($xform);
|
||||
}
|
||||
|
||||
private function buildDefaultTransformation(PhabricatorFile $file) {
|
||||
private function buildDefaultTransformation(
|
||||
PhabricatorFile $file,
|
||||
$transform) {
|
||||
static $regexps = array(
|
||||
'@application/zip@' => 'zip',
|
||||
'@image/@' => 'image',
|
||||
|
@ -111,16 +97,10 @@ final class PhabricatorFileTransformController
|
|||
}
|
||||
}
|
||||
|
||||
switch ($this->transform) {
|
||||
switch ($transform) {
|
||||
case 'thumb-280x210':
|
||||
$suffix = '280x210';
|
||||
break;
|
||||
case 'thumb-160x120':
|
||||
$suffix = '160x120';
|
||||
break;
|
||||
case 'thumb-60x45':
|
||||
$suffix = '60x45';
|
||||
break;
|
||||
case 'preview-100':
|
||||
$suffix = '.p100';
|
||||
break;
|
||||
|
|
|
@ -784,14 +784,6 @@ final class PhabricatorFile extends PhabricatorFileDAO
|
|||
return $this->getTransformedURI('thumb-profile');
|
||||
}
|
||||
|
||||
public function getThumb60x45URI() {
|
||||
return $this->getTransformedURI('thumb-60x45');
|
||||
}
|
||||
|
||||
public function getThumb160x120URI() {
|
||||
return $this->getTransformedURI('thumb-160x120');
|
||||
}
|
||||
|
||||
public function getPreview100URI() {
|
||||
return $this->getTransformedURI('preview-100');
|
||||
}
|
||||
|
@ -800,10 +792,6 @@ final class PhabricatorFile extends PhabricatorFileDAO
|
|||
return $this->getTransformedURI('preview-220');
|
||||
}
|
||||
|
||||
public function getThumb220x165URI() {
|
||||
return $this->getTransfomredURI('thumb-220x165');
|
||||
}
|
||||
|
||||
public function getThumb280x210URI() {
|
||||
return $this->getTransformedURI('thumb-280x210');
|
||||
}
|
||||
|
|
|
@ -49,7 +49,6 @@ final class PhabricatorPholioApplication extends PhabricatorApplication {
|
|||
'inline/' => array(
|
||||
'(?:(?P<id>\d+)/)?' => 'PholioInlineController',
|
||||
'list/(?P<id>\d+)/' => 'PholioInlineListController',
|
||||
'thumb/(?P<imageid>\d+)/' => 'PholioInlineThumbController',
|
||||
),
|
||||
'image/' => array(
|
||||
'upload/' => 'PholioImageUploadController',
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
<?php
|
||||
|
||||
final class PholioInlineThumbController extends PholioController {
|
||||
|
||||
private $imageid;
|
||||
|
||||
public function shouldAllowPublic() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public function willProcessRequest(array $data) {
|
||||
$this->imageid = idx($data, 'imageid');
|
||||
}
|
||||
|
||||
public function processRequest() {
|
||||
$request = $this->getRequest();
|
||||
$user = $request->getUser();
|
||||
|
||||
$image = id(new PholioImage())->load($this->imageid);
|
||||
|
||||
if ($image == null) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
$mock = id(new PholioMockQuery())
|
||||
->setViewer($user)
|
||||
->withIDs(array($image->getMockID()))
|
||||
->executeOne();
|
||||
|
||||
if (!$mock) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
$file = id(new PhabricatorFileQuery())
|
||||
->setViewer($user)
|
||||
->witHPHIDs(array($image->getFilePHID()))
|
||||
->executeOne();
|
||||
|
||||
if (!$file) {
|
||||
return new Aphront404Response();
|
||||
}
|
||||
|
||||
return id(new AphrontRedirectResponse())->setURI($file->getThumb60x45URI());
|
||||
}
|
||||
|
||||
}
|
Before Width: | Height: | Size: 1,006 B |
Before Width: | Height: | Size: 762 B |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.1 KiB |