/** * Query SQL for all accessible category data * * @return Nothing */ function downloadFile() { global $mainframe, $limitstart; $c = hwd_vs_Config::get_instance(); $db = & JFactory::getDBO(); $my = & JFactory::getUser(); $acl= & JFactory::getACL(); $usersConfig = &JComponentHelper::getParams( 'com_users' ); //$currentSession = JSession::getInstance('none',array()); //$currentSession->destroy(); $evp = JRequest::getCmd( 'evp', 0 ); $file = JRequest::getCmd( 'file', 0 ); $deliver = JRequest::getCmd( 'deliver', 0 ); $media = JRequest::getCmd( 'media', 0 ); $fix = JRequest::getCmd( 'fix', 0 ); $streamer = JRequest::getCmd( 'streamer', 'off' ); $quality = JRequest::getCmd( 'quality', 'hd' ); $pushDownload = false; $showError = false; // get video details $db->SetQuery( 'SELECT * FROM #__hwdvidsvideos WHERE id = '.(int)$file ); $db->Query(); $row = $db->loadObject(); $db->SetQuery( 'SELECT count(*) FROM #__hwdvidsantileech WHERE expiration = "'.$evp.'"' ); $result = $db->loadResult(); if ($result > 0 || $c->use_protection == 0 || $row->allow_embedding == "1") { $location = hwd_vs_tools::generateVideoLocations( $row, $quality ); $location['ext'] = "flv"; $db->SetQuery( 'SELECT `count` FROM #__hwdvidsantileech WHERE expiration = "'.$evp.'"' ); $count = $db->loadResult(); if ($row->allow_embedding == 1 && $c->showvebc == 1) { $pushDownload = true; } else if ($count < $c->protection_level) { $newCount = $count+1; $db->SetQuery( "UPDATE #__hwdvidsantileech SET `count` = $newCount WHERE expiration = \"".$evp."\"" ); $db->Query(); if ($deliver !== "player") { if (!hwd_vs_access::allowAccess( $c->gtree_dnld, $c->gtree_dnld_child, hwd_vs_access::userGID( $my->id ))) { $pushDownload = false; } else { $pushDownload = true; } } else if ($deliver == "player") { $pushDownload = true; } } else { $showError = true; } if ($deliver == "downloadoriginal" || $deliver == "original") { if ($handle = opendir(JPATH_SITE.DS.'hwdvideos'.DS.'uploads'.DS.'originals')) { $url = ''; while (false !== ($file = readdir($handle))) { list($filename_noext, $filename_ext) = @split('\.', basename($file)); if ($filename_noext == $row->video_id) { $location['url'] = JURI::root().'hwdvideos/uploads/originals/'.$file; $location['path'] = JPATH_SITE.DS.'hwdvideos'.DS.'uploads'.DS.'originals'.DS.$file; $location['ext'] = $filename_ext; } } closedir($handle); } } else if ($deliver == "flv") { if (file_exists(JPATH_SITE.DS."hwdvideos".DS."uploads".DS.$row->video_id.".flv")) { $location['url'] = JURI::root()."hwdvideos/uploads/".$row->video_id.".flv"; $location['path'] = JPATH_SITE.DS."hwdvideos".DS."uploads".DS.$row->video_id.".flv"; $location['ext'] = "flv"; } } else if ($deliver == "h264") { if (file_exists(JPATH_SITE.DS."hwdvideos".DS."uploads".DS.$row->video_id.".mp4")) { $location['url'] = JURI::root()."hwdvideos/uploads/".$row->video_id.".mp4"; $location['path'] = JPATH_SITE.DS."hwdvideos".DS."uploads".DS.$row->video_id.".mp4"; $location['ext'] = "mp4"; } } else if ($deliver == "ipod340") { if (file_exists(JPATH_SITE.DS."hwdvideos".DS."uploads".DS.$row->video_id.".ipod320.mp4")) { $location['url'] = JURI::root()."hwdvideos/uploads/".$row->video_id.".ipod320.mp4"; $location['path'] = JPATH_SITE.DS."hwdvideos".DS."uploads".DS.$row->video_id.".ipod320.mp4"; $location['ext'] = "ipod320.mp4"; } } else if ($deliver == "ipod640") { if (file_exists(JPATH_SITE.DS."hwdvideos".DS."uploads".DS.$row->video_id.".ipod640.mp4")) { $location['url'] = JURI::root()."hwdvideos/uploads/".$row->video_id.".ipod640.mp4"; $location['path'] = JPATH_SITE.DS."hwdvideos".DS."uploads".DS.$row->video_id.".ipod320.mp4"; $location['ext'] = "ipod640.mp4"; } } if ($pushDownload) { if (headers_sent($filename, $linenum) || $row->video_type == "seyret" || $row->video_type == "remote") { $mainframe->redirect( $location['url'] ); } else if ($deliver == "player") { header('Location: '.$location['url']); exit; } else { // Transfer file in chunks to preserve memory on the server $fn = basename($location['path']); $title = str_replace(" ", "-", $row->title); $title = preg_replace("/[^a-zA-Z0-9s-]/", "", $title); if (!empty($title)) { $ftitle = $title.".".$location['ext']; } else { $ftitle = $fn; } header('Content-Type: application/octet-stream'); header("Content-Disposition: attachment; filename=\"$ftitle\""); header('Content-Length: '.filesize($location['path'])); @hwd_vs_tools::readfile_chunked($location['path'], true); exit; } } } if ($count > $c->protection_level) { $db->SetQuery("DELETE FROM #__hwdvidsantileech WHERE expiration = \"$evp\""); $db->Query(); } $showError = true; $hwdvsItemid = hwd_vs_tools::generateValidItemid(); $msg = "You do not have access to this file using the requested method."; $mainframe->enqueueMessage($msg); $mainframe->redirect( JURI::root()."index.php?option=com_hwdvideoshare&Itemid=".$hwdvsItemid."&task=viewvideo&video_id=".$row->id ); }