/** * Get an entry from the model * @param integer|object $entry * @return mixed */ protected function getEntry($site, $locale, $recursiveDepth, $fetchUnlocalized, $entry, $idField = null) { $entryLocale = null; if ($entry instanceof LocalizedEntry) { $entryLocale = $entry->getLocale(); $isObject = true; } elseif (is_object($entry)) { $isObject = true; } else { $isObject = false; } if ($isObject && ($entryLocale && $entryLocale == $locale)) { return $entry; } elseif ($isObject) { $idField = ModelTable::PRIMARY_KEY; $id = $this->model->getReflectionHelper()->getProperty($entry, $idField); } else { if (!$idField) { $idField = ModelTable::PRIMARY_KEY; } $id = $entry; } if ($idField == ModelTable::PRIMARY_KEY) { return $this->model->createProxy($id, $locale); } $query = $this->model->createQuery($locale); $query->setRecursiveDepth($recursiveDepth); $query->addCondition('{' . $idField . '} = %1%', $id); if ($fetchUnlocalized) { $query->setFetchUnlocalized(true); } $entry = $query->queryFirst(); if (!$entry && is_numeric($id) && $idField != ModelTable::PRIMARY_KEY) { $query = $this->model->createQuery($locale); $query->setRecursiveDepth($recursiveDepth); $query->addCondition('{' . ModelTable::PRIMARY_KEY . '} = %1%', $id); if ($fetchUnlocalized) { $query->setFetchUnlocalized(true); } $entry = $query->queryFirst(); } return $entry; }