public function titleFields() { $collection = new SearchableReadonlyCollection(); $collection->addAll($this->titleFields); return $collection; }
/** * Adds a display field * to the collection $titleFields * * @param string or array $field the field name * @param string $label the field label */ public function addTitleField($field, $label) { if (gettype($field) == 'array') { if (count($field) == 0) { throw new InvalidArgumentException('Invalid field'); } $criteriaCollection = new SearchableReadonlyCollection(); $searchCriteriaProperty = new ToOneRelationPropertyFilter(); $searchCriteriaProperty->setCriteriaAttribute($field[0]); $titleField = new AsyncSearchCriteriaTitleField($field[0], $label); for ($i = 1; $i < count($field); $i++) { if ($i == count($field) - 1) { $searchCriteria = new SearchCriteria(); $searchCriteria->setCriteriaAttribute($field[$i]); $criteriaCollection->add($searchCriteria); } else { $searchCriteriaPropertyAux = new ToOneRelationPropertyFilter(); $searchCriteriaPropertyAux->setCriteriaAttribute($field[$i]); $criteriaCollection->add($searchCriteriaPropertyAux); } } $i = 1; foreach ($criteriaCollection as $criteria) { if ($i < $criteriaCollection->count()) { $collectionAux = $criteriaCollection->sliceFrom($i); $criteria->setSearchCriteria($collectionAux->first()); $i++; } } $searchCriteriaProperty->setSearchCriteria($criteriaCollection->first()); $criteriaCollection->reverse(); $searchCriteria = $criteriaCollection->first(); } else { $searchCriteria = new SearchCriteria(); $searchCriteria->setCriteriaAttribute($field); $titleField = new AsyncSearchCriteriaTitleField($field, $label); } $filterType = new OrStringFilterType(); $dataType = new SearchDataTypeString(); $filterType->setSearchDataType($dataType); $searchCriteria->setSearchFilterType($filterType); if (gettype($field) == 'array') { $titleField->setSearchCriteria($searchCriteriaProperty); } else { $titleField->setSearchCriteria($searchCriteria); } $this->titleFields[] = $titleField; }