2016-05-20 15:29:33 +00:00
< ? php
/**
* FuzeWorks .
*
* The FuzeWorks MVC PHP FrameWork
*
* Copyright ( C ) 2015 TechFuze
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http :// www . gnu . org / licenses />.
*
* @ author TechFuze
* @ copyright Copyright ( c ) 2013 - 2016 , Techfuze . ( http :// techfuze . net )
* @ copyright Copyright ( c ) 1996 - 2015 , Free Software Foundation , Inc . ( http :// www . fsf . org / )
* @ license http :// opensource . org / licenses / GPL - 3.0 GPLv3 License
*
* @ link http :// fuzeworks . techfuze . net
* @ since Version 0.0 . 1
*
* @ version Version 0.0 . 1
*/
/**
* PDO SQLSRV Forge Class
*
* Converted from CodeIgniter .
*
* @ package FuzeWorks
* @ category Database
* @ author EllisLab Dev Team
* @ link https :// codeigniter . com / user_guide / database /
* @ license http :// opensource . org / licenses / MIT MIT License
*/
2016-05-20 19:59:28 +00:00
class FW_DB_pdo_sqlsrv_forge extends FW_DB_pdo_forge {
2016-05-20 15:29:33 +00:00
/**
* CREATE TABLE IF statement
*
* @ var string
*/
protected $_create_table_if = " IF NOT EXISTS (SELECT * FROM sysobjects WHERE ID = object_id(N'%s') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) \n CREATE TABLE " ;
/**
* DROP TABLE IF statement
*
* @ var string
*/
protected $_drop_table_if = " IF EXISTS (SELECT * FROM sysobjects WHERE ID = object_id(N'%s') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) \n DROP TABLE " ;
/**
* UNSIGNED support
*
* @ var array
*/
protected $_unsigned = array (
'TINYINT' => 'SMALLINT' ,
'SMALLINT' => 'INT' ,
'INT' => 'BIGINT' ,
'REAL' => 'FLOAT'
);
// --------------------------------------------------------------------
/**
* ALTER TABLE
*
* @ param string $alter_type ALTER type
* @ param string $table Table name
* @ param mixed $field Column definition
* @ return string | string []
*/
protected function _alter_table ( $alter_type , $table , $field )
{
if ( in_array ( $alter_type , array ( 'ADD' , 'DROP' ), TRUE ))
{
return parent :: _alter_table ( $alter_type , $table , $field );
}
$sql = 'ALTER TABLE ' . $this -> db -> escape_identifiers ( $table ) . ' ALTER COLUMN ' ;
$sqls = array ();
for ( $i = 0 , $c = count ( $field ); $i < $c ; $i ++ )
{
$sqls [] = $sql . $this -> _process_column ( $field [ $i ]);
}
return $sqls ;
}
// --------------------------------------------------------------------
/**
* Field attribute TYPE
*
* Performs a data type mapping between different databases .
*
* @ param array & $attributes
* @ return void
*/
protected function _attr_type ( & $attributes )
{
switch ( strtoupper ( $attributes [ 'TYPE' ]))
{
case 'MEDIUMINT' :
$attributes [ 'TYPE' ] = 'INTEGER' ;
$attributes [ 'UNSIGNED' ] = FALSE ;
return ;
case 'INTEGER' :
$attributes [ 'TYPE' ] = 'INT' ;
return ;
default : return ;
}
}
// --------------------------------------------------------------------
/**
* Field attribute AUTO_INCREMENT
*
* @ param array & $attributes
* @ param array & $field
* @ return void
*/
protected function _attr_auto_increment ( & $attributes , & $field )
{
if ( ! empty ( $attributes [ 'AUTO_INCREMENT' ]) && $attributes [ 'AUTO_INCREMENT' ] === TRUE && stripos ( $field [ 'type' ], 'int' ) !== FALSE )
{
$field [ 'auto_increment' ] = ' IDENTITY(1,1)' ;
}
}
}