X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fcriteria%2Fclass_BaseCriteria.php;h=dfa0d4ee7879f7291884ee15b3f220b126df3a93;hp=b0edb27dc270a17c2be4bb7cf46b110a04a9dc5f;hb=89f25725096fa51850e2d4d0a2ed57906c0b23e0;hpb=ccc1db45751c976264513b8c51884e39f8214b12 diff --git a/inc/classes/main/criteria/class_BaseCriteria.php b/inc/classes/main/criteria/class_BaseCriteria.php index b0edb27d..dfa0d4ee 100644 --- a/inc/classes/main/criteria/class_BaseCriteria.php +++ b/inc/classes/main/criteria/class_BaseCriteria.php @@ -27,18 +27,6 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { */ private $wrapperConfigEntry = ''; - /** - * Criteria to handle - */ - private $criteria = array( - // Default - 'default' => array(), - // Choice - 'choice' => array(), - // .. and exclude - 'exclude' => array(), - ); - /** * Protected constructor * @@ -62,7 +50,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE)); // Determine it - $isSet = isset($this->criteria[$criteriaType][$criteriaKey]); + $isSet = $this->isGenericArrayKeySet('criteria', $criteriaType, $criteriaKey); // Return it return $isSet; @@ -116,7 +104,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { * @return $criteria */ public final function getCriteriaArray ($criteriaType = 'default') { - return $this->criteria[$criteriaType]; + return $this->getGenericSubArray('criteria', $criteriaType); } /** @@ -137,6 +125,26 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { return $this->getCriteriaArray('exclude'); } + /** + * Unsets a criteria key from all criteria types + * + * @param $criteriaKey Criteria key to unset + * @return void + */ + public final function unsetCriteria ($criteriaKey) { + // Make sure no 'my-' or 'my_' passes this point + assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE)); + + // Convert dashes to underscore + $criteriaKey = $this->convertDashesToUnderscores($criteriaKey); + + // "Walk" through all criterias + foreach ($this->getGenericArray('criteria') as $criteriaType => $dummy) { + // Remove it + $this->unsetGenericArrayElement('criteria', $criteriaType, $criteriaKey); + } // END - foreach + } + /** * Add criteria, this method converts dashes to underscores because dashes * are not valid for criteria keys. @@ -154,16 +162,10 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { $criteriaKey = $this->convertDashesToUnderscores($criteriaKey); // Debug message - /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(strtoupper($criteriaType) . '(' . $this->__toString() . ')-CRITERIA[' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(strtoupper($criteriaType) . '(' . $this->__toString() . ')-CRITERIA[' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue); - // Is it already there? - if ($this->isKeySet($criteriaType, $criteriaKey)) { - // Append it - $this->criteria[$criteriaType][$criteriaKey] .= ',' . (string) $criteriaValue; - } else { - // Add it - $this->criteria[$criteriaType][$criteriaKey] = (string) $criteriaValue; - } + // Append it + $this->appendStringToGenericArrayElement('criteria', $criteriaType, $criteriaKey, $criteriaValue); } /** @@ -182,7 +184,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(strtoupper($criteriaType) . '(' . $this->__toString() . ')-CRITERIA[' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteriaValue=' . $criteriaValue); // Add it - $this->criteria['choice'][$this->convertDashesToUnderscores($criteriaKey)][] = (string) $criteriaValue; + $this->pushValueToGenericArrayElement('criteria', 'choice', $this->convertDashesToUnderscores($criteriaKey), (string) $criteriaValue); } /** @@ -227,7 +229,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { $criteriaKey = $this->convertDashesToUnderscores($criteriaKey); // Debug message - //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA[' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteria()=' . count($this->criteria[$criteriaType])); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(strtoupper($criteriaType) . '-CRITERIA[' . __LINE__ . ']: criteriaKey=' . $criteriaKey . ',criteria()=' . $this->countGenericArrayGroup('criteria', $criteriaType))); // Default is not found $value = FALSE; @@ -235,7 +237,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { // Is the criteria there? if ($this->isKeySet($criteriaType, $criteriaKey)) { // Then use it - $value = $this->criteria[$criteriaType][$criteriaKey]; + $value = $this->getGenericArrayKey('criteria', $criteriaType, $criteriaKey); } // END - if // Return the value @@ -273,7 +275,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { */ public function ifEntryMatches (array $entryArray, $criteriaType = 'default') { // First nothing matches and nothing is counted - $matches = false; + $matches = FALSE; $counted = 0; // Walk through all entries @@ -285,7 +287,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { $key = $this->convertDashesToUnderscores($key); // Then walk through all search criteria - foreach ($this->criteria[$criteriaType] as $criteriaKey => $criteriaValue) { + foreach ($this->getGenericSubArray('criteria', $criteriaType) as $criteriaKey => $criteriaValue) { // Make sure no 'my-' or 'my_' passes this point assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE) && (!is_bool($criteriaValue))); @@ -301,7 +303,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { } // END - foreach // Now check if expected criteria counts match - $matches = ($counted == count($this->criteria[$criteriaType])); + $matches = ($counted == $this->countGenericArrayGroup('criteria', $criteriaType))); // Return the result return $matches; @@ -338,16 +340,16 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { */ public function getCacheKey ($onlyKeys = array(), $criteriaType = 'default') { // Debug message - //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput($this->__toString() . ': criteriaType=' . $criteriaType . ',count()=' . count($this->criteria)); + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput($this->__toString() . ': criteriaType=' . $criteriaType . ',count()=' . $this->countGenericArray('criteria'))); // Make sure the criteria is there - assert((isset($this->criteria[$criteriaType])) && (is_array($this->criteria[$criteriaType]))); + assert($this->isValidGenericArrayGroup('criteria', $criteriaType)); // Initialize the key $cacheKey = ''; // Now walk through all criterias - foreach ($this->criteria[$criteriaType] as $criteriaKey => $criteriaValue) { + foreach ($this->getGenericSubArray('criteria', $criteriaType) as $criteriaKey => $criteriaValue) { // Make sure no 'my-' or 'my_' passes this point assert((strpos($criteriaKey, 'my-') === FALSE) && (strpos($criteriaKey, 'my_') === FALSE) && (!is_bool($criteriaValue))); @@ -414,7 +416,7 @@ class BaseCriteria extends BaseFrameworkSystem implements Criteria { */ public final function count ($criteriaType = 'default') { // Return it - return count($this->criteria[$criteriaType]); + return $this->countGenericArrayGroup('criteria', $criteriaType)); } /**