FOF30\Factory\Scaffolding\Layout\BaseErector::getFieldType PHP Méthode

getFieldType() public static méthode

Convert the database type into something we can use
public static getFieldType ( string $type ) : array
$type string The type of the database field
Résultat array
    public static function getFieldType($type)
    {
        if (empty($type)) {
            return null;
        }
        // Remove parentheses, indicating field options / size (they don't matter in type detection)
        if (strpos($type, '(') === false) {
            $type .= '()';
        }
        list($type, $parameters) = explode('(', $type);
        $detectedType = null;
        $detectedParameters = null;
        $type = strtolower($type);
        switch (trim($type)) {
            case 'varchar':
            case 'text':
            case 'char':
            case 'character varying':
            case 'nvarchar':
            case 'nchar':
                $detectedType = 'Text';
                break;
            case 'smalltext':
            case 'longtext':
            case 'mediumtext':
                $detectedType = 'Text';
                break;
            case 'date':
            case 'datetime':
            case 'time':
            case 'year':
            case 'timestamp':
            case 'timestamp without time zone':
            case 'timestamp with time zone':
                $detectedType = 'Calendar';
                break;
            case 'tinyint':
            case 'smallint':
                $detectedType = 'Checkbox';
                break;
            case 'int':
            case 'integer':
            case 'bigint':
                // Because the Integer field is rendered in Joomla! as a drop-down list. Ugh!!!
                $detectedType = 'Numeric';
                break;
            case 'float':
            case 'double':
            case 'currency':
                $detectedType = 'Numeric';
                break;
            case 'enum':
                $detectedType = 'GenericList';
                $parameters = trim($parameters, "\t\n\r\v )");
                $detectedParameters = explode(',', $parameters);
                $detectedParameters = array_map(function ($x) {
                    return trim($x, "'\n\r\t\v");
                }, $detectedParameters);
                $temp = array();
                foreach ($detectedParameters as $v) {
                    $temp[$v] = $v;
                }
                $detectedParameters = $temp;
                break;
        }
        // Sometimes we have character types followed by a space and some cruft. Let's handle them.
        if (is_null($detectedType) && !empty($type)) {
            list($type, ) = explode(' ', $type);
            switch (trim($type)) {
                case 'varchar':
                case 'text':
                case 'char':
                case 'character varying':
                case 'nvarchar':
                case 'nchar':
                    $detectedType = 'Text';
                    break;
                case 'smalltext':
                case 'longtext':
                case 'mediumtext':
                    $detectedType = 'Text';
                    break;
                case 'date':
                case 'datetime':
                case 'time':
                case 'year':
                case 'timestamp':
                    $detectedType = 'Calendar';
                    break;
                case 'tinyint':
                case 'smallint':
                    $detectedType = 'Checkbox';
                    break;
                default:
                    $detectedType = 'Integer';
                    break;
            }
        }
        // If all else fails assume it's a Text and hope for the best
        if (empty($detectedType)) {
            $detectedType = 'Text';
        }
        return array('type' => $detectedType, 'params' => $detectedParameters);
    }