示例#1
0
 /**
  * Get URL for a file.
  *
  * @param AssetFileModel $file
  * @param string         $transform
  *
  * @return string
  */
 public function getUrlForFile(AssetFileModel $file, $transform = null)
 {
     if (!$transform || !ImageHelper::isImageManipulatable(IOHelper::getExtension($file->filename))) {
         $sourceType = craft()->assetSources->getSourceTypeById($file->sourceId);
         return AssetsHelper::generateUrl($sourceType, $file);
     }
     // Get the transform index model
     $index = craft()->assetTransforms->getTransformIndex($file, $transform);
     // Does the file actually exist?
     if ($index->fileExists) {
         return craft()->assetTransforms->getUrlForTransformByTransformIndex($index);
     } else {
         if (craft()->config->get('generateTransformsBeforePageLoad')) {
             // Mark the transform as in progress
             $index->inProgress = true;
             craft()->assetTransforms->storeTransformIndexData($index);
             // Generate the transform
             craft()->assetTransforms->generateTransform($index);
             // Update the index
             $index->fileExists = true;
             craft()->assetTransforms->storeTransformIndexData($index);
             // Return the transform URL
             return craft()->assetTransforms->getUrlForTransformByTransformIndex($index);
         } else {
             // Queue up a new Generate Pending Transforms task, if there isn't one already
             if (!craft()->tasks->areTasksPending('GeneratePendingTransforms')) {
                 craft()->tasks->createTask('GeneratePendingTransforms');
             }
             // Return the temporary transform URL
             return UrlHelper::getResourceUrl('transforms/' . $index->id);
         }
     }
 }