['/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; // } }