quoteIdentifiers = false; } if ($driver) { $this->setDriver($driver); } } /** * @param Pdo|Oci8 $driver * @return self Provides a fluent interface * @throws InvalidArgumentException */ public function setDriver($driver) { if ($driver instanceof Oci8 || ($driver instanceof Pdo && $driver->getDatabasePlatformName() == 'Oracle') || ($driver instanceof Pdo && $driver->getDatabasePlatformName() == 'Sqlite') || ($driver instanceof \oci8) || ($driver instanceof PDO && $driver->getAttribute(PDO::ATTR_DRIVER_NAME) == 'oci') ) { $this->resource = $driver; return $this; } throw new InvalidArgumentException( '$driver must be a Oci8 or Oracle PDO Zend\Db\Adapter\Driver, ' . 'Oci8 instance, or Oci PDO instance' ); } /** * @return null|Pdo|Oci8 */ public function getDriver() { return $this->resource; } /** * {@inheritDoc} */ public function getName() { return 'Oracle'; } /** * {@inheritDoc} */ public function quoteIdentifierChain($identifierChain) { if ($this->quoteIdentifiers === false) { return implode('.', (array) $identifierChain); } return '"' . implode('"."', (array) str_replace('"', '\\"', $identifierChain)) . '"'; } /** * {@inheritDoc} */ public function quoteValue($value) { if ($this->resource instanceof DriverInterface) { $this->resource = $this->resource->getConnection()->getResource(); } if ($this->resource) { if ($this->resource instanceof PDO) { return $this->resource->quote($value); } if (get_resource_type($this->resource) == 'oci8 connection' || get_resource_type($this->resource) == 'oci8 persistent connection' ) { return "'" . addcslashes(str_replace("'", "''", $value), "\x00\n\r\"\x1a") . "'"; } } trigger_error( 'Attempting to quote a value in ' . __CLASS__ . ' without extension/driver support ' . 'can introduce security vulnerabilities in a production environment.' ); return "'" . addcslashes(str_replace("'", "''", $value), "\x00\n\r\"\x1a") . "'"; } /** * {@inheritDoc} */ public function quoteTrustedValue($value) { return "'" . addcslashes(str_replace('\'', '\'\'', $value), "\x00\n\r\"\x1a") . "'"; } }