diff --git a/resources/builtin/image-100x100.png b/resources/builtin/image-100x100.png new file mode 100644 index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc$@canApplyTransform($file)) { - $xformed_file = $xforms[$transform]->applyTransform($file); + try { + $xformed_file = $xforms[$transform]->applyTransform($file); + } catch (Exception $ex) { + // TODO: Provide a diagnostic mode to surface these to the viewer. + + // In normal transform mode, we ignore failures and generate a + // default transform instead. + } + } + + if (!$xformed_file) { + $xformed_file = $xform->getDefaultTransform($file); } } diff --git a/src/applications/files/transform/PhabricatorFileThumbnailTransform.php b/src/applications/files/transform/PhabricatorFileThumbnailTransform.php --- a/src/applications/files/transform/PhabricatorFileThumbnailTransform.php +++ b/src/applications/files/transform/PhabricatorFileThumbnailTransform.php @@ -71,4 +71,20 @@ } } + public function getDefaultTransform(PhabricatorFile $file) { + $x = (int)$this->dstX; + $y = (int)$this->dstY; + $name = 'image-'.$x.'x'.nonempty($y, $x).'.png'; + + $params = array( + 'name' => $name, + 'canCDN' => true, + ); + + $root = dirname(phutil_get_library_root('phabricator')); + $data = Filesystem::readFile($root.'/resources/builtin/'.$name); + + return PhabricatorFile::newFromFileData($data, $params); + } + } diff --git a/src/applications/files/transform/PhabricatorFileTransform.php b/src/applications/files/transform/PhabricatorFileTransform.php --- a/src/applications/files/transform/PhabricatorFileTransform.php +++ b/src/applications/files/transform/PhabricatorFileTransform.php @@ -7,6 +7,10 @@ abstract public function canApplyTransform(PhabricatorFile $file); abstract public function applyTransform(PhabricatorFile $file); + public function getDefaultTransform(PhabricatorFile $file) { + return null; + } + public function generateTransforms() { return array($this); }