/** * Validate the file mime-type against the configuration settings * * @param array $allowedMimes An array of allowed mime-types or wildcard (*) * @access private */ function validateFileMime(&$model, $fieldData, $fieldName, $allowedMimes = array()) { if (empty($fieldData[$fieldName]['tmp_name'])) { return true; } $availableMimes = assetMimes(); foreach (!empty($allowedMimes) ? $allowedMimes : array() as $type) { if ($type == '*') { return true; } # check fileinfo first $fileinfo = assetMimeType($fieldData[$fieldName]['tmp_name']); if (!$fileinfo && in_array($fileinfo, $availableMimes[$type])) { return true; } # check browser provided mime-type second if (in_array($fieldData[$fieldName]['type'], $availableMimes[$type])) { return true; } } return false; }
/** * test mimes * * @return void */ function testAssetMimes() { $result = assetMimes(); $this->assertTrue(is_array($result)); $result = assetMimes('audio'); $this->assertTrue(in_array('audio/mpeg', $result)); $result = assetMimes('video'); $this->assertTrue(in_array('video/x-flv', $result)); }