/** * Event after deleting a document * * Deletes all related documents * * @param $e \Zend_EventManager_Event * @throws Exception * @throws \Zend_Exception */ public function deleteDocument($e) { // Check if this function is not in progress if (\Zend_Registry::isRegistered('Multilingual_delete') && \Zend_Registry::get('Multilingual_delete') == 1) { return; } // Lock this event-trigger \Zend_Registry::set('Multilingual_delete', 1); /**@var Document $sourceDocument */ $sourceDocument = $e->getTarget(); // Get current language $sourceLanguage = $sourceDocument->getProperty('language'); // Remove document in each language $languages = Tool::getValidLanguages(); foreach ($languages as $language) { if ($language != $sourceLanguage) { $target = \Multilingual\Document::getDocumentInOtherLanguage($sourceDocument, $language); if ($target) { $target->delete(); } } } // Remove link to other documents $t = new Keys(); $row = $t->fetchRow('document_id = ' . $sourceDocument->getId()); $t->delete('sourcePath = "' . $row->sourcePath . '"'); // Unlock this event-trigger \Zend_Registry::set('Multilingual_delete', 0); }