/**
  * 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;
 }