public function pjActionClean() { $this->checkLogin(); if (!$this->isAdmin()) { $this->set('status', 2); return; } if (isset($_POST['clean_step'])) { if ($_POST['clean_step'] == 1) { $pjMultiLangModel = pjMultiLangModel::factory(); $arr = pjMultiLangModel::factory()->select('t1.id')->join('pjField', 't2.id=t1.foreign_id', 'left')->where('t1.model', 'pjField')->where('t2.id IS NULL')->findAll()->getDataPair(null, 'id'); if (!empty($arr)) { $pjMultiLangModel->reset()->whereIn('id', $arr)->eraseAll(); $this->pjActionUpdateFieldsIndex(); } } if ($_POST['clean_step'] == 2) { if (isset($_POST['field_id']) && !empty($_POST['field_id'])) { pjFieldModel::factory()->whereIn('id', $_POST['field_id'])->eraseAll(); pjMultiLangModel::factory()->where('model', 'pjField')->whereIn('foreign_id', $_POST['field_id'])->eraseAll(); $this->pjActionUpdateFieldsIndex(); } } pjUtil::redirect($_SERVER['PHP_SELF'] . "?controller=pjLocale&action=pjActionClean"); } # Step 1 $step1_arr = pjMultiLangModel::factory()->select('t1.id')->join('pjField', 't2.id=t1.foreign_id', 'left')->where('t1.model', 'pjField')->where('t2.id IS NULL')->findAll()->getDataPair(null, 'id'); $this->set('step1_arr', $step1_arr); # Step 2 $keys = $start = $data = array(); pjToolkit::readDir($data, PJ_APP_PATH); foreach ($data as $file) { $ext = pjToolkit::getFileExtension($file); if ($ext !== 'php') { continue; } $string = file_get_contents($file); if ($string !== FALSE) { preg_match_all('/__\\(\\s*\'(\\w+)\'\\s*(?:,\\s*(true|false))?\\)/i', $string, $matches); if (!empty($matches[1])) { foreach ($matches[1] as $k => $m) { if (!empty($matches[2][$k]) && strtolower($matches[2][$k]) == 'true') { $start[] = $m; } else { $keys[] = $m; } } } } } $keys = array_unique($keys); $keys = array_values($keys); $start = array_unique($start); $start = array_values($start); if (!empty($keys) || !empty($start)) { $field_arr = pjFieldModel::factory()->whereNotIn('t1.key', $keys)->whereNotIn("SUBSTRING_INDEX(t1.key, '_ARRAY_', 1)", $start)->orderBy("FIELD(t1.type, 'backend', 'frontend', 'arrays'), t1.key ASC", false)->findAll()->getData(); $this->set('field_arr', $field_arr); } $this->appendJs('pjLocale.js', $this->getConst('PLUGIN_JS_PATH')); }