Files
Introduction
Files are stream entries representing a physical file somewhere. Files must be unique per folder just as the physical file would have to be.
File Fields
Below is a list of fields
in the files
stream. Fields are accessed as attributes:
$file->name;
Same goes for decorated instances in Twig:
{{ file.name }}
Fields
Key | Type | Description |
---|---|---|
name |
text |
The name of the file. |
disk |
relationship |
The disk the file is on. |
folder |
relationship |
The folder the file is in. |
extension |
text |
The file extension only. |
size |
integer |
The size of the file in bytes. |
mime_type |
text |
The MIME type of the file. |
entry |
polymorphic |
The related entry with custom attributes. |
keywords |
tags |
An array of organizational keywords. |
height |
integer |
The height of the image file in pixels. |
width |
integer |
The width of the image file in pixels. |
Custom File Fields
Custom file fields associated with folders
through the control panel
can be accessed via the related entry
. The entry
is part of the type pattern
.
$file->entry->custom_field;
When working with custom fields it is a good idea to verify the existence of the related entry since it only exists after editing the file through a form:
if ($entry = $file->getEntry()) {
$entry->custom_field;
}
The file presenter allows direct access in Twig:
{{ file.custom_field }}
File Interface
This section will go over the \Anomaly\FilesModule\File\Contract\FileInterface
class.
FileInterface::type()
The type
method returns the file type based on the addon's configured MIMEs or null
if not defined.
Returns: string
or null
Example
if ($file->type() == 'audio') {
echo "I love this song!";
}
Twig
{% if file.type() == 'audio' %}
I love this song!
{% endif %]
FileInterface::path()
The path
method returns the internal
file path like folder/filename.ext
.
Returns: string
Example
$file->path();
Twig
{{ file.path() }}
FileInterface::location()
The location
method returns the internal
file path and disk like disk://folder/filename.ext
.
Returns: string
Example
$file->location();
Twig
{{ file.location() }}
Making an Image instance
// You can return an image instance with the file path {{ img("disk://folder/filename.ext").fit(100, 100)|raw }}
// Remember you can just use the file too {{ img(file).fit(100, 100)|raw }}
// And lastly the make / image method {{ file.image.fit(100, 100)|raw }} {{ file.make.fit(100, 100)|raw }}
FileInterface::image()
The image
method returns an image of the \Anomaly\Streams\Platform\Image\Image
class with the file as the source.
For more information on using the image class check out the Streams Platform documentation.
Returns: \Anomaly\Streams\Platform\Image\Image
Example
$file->image()->fit(100, 100)->output(); // the image tag
Twig
{{ file.image().fit(100, 100)|raw }} // the image tag
FileInterface::make()
The make
method is an alias for the image
method above. This method reduces confusion when your object or file relation field is called image
.
Returns: \Anomaly\Streams\Platform\Image\Image
Example
$file->make()->fit(100, 100)->output(); // the image tag
Twig
{{ file.make().fit(100, 100)|raw }} // the image tag
FileInterface::resource()
The resource
method returns the file resource object.
Returns: \League\Flysystem\File
Example
$resource = $file->resource();
Twig
{% set resource = file.resource() %}
File Presenter
This section will go over the \Anomaly\FilesModule\File\FilePresenter
class.
FilePresenter::dimensions()
The dimensions
method returns the width
x height
string.
Returns: string
Example
$decorated->dimensions();
Twig
{{ decorated.dimensions() }}
FilePresenter::size()
The size
method returns the file size in human readable format.
Returns: string
Arguments
Key | Required | Type | Default | Description |
---|---|---|---|---|
$unit |
false |
string |
Varies on size of file. |
The unit of measurement to return. Valid options are |
$decimals |
false |
integer |
2 |
The decimal precision to show. |
Example
$decorated->size(); // 2.5 MB
Twig
{{ decorated.size() }} // 2.5 MB
FilePresenter::preview()
The preview
method returns an image thumbnail with preserved proportions.
If the file is not an image a file-type preview icon will be returned.
Returns: string
Arguments
Key | Required | Type | Default | Description |
---|---|---|---|---|
$width |
false |
integer |
64 |
The maximum width constraint. |
$height |
false |
integer |
64 |
The maximum height constraint. |
Example
$decorated->preview(100, 100);
Twig
{{ decorated.preview(100, 100)|raw }}
FilePresenter::thumbnail()
The thumbnail
method returns an image thumbnail with cropped proportions.
If the file is not an image a file-type preview icon will be returned.
Returns: string
Arguments
Key | Required | Type | Default | Description |
---|---|---|---|---|
$width |
false |
integer |
64 |
The thumbnail width. |
$height |
false |
integer |
64 |
The thumbnail height. |
Example
$decorated->thumbnail(100, 100);
Twig
{{ decorated.thumbnail(100, 100)|raw }}
FilePresenter::viewPath()
The viewPath
method returns the public path to view the file.
Returns: string
Example
$url->to($decorated->viewPath());
Twig
{{ url_to(decorated.viewPath()) }}
FileInterface::streamPath()
The streamPath
method returns the public path to stream the file.
Returns: string
Example
$url->to($decorated->streamPath());
Twig
{{ url_to(decorated.streamPath()) }}
FilePresenter::downloadPath()
The downloadPath
method returns the public path to download the file.
Returns: string
Example
$url->to($decorated->downloadPath());
Twig
{{ url_to(decorated.downloadPath()) }}
FilePresenter::__get()
The __get
magic method first checks for a custom entry field before native behavior.
Returns: mixed
Arguments
Key | Required | Type | Default | Description |
---|---|---|---|---|
$name |
true |
string |
none |
The name of the attribute to access. |
Example
$decorated->my_custom_field;
Twig
{{ decorated.my_custom_field }}