/**
* Returns documents
* $data can be mixed
* if data is an array, return all documents
* if data is numeric, return all documents with parent_id equal to $data
* if data is string, return all documents with parent's url key equal to $data
*
* @param mixed $data Data
*
* @return array \Gc\Document\Model
*/
public function __invoke($data = null)
{
$elements = array();
$documents = new DocumentCollection();
if (empty($data)) {
$elements = $documents->load(0)->getDocuments();
} else {
if (is_numeric($data)) {
$elements = $documents->load($data)->getDocuments();
} elseif (is_string($data)) {
$document = DocumentModel::fromUrlKey($data);
$elements = $document->getChildren();
} elseif (is_array($data)) {
foreach ($data as $documentId) {
if (empty($documentId)) {
continue;
}
$document = $this->getView()->document($documentId);
if (!empty($document)) {
$elements[] = $document;
}
}
}
}
return $elements;
}