public static function getById($id)
{
$id = intval($id);
if ($id < 1) {
return null;
}
$cacheKey = "asset_" . $id;
try {
$asset = \Zend_Registry::get($cacheKey);
if (!$asset) {
throw new \Exception("Asset in registry is null");
}
} catch (\Exception $e) {
try {
if (!($asset = \Pimcore\Cache::load($cacheKey))) {
$asset = new Asset();
$asset->getDao()->getById($id);
$className = "Pimcore\\Model\\Asset\\" . ucfirst($asset->getType());
$asset = \Pimcore::getDiContainer()->make($className);
\Zend_Registry::set($cacheKey, $asset);
$asset->getDao()->getById($id);
\Pimcore\Cache::save($asset, $cacheKey);
} else {
\Zend_Registry::set($cacheKey, $asset);
}
} catch (\Exception $e) {
Logger::warning($e->getMessage());
return null;
}
}
if (!$asset) {
return null;
}
return $asset;
}