public function registerRenditions(array $existing = array())
{
$this->renditions = array();
foreach (glob(APPLICATION_PATH . $this->config['theme_path'] . '/publication_*/theme_*/theme.xml') as $themeInfo) {
$xml = simplexml_load_file($themeInfo);
if (!$xml->renditions) {
continue;
}
foreach ($xml->renditions->rendition as $rendition) {
$renditionName = (string) $rendition['name'];
if (!isset($this->renditions[$renditionName])) {
if (array_key_exists($renditionName, $existing)) {
$existing[$renditionName]->setWidth($rendition['width']);
$existing[$renditionName]->setHeight($rendition['height']);
$existing[$renditionName]->setSpecs($rendition['specs']);
$existing[$renditionName]->setOffset($rendition['offset']);
$existing[$renditionName]->setLabel($rendition['label']);
$this->renditions[$renditionName] = $existing[$renditionName];
} else {
$this->orm->persist($this->renditions[$renditionName] = new Rendition($rendition['width'], $rendition['height'], $rendition['specs'], $rendition['name']));
}
}
}
}
$this->orm->flush();
}