rosehill/classes/Map.php

57 lines
1.7 KiB
PHP
Raw Normal View History

<?php
/**
* @copyright 2010 City of Bloomington, Indiana
* @license http://www.gnu.org/licenses/agpl.txt GNU/AGPL, see LICENSE.txt
* @author Cliff Ingham <inghamn@bloomington.in.gov>
*/
class Map
{
public static $extensions = array(
'jpg'=>array('mime_type'=>'image/jpeg','media_type'=>'image'),
'gif'=>array('mime_type'=>'image/gif','media_type'=>'image'),
'png'=>array('mime_type'=>'image/png','media_type'=>'image'),
'tiff'=>array('mime_type'=>'image/tiff','media_type'=>'image')
);
/**
* @param string $directory Where to store the file
* @param array|string $file Either an entry from $_FILES or a path to a file
* @param string $newName The filename to use
*/
public static function saveFile($directory,$file,$newName)
{
// Handle passing in either a $_FILES array or just a path to a file
$tempFile = is_array($file) ? $file['tmp_name'] : $file;
if (!$tempFile) {
throw new Exception('media/uploadFailed');
}
# Find out the mime type for this file
$filename = is_array($file) ? basename($file['name']) : basename($file);
preg_match("/[^.]+$/",$filename,$matches);
$extension = strtolower($matches[0]);
// Make sure it's a known file type
if (!array_key_exists(strtolower($extension),self::$extensions)) {
throw new Exception('unknownFileType');
}
// Clean out any previous version of the file
foreach(glob("$directory/$newName.*") as $file) {
unlink($file);
}
// Move the file where it's supposed to go
if (!is_dir($directory)) {
mkdir($directory,0777,true);
}
$newFile = "$directory/$newName.$extension";
rename($tempFile,$newFile);
chmod($newFile,0666);
if (!is_file($newFile)) {
throw new Exception('media/uploadFailed');
}
}
}