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);
 }