X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fclass_BaseFrameworkSystem.php;h=7e461ac820071fde42e846ae1b7f2e79adf211be;hp=4a6eb893e0418d524b38ba71681d6e859dc27db6;hb=8ff12f905898b0c2b7ff8124c9749ad6fb9c44f3;hpb=efba981c9bf18c733dfde945b09111ff4b6007ce diff --git a/inc/classes/main/class_BaseFrameworkSystem.php b/inc/classes/main/class_BaseFrameworkSystem.php index 4a6eb89..7e461ac 100644 --- a/inc/classes/main/class_BaseFrameworkSystem.php +++ b/inc/classes/main/class_BaseFrameworkSystem.php @@ -74,19 +74,14 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { private $resultInstance = null; /** - * The real class name + * Instance for user class */ - private $realClass = "FrameworkSystem"; + private $userInstance = null; /** - * A human-readable description for this simulator part - */ - private $objectDescription = "Namenlose Framework-Einheit"; - - /** - * The unique ID string for identifying all type of classes + * The real class name */ - private $uniqueID = ""; + private $realClass = "FrameworkSystem"; /** * Thousands seperator @@ -213,9 +208,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Is this object already destroyed? if ($this->__toString() != 'DestructedObject') { // Destroy all informations about this class but keep some text about it alive - $this->setObjectDescription(sprintf("Removed object %s", $this->__toString())); $this->setRealClass('DestructedObject'); - $this->resetUniqueID(); } elseif ((defined('DEBUG_DESTRUCTOR')) && (is_object($this->getDebugInstance()))) { // Already destructed object $this->debugOutput(sprintf("[%s:] The object %s is already destroyed.", @@ -238,42 +231,15 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } elseif (is_array($args)) { // Some arguments are there foreach ($args as $arg) { - // Check the type - if (is_bool($arg)) { - // Boolean! - if ($arg) $argsString .= "true(bool)"; else $argsString .= "false(bool)"; - } elseif (is_int($arg)) { - // Integer - $argsString .= $arg."(int)"; - } elseif (is_float($arg)) { - // Floating point - $argsString .= $arg."(float)"; - } elseif ($arg instanceof BaseFrameworkSystem) { - // Own object instance - $argsString .= $arg->__toString()."(Object)"; - } elseif (is_object($arg)) { - // External object - $argsString .= "unknown object(!)"; - } elseif (is_array($arg)) { - // Array - $argsString .= "Array(array)"; - } elseif (is_string($arg)) { - // String - $argsString .= "\"".$arg."\"(string)"; - } elseif (is_null($arg)) { - // Null - $argsString .= "(null)"; - } elseif (is_resource($arg)) { - // Resource - $argsString .= "(resource)"; - } else { - // Unknown type (please report!) - $argsString .= $arg."(unknown!)"; - } - - // Add comma - $argsString .= ", "; - } + // 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) === ",") { @@ -315,7 +281,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Set the compressor channel $this->setCompressorChannel(CompressorChannel::createCompressorChannel(sprintf("%s%s", - PATH, + $this->getConfigInstance()->readConfig('base_path'), $this->getConfigInstance()->readConfig('compressor_base_path') ))); @@ -480,11 +446,16 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @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)) { - return Registry::getRegistry()->getInstance('dbInstance'); - } else { - return null; - } + $dbInstance = Registry::getRegistry()->getInstance('dbInstance'); + } // END - if + + // Return instance + return $dbInstance; } /** @@ -586,185 +557,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { $this->realClass = $realClass; } - /** - * Generate unique ID from a lot entropy - * - * @return void - */ - public final function generateUniqueId () { - // Is the id set for this class? - if (empty($this->uniqueID)) { - - // Correct missing class name - $corrected = false; - if ($this->__toString() == "") { - $this->setRealClass(__CLASS__); - $corrected = true; - } - - // Cache datbase instance - $db = $this->getDatabaseInstance(); - - // Generate new id - $tempID = false; - while (true) { - // Generate a unique ID number - $tempID = $this->generateIdNumber(); - $isUsed = false; - - // Try to figure out if the ID number is not yet used - try { - // Is this a registry? - if ($this->__toString() == "Registry") { - // Registry, then abort here - break; - } elseif (is_object($db)) { - $isUsed = $db->isUniqueIdUsed($tempID, true); - } - } catch (FrameworkException $e) { - // Catches all and ignores all ;-) - } - - if ( - ( - $tempID !== false - ) && ( - ( - $db === null - ) || ( - ( - is_object($db) - ) && ( - !$isUsed - ) - ) - ) - ) { - // Abort the loop - break; - } - } // END - while - - // Apply the new ID - $this->setUniqueID($tempID); - - // Revert maybe corrected class name - if ($corrected) { - $this->setRealClass(""); - } - - // Remove system classes if we are in a system class - if ((isset($this->systemClasses)) && (in_array($this->__toString(), $this->systemClasses))) { - // This may save some RAM... - $this->removeSystemArray(); - } - } - } - - /** - * Generates a new ID number for classes based from the class' real name, - * the description and some random data - * - * @return $tempID The new (temporary) ID number - */ - private final function generateIdNumber () { - return sprintf("%s@%s", - $this->__toString(), - md5(sprintf("%s:%s:%s:%s:%s:%s", - $this->__toString(), - $this->getObjectDescription(), - time(), - getenv('REMOTE_ADDR'), - getenv('SERVER_ADDR'), - mt_rand() - )) - ); - } - - /** - * Setter for unique ID - * - * @param $uniqueID The newly generated unique ID number - * @return void - */ - private final function setUniqueID ($uniqueID) { - // Cast to string - $uniqueID = (string) $uniqueID; - - // Set the ID number - $this->uniqueID = $uniqueID; - } - - /** - * Getter for unique ID - * - * @return $uniqueID The unique ID of this class - */ - public final function getUniqueID () { - return $this->uniqueID; - } - - /** - * Resets or recreates the unique ID number - * - * @return void - */ - public final function resetUniqueID() { - // Sweet and simple... ;-) - $newUniqueID = $this->generateIdNumber(); - $this->setUniqueID($newUniqueID); - } - - /** - * Getter for simulator description - * - * @return $objectDescription The description of this simulation part - */ - public final function getObjectDescription () { - if (isset($this->objectDescription)) { - return $this->objectDescription; - } else { - return null; - } - } - - /** - * Setter for simulation part description - * - * @param $objectDescription The description as string for this simulation part - * @return void - */ - public final function setObjectDescription ($objectDescription) { - $this->objectDescription = (String) $objectDescription; - } - - /** - * Validate if given object is the same as current - * - * @param $object An object instance for comparison with this class - * @return boolean The result of comparing both's unique ID - */ - public final function equals (FrameworkInterface $object) { - return ($this->getUniqueID() == $object->getUniqueID()); - } - - /** - * Compare if both simulation part description and class name matches - * (shall be enougth) - * - * @param $itemInstance An object instance to an other class - * @return boolean The result of comparing class name simulation part description - */ - public function itemMatches ($itemInstance) { - return ( - ( - $this->__toString() == $itemInstance->__toString() - ) && ( - $this->getObjectDescription() == $itemInstance->getObjectDescription() - ) - ); - } - /** * Compare class name of this and given class name * @@ -865,40 +657,6 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { unset($this->systemClasses); } - /** - * Create a file name and path name from the object's unique ID number. - * The left part of the ID shall always be a valid class name and the - * right part an ID number. - * - * @return $pfn The file name with a prepended path name - * @throws NoArrayCreatedException If explode() fails to create an array - * @throws InvalidArrayCountException If the array contains less or - * more than two elements - */ - public final function getPathFileNameFromObject () { - // Get the main object's unique ID. We use this as a path/filename combination - $pathFile = $this->getUniqueID(); - - // Split it up in path and file name - $pathFile = explode("@", $pathFile); - - // Are there two elements? Index 0 is the path, 1 the file name + global extension - if (!is_array($pathFile)) { - // No array found - throw new NoArrayCreatedException(array($this, 'pathFile'), self::EXCEPTION_ARRAY_EXPECTED); - } elseif (count($pathFile) != 2) { - // Invalid ID returned! - throw new InvalidArrayCountException(array($this, 'pathFile', count($pathFile), 2), self::EXCEPTION_ARRAY_HAS_INVALID_COUNT); - } - - // Auto-append missing trailing slash - $pathFile[0] = $this->addMissingTrailingSlash($pathFile[0]); - - // Create the file name and return it - $pfn = ($pathFile[0] . $pathFile[1]); - return $pfn; - } - /** * Appends a trailing slash to a string * @@ -960,8 +718,7 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } // END - if // Generate FQFN for all application templates - $fqfn = sprintf("%s%s/%s/%s", - PATH, + $fqfn = sprintf("%s%s/%s", $this->getConfigInstance()->readConfig('application_path'), strtolower($appInstance->getAppShortName()), $this->getConfigInstance()->readConfig('tpl_base_path') @@ -1116,11 +873,13 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { * @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 - $markedCode = ""; if (is_array($errorArray)) { // Get error infos $markedCode = sprintf("
File: %s, Line: %s, Message: %s, Type: %s
", @@ -1132,10 +891,10 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } // END - if // Add line number to the code - foreach (explode("\n", $phpCode) as $lineNo=>$code) { + foreach (explode("\n", $phpCode) as $lineNo => $code) { // Add line numbers $markedCode .= sprintf("%s: %s\n", - ($lineNo+1), + ($lineNo + 1), htmlentities($code, ENT_QUOTES) ); } // END - foreach @@ -1145,9 +904,9 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } /** - * Filter a given timestamp to make it look more beatifull for web-based - * front-ends. If null is given a message id null_timestamp will be - * resolved and returned. + * 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 @@ -1161,7 +920,28 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { // Get a message string $readable = $this->getLanguageInstance()->getMessage('null_timestamp'); } else { - $this->partialStub("Do further analysis on timestamp {$timestamp}."); + 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 @@ -1234,38 +1014,22 @@ class BaseFrameworkSystem extends stdClass implements FrameworkInterface { } /** - * Updates a given field with new value + * Protected setter for user instance * - * @param $fieldName Field to update - * @param $fieldValue New value to store + * @param $userInstance An instance of a user class * @return void - * @throws DatabaseUpdateSupportException If this class does not support database updates */ - public function updateDatabaseField ($fieldName, $fieldValue) { - // Is updating database fields allowed by interface? - if (!$this instanceof Updateable) { - // Update not supported! - throw new DatabaseUpdateSupportException($this, self::EXCEPTION_DATABASE_UPDATED_NOT_ALLOWED); - } // END - if - - // Get a critieria instance - $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class'); - - // Add search criteria - $searchInstance->addCriteria(UserDatabaseWrapper::DB_COLUMN_USERNAME, $this->getUserName()); - $searchInstance->setLimit(1); - - // Now get another criteria - $updateInstance = ObjectFactory::createObjectByConfiguredName('update_criteria_class'); - - // And add our both entries - $updateInstance->addCriteria($fieldName, $fieldValue); - - // Add the search criteria for searching for the right entry - $updateInstance->setSearchInstance($searchInstance); + protected final function setUserInstance (ManageableAccount $userInstance) { + $this->userInstance = $userInstance; + } - // Remember the update in database result - $this->getResultInstance()->add2UpdateQueue($updateInstance); + /** + * Getter for user instance + * + * @return $userInstance An instance of a user class + */ + public final function getUserInstance () { + return $this->userInstance; } }