dbObj = Zend_Db::factory('Pdo_Mysql', array( 'host' => 'localhost', 'username' => 'DUMMY', 'password' => 'DUMMY', 'dbname' => 'DUMMY' )); $this->dbObj->getConnection(); } protected function holeDatenArray(){ $select = $this->dbObj->select(); $select->from('alt_galerie_import_kf', array('id', 'name', 'scoot', 'mail', 'ort', 'speed', 'technik' => 'technic', 'optik' => 'optic', 'in_planung' => 'plan', 'kommentar' => 'COMMENT', 'anzahl_fotos' => 'pic', 'aktiv' => 'active', 'typ' => 'TYPE')); $select->where('pic > 0'); $select->where('active > 0'); $select->order('id ASC'); $stmt = $this->dbObj->query($select); $result = $stmt->fetchAll(); return $result; } protected function _existiertEintragMitTitel($parTitel){ $select = $this->dbObj->select(); $select->from('drupal_node_revisions', array('anzahl' => 'count(*)')); $select->where('title = ?', $parTitel); $stmt = $this->dbObj->query($select); $result = $stmt->fetchAll(); return !empty($result[0]['anzahl']); } protected function _erzeugeDrupalDatensatz(array $parDbInhalteArray, array $parBilderFidArray){ $nodeRevisionInhalteArray = array('title' => $parDbInhalteArray['name'], 'uid' => self::$uidKennung, 'body' => '', 'teaser' => '', 'log' => 'JP Importscript', 'timestamp' => time(), 'format' => 0); //NODE-REVISION ERZEUGEN!! if($this->testmodus === false){ $erzeugt = $this->dbObj->insert('drupal_node_revisions', $nodeRevisionInhalteArray); $revisionLastInsertVid = $this->dbObj->lastInsertId(); } else { //Fake $erzeugt = true; } if($this->debug){ echo('
##### NODE-REVISION ######
'); echo('
'.print_r($nodeRevisionInhalteArray, true).'
'); } $nodeInhalteArray = array( 'vid' => $revisionLastInsertVid, 'type' => self::$galerieElementKennung, 'language' => self::$sprachkennung, 'title' => $parDbInhalteArray['name'], 'uid' => self::$uidKennung, 'status' => self::$statusAktivKennung, 'created' => time(), 'changed' => time(), 'comment' => 0, 'promote' => 0, 'moderate' => 0, 'sticky' => 0, 'tnid' => 0, 'translate' => 0 ); //NODE-EINTRAG ERZEUGEN!! if($this->testmodus === false){ $erzeugt = $this->dbObj->insert('drupal_node', $nodeInhalteArray); } else { //Fake $erzeugt = true; } if($this->debug){ echo('
##### BASISDATEN ######
'); echo('
'.print_r($nodeInhalteArray, true).'
'); } if(empty($erzeugt)){ throw new Exception('Ein Datensatz konnte nicht erzeugt werden!'); } $lastInsertId = $this->dbObj->lastInsertId(); //VID = NID $updateWerteArray = array('nid' => $lastInsertId); if($this->testmodus === false){ $this->dbObj->update('drupal_node_revisions', $updateWerteArray, 'vid = '.$revisionLastInsertVid); } //CCK-Eintrag //Geschwindigkeit umwandeln (km/h entfernen) $geschwindigkeitAlsZahl = $parDbInhalteArray['speed']; if(empty($geschwindigkeitAlsZahl)){ //Keine angegeben! $geschwindigkeitAlsZahl = null; } elseif(!is_numeric($geschwindigkeitAlsZahl)){ //Keine Zahl! $ergebnis = ''; $l = strlen($geschwindigkeitAlsZahl); for ($i = 0; $i < $l; $i++){ $einzelBuchstabe = $geschwindigkeitAlsZahl[$i]; //Zahlen durchlaufen und nur diese verwenden if(in_array($einzelBuchstabe, array('0','1','2','3','4','5','6','7','8','9'), false)){ $ergebnis.= $einzelBuchstabe; } } if($ergebnis !== ''){ $geschwindigkeitAlsZahl = $ergebnis; } else { $geschwindigkeitAlsZahl = null; } } $cckDbWerteArray = array('vid' => $lastInsertId, 'nid' => $lastInsertId, 'field_galerieelement_techn_tun_value' => $parDbInhalteArray['technik'], 'field_galerieelement_opt_tun_value' => $parDbInhalteArray['optik'], 'field_galerieelement_in_planung_value' => $parDbInhalteArray['in_planung'], 'field_galerieelement_geschw_value' => $geschwindigkeitAlsZahl, 'field_galerieelement_techn_tun_format' => null, 'field_galerieelement_opt_tun_format' => null, 'field_galerieelement_in_planung_format' => null); if($this->testmodus === false){ $erzeugtDateien = $this->dbObj->insert('drupal_content_type_galerieelement', $cckDbWerteArray); } if($this->debug){ echo('
##### CCK ######
'); echo('
'.print_r($cckDbWerteArray, true).'
'); } //Datensatz für jedes Bild erzeugen if(!empty($parBilderFidArray)){ $i=0; foreach($parBilderFidArray as $einzelBildFid){ //BILDER-DATEIEN $cckBilderDbWerteArray=array('vid' => $lastInsertId, 'nid' => $lastInsertId, 'delta' => $i, 'field_galerieelement_bilder_fid' => $einzelBildFid, 'field_galerieelement_bilder_list' => 1, 'field_galerieelement_bilder_data' => self::$emptyDataReplacement); if($this->testmodus === false){ $erzeugtDateien = $this->dbObj->insert('drupal_content_field_galerieelement_bilder', $cckBilderDbWerteArray); } if($this->debug){ echo('
##### BILDER ######
'); echo('
'.print_r($cckBilderDbWerteArray, true).'
'); } $i++; } } $herstellerTaxIdArray = array( 'aprilia' => '30', 'other' => '31', 'gilera' => '32', 'yamaha' => '33', 'italjet' => '34', 'cpi' => '35', 'mbk' => '36', 'malaguti' => '37', 'piaggio' => '38'); if(key_exists($parDbInhalteArray['typ'], $herstellerTaxIdArray)){ $rollerHerstellerId = $herstellerTaxIdArray[$parDbInhalteArray['typ']]; } else { $rollerHerstellerId = self::$taxonomieRollerHerstellerUnbekanntId; } //TAXONOMIE-Werte erzeugen $taxonomieWerteArray1 = array('vid' => $lastInsertId, 'nid' => $lastInsertId, 'tid' => $rollerHerstellerId); $taxonomieWerteArray2 = array('vid' => $lastInsertId, 'nid' => $lastInsertId, 'tid' => self::$taxonomieRollerTypUnbekanntId); if($this->testmodus === false){ $erzeugtDateien = $this->dbObj->insert('drupal_term_node', $taxonomieWerteArray1); $erzeugtDateien = $this->dbObj->insert('drupal_term_node', $taxonomieWerteArray2); } if($this->debug){ echo('
##### TAXONOMIE ######
'); echo('
'.print_r($taxonomieWerteArray1, true).'
'); echo('
'.print_r($taxonomieWerteArray2, true).'
'); } //ÜBERSETZUNG-Werte erzeugen $name = $parDbInhalteArray['name']; while($this->_istUebersetzungVorhanden(self::$nodeAliasPraefix.$name, self::$sprachkennung)){ //Zahl anfügen wenn Name bereits vorhanden $name = $name.'_1'; } $uebersetzungWerteArray = array('src' => self::$nodePraefix.$lastInsertId, 'dst' => self::$nodeAliasPraefix.$name, 'language' => self::$sprachkennung); if($this->testmodus === false){ $erzeugtDateien = $this->dbObj->insert('drupal_url_alias', $uebersetzungWerteArray); } if($this->debug){ echo('
##### ÜBERSETZUNG ######
'); echo('
'.print_r($uebersetzungWerteArray, true).'
'); } return !empty($erzeugt) and !empty($erzeugtDateien); } protected function _istUebersetzungVorhanden($parTitel, $parSprachkennung){ $select = $this->dbObj->select(); $select->from('drupal_url_alias', array('anzahl'=>'count(*)')); $select->where('dst = ?', $parTitel); $select->where('language = ?', $parSprachkennung); $stmt = $this->dbObj->query($select); $result = $stmt->fetchAll(); return !empty($result[0]['anzahl']); } protected function _erzeugeEinzelDateiDatensatz($parDateiname, $parDateipfad, $parDateiMime, $parDateiGroesse){ //DATEIEN-DATENSATZ ERZEUGEN!!! $dateienDbInhalteArray = array('uid' => self::$uidKennung, 'filename' => $parDateiname, 'filepath' => $parDateipfad, 'filemime' => $parDateiMime, 'filesize' => $parDateiGroesse, 'status' => self::$statusAktivKennung, 'timestamp' => time()); if($this->testmodus === false){ $this->dbObj->insert('drupal_files', $dateienDbInhalteArray); } if($this->debug){ echo('
##### BILDER-DATENBANK ######
'); echo('
'.print_r($dateienDbInhalteArray, true).'
'); } $lastInsertID = $this->dbObj->lastInsertId(); return $lastInsertID; } protected function _erzeugeDrupalDateien(array $parDbInhalteArray){ $i = 1; $dateiFidArray = array(); while($i <= $parDbInhalteArray['anzahl_fotos']){ //Fotos durchlaufen $dateiname = $parDbInhalteArray['id'].'_'.$i.'.jpg'; $dateipfad = self::$importDateienPfad.'/'.$dateiname; $dateinameThumb = $parDbInhalteArray['id'].'_'.$i.'_p.jpg'; $dateipfadThumb = self::$importDateienPfad.'/'.$dateinameThumb; //Umbenennung damit keine doppelten Einträge bei KF $zielpfad = self::$zielDateiPfad.'/'.'scooter_roller_'.$dateiname; if(file_exists($dateipfad)){ //Datei zum Ziel kopieren copy($dateipfad, $zielpfad); $dateiMime = mime_content_type($dateipfad); $dateiGroesse = filesize($dateipfad); //Datei Existiert! In DB Anlegen! $einzelFid = $this->_erzeugeEinzelDateiDatensatz($dateiname, $dateipfad, $dateiMime, $dateiGroesse); if($this->debug){ echo('
##### BILDER ######
'); echo('Datei: '.$dateiname.'
'); echo(''); } $dateiFidArray[$einzelFid] = $einzelFid; //Dateithumb loeschen if($this->testmodus === false){ unlink($dateipfadThumb); } } else { trigger_error('Datei "'.$dateipfad.'" nicht gefunden, wird übersprungen.'); } $i++; } return $dateiFidArray; } protected function _verarbeiteEinzelGalerieElement(array $parDbInhalteArray){ if($this->debug){ echo('
##### ROHDATEN ######
'); echo('
'.print_r($parDbInhalteArray, true).'
'); } if(!$this->_existiertEintragMitTitel($parDbInhalteArray['name']) and $parDbInhalteArray['typ'] != 'kolbenfressa' and !$parDbInhalteArray['typ'] != 'kolben'){ //DB-Export $fidArray = $this->_erzeugeDrupalDateien($parDbInhalteArray); if(!empty($fidArray)){ $this->_erzeugeDrupalDatensatz($parDbInhalteArray, $fidArray); } } else { echo('Eintrag mit Titel: "'.$parDbInhalteArray['name'].'", Typ: "'.$parDbInhalteArray['typ'].'" wird nicht verwendet, ueberspringe!'); } echo('
'); } public function proceed(){ echo('+++++++++ Import gestartet! +++++++++
'); try { $vorbereiteteDaten = $this->holeDatenArray(); foreach ($vorbereiteteDaten as $einzelVorbereiteteDaten){ $this->_verarbeiteEinzelGalerieElement($einzelVorbereiteteDaten); } echo('+++++++++ Import erfolgreich beendet! +++++++++'); }catch (Exception $e){ echo('+++++++++ Import fehlgeschlagen! +++++++++'); throw $e; } } } $giObj = new GalerieImport(); $giObj->proceed(); ?>