Exemplo n.º 1
0
 public function tryDelimite($str, $delimiteMode = null)
 {
     $delimiteMode = null !== $delimiteMode ? $delimiteMode : $this->delimiteMode;
     if (self::DELIMITE_MODE_NONE == $delimiteMode) {
         return $str;
     }
     $driver = $this->connection->getDriver();
     $delimited = '';
     $splits = preg_split("~('(?:[^\\\\']+|\\\\.)*')~", $str, -1, PREG_SPLIT_DELIM_CAPTURE);
     //split by single quoted strings
     foreach ($splits as $part) {
         if (!empty($part)) {
             if (strlen($part) <= 1 || "'" != $part[0] || "'" != $part[strlen($part) - 1]) {
                 //ignore parts that are sql string (inside single quotes)
                 if ($delimiteMode & self::DELIMITE_MODE_REPLACE) {
                     $part = preg_replace_callback('~(["`\\[])([a-z_][a-z0-9_]*)(["`\\]])~i', function ($m) use($driver) {
                         return $driver->delimite($m[2]);
                     }, $part);
                 }
                 if ($delimiteMode & self::DELIMITE_MODE_ADD) {
                     $part = preg_replace_callback('~(?<=[^"`:\'\\[\\w]|^)[a-z_][a-z0-9_]*(?=[^"`\'\\]\\w]|\\z)~i', function ($m) use($driver) {
                         return $m[0] == strtoupper($m[0]) ? $m[0] : $driver->delimite($m[0]);
                     }, $part);
                 }
             }
             $delimited .= $part;
         }
     }
     return $delimited;
 }
Exemplo n.º 2
0
 /**
  * @return string
  */
 public function getPrimarySequence()
 {
     if ($this->primarySequence === FALSE) {
         $this->primarySequence = NULL;
         $driver = $this->connection->getDriver();
         if ($driver->isSupported(IDriver::SUPPORT_SEQUENCE) && $this->primary !== NULL) {
             foreach ($driver->getColumns($this->name) as $column) {
                 if ($column['name'] === $this->primary) {
                     $this->primarySequence = $column['vendor']['sequence'];
                     break;
                 }
             }
         }
     }
     return $this->primarySequence;
 }
Exemplo n.º 3
0
 protected function __construct(Connection $connection)
 {
     $this->connection = $connection;
     $this->driver = $connection->getDriver();
     $this->setFetchMode(PDO::FETCH_CLASS, 'Flunorette\\Row', array($this));
 }