function search($criteria = null, $limit = 0, $start = 0, $isCount = false) { if ($criteria == null) { $criteriaMapped = null; } else { if ($criteria instanceof Criterion) { $criteriaMapped = Criteria::mapCriteria($this->map, $criteria); } else { $criteriaMapped = $criteria->buildMappedCriteria($this->map); } } if ($isCount) { $query = $this->dialect->buildSearchCountQuery($this->map->getTableName(), $criteriaMapped); } else { $query = $this->dialect->buildSearchQuery($this->map->getTableName(), $criteriaMapped, $limit, $start); } if ($criteria instanceof Criterion) { $query = str_replace(":" . $criteriaMapped->getName(), $this->dialect->quote($criteriaMapped->getValue()), $query); } else { if ($criteria instanceof Criteria) { foreach ($criteriaMapped->getAllCriteriaFlat() as $criterionMapped) { $query = str_replace(":" . $criterionMapped->getName(), $this->dialect->quote($criterionMapped->getValue()), $query); } } } //echo("<tt>" . $query . "</tt><hr/>"); if ($isCount) { return $this->storage->invoke($query); } else { return $this->createObjectArray($this->storage->invoke($query)); } }