Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00020 class MyDialect extends Dialect
00021 {
00022 const IN_BOOLEAN_MODE = 1;
00023
00027 public static function me()
00028 {
00029 return Singleton::getInstance(__CLASS__);
00030 }
00031
00032 public static function quoteValue($value)
00033 {
00035
00036 if ($value instanceof Identifier && !$value->isFinalized())
00037 return "''";
00038
00039 return "'" . mysql_real_escape_string($value) . "'";
00040 }
00041
00042 public static function quoteField($field)
00043 {
00044 if (strpos($field, '.') !== false)
00045 throw new WrongArgumentException();
00046 elseif (strpos($field, '::') !== false)
00047 throw new WrongArgumentException();
00048
00049 return "`{$field}`";
00050 }
00051
00052 public static function quoteTable($table)
00053 {
00054 return "`{$table}`";
00055 }
00056
00057 public static function dropTableMode($cascade = false)
00058 {
00059 return null;
00060 }
00061
00062 public static function timeZone($exist = false)
00063 {
00064 return null;
00065 }
00066
00067 public function quoteBinary($data)
00068 {
00069 return mysql_real_escape_string($data);
00070 }
00071
00072 public function typeToString(DataType $type)
00073 {
00074 if ($type->getId() == DataType::BINARY)
00075 return 'BLOB';
00076
00077 return parent::typeToString($type);
00078 }
00079
00080 public function hasTruncate()
00081 {
00082 return true;
00083 }
00084
00085 public function hasMultipleTruncate()
00086 {
00087 return false;
00088 }
00089
00090 public function hasReturning()
00091 {
00092 return false;
00093 }
00094
00095 public function preAutoincrement(DBColumn $column)
00096 {
00097 $column->setDefault(null);
00098
00099 return null;
00100 }
00101
00102 public function postAutoincrement(DBColumn $column)
00103 {
00104 return 'AUTO_INCREMENT';
00105 }
00106
00107 public function fullTextSearch($fields, $words, $logic)
00108 {
00109 return
00110 ' MATCH ('
00111 .implode(
00112 ', ',
00113 array_map(
00114 array($this, 'fieldToString'),
00115 $fields
00116 )
00117 )
00118 .') AGAINST ('
00119 .self::prepareFullText($words, $logic)
00120 .')';
00121 }
00122
00123 private static function prepareFullText($words, $logic)
00124 {
00125 Assert::isArray($words);
00126
00127 $retval = self::quoteValue(implode(' ', $words));
00128
00129 if (self::IN_BOOLEAN_MODE === $logic) {
00130 return addcslashes($retval, '+-<>()~*"').' '.'IN BOOLEAN MODE';
00131 } else {
00132 return $retval;
00133 }
00134 }
00135 }
00136 ?>