public function pjActionImportConfirm() { $this->checkLogin(); if (!$this->isAdmin()) { $this->set('status', 2); return; } $locale_arr = pjLocaleModel::factory()->select('t1.*, t2.title')->join('pjLocaleLanguage', 't2.iso=t1.language_iso')->orderBy('t1.sort ASC')->findAll()->getDataPair('id'); $columns = count($locale_arr) + 2; if (isset($_POST['import'])) { if (isset($_FILES['file'], $_POST['separator'])) { $pjUpload = new pjUpload(); $pjUpload->setAllowedExt(array('csv', 'txt')); $pjUpload->setAllowedTypes(array('text/csv', 'application/vnd.ms-excel', 'application/octet-stream')); if ($pjUpload->load($_FILES['file'])) { if (($handle = fopen($pjUpload->getFile('tmp_name'), "rb")) !== FALSE) { $separators = array('comma' => ",", 'semicolon' => ";", 'tab' => "\t"); $separator = $separators[$_POST['separator']]; $field_arr = pjFieldModel::factory()->findAll()->getDataPair('id', 'key'); $i = 1; $prev_cnt = 0; $header = array(); while (($data = fgetcsv($handle, 0, $separator)) !== FALSE) { if (!empty($data)) { $nl = preg_grep('/\\r\\n|\\n/', $data); if (!empty($nl)) { $err = 'PAL14'; break; } $cnt = count($data); if ($cnt <= 2) { $err = 'PAL15'; break; } if ($prev_cnt > 0 && $cnt != $prev_cnt) { $err = 'PAL16'; break; } if ($i > 1 && isset($id, $key) && $id !== FALSE && $key !== FALSE) { if (!preg_match('/^\\d+$/', $data[$id]) || !preg_match('/^[\\w\\-]+$/', $data[$key])) { $err = 'PAL19'; break; } } else { $header = $data; $id = array_search('id', $data); $key = array_search('key', $data); if ($id === FALSE || $key === FALSE) { $err = 'PAL18'; break; } } $prev_cnt = $cnt; $i += 1; } else { $err = 'PAL17'; break; } } fclose($handle); } else { $err = 'PAL13'; } } else { $err = 'PAL12'; } } else { $err = 'PAL11'; } if (!isset($err)) { $locales = array(); foreach ($header as $k => $col) { if (in_array($k, array($id, $key))) { continue; } list($locales[], ) = explode('::', $col); } $key = md5(uniqid(rand(), true)); $dest = PJ_UPLOAD_PATH . $key . ".csv"; if ($pjUpload->save($dest)) { $_SESSION[$key] = array('name' => $dest, 'separator' => $_POST['separator'], 'locales' => $locales); $err = 'PAL20&key=' . $key; } else { $err = 'PAL20'; } } pjUtil::redirect(PJ_INSTALL_URL . "index.php?controller=pjLocale&action=pjActionImportConfirm&tab=1&err=" . $err); } $this->set('locale_arr', $locale_arr); }