*/
private $communicatorInstance = NULL;
+ /**
+ * State instance
+ */
+ private $stateInstance = NULL;
+
/**
* Thousands separator
*/
*/
private $controllerName = '';
+ /**
+ * Name of used protocol
+ */
+ private $protocolName = 'invalid';
+
/**
* Array with bitmasks and such for pack/unpack methods to support both
* 32-bit and 64-bit systems
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;
- const EXCEPTION_FILTER_CHAIN_INTERCEPTED = 0x03a;
+ const EXCEPTION_FILE_NOT_REACHABLE = 0x038;
+ const EXCEPTION_FILE_CANNOT_BE_READ = 0x039;
+ const EXCEPTION_FILE_CANNOT_BE_WRITTEN = 0x03a;
+ const EXCEPTION_DATABASE_UPDATED_NOT_ALLOWED = 0x03b;
+ const EXCEPTION_FILTER_CHAIN_INTERCEPTED = 0x03c;
/**
* Hexadecimal->Decimal translation array
// Init argument string
$argsString = '';
- // Is it empty or an array?
- if (empty($args)) {
+ // Is it NULL, empty or an array?
+ if (is_null($args)) {
// No arguments
$argsString = 'NULL';
+ } elseif (empty($args)) {
+ // Empty arguments
+ $argsString = '(empty)';
} elseif (is_array($args)) {
// Some arguments are there
foreach ($args as $arg) {
$this->communicatorInstance = $communicatorInstance;
}
+ /**
+ * Setter for state instance
+ *
+ * @param $stateInstance A Stateable instance
+ * @return void
+ */
+ public final function setStateInstance (Stateable $stateInstance) {
+ $this->stateInstance = $stateInstance;
+ }
+
+ /**
+ * Getter for state instance
+ *
+ * @return $stateInstance A Stateable instance
+ */
+ public final function getStateInstance () {
+ return $this->stateInstance;
+ }
+
/**
* Setter for command name
*
return $this->controllerName;
}
+ /**
+ * Getter for protocol name
+ *
+ * @return $protocolName Name of used protocol
+ */
+ public final function getProtocolName () {
+ return $this->protocolName;
+ }
+
+ /**
+ * Setter for protocol name
+ *
+ * @param $protocolName Name of used protocol
+ * @return void
+ */
+ protected final function setProtocolName ($protocolName) {
+ $this->protocolName = $protocolName;
+ }
+
/**
* Checks whether an object equals this object. You should overwrite this
* method to implement own equality checks
* @param $str The string, what ever it is needs to be converted
* @return $className Generated class name
*/
- public function convertToClassName ($str) {
+ public static final function convertToClassName ($str) {
// Init class name
$className = '';
// Convert all dashes in underscores
- $str = $this->convertDashesToUnderscores($str);
+ $str = self::convertDashesToUnderscores($str);
// Now use that underscores to get classname parts for hungarian style
foreach (explode('_', $str) as $strPart) {
* @param $str The string with maybe dashes inside
* @return $str The converted string with no dashed, but underscores
*/
- public final function convertDashesToUnderscores ($str) {
+ public static final function convertDashesToUnderscores ($str) {
// Convert them all
$str = str_replace('-', '_', $str);
//* DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput($fieldName.':<pre>'.print_r($fieldArray, TRUE).'</pre>');
// Convert dashes to underscore
- $fieldName2 = $this->convertDashesToUnderscores($fieldName);
+ $fieldName2 = self::convertDashesToUnderscores($fieldName);
// Does the field exist?
if ($this->isFieldSet($fieldName)) {
//* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('[' . $this->__toString() . ':' . __LINE__ . '] fieldName=' . $fieldName . ',fieldArray=<pre>'.print_r($fieldArray, TRUE).'</pre>');
// Convert dashes to underscore
- $fieldName = $this->convertDashesToUnderscores($fieldName);
+ $fieldName = self::convertDashesToUnderscores($fieldName);
// Determine it
$isSet = isset($fieldArray[$fieldName]);
$configEntry = $resultInstance->getUpdateInstance()->getWrapperConfigEntry();
// Create object instance
- $wrapperInstance = ObjectFactory::createObjectByConfiguredName($configEntry);
+ $wrapperInstance = DatabaseWrapperFactory::createWrapperByConfiguredName($configEntry);
// Yes, then send the whole result to the database layer
$wrapperInstance->doUpdateByResult($this->getResultInstance());
//* NOISY-DEBUG */ self::createDebugInstance(__CLASS__)->debugOutput('packed=' . $packed . ' - EXIT!');
return $packed;
}
+
+ /**
+ * Checks whether the given file/path is in open_basedir(). This does not
+ * gurantee that the file is actually readable and/or writeable. If you need
+ * such gurantee then please use isReadableFile() instead.
+ *
+ * @param $filePathName Name of the file/path to be checked
+ * @return $isReachable Whether it is within open_basedir()
+ */
+ public static function isReachableFilePath ($filePathName) {
+ // Is not reachable by default
+ $isReachable = FALSE;
+
+ // Get open_basedir parameter
+ $openBaseDir = ini_get('open_basedir');
+
+ // Is it set?
+ if (!empty($openBaseDir)) {
+ // Check all entries
+ foreach (explode(PATH_SEPARATOR, $openBaseDir) as $dir) {
+ // Check on existence
+ if (substr($filePathName, 0, strlen($dir)) == $dir) {
+ // Is reachable
+ $isReachable = TRUE;
+ } // END - if
+ } // END - foreach
+ } else {
+ // If open_basedir is not set, all is allowed
+ $isReachable = TRUE;
+ }
+
+ // Return status
+ return $isReachable;
+ }
+
+ /**
+ * Checks whether the give file is within open_basedir() (done by
+ * isReachableFilePath()), is actually a file and is readable.
+ *
+ * @param $fileName Name of the file to be checked
+ * @return $isReadable Whether the file is readable (and therefor exists)
+ */
+ public static function isReadableFile ($fileName) {
+ // Default is not readable
+ $isReadable = FALSE;
+
+ // Is within parameters, so check if it is a file and readable
+ $isReadable = ((self::isReachableFilePath($fileName)) && (file_exists($fileName)) && (is_file($fileName)) && (is_readable($fileName)));
+
+ // Return status
+ return $isReadable;
+ }
}
// [EOF]