X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;fp=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;h=0000000000000000000000000000000000000000;hp=d4eabd793f3564724250b78ec9e669c6f592b56e;hb=398f4a89ecb5f6ef538e143d5ea84b569fb9d287;hpb=df33e264f3246f80756d7e2da55d7f7c40f9088c diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php deleted file mode 100644 index d4eabd7..0000000 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ /dev/null @@ -1,1077 +0,0 @@ - - * @version 0.0.0 - * @copyright Copyright (c) 2007, 2008 Roland Haeder, this is free software - * @license GNU GPL 3.0 or any newer version - * @link http://www.ship-simu.org - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -class BaseFrameworkSystem extends stdClass implements FrameworkInterface { - /** - * Instance to an application helper class - */ - private static $applicationInstance = null; - - /** - * The language instance for the template loader - */ - private static $langInstance = null; - - /** - * Debug instance - */ - private static $debugInstance = null; - - /** - * Instance of a request class - */ - private $requestInstance = null; - - /** - * Instance of a response class - */ - private $responseInstance = null; - - /** - * Search criteria instance - */ - private $searchInstance = null; - - /** - * The file I/O instance for the template loader - */ - private $fileIoInstance = null; - - /** - * Resolver instance - */ - private $resolverInstance = null; - - /** - * Template engine instance - */ - private $templateInstance = null; - - /** - * Database result instance - */ - private $resultInstance = null; - - /** - * Instance for user class - */ - private $userInstance = null; - - /** - * A controller instance - */ - private $controllerInstance = null; - - /** - * The real class name - */ - private $realClass = "FrameworkSystem"; - - /** - * Thousands seperator - */ - private $thousands = "."; // German - - /** - * Decimal seperator - */ - private $decimals = ","; // German - - /*********************** - * Exception codes.... * - ***********************/ - - const EXCEPTION_IS_NULL_POINTER = 0x001; - const EXCEPTION_IS_NO_OBJECT = 0x002; - const EXCEPTION_IS_NO_ARRAY = 0x003; - const EXCEPTION_MISSING_METHOD = 0x004; - const EXCEPTION_CLASSES_NOT_MATCHING = 0x005; - const EXCEPTION_INDEX_OUT_OF_BOUNDS = 0x006; - const EXCEPTION_DIMENSION_ARRAY_INVALID = 0x007; - const EXCEPTION_ITEM_NOT_TRADEABLE = 0x008; - const EXCEPTION_ITEM_NOT_IN_PRICE_LIST = 0x009; - const EXCEPTION_GENDER_IS_WRONG = 0x00a; - const EXCEPTION_BIRTH_DATE_IS_INVALID = 0x00b; - const EXCEPTION_EMPTY_STRUCTURES_ARRAY = 0x00c; - const EXCEPTION_HAS_ALREADY_PERSONELL_LIST = 0x00d; - const EXCEPTION_NOT_ENOUGTH_UNEMPLOYEES = 0x00e; - const EXCEPTION_TOTAL_PRICE_NOT_CALCULATED = 0x00f; - const EXCEPTION_HARBOR_HAS_NO_SHIPYARDS = 0x010; - const EXCEPTION_CONTRACT_PARTNER_INVALID = 0x011; - const EXCEPTION_CONTRACT_PARTNER_MISMATCH = 0x012; - const EXCEPTION_CONTRACT_ALREADY_SIGNED = 0x013; - const EXCEPTION_UNEXPECTED_EMPTY_STRING = 0x014; - const EXCEPTION_PATH_NOT_FOUND = 0x015; - const EXCEPTION_INVALID_PATH_NAME = 0x016; - const EXCEPTION_READ_PROTECED_PATH = 0x017; - const EXCEPTION_WRITE_PROTECED_PATH = 0x018; - const EXCEPTION_DIR_POINTER_INVALID = 0x019; - const EXCEPTION_FILE_POINTER_INVALID = 0x01a; - const EXCEPTION_INVALID_DIRECTORY_POINTER = 0x01b; - const EXCEPTION_UNEXPECTED_OBJECT = 0x01c; - const EXCEPTION_LIMIT_ELEMENT_IS_UNSUPPORTED = 0x01d; - const EXCEPTION_GETTER_IS_MISSING = 0x01e; - const EXCEPTION_ARRAY_EXPECTED = 0x01f; - const EXCEPTION_ARRAY_HAS_INVALID_COUNT = 0x020; - const EXCEPTION_ID_IS_INVALID_FORMAT = 0x021; - const EXCEPTION_MD5_CHECKSUMS_MISMATCH = 0x022; - const EXCEPTION_UNEXPECTED_STRING_SIZE = 0x023; - const EXCEPTION_SIMULATOR_ID_INVALID = 0x024; - const EXCEPTION_MISMATCHING_COMPRESSORS = 0x025; - const EXCEPTION_CONTAINER_ITEM_IS_NULL = 0x026; - const EXCEPTION_ITEM_IS_NO_ARRAY = 0x027; - const EXCEPTION_CONTAINER_MAYBE_DAMAGED = 0x028; - const EXCEPTION_INVALID_STRING = 0x029; - const EXCEPTION_VARIABLE_NOT_SET = 0x02a; - const EXCEPTION_ATTRIBUTES_ARE_MISSING = 0x02b; - const EXCEPTION_ARRAY_ELEMENTS_MISSING = 0x02c; - const EXCEPTION_TEMPLATE_ENGINE_UNSUPPORTED = 0x02d; - const EXCEPTION_MISSING_LANGUAGE_HANDLER = 0x02e; - const EXCEPTION_MISSING_FILE_IO_HANDLER = 0x02f; - const EXCEPTION_MISSING_ELEMENT = 0x030; - const EXCEPTION_HEADERS_ALREADY_SENT = 0x031; - const EXCEPTION_DEFAULT_CONTROLLER_GONE = 0x032; - const EXCEPTION_CLASS_NOT_FOUND = 0x033; - const EXCEPTION_REQUIRED_INTERFACE_MISSING = 0x034; - const EXCEPTION_FATAL_ERROR = 0x035; - const EXCEPTION_FILE_NOT_FOUND = 0x036; - const EXCEPTION_ASSERTION_FAILED = 0x037; - const EXCEPTION_FILE_CANNOT_BE_READ = 0x038; - const EXCEPTION_DATABASE_UPDATED_NOT_ALLOWED = 0x039; - - /** - * In the super constructor these system classes shall be ignored or else - * we would get an endless calling loop. - * - *---------------------------------------------------------------------* - * ATTENTION: IF YOU REMOVE ONE OF THEM YOU WILL RUN YOUR SERVER IN AN * - * ENDLESS LOOP !!! * - *---------------------------------------------------------------------* - */ - private $systemClasses = array( - "DebugMiddleware", // Debug middleware output sub-system - "Registry", // Object registry - "ObjectFactory", // Object factory - "DebugWebOutput", // Debug web output sub-system - "WebOutput", // Web output sub-system - "CompressorChannel", // Compressor sub-system - "DebugConsoleOutput", // Debug console output sub-system - "DebugErrorLogOutput", // Debug error_log() output sub-system - "FrameworkDirectoryPointer", // Directory handler sub-system - "NullCompressor", // Null compressor - "Bzip2Compressor", // BZIP2 compressor - "GzipCompressor", // GZIP compressor - ); - - /* No longer used: - */ - - /** - * Private super constructor - * - * @param $className Name of the class - * @return void - */ - protected function __construct ($className) { - // Set real class - $this->setRealClass($className); - - // Initialize the class if class Registry is there - if ((class_exists('Registry')) && (Registry::isInitialized() === false)) { - // Initialize the registry automatically - $this->initInstance(); - } // END - if - } - - /** - * Destructor reached... - * - * @return void - * @todo This is old code. Do we still need this old lost code? - */ - public function __destruct() { - // Is this object already destroyed? - if ($this->__toString() != 'DestructedObject') { - // Destroy all informations about this class but keep some text about it alive - $this->setRealClass('DestructedObject'); - } elseif ((defined('DEBUG_DESTRUCTOR')) && (is_object($this->getDebugInstance()))) { - // Already destructed object - $this->debugOutput(sprintf("[%s:] The object %s is already destroyed.", - __CLASS__, $this->__toString() - )); - } - } - - /** - * The call method where all non-implemented methods end up - * - * @return void - */ - public final function __call ($methodName, $args) { - // Implode all given arguments - $argsString = ""; - if (empty($args)) { - // No arguments - $argsString = "NULL"; - } elseif (is_array($args)) { - // Some arguments are there - foreach ($args as $arg) { - // Add the type - $argsString .= $arg." (".gettype($arg); - - // Add length if type is string - if (gettype($arg) == 'string') $argsString .= ", ".strlen($arg); - - // Closing bracket - $argsString .= "), "; - } // END - foreach - - // Remove last comma - if (substr($argsString, -2, 1) === ",") { - $argsString = substr($argsString, 0, -2); - } // END - if - } else { - // Invalid arguments! - $argsString = sprintf("!INVALID:%s!", $args); - } - - // Output stub message - $this->debugOutput(sprintf("[%s->%s] Stub! Args: %s", - $this->__toString(), - $methodName, - $argsString - )); - - // Return nothing - return null; - } - - /** - * Private initializer for this class - * - * @return void - */ - private final function initInstance () { - // Is this a system class? - if (!in_array($this->__toString(), $this->systemClasses)) { - // Set configuration instance - $this->setConfigInstance(FrameworkConfiguration::getInstance()); - - // Add application helper to our class - $this->systemclasses[] = $this->getConfigInstance()->readConfig('app_helper_class'); - - // Set debug instance - $this->setDebugInstance(DebugMiddleware::createDebugMiddleware($this->getConfigInstance()->readConfig('debug_class'))); - - // Get output instance and set it - $outputInstance = ObjectFactory::createObjectByConfiguredName('web_engine', array($this->getConfigInstance()->readConfig('web_content_type'))); - $this->setWebOutputInstance($outputInstance); - - // Set the compressor channel - $this->setCompressorChannel(CompressorChannel::createCompressorChannel(sprintf("%s%s", - $this->getConfigInstance()->readConfig('base_path'), - $this->getConfigInstance()->readConfig('compressor_base_path') - ))); - - // Initialization done! :D - Registry::isInitialized('OK'); - } elseif ($this->__toString() == 'DebugMiddleware') { - // Set configuration instance - $this->setConfigInstance(FrameworkConfiguration::getInstance()); - } - } - - /** - * Setter for database result instance - * - * @param $resultInstance An instance of a database result class - * @return void - * @todo SearchableResult and UpdateableResult shall have a super interface to use here - */ - protected final function setResultInstance (SearchableResult $resultInstance) { - $this->resultInstance = $resultInstance; - } - - /** - * Getter for database result instance - * - * @return $resultInstance An instance of a database result class - */ - public final function getResultInstance () { - return $this->resultInstance; - } - - /** - * Setter for template engine instances - * - * @param $templateInstance An instance of a template engine class - * @return void - */ - protected final function setTemplateInstance (CompileableTemplate $templateInstance) { - $this->templateInstance = $templateInstance; - } - - /** - * Getter for template engine instances - * - * @return $templateInstance An instance of a template engine class - */ - protected final function getTemplateInstance () { - return $this->templateInstance; - } - - /** - * Setter for search instance - * - * @param $searchInstance Searchable criteria instance - * @return void - */ - public final function setSearchInstance (LocalSearchCriteria $searchInstance) { - $this->searchInstance = $searchInstance; - } - - /** - * Getter for search instance - * - * @return $searchInstance Searchable criteria instance - */ - public final function getSearchInstance () { - return $this->searchInstance; - } - - /** - * Setter for resolver instance - * - * @param $resolverInstance Instance of a command resolver class - * @return void - */ - public final function setResolverInstance (Resolver $resolverInstance) { - $this->resolverInstance = $resolverInstance; - } - - /** - * Getter for resolver instance - * - * @return $resolverInstance Instance of a command resolver class - */ - public final function getResolverInstance () { - return $this->resolverInstance; - } - - /** - * Setter for language instance - * - * @param $configInstance The configuration instance which shall - * be FrameworkConfiguration - * @return void - */ - public final function setConfigInstance (FrameworkConfiguration $configInstance) { - Registry::getRegistry()->addInstance('config', $configInstance); - } - - /** - * Getter for configuration instance - * - * @return $cfgInstance Configuration instance - */ - public final function getConfigInstance () { - $cfgInstance = Registry::getRegistry()->getInstance('config'); - return $cfgInstance; - } - - /** - * Setter for debug instance - * - * @param $debugInstance The instance for debug output class - * @return void - */ - public final function setDebugInstance (DebugMiddleware $debugInstance) { - self::$debugInstance = $debugInstance; - } - - /** - * Getter for debug instance - * - * @return $debugInstance Instance to class DebugConsoleOutput or DebugWebOutput - */ - public final function getDebugInstance () { - return self::$debugInstance; - } - - /** - * Setter for web output instance - * - * @param $webInstance The instance for web output class - * @return void - */ - public final function setWebOutputInstance (OutputStreamer $webInstance) { - Registry::getRegistry()->addInstance('web_output', $webInstance); - } - - /** - * Getter for web output instance - * - * @return $webOutput - Instance to class WebOutput - */ - public final function getWebOutputInstance () { - return Registry::getRegistry()->getInstance('web_output'); - } - - /** - * Setter for database instance - * - * @param $dbInstance The instance for the database connection - * (forced DatabaseConnection) - * @return void - */ - public final function setDatabaseInstance (DatabaseConnection $dbInstance) { - Registry::getRegistry()->addInstance('dbInstance', $dbInstance); - } - - /** - * Getter for database layer - * - * @return $dbInstance The database layer instance - */ - public final function getDatabaseInstance () { - // Default is invalid db instance - $dbInstance = null; - - // Is the registry there and initialized? - if ((class_exists('Registry')) && (Registry::isInitialized() === true)) { - $dbInstance = Registry::getRegistry()->getInstance('dbInstance'); - } // END - if - - // Return instance - return $dbInstance; - } - - /** - * Setter for compressor channel - * - * @param $compressorChannel An instance of CompressorChannel - * @return void - */ - public final function setCompressorChannel (CompressorChannel $compressorChannel) { - Registry::getRegistry()->addInstance('compressor', $compressorChannel); - } - - /** - * Getter for compressor channel - * - * @return $compressor The compressor channel - */ - public final function getCompressorChannel () { - return Registry::getRegistry()->getInstance('compressor'); - } - - /** - * Protected getter for a manageable application helper class - * - * @return $applicationInstance An instance of a manageable application helper class - */ - protected final function getApplicationInstance () { - return self::$applicationInstance; - } - - /** - * Setter for a manageable application helper class - * - * @param $applicationInstance An instance of a manageable application helper class - * @return void - */ - public final function setApplicationInstance (ManageableApplication $applicationInstance) { - self::$applicationInstance = $applicationInstance; - } - - /** - * Setter for request instance - * - * @param $requestInstance An instance of a Requestable class - * @return void - */ - public final function setRequestInstance (Requestable $requestInstance) { - $this->requestInstance = $requestInstance; - } - - /** - * Getter for request instance - * - * @return $requestInstance An instance of a Requestable class - */ - public final function getRequestInstance () { - return $this->requestInstance; - } - - /** - * Setter for response instance - * - * @param $responseInstance An instance of a Responseable class - * @return void - */ - public final function setResponseInstance (Responseable $responseInstance) { - $this->responseInstance = $responseInstance; - } - - /** - * Getter for response instance - * - * @return $responseInstance An instance of a Responseable class - */ - public final function getResponseInstance () { - return $this->responseInstance; - } - - /** - * Getter for $realClass - * - * @return $realClass The name of the real class (not BaseFrameworkSystem) - */ - public final function __toString () { - return $this->realClass; - } - - /** - * Setter for the real class name - * - * @param $realClass Class name (string) - * @return void - */ - public final function setRealClass ($realClass) { - // Cast to string - $realClass = (string) $realClass; - - // Set real class - $this->realClass = $realClass; - } - - /** - * Compare class name of this and given class name - * - * @param $className The class name as string from the other class - * @return boolean The result of comparing both class names - */ - public final function isClass ($className) { - return ($this->__toString() == $className); - } - - /** - * Stub method (only real cabins shall override it) - * - * @return boolean false = is no cabin, true = is a cabin - * @deprecated - */ - public function isCabin () { - return false; - } - - /** - * Stub method for tradeable objects - * - * @return boolean false = is not tradeable by the Merchant class, - * true = is a tradeable object - * @deprecated - */ - public function isTradeable () { - return false; - } - - /** - * Formats computer generated price values into human-understandable formats - * with thousand and decimal seperators. - * - * @param $value The in computer format value for a price - * @param $currency The currency symbol (use HTML-valid characters!) - * @param $decNum Number of decimals after commata - * @return $price The for the current language formated price string - * @throws MissingDecimalsThousandsSeperatorException If decimals or - * thousands seperator - * is missing - */ - public function formatCurrency ($value, $currency = "€", $decNum = 2) { - // Are all required attriutes set? - if ((!isset($this->decimals)) || (!isset($this->thousands))) { - // Throw an exception - throw new MissingDecimalsThousandsSeperatorException($this, self::EXCEPTION_ATTRIBUTES_ARE_MISSING); - } - - // Cast the number - $value = (float) $value; - - // Reformat the US number - $price = sprintf("%s %s", - number_format($value, $decNum, $this->decimals, $this->thousands), - $currency - ); - - // Return as string... - return $price; - } - - /** - * Removes number formating characters - * - * @return void - */ - public final function removeNumberFormaters () { - unset($this->thousands); - unset($this->decimals); - } - - /** - * Private getter for language instance - * - * @return $langInstance An instance to the language sub-system - */ - protected final function getLanguageInstance () { - return self::$langInstance; - } - - /** - * Setter for language instance - * - * @param $langInstance An instance to the language sub-system - * @return void - * @see LanguageSystem - */ - public final function setLanguageInstance (ManageableLanguage $langInstance) { - self::$langInstance = $langInstance; - } - - /** - * Remove the $systemClasses array from memory - * - * @return void - */ - public final function removeSystemArray () { - unset($this->systemClasses); - } - - /** - * Appends a trailing slash to a string - * - * @param $str A string (maybe) without trailing slash - * @return $str A string with an auto-appended trailing slash - */ - public final function addMissingTrailingSlash ($str) { - // Is there a trailing slash? - if (substr($str, -1, 1) != "/") $str .= "/"; - return $str; - } - - /** - * Private getter for file IO instance - * - * @return $fileIoInstance An instance to the file I/O sub-system - */ - protected final function getFileIoInstance () { - return $this->fileIoInstance; - } - - /** - * Setter for file I/O instance - * - * @param $fileIoInstance An instance to the file I/O sub-system - * @return void - */ - public final function setFileIoInstance (FileIoHandler $fileIoInstance) { - $this->fileIoInstance = $fileIoInstance; - } - - /** - * Prepare the template engine (WebTemplateEngine by default) for a given - * application helper instance (ApplicationHelper by default). - * - * @param $appInstance An application helper instance or - * null if we shall use the default - * @return $templateInstance The template engine instance - * @throws NullPointerException If the template engine could not - * be initialized - * @throws UnsupportedTemplateEngineException If $templateInstance is an - * unsupported template engine - * @throws MissingLanguageHandlerException If the language sub-system - * is not yet initialized - * @throws NullPointerException If the discovered application - * instance is still null - */ - protected function prepareTemplateInstance (BaseFrameworkSystem $appInstance=null) { - // Is the application instance set? - if (is_null($appInstance)) { - // Get the current instance - $appInstance = $this->getApplicationInstance(); - - // Still null? - if (is_null($appInstance)) { - // Thrown an exception - throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); - } // END - if - } // END - if - - // Generate FQFN for all application templates - $fqfn = sprintf("%s%s/%s", - $this->getConfigInstance()->readConfig('application_path'), - strtolower($appInstance->getAppShortName()), - $this->getConfigInstance()->readConfig('tpl_base_path') - ); - - // Are both instances set? - if ($appInstance->getLanguageInstance() === null) { - // Invalid language instance - throw new MissingLanguageHandlerException($appInstance, self::EXCEPTION_MISSING_LANGUAGE_HANDLER); - } elseif ($appInstance->getFileIoInstance() === null) { - // Invalid language instance - throw new MissingFileIoHandlerException($appInstance, self::EXCEPTION_MISSING_FILE_IO_HANDLER); - } - - // Initialize the template engine - $templateInstance = ObjectFactory::createObjectByConfiguredName('template_class', array($fqfn, $appInstance->getLanguageInstance(), $appInstance->getFileIoInstance())); - - // Return the prepared instance - return $templateInstance; - } - - /** - * Debugs this instance by putting out it's full content - * - * @param $message Optional message to show in debug output - * @return void - */ - public final function debugInstance ($message = "") { - // Restore the error handler to avoid trouble with missing array elements or undeclared variables - restore_error_handler(); - - // Init content - $content = ""; - - // Is a message set? - if (!empty($message)) { - // Construct message - $content = sprintf("
Message: %s
\n", $message); - } // END - if - - // Generate the output - $content .= sprintf("
%s
", - trim( - htmlentities( - print_r($this, true) - ) - ) - ); - - // Output it - ApplicationEntryPoint::app_die(sprintf("
%s debug output:
%s
\nLoaded includes:
%s
", - $this->__toString(), - $content, - ClassLoader::getInstance()->getPrintableIncludeList() - )); - } - - /** - * Output a partial stub message for the caller method - * - * @param $message An optional message to display - * @return void - */ - protected function partialStub ($message = "") { - // Get the backtrace - $backtrace = debug_backtrace(); - - // Generate the class::method string - $methodName = "UnknownClass->unknownMethod"; - if ((isset($backtrace[1]['class'])) && (isset($backtrace[1]['function']))) { - $methodName = $backtrace[1]['class']."->".$backtrace[1]['function']; - } // END - if - - // Construct the full message - $stubMessage = sprintf("[%s:] Partial stub!", - $methodName - ); - - // Is the extra message given? - if (!empty($message)) { - // Then add it as well - $stubMessage .= sprintf(" Message: %s", $message); - } // END - if - - // Debug instance is there? - if (!is_null($this->getDebugInstance())) { - // Output stub message - $this->debugOutput($stubMessage); - } else { - // Trigger an error - trigger_error($stubMessage."
\n"); - } - } - - /** - * Outputs a debug backtrace and stops further script execution - * - * @return void - */ - public function debugBackTrace () { - // Sorry, there is no other way getting this nice backtrace - print("
\n");
-		debug_print_backtrace();
-		print("
"); - exit(); - } - - /** - * Outputs a debug message wether to debug instance (should be set!) or dies with or pints the message - * - * @param $message Message we shall send out... - * @param $doPrint Wether we shall print or die here which first is the default - * @return void - */ - public function debugOutput ($message, $doPrint = true) { - // Get debug instance - $debugInstance = $this->getDebugInstance(); - - // Is the debug instance there? - if (is_object($debugInstance)) { - // Use debug output handler - $debugInstance->output($message); - if ($doPrint === false) die(); // Die here if not printed - } else { - // Put directly out - if ($doPrint) { - print($message); - } else { - // DO NOT REWRITE THIS TO app_die() !!! - die($message); - } - } - } - - /** - * Converts e.g. a command from URL to a valid class by keeping out bad characters - * - * @param $str The string, what ever it is needs to be converted - * @return $className Generated class name - */ - public function convertToClassName ($str) { - // Init class name - $className = ""; - - // Convert all dashes in underscores - $str = str_replace("-", "_", $str); - - // Now use that underscores to get classname parts for hungarian style - foreach (explode("_", $str) as $strPart) { - // Make the class name part lower case and first upper case - $className .= ucfirst(strtolower($strPart)); - } // END - foreach - - // Return class name - return $className; - } - - /** - * Marks up the code by adding e.g. line numbers - * - * @param $phpCode Unmarked PHP code - * @return $markedCode Marked PHP code - */ - public function markupCode ($phpCode) { - // Init marked code - $markedCode = ""; - - // Get last error - $errorArray = error_get_last(); - - // Init the code with error message - if (is_array($errorArray)) { - // Get error infos - $markedCode = sprintf("
File: %s, Line: %s, Message: %s, Type: %s
", - basename($errorArray['file']), - $errorArray['line'], - $errorArray['message'], - $errorArray['type'] - ); - } // END - if - - // Add line number to the code - foreach (explode("\n", $phpCode) as $lineNo => $code) { - // Add line numbers - $markedCode .= sprintf("%s: %s\n", - ($lineNo + 1), - htmlentities($code, ENT_QUOTES) - ); - } // END - foreach - - // Return the code - return $markedCode; - } - - /** - * Filter a given GMT timestamp (non Uni* stamp!) to make it look more - * beatiful for web-based front-ends. If null is given a message id - * null_timestamp will be resolved and returned. - * - * @param $timestamp Timestamp to prepare (filter) for display - * @return $readable A readable timestamp - */ - public function doFilterFormatTimestamp ($timestamp) { - // Default value to return - $readable = "???"; - - // Is the timestamp null? - if (is_null($timestamp)) { - // Get a message string - $readable = $this->getLanguageInstance()->getMessage('null_timestamp'); - } else { - switch ($this->getLanguageInstance()->getLanguageCode()) { - case "de": // German format is a bit different to default - // Split the GMT stamp up - $dateTime = explode(" ", $timestamp); - $dateArray = explode("-", $dateTime[0]); - $timeArray = explode(":", $dateTime[1]); - - // Construct the timestamp - $readable = sprintf($this->getConfigInstance()->readConfig('german_date_time'), - $dateArray[0], - $dateArray[1], - $dateArray[2], - $timeArray[0], - $timeArray[1], - $timeArray[2] - ); - break; - - default: // Default is pass-through - $readable = $timestamp; - break; - } - } - - // Return the stamp - return $readable; - } - - /** - * "Getter" for databse entry - * - * @return $entry An array with database entries - * @throws NullPointerException If the database result is not found - * @throws InvalidDatabaseResultException If the database result is invalid - */ - protected final function getDatabaseEntry () { - // Is there an instance? - if (is_null($this->getResultInstance())) { - // Throw an exception here - throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); - } // END - if - - // Rewind it - $this->getResultInstance()->rewind(); - - // Do we have an entry? - if ($this->getResultInstance()->valid() === false) { - throw new InvalidDatabaseResultException(array($this, $this->getResultInstance()), DatabaseResult::EXCEPTION_INVALID_DATABASE_RESULT); - } // END - if - - // Get next entry - $this->getResultInstance()->next(); - - // Fetch it - $entry = $this->getResultInstance()->current(); - - // And return it - return $entry; - } - - /** - * Getter for field name - * - * @param $fieldName Field name which we shall get - * @return $fieldValue Field value from the user - * @throws NullPointerException If the result instance is null - */ - public final function getField ($fieldName) { - // Default field value - $fieldValue = null; - - // Get result instance - $resultInstance = $this->getResultInstance(); - - // Is this instance null? - if (is_null($resultInstance)) { - // Then the user instance is no longer valid (expired cookies?) - throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER); - } // END - if - - // Get current array - $fieldArray = $resultInstance->current(); - - // Does the field exist? - if (isset($fieldArray[$fieldName])) { - // Get it - $fieldValue = $fieldArray[$fieldName]; - } // END - if - - // Return it - return $fieldValue; - } - - /** - * Protected setter for user instance - * - * @param $userInstance An instance of a user class - * @return void - */ - protected final function setUserInstance (ManageableAccount $userInstance) { - $this->userInstance = $userInstance; - } - - /** - * Getter for user instance - * - * @return $userInstance An instance of a user class - */ - public final function getUserInstance () { - return $this->userInstance; - } - - /** - * Setter for controller instance (this surely breaks a bit the MVC patterm) - * - * @param $controllerInstance An instance of the controller - * @return void - */ - public final function setControllerInstance (Controller $controllerInstance) { - $this->controllerInstance = $controllerInstance; - } - - /** - * Getter for controller instance (this surely breaks a bit the MVC patterm) - * - * @return $controllerInstance An instance of the controller - */ - public final function getControllerInstance () { - return $this->controllerInstance; - } -} - -// [EOF] -?>