/** * 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); } } }