Source of file IbmDb2.php
Size: 5,234 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Db/Adapter/Platform/IbmDb2.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Db\Adapter\Platform; class IbmDb2 implements PlatformInterface { protected $quoteValueAllowed = false; /** * @var bool */ protected $quoteIdentifiers = true; /** * @var string */ protected $identifierSeparator = '.'; /** * @param array $options */ public function __construct($options = array()) { if (isset($options['quote_identifiers']) && ($options['quote_identifiers'] == false || $options['quote_identifiers'] === 'false') ) { $this->quoteIdentifiers = false; } if (isset($options['identifier_separator'])) { $this->identifierSeparator = $options['identifier_separator']; } } /** * Get name * * @return string */ public function getName() { return 'IBM DB2'; } /** * Get quote indentifier symbol * * @return string */ public function getQuoteIdentifierSymbol() { return '"'; } /** * Quote identifier * * @param string $identifier * @return string */ public function quoteIdentifier($identifier) { if ($this->quoteIdentifiers === false) { return $identifier; } return '"' . str_replace('"', '\\' . '"', $identifier) . '"'; } /** * Quote identifier chain * * @param string|string[] $identifierChain * @return string */ public function quoteIdentifierChain($identifierChain) { if ($this->quoteIdentifiers === false) { return (is_array($identifierChain)) ? implode($this->identifierSeparator, $identifierChain) : $identifierChain; } $identifierChain = str_replace('"', '\\"', $identifierChain); if (is_array($identifierChain)) { $identifierChain = implode('"' . $this->identifierSeparator . '"', $identifierChain); } return '"' . $identifierChain . '"'; } /** * Get quote value symbol * * @return string */ public function getQuoteValueSymbol() { return '\''; } /** * Quote value * * @param string $value * @return string */ public function quoteValue($value) { if (function_exists('db2_escape_string')) { return '\'' . db2_escape_string($value) . '\''; } trigger_error( 'Attempting to quote a value in ' . __CLASS__ . ' without extension/driver support ' . 'can introduce security vulnerabilities in a production environment.' ); return '\'' . str_replace("'", "''", $value) . '\''; } /** * Quote Trusted Value * * The ability to quote values without notices * * @param $value * @return mixed */ public function quoteTrustedValue($value) { if (function_exists('db2_escape_string')) { return '\'' . db2_escape_string($value) . '\''; } return '\'' . str_replace("'", "''", $value) . '\''; } /** * Quote value list * * @param string|string[] $valueList * @return string */ public function quoteValueList($valueList) { if (!is_array($valueList)) { return $this->quoteValue($valueList); } $value = reset($valueList); do { $valueList[key($valueList)] = $this->quoteValue($value); } while ($value = next($valueList)); return implode(', ', $valueList); } /** * Get identifier separator * * @return string */ public function getIdentifierSeparator() { return $this->identifierSeparator; } /** * Quote identifier in fragment * * @param string $identifier * @param array $safeWords * @return string */ public function quoteIdentifierInFragment($identifier, array $safeWords = array()) { if ($this->quoteIdentifiers === false) { return $identifier; } $parts = preg_split('#([\.\s\W])#', $identifier, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); if ($safeWords) { $safeWords = array_flip($safeWords); $safeWords = array_change_key_case($safeWords, CASE_LOWER); } foreach ($parts as $i => $part) { if ($safeWords && isset($safeWords[strtolower($part)])) { continue; } switch ($part) { case ' ': case '.': case '*': case 'AS': case 'As': case 'aS': case 'as': break; default: $parts[$i] = '"' . str_replace('"', '\\' . '"', $part) . '"'; } } return implode('', $parts); } } |