cli) { return true; } return parent::getAuth(); } function post() { $this->transObj = DB_DataObject::Factory('vendinfo'); $this->transObj->query('BEGIN'); PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError')); $img = DB_DataObject::Factory('images'); $img->setFrom(array( 'onid' => 0, 'ontable' => 'ipshead' )); $img->onUpload(false); require_once 'File/Convert.php'; $fc = new File_Convert($img->getStoreName(), $img->mimetype ); $csv = $fc->convert('text/csv'); $this->importCsv($csv); } function importCsv($csv) { ini_set("auto_detect_line_endings", true); $fh = fopen($csv, 'r'); if (!$fh) { $this->jerr("invalid file"); } $req = array( 'TYPE','CODE', 'DISTRICT1_CHI', 'DISTRICT1_ENG', 'DISTRICT2_CHI', 'DISTRICT2_ENG', 'CHI ADDRESS', 'ENG ADDRESS', ); $cols = false; $rows = array(); while(false !== ($n = fgetcsv($fh,10000, ',', '"'))) { if (!$cols) { $cols = array(); foreach($n as $k) { $cols[] = strtoupper(trim($k)); } if (empty($cols)) { continue; } foreach($req as $r) { if (!in_array($r,$cols)) { $cols = false; break; } } continue; } foreach($cols as $i=>$k) { $row[$k] = trim($n[$i]); } $rows[] = $row; } if (empty($cols)) { $this->jerr("could not find a row with " . implode(' / ', $req)); } fclose($fh); $errors = array(); $count = 0; foreach($rows as $row){ $vendinfo = DB_DataObject::factory('vendinfo'); if(!$vendinfo->get('vend_name', $row['TYPE'])){ $vendinfo = DB_DataObject::factory('vendinfo'); $vendinfo->setFrom(array( 'vend_name' => $row['TYPE'], 'vend_number' => preg_replace('/[^a-z0-9]/i', '', $row['TYPE']), 'vend_vendtype_id' => $vendinfo->sqlValue("getvendtypeid('PICKUPS'::text)") )); foreach ($vendinfo->defaults() as $k => $v){ if(!isset($vendinfo->$k)){ $vendinfo->$k = $v; } } $vendinfo->insert(); } $vendaddrinfo = DB_DataObject::factory('vendaddrinfo'); if($vendaddrinfo->get('vendaddr_code', $row['CODE'])){ continue; } $addr = DB_DataObject::factory('addr'); $addr->setFrom(array( 'addr_active' => true, 'addr_city' => $row['DISTRICT2_ENG'], 'addr_line1' => $row['ENG ADDRESS'], 'addr_line2' => $row['CHI ADDRESS'], )); $addr->genNumber(); $addr->insert(); if(!$addr->addr_id){ $errors[] = $row['CODE']; continue; } $vendaddrinfo = DB_DataObject::factory('vendaddrinfo'); $vendaddrinfo->setFrom(array( 'vendaddr_vend_id' => $vendinfo->pid(), 'vendaddr_code' => $row['CODE'], 'vendaddr_name' => $row['CODE'], 'vendaddr_addr_id' => $addr->pid(), 'vendaddr_taxzone_id' => $vendinfo->vend_taxzone_id )); $vendaddrinfo->insert(); if(!$vendaddrinfo->vendaddr_id){ $errors[] = $row['CODE']; } $count++; } if(!empty($errors)){ $this->jerr("Below code got error : \n" . implode("\n", $errors)); } $this->jok('data imported successfully! total : ' . $count); } }