/** * @param bool $resetConnection bedeutet hier das DBAL Object Connection. die PDO Connection wird wiederverwendet (wenn möglich) * @return Doctrine\ORM\EntityManager */ public function getEntityManager($con = NULL, $reset = FALSE, $resetConnection = FALSE) { if (!isset($con)) { $con = $this->getConnectionName(); } if (!isset($this->entityManagers[$con]) || $reset) { // wenn reset ist und wir noch eine offene connection haben, wollen wir diese nehmen if ($resetConnection) { $connection = $this->getConnectionOptions($con); if (isset($this->entityManagers[$con])) { // benutzt die alte PDO low-level connection $dbalConnection = $this->entityManagers[$con]->getConnection(); if ($dbalConnection->isTransactionActive()) { $dbalConnection->rollback(); } $connection['pdo'] = $dbalConnection->getWrappedConnection(); } } elseif ($reset && isset($this->entityManagers[$con])) { $connection = $this->entityManagers[$con]->getConnection(); // benutze das DBAL/Connection Object der "alten" Verbindung } else { $connection = $this->getConnectionOptions($con); } $entityManager = $this->entityManagers[$con] = EntityManager::create($connection, $this->getConfiguration()); $platform = $entityManager->getConnection()->getDatabasePlatform(); $platform->registerDoctrineTypeMapping('enum', 'string'); if (($cset = $this->project->getConfiguration()->get(array('db', $con, 'charset'), 'utf8')) != NULL) { // take NAMES not SET CHARACTER SET // http://dev.mysql.com/doc/refman/5.1/de/charset-connection.html // set character set, sets the character_set_connection to the collation of the db (when this is wrong everything does not go well) $entityManager->getConnection()->query("SET NAMES '" . $cset . "'"); } $this->manager->dispatchEvent('Psc.Doctrine.initEntityManager', (object) array('module' => $this), $entityManager); } return $this->entityManagers[$con]; }
/** * @return Response des Aufrufes */ public function process() { if (!isset($this->url) || $this->url === '') { throw new RequestException('Request kann nicht gesendet werden. URL ist leer'); } //if (curl_getopt($this->ch, CURLOPT_URL) == '') throw new RequestException('Request kann nicht gesendet werden. wurde vorher init() aufgerufen? (CURLOPT_URL nicht gesetzt).'); /* speicher die responseHeaders in unserer variable die wir an die response weitergeben */ $this->setOption(CURLOPT_HEADERFUNCTION, array($this, 'callbackHeader')); $this->responseHeader = NULL; /* Ausführen */ $rawResponse = curl_exec($this->ch); if (curl_error($this->ch) != "") { throw new RequestException(sprintf("Fehler beim Aufruf von URL: '%s' CURL-Error: '%s'", $this->url, curl_error($this->ch)), curl_errno($this->ch)); } try { $this->response = new Response($rawResponse, HTTP\Header::parse($this->responseHeader)); } catch (\Psc\Exception $e) { throw new RequestException('Aus dem Request konnte keine Response erstellt werden. ' . $e->getMessage(), 0, $e); } $this->headers = curl_getinfo($this->ch, CURLINFO_HEADER_OUT); curl_close($this->ch); $this->manager->dispatchEvent(self::EVENT_PROCESSED, array('response' => $this->response, 'headers' => $this->headers), $this); return $rawResponse; }