/** * @param Dkplus_Model_Criteria_Interface $crit = null * @return int The number of deleted records. Die Anzahl der gelöschten Datensätze. */ public function delete(Dkplus_Model_Criteria_Interface $crit = null){ if( $this->isReadOnly() ){ /** * @see Dkplus_Model_Exception */ //require-once 'Dkplus/Model/Exception.php'; throw new Dkplus_Model_Exception('Model is read-only.'); } $count = count($this->_getData()); if( is_null($crit) ){ $this->_data = array(); $this->_write($this->_data); return $count; } $exec = new Dkplus_Model_Criteria_Executor(); $exec->setArray($this->_getData()) ->setAlias($this->_alias) ->setCriteria($crit); $dataToDelete = $exec->execute(); $count = count($dataToDelete); $this->_data = array_udiff($this->_getData(), $dataToDelete, array($this, '_arrayCompare')); $this->_write($this->_getData()); return $count; }
/** * @param Dkplus_Model_Criteria_Interface $crit * @return Dkplus_Model_Rowset_Interface */ public function filter(Dkplus_Model_Criteria_Interface $crit){ //Zuerst erschaffen wir einen neuen Rowset, der nachher zurückgegeben wird. $rowset = $this->_fetchNewRowset(); $exec = new Dkplus_Model_Criteria_Executor(); $exec->setCriteria($crit); $exec->setArray($this->_rows); $rowset->addRows($exec->execute()); return $rowset; }