本文整理汇总了PHP中IOHelper::isExtensionAllowed方法的典型用法代码示例。如果您正苦于以下问题:PHP IOHelper::isExtensionAllowed方法的具体用法?PHP IOHelper::isExtensionAllowed怎么用?PHP IOHelper::isExtensionAllowed使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IOHelper
的用法示例。
在下文中一共展示了IOHelper::isExtensionAllowed方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: insertFileInFolder
/**
* @inheritDoc BaseAssetSourceType::insertFileInFolder()
*
* @param AssetFolderModel $folder
* @param $filePath
* @param $fileName
*
* @throws Exception
* @return AssetFileModel
*/
protected function insertFileInFolder(AssetFolderModel $folder, $filePath, $fileName)
{
$fileName = AssetsHelper::cleanAssetName($fileName);
$extension = IOHelper::getExtension($fileName);
if (!IOHelper::isExtensionAllowed($extension)) {
throw new Exception(Craft::t('This file type is not allowed'));
}
$uriPath = $this->_getPathPrefix() . $folder->path . $fileName;
$this->_prepareForRequests();
$settings = $this->getSettings();
$fileInfo = $this->_s3->getObjectInfo($settings->bucket, $uriPath);
if ($fileInfo) {
$response = new AssetOperationResponseModel();
return $response->setPrompt($this->getUserPromptOptions($fileName))->setDataItem('fileName', $fileName);
}
clearstatcache();
$this->_prepareForRequests();
if (!$this->putObject($filePath, $this->getSettings()->bucket, $uriPath, \S3::ACL_PUBLIC_READ)) {
throw new Exception(Craft::t('Could not copy file to target destination'));
}
$response = new AssetOperationResponseModel();
return $response->setSuccess()->setDataItem('filePath', $uriPath);
}
示例2: indexFile
/**
* Indexes a file.
*
* @param string $uriPath The URI path fo the file to index.
*
* @return AssetFileModel|bool|null
*/
protected function indexFile($uriPath)
{
$extension = IOHelper::getExtension($uriPath);
if (IOHelper::isExtensionAllowed($extension)) {
$parts = explode('/', $uriPath);
$fileName = array_pop($parts);
$searchFullPath = join('/', $parts) . (empty($parts) ? '' : '/');
if (empty($searchFullPath)) {
$parentId = ':empty:';
} else {
$parentId = false;
}
$parentFolder = craft()->assets->findFolder(array('sourceId' => $this->model->id, 'path' => $searchFullPath, 'parentId' => $parentId));
if (empty($parentFolder)) {
return false;
}
$folderId = $parentFolder->id;
$fileModel = craft()->assets->findFile(array('folderId' => $folderId, 'filename' => $fileName));
if (is_null($fileModel)) {
$fileModel = new AssetFileModel();
$fileModel->sourceId = $this->model->id;
$fileModel->folderId = $folderId;
$fileModel->filename = $fileName;
$fileModel->kind = IOHelper::getFileKind($extension);
craft()->assets->storeFile($fileModel);
}
return $fileModel;
}
return false;
}
示例3: moveFiles
/**
* Move or rename files.
*
* @param $fileIds
* @param $folderId
* @param string $filename If this is a rename operation or not.
* @param array $actions Actions to take in case of a conflict.
*
* @throws Exception
* @return bool|AssetOperationResponseModel
*/
public function moveFiles($fileIds, $folderId, $filename = '', $actions = array())
{
if ($filename && is_array($fileIds) && count($fileIds) > 1) {
throw new Exception(Craft::t("It’s not possible to rename multiple files!"));
}
if (!is_array($fileIds)) {
$fileIds = array($fileIds);
}
if (!is_array($actions)) {
$actions = array($actions);
}
$results = array();
$response = new AssetOperationResponseModel();
// Make sure the filename is allowed
if ($filename) {
$extension = IOHelper::getExtension($filename);
if (!IOHelper::isExtensionAllowed($extension)) {
$response->setError(Craft::t('This file type is not allowed'));
return $response;
}
}
$folder = $this->getFolderById($folderId);
$newSourceType = craft()->assetSources->getSourceTypeById($folder->sourceId);
// Does the source folder exist?
$parent = $folder->getParent();
if ($parent && $folder->parentId && !$newSourceType->folderExists($parent ? $parent->path : '', $folder->name)) {
$response->setError(Craft::t("The target folder does not exist!"));
} else {
foreach ($fileIds as $i => $fileId) {
$file = $this->getFileById($fileId);
// If this is not a rename operation, then the filename remains the original
if (count($fileIds) > 1 || empty($filename)) {
$filename = $file->filename;
}
// If the new file does not have an extension, give it the old file extension.
if (!IOHelper::getExtension($filename)) {
$filename .= '.' . $file->getExtension();
}
$filename = AssetsHelper::cleanAssetName($filename);
if ($folderId == $file->folderId && $filename == $file->filename) {
$response = new AssetOperationResponseModel();
$response->setSuccess();
$results[] = $response;
}
$originalSourceType = craft()->assetSources->getSourceTypeById($file->sourceId);
if ($originalSourceType && $newSourceType) {
if (!($response = $newSourceType->moveFileInsideSource($originalSourceType, $file, $folder, $filename, $actions[$i]))) {
$response = $this->_moveFileBetweenSources($originalSourceType, $newSourceType, $file, $folder, $actions[$i]);
}
} else {
$response->setError(Craft::t("There was an error moving the file {file}.", array('file' => $file->filename)));
}
}
}
return $response;
}
示例4: insertFileInFolder
/**
* @inheritDoc BaseAssetSourceType::insertFileInFolder()
*
* @param AssetFolderModel $folder
* @param string $filePath
* @param string $fileName
*
* @throws Exception
* @return AssetOperationResponseModel
*/
protected function insertFileInFolder(AssetFolderModel $folder, $filePath, $fileName)
{
// Check if the set file system path exists
$basePath = $this->getSourceFileSystemPath();
if (empty($basePath)) {
$basePath = $this->getBasePath();
if (!empty($basePath)) {
throw new Exception(Craft::t('The file system path “{folder}” set for this source does not exist.', array('folder' => $this->getBasePath())));
}
}
$targetFolder = $this->getSourceFileSystemPath() . $folder->path;
// Make sure the folder exists.
if (!IOHelper::folderExists($targetFolder)) {
throw new Exception(Craft::t('The folder “{folder}” does not exist.', array('folder' => $targetFolder)));
}
// Make sure the folder is writable
if (!IOHelper::isWritable($targetFolder)) {
throw new Exception(Craft::t('The folder “{folder}” is not writable.', array('folder' => $targetFolder)));
}
$fileName = AssetsHelper::cleanAssetName($fileName);
$targetPath = $targetFolder . $fileName;
$extension = IOHelper::getExtension($fileName);
if (!IOHelper::isExtensionAllowed($extension)) {
throw new Exception(Craft::t('This file type is not allowed'));
}
if (IOHelper::fileExists($targetPath)) {
$response = new AssetOperationResponseModel();
return $response->setPrompt($this->getUserPromptOptions($fileName))->setDataItem('fileName', $fileName);
}
if (!IOHelper::copyFile($filePath, $targetPath)) {
throw new Exception(Craft::t('Could not copy file to target destination'));
}
IOHelper::changePermissions($targetPath, craft()->config->get('defaultFilePermissions'));
$response = new AssetOperationResponseModel();
return $response->setSuccess()->setDataItem('filePath', $targetPath);
}
示例5: insertFileInFolder
/**
* @inheritDoc BaseAssetSourceType::insertFileInFolder()
*
* @param AssetFolderModel $folder
* @param $filePath
* @param $fileName
*
* @throws Exception
* @return AssetFileModel
*/
protected function insertFileInFolder(AssetFolderModel $folder, $filePath, $fileName)
{
$fileName = AssetsHelper::cleanAssetName($fileName);
$extension = IOHelper::getExtension($fileName);
if (!IOHelper::isExtensionAllowed($extension)) {
throw new Exception(Craft::t('This file type is not allowed'));
}
$uriPath = $this->_getPathPrefix() . $folder->path . $fileName;
$fileInfo = $this->_getObjectInfo($uriPath);
if ($fileInfo) {
$response = new AssetOperationResponseModel();
return $response->setPrompt($this->getUserPromptOptions($fileName))->setDataItem('fileName', $fileName);
}
clearstatcache();
// Upload file
try {
$this->_uploadFile($uriPath, $filePath);
} catch (\Exception $exception) {
throw new Exception(Craft::t('Could not copy file to target destination'));
}
$response = new AssetOperationResponseModel();
return $response->setSuccess()->setDataItem('filePath', $uriPath);
}
示例6: _insertFileInFolder
/**
* Insert a file from path in folder.
*
* @param AssetFolderModel $folder
* @param $filePath
* @param $fileName
* @return AssetOperationResponseModel
* @throws Exception
*/
protected function _insertFileInFolder(AssetFolderModel $folder, $filePath, $fileName)
{
$targetFolder = $this->_getSourceFileSystemPath() . $folder->fullPath;
// Make sure the folder exists.
if (!IOHelper::folderExists($targetFolder)) {
throw new Exception(Craft::t('The “File System Path” specified for this asset source does not appear to exist.'));
}
// Make sure the folder is writable
if (!IOHelper::isWritable($targetFolder)) {
throw new Exception(Craft::t('Craft is not able to write to the “File System Path” specified for this asset source.'));
}
$fileName = IOHelper::cleanFilename($fileName);
$targetPath = $targetFolder . $fileName;
$extension = IOHelper::getExtension($fileName);
if (!IOHelper::isExtensionAllowed($extension)) {
throw new Exception(Craft::t('This file type is not allowed'));
}
if (IOHelper::fileExists($targetPath)) {
$response = new AssetOperationResponseModel();
return $response->setPrompt($this->_getUserPromptOptions($fileName))->setDataItem('fileName', $fileName);
}
if (!IOHelper::copyFile($filePath, $targetPath)) {
throw new Exception(Craft::t('Could not copy file to target destination'));
}
IOHelper::changePermissions($targetPath, IOHelper::getWritableFilePermissions());
$response = new AssetOperationResponseModel();
return $response->setSuccess()->setDataItem('filePath', $targetPath);
}