File helper

You can view the source on GitHub.

The helper is a simple wrapper that allows you to save to the /files/ directory.

$file = new file('item_name');

$file->file_save(123, '/path/to/source');

if ($file->file_exists(123)) {
    echo $file->file_url_get(123);
    echo $file->file_path_get(123);
}

Image support

To save multiple versions of an image, such as:

/files/item_name/original/123.jpg
/files/item_name/100x100/123.jpg
/files/item_name/500x500/123.jpg
/files/item_name/120xX/123.jpg

Create the relevant folders as above, then use the image_save() method:

$file = new file('item_name');
$file->image_save(123, '/path/to/source');

Then once saved you can:

$size = '100x100';

if ($file->image_exists(123, $size)) {

    echo $file->image_url_get(123, $size);
    echo $file->image_path_get(123, $size);
    echo $file->image_html_get(123, $size);

    $file->image_delete(123);

}

The 'original' image is there as a backup, allowing the regenerate-images gateway to re-create thumbnails... you should not use it on the website, as the uploaded file might not be an image (potential security issue), or may have an inappropriate size.

The different sizes take the form of:

100x300
    Always saved as 100px wide, 300px high, and is cropped.

100xX
    Always saved as 100px wide, height scales with aspect ratio.

100xX-200
    Always saved as 100px wide, height cropped to be between 0 and 200px.

100x0-200_000000
    Always saved as 100px wide, height set between 0 and 200px, with a black background.

See the resize method on the image helper for more details.


More advanced saving

To save the file with an extension, you can either use the file_ext config (next section), or do it inline:

$file->file_save(123, '/path/to/source', 'bin');

if ($file->file_exists(123, 'bin')) {
    echo $file->file_url_get(123, 'bin');
    echo $file->file_path_get(123, 'bin');
}

If you just have the file contents (e.g. not an uploaded file), then you can use:

$file->file_save_contents(123, 'File contents');

Or if the file should be an image (potential security issue), and you're not using the image support above, then you can use GD to ensure the saved file is an image:

$config['file.item_name.file_ext'] = 'jpg';

$file->file_save_image(123, '/path/to/source');

Configuration

Usually the configuration is set in the config.php file, for example:

$config['file.item_name.file_private'] = true;

Alternatively the file helper can be initialised with a config array, rather than the profile name:

$file = new file(array(
        'profile' => 'item_name',
        'file_private' => true,
    ));

The full list of config options include:

file_private
    Set to true if the file should exist in /private/files/

file_root
    Usually not set, defaults to /files/ or /private/files/ folders.

file_url
    Usually not set, defaults to /a/files/ for public files (not used for private files).

file_ext
    Usually not set, but can set a default extension for files (e.g. 'bin' or 'jpg').

file_folder_division
    For large sets of files, set to '1000' to use sub-folders, e.g. /files/8000/8192

file_missing_url
    If the file does not exist, file_url_get() will return this as a default.

Then when using the image functions (above), these additional options can be used:

image_type
    Saves all the images as 'jpg' (default), 'gif', or 'png'.

image_quality
    Instructs GD on the image quality - jpg default is 75, and 6 for png.

image_preserve_unsafe
    If no re-sizing is required from origional image, keep that file (see warning below).

image_url_prefix
    Adds a prefix (e.g. domain name) to the url, useful when using image_html_get()

image_placeholder_url
    If the file does not exist, image_url_get() will suffix this with the size and extension.

image_missing_url
    If the file does not exist, image_url_get() will return this as a default.

image_background
    Background colour (e.g. '000000') if images should not be cropped.

The image_preserve_unsafe is "unsafe" as file uploads cannot be trusted.