/** * Detecting new language elements. */ public function actionScan() { $this->stdout("Scanning translations...\n", Console::BOLD); $scanner = new Scanner(); $items = $scanner->run(); $this->stdout("{$items} new item(s) inserted into database.\n"); }
/** * Detecting new language elements. * @return string */ public function run() { $scanner = new Scanner(); $scanner->run(); $newDataProvider = $this->controller->createLanguageSourceDataProvider($scanner->getNewLanguageElements()); $oldDataProvider = $this->_createLanguageSourceDataProvider($scanner->getRemovableLanguageSourceIds()); return $this->controller->render('scan', ['newDataProvider' => $newDataProvider, 'oldDataProvider' => $oldDataProvider]); }
/** * Initializing $_languageElements array. * @param array $languageSourceIds */ private function _initLanguageElements($languageSourceIds) { $languageSources = LanguageSource::findAll(['id' => $languageSourceIds]); foreach ($languageSources as $languageSource) { $this->_languageElements[$languageSource->category][$languageSource->message] = $languageSource->id; $category = Console::ansiFormat($languageSource->category, [Console::FG_RED]); $message = Console::ansiFormat($languageSource->message, [Console::FG_RED]); $this->_scanner->stdout('category: ' . $category . ', message: ' . $message); } }
/** * 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); }
/** * Detecting new language elements. * @return string */ public function run() { $scanner = new Scanner(); return $this->controller->render('scan', ['items_count' => $scanner->scanning()]); }