getUnaryOperators()); } /** * Returns list of operators checking for NULL. * * @return string[] */ public function getNullOperators() { return array( 'IS NULL', 'IS NOT NULL', ); } /** * ENUM search operators * * @return string[] */ public function getEnumOperators() { return array( '=', '!=', ); } /** * TEXT search operators * * @return string[] */ public function getTextOperators() { return array( 'LIKE', 'LIKE %...%', 'NOT LIKE', '=', '!=', 'REGEXP', 'REGEXP ^...$', 'NOT REGEXP', "= ''", "!= ''", 'IN (...)', 'NOT IN (...)', 'BETWEEN', 'NOT BETWEEN', ); } /** * Number search operators * * @return string[] */ public function getNumberOperators() { return array( '=', '>', '>=', '<', '<=', '!=', 'LIKE', 'LIKE %...%', 'NOT LIKE', 'IN (...)', 'NOT IN (...)', 'BETWEEN', 'NOT BETWEEN', ); } /** * Returns operators for given type * * @param string $type Type of field * @param boolean $null Whether field can be NULL * * @return string[] */ public function getTypeOperators($type, $null) { $ret = array(); $class = $this->getTypeClass($type); if (strncasecmp($type, 'enum', 4) == 0) { $ret = array_merge($ret, $this->getEnumOperators()); } elseif ($class == 'CHAR') { $ret = array_merge($ret, $this->getTextOperators()); } else { $ret = array_merge($ret, $this->getNumberOperators()); } if ($null) { $ret = array_merge($ret, $this->getNullOperators()); } return $ret; } /** * Returns operators for given type as html options * * @param string $type Type of field * @param boolean $null Whether field can be NULL * @param string $selectedOperator Option to be selected * * @return string Generated Html */ public function getTypeOperatorsHtml($type, $null, $selectedOperator = null) { $html = ''; foreach ($this->getTypeOperators($type, $null) as $fc) { if (isset($selectedOperator) && $selectedOperator == $fc) { $selected = ' selected="selected"'; } else { $selected = ''; } $html .= ''; } return $html; } /** * Returns the data type description. * * @param string $type The data type to get a description. * * @return string * */ public function getTypeDescription($type) { return ''; } /** * Returns class of a type, used for functions available for type * or default values. * * @param string $type The data type to get a class. * * @return string * */ public function getTypeClass($type) { return ''; } /** * Returns array of functions available for a class. * * @param string $class The class to get function list. * * @return string[] * */ public function getFunctionsClass($class) { return array(); } /** * Returns array of functions available for a type. * * @param string $type The data type to get function list. * * @return string[] * */ public function getFunctions($type) { $class = $this->getTypeClass($type); return $this->getFunctionsClass($class); } /** * Returns array of all functions available. * * @return string[] * */ public function getAllFunctions() { $ret = array_merge( $this->getFunctionsClass('CHAR'), $this->getFunctionsClass('NUMBER'), $this->getFunctionsClass('DATE'), $this->getFunctionsClass('UUID') ); sort($ret); return $ret; } /** * Returns array of all attributes available. * * @return string[] * */ public function getAttributes() { return array(); } /** * Returns array of all column types available. * * @return string[] * */ public function getColumns() { // most used types return array( 'INT', 'VARCHAR', 'TEXT', 'DATE', ); } /** * Returns an array of integer types * * @return string[] integer types */ public function getIntegerTypes() { return array(); } /** * Returns the min and max values of a given integer type * * @param string $type integer type * @param boolean $signed whether signed * * @return string[] min and max values */ public function getIntegerRange($type, $signed = true) { return array('', ''); } }