*/
private $affectedRows = 0;
+ /**
+ * Found value
+ */
+ private $foundValue = "";
+
/**
* Protected constructor
*
}
/**
- * Rewind to the beginning
+ * Rewind to the beginning and clear array $currentRow
*
* @return void
*/
public function rewind () {
$this->currentPos = -1;
+ $this->currentRow = array();
}
/**
return $this->affectedRows;
}
+ /**
+ * Getter for found value of previous found() call
+ *
+ * @return $foundValue Found value of previous found() call
+ */
+ public final function getFoundValue () {
+ return $this->foundValue;
+ }
+
/**
* Checks wether we have out-dated entries or not
*
* @return void
*/
public function addElementsToDataSet (StoreableCriteria $criteriaInstance) {
+ // Walk only through out-dated columns
+ foreach ($this->outDated as $key => $dummy) {
+ // Does this key exist?
+ //* DEBUG: */ echo "outDated: {$key}<br />\n";
+ if ($this->find($key)) {
+ // Then update it
+ $criteriaInstance->addCriteria($key, $this->getFoundValue());
+ } // END - if
+ } // END - foreach
+ }
+
+ /**
+ * Find a key inside the result array
+ *
+ * @param $key The key we shall find
+ * @return $found Wether the key was found or not
+ */
+ public function find ($key) {
+ // By default nothing is found
+ $found = false;
+
// Rewind the pointer
$this->rewind();
// Walk through all entries
while ($this->valid()) {
- // Get next entry
+ // Advance to next entry
$this->next();
+
+ // Get the whole array
$currentEntry = $this->current();
- // Walk only through out-dated columns
- foreach ($this->outDated as $key => $dummy) {
- // Does this key exist?
- //* DEBUG: */ echo "outDated: {$key}<br />\n";
- if (isset($currentEntry[$key])) {
- // Then update it
- $criteriaInstance->addCriteria($key, $currentEntry[$key]);
- } // END - foreach
- } // END - foreach
+ // Is the element there?
+ if (isset($currentEntry[$key])) {
+ // Okay, found!
+ $found = true;
+
+ // So "cache" it
+ $this->foundValue = $currentEntry[$key];
+
+ // And stop searching
+ break;
+ } // END - if
} // END - while
+
+ // Return the result
+ return $found;
+ }
+
+ /**
+ * Solver for result index value with call-back method
+ *
+ * @param $databaseColumn Database column where the index might be found
+ * @param $wrapperInstance The wrapper instance to ask for array element
+ * @para $callBack Call-back object for setting the index;
+ * 0=object instance,1=method name
+ * @return void
+4 * @todo Find a caching way without modifying the result array
+ */
+ public function solveResultIndex ($databaseColumn, BaseDatabaseWrapper $wrapperInstance, array $callBack) {
+ // By default nothing is found
+ $indexValue = 0;
+
+ // Is the element in result itself found?
+ if ($this->find($databaseColumn)) {
+ // Use this value
+ $indexValue = $this->getFoundValue();
+ } elseif ($this->find($wrapperInstance->getIndexKey())) {
+ // Use this value
+ $indexValue = $this->getFoundValue();
+ }
+
+ // Set the index
+ call_user_func_array($callBack, array($indexValue));
}
}