-
Hi,
I have installed the beta version of FV Flowplayer with HTML5. I’m also using the plugin User Access Manager to protect the “upload” directory. When a video stored within that directory is requested, the player won’t work on the iPhone/iPod touch. Otherwise, the player works like a charm.
Everytime a video is requested from within the “upload” directory, a script within UAM plugin checks that the user has access to that video and if so, “delivers” the content. So I figured there might be a problem with the way this content is “delivered”.
After a quick search on the net, I discovered this website http://mobiforge.com/developing/story/content-delivery-mobile-devices (see Appendix A) explaining what needs to be done when we want to deliver the video from a php script.
I have made the necessary changes, but it still doesn’t work… If someone can help, it would be great.
Here is an extract of the function from UAM plugin delivering the content of the file :
public function getFile($objectType, $objectUrl)
{
$object = $this->_getFileSettingsByType($objectType, $objectUrl);if ($object === null) {
return null;
}$file = null;
if(!is_user_logged_in()) {
$url_redir = home_url(‘/login/?redirect_to=’.urlencode(home_url(‘/wp-content/uploads/’).$objectUrl));
wp_redirect($url_redir);
exit;
}
else {if ($this->getAccessHandler()->checkObjectAccess($object->type, $object->id)) {
$file = $object->file;
} elseif ($object->isImage) {
$file = UAM_REALPATH.’gfx/noAccessPic.png’;
} else {
//wp_die(TXT_UAM_NO_RIGHTS);
$url_redir = home_url();
wp_redirect($url_redir);
exit;
}} // end test is_user_logged_in
//Deliver content
if (file_exists($file)) {
$fileName = basename($file);/*
* This only for compatibility
* mime_content_type has been deprecated as the PECL extension Fileinfo
* provides the same functionality (and more) in a much cleaner way.
*/
$ext = strtolower(array_pop(explode(‘.’, $fileName)));if (function_exists(‘finfo_open’)) {
$finfo = finfo_open(FILEINFO_MIME);
$fileMimeType = finfo_file($finfo, $file);
finfo_close($finfo);
} elseif (function_exists(‘mime_content_type’)) {
$fileMimeType = mime_content_type($file);
} elseif (array_key_exists($ext, $this->mimeTypes)) {
$fileMimeType = $this->mimeTypes[$ext];
} else {
$fileMimeType = ‘application/octet-stream’;
}// cnocno –>
if (!isset($_SERVER)) { // Desktop computer
// <– cnocno
header(‘Content-Description: File Transfer’);
header(‘Content-Type: ‘.$fileMimeType);if (!$object->isImage) {
$baseName = str_replace(‘ ‘, ‘_’, basename($file));header(‘Content-Disposition: attachment; filename=”‘.$baseName.'”‘);
}header(‘Content-Transfer-Encoding: binary’);
header(‘Content-Length: ‘.filesize($file));$uamOptions = $this->getAdminOptions();
if ($uamOptions == ‘fopen’
&& !$object->isImage
) {
$fp = fopen($file, ‘r’);//TODO find better solution (prevent ‘n’ / ‘0A’)
ob_clean();
flush();while (!feof($fp)) {
if (!ini_get(‘safe_mode’)) {
set_time_limit(30);
}
$buffer = fread($fp, 1024);
echo $buffer;
}exit;
} else {
ob_clean();
flush();
readfile($file);
exit;
}// cnocno –>
}
else { // do it for any device that supports byte-ranges not only iPhone
header(‘Content-Type: ‘.$fileMimeType);
rangeDownload($file);}
// <– cnocno
} else {
wp_die(TXT_UAM_FILE_NOT_FOUND_ERROR);
}
}where the code between “cnocno –>” and “<– cnocno” are changes I made myself and the function “rangeDownload” is taken from the link above.
I know I’m asking to much, but if someone already encountered this problem and managed to solve it, I’d be very interested to know how! :)
Thanks for any help.
C.