mirror of
https://github.com/LBRYFoundation/lbry.com.git
synced 2025-08-23 17:47:26 +00:00
127 lines
3.2 KiB
PHP
127 lines
3.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Description of DownloadActions
|
|
*
|
|
* @author jeremy
|
|
*/
|
|
class DownloadActions extends Actions
|
|
{
|
|
const OS_ANDROID = 'android',
|
|
OS_IOS = 'ios',
|
|
OS_LINUX = 'linux',
|
|
OS_OSX = 'osx',
|
|
OS_WINDOWS = 'windows';
|
|
|
|
public static function getOses()
|
|
{
|
|
return [
|
|
static::OS_WINDOWS => ['/windows', 'Windows', 'icon-windows', '_windows'],
|
|
static::OS_OSX => ['/osx', 'OS X', 'icon-apple', '_osx'],
|
|
static::OS_LINUX => ['/linux', 'Linux', 'icon-linux', '_linux'],
|
|
static::OS_ANDROID => ['/android', 'Android', 'icon-android', '_android'],
|
|
static::OS_IOS => ['/ios', 'iOS', 'icon-mobile', '_ios']
|
|
];
|
|
}
|
|
|
|
public static function executeGet()
|
|
{
|
|
$osChoices = static::getOses();
|
|
$os = static::guessOs();
|
|
|
|
if ($os && isset($osChoices[$os]))
|
|
{
|
|
list($uri, $osTitle, $osIcon, $partial) = $osChoices[$os];
|
|
return ['download/get', [
|
|
'os' => $os,
|
|
'osTitle' => $osTitle,
|
|
'osIcon' => $osIcon,
|
|
'downloadHtml' => View::exists('download/' . $partial) ?
|
|
View::render('download/' . $partial) :
|
|
false
|
|
]];
|
|
}
|
|
|
|
return ['download/get-no-os', [
|
|
'isSubscribed' => in_array(Mailchimp::LIST_GENERAL_ID, Session::get(Session::KEY_MAILCHIMP_LIST_IDS, []))
|
|
]];
|
|
}
|
|
|
|
public static function prepareListPartial(array $vars)
|
|
{
|
|
return $vars + ['osChoices' => isset($vars['excludeOs']) ?
|
|
array_diff_key(static::getOses(), [$vars['excludeOs'] => null]) :
|
|
static::getOses()
|
|
];
|
|
}
|
|
|
|
protected static function guessOs()
|
|
{
|
|
//if exact OS is requested, use that
|
|
$uri = strtok($_SERVER['REQUEST_URI'], '?');
|
|
foreach(static::getOses() as $os => $osChoice)
|
|
{
|
|
if ($osChoice[0] == $uri)
|
|
{
|
|
return $os;
|
|
}
|
|
}
|
|
|
|
if (static::isForRobot())
|
|
{
|
|
return null;
|
|
}
|
|
|
|
//otherwise guess from UA
|
|
$ua = $_SERVER['HTTP_USER_AGENT'];
|
|
if (stripos($ua, 'OS X') !== false)
|
|
{
|
|
return strpos($ua, 'iPhone') !== false || stripos($ua, 'iPad') !== false ? static::OS_IOS : static::OS_OSX;
|
|
}
|
|
if (stripos($ua, 'Linux') !== false || strpos($ua, 'X11') !== false)
|
|
{
|
|
return strpos($ua, 'Android') !== false ? static::OS_ANDROID : static::OS_LINUX;
|
|
}
|
|
if (stripos($ua, 'Windows') !== false)
|
|
{
|
|
return static::OS_WINDOWS;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
// protected static function validateDownloadAccess()
|
|
// {
|
|
// $seshionKey = 'has-get-access';
|
|
// if (Session::get($seshionKey))
|
|
// {
|
|
// return true;
|
|
// }
|
|
//
|
|
// if ($_SERVER['REQUEST_METHOD'] === 'POST')
|
|
// {
|
|
// $accessCodes = include ROOT_DIR . '/data/secret/access_list.php';
|
|
// $today = date('Y-m-d H:i:s');
|
|
// foreach($accessCodes as $code => $date)
|
|
// {
|
|
// if ($_POST['invite'] == $code && $today <= $date)
|
|
// {
|
|
// Session::set($seshionKey, true);
|
|
// Controller::redirect('/get', 302);
|
|
// }
|
|
// }
|
|
//
|
|
// if ($_POST['invite'])
|
|
// {
|
|
// Session::set('invite_error', 'Please provide a valid invite code.');
|
|
// }
|
|
// else
|
|
// {
|
|
// Session::set('invite_error', 'Please provide an invite code.');
|
|
// }
|
|
//
|
|
// Controller::redirect('/get', 401);
|
|
// }
|
|
//
|
|
// return false;
|
|
// }
|
|
}
|