/**
* Removing unused language elements from database.
* @return integer The number of removed language elements.
*/
private function _optimizeDatabase()
{
$scanner = new Scanner();
$this->_languageItems = $scanner->getLanguageItems();
$this->_createLanguageSource();
// Removing active elements from array.
// Only removable inactive elements left in array.
foreach ($this->_languageItems as $category => $messages) {
foreach ($messages as $message => $id) {
if (isset($this->_languageSources[$category][$message])) {
unset($this->_languageSources[$category][$message]);
}
}
}
$ids = [];
foreach ($this->_languageSources as $messages) {
foreach ($messages as $id) {
$ids[$id] = true;
// Duplication filtering
}
}
LanguageSource::deleteAll(['IN', 'id', array_keys($ids)]);
return count($ids);
}