Пример #1
0
 /**
  * Upload and parse XML file
  *
  * @param array $file
  * @access public
  * @return boolean
  */
 public function load($file)
 {
     $pjUpload = new pjUpload();
     $pjUpload->setAllowedExt(array('xml'));
     $data = array();
     if ($pjUpload->load($file)) {
         $filename = $pjUpload->getFile('tmp_name');
         if (function_exists('simplexml_load_file')) {
             $xml = simplexml_load_file($filename);
             $xml = (array) $xml;
             $xml = array_values($xml);
             foreach ($xml[0] as $item) {
                 $item = (array) $item;
                 foreach ($item as $k => $v) {
                     $item[$k] = strval($v);
                 }
                 $data[] = $item;
             }
             $this->setData($data);
             return true;
         }
     }
     return false;
 }
 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);
 }
Пример #3
0
 /**
  * Upload and parse CSV file
  *
  * @param array $file
  * @access public
  * @return boolean
  */
 public function load($file)
 {
     $pjUpload = new pjUpload();
     $pjUpload->setAllowedExt(array('csv'));
     $data = array();
     if ($pjUpload->load($file)) {
         $filename = $pjUpload->getFile('tmp_name');
         $i = 1;
         if (($handle = fopen($filename, "r")) !== FALSE) {
             while (($values = fgetcsv($handle, 1000, ",")) !== FALSE) {
                 if ($i == 1) {
                     $keys = $values;
                 } else {
                     $data[] = array_combine($keys, $values);
                 }
                 $i++;
             }
             fclose($handle);
             $this->data = $data;
             return true;
         }
     }
     return false;
 }