protected static function InitializeForCli() { // We should only run through this logic if we are specifically running // a CLI script through the Qcodo CLI Runner Wrapper (e.g. "qcodo" or "qcodo.bat") if (!array_key_exists('QCODO_CLI_RUNNER', $_SERVER) || !$_SERVER['QCODO_CLI_RUNNER']) { return; } // Initialize autoLoad functionality for Cli specific files spl_autoload_register(array('QCli', 'AutoloadCli')); // Did we ask for a script to be run? if (!array_key_exists(1, $_SERVER['argv']) || substr($_SERVER['argv'][1], 0, 1) == '-') { $strDefaultPath = __DEVTOOLS_CLI__; $strDefaultPath = str_replace('/html/../', '/', $strDefaultPath); $strDefaultPath = str_replace('/docroot/../', '/', $strDefaultPath); $strDefaultPath = str_replace('/wwwroot/../', '/', $strDefaultPath); $strDefaultPath = str_replace('/www/../', '/', $strDefaultPath); print "Qcodo CLI Runner v" . QCODO_VERSION . "\r\n"; print "usage: qcodo SCRIPT [SCRIPT-SPECIFIC ARGS]\r\n"; print "\r\n"; print "required parameters:\r\n"; print " SCRIPT the .cli.php script name inside the cli/scripts directory\r\n"; print " that you wish to run\r\n"; print "\r\n"; print "the following SCRIPTs are included with the Qcodo distribution:\r\n"; print " codegen Code generates your ORM-layer\r\n"; print " qcodo-updater Updates your installed Qcodo framework to a new version\r\n"; print " qpm-download Download and installs an external QPM package\r\n"; print " qpm-upload Packages custom code you wrote into a QPM package\r\n"; print " clean Cleans code generated files (only those overwritten by codegen)\r\n"; print " compilejs Minifies core qcodo javascript files, run after any changes to those files\r\n"; print "\r\n"; print "Other custom scripts can be created as well.\r\n"; print "See \"" . $strDefaultPath . "/scripts/_README.txt\" for more info"; print "\r\n"; exit(1); } // Find Script if (strpos($_SERVER['argv'][1], '.cli.php') === false) { $strScriptFilename = $_SERVER['argv'][1] . '.cli.php'; } else { $strScriptFilename = $_SERVER['argv'][1]; } if (file_exists($strPath = __DEVTOOLS_CLI__ . '/scripts/' . $strScriptFilename)) { QApplication::$ScriptFilename = $strPath; QApplication::$ScriptName = $strScriptFilename; } else { if (file_exists($strPath = __DEVTOOLS_CLI__ . '/scripts/_core/' . $strScriptFilename)) { QApplication::$ScriptFilename = $strPath; QApplication::$ScriptName = $strScriptFilename; } else { print "error: the script '" . $_SERVER['argv'][1] . "' does not exist.\r\n"; exit(1); } } }
/** * This should be the first call to initialize all the static variables * The application object also has static methods that are miscellaneous web * development utilities, etc. * * @return void */ public static function Initialize() { $strCacheProviderClass = 'QCacheProviderNoCache'; if (defined('CACHE_PROVIDER_CLASS')) { $strCacheProviderClass = CACHE_PROVIDER_CLASS; } if ($strCacheProviderClass) { if (defined('CACHE_PROVIDER_OPTIONS')) { QApplicationBase::$objCacheProvider = new $strCacheProviderClass(unserialize(CACHE_PROVIDER_OPTIONS)); } else { QApplicationBase::$objCacheProvider = new $strCacheProviderClass(); } } // Are we running as CLI? if (PHP_SAPI == 'cli') { QApplication::$CliMode = true; } else { QApplication::$CliMode = false; } // Setup Server Address if (array_key_exists('LOCAL_ADDR', $_SERVER)) { QApplication::$ServerAddress = $_SERVER['LOCAL_ADDR']; } else { if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { QApplication::$ServerAddress = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { if (array_key_exists('SERVER_ADDR', $_SERVER)) { QApplication::$ServerAddress = $_SERVER['SERVER_ADDR']; } } } // Setup ScriptFilename and ScriptName QApplication::$ScriptFilename = $_SERVER['SCRIPT_FILENAME']; QApplication::$ScriptName = $_SERVER['SCRIPT_NAME']; // Ensure both are set, or we'll have to abort if (!QApplication::$ScriptFilename || !QApplication::$ScriptName) { throw new Exception('Error on QApplication::Initialize() - ScriptFilename or ScriptName was not set'); } // Setup PathInfo and QueryString (if applicable) QApplication::$PathInfo = null; if (array_key_exists('PATH_INFO', $_SERVER)) { QApplication::$PathInfo = urlencode(trim($_SERVER['PATH_INFO'])); QApplication::$PathInfo = str_ireplace('%2f', '/', QApplication::$PathInfo); } QApplication::$QueryString = array_key_exists('QUERY_STRING', $_SERVER) ? $_SERVER['QUERY_STRING'] : null; // Setup RequestUri if (defined('__URL_REWRITE__')) { switch (strtolower(__URL_REWRITE__)) { case 'apache': QApplication::$RequestUri = $_SERVER['REQUEST_URI']; break; case 'none': QApplication::$RequestUri = sprintf('%s%s%s', QApplication::$ScriptName, QApplication::$PathInfo, QApplication::$QueryString ? sprintf('?%s', QApplication::$QueryString) : null); break; default: throw new Exception('Invalid URL Rewrite type: ' . __URL_REWRITE__); } } else { QApplication::$RequestUri = sprintf('%s%s%s', QApplication::$ScriptName, QApplication::$PathInfo, QApplication::$QueryString ? sprintf('?%s', QApplication::$QueryString) : null); } // Setup DocumentRoot QApplication::$DocumentRoot = trim(__DOCROOT__); // Setup Browser Type if (array_key_exists('HTTP_USER_AGENT', $_SERVER)) { $strUserAgent = trim(strtolower($_SERVER['HTTP_USER_AGENT'])); QApplication::$BrowserType = 0; // INTERNET EXPLORER (supporting versions 6.0, 7.0 and eventually 8.0) if (strpos($strUserAgent, 'msie') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::InternetExplorer; if (strpos($strUserAgent, 'msie 6.0') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::InternetExplorer_6_0; } else { if (strpos($strUserAgent, 'msie 7.0') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::InternetExplorer_7_0; } else { if (strpos($strUserAgent, 'msie 8.0') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::InternetExplorer_8_0; } else { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; } } } // FIREFOX (supporting versions 1.0, 1.5, 2.0 and eventually 3.0) } else { if (strpos($strUserAgent, 'firefox') !== false || strpos($strUserAgent, 'iceweasel') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Firefox; $strUserAgent = str_replace('iceweasel/', 'firefox/', $strUserAgent); if (strpos($strUserAgent, 'firefox/1.0') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Firefox_1_0; } else { if (strpos($strUserAgent, 'firefox/1.5') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Firefox_1_5; } else { if (strpos($strUserAgent, 'firefox/2.0') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Firefox_2_0; } else { if (strpos($strUserAgent, 'firefox/3.0') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Firefox_3_0; } else { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; } } } } // SAFARI (supporting version 2.0 and eventually 3.0 and 4.0) } else { if (strpos($strUserAgent, 'safari') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Safari; if (strpos($strUserAgent, 'version/4') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Safari_4_0; } else { if (strpos($strUserAgent, 'version/3') !== false || strpos($strUserAgent, 'safari/52') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Safari_3_0; } else { if (strpos($strUserAgent, 'version/2') !== false || strpos($strUserAgent, 'safari/41') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Safari_2_0; } else { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; } } } // KONQUEROR (eventually supporting versions 3 and 4) } else { if (strpos($strUserAgent, 'konqueror') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Konqueror; if (strpos($strUserAgent, 'konqueror/3') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Konqueror_3; } else { if (strpos($strUserAgent, 'konqueror/4') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Konqueror_4; } else { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; } } } } } } // OPERA (eventually supporting versions 7, 8 and 9) if (strpos($strUserAgent, 'opera') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Opera; if (strpos($strUserAgent, 'opera/7') !== false || strpos($strUserAgent, 'opera 7') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Opera_7; } else { if (strpos($strUserAgent, 'opera/8') !== false || strpos($strUserAgent, 'opera 8') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Opera_8; } else { if (strpos($strUserAgent, 'opera/9') !== false || strpos($strUserAgent, 'opera 9') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Opera_9; } else { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; } } } } // CHROME (eventually supporting versions 0 and 1) if (strpos($strUserAgent, 'chrome') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Chrome; if (strpos($strUserAgent, 'chrome/0') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Chrome_0; } else { if (strpos($strUserAgent, 'chrome/1') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Chrome_1; } else { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; } } } // COMPLETELY UNSUPPORTED if (QApplication::$BrowserType == 0) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; } // OS (supporting Windows, Linux and Mac) if (strpos($strUserAgent, 'windows') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Windows; } else { if (strpos($strUserAgent, 'linux') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Linux; } else { if (strpos($strUserAgent, 'macintosh') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Macintosh; } } } } // Preload Class Files foreach (QApplication::$PreloadedClassFile as $strClassFile) { require $strClassFile; } }
protected static function InitializeForCli() { // We should only run through this logic if we are specifically running // a CLI script through the Qcodo CLI Runner Wrapper (e.g. "qcodo" or "qcodo.bat") if (!array_key_exists('QCODO_CLI_RUNNER', $_SERVER) || !$_SERVER['QCODO_CLI_RUNNER']) { return; } // Did we ask for a script to be run? if (!array_key_exists(1, $_SERVER['argv']) || substr($_SERVER['argv'][1], 0, 1) == '-') { print "Qcodo CLI Runner v" . QCODO_VERSION . "\r\n"; print "usage: qcodo SCRIPT [SCRIPT-SPECIFIC ARGS]\r\n"; print "\r\n"; print "required parameters:\r\n"; print " SCRIPT the .cli.php script name inside the cli/scripts directory\r\n"; print " that you wish to run\r\n"; print "\r\n"; print "the following SCRIPTs are included with the Qcodo distribution:\r\n"; print " codegen Code generates your ORM-layer\r\n"; print " qcodo-updater Updates your installed Qcodo framework to a new version\r\n"; print " qpm-download Download and installs an external QPM package\r\n"; print " qpm-upload Packages custom code you wrote into a QPM package\r\n"; print " phpunit Run bundled PHPUnit\r\n"; print "\r\n"; print "Other custom scripts can be created as well.\r\n"; print "See \"" . realpath(__DEVTOOLS_CLI__) . "/scripts/_README.txt\" for more info"; print "\r\n"; exit(1); } // Find Script if (strpos($_SERVER['argv'][1], '.cli.php') === false) { $strScriptFilename = $_SERVER['argv'][1] . '.cli.php'; } else { $strScriptFilename = $_SERVER['argv'][1]; } if (file_exists($strPath = __DEVTOOLS_CLI__ . '/scripts/' . $strScriptFilename)) { QApplication::$ScriptFilename = $strPath; QApplication::$ScriptName = $strScriptFilename; } else { if (file_exists($strPath = __DEVTOOLS_CLI__ . '/scripts/_core/' . $strScriptFilename)) { QApplication::$ScriptFilename = $strPath; QApplication::$ScriptName = $strScriptFilename; } else { print "error: the script '" . $_SERVER['argv'][1] . "' does not exist.\r\n"; exit(1); } } }
/** * Called by QApplication::Initialize() to initialize the various * QApplication settings on ScriptName, DocumentRoot, etc. * @return void */ protected static function InitializeScriptInfo() { // Setup ScriptFilename and ScriptName QApplication::$ScriptFilename = $_SERVER['SCRIPT_FILENAME']; QApplication::$ScriptName = $_SERVER['SCRIPT_NAME']; // Ensure both are set, or we'll have to abort if (!QApplication::$ScriptFilename) { throw new Exception('Error on QApplication::Initialize() - ScriptFilename or ScriptName was not set'); } // Setup PathInfo and QueryString (if applicable) QApplication::$PathInfo = array_key_exists('PATH_INFO', $_SERVER) ? trim($_SERVER['PATH_INFO']) : null; QApplication::$QueryString = array_key_exists('QUERY_STRING', $_SERVER) ? $_SERVER['QUERY_STRING'] : null; // Setup DocumentRoot QApplication::$DocumentRoot = trim(__DOCROOT__); }
/** * This should be the first call to initialize all the static variables * The application object also has static methods that are miscellaneous web * development utilities, etc. * * @throws Exception * @return void */ public static function Initialize() { self::$EncodingType = defined('__QAPPLICATION_ENCODING_TYPE__') ? __QAPPLICATION_ENCODING_TYPE__ : self::$EncodingType; // Are we running as CLI? if (PHP_SAPI == 'cli') { QApplication::$CliMode = true; } else { QApplication::$CliMode = false; } // Setup Server Address if (array_key_exists('LOCAL_ADDR', $_SERVER)) { QApplication::$ServerAddress = $_SERVER['LOCAL_ADDR']; } else { if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { QApplication::$ServerAddress = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { if (array_key_exists('SERVER_ADDR', $_SERVER)) { QApplication::$ServerAddress = $_SERVER['SERVER_ADDR']; } } } // Setup ScriptFilename and ScriptName QApplication::$ScriptFilename = $_SERVER['SCRIPT_FILENAME']; QApplication::$ScriptName = $_SERVER['SCRIPT_NAME']; // Ensure both are set, or we'll have to abort if (!QApplication::$ScriptFilename || !QApplication::$ScriptName) { throw new Exception('Error on QApplication::Initialize() - ScriptFilename or ScriptName was not set'); } // Setup PathInfo and QueryString (if applicable) QApplication::$PathInfo = null; if (array_key_exists('PATH_INFO', $_SERVER)) { QApplication::$PathInfo = urlencode(trim($_SERVER['PATH_INFO'])); QApplication::$PathInfo = str_ireplace('%2f', '/', QApplication::$PathInfo); } QApplication::$QueryString = array_key_exists('QUERY_STRING', $_SERVER) ? $_SERVER['QUERY_STRING'] : null; // Setup RequestUri if (defined('__URL_REWRITE__')) { switch (strtolower(__URL_REWRITE__)) { case 'apache': QApplication::$RequestUri = $_SERVER['REQUEST_URI']; break; case 'none': QApplication::$RequestUri = sprintf('%s%s%s', QApplication::$ScriptName, QApplication::$PathInfo, QApplication::$QueryString ? sprintf('?%s', QApplication::$QueryString) : null); break; default: throw new Exception('Invalid URL Rewrite type: ' . __URL_REWRITE__); } } else { QApplication::$RequestUri = sprintf('%s%s%s', QApplication::$ScriptName, QApplication::$PathInfo, QApplication::$QueryString ? sprintf('?%s', QApplication::$QueryString) : null); } // Setup DocumentRoot QApplication::$DocumentRoot = trim(__DOCROOT__); // Setup Browser Type if (array_key_exists('HTTP_USER_AGENT', $_SERVER)) { $strUserAgent = trim(strtolower($_SERVER['HTTP_USER_AGENT'])); QApplication::$BrowserType = 0; // INTERNET EXPLORER (versions 6 through 10) if (strpos($strUserAgent, 'msie') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::InternetExplorer; // just major version number. Will not see IE 10.6. $matches = array(); preg_match('#msie\\s(.\\d)#', $strUserAgent, $matches); if ($matches) { QApplication::$BrowserVersion = (int) $matches[1]; } } else { if (strpos($strUserAgent, 'trident') !== false) { // IE 11 significantly changes the user agent, and no longer includes 'MSIE' QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::InternetExplorer; $matches = array(); preg_match('/rv:(.+)\\)/', $strUserAgent, $matches); if ($matches) { QApplication::$BrowserVersion = (double) $matches[1]; } // FIREFOX } else { if (strpos($strUserAgent, 'firefox') !== false || strpos($strUserAgent, 'iceweasel') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Firefox; $strUserAgent = str_replace('iceweasel/', 'firefox/', $strUserAgent); $matches = array(); preg_match('#firefox/(.+)#', $strUserAgent, $matches); if ($matches) { QApplication::$BrowserVersion = (double) $matches[1]; } } elseif (strpos($strUserAgent, 'chrome') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Chrome; // find major version number only $matches = array(); preg_match('#chrome/(\\d+)#', $strUserAgent, $matches); if ($matches) { QApplication::$BrowserVersion = (int) $matches[1]; } } elseif (strpos($strUserAgent, 'safari') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Safari; $matches = array(); preg_match('#version/(.+)\\s#', $strUserAgent, $matches); if ($matches) { QApplication::$BrowserVersion = (double) $matches[1]; } } elseif (strpos($strUserAgent, 'konqueror') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Konqueror; // only looking at major version number on this one $matches = array(); preg_match('#konqueror/(\\d+)#', $strUserAgent, $matches); if ($matches) { QApplication::$BrowserVersion = (int) $matches[1]; } } elseif (strpos($strUserAgent, 'opera') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Opera; // two different patterns; $matches = array(); preg_match('#version/(\\d+)#', $strUserAgent, $matches); if ($matches) { QApplication::$BrowserVersion = (int) $matches[1]; } else { preg_match('#opera\\s(.+)#', $strUserAgent, $matches); if ($matches) { QApplication::$BrowserVersion = (double) $matches[1]; } } } } } // Unknown if (QApplication::$BrowserType == 0) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; } // OS (supporting Windows, Linux and Mac) if (strpos($strUserAgent, 'windows') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Windows; } elseif (strpos($strUserAgent, 'linux') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Linux; } elseif (strpos($strUserAgent, 'macintosh') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Macintosh; } // Mobile version of one of the above browsers, or some other unknown browser if (strpos($strUserAgent, 'mobi') !== false) { // opera is just 'mobi', everyone else uses 'mobile' QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Mobile; } } // Preload Class Files foreach (QApplication::$PreloadedClassFile as $strClassFile) { require $strClassFile; } // Initialize any classes that might call into the autoloader $strCacheProviderClass = 'QCacheProviderNoCache'; if (defined('CACHE_PROVIDER_CLASS')) { $strCacheProviderClass = CACHE_PROVIDER_CLASS; } if ($strCacheProviderClass) { if (defined('CACHE_PROVIDER_OPTIONS')) { QApplicationBase::$objCacheProvider = new $strCacheProviderClass(unserialize(CACHE_PROVIDER_OPTIONS)); } else { QApplicationBase::$objCacheProvider = new $strCacheProviderClass(); } } if (defined('__MINIMIZE__') && __MINIMIZE__) { QApplicationBase::$Minimize = true; } }
/** * This should be the first call to initialize all the static variables * The application object also has static methods that are miscellaneous web * development utilities, etc. * * @return void */ public static function Initialize() { // Are we running as CLI? if (array_key_exists('SERVER_PROTOCOL', $_SERVER)) { QApplication::$CliMode = false; } else { QApplication::$CliMode = true; } // Setup Server Address if (array_key_exists('LOCAL_ADDR', $_SERVER)) { QApplication::$ServerAddress = $_SERVER['LOCAL_ADDR']; } else { if (array_key_exists('SERVER_ADDR', $_SERVER)) { QApplication::$ServerAddress = $_SERVER['SERVER_ADDR']; } } // Setup ScriptFilename and ScriptName QApplication::$ScriptFilename = $_SERVER['SCRIPT_FILENAME']; QApplication::$ScriptName = $_SERVER['SCRIPT_NAME']; // Ensure both are set, or we'll have to abort if (!QApplication::$ScriptFilename || !QApplication::$ScriptName) { throw new Exception('Error on QApplication::Initialize() - ScriptFilename or ScriptName was not set'); } // Setup PathInfo and QueryString (if applicable) QApplication::$PathInfo = array_key_exists('PATH_INFO', $_SERVER) ? trim($_SERVER['PATH_INFO']) : null; QApplication::$QueryString = array_key_exists('QUERY_STRING', $_SERVER) ? $_SERVER['QUERY_STRING'] : null; // Setup RequestUri QApplication::$RequestUri = sprintf('%s%s%s', QApplication::$ScriptName, QApplication::$PathInfo, QApplication::$QueryString ? sprintf('?%s', QApplication::$QueryString) : null); // Setup DocumentRoot QApplication::$DocumentRoot = trim(__DOCROOT__); // Setup Browser Type if (array_key_exists('HTTP_USER_AGENT', $_SERVER)) { $strUserAgent = trim(strtolower($_SERVER['HTTP_USER_AGENT'])); if (strpos($strUserAgent, 'msie') !== false) { QApplication::$BrowserType = QBrowserType::InternetExplorer; } else { if (strpos($strUserAgent, 'firefox') !== false) { QApplication::$BrowserType = QBrowserType::Firefox; } else { if (strpos($strUserAgent, 'safari') !== false) { QApplication::$BrowserType = QBrowserType::Safari; } else { QApplication::$BrowserType = QBrowserType::Other; } } } if (strpos($strUserAgent, 'macintosh') !== false) { QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Macintosh; } } // Preload Class Files foreach (QApplication::$PreloadedClassFile as $strClassFile) { require $strClassFile; } }
protected static function InitializeForCli() { // First, turn off output buffering ob_end_clean(); // Next, did we ask for a script to be run? if (!array_key_exists(1, $_SERVER['argv']) || substr($_SERVER['argv'][1], 0, 1) == '-') { print "Qcodo CLI Runner v" . QCODO_VERSION . "\r\n"; print "usage: qcodo SCRIPT [ARGS]\r\n"; print "\r\n"; print "The following scripts are included with the Qcodo Distribution:\r\n"; print " codegen Code generates your ORM-layer\r\n"; print " plugin-install Installs an external Qcodo plugin\r\n"; print " plugin-package Packages custom code you wrote into a Qcodo plugin\r\n"; print " qcodo-updater Updates your installed Qcodo framework to a new version\r\n"; print "\r\n"; print "Other custom scripts can be created as well.\r\n"; print "See the _README.txt file in " . __DEVTOOLS_CLI__ . " for more information."; print "\r\n"; exit(1); } // Find Script if (strpos($_SERVER['argv'][1], '.cli.php') === false) { $strScriptFilename = __DEVTOOLS_CLI__ . '/' . $_SERVER['argv'][1] . '.cli.php'; } else { $strScriptFilename = __DEVTOOLS_CLI__ . '/' . $_SERVER['argv'][1]; } if (file_exists($strScriptFilename)) { QApplication::$ScriptFilename = $strScriptFilename; QApplication::$ScriptName = $_SERVER['argv'][1]; } else { print "error: the script '" . $_SERVER['argv'][1] . "' does not exist.\r\n"; exit(1); } }
/** * This should be the first call to initialize all the static variables * The application object also has static methods that are miscellaneous web * development utilities, etc. * * @return void */ public static function Initialize() { // Are we running as CLI? if (PHP_SAPI == 'cli') QApplication::$CliMode = true; else QApplication::$CliMode = false; // Setup Server Address if (array_key_exists('LOCAL_ADDR', $_SERVER)) QApplication::$ServerAddress = $_SERVER['LOCAL_ADDR']; else if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) QApplication::$ServerAddress = $_SERVER['HTTP_X_FORWARDED_FOR']; else if (array_key_exists('SERVER_ADDR', $_SERVER)) QApplication::$ServerAddress = $_SERVER['SERVER_ADDR']; // Setup ScriptFilename and ScriptName QApplication::$ScriptFilename = $_SERVER['SCRIPT_FILENAME']; QApplication::$ScriptName = $_SERVER['SCRIPT_NAME']; // Ensure both are set, or we'll have to abort if ((!QApplication::$ScriptFilename) || (!QApplication::$ScriptName)) { throw new Exception('Error on QApplication::Initialize() - ScriptFilename or ScriptName was not set'); } // Setup PathInfo and QueryString (if applicable) QApplication::$PathInfo = array_key_exists('PATH_INFO', $_SERVER) ? trim($_SERVER['PATH_INFO']) : null; QApplication::$QueryString = array_key_exists('QUERY_STRING', $_SERVER) ? $_SERVER['QUERY_STRING'] : null; // Setup RequestUri if (defined('__URL_REWRITE__')) { switch (strtolower(__URL_REWRITE__)) { case 'apache': QApplication::$RequestUri = $_SERVER['REQUEST_URI']; break; case 'none': QApplication::$RequestUri = sprintf('%s%s%s', QApplication::$ScriptName, QApplication::$PathInfo, (QApplication::$QueryString) ? sprintf('?%s', QApplication::$QueryString) : null); break; default: throw new Exception('Invalid URL Rewrite type: ' . __URL_REWRITE__); } } else { QApplication::$RequestUri = sprintf('%s%s%s', QApplication::$ScriptName, QApplication::$PathInfo, (QApplication::$QueryString) ? sprintf('?%s', QApplication::$QueryString) : null); } // Setup DocumentRoot QApplication::$DocumentRoot = trim(__DOCROOT__); // Setup Browser Type if (array_key_exists('HTTP_USER_AGENT', $_SERVER)) { $strUserAgent = trim(strtolower($_SERVER['HTTP_USER_AGENT'])); // INTERNET EXPLORER (supporting versions 6.0 and 7.0) if (strpos($strUserAgent, 'msie') !== false) { QApplication::$BrowserType = QBrowserType::InternetExplorer; if (strpos($strUserAgent, 'msie 6.0') !== false) QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::InternetExplorer_6_0; else if (strpos($strUserAgent, 'msie 7.0') !== false) QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::InternetExplorer_7_0; else QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; // FIREFOX (supporting versions 1.0, 1.5 and 2.0) } else if ((strpos($strUserAgent, 'firefox') !== false) || (strpos($strUserAgent, 'iceweasel') !== false)) { QApplication::$BrowserType = QBrowserType::Firefox; $strUserAgent = str_replace('iceweasel/', 'firefox/', $strUserAgent); if (strpos($strUserAgent, 'firefox/1.0') !== false) QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Firefox_1_0; else if (strpos($strUserAgent, 'firefox/1.5') !== false) QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Firefox_1_5; else if (strpos($strUserAgent, 'firefox/2.0') !== false) QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Firefox_2_0; else QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; // SAFARI (supporting version 2.0 and eventually 3.0) } else if (strpos($strUserAgent, 'safari') !== false) { QApplication::$BrowserType = QBrowserType::Safari; if (strpos($strUserAgent, 'safari/41') !== false) QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Safari_2_0; else if (strpos($strUserAgent, 'safari/52') !== false) QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Safari_3_0; else QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Unsupported; // COMPLETELY UNSUPPORTED } else QApplication::$BrowserType = QBrowserType::Unsupported; // MACINTOSH? if (strpos($strUserAgent, 'macintosh') !== false) QApplication::$BrowserType = QApplication::$BrowserType | QBrowserType::Macintosh; } // Preload Class Files foreach (QApplication::$PreloadedClassFile as $strClassFile) require($strClassFile); }