private function setLanguageHandler(MetaLanguage $p_oldLanguage, MetaLanguage $p_newLanguage)
{
static $languageHandlerRunning = false;
if ($languageHandlerRunning || $p_newLanguage->same_as($p_oldLanguage)) {
return;
}
$languageHandlerRunning = true;
$this->m_readonlyProperties['url']->language = $p_newLanguage;
$this->m_objects['language'] = $p_newLanguage;
if ($this->article->defined()) {
$oldArticle = $this->m_objects['article'];
$newArticle = new MetaArticle($p_newLanguage->number, $oldArticle->number);
$this->setArticleHandler($oldArticle, $newArticle);
}
if ($this->section->defined() && !$this->m_objects['article']->defined()) {
$oldSection = $this->m_objects['section'];
$newSection = new MetaSection($oldSection->publication->identifier, $oldSection->issue->number, $p_newLanguage->number, $oldSection->number);
$this->setSectionHandler($oldSection, $newSection);
}
if ($this->issue->defined() && !$this->m_objects['section']->defined()) {
$oldIssue = $this->m_objects['issue'];
$newIssue = new MetaIssue($oldIssue->publication->identifier, $p_newLanguage->number, $oldIssue->number);
$this->setIssueHandler($oldIssue, $newIssue);
}
$languageHandlerRunning = false;
}