API Apply Framework\ORM Namespace to model

This commit is contained in:
Hamish Friedlander 2016-06-15 16:03:16 +12:00 committed by Damian Mooyman
parent fd9f29c515
commit 80d4af6b6e
No known key found for this signature in database
GPG Key ID: 78B823A10DE27D1A
331 changed files with 1918 additions and 630 deletions

122
.upgrade.yml Normal file
View File

@ -0,0 +1,122 @@
fileExtensions:
- php
mappings:
ArrayList: SilverStripe\ORM\ArrayList
DatabaseAdmin: SilverStripe\ORM\DatabaseAdmin
DataExtension: SilverStripe\ORM\DataExtension
DataList: SilverStripe\ORM\DataList
DataModel: SilverStripe\ORM\DataModel
DataObject: SilverStripe\ORM\DataObject
DataObjectInterface: SilverStripe\ORM\DataObjectInterface
DataObjectSchema: SilverStripe\ORM\DataObjectSchema
DataQuery: SilverStripe\ORM\DataQuery
DataQuery_SubGroup: SilverStripe\ORM\DataQuery_SubGroup
DB: SilverStripe\ORM\DB
SS_Filterable: SilverStripe\ORM\SS_Filterable
GroupedList: SilverStripe\ORM\GroupedList
HasManyList: SilverStripe\ORM\HasManyList
HiddenClass: SilverStripe\ORM\HiddenClass
SS_Limitable: SilverStripe\ORM\SS_Limitable
SS_List: SilverStripe\ORM\SS_List
SS_ListDecorator: SilverStripe\ORM\SS_ListDecorator
ManyManyList: SilverStripe\ORM\ManyManyList
SS_Map: SilverStripe\ORM\SS_Map
SS_Map_Iterator: SilverStripe\ORM\SS_Map_Iterator
PolymorphicHasManyList: SilverStripe\ORM\PolymorphicHasManyList
SilverStripe\Model\Relation: SilverStripe\ORM\Relation
RelationList: SilverStripe\ORM\RelationList
SS_Sortable: SilverStripe\ORM\SS_Sortable
UnsavedRelationList: SilverStripe\ORM\UnsavedRelationList
ValidationException: SilverStripe\ORM\ValidationException
ValidationResult: SilverStripe\ORM\ValidationResult
SQLAssignmentRow: SilverStripe\ORM\Queries\SQLAssignmentRow
SQLConditionalExpression: SilverStripe\ORM\Queries\SQLConditionalExpression
SQLConditionGroup: SilverStripe\ORM\Queries\SQLConditionGroup
SQLDelete: SilverStripe\ORM\Queries\SQLDelete
SQLExpression: SilverStripe\ORM\Queries\SQLExpression
SQLInsert: SilverStripe\ORM\Queries\SQLInsert
SQLSelect: SilverStripe\ORM\Queries\SQLSelect
SQLUpdate: SilverStripe\ORM\Queries\SQLUpdate
SQLWriteExpression: SilverStripe\ORM\Queries\SQLWriteExpression
SS_Database: SilverStripe\ORM\Connect\SS_Database
SS_DatabaseException: SilverStripe\ORM\Connect\SS_DatabaseException
DBConnector: SilverStripe\ORM\Connect\DBConnector
DBQueryBuilder: SilverStripe\ORM\Connect\DBQueryBuilder
DBSchemaManager: SilverStripe\ORM\Connect\DBSchemaManager
MySQLDatabase: SilverStripe\ORM\Connect\MySQLDatabase
MySQLiConnector: SilverStripe\ORM\Connect\MySQLiConnector
MySQLQuery: SilverStripe\ORM\Connect\MySQLQuery
MySQLQueryBuilder: SilverStripe\ORM\Connect\MySQLQueryBuilder
MySQLSchemaManager: SilverStripe\ORM\Connect\MySQLSchemaManager
MySQLStatement: SilverStripe\ORM\Connect\MySQLStatement
PDOConnector: SilverStripe\ORM\Connect\PDOConnector
PDOQuery: SilverStripe\ORM\Connect\PDOQuery
SS_Query: SilverStripe\ORM\Connect\SS_Query
DBBoolean: SilverStripe\ORM\FieldType\DBBoolean
DBClassName: SilverStripe\ORM\FieldType\DBClassName
DBComposite: SilverStripe\ORM\FieldType\DBComposite
DBCurrency: SilverStripe\ORM\FieldType\DBCurrency
DBDate: SilverStripe\ORM\FieldType\DBDate
DBDatetime: SilverStripe\ORM\FieldType\DBDatetime
DBDecimal: SilverStripe\ORM\FieldType\DBDecimal
DBDouble: SilverStripe\ORM\FieldType\DBDouble
DBEnum: SilverStripe\ORM\FieldType\DBEnum
DBField: SilverStripe\ORM\FieldType\DBField
DBFloat: SilverStripe\ORM\FieldType\DBFloat
DBForeignKey: SilverStripe\ORM\FieldType\DBForeignKey
DBHTMLText: SilverStripe\ORM\FieldType\DBHTMLText
DBHTMLVarchar: SilverStripe\ORM\FieldType\DBHTMLVarchar
DBInt: SilverStripe\ORM\FieldType\DBInt
DBLocale: SilverStripe\ORM\FieldType\DBLocale
DBMoney: SilverStripe\ORM\FieldType\DBMoney
DBMultiEnum: SilverStripe\ORM\FieldType\DBMultiEnum
DBPercentage: SilverStripe\ORM\FieldType\DBPercentage
DBPolymorphicForeignKey: SilverStripe\ORM\FieldType\DBPolymorphicForeignKey
DBPrimaryKey: SilverStripe\ORM\FieldType\DBPrimaryKey
DBString: SilverStripe\ORM\FieldType\DBString
DBText: SilverStripe\ORM\FieldType\DBText
DBTime: SilverStripe\ORM\FieldType\DBTime
DBVarchar: SilverStripe\ORM\FieldType\DBVarchar
DBYear: SilverStripe\ORM\FieldType\DBYear
SS_Datetime: SilverStripe\ORM\FieldType\DBDatetime
SilverStripe\Model\FieldType\DBBoolean: SilverStripe\ORM\FieldType\DBBoolean
SilverStripe\Model\FieldType\DBClassName: SilverStripe\ORM\FieldType\DBClassName
SilverStripe\Model\FieldType\DBComposite: SilverStripe\ORM\FieldType\DBComposite
SilverStripe\Model\FieldType\DBCurrency: SilverStripe\ORM\FieldType\DBCurrency
SilverStripe\Model\FieldType\DBDate: SilverStripe\ORM\FieldType\DBDate
SilverStripe\Model\FieldType\DBDatetime: SilverStripe\ORM\FieldType\DBDatetime
SilverStripe\Model\FieldType\DBDecimal: SilverStripe\ORM\FieldType\DBDecimal
SilverStripe\Model\FieldType\DBDouble: SilverStripe\ORM\FieldType\DBDouble
SilverStripe\Model\FieldType\DBEnum: SilverStripe\ORM\FieldType\DBEnum
SilverStripe\Model\FieldType\DBField: SilverStripe\ORM\FieldType\DBField
SilverStripe\Model\FieldType\DBFloat: SilverStripe\ORM\FieldType\DBFloat
SilverStripe\Model\FieldType\DBForeignKey: SilverStripe\ORM\FieldType\DBForeignKey
SilverStripe\Model\FieldType\DBHTMLText: SilverStripe\ORM\FieldType\DBHTMLText
SilverStripe\Model\FieldType\DBHTMLVarchar: SilverStripe\ORM\FieldType\DBHTMLVarchar
SilverStripe\Model\FieldType\DBInt: SilverStripe\ORM\FieldType\DBInt
SilverStripe\Model\FieldType\DBLocale: SilverStripe\ORM\FieldType\DBLocale
SilverStripe\Model\FieldType\DBMoney: SilverStripe\ORM\FieldType\DBMoney
SilverStripe\Model\FieldType\DBMultiEnum: SilverStripe\ORM\FieldType\DBMultiEnum
SilverStripe\Model\FieldType\DBPercentage: SilverStripe\ORM\FieldType\DBPercentage
SilverStripe\Model\FieldType\DBPolymorphicForeignKey: SilverStripe\ORM\FieldType\DBPolymorphicForeignKey
SilverStripe\Model\FieldType\DBPrimaryKey: SilverStripe\ORM\FieldType\DBPrimaryKey
SilverStripe\Model\FieldType\DBString: SilverStripe\ORM\FieldType\DBString
SilverStripe\Model\FieldType\DBText: SilverStripe\ORM\FieldType\DBText
SilverStripe\Model\FieldType\DBTime: SilverStripe\ORM\FieldType\DBTime
SilverStripe\Model\FieldType\DBVarchar: SilverStripe\ORM\FieldType\DBVarchar
SilverStripe\Model\FieldType\DBYear: SilverStripe\ORM\FieldType\DBYear
SilverStripe\Model\FieldType\SS_Datetime: SilverStripe\ORM\FieldType\DBDatetime
ChangeSet: SilverStripe\ORM\Versioning\ChangeSet
ChangeSetItem: SilverStripe\ORM\Versioning\ChangeSetItem
DataDifferencer: SilverStripe\ORM\Versioning\DataDifferencer
VersionableExtension: SilverStripe\ORM\Versioning\VersionableExtension
Versioned: SilverStripe\ORM\Versioning\Versioned
Versioned_Version: SilverStripe\ORM\Versioning\Versioned_Version
VersionedGridFieldDetailForm: SilverStripe\ORM\Versioning\VersionedGridFieldDetailForm
VersionedGridFieldItemRequest: SilverStripe\ORM\Versioning\VersionedGridFieldItemRequest
Hierarchy: SilverStripe\ORM\Hierarchy\Hierarchy
skipConfigs:
- db
- casting
- table_name
- fixed_fields

View File

@ -1,4 +1,14 @@
<?php
namespace SilverStripe\ORM;
use ViewableData;
use ArrayData;
use ArrayIterator;
use Debug;
use InvalidArgumentException;
use LogicException;
/**
* A list object that wraps around an array of objects or arrays.
*
@ -14,7 +24,7 @@
* - exclude
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class ArrayList extends ViewableData implements SS_List, SS_Filterable, SS_Sortable, SS_Limitable {

View File

@ -1,10 +1,15 @@
<?php
namespace SilverStripe\ORM\Connect;
use SQLFormatter;
use Config;
/**
* Represents an object responsible for wrapping DB connector api
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class DBConnector {

View File

@ -1,10 +1,20 @@
<?php
namespace SilverStripe\ORM\Connect;
use InvalidArgumentException;
use SilverStripe\ORM\Queries\SQLExpression;
use SilverStripe\ORM\Queries\SQLSelect;
use SilverStripe\ORM\Queries\SQLDelete;
use SilverStripe\ORM\Queries\SQLInsert;
use SilverStripe\ORM\Queries\SQLUpdate;
use SilverStripe\ORM\Queries\SQLConditionalExpression;
/**
* Builds a SQL query string from a SQLExpression object
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBQueryBuilder {

View File

@ -1,10 +1,18 @@
<?php
namespace SilverStripe\ORM\Connect;
use Exception;
use Config;
use Object;
use Director;
use SilverStripe\ORM\FieldType\DBPrimaryKey;
/**
* Represents and handles all schema management for a database
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class DBSchemaManager {
@ -304,7 +312,7 @@ abstract class DBSchemaManager {
$this->transCreateTable($table, $options, $extensions);
$this->alterationMessage("Table $table: created", "created");
} else {
if (Config::inst()->get('DBSchemaManager', 'check_and_repair_on_build')) {
if (Config::inst()->get('SilverStripe\ORM\Connect\DBSchemaManager', 'check_and_repair_on_build')) {
$this->checkAndRepairTable($table, $options);
}
@ -349,7 +357,7 @@ abstract class DBSchemaManager {
$fieldObj->setTable($table);
if($fieldObj instanceof PrimaryKey) {
if($fieldObj instanceof DBPrimaryKey) {
$fieldObj->setAutoIncrement($hasAutoIncPK);
}
@ -940,4 +948,101 @@ abstract class DBSchemaManager {
return true;
}
/**
* Returns data type for 'boolean' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function boolean($values);
/**
* Returns data type for 'date' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function date($values);
/**
* Returns data type for 'decimal' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function decimal($values);
/**
* Returns data type for 'set' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function enum($values);
/**
* Returns data type for 'set' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function set($values);
/**
* Returns data type for 'float' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function float($values);
/**
* Returns data type for 'int' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function int($values);
/**
* Returns data type for 'datetime' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function datetime($values);
/**
* Returns data type for 'text' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function text($values);
/**
* Returns data type for 'time' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function time($values);
/**
* Returns data type for 'varchar' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function varchar($values);
/*
* Returns data type for 'year' column
*
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
abstract public function year($values);
}

View File

@ -1,11 +1,22 @@
<?php
namespace SilverStripe\ORM\Connect;
use Director;
use Debug;
use BadMethodCallException;
use Exception;
use Deprecation;
use SilverStripe\ORM\Queries\SQLUpdate;
use SilverStripe\ORM\Queries\SQLInsert;
use SilverStripe\ORM\Queries\SQLExpression;
/**
* Abstract database connectivity class.
* Sub-classes of this implement the actual database connection libraries
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class SS_Database {

View File

@ -1,10 +1,14 @@
<?php
namespace SilverStripe\ORM\Connect;
use Exception;
/**
* Error class for database exceptions
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class SS_DatabaseException extends Exception {

View File

@ -1,12 +1,20 @@
<?php
namespace SilverStripe\ORM\Connect;
use Config;
use Exception;
use PaginatedList;
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\ArrayList;
/**
* MySQL connector class.
*
* Supported indexes for {@link requireTable()}:
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class MySQLDatabase extends SS_Database {
@ -26,14 +34,14 @@ class MySQLDatabase extends SS_Database {
// Set charset
if( empty($parameters['charset'])
&& ($charset = Config::inst()->get('MySQLDatabase', 'connection_charset'))
&& ($charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'connection_charset'))
) {
$parameters['charset'] = $charset;
}
// Set collation
if( empty($parameters['collation'])
&& ($collation = Config::inst()->get('MySQLDatabase', 'connection_collation'))
&& ($collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'connection_collation'))
) {
$parameters['collation'] = $collation;
}
@ -158,7 +166,7 @@ class MySQLDatabase extends SS_Database {
$baseClasses[$class] = '"' . $class . '"';
}
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
// Make column selection lists
$select = array(

View File

@ -1,10 +1,12 @@
<?php
namespace SilverStripe\ORM\Connect;
/**
* A result-set from a MySQL database (using MySQLiConnector)
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class MySQLQuery extends SS_Query {

View File

@ -1,10 +1,15 @@
<?php
namespace SilverStripe\ORM\Connect;
use InvalidArgumentException;
use SilverStripe\ORM\Queries\SQLSelect;
/**
* Builds a SQL query string from a SQLExpression object
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class MySQLQueryBuilder extends DBQueryBuilder {

View File

@ -1,10 +1,15 @@
<?php
namespace SilverStripe\ORM\Connect;
use Config;
use Convert;
/**
* Represents schema management object for MySQL
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class MySQLSchemaManager extends DBSchemaManager {
@ -12,7 +17,7 @@ class MySQLSchemaManager extends DBSchemaManager {
* Identifier for this schema, used for configuring schema-specific table
* creation options
*/
const ID = 'MySQLDatabase';
const ID = 'SilverStripe\ORM\Connect\MySQLDatabase';
public function createTable($table, $fields = null, $indexes = null, $options = null, $advancedOptions = null) {
$fieldSchemas = $indexSchemas = "";
@ -195,8 +200,8 @@ class MySQLSchemaManager extends DBSchemaManager {
}
public function createDatabase($name) {
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$collation = Config::inst()->get('MySQLDatabase', 'collation');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
$collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'collation');
$this->query("CREATE DATABASE \"$name\" DEFAULT CHARACTER SET {$charset} DEFAULT COLLATE {$collation}");
}
@ -436,8 +441,8 @@ class MySQLSchemaManager extends DBSchemaManager {
//DB::requireField($this->tableName, $this->name, "enum('" . implode("','", $this->enum) . "') character set
// utf8 collate utf8_general_ci default '{$this->default}'");
$valuesString = implode(",", Convert::raw2sql($values['enums'], true));
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$collation = Config::inst()->get('MySQLDatabase', 'collation');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
$collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'collation');
return "enum($valuesString) character set {$charset} collate {$collation}" . $this->defaultClause($values);
}
@ -454,8 +459,8 @@ class MySQLSchemaManager extends DBSchemaManager {
//DB::requireField($this->tableName, $this->name, "enum('" . implode("','", $this->enum) . "') character set
//utf8 collate utf8_general_ci default '{$this->default}'");
$valuesString = implode(",", Convert::raw2sql($values['enums'], true));
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$collation = Config::inst()->get('MySQLDatabase', 'collation');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
$collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'collation');
return "set($valuesString) character set {$charset} collate {$collation}" . $this->defaultClause($values);
}
@ -493,7 +498,7 @@ class MySQLSchemaManager extends DBSchemaManager {
* @param array $values Contains a tokenised list of info about this data type
* @return string
*/
public function ss_datetime($values) {
public function datetime($values) {
//For reference, this is what typically gets passed to this function:
//$parts=Array('datatype'=>'datetime');
//DB::requireField($this->tableName, $this->name, $values);
@ -510,8 +515,8 @@ class MySQLSchemaManager extends DBSchemaManager {
//For reference, this is what typically gets passed to this function:
//$parts=Array('datatype'=>'mediumtext', 'character set'=>'utf8', 'collate'=>'utf8_general_ci');
//DB::requireField($this->tableName, $this->name, "mediumtext character set utf8 collate utf8_general_ci");
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$collation = Config::inst()->get('MySQLDatabase', 'collation');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
$collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'collation');
return 'mediumtext character set ' . $charset . ' collate ' . $collation . $this->defaultClause($values);
}
@ -542,8 +547,8 @@ class MySQLSchemaManager extends DBSchemaManager {
//DB::requireField($this->tableName, $this->name, "varchar($this->size) character set utf8 collate
// utf8_general_ci");
$default = $this->defaultClause($values);
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$collation = Config::inst()->get('MySQLDatabase', 'collation');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
$collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'collation');
return "varchar({$values['precision']}) character set {$charset} collate {$collation}{$default}";
}

View File

@ -1,5 +1,7 @@
<?php
namespace SilverStripe\ORM\Connect;
/**
* Provides a record-view for mysqli statements
*
@ -7,7 +9,7 @@
* buffer itself and sacrifice any potential performance benefit.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class MySQLStatement extends SS_Query {

View File

@ -1,9 +1,15 @@
<?php
namespace SilverStripe\ORM\Connect;
use Config;
use MySQLi;
use mysqli_stmt;
/**
* Connector for MySQL using the MySQLi method
* @package framework
* @subpackage model
* @subpackage orm
*/
class MySQLiConnector extends DBConnector {
@ -57,8 +63,8 @@ class MySQLiConnector extends DBConnector {
$selectedDB = ($selectDB && !empty($parameters['database'])) ? $parameters['database'] : null;
// Connection charset and collation
$connCharset = Config::inst()->get('MySQLDatabase', 'connection_charset');
$connCollation = Config::inst()->get('MySQLDatabase', 'connection_collation');
$connCharset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'connection_charset');
$connCollation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'connection_collation');
if(!empty($parameters['port'])) {
$this->dbConn = new MySQLi(

View File

@ -1,9 +1,15 @@
<?php
namespace SilverStripe\ORM\Connect;
use PDO;
use Config;
use PDOStatement;
/**
* PDO driver database connector
* @package framework
* @subpackage model
* @subpackage orm
*/
class PDOConnector extends DBConnector {
@ -89,7 +95,7 @@ class PDOConnector extends DBConnector {
* @return boolean
*/
public static function is_emulate_prepare() {
return Config::inst()->get('PDOConnector', 'emulate_prepare');
return Config::inst()->get('SilverStripe\ORM\Connect\PDOConnector', 'emulate_prepare');
}
public function connect($parameters, $selectDB = false) {
@ -135,8 +141,8 @@ class PDOConnector extends DBConnector {
}
// Connection charset and collation
$connCharset = Config::inst()->get('MySQLDatabase', 'connection_charset');
$connCollation = Config::inst()->get('MySQLDatabase', 'connection_collation');
$connCharset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'connection_charset');
$connCollation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'connection_collation');
// Set charset if given and not null. Can explicitly set to empty string to omit
if($parameters['driver'] !== 'sqlsrv') {

View File

@ -1,9 +1,14 @@
<?php
namespace SilverStripe\ORM\Connect;
use PDOStatement;
use PDO;
/**
* A result-set from a PDO database.
* @package framework
* @subpackage model
* @subpackage orm
*/
class PDOQuery extends SS_Query {
/**

View File

@ -1,5 +1,10 @@
<?php
namespace SilverStripe\ORM\Connect;
use Iterator;
use Convert;
/**
* Abstract query-result class.
* Once again, this should be subclassed by an actual database implementation. It will only
@ -10,7 +15,7 @@
* on providing the specific data-access methods that are required: {@link nextRecord()}, {@link numRecords()}
* and {@link seek()}
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class SS_Query implements Iterator {

View File

@ -1,10 +1,23 @@
<?php
namespace SilverStripe\ORM;
use Deprecation;
use Director;
use InvalidArgumentException;
use Config;
use LogicException;
use Cookie;
use Injector;
use SilverStripe\ORM\Queries\SQLExpression;
use SilverStripe\ORM\Connect\SS_Database;
/**
* Global database interface, complete with static methods.
* Use this class for interacting with the database.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DB {

View File

@ -1,11 +1,20 @@
<?php
namespace SilverStripe\ORM;
use Extension;
use Exception;
use FieldList;
use Config;
use SilverStripe\ORM\Queries\SQLSelect;
/**
* An extension that adds additional functionality to a {@link DataObject}.
*
* @property DataObject $owner
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class DataExtension extends Extension {

View File

@ -1,4 +1,15 @@
<?php
namespace SilverStripe\ORM;
use ViewableData;
use Exception;
use InvalidArgumentException;
use Injector;
use LogicException;
use Debug;
use ArrayIterator;
/**
* Implements a "lazy loading" DataObjectSet.
* Uses {@link DataQuery} to do the actual query generation.
@ -20,7 +31,7 @@
* Subclasses of DataList may add other methods that have the same effect.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DataList extends ViewableData implements SS_List, SS_Filterable, SS_Sortable, SS_Limitable {
/**

View File

@ -1,5 +1,7 @@
<?php
namespace SilverStripe\ORM;
/**
* Representation of a DataModel - a collection of DataLists for each different
* data type.
@ -11,7 +13,7 @@
* </code>
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DataModel {

View File

@ -1,9 +1,35 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Model\FieldType\DBDatetime;
use SilverStripe\Model\FieldType\DBComposite;
use SilverStripe\Model\FieldType\DBClassName;
namespace SilverStripe\ORM;
use ViewableData;
use i18nEntityProvider;
use Injector;
use HTTP;
use ClassInfo;
use i18n;
use Deprecation;
use Config;
use Debug;
use LogicException;
use InvalidArgumentException;
use BadMethodCallException;
use Exception;
use SearchContext;
use FieldList;
use FormField;
use FormScaffolder;
use Member;
use Permission;
use Object;
use SearchFilter;
use SilverStripe\ORM\Queries\SQLInsert;
use SilverStripe\ORM\Queries\SQLDelete;
use SilverStripe\ORM\Queries\SQLSelect;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\FieldType\DBComposite;
use SilverStripe\ORM\FieldType\DBClassName;
/**
* A single database record & abstract class for the data-access-model.
@ -70,7 +96,7 @@ use SilverStripe\Model\FieldType\DBClassName;
* and defineMethods()
*
* @package framework
* @subpackage model
* @subpackage orm
*
* @property integer ID ID of the DataObject, 0 if the DataObject doesn't exist in database.
* @property string ClassName Class name of the DataObject
@ -204,8 +230,8 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
private static $fixed_fields = array(
'ID' => 'PrimaryKey',
'ClassName' => 'DBClassName',
'LastEdited' => 'SS_Datetime',
'Created' => 'SS_Datetime',
'LastEdited' => 'DBDatetime',
'Created' => 'DBDatetime',
);
/**
@ -243,7 +269,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* @return DataObjectSchema
*/
public static function getSchema() {
return Injector::inst()->get('DataObjectSchema');
return Injector::inst()->get('SilverStripe\ORM\DataObjectSchema');
}
/**
@ -381,7 +407,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
// Identify fields that should be lazy loaded, but only on existing records
if(!empty($record['ID'])) {
$currentObj = get_class($this);
while($currentObj != 'DataObject') {
while($currentObj != 'SilverStripe\ORM\DataObject') {
$fields = self::custom_database_fields($currentObj);
foreach($fields as $field => $type) {
if(!array_key_exists($field, $record)) $this->record[$field.'_Lazy'] = $currentObj;
@ -528,7 +554,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
*/
public function setClassName($className) {
$className = trim($className);
if(!$className || !is_subclass_of($className, 'DataObject')) return;
if(!$className || !is_subclass_of($className, 'SilverStripe\ORM\DataObject')) return;
$this->class = $className;
$this->setField("ClassName", $className);
@ -589,7 +615,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
}
}
if($this->class == 'DataObject') return;
if($this->class == 'SilverStripe\ORM\DataObject') return;
// Set up accessors for joined items
if($manyMany = $this->manyMany()) {
@ -677,7 +703,8 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
*/
public function singular_name() {
if(!$name = $this->stat('singular_name')) {
$name = ucwords(trim(strtolower(preg_replace('/_?([A-Z])/', ' $1', $this->class))));
$reflection = new \ReflectionClass($this);
$name = ucwords(trim(strtolower(preg_replace('/_?([A-Z])/', ' $1', $reflection->getShortName()))));
}
return $name;
@ -1098,7 +1125,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
$manyManyJoin->setByIdList($fieldValue);
}
}
if($class == 'DataObject') {
if($class == 'SilverStripe\ORM\DataObject') {
break;
}
}
@ -1121,7 +1148,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
);
}
if(Config::inst()->get('DataObject', 'validation_enabled')) {
if(Config::inst()->get('SilverStripe\ORM\DataObject', 'validation_enabled')) {
$result = $this->validate();
if (!$result->valid()) {
return new ValidationException(
@ -1455,7 +1482,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
$joinID = $this->getField($joinField);
// Extract class name for polymorphic relations
if($class === 'DataObject') {
if($class === 'SilverStripe\ORM\DataObject') {
$class = $this->getField($componentName . 'Class');
if(empty($class)) return null;
}
@ -1640,7 +1667,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
$remoteRelation
));
}
if($class === 'DataObject') {
if($class === 'SilverStripe\ORM\DataObject') {
throw new InvalidArgumentException(sprintf(
"%s cannot generate opposite component of relation %s.%s as it is polymorphic. " .
"This method does not support polymorphic relationships",
@ -1795,7 +1822,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
}
// Inspect resulting found relation
if($remoteRelations[$remoteField] === 'DataObject') {
if($remoteRelations[$remoteField] === 'SilverStripe\ORM\DataObject') {
$polymorphic = true;
return $remoteField; // Composite polymorphic field does not include 'ID' suffix
} else {
@ -2737,7 +2764,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* @return bool
*/
public static function has_own_table($dataClass) {
if(!is_subclass_of($dataClass, 'DataObject')) {
if(!is_subclass_of($dataClass, 'SilverStripe\ORM\DataObject')) {
return false;
}
$fields = static::database_fields($dataClass);
@ -3069,15 +3096,15 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* @return DataList The objects matching the filter, in the class specified by $containerClass
*/
public static function get($callerClass = null, $filter = "", $sort = "", $join = "", $limit = null,
$containerClass = 'DataList') {
$containerClass = 'SilverStripe\ORM\DataList') {
if($callerClass == null) {
$callerClass = get_called_class();
if($callerClass == 'DataObject') {
if($callerClass == 'SilverStripe\ORM\DataObject') {
throw new \InvalidArgumentException('Call <classname>::get() instead of DataObject::get()');
}
if($filter || $sort || $join || $limit || ($containerClass != 'DataList')) {
if($filter || $sort || $join || $limit || ($containerClass != 'SilverStripe\ORM\DataList')) {
throw new \InvalidArgumentException('If calling <classname>::get() then you shouldn\'t pass any other'
. ' arguments');
}
@ -3155,7 +3182,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* @return DataObject $this
*/
public function flushCache($persistent = true) {
if($this->class == 'DataObject') {
if($this->class == 'SilverStripe\ORM\DataObject') {
self::$_cache_get_one = array();
return $this;
}
@ -3314,7 +3341,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
}
}
if(get_parent_class($this) == "DataObject") {
if(get_parent_class($this) == 'SilverStripe\ORM\DataObject') {
$indexes['ClassName'] = true;
}
@ -3337,7 +3364,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
// Validate relationship configuration
$this->validateModelDefinitions();
if($fields) {
$hasAutoIncPK = get_parent_class($this) === 'DataObject';
$hasAutoIncPK = get_parent_class($this) === 'SilverStripe\ORM\DataObject';
DB::require_table(
$table, $fields, $indexes, $hasAutoIncPK, $this->stat('create_table_options'), $extensions
);
@ -3730,7 +3757,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* @config
*/
private static $create_table_options = array(
'MySQLDatabase' => 'ENGINE=InnoDB'
'SilverStripe\ORM\Connect\MySQLDatabase' => 'ENGINE=InnoDB'
);
/**

View File

@ -1,11 +1,14 @@
<?php
namespace SilverStripe\ORM;
/**
* DataObjectInterface is an interface that other data systems in your application can implement in order to behave in
* a manner similar to DataObject.
*
* In addition to the methods defined below, the data of the object should be directly accessible as fields.
* @package framework
* @subpackage model
* @subpackage orm
*/
interface DataObjectInterface {
/**

View File

@ -1,8 +1,15 @@
<?php
namespace SilverStripe\ORM;
use InvalidArgumentException;
use ClassInfo;
use LogicException;
use Config;
use Object;
use SilverStripe\Framework\Core\Configurable;
use SilverStripe\Framework\Core\Injectable;
use SilverStripe\Model\FieldType\DBComposite;
use SilverStripe\ORM\FieldType\DBComposite;
/**
* Provides dataobject and database schema mapping functionality
@ -110,7 +117,7 @@ class DataObjectSchema {
$class = ClassInfo::class_name($class);
$current = $class;
while ($next = get_parent_class($current)) {
if ($next === 'DataObject') {
if ($next === 'SilverStripe\ORM\DataObject') {
return $current;
}
$current = $next;
@ -161,8 +168,8 @@ class DataObjectSchema {
return;
}
$this->tableNames = [];
foreach(ClassInfo::subclassesFor('DataObject') as $class) {
if($class === 'DataObject') {
foreach(ClassInfo::subclassesFor('SilverStripe\ORM\DataObject') as $class) {
if($class === 'SilverStripe\ORM\DataObject') {
continue;
}
$table = $this->buildTableName($class);
@ -208,7 +215,7 @@ class DataObjectSchema {
*/
public function databaseFields($class) {
$class = ClassInfo::class_name($class);
if($class === 'DataObject') {
if($class === 'SilverStripe\ORM\DataObject') {
return [];
}
$this->cacheDatabaseFields($class);
@ -230,7 +237,7 @@ class DataObjectSchema {
*/
public function compositeFields($class, $aggregated = true) {
$class = ClassInfo::class_name($class);
if($class === 'DataObject') {
if($class === 'SilverStripe\ORM\DataObject') {
return [];
}
$this->cacheDatabaseFields($class);
@ -262,7 +269,7 @@ class DataObjectSchema {
// Ensure fixed fields appear at the start
$fixedFields = DataObject::config()->fixed_fields;
if(get_parent_class($class) === 'DataObject') {
if(get_parent_class($class) === 'SilverStripe\ORM\DataObject') {
// Merge fixed with ClassName spec and custom db fields
$dbFields = $fixedFields;
} else {
@ -283,7 +290,7 @@ class DataObjectSchema {
// Add in all has_ones
$hasOne = Config::inst()->get($class, 'has_one', Config::UNINHERITED) ?: array();
foreach($hasOne as $fieldName => $hasOneClass) {
if($hasOneClass === 'DataObject') {
if($hasOneClass === 'SilverStripe\ORM\DataObject') {
$compositeFields[$fieldName] = 'PolymorphicForeignKey';
} else {
$dbFields["{$fieldName}ID"] = 'ForeignKey';
@ -339,7 +346,7 @@ class DataObjectSchema {
public function classForField($candidateClass, $fieldName) {
// normalise class name
$candidateClass = ClassInfo::class_name($candidateClass);
if($candidateClass === 'DataObject') {
if($candidateClass === 'SilverStripe\ORM\DataObject') {
return null;
}

View File

@ -1,5 +1,15 @@
<?php
namespace SilverStripe\ORM;
use InvalidArgumentException;
use Injector;
use ClassInfo;
use Convert;
use Object;
use SilverStripe\ORM\Queries\SQLConditionGroup;
use SilverStripe\ORM\Queries\SQLSelect;
/**
* An object representing a query of data from the DataObject's supporting database.
* Acts as a wrapper over {@link SQLSelect} and performs all of the query generation.
@ -8,7 +18,7 @@
* Unlike DataList, modifiers on DataQuery modify the object rather than returning a clone.
* DataList is immutable, DataQuery is mutable.
*
* @subpackage model
* @subpackage orm
* @package framework
*/
class DataQuery {
@ -752,7 +762,7 @@ class DataQuery {
throw new InvalidArgumentException("Could not find a has_one relationship {$localField} on {$localClass}");
}
if ($foreignClass === 'DataObject') {
if ($foreignClass === 'SilverStripe\ORM\DataObject') {
throw new InvalidArgumentException(
"Could not join polymorphic has_one relationship {$localField} on {$localClass}"
);
@ -797,7 +807,7 @@ class DataQuery {
* @param string $foreignClass Class to join
*/
protected function joinHasManyRelation($localClass, $localField, $foreignClass) {
if(!$foreignClass || $foreignClass === 'DataObject') {
if(!$foreignClass || $foreignClass === 'SilverStripe\ORM\DataObject') {
throw new InvalidArgumentException("Could not find a has_many relationship {$localField} on {$localClass}");
}
$schema = DataObject::getSchema();

View File

@ -1,6 +1,19 @@
<?php
namespace SilverStripe\ORM;
use Controller;
use SapphireTest;
use Director;
use Security;
use Permission;
use SS_ClassLoader;
use ClassInfo;
use TestOnly;
use Deprecation;
// Include the DB class
require_once("model/DB.php");
require_once("DB.php");
/**
* DatabaseAdmin class
@ -9,7 +22,7 @@ require_once("model/DB.php");
* via URL, e.g. http://www.yourdomain.com/db/build.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DatabaseAdmin extends Controller {
@ -53,13 +66,13 @@ class DatabaseAdmin extends Controller {
// Get all root data objects
$allClasses = get_declared_classes();
foreach($allClasses as $class) {
if(get_parent_class($class) == "DataObject")
if(get_parent_class($class) == 'SilverStripe\ORM\DataObject')
$rootClasses[$class] = array();
}
// Assign every other data object one of those
foreach($allClasses as $class) {
if(!isset($rootClasses[$class]) && is_subclass_of($class, "DataObject")) {
if(!isset($rootClasses[$class]) && is_subclass_of($class, 'SilverStripe\ORM\DataObject')) {
foreach($rootClasses as $rootClass => $dummy) {
if(is_subclass_of($class, $rootClass)) {
$rootClasses[$rootClass][] = $class;
@ -125,7 +138,7 @@ class DatabaseAdmin extends Controller {
* Check if database needs to be built, and build it if it does.
*/
public static function autoBuild() {
$dataClasses = ClassInfo::subclassesFor('DataObject');
$dataClasses = ClassInfo::subclassesFor('SilverStripe\ORM\DataObject');
$lastBuilt = self::lastBuilt();
foreach($dataClasses as $class) {
if(filemtime(getClassFile($class)) > $lastBuilt) {
@ -141,7 +154,7 @@ class DatabaseAdmin extends Controller {
* DataObject classes
*/
public function buildDefaults() {
$dataClasses = ClassInfo::subclassesFor('DataObject');
$dataClasses = ClassInfo::subclassesFor('SilverStripe\ORM\DataObject');
array_shift($dataClasses);
foreach($dataClasses as $dataClass){
singleton($dataClass)->requireDefaultRecords();
@ -215,7 +228,7 @@ class DatabaseAdmin extends Controller {
}
// Build the database. Most of the hard work is handled by DataObject
$dataClasses = ClassInfo::subclassesFor('DataObject');
$dataClasses = ClassInfo::subclassesFor('SilverStripe\ORM\DataObject');
array_shift($dataClasses);
if(!$quiet) {
@ -299,7 +312,7 @@ class DatabaseAdmin extends Controller {
public function cleanup() {
$allClasses = get_declared_classes();
foreach($allClasses as $class) {
if(get_parent_class($class) == 'DataObject') {
if(get_parent_class($class) == 'SilverStripe\ORM\DataObject') {
$baseClasses[] = $class;
}
}

View File

@ -1,16 +1,17 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use CheckboxField;
use DropdownField;
use SilverStripe\ORM\DB;
/**
* Represents a boolean field.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBBoolean extends DBField {

View File

@ -1,17 +1,18 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use DataObject;
use ClassInfo;
use Config;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* Represents a classname selector, which respects obsolete clasess.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBClassName extends DBEnum {
@ -101,7 +102,7 @@ class DBClassName extends DBEnum {
return $baseClass;
}
// Fallback to global default
return 'DataObject';
return 'SilverStripe\ORM\DataObject';
}
/**
@ -122,7 +123,7 @@ class DBClassName extends DBEnum {
*/
public function getEnum() {
$classNames = ClassInfo::subclassesFor($this->getBaseClass());
unset($classNames['DataObject']);
unset($classNames['SilverStripe\ORM\DataObject']);
return $classNames;
}

View File

@ -1,10 +1,11 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use Object;
use DataObject;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
/**
* Apply this interface to any {@link DBField} that doesn't have a 1-1 mapping with a database field.
@ -23,7 +24,7 @@ use DataObject;
* </code>
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class DBComposite extends DBField {

View File

@ -1,6 +1,6 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use Deprecation;
@ -18,7 +18,7 @@ use Deprecation;
* </code>
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBCurrency extends DBDecimal {

View File

@ -1,14 +1,14 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use Member;
use Zend_Date;
use DateTime;
use DateField;
use Convert;
use Exception;
use SilverStripe\ORM\DB;
/**
* Represents a date field.
@ -27,17 +27,17 @@ use Exception;
* @todo Add localization support, see http://open.silverstripe.com/ticket/2931
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBDate extends DBField {
/**
* @config
* @see SS_DateTime::nice_format
* @see DBDateTime::nice_format
* @see Time::nice_format
*/
private static $nice_format = 'd/m/Y';
public function setValue($value, $record = null, $markChanged = true) {
if($value === false || $value === null || (is_string($value) && !strlen($value))) {
// don't try to evaluate empty values with strtotime() below, as it returns "1970-01-01" when it should be
@ -78,7 +78,7 @@ class DBDate extends DBField {
/**
* Returns the date in the format specified by the config value nice_format, or dd/mm/yy by default
*/
*/
public function Nice() {
if($this->value) return $this->Format($this->config()->nice_format);
}

View File

@ -1,14 +1,14 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use Convert;
use Member;
use DatetimeField;
use Zend_Date;
use TemplateGlobalProvider;
use DateTime;
use SilverStripe\ORM\DB;
/**
* Represents a date-time field.
@ -25,14 +25,14 @@ use DateTime;
* Example definition via {@link DataObject::$db}:
* <code>
* static $db = array(
* "Expires" => "SS_Datetime",
* "Expires" => "DBDatetime",
* );
* </code>
*
* @todo Add localization support, see http://open.silverstripe.com/ticket/2931
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBDatetime extends DBDate implements TemplateGlobalProvider {
@ -42,7 +42,7 @@ class DBDatetime extends DBDate implements TemplateGlobalProvider {
* @see Time::nice_format
*/
private static $nice_format = 'd/m/Y g:ia';
public function setValue($value, $record = null, $markChanged = true) {
if($value === false || $value === null || (is_string($value) && !strlen($value))) {
// don't try to evaluate empty values with strtotime() below, as it returns "1970-01-01" when it should be
@ -72,7 +72,7 @@ class DBDatetime extends DBDate implements TemplateGlobalProvider {
}
/**
* Returns the date and time in the format specified by the config value nice_format, or 'd/m/Y g:ia'
* Returns the date and time in the format specified by the config value nice_format, or 'd/m/Y g:ia'
* by default (e.g. '31/01/2014 2:23pm').
* @return string Formatted date and time.
*/
@ -137,7 +137,7 @@ class DBDatetime extends DBDate implements TemplateGlobalProvider {
public function requireField() {
$parts=Array('datatype'=>'datetime', 'arrayValue'=>$this->arrayValue);
$values=Array('type'=>'SS_Datetime', 'parts'=>$parts);
$values=Array('type'=>'datetime', 'parts'=>$parts);
DB::require_field($this->tableName, $this->name, $values);
}
@ -180,13 +180,13 @@ class DBDatetime extends DBDate implements TemplateGlobalProvider {
* Returns either the current system date as determined
* by date(), or a mocked date through {@link set_mock_now()}.
*
* @return SS_Datetime
* @return static
*/
public static function now() {
if(self::$mock_now) {
return self::$mock_now;
} else {
return DBField::create_field('SS_Datetime', date('Y-m-d H:i:s'));
return DBField::create_field('SilverStripe\ORM\FieldType\DBDatetime', date('Y-m-d H:i:s'));
}
}
@ -195,14 +195,14 @@ class DBDatetime extends DBDate implements TemplateGlobalProvider {
* Use {@link clear_mock_now()} to revert to the current system date.
* Caution: This sets a fixed date that doesn't increment with time.
*
* @param SS_Datetime|string $datetime Either in object format, or as a SS_Datetime compatible string.
* @param DBDatetime|string $datetime Either in object format, or as a DBDatetime compatible string.
* @throws Exception
*/
public static function set_mock_now($datetime) {
if($datetime instanceof SS_Datetime) {
if($datetime instanceof DBDatetime) {
self::$mock_now = $datetime;
} elseif(is_string($datetime)) {
self::$mock_now = DBField::create_field('SS_Datetime', $datetime);
self::$mock_now = DBField::create_field('SilverStripe\ORM\FieldType\DBDatetime', $datetime);
} else {
throw new Exception('DBDatetime::set_mock_now(): Wrong format: ' . $datetime);
}
@ -218,7 +218,7 @@ class DBDatetime extends DBDate implements TemplateGlobalProvider {
public static function get_template_global_variables() {
return array(
'Now' => array('method' => 'now', 'casting' => 'SS_Datetime'),
'Now' => array('method' => 'now', 'casting' => 'SilverStripe\ORM\FieldType\DBDatetime'),
);
}
}

View File

@ -1,15 +1,15 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use NumericField;
use SilverStripe\ORM\DB;
/**
* Represents a Decimal field.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBDecimal extends DBField {

View File

@ -1,14 +1,14 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use MySQLDatabase;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Connect\MySQLDatabase;
/**
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBDouble extends DBFloat {

View File

@ -1,11 +1,11 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use ArrayLib;
use DropdownField;
use Config;
use SilverStripe\ORM\DB;
/**
* Class Enum represents an enumeration of a set of strings.
@ -13,7 +13,7 @@ use Config;
* See {@link DropdownField} for a {@link FormField} to select enum values.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBEnum extends DBString {
@ -82,8 +82,8 @@ class DBEnum extends DBString {
* @return void
*/
public function requireField() {
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$collation = Config::inst()->get('MySQLDatabase', 'collation');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
$collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'collation');
$parts = array(
'datatype' => 'enum',

View File

@ -1,6 +1,6 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use ViewableData;
use Convert;
@ -40,7 +40,7 @@ use TextField;
* @todo remove MySQL specific code from subclasses
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class DBField extends ViewableData {

View File

@ -1,15 +1,15 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use NumericField;
use SilverStripe\ORM\DB;
/**
* Represents a floating point field.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBFloat extends DBField {

View File

@ -1,12 +1,12 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DataList;
use UploadField;
use DropdownField;
use NumericField;
use DataObject;
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject;
/**
* A special type Int field used for foreign keys in has_one relationships.
@ -19,7 +19,7 @@ use DataObject;
* @param DataObject $object The object that the foreign key is stored on (should have a relation with $name)
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBForeignKey extends DBInt {

View File

@ -1,6 +1,6 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use Injector;
use HTTP;
@ -19,7 +19,7 @@ use Exception;
* @see Varchar
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBHTMLText extends DBText {
private static $escape_type = 'xml';

View File

@ -1,6 +1,6 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use ShortcodeParser;
use HTMLEditorField;
@ -11,7 +11,7 @@ use TextField;
*
* This behaves similarly to Varchar, but the template processor won't escape any HTML content within it.
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBHTMLVarchar extends DBVarchar {

View File

@ -1,17 +1,17 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use NumericField;
use ArrayList;
use ArrayData;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\ArrayList;
/**
* Represents a signed 32 bit integer field.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBInt extends DBField {

View File

@ -1,6 +1,6 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use i18n;
@ -10,7 +10,7 @@ use i18n;
* @todo Allowing showing locale values in different languages through Nice()
*
* @package framework
* @subpackage i18n
* @subpackage orm
*/
class DBLocale extends DBVarchar {

View File

@ -1,12 +1,10 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use i18n;
use Zend_Currency;
use MoneyField;
use DataObject;
/**
* Partially based on Zend_Currency.
@ -29,7 +27,7 @@ require_once 'Zend/Currency.php';
* @todo Model validation for $allowedCurrencies
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBMoney extends DBComposite {

View File

@ -1,19 +1,14 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use CheckboxSetField;
/**
* @package framework
* @subpackage model
*/
use SilverStripe\ORM\DB;
/**
* Represents an multi-select enumeration field.
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBMultiEnum extends DBEnum {
public function __construct($name, $enum = NULL, $default = NULL) {
@ -36,8 +31,8 @@ class DBMultiEnum extends DBEnum {
}
public function requireField(){
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$collation = Config::inst()->get('MySQLDatabase', 'collation');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
$collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'collation');
$values=array(
'type'=>'set',
'parts'=>array(

View File

@ -1,6 +1,6 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
/**
* Represents a decimal field from 0-1 containing a percentage value.
@ -14,7 +14,7 @@ namespace SilverStripe\Model\FieldType;
* </code>
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBPercentage extends DBDecimal {

View File

@ -1,22 +1,20 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use DataObject;
use ClassInfo;
use SilverStripe\ORM\DataObject;
/**
* A special ForeignKey class that handles relations with arbitrary class types
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBPolymorphicForeignKey extends DBComposite {
private static $composite_db = array(
'ID' => 'Int',
'Class' => 'DBClassName("DataObject")'
'Class' => "DBClassName('SilverStripe\\ORM\\DataObject')"
);
public function scaffoldFormField($title = null, $params = null) {
@ -79,7 +77,7 @@ class DBPolymorphicForeignKey extends DBComposite {
public function getValue() {
$id = $this->getIDValue();
$class = $this->getClassValue();
if($id && $class && is_subclass_of($class, 'DataObject')) {
if($id && $class && is_subclass_of($class, 'SilverStripe\ORM\DataObject')) {
return DataObject::get_by_id($class, $id);
}
}

View File

@ -1,11 +1,10 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use DataList;
use DropdownField;
use DB;
use DataObject;
/**
* A special type Int field used for primary keys.
@ -13,7 +12,7 @@ use DataObject;
* @todo Allow for custom limiting/filtering of scaffoldFormField dropdown
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBPrimaryKey extends DBInt {
/**

View File

@ -1,6 +1,6 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use Convert;
@ -8,7 +8,7 @@ use Convert;
* An abstract base class for the string field types (i.e. Varchar and Text)
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class DBString extends DBField {

View File

@ -1,14 +1,14 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use HTTP;
use Convert;
use NullableField;
use TextareaField;
use TextField;
use Config;
use SilverStripe\ORM\DB;
/**
* Represents a variable-length string of up to 2 megabytes, designed to store raw text
@ -25,7 +25,7 @@ use Config;
* @see Varchar
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBText extends DBString {
@ -48,8 +48,8 @@ class DBText extends DBString {
* @see DBField::requireField()
*/
public function requireField() {
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$collation = Config::inst()->get('MySQLDatabase', 'collation');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
$collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'collation');
$parts = array(
'datatype' => 'mediumtext',

View File

@ -1,12 +1,11 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use Convert;
use Zend_Date;
use TimeField;
use SilverStripe\ORM\DB;
/**
* Represents a column in the database with the type 'Time'.
@ -21,14 +20,14 @@ use TimeField;
* @todo Add localization support, see http://open.silverstripe.com/ticket/2931
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBTime extends DBField {
/**
* @config
* @see Date::nice_format
* @see SS_DateTime::nice_format
* @see DBDateTime::nice_format
*/
private static $nice_format = 'g:ia';
@ -42,7 +41,7 @@ class DBTime extends DBField {
}
/**
* Returns the time in the format specified by the config value nice_format, or 12 hour format by default
* Returns the time in the format specified by the config value nice_format, or 12 hour format by default
* e.g. "3:15pm"
*
* @return string

View File

@ -1,11 +1,11 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use NullableField;
use TextField;
use Config;
use SilverStripe\ORM\DB;
/**
* Class Varchar represents a variable-length string of up to 255 characters, designed to store raw text
@ -15,7 +15,7 @@ use Config;
* @see Text
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBVarchar extends DBString {
@ -58,8 +58,8 @@ class DBVarchar extends DBString {
* @see DBField::requireField()
*/
public function requireField() {
$charset = Config::inst()->get('MySQLDatabase', 'charset');
$collation = Config::inst()->get('MySQLDatabase', 'collation');
$charset = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'charset');
$collation = Config::inst()->get('SilverStripe\ORM\Connect\MySQLDatabase', 'collation');
$parts = array(
'datatype'=>'varchar',

View File

@ -1,20 +1,20 @@
<?php
namespace SilverStripe\Model\FieldType;
namespace SilverStripe\ORM\FieldType;
use DB;
use DropdownField;
use SilverStripe\ORM\DB;
/**
* @package framework
* @subpackage model
* @subpackage orm
*/
/**
* Represents a single year field.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class DBYear extends DBField {

View File

@ -1,5 +1,7 @@
<?php
namespace SilverStripe\ORM;
/**
* Additional interface for {@link SS_List} classes that are filterable.
*
@ -8,7 +10,7 @@
*
* @see SS_List, SS_Sortable, SS_Limitable
* @package framework
* @subpackage model
* @subpackage orm
*/
interface SS_Filterable extends SS_List {

View File

@ -1,10 +1,15 @@
<?php
namespace SilverStripe\ORM;
use ArrayData;
/**
* A list decorator that allows a list to be grouped into sub-lists by common
* values of a field.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class GroupedList extends SS_ListDecorator {

View File

@ -1,10 +1,14 @@
<?php
namespace SilverStripe\ORM;
use InvalidArgumentException;
/**
* Subclass of {@link DataList} representing a has_many relation.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class HasManyList extends RelationList {

View File

@ -1,4 +1,7 @@
<?php
namespace SilverStripe\ORM;
/**
* Anything that implements HiddenClass won't be shown in user-interface elements. For example,
* DataObjects that implement HiddenClass won't be showing in the "new page" dropdown.

View File

@ -1,10 +1,24 @@
<?php
namespace SilverStripe\ORM\Hierarchy;
use Config;
use Exception;
use Controller;
use LeftAndMain;
use ClassInfo;
use SilverStripe\ORM\ValidationResult;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataExtension;
use SilverStripe\ORM\Versioning\Versioned;
/**
* DataObjects that use the Hierarchy extension can be be organised as a hierarchy, with children and parents. The most
* obvious example of this is SiteTree.
*
* @package framework
* @subpackage model
* @subpackage orm
*
* @property int ParentID
* @property DataObject owner
@ -133,7 +147,7 @@ class Hierarchy extends DataExtension {
$nodeCountThreshold = null, $nodeCountCallback = null) {
if(!is_numeric($nodeCountThreshold)) {
$nodeCountThreshold = Config::inst()->get('Hierarchy', 'node_threshold_total');
$nodeCountThreshold = Config::inst()->get('SilverStripe\ORM\Hierarchy\Hierarchy', 'node_threshold_total');
}
if($limitToMarked && $rootCall) {
@ -534,7 +548,7 @@ class Hierarchy extends DataExtension {
continue;
}
$idList[] = $child->ID;
$ext = $child->getExtensionInstance('Hierarchy');
$ext = $child->getExtensionInstance('SilverStripe\ORM\Hierarchy\Hierarchy');
$ext->setOwner($child);
$ext->loadDescendantIDListInto($idList);
$ext->clearOwner();
@ -598,7 +612,7 @@ class Hierarchy extends DataExtension {
$stageChildren = $this->owner->stageChildren(true);
// Add live site content that doesn't exist on the stage site, if required.
if($this->owner->hasExtension('Versioned')) {
if($this->owner->hasExtension('SilverStripe\ORM\Versioning\Versioned')) {
// Next, go through the live children. Only some of these will be listed
$liveChildren = $this->owner->liveChildren(true, true);
if($liveChildren) {
@ -626,7 +640,7 @@ class Hierarchy extends DataExtension {
* @throws Exception
*/
public function AllHistoricalChildren() {
if(!$this->owner->hasExtension('Versioned')) {
if(!$this->owner->hasExtension('SilverStripe\ORM\Versioning\Versioned')) {
throw new Exception('Hierarchy->AllHistoricalChildren() only works with Versioned extension applied');
}
@ -646,7 +660,7 @@ class Hierarchy extends DataExtension {
* @throws Exception
*/
public function numHistoricalChildren() {
if(!$this->owner->hasExtension('Versioned')) {
if(!$this->owner->hasExtension('SilverStripe\ORM\Versioning\Versioned')) {
throw new Exception('Hierarchy->AllHistoricalChildren() only works with Versioned extension applied');
}
@ -721,7 +735,7 @@ class Hierarchy extends DataExtension {
* @throws Exception
*/
public function liveChildren($showAll = false, $onlyDeletedFromStage = false) {
if(!$this->owner->hasExtension('Versioned')) {
if(!$this->owner->hasExtension('SilverStripe\ORM\Versioning\Versioned')) {
throw new Exception('Hierarchy->liveChildren() only works with Versioned extension applied');
}

View File

@ -1,5 +1,7 @@
<?php
namespace SilverStripe\ORM;
/**
* Additional interface for {@link SS_List} classes that are limitable - able to have a subset of the list extracted.
*
@ -8,7 +10,7 @@
*
* @see SS_List, SS_Sortable, SS_Filterable
* @package framework
* @subpackage model
* @subpackage orm
*/
interface SS_Limitable extends SS_List {

View File

@ -1,9 +1,16 @@
<?php
namespace SilverStripe\ORM;
use ArrayAccess;
use Countable;
use IteratorAggregate;
/**
* An interface that a class can implement to be treated as a list container.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
interface SS_List extends ArrayAccess, Countable, IteratorAggregate {

View File

@ -1,11 +1,17 @@
<?php
namespace SilverStripe\ORM;
use ViewableData;
use LogicException;
/**
* A base class for decorators that wrap around a list to provide additional
* functionality. It passes through list methods to the underlying list
* implementation.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class SS_ListDecorator extends ViewableData implements SS_List, SS_Sortable, SS_Filterable, SS_Limitable {

View File

@ -1,12 +1,19 @@
<?php
use SilverStripe\Model\FieldType\DBComposite;
namespace SilverStripe\ORM;
use Object;
use InvalidArgumentException;
use Exception;
use SilverStripe\ORM\Queries\SQLSelect;
use SilverStripe\ORM\Queries\SQLDelete;
use SilverStripe\ORM\FieldType\DBComposite;
/**
* Subclass of {@link DataList} representing a many_many relation.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class ManyManyList extends RelationList {

View File

@ -1,10 +1,17 @@
<?php
namespace SilverStripe\ORM;
use ArrayAccess;
use Countable;
use IteratorAggregate;
use Iterator;
/**
* Creates a map from an SS_List by defining a key column and a value column.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class SS_Map implements ArrayAccess, Countable, IteratorAggregate {
@ -266,7 +273,7 @@ class SS_Map implements ArrayAccess, Countable, IteratorAggregate {
* Builds a map iterator around an Iterator. Called by SS_Map
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class SS_Map_Iterator implements Iterator {

View File

@ -1,10 +1,16 @@
<?php
namespace SilverStripe\ORM;
use Convert;
use ClassInfo;
use InvalidArgumentException;
/**
* Represents a has_many list linked against a polymorphic relationship
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class PolymorphicHasManyList extends HasManyList {

View File

@ -1,10 +1,12 @@
<?php
namespace SilverStripe\ORM\Queries;
/**
* Represents a list of updates / inserts made to a single row in a table
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class SQLAssignmentRow {

View File

@ -1,12 +1,14 @@
<?php
namespace SilverStripe\ORM\Queries;
/**
* Represents a where condition that is dynamically generated. Maybe be stored
* within a list of conditions, altered, and be allowed to affect the result
* of the parent sql query during future execution.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
interface SQLConditionGroup {

View File

@ -1,11 +1,15 @@
<?php
namespace SilverStripe\ORM\Queries;
use Deprecation;
/**
* Represents a SQL query for an expression which interacts with existing rows
* (SELECT / DELETE / UPDATE) with a WHERE clause
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class SQLConditionalExpression extends SQLExpression {

View File

@ -1,11 +1,15 @@
<?php
namespace SilverStripe\ORM\Queries;
use Injector;
/**
* Object representing a SQL DELETE query.
* The various parts of the SQL query can be manipulated individually.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class SQLDelete extends SQLConditionalExpression {

View File

@ -1,11 +1,17 @@
<?php
namespace SilverStripe\ORM\Queries;
use Exception;
use Convert;
use SilverStripe\ORM\DB;
/**
* Abstract base class for an object representing an SQL query.
* The various parts of the SQL query can be manipulated individually.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class SQLExpression {

View File

@ -1,11 +1,15 @@
<?php
namespace SilverStripe\ORM\Queries;
use Injector;
/**
* Object representing a SQL INSERT query.
* The various parts of the SQL query can be manipulated individually.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class SQLInsert extends SQLExpression implements SQLWriteExpression {

View File

@ -1,11 +1,18 @@
<?php
namespace SilverStripe\ORM\Queries;
use Injector;
use Deprecation;
use InvalidArgumentException;
use SilverStripe\ORM\DB;
/**
* Object representing a SQL SELECT query.
* The various parts of the SQL query can be manipulated individually.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class SQLSelect extends SQLConditionalExpression {

View File

@ -1,11 +1,15 @@
<?php
namespace SilverStripe\ORM\Queries;
use Injector;
/**
* Object representing a SQL UPDATE query.
* The various parts of the SQL query can be manipulated individually.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class SQLUpdate extends SQLConditionalExpression implements SQLWriteExpression {

View File

@ -1,11 +1,13 @@
<?php
namespace SilverStripe\ORM\Queries;
/**
* Represents a SQL expression which may have field values assigned
* (UPDATE/INSERT Expressions)
*
* @package framework
* @subpackage model
* @subpackage orm
*/
interface SQLWriteExpression {

View File

@ -1,18 +1,12 @@
<?php
namespace SilverStripe\Model;
use DBField;
use SS_Filterable;
use SS_Limitable;
use SS_List;
use SS_Sortable;
namespace SilverStripe\ORM;
/**
* Abstract representation of a DB relation field, either saved or in memory
*
* @package framework
* @subpackage model
* @subpackage orm
*/
interface Relation extends SS_List, SS_Filterable, SS_Sortable, SS_Limitable {

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\Relation;
namespace SilverStripe\ORM;
use Exception;
/**
* A DataList that represents a relation.
@ -8,7 +10,7 @@ use SilverStripe\Model\Relation;
* Adds the notion of a foreign ID that can be optionally set.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
abstract class RelationList extends DataList implements Relation {

View File

@ -1,5 +1,7 @@
<?php
namespace SilverStripe\ORM;
/**
* Additional interface for {@link SS_List} classes that are sortable.
*
@ -8,7 +10,7 @@
*
* @see SS_List, SS_Filterable, SS_Limitable
* @package framework
* @subpackage model
* @subpackage orm
*/
interface SS_Sortable extends SS_List {

View File

@ -1,6 +1,9 @@
<?php
use SilverStripe\Model\Relation;
namespace SilverStripe\ORM;
use InvalidArgumentException;
use ArrayIterator;
/**
* An {@link ArrayList} that represents an unsaved relation.
@ -14,7 +17,7 @@ use SilverStripe\Model\Relation;
* into an instance of {@link RelationList}.
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class UnsavedRelationList extends ArrayList implements Relation {

View File

@ -1,11 +1,16 @@
<?php
namespace SilverStripe\ORM;
use Exception;
/**
* Exception thrown by {@link DataObject}::write if validation fails. By throwing an
* exception rather than a user error, the exception can be caught in unit tests and as such
* can be used as a successful test.
*
* @package framework
* @subpackage validation
* @subpackage orm
*/
class ValidationException extends Exception {

View File

@ -1,10 +1,14 @@
<?php
namespace SilverStripe\ORM;
use Object;
/**
* A class that combined as a boolean result with an optional list of error messages.
* This is used for returning validation results from validators
* @package framework
* @subpackage core
* @subpackage orm
*/
class ValidationResult extends Object {
/**

View File

@ -1,6 +1,18 @@
<?php
// namespace SilverStripe\Framework\Model\Versioning
namespace SilverStripe\ORM\Versioning;
use Member;
use Permission;
use FieldList;
use TextField;
use ReadonlyField;
use i18n;
use BadMethodCallException;
use LogicException;
use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* The ChangeSet model tracks several VersionedAndStaged objects for later publication as a single
@ -12,7 +24,7 @@
* @property string $State
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class ChangeSet extends DataObject {
@ -29,13 +41,15 @@ class ChangeSet extends DataObject {
/** A changeset which is published and closed */
const STATE_PUBLISHED = 'published';
private static $table_name = 'ChangeSet';
private static $db = array(
'Name' => 'Varchar',
'State' => "Enum('open,published,reverted','open')",
);
private static $has_many = array(
'Changes' => 'ChangeSetItem',
'Changes' => 'SilverStripe\ORM\Versioning\ChangeSetItem',
);
private static $defaults = array(

View File

@ -1,9 +1,15 @@
<?php
// namespace SilverStripe\Framework\Model\Versioning
namespace SilverStripe\ORM\Versioning;
use Exception;
use BadMethodCallException;
use Member;
use Permission;
use CMSPreviewable;
use Controller;
use SilverStripe\Filesystem\Thumbnail;
use SilverStripe\ORM\DataObject;
/**
* A single line in a changeset
@ -33,6 +39,8 @@ class ChangeSetItem extends DataObject implements Thumbnail {
/** Represents an object which hasn't been changed directly, but owns a modified many_many relationship. */
//const CHANGE_MANYMANY = 'manymany';
private static $table_name = 'ChangeSetItem';
/**
* Represents that an object has not yet been changed, but
* should be included in this changeset as soon as any changes exist
@ -46,12 +54,12 @@ class ChangeSetItem extends DataObject implements Thumbnail {
);
private static $has_one = array(
'ChangeSet' => 'ChangeSet',
'Object' => 'DataObject',
'ChangeSet' => 'SilverStripe\ORM\Versioning\ChangeSet',
'Object' => 'SilverStripe\ORM\DataObject',
);
private static $many_many = array(
'ReferencedBy' => 'ChangeSetItem'
'ReferencedBy' => 'SilverStripe\ORM\Versioning\ChangeSetItem'
);
private static $belongs_many_many = array(

View File

@ -1,6 +1,15 @@
<?php
use SilverStripe\Model\FieldType\DBField;
namespace SilverStripe\ORM\Versioning;
use ViewableData;
use Diff;
use Image;
use Convert;
use ArrayData;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\FieldType\DBField;
/**
* Utility class to render views of the differences between two data objects (or two versions of the
@ -36,7 +45,7 @@ use SilverStripe\Model\FieldType\DBField;
* </code>
*
* @package framework
* @subpackage misc
* @subpackage orm
*/
class DataDifferencer extends ViewableData {
protected $fromRecord;

View File

@ -1,5 +1,7 @@
<?php
namespace SilverStripe\ORM\Versioning;
/**
* Minimum level extra fields required by extensions that are versonable
*/

View File

@ -1,6 +1,30 @@
<?php
// namespace SilverStripe\Framework\Model\Versioning
namespace SilverStripe\ORM\Versioning;
use TemplateGlobalProvider;
use Session;
use Deprecation;
use InvalidArgumentException;
use Config;
use LogicException;
use Member;
use ClassInfo;
use Object;
use Permission;
use Director;
use Cookie;
use FieldList;
use ViewableData;
use SilverStripe\ORM\DataQuery;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataExtension;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\Queries\SQLSelect;
use SilverStripe\ORM\Queries\SQLUpdate;
/**
* The Versioned extension allows your DataObjects to have several versions,
@ -11,7 +35,7 @@
* @property DataObject|Versioned $owner
*
* @package framework
* @subpackage model
* @subpackage orm
*/
class Versioned extends DataExtension implements TemplateGlobalProvider {
@ -415,7 +439,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
}
// Add all <basetable>_versions columns
foreach(Config::inst()->get('Versioned', 'db_for_versions_table') as $name => $type) {
foreach(Config::inst()->get('SilverStripe\ORM\Versioning\Versioned', 'db_for_versions_table') as $name => $type) {
$query->selectField(sprintf('"%s_versions"."%s"', $baseTable, $name), $name);
}
@ -618,11 +642,11 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
if($isRootClass) {
// Create table for all versions
$versionFields = array_merge(
Config::inst()->get('Versioned', 'db_for_versions_table'),
Config::inst()->get('SilverStripe\ORM\Versioning\Versioned', 'db_for_versions_table'),
(array)$fields
);
$versionIndexes = array_merge(
Config::inst()->get('Versioned', 'indexes_for_versions_table'),
Config::inst()->get('SilverStripe\ORM\Versioning\Versioned', 'indexes_for_versions_table'),
(array)$nonUniqueIndexes
);
} else {
@ -871,7 +895,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
// If we're editing Live, then use (table)_Live instead of (table)
if($this->hasStages() && static::get_stage() === static::LIVE) {
$this->augmentWriteStaged($manipulation, $class, $id);
$this->augmentWriteStaged($manipulation, $table, $id);
}
}
@ -1000,9 +1024,9 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
protected function lookupReverseOwners() {
// Find all classes with 'owns' config
$lookup = array();
foreach(ClassInfo::subclassesFor('DataObject') as $class) {
foreach(ClassInfo::subclassesFor('SilverStripe\ORM\DataObject') as $class) {
// Ensure this class is versioned
if(!Object::has_extension($class, 'Versioned')) {
if(!Object::has_extension($class, 'SilverStripe\ORM\Versioning\Versioned')) {
continue;
}
@ -1021,7 +1045,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
if(!$ownedClass) {
continue;
}
if($ownedClass === 'DataObject') {
if($ownedClass === 'SilverStripe\ORM\DataObject') {
throw new LogicException(sprintf(
"Relation %s on class %s cannot be owned as it is polymorphic",
$owned, $class
@ -1115,7 +1139,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
$itemKey = $item->class . '/' . $item->ID;
// Skip unsaved, unversioned, or already checked objects
if(!$item->isInDB() || !$item->has_extension('Versioned') || isset($list[$itemKey])) {
if(!$item->isInDB() || !$item->has_extension('SilverStripe\ORM\Versioning\Versioned') || isset($list[$itemKey])) {
continue;
}
@ -1372,7 +1396,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
*/
public function canBeVersioned($class) {
return ClassInfo::exists($class)
&& is_subclass_of($class, 'DataObject')
&& is_subclass_of($class, 'SilverStripe\ORM\DataObject')
&& DataObject::has_own_table($class);
}
@ -1820,7 +1844,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
}
// Add all <basetable>_versions columns
foreach(Config::inst()->get('Versioned', 'db_for_versions_table') as $name => $type) {
foreach(Config::inst()->get('SilverStripe\ORM\Versioning\Versioned', 'db_for_versions_table') as $name => $type) {
$query->selectField(sprintf('"%s_versions"."%s"', $baseTable, $name), $name);
}
@ -2105,7 +2129,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
* @param array $idList
*/
public static function prepopulate_versionnumber_cache($class, $stage, $idList = null) {
if (!Config::inst()->get('Versioned', 'prepopulate_versionnumber_cache')) {
if (!Config::inst()->get('SilverStripe\ORM\Versioning\Versioned', 'prepopulate_versionnumber_cache')) {
return;
}
$filter = "";
@ -2149,7 +2173,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
* @return DataList A modified DataList designated to the specified stage
*/
public static function get_by_stage(
$class, $stage, $filter = '', $sort = '', $join = '', $limit = null, $containerClass = 'DataList'
$class, $stage, $filter = '', $sort = '', $join = '', $limit = null, $containerClass = 'SilverStripe\ORM\DataList'
) {
$result = DataObject::get($class, $filter, $sort, $join, $limit, $containerClass);
return $result->setDataQueryParam(array(
@ -2437,7 +2461,7 @@ class Versioned extends DataExtension implements TemplateGlobalProvider {
* Represents a single version of a record.
*
* @package framework
* @subpackage model
* @subpackage orm
*
* @see Versioned
*/

View File

@ -1,13 +1,17 @@
<?php
namespace SilverStripe\ORM\Versioning;
use Extension;
/**
* Extends {@see GridFieldDetailForm}
*/
class VersionedGridFieldDetailForm extends Extension {
public function updateItemRequestClass(&$class, $gridField, $record, $requestHandler) {
// Conditionally use a versioned item handler
if($record && $record->has_extension('Versioned')) {
$class = 'VersionedGridFieldItemRequest';
if($record && $record->has_extension('SilverStripe\ORM\Versioning\Versioned')) {
$class = 'SilverStripe\ORM\Versioning\VersionedGridFieldItemRequest';
}
}
}

View File

@ -1,5 +1,12 @@
<?php
namespace SilverStripe\ORM\Versioning;
use GridFieldDetailForm_ItemRequest;
use FormAction;
use Convert;
use SilverStripe\ORM\ValidationException;
/**
* Provides versioned dataobject support to {@see GridFieldDetailForm_ItemRequest}
*
@ -12,7 +19,7 @@ class VersionedGridFieldItemRequest extends GridFieldDetailForm_ItemRequest {
// Check if record is versionable
$record = $this->getRecord();
if(!$record || !$record->has_extension('Versioned')) {
if(!$record || !$record->has_extension('SilverStripe\ORM\Versioning\Versioned')) {
return $actions;
}

View File

@ -7,7 +7,7 @@ Injector:
Upload:
# Replace an existing file rather than renaming the new one.
replaceFile: false
MySQLDatabase:
SilverStripe\ORM\Connect\MySQLDatabase:
# You are advised to backup your tables if changing settings on an existing database
# `connection_charset` and `charset` should be equal, similarly so should `connection_collation` and `collation`
connection_charset: utf8

View File

@ -3,20 +3,24 @@ name: databaseconnectors
---
Injector:
MySQLPDODatabase:
class: 'MySQLDatabase'
class: 'SilverStripe\ORM\Connect\MySQLDatabase'
properties:
connector: %$PDOConnector
schemaManager: %$MySQLSchemaManager
queryBuilder: %$MySQLQueryBuilder
MySQLDatabase:
class: 'MySQLDatabase'
class: 'SilverStripe\ORM\Connect\MySQLDatabase'
properties:
connector: %$MySQLiConnector
schemaManager: %$MySQLSchemaManager
queryBuilder: %$MySQLQueryBuilder
MySQLiConnector:
class: 'MySQLiConnector'
class: 'SilverStripe\ORM\Connect\MySQLiConnector'
type: prototype
PDOConnector:
class: 'PDOConnector'
class: 'SilverStripe\ORM\Connect\PDOConnector'
type: prototype
MySQLSchemaManager:
class: 'SilverStripe\ORM\Connect\MySQLSchemaManager'
MySQLQueryBuilder:
class: 'SilverStripe\ORM\Connect\MySQLQueryBuilder'

View File

@ -1,53 +1,53 @@
Injector:
Boolean:
class: SilverStripe\Model\FieldType\DBBoolean
class: SilverStripe\ORM\FieldType\DBBoolean
Currency:
class: SilverStripe\Model\FieldType\DBCurrency
class: SilverStripe\ORM\FieldType\DBCurrency
DBClassName:
class: SilverStripe\Model\FieldType\DBClassName
class: SilverStripe\ORM\FieldType\DBClassName
Date:
class: SilverStripe\Model\FieldType\DBDate
class: SilverStripe\ORM\FieldType\DBDate
Datetime:
class: SilverStripe\Model\FieldType\DBDatetime
SS_Datetime:
class: SilverStripe\Model\FieldType\DBDatetime
class: SilverStripe\ORM\FieldType\DBDatetime
DBDatetime:
class: SilverStripe\ORM\FieldType\DBDatetime
Decimal:
class: SilverStripe\Model\FieldType\DBDecimal
class: SilverStripe\ORM\FieldType\DBDecimal
Double:
class: SilverStripe\Model\FieldType\DBDouble
class: SilverStripe\ORM\FieldType\DBDouble
Enum:
class: SilverStripe\Model\FieldType\DBEnum
class: SilverStripe\ORM\FieldType\DBEnum
DBFile:
class: SilverStripe\Filesystem\Storage\DBFile
Float:
class: SilverStripe\Model\FieldType\DBFloat
class: SilverStripe\ORM\FieldType\DBFloat
ForeignKey:
class: SilverStripe\Model\FieldType\DBForeignKey
class: SilverStripe\ORM\FieldType\DBForeignKey
HTMLText:
class: SilverStripe\Model\FieldType\DBHTMLText
class: SilverStripe\ORM\FieldType\DBHTMLText
HTMLVarchar:
class: SilverStripe\Model\FieldType\DBHTMLVarchar
class: SilverStripe\ORM\FieldType\DBHTMLVarchar
Int:
class: SilverStripe\Model\FieldType\DBInt
class: SilverStripe\ORM\FieldType\DBInt
Locale:
class: SilverStripe\Model\FieldType\DBLocale
class: SilverStripe\ORM\FieldType\DBLocale
DBLocale:
class: SilverStripe\Model\FieldType\DBLocale
class: SilverStripe\ORM\FieldType\DBLocale
Money:
class: SilverStripe\Model\FieldType\DBMoney
class: SilverStripe\ORM\FieldType\DBMoney
MultiEnum:
class: SilverStripe\Model\FieldType\DBMultiEnum
class: SilverStripe\ORM\FieldType\DBMultiEnum
Percentage:
class: SilverStripe\Model\FieldType\DBPercentage
class: SilverStripe\ORM\FieldType\DBPercentage
PolymorphicForeignKey:
class: SilverStripe\Model\FieldType\DBPolymorphicForeignKey
class: SilverStripe\ORM\FieldType\DBPolymorphicForeignKey
PrimaryKey:
class: SilverStripe\Model\FieldType\DBPrimaryKey
class: SilverStripe\ORM\FieldType\DBPrimaryKey
Text:
class: SilverStripe\Model\FieldType\DBText
class: SilverStripe\ORM\FieldType\DBText
Time:
class: SilverStripe\Model\FieldType\DBTime
class: SilverStripe\ORM\FieldType\DBTime
Varchar:
class: SilverStripe\Model\FieldType\DBVarchar
class: SilverStripe\ORM\FieldType\DBVarchar
Year:
class: SilverStripe\Model\FieldType\DBYear
class: SilverStripe\ORM\FieldType\DBYear

View File

@ -3,4 +3,4 @@ Name: versioning
---
GridFieldDetailForm:
extensions:
- VersionedGridFieldDetailForm
- SilverStripe\ORM\Versioning\VersionedGridFieldDetailForm

View File

@ -6,7 +6,7 @@ $frameworkPath = defined('FRAMEWORK_PATH') ? FRAMEWORK_PATH : FRAMEWORK_NAME;
// Use MySQLi as default
DatabaseAdapterRegistry::register(
array(
'class' => 'MySQLDatabase',
'class' => 'SilverStripe\\ORM\\Connect\\MySQLDatabase',
'title' => 'MySQL 5.0+ (using MySQLi)',
'helperPath' => $frameworkPath . '/dev/install/MySQLDatabaseConfigurationHelper.php',
'supported' => class_exists('MySQLi'),

View File

@ -1,7 +1,11 @@
<?php
use SilverStripe\Framework\Core\Injectable;
use SilverStripe\Model\FieldType\DBHTMLText;
use SilverStripe\ORM\Versioning\ChangeSet;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Versioning\ChangeSetItem;
/**
@ -97,7 +101,7 @@ class AddToCampaignHandler {
$id = (int)$id;
$class = ClassInfo::class_name($class);
if (!$class || !is_subclass_of($class, 'DataObject') || !Object::has_extension($class, 'Versioned')) {
if (!$class || !is_subclass_of($class, 'SilverStripe\\ORM\\DataObject') || !Object::has_extension($class, 'SilverStripe\\ORM\\Versioning\\Versioned')) {
$this->editForm->httpError(400, _t(
'AddToCampaign.ErrorGeneral',
'We apologise, but there was an error'

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataModel;
/**
* @package framework
* @subpackage admin

View File

@ -1,5 +1,9 @@
<?php
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Versioning\Versioned;
/**
* A class representing back actions.
* See CMSMain.BatchActions.js on how to add custom javascript
@ -148,7 +152,7 @@ abstract class CMSBatchAction extends Object {
}
$onlyOnLive = array_keys($onlyOnLive);
if($checkLivePages && $onlyOnLive && Object::has_extension($managedClass, 'Versioned')) {
if($checkLivePages && $onlyOnLive && Object::has_extension($managedClass, 'SilverStripe\\ORM\\Versioning\\Versioned')) {
// Get the pages that only exist on live (deleted from stage)
$livePages = Versioned::get_by_stage($managedClass, "Live")->byIDs($onlyOnLive);
foreach($livePages as $obj) {

View File

@ -1,5 +1,10 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
/**
* Special request handler for admin/batchaction
*
@ -273,7 +278,7 @@ class CMSBatchActionHandler extends RequestHandler {
}
// Bypass versioned filter
if($recordClass::has_extension('Versioned')) {
if($recordClass::has_extension('SilverStripe\\ORM\\Versioning\\Versioned')) {
// Workaround for get_including_deleted not supporting byIDs filter very well
// Ensure we select both stage / live records
$pages = Versioned::get_including_deleted($recordClass, array(

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ArrayList;
/**
* @package framework
* @subpackage admin

View File

@ -1,5 +1,9 @@
<?php
use SilverStripe\ORM\Versioning\ChangeSet;
use SilverStripe\ORM\Versioning\ChangeSetItem;
use SilverStripe\ORM\DataObject;
/**
* Campaign section of the CMS
*
@ -23,7 +27,7 @@ class CampaignAdmin extends LeftAndMain implements PermissionProvider {
private static $menu_title = 'Campaigns';
private static $tree_class = 'ChangeSet';
private static $tree_class = 'SilverStripe\\ORM\\Versioning\\ChangeSet';
private static $url_handlers = [
'GET sets' => 'readCampaigns',

View File

@ -6,7 +6,16 @@
*/
use SilverStripe\Forms\Schema\FormSchema;
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataModel;
use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Queries\SQLSelect;
/**
* LeftAndMain is the parent class of all the two-pane views in the CMS.
@ -900,7 +909,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
));
$record = $this->currentPage();
if($record && $record->exists()) {
if($record->hasExtension('Hierarchy')) {
if($record->hasExtension('SilverStripe\\ORM\\Hierarchy\\Hierarchy')) {
$ancestors = $record->getAncestors();
$ancestors = new ArrayList(array_reverse($ancestors->toArray()));
$ancestors->push($record);
@ -1022,7 +1031,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
// Limit the amount of nodes shown for performance reasons.
// Skip the check if we're filtering the tree, since its not clear how many children will
// match the filter criteria until they're queried (and matched up with previously marked nodes).
$nodeThresholdLeaf = Config::inst()->get('Hierarchy', 'node_threshold_leaf');
$nodeThresholdLeaf = Config::inst()->get('SilverStripe\\ORM\\Hierarchy\\Hierarchy', 'node_threshold_leaf');
if($nodeThresholdLeaf && !$filterFunction) {
$nodeCountCallback = function($parent, $numChildren) use(&$controller, $className, $nodeThresholdLeaf) {
if($className == 'SiteTree' && $parent->ID && $numChildren > $nodeThresholdLeaf) {
@ -1417,7 +1426,7 @@ class LeftAndMain extends Controller implements PermissionProvider {
$tree_class = $this->stat('tree_class');
if(
$tree_class::has_extension('Hierarchy')
$tree_class::has_extension('SilverStripe\\ORM\\Hierarchy\\Hierarchy')
&& !$fields->dataFieldByName('ParentID')
) {
$fields->push(new HiddenField('ParentID'));

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* Generates a three-pane UI for editing model classes, with an
* automatically generated search panel, tabular results and edit forms.

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests
@ -299,7 +301,7 @@ class LeftAndMainTest_Object extends DataObject implements TestOnly {
private static $default_sort = '"Sort"';
private static $extensions = array(
'Hierarchy'
'SilverStripe\\ORM\\Hierarchy\\Hierarchy'
);
public function CMSTreeClasses() {}

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
class ModelAdminTest extends FunctionalTest {
protected static $fixture_file = 'ModelAdminTest.yml';

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataObjectInterface;
use SilverStripe\ORM\SS_List;
/**
* A DataFormatter object handles transformation of data from SilverStripe model objects to a particular output
* format, and vice versa. This is most commonly used in developing RESTful APIs.

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataObjectInterface;
use SilverStripe\ORM\SS_List;
/**
* @package framework
* @subpackage formatters

View File

@ -1,6 +1,10 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\FieldType\DBField;
/**
* RSSFeed class

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\DataObjectInterface;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\SS_List;
/**
* @package framework
* @subpackage formatters

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataModel;
/**
* File similar to main.php designed for command-line scripts
*
@ -77,7 +80,7 @@ global $databaseConfig;
// We don't have a session in cli-script, but this prevents errors
$_SESSION = null;
require_once("model/DB.php");
require_once("ORM/DB.php");
// Connect to database

View File

@ -92,8 +92,9 @@ if(!isset($database) || !$database) {
if(defined('SS_DATABASE_USERNAME') && defined('SS_DATABASE_PASSWORD')) {
global $databaseConfig;
/** @skipUpgrade */
$databaseConfig = array(
"type" => defined('SS_DATABASE_CLASS') ? SS_DATABASE_CLASS : "MySQLDatabase",
"type" => defined('SS_DATABASE_CLASS') ? SS_DATABASE_CLASS : 'MySQLDatabase',
"server" => defined('SS_DATABASE_SERVER') ? SS_DATABASE_SERVER : 'localhost',
"username" => SS_DATABASE_USERNAME,
"password" => SS_DATABASE_PASSWORD,

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataModel;
/**
* Controllers are the cornerstone of all site functionality in SilverStripe. The {@link Director}
* selects a controller to pass control to, and then calls {@link run()}. This method will execute

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBDatetime;
use SilverStripe\ORM\FieldType\DBDatetime;
/**
* A default backend for the setting and getting of cookies

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataModel;
use SilverStripe\ORM\Versioning\Versioned;
/**
* Director is responsible for processing URLs, and providing environment information.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataModel;
/**
* Triggers a call to flush() on all implementors of Flushable.
*

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataModel;
/**
* A request filter is an object that's executed before and after a
* request occurs. By returning 'false' from the preRequest method,

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataModel;
/**
* This class is the base class of any SilverStripe object that can be used to handle HTTP requests.
*

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataModel;
/**
* Represents a request processer that delegates pre and post request handling to nested request filters
*

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataModel;
use SilverStripe\ORM\Versioning\Versioned;
/**
* Initialises the versioned stage when a request is made.
*

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* Provides introspection information about the class tree.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DB;
/**
* Library of conversion functions, implemented as static methods.
*

View File

@ -6,6 +6,7 @@ use ClassInfo;
use Config;
use Extension;
use Injector;
use InvalidArgumentException;
/**
* Allows an object to have extensions applied to it.
@ -205,8 +206,8 @@ trait Extensible {
Injector::inst()->unregisterNamedObject($class);
// load statics now for DataObject classes
if(is_subclass_of($class, 'DataObject')) {
if(!is_subclass_of($extensionClass, 'DataExtension')) {
if(is_subclass_of($class, 'SilverStripe\\ORM\\DataObject')) {
if(!is_subclass_of($extensionClass, 'SilverStripe\\ORM\\DataExtension')) {
user_error("$extensionClass cannot be applied to $class without being a DataExtension", E_USER_ERROR);
}
}
@ -315,6 +316,10 @@ trait Extensible {
list($extensionClass, $extensionArgs) = \Object::parse_class_spec($extension);
$sources[] = $extensionClass;
if (!class_exists($extensionClass)) {
throw new InvalidArgumentException("$class references nonexistent $extensionClass in \$extensions");
}
call_user_func(array($extensionClass, 'add_to_class'), $class, $extensionClass, $extensionArgs);
foreach(array_reverse(ClassInfo::ancestry($extensionClass)) as $extensionClassParent) {

View File

@ -1,4 +1,9 @@
<?php
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\Queries\SQLSelect;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\SS_ListDecorator;
/**
* A decorator that wraps around a data list in order to provide pagination.
*

View File

@ -19,11 +19,11 @@ class SS_Backtrace {
array('PDO', '__construct'),
array('mysqli', 'mysqli'),
array('mysqli', 'select_db'),
array('DB', 'connect'),
array('SilverStripe\\ORM\\DB', 'connect'),
array('Security', 'check_default_admin'),
array('Security', 'encrypt_password'),
array('Security', 'setDefaultAdmin'),
array('DB', 'createDatabase'),
array('SilverStripe\\ORM\\DB', 'createDatabase'),
array('Member', 'checkPassword'),
array('Member', 'changePassword'),
array('MemberPassword', 'checkPassword'),

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ArrayList;
/**
* A base for bulk loaders of content into the SilverStripe database.
* Bulk loaders give SilverStripe authors the ability to do large-scale uploads into their SilverStripe databases.

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Utility class to facilitate complex CSV-imports by defining column-mappings
* and custom converters.

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DB;
/**
* Supports debugging and core error handling.
*

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DatabaseAdmin;
class DevBuildController extends Controller {
private static $url_handlers = array(

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DatabaseAdmin;
/**
* Base class for development tools.
*

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\DataModel;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* A blueprint on how to create instances of a certain {@link DataObject} subclass.
*
@ -46,7 +50,7 @@ class FixtureBlueprint {
public function __construct($name, $class = null, $defaults = array()) {
if(!$class) $class = $name;
if(!is_subclass_of($class, 'DataObject')) {
if(!is_subclass_of($class, 'SilverStripe\\ORM\\DataObject')) {
throw new InvalidArgumentException(sprintf(
'Class "%s" is not a valid subclass of DataObject',
$class
@ -73,7 +77,7 @@ class FixtureBlueprint {
// which they are imported doesnt guarantee valid relations until after the import is complete.
// Also disable filesystem manipulations
Config::nest();
Config::inst()->update('DataObject', 'validation_enabled', false);
Config::inst()->update('SilverStripe\\ORM\\DataObject', 'validation_enabled', false);
Config::inst()->update('File', 'update_filesystem', false);
$this->invokeCallbacks('beforeCreate', array($identifier, &$data, &$fixtures));
@ -184,7 +188,7 @@ class FixtureBlueprint {
if($className = $obj->hasOneComponent($hasOneField)) {
$obj->{$hasOneField.'ID'} = $this->parseValue($fieldVal, $fixtures, $fieldClass);
// Inject class for polymorphic relation
if($className === 'DataObject') {
if($className === 'SilverStripe\\ORM\\DataObject') {
$obj->{$hasOneField.'Class'} = $fieldClass;
}
}

View File

@ -1,4 +1,9 @@
<?php
use SilverStripe\ORM\Queries\SQLInsert;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Queries\SQLDelete;
/**
* Manages a set of database fixtures for {@link DataObject} records
* as well as raw database table rows.

View File

@ -1,7 +1,15 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Model\FieldType\DBDatetime;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Hierarchy\Hierarchy;
use SilverStripe\ORM\DataModel;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\DB;
/**
* Test case class for the Sapphire framework.
@ -179,7 +187,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
Config::nest();
Injector::nest();
$this->originalReadingMode = \Versioned::get_reading_mode();
$this->originalReadingMode = Versioned::get_reading_mode();
// We cannot run the tests on this abstract class.
if(get_class($this) == "SapphireTest") {
@ -232,7 +240,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
self::create_temp_db();
}
singleton('DataObject')->flushCache();
singleton('SilverStripe\\ORM\\DataObject')->flushCache();
self::empty_temp_db();
@ -523,7 +531,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
$controller->response->removeHeader('Location');
}
\Versioned::set_reading_mode($this->originalReadingMode);
Versioned::set_reading_mode($this->originalReadingMode);
//unnest injector / config now that tests are over
Injector::unnest();
@ -866,7 +874,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
if($dbName && DB::get_conn()->databaseExists($dbName)) {
// Some DataExtensions keep a static cache of information that needs to
// be reset whenever the database is killed
foreach(ClassInfo::subclassesFor('DataExtension') as $class) {
foreach(ClassInfo::subclassesFor('SilverStripe\\ORM\\DataExtension') as $class) {
$toCall = array($class, 'on_db_reset');
if(is_callable($toCall)) call_user_func($toCall);
}
@ -886,7 +894,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
// Some DataExtensions keep a static cache of information that needs to
// be reset whenever the database is cleaned out
$classes = array_merge(ClassInfo::subclassesFor('DataExtension'), ClassInfo::subclassesFor('DataObject'));
$classes = array_merge(ClassInfo::subclassesFor('SilverStripe\\ORM\\DataExtension'), ClassInfo::subclassesFor('SilverStripe\\ORM\\DataObject'));
foreach($classes as $class) {
$toCall = array($class, 'on_db_reset');
if(is_callable($toCall)) call_user_func($toCall);
@ -946,7 +954,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
// clear singletons, they're caching old extension info which is used in DatabaseAdmin->doBuild()
Injector::inst()->unregisterAllObjects();
$dataClasses = ClassInfo::subclassesFor('DataObject');
$dataClasses = ClassInfo::subclassesFor('SilverStripe\\ORM\\DataObject');
array_shift($dataClasses);
DB::quiet();
@ -971,7 +979,7 @@ class SapphireTest extends PHPUnit_Framework_TestCase {
});
ClassInfo::reset_db_cache();
singleton('DataObject')->flushCache();
singleton('SilverStripe\\ORM\\DataObject')->flushCache();
}
}

View File

@ -22,7 +22,7 @@ class MySQLDatabaseConfigurationHelper implements DatabaseConfigurationHelper {
$error = null;
try {
switch($databaseConfig['type']) {
case 'MySQLDatabase':
case 'SilverStripe\\ORM\\Connect\\MySQLDatabase':
$conn = @new MySQLi($databaseConfig['server'], $databaseConfig['username'],
$databaseConfig['password']);
if($conn && empty($conn->connect_errno)) {

View File

@ -2,12 +2,16 @@
namespace SilverStripe\Filesystem;
use DataObject;
use Injector;
use Member;
use Versioned;
use SilverStripe\Filesystem\Storage\AssetStore;
use SilverStripe\Filesystem\Storage\DBFile;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataExtension;
/**
* This class provides the necessary business logic to ensure that any assets attached
@ -24,7 +28,7 @@ use SilverStripe\Filesystem\Storage\DBFile;
*
* @property DataObject|Versioned $owner A {@see DataObject}, potentially decorated with {@see Versioned} extension.
*/
class AssetControlExtension extends \DataExtension
class AssetControlExtension extends DataExtension
{
/**
@ -235,7 +239,7 @@ class AssetControlExtension extends \DataExtension
*/
protected function isVersioned()
{
return $this->owner->has_extension('Versioned') && class_exists('Versioned');
return $this->owner->has_extension('SilverStripe\\ORM\\Versioning\\Versioned') && class_exists('SilverStripe\\ORM\\Versioning\\Versioned');
}
/**

View File

@ -4,6 +4,12 @@ use SilverStripe\Filesystem\Storage\DBFile;
use SilverStripe\Filesystem\Thumbnail;
use SilverStripe\Filesystem\ImageManipulation;
use SilverStripe\Filesystem\Storage\AssetContainer;
use SilverStripe\ORM\Hierarchy\Hierarchy;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\ValidationResult;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* This class handles the representation of a file on the filesystem within the framework.
@ -102,8 +108,8 @@ class File extends DataObject implements ShortcodeHandler, AssetContainer, Thumb
);
private static $extensions = array(
"Hierarchy",
"Versioned"
"SilverStripe\\ORM\\Hierarchy\\Hierarchy",
"SilverStripe\\ORM\\Versioning\\Versioned"
);
private static $casting = array (

View File

@ -1,6 +1,9 @@
<?php
use SilverStripe\Filesystem\Storage\AssetStore;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Versioning\Versioned;
/**
* Service to help migrate File dataobjects to the new APL.

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* A collection of static methods for manipulating the filesystem.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\Versioning\Versioned;
/**
* Represents a logical folder, which may be used to organise assets
* stored in the configured backend.

View File

@ -4,14 +4,16 @@ namespace SilverStripe\Filesystem;
use Config;
use Convert;
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Filesystem\Storage\DBFile;
use Image_Backend;
use Injector;
use InvalidArgumentException;
use SilverStripe\Filesystem\Storage\AssetContainer;
use SilverStripe\Filesystem\Storage\AssetStore;
use SilverStripe\Model\FieldType\DBHTMLText;
use SilverStripe\ORM\FieldType\DBField;
/**
* Provides image manipulation functionality.

View File

@ -3,6 +3,8 @@
use SilverStripe\Filesystem\Storage\AssetContainer;
use SilverStripe\Filesystem\Storage\AssetNameGenerator;
use SilverStripe\Filesystem\Storage\AssetStore;
use SilverStripe\ORM\DataObject;
/**
* Manages uploads via HTML forms processed by PHP,

View File

@ -3,6 +3,8 @@
namespace SilverStripe\Filesystem\Flysystem;
use League\Flysystem\Adapter\Local;
use SilverStripe\ORM\ArrayList;
/**
* Adapter for local filesystem based on assets directory
@ -121,7 +123,7 @@ class AssetAdapter extends Local {
*/
protected function renderTemplate($template) {
// Build allowed extensions
$allowedExtensions = new \ArrayList();
$allowedExtensions = new ArrayList();
foreach(\File::config()->allowed_extensions as $extension) {
if($extension) {
$allowedExtensions->push(new \ArrayData(array(

View File

@ -4,15 +4,19 @@ namespace SilverStripe\Filesystem\Storage;
use SilverStripe\Filesystem\Thumbnail;
use SilverStripe\Filesystem\ImageManipulation;
use SilverStripe\Model\FieldType\DBComposite;
use Injector;
use AssetField;
use File;
use Director;
use Permission;
use ValidationResult;
use ValidationException;
use SilverStripe\ORM\ValidationResult;
use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\FieldType\DBComposite;
/**
* Represents a file reference stored in a database

View File

@ -3,6 +3,10 @@
use SilverStripe\Filesystem\Storage\AssetContainer;
use SilverStripe\Filesystem\Storage\AssetStore;
use SilverStripe\Filesystem\Storage\DBFile;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\DataObjectInterface;
/**
* Field for uploading into a DBFile instance.

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* Displays a set of checkboxes as a logical group.
*

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataObjectInterface;
/**
* Two masked input fields, checks for matching passwords.
*

View File

@ -17,7 +17,7 @@ class CurrencyField extends TextField {
*/
public function setValue($val) {
if(!$val) $val = 0.00;
$this->value = Config::inst()->get('SilverStripe\Model\FieldType\DBCurrency','currency_symbol') . number_format((double)preg_replace('/[^0-9.\-]/', '', $val), 2);
$this->value = Config::inst()->get('SilverStripe\\ORM\\FieldType\\DBCurrency','currency_symbol') . number_format((double)preg_replace('/[^0-9.\-]/', '', $val), 2);
return $this;
}
/**
@ -44,7 +44,7 @@ class CurrencyField extends TextField {
}
public function validate($validator) {
$currencySymbol = preg_quote(Config::inst()->get('SilverStripe\Model\FieldType\DBCurrency', 'currency_symbol'));
$currencySymbol = preg_quote(Config::inst()->get('SilverStripe\\ORM\\FieldType\\DBCurrency', 'currency_symbol'));
$regex = '/^\s*(\-?'.$currencySymbol.'?|'.$currencySymbol.'\-?)?(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?\s*$/';
if(!empty ($this->value)
&& !preg_match($regex, $this->value)) {

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBDate;
use SilverStripe\ORM\FieldType\DBDate;
require_once 'Zend/Date.php';

View File

@ -1,11 +1,13 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBField;
/**
* A composite field for date and time entry,
* based on {@link DateField} and {@link TimeField}.
* Usually saves into a single {@link SS_Datetime} database column.
* Usually saves into a single {@link DBDateTime} database column.
* If you want to save into {@link Date} or {@link Time} columns,
* please instanciate the fields separately.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* Dropdown field, created from a <select> tag.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* A list designed to hold form field instances.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObjectInterface;
/**
* Represents a file type which can be added to a form.
* Automatically tries to save has_one-relations on the saved

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\DataObjectInterface;
/**
* Base class for all forms.
* The form class is an extensible base for all forms on a SilverStripe application. It can be used

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataObjectInterface;
use SilverStripe\ORM\FieldType\DBField;
/**
* Represents a field in a form.
*

View File

@ -104,7 +104,7 @@ class FormScaffolder extends Object {
if($this->obj->hasOne()) {
foreach($this->obj->hasOne() as $relationship => $component) {
if($this->restrictFields && !in_array($relationship, $this->restrictFields)) continue;
$fieldName = $component === 'DataObject'
$fieldName = $component === 'SilverStripe\\ORM\\DataObject'
? $relationship // Polymorphic has_one field is composite, so don't refer to ID subfield
: "{$relationship}ID";
if($this->fieldClasses && isset($this->fieldClasses[$fieldName])) {

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* Grouped dropdown, using <optgroup> tags.
*

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBField;
/**
* Render a button that will submit the form its contained in through ajax.

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* Multi-line listbox field, created from a <select> tag.
*

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObjectInterface;
/**
* Read-only complement of {@link DropdownField}.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* @package framework
* @subpackage security

View File

@ -1,7 +1,11 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Model\FieldType\DBMoney;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBMoney;
use SilverStripe\ORM\DataObjectInterface;
/**
* A form field that can save into a {@link Money} database field.

View File

@ -1,6 +1,10 @@
<?php
use SilverStripe\Model\Relation;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataObjectInterface;
use SilverStripe\ORM\Relation;
/**
* Represents a SelectField that may potentially have multiple selections, and may have

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBField;
/**
* NullableField is a field that wraps other fields when you want to allow the user to specify

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Text input field with validation for numeric values. Supports validating
* the numeric value as to the {@link i18n::get_locale()} value, or an

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* Set of radio buttons designed to emulate a dropdown.
*

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObjectInterface;
/**
* @package forms
* @subpackage fields-formattedinput

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\SS_Map;
/**
* Represents a field that allows users to select one or more items from a list
*/

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* Represents a number of fields which are selectable by a radio
* button that appears at the beginning of each item. Using CSS, you can

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Dropdown-like field that allows you to select an item from a hierarchical
* AJAX-expandable tree.
@ -336,7 +338,7 @@ class TreeDropdownField extends FormField {
// Limit the amount of nodes shown for performance reasons.
// Skip the check if we're filtering the tree, since its not clear how many children will
// match the filter criteria until they're queried (and matched up with previously marked nodes).
$nodeThresholdLeaf = Config::inst()->get('Hierarchy', 'node_threshold_leaf');
$nodeThresholdLeaf = Config::inst()->get('SilverStripe\\ORM\\Hierarchy\\Hierarchy', 'node_threshold_leaf');
if($nodeThresholdLeaf && !$this->filterCallback && !$this->search) {
$className = $this->sourceObject;
$nodeCountCallback = function($parent, $numChildren) use($className, $nodeThresholdLeaf) {

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataObjectInterface;
/**
* This formfield represents many-many joins using a tree selector shown in a dropdown styled element
* which can be added to any form usually in the CMS.

View File

@ -1,6 +1,15 @@
<?php
use SilverStripe\Filesystem\Storage\AssetContainer;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\DataObjectInterface;
use SilverStripe\ORM\RelationList;
use SilverStripe\ORM\UnsavedRelationList;
use SilverStripe\ORM\DataList;
/**
* Field for uploading single or multiple files of all types, including images.
@ -1616,7 +1625,7 @@ class UploadField_SelectHandler extends RequestHandler {
'Size' => singleton('File')->fieldLabel('Size')
));
$colsComponent->setFieldCasting(array(
'Created' => 'SS_Datetime->Nice'
'Created' => 'DBDatetime->Nice'
));
// Set configurable pagination for file list field

View File

@ -1,6 +1,11 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\DataModel;
use SilverStripe\ORM\DataObjectInterface;
/**
* Displays a {@link SS_List} in a grid format.

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataList;
/**
* This class is is responsible for adding objects to another object's has_many
* and many_many relation, as defined by the {@link RelationList} passed to the

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\DataObjectInterface;
/**
* Base interface for all components that can be added to GridField.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* Encapsulates a collection of components following the
* {@link GridFieldComponent} interface. While the {@link GridField} itself

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ValidationException;
/**
* This class is a {@link GridField} component that adds a delete action for
* objects.

View File

@ -1,5 +1,10 @@
<?php
use SilverStripe\Framework\Core\Extensible;
use SilverStripe\ORM\DataModel;
use SilverStripe\ORM\HasManyList;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\ORM\ValidationException;
/**
* Provides view and edit forms at GridField-specific URLs.

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\SS_Filterable;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\ArrayList;
/**
* GridFieldFilterHeader alters the {@link GridField} with some filtering
* fields in the header of each column.

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Adds a "level up" link to a GridField table, which is useful when viewing
* hierarchical data. Requires the managed record to have a "getParent()"

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\SS_Limitable;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\UnsavedRelationList;
/**
* GridFieldPaginator paginates the {@link GridField} list and adds controls
* to the bottom of the {@link GridField}.

View File

@ -1,6 +1,9 @@
<?php
use SilverStripe\Model\FieldType\DBDatetime;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\FieldType\DBDatetime;
/**
* Adds an "Print" button to the bottom or top of a GridField.

View File

@ -1,5 +1,10 @@
<?php
use SilverStripe\ORM\SS_Sortable;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\DataObject;
/**
* GridFieldSortableHeader adds column headers to a {@link GridField} that can
* also sort the columns.

View File

@ -1,6 +1,9 @@
<?php
use Embed\Adapters\AdapterInterface;
use Embed\Embed;
use SilverStripe\ORM\DataObjectInterface;
use SilverStripe\ORM\DataObject;
/**
* A TinyMCE-powered WYSIWYG HTML editor field with image and link insertion and tracking capabilities. Editor fields
@ -322,7 +325,7 @@ class HTMLEditorField_Toolbar extends RequestHandler {
'Created' => singleton('File')->fieldLabel('Created'),
));
$columns->setFieldCasting(array(
'Created' => 'SS_Datetime->Nice'
'Created' => 'DBDatetime->Nice'
));
$fromCMS = new CompositeField(

View File

@ -239,6 +239,12 @@ class i18nTextCollector extends Object {
return array_unique($allConflicts);
}
/**
* Map of translation keys => module names
* @var array
*/
protected $classModuleCache = [];
/**
* Determine the best module to be given ownership over this key
*
@ -249,8 +255,12 @@ class i18nTextCollector extends Object {
protected function getBestModuleForKey($entitiesByModule, $key) {
// Check classes
$class = current(explode('.', $key));
$owner = i18n::get_owner_module($class);
if(array_key_exists($class, $this->classModuleCache)) {
return $this->classModuleCache[$class];
}
$owner = $this->findModuleForClass($class);
if($owner) {
$this->classModuleCache[$class] = $owner;
return $owner;
}
@ -259,18 +269,56 @@ class i18nTextCollector extends Object {
// Display notice if not found
Debug::message(
"Duplicate key {$key} detected in multiple modules with no obvious owner",
"Duplicate key {$key} detected in no / multiple modules with no obvious owner",
false
);
// Fall back to framework then cms modules
foreach(array('framework', 'cms') as $module) {
if(isset($entitiesByModule[$module][$key])) {
$this->classModuleCache[$class] = $module;
return $module;
}
}
// Do nothing
$this->classModuleCache[$class] = null;
return null;
}
/**
* Given a partial class name, attempt to determine the best module to assign strings to.
*
* @param string $class Either a FQN class name, or a non-qualified class name.
* @return string Name of module
*/
protected function findModuleForClass($class) {
if(ClassInfo::exists($class)) {
return i18n::get_owner_module($class);
}
// If we can't find a class, see if it needs to be fully qualified
if(strpos($class, '\\') !== false) {
return null;
}
// Find FQN that ends with $class
$classes = preg_grep(
'/'.preg_quote("\\{$class}", '\/').'$/i',
SS_ClassLoader::instance()->getManifest()->getClassNames()
);
// Find all modules for candidate classes
$modules = array_unique(array_map(function($class) {
return i18n::get_owner_module($class);
}, $classes));
if(count($modules) === 1) {
return reset($modules);
}
// Couldn't find it! Exists in none, or multiple modules.
return null;
}

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataModel;
/************************************************************************************
************************************************************************************
** **
@ -141,7 +144,7 @@ $chain
require_once('core/Core.php');
// Connect to database
require_once('model/DB.php');
require_once('ORM/DB.php');
global $databaseConfig;
if ($databaseConfig) DB::connect($databaseConfig);

View File

@ -1,49 +0,0 @@
<?php
/**
* Backwards-compatibility class to preserve the functioning of references to SS_Datetime::now()
* @deprecated 4.0.0:5.0.0 Use SilverStripe\Model\FieldType\DBDatetime instead.
*/
class SS_Datetime extends SilverStripe\Model\FieldType\DBDatetime
{
public function __construct($name = null) {
self::deprecation_notice();
parent::__construct($name);
}
public static function now() {
self::deprecation_notice();
return parent::now();
}
/**
* Mock the system date temporarily, which is useful for time-based unit testing.
* Use {@link clear_mock_now()} to revert to the current system date.
* Caution: This sets a fixed date that doesn't increment with time.
*
* @param SS_Datetime|string $datetime Either in object format, or as a SS_Datetime compatible string.
*/
public static function set_mock_now($datetime) {
self::deprecation_notice();
return parent::set_mock_now($datetime);
}
/**
* Clear any mocked date, which causes
* {@link Now()} to return the current system date.
*/
public static function clear_mock_now() {
self::deprecation_notice();
return parent::clear_mock_now();
}
public static function get_template_global_variables() {
self::deprecation_notice();
return parent::get_template_global_variables();
}
protected static function deprecation_notice() {
Deprecation::notice('4.0', 'SS_Datetime is deprecated. Please use SilverStripe\Model\FieldType\DBDatetime instead.');
}
}

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
require_once('HTML/HTMLBBCodeParser.php');
/*Seting up the PEAR bbcode parser*/
$config = parse_ini_file('BBCodeParser.ini', true);

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\Connect\MySQLSchemaManager;
use SilverStripe\ORM\DataExtension;
/**
* Provides a simple search engine for your site based on the MySQL FULLTEXT index.
* Adds the {@link FulltextSearchable} extension to data classes,

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataList;
/**
* Manages searching of properties on one or more {@link DataObject}
* types, based on a given set of input parameters.

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataQuery;
/**
* Base class for creating comparison filters, eg; greater than, less than, greater than or equal, etc
*

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataQuery;
use SilverStripe\ORM\DB;
/**
* @package framework
* @subpackage search

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataQuery;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage search

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataQuery;
use SilverStripe\ORM\DB;
/**
* @package framework
* @subpackage search

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataQuery;
/**
* Base class for filtering implementations,
* which work together with {@link SearchContext}
@ -166,7 +169,7 @@ abstract class SearchFilter extends Object {
}
// Ensure that we're dealing with a DataObject.
if (!is_subclass_of($this->model, 'DataObject')) {
if (!is_subclass_of($this->model, 'SilverStripe\\ORM\\DataObject')) {
throw new InvalidArgumentException(
"Model supplied to " . get_class($this) . " should be an instance of DataObject."
);

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataQuery;
/**
* @package framework
* @subpackage search

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\UnsavedRelationList;
/**
* A security group.
*
@ -45,7 +49,7 @@ class Group extends DataObject {
);
private static $extensions = array(
"Hierarchy",
"SilverStripe\\ORM\\Hierarchy\\Hierarchy",
);
public function populateDefaults() {
@ -459,7 +463,7 @@ class Group extends DataObject {
* Filters to only those groups that the current user can edit
*/
public function AllChildrenIncludingDeleted() {
$extInstance = $this->getExtensionInstance('Hierarchy');
$extInstance = $this->getExtensionInstance('SilverStripe\\ORM\\Hierarchy\\Hierarchy');
$extInstance->setOwner($this);
$children = $extInstance->AllChildrenIncludingDeleted();
$extInstance->clearOwner();

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @todo Migrate Permission->Arg and Permission->Type values
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Record all login attempts through the {@link LoginForm} object.
* This behaviour is disabled by default.

View File

@ -1,6 +1,16 @@
<?php
use SilverStripe\Model\FieldType\DBDatetime;
use SilverStripe\ORM\ValidationResult;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\Queries\SQLSelect;
use SilverStripe\ORM\ManyManyList;
/**
* The member class which represents the users of the system
@ -32,10 +42,10 @@ class Member extends DataObject implements TemplateGlobalProvider {
'Surname' => 'Varchar',
'Email' => 'Varchar(254)', // See RFC 5321, Section 4.5.3.1.3. (256 minus the < and > character)
'TempIDHash' => 'Varchar(160)', // Temporary id used for cms re-authentication
'TempIDExpired' => 'SS_Datetime', // Expiry of temp login
'TempIDExpired' => 'Datetime', // Expiry of temp login
'Password' => 'Varchar(160)',
'AutoLoginHash' => 'Varchar(160)', // Used to auto-login the user on password reset
'AutoLoginExpired' => 'SS_Datetime',
'AutoLoginExpired' => 'Datetime',
// This is an arbitrary code pointing to a PasswordEncryptor instance,
// not an actual encryption algorithm.
// Warning: Never change this field after its the first password hashing without
@ -43,7 +53,7 @@ class Member extends DataObject implements TemplateGlobalProvider {
'PasswordEncryption' => "Varchar(50)",
'Salt' => 'Varchar(50)',
'PasswordExpiry' => 'Date',
'LockedOutUntil' => 'SS_Datetime',
'LockedOutUntil' => 'Datetime',
'Locale' => 'Varchar(6)',
// handled in registerFailedLogin(), only used if $lock_out_after_incorrect_logins is set
'FailedLoginCount' => 'Int',
@ -364,7 +374,7 @@ class Member extends DataObject implements TemplateGlobalProvider {
* Returns true if this user is locked out
*/
public function isLockedOut() {
return $this->LockedOutUntil && SS_Datetime::now()->Format('U') < strtotime($this->LockedOutUntil);
return $this->LockedOutUntil && DBDatetime::now()->Format('U') < strtotime($this->LockedOutUntil);
}
/**
@ -553,11 +563,11 @@ class Member extends DataObject implements TemplateGlobalProvider {
if(strpos(Cookie::get('alc_enc'), ':') && Cookie::get('alc_device') && !Session::get("loggedInAs")) {
list($uid, $token) = explode(':', Cookie::get('alc_enc'), 2);
if (!$uid || !$token) {
return;
}
$deviceID = Cookie::get('alc_device');
$member = Member::get()->byId($uid);
@ -578,7 +588,7 @@ class Member extends DataObject implements TemplateGlobalProvider {
} else {
// Check for expired token
$expiryDate = new DateTime($rememberLoginHash->ExpiryDate);
$now = SS_Datetime::now();
$now = DBDatetime::now();
$now = new DateTime($now->Rfc2822());
if ($now > $expiryDate) {
$member = null;
@ -1325,7 +1335,7 @@ class Member extends DataObject implements TemplateGlobalProvider {
$groupIDList = array();
if(is_a($groups, 'SS_List')) {
if(is_a($groups, 'SilverStripe\\ORM\\SS_List')) {
foreach($groups as $group) {
$groupIDList[] = $group->ID;
}
@ -1654,7 +1664,7 @@ class Member extends DataObject implements TemplateGlobalProvider {
if($this->FailedLoginCount >= self::config()->lock_out_after_incorrect_logins) {
$lockoutMins = self::config()->lock_out_delay_mins;
$this->LockedOutUntil = date('Y-m-d H:i:s', SS_Datetime::now()->Format('U') + $lockoutMins*60);
$this->LockedOutUntil = date('Y-m-d H:i:s', DBDatetime::now()->Format('U') + $lockoutMins*60);
$this->FailedLoginCount = 0;
}
}

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ValidationResult;
/**
* Authenticator for the default "member" method
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Imports member records, and checks/updates duplicates based on their
* 'Email' property.

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Keep track of users' previous passwords, so that we can check that new passwords aren't changed back to old ones.
* @package framework

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DB;
/**
* Allows pluggable password encryption.
* By default, this might be PHP's integrated sha1()

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\ValidationResult;
/**
* This class represents a validator for member passwords.
*

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ArrayList;
/**
* Represents a permission assigned to a group.
* @package framework

View File

@ -1,6 +1,11 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\DataObjectInterface;
/**
* Shows a categorized list of available permissions (through {@link Permission::get_codes()}).

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* A PermissionRole represents a collection of permission codes that can be applied to groups.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* A PermissionRoleCode represents a single permission code assigned to a {@link PermissionRole}.
*

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\DataObject;
/**
* Persists a token associated with a device for users who opted for the "Remember Me"
* feature when logging in.
@ -19,7 +22,7 @@ class RememberLoginHash extends DataObject {
private static $db = array (
'DeviceID' => 'Varchar(40)',
'Hash' => 'Varchar(160)',
'ExpiryDate' => 'SS_Datetime'
'ExpiryDate' => 'Datetime'
);
private static $has_one = array (
@ -122,7 +125,7 @@ class RememberLoginHash extends DataObject {
$rememberLoginHash->DeviceID = $deviceID;
$rememberLoginHash->Hash = $rememberLoginHash->getNewHash($member);
$rememberLoginHash->MemberID = $member->ID;
$now = SS_Datetime::now();
$now = DBDatetime::now();
$expiryDate = new DateTime($now->Rfc2822());
$tokenExpiryDays = Config::inst()->get('RememberLoginHash', 'token_expiry_days');
$expiryDate->add(new DateInterval('P'.$tokenExpiryDays.'D'));

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
/**
* Implements a basic security model
* @package framework

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Encrypt all passwords
*

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DB;
/**
* Migrates all 3.x file dataobjects to use the new DBFile field.
*

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Regenerate all cached images that have been created as the result of a manipulation method being called on a
* {@link Image} object

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
class XMLDataFormatterTest extends SapphireTest {
protected $arguments, $contents, $tagName;

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DB;
/**
* This bootstraps the SilverStripe system so that phpunit can be run directly on SilverStripe tests.
*/

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataExtension;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataModel;
class ControllerTest extends FunctionalTest {
protected static $fixture_file = 'ControllerTest.yml';

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataModel;
/**
* @package framework
* @subpackage tests
@ -566,7 +568,7 @@ class TestRequestFilter implements RequestFilter, TestOnly {
public $failPre = false;
public $failPost = false;
public function preRequest(\SS_HTTPRequest $request, \Session $session, \DataModel $model) {
public function preRequest(\SS_HTTPRequest $request, \Session $session, DataModel $model) {
++$this->preCalls;
if ($this->failPre) {
@ -574,7 +576,7 @@ class TestRequestFilter implements RequestFilter, TestOnly {
}
}
public function postRequest(\SS_HTTPRequest $request, \SS_HTTPResponse $response, \DataModel $model) {
public function postRequest(\SS_HTTPRequest $request, \SS_HTTPResponse $response, DataModel $model) {
++$this->postCalls;
if ($this->failPost) {

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBVarchar;
use SilverStripe\ORM\FieldType\DBVarchar;
class ArrayDataTest extends SapphireTest {
@ -10,7 +12,7 @@ class ArrayDataTest extends SapphireTest {
"A" => new DBVarchar("A"),
"B" => new stdClass(),
));
$this->assertEquals('SilverStripe\Model\FieldType\DBVarchar', get_class($arrayData->A));
$this->assertEquals('SilverStripe\\ORM\\FieldType\\DBVarchar', get_class($arrayData->A));
$this->assertEquals("ArrayData", get_class($arrayData->B));
}

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests
@ -91,7 +93,7 @@ class ClassInfoTest extends SapphireTest {
$expect = ArrayLib::valuekey(array(
'Object',
'ViewableData',
'DataObject',
'SilverStripe\\ORM\\DataObject',
'ClassInfoTest_BaseClass',
'ClassInfoTest_ChildClass',
));

View File

@ -383,18 +383,18 @@ class ObjectTest extends SapphireTest {
public function testParseClassSpec() {
// Simple case
$this->assertEquals(
array('Versioned',array('Stage', 'Live')),
Object::parse_class_spec("Versioned('Stage','Live')")
array('SilverStripe\\ORM\\Versioning\\Versioned',array('Stage', 'Live')),
Object::parse_class_spec("SilverStripe\\ORM\\Versioning\\Versioned('Stage','Live')")
);
// String with commas
$this->assertEquals(
array('Versioned',array('Stage,Live', 'Stage')),
Object::parse_class_spec("Versioned('Stage,Live','Stage')")
array('SilverStripe\\ORM\\Versioning\\Versioned',array('Stage,Live', 'Stage')),
Object::parse_class_spec("SilverStripe\\ORM\\Versioning\\Versioned('Stage,Live','Stage')")
);
// String with quotes
$this->assertEquals(
array('Versioned',array('Stage\'Stage,Live\'Live', 'Live')),
Object::parse_class_spec("Versioned('Stage\'Stage,Live\'Live','Live')")
array('SilverStripe\\ORM\\Versioning\\Versioned',array('Stage\'Stage,Live\'Live', 'Live')),
Object::parse_class_spec("SilverStripe\\ORM\\Versioning\\Versioned('Stage\'Stage,Live\'Live','Live')")
);
// True, false and null values

View File

@ -37,7 +37,7 @@ class NamespacedClassManifestTest extends SapphireTest {
'PermissionProvider', ' ', 'AS', ' ', 'P',
),
array('silverstripe', '\\', 'test', '\\', 'ClassA'),
array('\\', 'DataObject'),
array('\\', 'Object'),
);
$this->assertEquals(count($expectedItems), count($parsedTokens));
@ -61,7 +61,7 @@ class NamespacedClassManifestTest extends SapphireTest {
'Response' => 'SS_HTTPResponse',
'P' => 'PermissionProvider',
'silverstripe\test\ClassA',
'\DataObject',
'\Object',
);
$imports = $method->invoke($this->manifest, $tokens);

View File

@ -2,11 +2,11 @@
namespace SilverStripe\Framework\Tests;
//whitespace here is important for tests, please don't change it
use ModelAdmin;
use ModelAdmin;
use Controller as Cont ;
use SS_HTTPRequest as Request,SS_HTTPResponse AS Response, PermissionProvider AS P;
use silverstripe\test\ClassA;
use \DataObject;
use \Object;
class ClassI extends ModelAdmin implements P {
}

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,6 +1,9 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBField;
/**
* @package framework

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\Filesystem\Storage\AssetStore;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
/**
* Tests {@see AssetControlExtension}
@ -15,7 +18,7 @@ class AssetControlExtensionTest extends SapphireTest {
parent::setUp();
// Set backend and base url
\Versioned::set_stage(Versioned::DRAFT);
Versioned::set_stage(Versioned::DRAFT);
AssetStoreTest_SpyStore::activate('AssetControlExtensionTest');
$this->logInWithPermission('ADMIN');
@ -46,7 +49,7 @@ class AssetControlExtensionTest extends SapphireTest {
}
public function testFileDelete() {
\Versioned::set_stage(Versioned::DRAFT);
Versioned::set_stage(Versioned::DRAFT);
/** @var AssetControlExtensionTest_VersionedObject $object1 */
$object1 = AssetControlExtensionTest_VersionedObject::get()
@ -120,7 +123,7 @@ class AssetControlExtensionTest extends SapphireTest {
* Test files being replaced
*/
public function testReplaceFile() {
\Versioned::set_stage(Versioned::DRAFT);
Versioned::set_stage(Versioned::DRAFT);
/** @var AssetControlExtensionTest_VersionedObject $object1 */
$object1 = AssetControlExtensionTest_VersionedObject::get()
@ -208,7 +211,7 @@ class AssetControlExtensionTest extends SapphireTest {
*/
class AssetControlExtensionTest_VersionedObject extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned'
'SilverStripe\\ORM\\Versioning\\Versioned'
);
private static $db = array(

View File

@ -1,6 +1,8 @@
<?php
use Filesystem as SS_Filesystem;
use SilverStripe\ORM\DataExtension;
/**
* Ensures that File dataobjects can be safely migrated from 3.x

View File

@ -2,6 +2,10 @@
use Filesystem as SS_Filesystem;
use SilverStripe\Filesystem\Storage\AssetStore;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ValidationException;
/**
* Tests for the File class
@ -327,7 +331,7 @@ class FileTest extends SapphireTest {
/**
* @see http://open.silverstripe.org/ticket/5693
*
* @expectedException ValidationException
* @expectedException SilverStripe\ORM\ValidationException
*/
public function testSetNameWithInvalidExtensionDoesntChangeFilesystem() {
$orig = Config::inst()->get('File', 'allowed_extensions');

View File

@ -1,6 +1,9 @@
<?php
use Filesystem as SS_Filesystem;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
/**
* @author Ingo Schommer (ingo at silverstripe dot com)

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\Versioning\Versioned;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,9 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
/**
* @package framework
* @subpackage tests

View File

@ -60,7 +60,7 @@ class CurrencyFieldTest extends SapphireTest {
);
//tests with updated currency symbol setting
Config::inst()->update('SilverStripe\Model\FieldType\DBCurrency', 'currency_symbol', '€');
Config::inst()->update('SilverStripe\\ORM\\FieldType\\DBCurrency', 'currency_symbol', '€');
$f->setValue('123.45');
$this->assertTrue(
@ -164,7 +164,7 @@ class CurrencyFieldTest extends SapphireTest {
);
//update currency symbol via config
Config::inst()->update('SilverStripe\Model\FieldType\DBCurrency', 'currency_symbol', '€');
Config::inst()->update('SilverStripe\\ORM\\FieldType\\DBCurrency', 'currency_symbol', '€');
$f->setValue('123.45');
$this->assertEquals(
@ -235,7 +235,7 @@ class CurrencyFieldTest extends SapphireTest {
);
//tests with updated currency symbol setting
Config::inst()->update('SilverStripe\Model\FieldType\DBCurrency', 'currency_symbol', '€');
Config::inst()->update('SilverStripe\\ORM\\FieldType\\DBCurrency', 'currency_symbol', '€');
$f->setValue('€123.45');
$this->assertEquals(

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\Filesystem\Storage\AssetStore;
use SilverStripe\ORM\DataObject;
/**
* Description of DBFileTest
@ -60,7 +62,7 @@ class DBFileTest extends SapphireTest {
$obj->MyFile->setFromLocalFile($fish, 'awesome-fish.jpg');
// This should fail
$this->setExpectedException('ValidationException');
$this->setExpectedException('SilverStripe\\ORM\\ValidationException');
$obj->MyFile->setFromString('puppies', 'subdir/puppy-document.txt');
}

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests
@ -251,7 +253,7 @@ class DatetimeFieldTest extends SapphireTest {
class DatetimeFieldTest_Model extends DataObject implements TestOnly {
private static $db = array(
'MyDatetime' => 'SS_Datetime'
'MyDatetime' => 'Datetime'
);
}

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* @package framework
* @subpackage tests
@ -263,7 +265,7 @@ class DropdownFieldTest extends SapphireTest {
public function testDropdownWithArrayValues($value) {
$field = $this->createDropdownField();
$field->setValue($value);
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBHTMLText', $field->Field());
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBHTMLText', $field->Field());
$this->assertSame($value, $field->Value());
}

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBEnum;
use SilverStripe\ORM\FieldType\DBEnum;
/**
* @package framework

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataExtension;
/**
* Tests for DataObject FormField scaffolding
*
@ -120,7 +123,7 @@ class FormScaffolderTest_Article extends DataObject implements TestOnly {
);
private static $has_one = array(
'Author' => 'FormScaffolderTest_Author',
'Subject' => 'DataObject'
'Subject' => 'SilverStripe\\ORM\\DataObject'
);
private static $many_many = array(
'Tags' => 'FormScaffolderTest_Tag',

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataModel;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\SS_List;
use SilverStripe\ORM\DataObject;
class GridFieldTest extends SapphireTest {
/**
@ -72,8 +76,8 @@ class GridFieldTest extends SapphireTest {
public function testGridFieldModelClass() {
$obj = new GridField('testfield', 'testfield', Member::get());
$this->assertEquals('Member', $obj->getModelClass(), 'Should return Member');
$obj->setModelClass('DataModel');
$this->assertEquals('DataModel', $obj->getModelClass(), 'Should return Member');
$obj->setModelClass('SilverStripe\\ORM\\DataModel');
$this->assertEquals('SilverStripe\\ORM\\DataModel', $obj->getModelClass(), 'Should return Member');
}
/**

View File

@ -1,6 +1,8 @@
<?php
use Filesystem as SS_Filesystem;
use SilverStripe\ORM\DataObject;
/**
* @package framework

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,6 +1,9 @@
<?php
use SilverStripe\Model\FieldType\DBMoney;
use SilverStripe\ORM\FieldType\DBMoney;
use SilverStripe\ORM\DataObject;
/**
* @package framework

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
class GridFieldAddExistingAutocompleterTest extends FunctionalTest {
protected static $fixture_file = 'GridFieldTest.yml';

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* @package framework
* @subpackage tests
@ -8,7 +10,7 @@ class GridFieldConfigTest extends SapphireTest {
public function testGetComponents() {
$config = GridFieldConfig::create();
$this->assertInstanceOf('ArrayList', $config->getComponents());
$this->assertInstanceOf('SilverStripe\\ORM\\ArrayList', $config->getComponents());
$this->assertEquals($config->getComponents()->Count(), 0);
$config

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject;
class GridFieldDeleteActionTest extends SapphireTest {
/** @var ArrayList */
@ -67,7 +70,7 @@ class GridFieldDeleteActionTest extends SapphireTest {
public function testDeleteActionWithoutCorrectPermission() {
if(Member::currentUser()) { Member::currentUser()->logOut(); }
$this->setExpectedException('ValidationException');
$this->setExpectedException('SilverStripe\\ORM\\ValidationException');
$stateID = 'testGridStateActionField';
Session::set(

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject;
class GridFieldEditButtonTest extends SapphireTest {
/** @var ArrayList */

View File

@ -1,5 +1,9 @@
<?php
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataList;
class GridFieldPaginatorTest extends FunctionalTest {
/** @var ArrayList */
protected $list;

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
class GridFieldPrintButtonTest extends SapphireTest {

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\ArrayList;
/**
* Test the API for creating GridField_URLHandler compeonnts
*/

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,10 @@
<?php
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataExtension;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataExtension;
class i18nTestModuleExtension extends DataExtension {
public static $db = array(

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
class i18nTestModule extends DataObject implements TestOnly {
static $db = array(

View File

@ -0,0 +1,14 @@
<?php
namespace i18nTest;
/**
* Created by PhpStorm.
* User: dmooyman
* Date: 17/06/16
* Time: 12:49 PM
*/
class i18nTestNamespacedClass
{
}

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
require_once 'Zend/Translate.php';
/**

View File

@ -24,6 +24,7 @@ class i18nTextCollectorTest extends SapphireTest {
parent::setUp();
$this->alternateBasePath = $this->getCurrentAbsolutePath() . "/_fakewebroot";
Config::inst()->update('Director', 'alternate_base_folder', $this->alternateBasePath);
$this->alternateBaseSavePath = TEMP_FOLDER . '/i18nTextCollectorTest_webroot';
Filesystem::makeFolder($this->alternateBaseSavePath);
@ -40,6 +41,10 @@ class i18nTextCollectorTest extends SapphireTest {
public function tearDown() {
SS_TemplateLoader::instance()->popManifest();
// Pop if added during testing
if(SS_ClassLoader::instance()->getManifest() === $this->manifest) {
SS_ClassLoader::instance()->popManifest();
}
parent::tearDown();
}
@ -520,6 +525,8 @@ YAML;
$local = i18n::get_locale();
i18n::set_locale('en_US');
i18n::set_default_locale('en_US');
i18n::include_by_locale('en');
i18n::include_by_locale('en_US');
$c = new i18nTextCollector();
$c->setWriter(new i18nTextCollector_Writer_Php());
@ -688,28 +695,28 @@ YAML;
* Test that duplicate keys are resolved to the appropriate modules
*/
public function testResolveDuplicates() {
SS_ClassLoader::instance()->pushManifest($this->manifest);
$collector = new i18nTextCollectorTest_Collector();
// Dummy data as collected
$data1 = array(
'framework' => array(
'DataObject.PLURALNAME' => array('Data Objects'),
'DataObject.SINGULARNAME' => array('Data Object')
'i18ntestmodule' => array(
'i18nTestModule.PLURALNAME' => array('Data Objects'),
'i18nTestModule.SINGULARNAME' => array('Data Object')
),
'mymodule' => array(
'DataObject.PLURALNAME' => array('Ignored String'),
'DataObject.STREETNAME' => array('Shortland Street')
'i18nTestModule.PLURALNAME' => array('Ignored String'),
'i18nTestModule.STREETNAME' => array('Shortland Street')
)
);
$expected = array(
'framework' => array(
'DataObject.PLURALNAME' => array('Data Objects'),
// Because DataObject is in framework module
'DataObject.SINGULARNAME' => array('Data Object')
'i18ntestmodule' => array(
'i18nTestModule.PLURALNAME' => array('Data Objects'),
'i18nTestModule.SINGULARNAME' => array('Data Object')
),
'mymodule' => array(
// Because this key doesn't exist in framework strings
'DataObject.STREETNAME' => array('Shortland Street')
// Because this key doesn't exist in i18ntestmodule strings
'i18nTestModule.STREETNAME' => array('Shortland Street')
)
);
@ -719,22 +726,22 @@ YAML;
// Test getConflicts
$data2 = array(
'module1' => array(
'DataObject.ONE' => array('One'),
'DataObject.TWO' => array('Two'),
'DataObject.THREE' => array('Three'),
'i18ntestmodule.ONE' => array('One'),
'i18ntestmodule.TWO' => array('Two'),
'i18ntestmodule.THREE' => array('Three'),
),
'module2' => array(
'DataObject.THREE' => array('Three'),
'i18ntestmodule.THREE' => array('Three'),
),
'module3' => array(
'DataObject.TWO' => array('Two'),
'DataObject.THREE' => array('Three'),
'i18ntestmodule.TWO' => array('Two'),
'i18ntestmodule.THREE' => array('Three'),
)
);
$conflictsA = $collector->getConflicts_Test($data2);
sort($conflictsA);
$this->assertEquals(
array('DataObject.THREE', 'DataObject.TWO'),
array('i18ntestmodule.THREE', 'i18ntestmodule.TWO'),
$conflictsA
);
@ -742,7 +749,7 @@ YAML;
unset($data2['module3']);
$conflictsB = $collector->getConflicts_Test($data2);
$this->assertEquals(
array('DataObject.THREE'),
array('i18ntestmodule.THREE'),
$conflictsB
);
}
@ -751,6 +758,7 @@ YAML;
* Test ability for textcollector to detect modules
*/
public function testModuleDetection() {
SS_ClassLoader::instance()->pushManifest($this->manifest);
$collector = new i18nTextCollectorTest_Collector();
$modules = $collector->getModules_Test($this->alternateBasePath);
$this->assertEquals(
@ -763,6 +771,13 @@ YAML;
),
$modules
);
$this->assertEquals('i18ntestmodule', $collector->findModuleForClass_Test('i18nTestNamespacedClass'));
$this->assertEquals(
'i18ntestmodule',
$collector->findModuleForClass_Test('i18nTest\\i18nTestNamespacedClass')
);
$this->assertEquals('i18ntestmodule', $collector->findModuleForClass_Test('i18nTestSubModule'));
}
/**
@ -784,11 +799,12 @@ YAML;
// Normal module should have predictable dir structure
$testFiles = $collector->getFileListForModule_Test('i18ntestmodule');
$testRoot = $this->alternateBasePath . '/i18ntestmodule';
$this->assertEquals(6, count($testFiles));
$this->assertEquals(7, count($testFiles));
// Code in code folder is detected
$this->assertArrayHasKey("{$testRoot}/code/i18nTestModule.php", $testFiles);
$this->assertArrayHasKey("{$testRoot}/code/subfolder/_config.php", $testFiles);
$this->assertArrayHasKey("{$testRoot}/code/subfolder/i18nTestSubModule.php", $testFiles);
$this->assertArrayHasKey("{$testRoot}/code/subfolder/i18nTestNamespacedClass.php", $testFiles);
// Templates in templates folder is detected
$this->assertArrayHasKey("{$testRoot}/templates/Includes/i18nTestModuleInclude.ss", $testFiles);
$this->assertArrayHasKey("{$testRoot}/templates/Layout/i18nTestModule.ss", $testFiles);
@ -836,11 +852,15 @@ class i18nTextCollectorTest_Collector extends i18nTextCollector implements TestO
}
public function getFileListForModule_Test($module) {
return parent::getFileListForModule($module);
return $this->getFileListForModule($module);
}
public function getConflicts_Test($entitiesByModule) {
return parent::getConflicts($entitiesByModule);
return $this->getConflicts($entitiesByModule);
}
public function findModuleForClass_Test($class) {
return $this->findModuleForClass($class);
}
}

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\SS_Filterable;
/**
* @package framework
* @subpackage tests
@ -217,7 +221,7 @@ class ArrayListTest extends SapphireTest {
$map = $list->map('ID', 'Name');
// Items added after calling map should not be included retroactively
$list->add(array('ID' => 7, 'Name' => 'Andrew'));
$this->assertInstanceOf('SS_Map', $map);
$this->assertInstanceOf('SilverStripe\\ORM\\SS_Map', $map);
$this->assertEquals(array(
1 => 'Steve',
3 => 'Bob',

View File

@ -1,12 +1,15 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Versioning\ChangeSetItem;
class ChangeSetItemTest_Versioned extends DataObject {
private static $db = [
'Foo' => 'Int'
];
private static $extensions = [
"Versioned"
"SilverStripe\\ORM\\Versioning\\Versioned"
];
function canEdit($member = null) { return true; }

View File

@ -1,5 +1,10 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Versioning\ChangeSet;
use SilverStripe\ORM\Versioning\ChangeSetItem;
use SilverStripe\ORM\Versioning\Versioned;
/**
* Provides a set of targettable permissions for tested models
*
@ -55,7 +60,7 @@ class ChangeSetTest_Base extends DataObject implements TestOnly {
];
private static $extensions = [
"Versioned",
"SilverStripe\\ORM\\Versioning\\Versioned",
];
}
@ -79,7 +84,7 @@ class ChangeSetTest_Mid extends DataObject implements TestOnly {
];
private static $extensions = [
"Versioned",
"SilverStripe\\ORM\\Versioning\\Versioned",
];
}
@ -94,7 +99,7 @@ class ChangeSetTest_End extends DataObject implements TestOnly {
];
private static $extensions = [
"Versioned",
"SilverStripe\\ORM\\Versioning\\Versioned",
];
}

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,6 +1,9 @@
<?php
use SilverStripe\Model\FieldType\DBClassName;
use SilverStripe\ORM\FieldType\DBClassName;
use SilverStripe\ORM\DataObject;
class DBClassNameTest extends SapphireTest {
@ -63,9 +66,9 @@ class DBClassNameTest extends SapphireTest {
*/
public function testBaseClassDetection() {
// Explicit DataObject
$field1 = new DBClassName('MyClass', 'DataObject');
$this->assertEquals('DataObject', $field1->getBaseClass());
$this->assertNotEquals('DataObject', $field1->getDefault());
$field1 = new DBClassName('MyClass', 'SilverStripe\\ORM\\DataObject');
$this->assertEquals('SilverStripe\\ORM\\DataObject', $field1->getBaseClass());
$this->assertNotEquals('SilverStripe\\ORM\\DataObject', $field1->getDefault());
// Explicit base class
$field2 = new DBClassName('MyClass', 'DBClassNameTest_Object');
@ -86,14 +89,14 @@ class DBClassNameTest extends SapphireTest {
// Missing
$field5 = new DBClassName('MyClass');
$this->assertEquals('DataObject', $field5->getBaseClass());
$this->assertNotEquals('DataObject', $field5->getDefault());
$this->assertEquals('SilverStripe\\ORM\\DataObject', $field5->getBaseClass());
$this->assertNotEquals('SilverStripe\\ORM\\DataObject', $field5->getDefault());
// Invalid class
$field6 = new DBClassName('MyClass');
$field6->setTable('InvalidTable');
$this->assertEquals('DataObject', $field6->getBaseClass());
$this->assertNotEquals('DataObject', $field6->getDefault());
$this->assertEquals('SilverStripe\\ORM\\DataObject', $field6->getBaseClass());
$this->assertNotEquals('SilverStripe\\ORM\\DataObject', $field6->getDefault());
// Custom default_classname
$field7 = new DBClassName('MyClass');
@ -106,12 +109,12 @@ class DBClassNameTest extends SapphireTest {
class DBClassNameTest_Object extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned'
'SilverStripe\\ORM\\Versioning\\Versioned'
);
private static $db = array(
'DefaultClass' => 'DBClassName',
'AnyClass' => 'DBClassName("DataObject")',
'AnyClass' => "DBClassName('SilverStripe\\ORM\\DataObject')",
'ChildClass' => 'DBClassName("DBClassNameTest_ObjectSubClass")',
'LeafClass' => 'DBClassName("DBClassNameTest_ObjectSubSubClass")'
);

View File

@ -1,7 +1,10 @@
<?php
use SilverStripe\Model\FieldType\DBMoney;
use SilverStripe\ORM\FieldType\DBMoney;
use SilverStripe\ORM\DataObject;
/**
* @package framework

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBCurrency;
use SilverStripe\ORM\FieldType\DBCurrency;
/**
* @package framework

View File

@ -1,7 +1,11 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Model\FieldType\DBDatetime;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\DataObject;
/**
* @package framework
@ -65,7 +69,7 @@ class DBDateTest extends SapphireTest {
);
$date = DBField::create_field('Date', '2003-03-04');
Config::inst()->update('SilverStripe\Model\FieldType\DBDate', 'nice_format', 'd F Y');
Config::inst()->update('SilverStripe\\ORM\\FieldType\\DBDate', 'nice_format', 'd F Y');
$this->assertEquals('04 March 2003', $date->Nice());
}

View File

@ -1,8 +1,13 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Model\FieldType\DBVarchar;
use SilverStripe\Model\FieldType\DBText;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\FieldType\DBVarchar;
use SilverStripe\ORM\FieldType\DBText;
use SilverStripe\ORM\FieldType\DBField;
/**
*

View File

@ -1,7 +1,10 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Model\FieldType\DBHTMLText;
use SilverStripe\ORM\FieldType\DBHTMLText;
use SilverStripe\ORM\FieldType\DBField;
/**
* @package framework

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBField;
/**
* @package framework

View File

@ -1,6 +1,10 @@
<?php
use SilverStripe\Model\FieldType\DBMoney;
use SilverStripe\ORM\FieldType\DBMoney;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
/**
* Partially based on Zend_CurrencyTest.
@ -25,14 +29,14 @@ class DBMoneyTest extends SapphireTest {
public function testMoneyFieldsReturnedAsObjects() {
$obj = $this->objFromFixture('MoneyTest_DataObject', 'test1');
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBMoney', $obj->MyMoney);
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBMoney', $obj->MyMoney);
}
public function testLoadFromFixture() {
$obj = $this->objFromFixture('MoneyTest_DataObject', 'test1');
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBMoney', $obj->MyMoney);
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBMoney', $obj->MyMoney);
$this->assertEquals($obj->MyMoney->getCurrency(), 'EUR');
$this->assertEquals($obj->MyMoney->getAmount(), 1.23);
}
@ -46,7 +50,7 @@ class DBMoneyTest extends SapphireTest {
$this->assertNotContains('MyMoney', array_keys($changed));
// With changes
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBMoney', $obj->MyMoney);
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBMoney', $obj->MyMoney);
$obj->MyMoney->setAmount(99);
$changed = $obj->getChangedFields();
$this->assertContains('MyMoney', array_keys($changed), 'Field is detected as changed');
@ -263,7 +267,7 @@ class DBMoneyTest extends SapphireTest {
public function testLoadIntoDataObject() {
$obj = new MoneyTest_DataObject();
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBMoney', $obj->obj('MyMoney'));
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBMoney', $obj->obj('MyMoney'));
$m = new DBMoney();
$m->setValue(array(

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBPercentage;
use SilverStripe\ORM\FieldType\DBPercentage;
/**
* @package framework

View File

@ -1,7 +1,10 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Model\FieldType\DBString;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBString;
/**
* @package framework

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DB;
/**
* @package framework
* @subpackage tests

View File

@ -1,7 +1,10 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Model\FieldType\DBText;
use SilverStripe\ORM\FieldType\DBText;
use SilverStripe\ORM\FieldType\DBField;
/**
* @package framework

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBYear;
use SilverStripe\ORM\FieldType\DBYear;
/**
* @package framework

View File

@ -1,6 +1,10 @@
<?php
use Filesystem as SS_Filesystem;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\Versioning\DataDifferencer;
use SilverStripe\ORM\DataObject;
/**
* @package framework
@ -94,7 +98,7 @@ class DataDifferencerTest extends SapphireTest {
class DataDifferencerTest_Object extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned'
'SilverStripe\\ORM\\Versioning\\Versioned'
);
private static $db = array(

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataExtension;
class DataExtensionTest extends SapphireTest {
protected static $fixture_file = 'DataExtensionTest.yml';
@ -14,7 +17,7 @@ class DataExtensionTest extends SapphireTest {
);
protected $requiredExtensions = array(
'DataObject' => array( 'DataExtensionTest_AppliedToDO' ),
'\SilverStripe\ORM\DataObject' => array( 'DataExtensionTest_AppliedToDO' ),
);
public function testOneToManyAssociationWithExtension() {
@ -152,7 +155,7 @@ class DataExtensionTest extends SapphireTest {
public function testDbObjectOnExtendedFields() {
$member = $this->objFromFixture('DataExtensionTest_Member', 'member1');
$this->assertNotNull($member->dbObject('Website'));
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBVarchar', $member->dbObject('Website'));
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBVarchar', $member->dbObject('Website'));
}
public function testExtensionCanBeAppliedToDataObject() {

View File

@ -1,5 +1,9 @@
<?php
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\SS_Filterable;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
class DataObjectDuplicationTest extends SapphireTest {
protected $usesDatabase = true;

View File

@ -1,4 +1,9 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Versioning\Versioned;
/**
* @package framework
* @subpackage tests
@ -434,7 +439,7 @@ class VersionedLazy_DataObject extends DataObject implements TestOnly {
"PageName" => "Varchar"
);
private static $extensions = array(
"Versioned('Stage', 'Live')"
"SilverStripe\\ORM\\Versioning\\Versioned('Stage', 'Live')"
);
}
@ -443,6 +448,6 @@ class VersionedLazySub_DataObject extends VersionedLazy_DataObject {
"ExtraField" => "Varchar",
);
private static $extensions = array(
"Versioned('Stage', 'Live')"
"SilverStripe\\ORM\\Versioning\\Versioned('Stage', 'Live')"
);
}

View File

@ -1,6 +1,11 @@
<?php
use SilverStripe\Model\FieldType\DBClassName;
use SilverStripe\ORM\Connect\MySQLSchemaManager;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\FieldType\DBClassName;
use SilverStripe\ORM\DataObject;
class DataObjectSchemaGenerationTest extends SapphireTest {
protected $extraDataObjects = array(
@ -134,6 +139,7 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
DBClassName::clear_classname_cache();
$do1 = new DataObjectSchemaGenerationTest_DO();
$fields = DataObject::database_fields('DataObjectSchemaGenerationTest_DO');
/** @skipUpgrade */
$this->assertEquals("DBClassName", $fields['ClassName']);
$this->assertEquals(
array(
@ -149,6 +155,7 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
$item1->write();
DBClassName::clear_classname_cache();
$fields = DataObject::database_fields('DataObjectSchemaGenerationTest_DO');
/** @skipUpgrade */
$this->assertEquals("DBClassName", $fields['ClassName']);
$this->assertEquals(
array(
@ -164,6 +171,7 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
$item2->write();
DBClassName::clear_classname_cache();
$fields = DataObject::database_fields('DataObjectSchemaGenerationTest_DO');
/** @skipUpgrade */
$this->assertEquals("DBClassName", $fields['ClassName']);
$this->assertEquals(
array(
@ -181,6 +189,7 @@ class DataObjectSchemaGenerationTest extends SapphireTest {
$item2->write();
DBClassName::clear_classname_cache();
$fields = DataObject::database_fields('DataObjectSchemaGenerationTest_DO');
/** @skipUpgrade */
$this->assertEquals("DBClassName", $fields['ClassName']);
$this->assertEquals(
array(
@ -201,7 +210,7 @@ class DataObjectSchemaGenerationTest_DO extends DataObject implements TestOnly {
'NumberField' => 'Decimal',
'FloatingField' => 'Decimal(10,3,1.1)',
'TextValue' => 'Varchar',
'Date' => 'SS_Datetime',
'Date' => 'Datetime',
'MyNumber' => 'Int'
);
}

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* Tests schema inspection of DataObjects
*/
@ -304,7 +306,7 @@ class DataObjectSchemaTest extends SapphireTest
$this->assertEquals('DataObjectSchemaTest_BaseClass', $schema->baseDataClass('DataObjectSchemaTest_GRANDChildClass'));
$this->setExpectedException('InvalidArgumentException');
$schema->baseDataClass('DataObject');
$schema->baseDataClass('SilverStripe\\ORM\\DataObject');
}
}

View File

@ -4,11 +4,13 @@
* Namespaced dataobjcets used by DataObjectSchemaTest
*/
namespace Namespaced\DOST;
use SilverStripe\ORM\DataObject;
/**
* Basic namespaced object
*/
class MyObject extends \DataObject implements \TestOnly {
class MyObject extends DataObject implements \TestOnly {
private static $db = [
'Title' => 'Varchar',
'Description' => 'Text',
@ -18,7 +20,7 @@ class MyObject extends \DataObject implements \TestOnly {
/**
* Namespaced object with custom table
*/
class MyObject_CustomTable extends \DataObject implements \TestOnly {
class MyObject_CustomTable extends DataObject implements \TestOnly {
private static $table_name = 'CustomNamespacedTable';
private static $db = [
'Title' => 'Varchar',
@ -42,7 +44,7 @@ class MyObject_NestedObject extends MyObject implements \TestOnly {
/**
* Namespaced object with custom table that itself is namespaced
*/
class MyObject_NamespacedTable extends \DataObject implements \TestOnly {
class MyObject_NamespacedTable extends DataObject implements \TestOnly {
private static $table_name = 'Custom\NamespacedTable';
private static $db = [
'Title' => 'Varchar',
@ -71,7 +73,7 @@ class MyObject_Namespaced_Subclass extends MyObject_NamespacedTable implements \
* Namespaced class without any fields
* has a has_many to another namespaced table
*/
class MyObject_NoFields extends \DataObject implements \TestOnly {
class MyObject_NoFields extends DataObject implements \TestOnly {
private static $has_many = [
'Owns' => 'Namespaced\DOST\MyObject_NamespacedTable',
];

View File

@ -1,6 +1,13 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Connect\MySQLDatabase;
use SilverStripe\ORM\DataExtension;
use SilverStripe\ORM\ValidationResult;
/**
* @package framework
@ -314,7 +321,7 @@ class DataObjectTest extends SapphireTest {
'belongs_many_many is properly inspected');
$this->assertEquals(singleton('DataObjectTest_CEO')->getRelationClass('Company'), 'DataObjectTest_Company',
'belongs_to is properly inspected');
$this->assertEquals(singleton('DataObjectTest_Fan')->getRelationClass('Favourite'), 'DataObject',
$this->assertEquals(singleton('DataObjectTest_Fan')->getRelationClass('Favourite'), 'SilverStripe\\ORM\\DataObject',
'polymorphic has_one is properly inspected');
}
@ -355,7 +362,7 @@ class DataObjectTest extends SapphireTest {
// check behaviour of dbObject with polymorphic relations
$favouriteDBObject = $fan1->dbObject('Favourite');
$favouriteValue = $favouriteDBObject->getValue();
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBPolymorphicForeignKey', $favouriteDBObject);
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBPolymorphicForeignKey', $favouriteDBObject);
$this->assertEquals($favourite->ID, $favouriteValue->ID);
$this->assertEquals($favourite->ClassName, $favouriteValue->ClassName);
}
@ -1048,7 +1055,7 @@ class DataObjectTest extends SapphireTest {
public function testWritingInvalidDataObjectThrowsException() {
$validatedObject = new DataObjectTest_ValidatedObject();
$this->setExpectedException('ValidationException');
$this->setExpectedException('SilverStripe\\ORM\\ValidationException');
$validatedObject->write();
}
@ -1102,7 +1109,7 @@ class DataObjectTest extends SapphireTest {
$this->assertFalse(DataObject::has_own_table("DataObjectTest_FieldlessSubTable"));
/* Return false if you don't pass it a subclass of DataObject */
$this->assertFalse(DataObject::has_own_table("DataObject"));
$this->assertFalse(DataObject::has_own_table("SilverStripe\\ORM\\DataObject"));
$this->assertFalse(DataObject::has_own_table("ViewableData"));
$this->assertFalse(DataObject::has_own_table("ThisIsntADataObject"));
}
@ -1286,7 +1293,7 @@ class DataObjectTest extends SapphireTest {
// Check everything works when no relation is present
$teamWithoutSponsor = $this->objFromFixture('DataObjectTest_Team', 'team3');
$this->assertInstanceOf('ManyManyList', $teamWithoutSponsor->Sponsors());
$this->assertInstanceOf('SilverStripe\\ORM\\ManyManyList', $teamWithoutSponsor->Sponsors());
$this->assertEquals(0, $teamWithoutSponsor->Sponsors()->count());
// Test that belongs_many_many can be infered from with getNonReciprocalComponent
@ -1414,7 +1421,8 @@ class DataObjectTest extends SapphireTest {
$assertions = array(
'DataObjectTest_Player' => 'Data Object Test Player',
'DataObjectTest_Team' => 'Data Object Test Team',
'DataObjectTest_Fixture' => 'Data Object Test Fixture'
'DataObjectTest_Fixture' => 'Data Object Test Fixture',
'DataObjectTest\NamespacedClass' => 'Namespaced Class',
);
foreach($assertions as $class => $expectedSingularName) {
@ -1752,16 +1760,16 @@ class DataObjectTest extends SapphireTest {
$captain = $this->objFromFixture('DataObjectTest_Player', 'captain1');
// Test traversal of a single has_one
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBVarchar', $captain->relObject('FavouriteTeam.Title'));
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBVarchar', $captain->relObject('FavouriteTeam.Title'));
$this->assertEquals("Team 1", $captain->relObject('FavouriteTeam.Title')->getValue());
// Test direct field access
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBBoolean', $captain->relObject('IsRetired'));
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBBoolean', $captain->relObject('IsRetired'));
$this->assertEquals(1, $captain->relObject('IsRetired')->getValue());
$player = $this->objFromFixture('DataObjectTest_Player', 'player2');
// Test that we can traverse more than once, and that arbitrary methods are okay
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBVarchar', $player->relObject('Teams.First.Title'));
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBVarchar', $player->relObject('Teams.First.Title'));
$this->assertEquals("Team 1", $player->relObject('Teams.First.Title')->getValue());
}
@ -1878,7 +1886,7 @@ class DataObjectTest_Fixture extends DataObject implements TestOnly {
// Field types
'DateField' => 'Date',
'DatetimeField' => 'SS_Datetime',
'DatetimeField' => 'Datetime',
'MyFieldWithDefault' => 'Varchar',
'MyFieldWithAltDefault' => 'Varchar'
@ -1976,7 +1984,7 @@ class DataObjectTest_Company extends DataObject implements TestOnly {
private static $has_one = array (
'CEO' => 'DataObjectTest_CEO',
'PreviousCEO' => 'DataObjectTest_CEO',
'Owner' => 'DataObject' // polymorphic
'Owner' => 'SilverStripe\\ORM\\DataObject' // polymorphic
);
private static $has_many = array (
@ -2040,8 +2048,8 @@ class DataObjectTest_Fan extends DataObject implements TestOnly {
);
private static $has_one = array(
'Favourite' => 'DataObject', // Polymorphic relation
'SecondFavourite' => 'DataObject'
'Favourite' => 'SilverStripe\\ORM\\DataObject', // Polymorphic relation
'SecondFavourite' => 'SilverStripe\\ORM\\DataObject'
);
}

View File

@ -1,12 +1,14 @@
<?php
namespace DataObjectTest;
use SilverStripe\ORM\DataObject;
/**
* Right now this is only used in DataListTest, but extending it to DataObjectTest in the future would make sense.
* Note that it was deliberated named to include "\N" to try and trip bad code up.
*/
class NamespacedClass extends \DataObject implements \TestOnly {
class NamespacedClass extends DataObject implements \TestOnly {
private static $db = array(
'Name' => 'Varchar',
);
@ -16,13 +18,13 @@ class NamespacedClass extends \DataObject implements \TestOnly {
);
}
class RelationClass extends \DataObject implements \TestOnly {
class RelationClass extends DataObject implements \TestOnly {
private static $db = array(
'Title' => 'Varchar'
);
private static $has_one = array(
'Parent' => 'DataObject'
'Parent' => 'SilverStripe\\ORM\\DataObject'
);
}

View File

@ -1,5 +1,9 @@
<?php
use SilverStripe\ORM\DataQuery;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
class DataQueryTest extends SapphireTest {
protected static $fixture_file = 'DataQueryTest.yml';
@ -389,7 +393,7 @@ class DataQueryTest_F extends DataObject implements TestOnly {
private static $db = array(
'SortOrder' => 'Int',
'MyDate' => 'SS_Datetime',
'MyDate' => 'Datetime',
'MyString' => 'Text'
);
}

View File

@ -1,4 +1,9 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Connect\MySQLDatabase;
use SilverStripe\ORM\Connect\MySQLSchemaManager;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage Testing

View File

@ -1,7 +1,11 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\Model\FieldType\DBDatetime;
use SilverStripe\ORM\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\DataObject;
/**
* Tests for {@link Datetime} class.

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\GroupedList;
/**
* Tests for the {@link GroupedList} list decorator.
*

View File

@ -1,12 +1,16 @@
<?php
use SilverStripe\ORM\ValidationException;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
class HierarchyTest extends SapphireTest {
protected static $fixture_file = 'HierarchyTest.yml';
protected $requiredExtensions = array(
'HierarchyTest_Object' => array('Hierarchy', 'Versioned'),
'HierarchyHideTest_Object' => array('Hierarchy', 'Versioned'),
'HierarchyTest_Object' => array('SilverStripe\\ORM\\Hierarchy\\Hierarchy', 'SilverStripe\\ORM\\Versioning\\Versioned'),
'HierarchyHideTest_Object' => array('SilverStripe\\ORM\\Hierarchy\\Hierarchy', 'SilverStripe\\ORM\\Versioning\\Versioned'),
);
protected $extraDataObjects = array(
@ -566,8 +570,8 @@ class HierarchyTest_Object extends DataObject implements TestOnly {
);
private static $extensions = array(
'Hierarchy',
'Versioned',
'SilverStripe\\ORM\\Hierarchy\\Hierarchy',
'SilverStripe\\ORM\\Versioning\\Versioned',
);
public function cmstreeclasses() {
@ -581,8 +585,8 @@ class HierarchyHideTest_Object extends DataObject implements TestOnly {
);
private static $extensions = array(
'Hierarchy',
"Versioned('Stage', 'Live')",
'SilverStripe\\ORM\\Hierarchy\\Hierarchy',
"SilverStripe\\ORM\\Versioning\\Versioned('Stage', 'Live')",
);
public function cmstreeclasses() {

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataExtension;
/**
* @package framework
* @subpackage tests

View File

@ -1,6 +1,11 @@
<?php
use SilverStripe\Model\FieldType\DBMoney;
use SilverStripe\ORM\FieldType\DBMoney;
use SilverStripe\ORM\ManyManyList;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* @package framework
@ -32,7 +37,7 @@ class ManyManyListTest extends SapphireTest {
$check = $obj->Clients()->First();
$this->assertEquals('Foo', $check->Reference, 'Basic scalar fields should exist');
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBMoney', $check->Worth, 'Composite fields should exist on the record');
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBMoney', $check->Worth, 'Composite fields should exist on the record');
$this->assertEquals(100, $check->Worth->getAmount());
}

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\SS_Map;
use SilverStripe\ORM\ArrayList;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,9 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Connect\MySQLiConnector;
use SilverStripe\ORM\Queries\SQLUpdate;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage testing
@ -27,12 +32,12 @@ class MySQLDatabaseTest extends SapphireTest {
'SELECT "Sort", "Title" FROM "MySQLDatabaseTest_Data" WHERE "Sort" > ? ORDER BY "Sort"',
array(2)
);
$this->assertInstanceOf('MySQLStatement', $result1);
$this->assertInstanceOf('MySQLStatement', $result2);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\MySQLStatement', $result1);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\MySQLStatement', $result2);
// Also select non-prepared statement
$result3 = DB::get_connector()->query('SELECT "Sort", "Title" FROM "MySQLDatabaseTest_Data" ORDER BY "Sort"');
$this->assertInstanceOf('MySQLQuery', $result3);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\MySQLQuery', $result3);
// Iterating one level should not buffer, but return the right result
$this->assertEquals(
@ -101,13 +106,13 @@ class MySQLDatabaseTest extends SapphireTest {
// Test update which affects no rows
$query->setWhere(array('Title' => 'Bob'));
$result = $query->execute();
$this->assertInstanceOf('MySQLQuery', $result);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\MySQLQuery', $result);
$this->assertEquals(0, DB::affected_rows());
// Test update which affects some rows
$query->setWhere(array('Title' => 'First Item'));
$result = $query->execute();
$this->assertInstanceOf('MySQLQuery', $result);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\MySQLQuery', $result);
$this->assertEquals(1, DB::affected_rows());
}
}

View File

@ -1,4 +1,8 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Connect\PDOConnector;
use SilverStripe\ORM\Queries\SQLUpdate;
/**
* @package framework
* @subpackage testing
@ -27,12 +31,12 @@ class PDODatabaseTest extends SapphireTest {
'SELECT "Sort", "Title" FROM "MySQLDatabaseTest_Data" WHERE "Sort" > ? ORDER BY "Sort"',
array(2)
);
$this->assertInstanceOf('PDOQuery', $result1);
$this->assertInstanceOf('PDOQuery', $result2);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\PDOQuery', $result1);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\PDOQuery', $result2);
// Also select non-prepared statement
$result3 = DB::get_connector()->query('SELECT "Sort", "Title" FROM "MySQLDatabaseTest_Data" ORDER BY "Sort"');
$this->assertInstanceOf('PDOQuery', $result3);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\PDOQuery', $result3);
// Iterating one level should not buffer, but return the right result
$this->assertEquals(
@ -101,13 +105,13 @@ class PDODatabaseTest extends SapphireTest {
// Test update which affects no rows
$query->setWhere(array('Title' => 'Bob'));
$result = $query->execute();
$this->assertInstanceOf('PDOQuery', $result);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\PDOQuery', $result);
$this->assertEquals(0, DB::affected_rows());
// Test update which affects some rows
$query->setWhere(array('Title' => 'First Item'));
$result = $query->execute();
$this->assertInstanceOf('PDOQuery', $result);
$this->assertInstanceOf('SilverStripe\\ORM\\Connect\\PDOQuery', $result);
$this->assertEquals(1, DB::affected_rows());
}
}

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
/**
* Tests for the {@link PaginatedList} class.
*
@ -62,7 +65,7 @@ class PaginatedListTest extends SapphireTest {
}
public function testSetPaginationFromQuery() {
$query = $this->getMock('SQLSelect');
$query = $this->getMock('SilverStripe\\ORM\\Queries\\SQLSelect');
$query->expects($this->once())
->method('getLimit')
->will($this->returnValue(array('limit' => 15, 'start' => 30)));

View File

@ -1,5 +1,9 @@
<?php
use SilverStripe\ORM\Queries\SQLInsert;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* Tests for {@see SQLInsert}
@ -27,7 +31,7 @@ class SQLInsertTest extends SapphireTest {
->assign('"Description"', 'No description');
$sql = $query->sql($parameters);
// Only test this case if using the default query builder
if(get_class(DB::get_conn()->getQueryBuilder()) === 'DBQueryBuilder') {
if(get_class(DB::get_conn()->getQueryBuilder()) === 'SilverStripe\\ORM\\Connect\\DBQueryBuilder') {
$this->assertSQLEquals(
'INSERT INTO "SQLInsertTestBase" ("Title", "HasFun", "Age", "Description") VALUES (?, ?, ?, ?)',
$sql
@ -59,7 +63,7 @@ class SQLInsertTest extends SapphireTest {
));
$sql = $query->sql($parameters);
// Only test this case if using the default query builder
if(get_class(DB::get_conn()->getQueryBuilder()) === 'DBQueryBuilder') {
if(get_class(DB::get_conn()->getQueryBuilder()) === 'SilverStripe\\ORM\\Connect\\DBQueryBuilder') {
$this->assertSQLEquals(
'INSERT INTO "SQLInsertTestBase" ("Title", "Age", "Description") VALUES (?, ?, ?), (?, ?, ?)',
$sql

View File

@ -1,5 +1,10 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Connect\MySQLDatabase;
use SilverStripe\ORM\Queries\SQLSelect;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests
@ -747,7 +752,7 @@ class SQLSelectTest_DO extends DataObject implements TestOnly {
"Name" => "Varchar",
"Meta" => "Varchar",
"Common" => "Varchar",
"Date" => "SS_Datetime"
"Date" => "Datetime"
);
}

View File

@ -1,5 +1,9 @@
<?php
use SilverStripe\ORM\Queries\SQLUpdate;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* Tests for {@see SQLUpdate}

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBField;
/**
* @package framework
@ -12,7 +14,7 @@ class TimeTest extends SapphireTest {
$time = DBField::create_field('Time', '17:15:55');
$this->assertEquals('5:15pm', $time->Nice());
Config::inst()->update('SilverStripe\Model\FieldType\DBTime', 'nice_format', 'H:i:s');
Config::inst()->update('SilverStripe\\ORM\\FieldType\\DBTime', 'nice_format', 'H:i:s');
$this->assertEquals('17:15:55', $time->Nice());
}

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
class UnsavedRelationListTest extends SapphireTest {
protected static $fixture_file = 'UnsavedRelationListTest.yml';
@ -15,10 +17,10 @@ class UnsavedRelationListTest extends SapphireTest {
'Returned UnsavedRelationList should be the same.');
$object->write();
$this->assertInstanceOf('RelationList', $object->Children());
$this->assertInstanceOf('SilverStripe\\ORM\\RelationList', $object->Children());
$this->assertNotEquals($children, $object->Children(),
'Return should be a RelationList after first write');
$this->assertInstanceOf('RelationList', $object->Siblings());
$this->assertInstanceOf('SilverStripe\\ORM\\RelationList', $object->Siblings());
$this->assertNotEquals($siblings, $object->Siblings(),
'Return should be a RelationList after first write');
}
@ -242,7 +244,7 @@ class UnsavedRelationListTest_DataObject extends DataObject implements TestOnly
private static $has_one = array(
'Parent' => 'UnsavedRelationListTest_DataObject',
'RelatedObject' => 'DataObject'
'RelatedObject' => 'SilverStripe\\ORM\\DataObject'
);
private static $has_many = array(

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\ValidationResult;
use SilverStripe\ORM\ValidationException;
/**
* @package framework
* @subpackage Testing

View File

@ -1,4 +1,9 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataExtension;
use SilverStripe\ORM\Versioning\VersionableExtension;
/**
* @package framework
* @subpackage tests
@ -9,7 +14,7 @@ class VersionableExtensionsTest extends SapphireTest
protected static $fixture_file = 'VersionableExtensionsFixtures.yml';
protected $requiredExtensions = array(
'VersionableExtensionsTest_DataObject' => array('Versioned'),
'VersionableExtensionsTest_DataObject' => array('SilverStripe\\ORM\\Versioning\\Versioned'),
);
protected $extraDataObjects = array(
@ -21,7 +26,7 @@ class VersionableExtensionsTest extends SapphireTest
{
Config::nest();
VersionableExtensionsTest_DataObject::add_extension('Versioned');
VersionableExtensionsTest_DataObject::add_extension('SilverStripe\\ORM\\Versioning\\Versioned');
VersionableExtensionsTest_DataObject::add_extension('VersionableExtensionsTest_Extension');
$cfg = Config::inst();

View File

@ -1,5 +1,9 @@
<?php
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBDatetime;
/**
* Tests ownership API of versioned DataObjects
*/
@ -37,15 +41,15 @@ class VersionedOwnershipTest extends SapphireTest {
}
/**
* Virtual "sleep" that doesn't actually slow execution, only advances SS_DateTime::now()
* Virtual "sleep" that doesn't actually slow execution, only advances DBDateTime::now()
*
* @param int $minutes
*/
protected function sleep($minutes) {
$now = SS_Datetime::now();
$now = DBDatetime::now();
$date = DateTime::createFromFormat('Y-m-d H:i:s', $now->getValue());
$date->modify("+{$minutes} minutes");
SS_Datetime::set_mock_now($date->format('Y-m-d H:i:s'));
DBDatetime::set_mock_now($date->format('Y-m-d H:i:s'));
}
/**
@ -193,7 +197,7 @@ class VersionedOwnershipTest extends SapphireTest {
// Check that stage record is ok
/** @var VersionedOwnershipTest_Subclass $subclass2Stage */
$subclass2Stage = \Versioned::get_by_stage('VersionedOwnershipTest_Subclass', 'Stage')->byID($subclass2ID);
$subclass2Stage = Versioned::get_by_stage('VersionedOwnershipTest_Subclass', 'Stage')->byID($subclass2ID);
$this->assertDOSEquals(
[
['Title' => 'Related 2 Modified'],
@ -215,7 +219,7 @@ class VersionedOwnershipTest extends SapphireTest {
// Live records are unchanged
/** @var VersionedOwnershipTest_Subclass $subclass2Live */
$subclass2Live = \Versioned::get_by_stage('VersionedOwnershipTest_Subclass', 'Live')->byID($subclass2ID);
$subclass2Live = Versioned::get_by_stage('VersionedOwnershipTest_Subclass', 'Live')->byID($subclass2ID);
$this->assertDOSEquals(
[
['Title' => 'Related 2'],
@ -588,7 +592,7 @@ class VersionedOwnershipTest extends SapphireTest {
*/
class VersionedOwnershipTest_Object extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned',
'SilverStripe\\ORM\\Versioning\\Versioned',
);
private static $db = array(
@ -630,7 +634,7 @@ class VersionedOwnershipTest_Subclass extends VersionedOwnershipTest_Object impl
*/
class VersionedOwnershipTest_Related extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned',
'SilverStripe\\ORM\\Versioning\\Versioned',
);
private static $db = array(
@ -662,7 +666,7 @@ class VersionedOwnershipTest_Related extends DataObject implements TestOnly {
*/
class VersionedOwnershipTest_RelatedMany extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned',
'SilverStripe\\ORM\\Versioning\\Versioned',
);
private static $db = array(
@ -684,7 +688,7 @@ class VersionedOwnershipTest_RelatedMany extends DataObject implements TestOnly
class VersionedOwnershipTest_Attachment extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned',
'SilverStripe\\ORM\\Versioning\\Versioned',
);
private static $db = array(
@ -707,7 +711,7 @@ class VersionedOwnershipTest_Attachment extends DataObject implements TestOnly {
*/
class VersionedOwnershipTest_Page extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned',
'SilverStripe\\ORM\\Versioning\\Versioned',
);
private static $db = array(
@ -742,7 +746,7 @@ class VersionedOwnershipTest_Page extends DataObject implements TestOnly {
*/
class VersionedOwnershipTest_Banner extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned',
'SilverStripe\\ORM\\Versioning\\Versioned',
);
private static $db = array(
@ -766,7 +770,7 @@ class VersionedOwnershipTest_Banner extends DataObject implements TestOnly {
*/
class VersionedOwnershipTest_CustomRelation extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned',
'SilverStripe\\ORM\\Versioning\\Versioned',
);
private static $db = array(
@ -796,7 +800,7 @@ class VersionedOwnershipTest_CustomRelation extends DataObject implements TestOn
*/
class VersionedOwnershipTest_Image extends DataObject implements TestOnly {
private static $extensions = array(
'Versioned',
'SilverStripe\\ORM\\Versioning\\Versioned',
);
private static $db = array(

View File

@ -1,6 +1,12 @@
<?php
use SilverStripe\Model\FieldType\DBDatetime;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Versioning\Versioned;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\DataExtension;
/**
* @package framework
@ -22,8 +28,8 @@ class VersionedTest extends SapphireTest {
);
protected $requiredExtensions = array(
"VersionedTest_DataObject" => array('Versioned'),
"VersionedTest_WithIndexes" => array('Versioned'),
"VersionedTest_DataObject" => array('SilverStripe\\ORM\\Versioning\\Versioned'),
"VersionedTest_WithIndexes" => array('SilverStripe\\ORM\\Versioning\\Versioned'),
);
public function testUniqueIndexes() {
@ -198,11 +204,11 @@ class VersionedTest extends SapphireTest {
public function testVersionedFieldsAdded() {
$obj = new VersionedTest_DataObject();
// Check that the Version column is added as a full-fledged column
$this->assertInstanceOf('SilverStripe\\Model\\FieldType\\DBInt', $obj->dbObject('Version'));
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBInt', $obj->dbObject('Version'));
$obj2 = new VersionedTest_Subclass();
// Check that the Version column is added as a full-fledged column
$this->assertInstanceOf('SilverStripe\\Model\\FieldType\\DBInt', $obj2->dbObject('Version'));
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBInt', $obj2->dbObject('Version'));
}
public function testVersionedFieldsNotInCMS() {
@ -412,15 +418,15 @@ class VersionedTest extends SapphireTest {
}
/**
* Virtual "sleep" that doesn't actually slow execution, only advances SS_DateTime::now()
* Virtual "sleep" that doesn't actually slow execution, only advances DBDateTime::now()
*
* @param int $minutes
*/
protected function sleep($minutes) {
$now = SS_Datetime::now();
$now = DBDatetime::now();
$date = DateTime::createFromFormat('Y-m-d H:i:s', $now->getValue());
$date->modify("+{$minutes} minutes");
SS_Datetime::set_mock_now($date->format('Y-m-d H:i:s'));
DBDatetime::set_mock_now($date->format('Y-m-d H:i:s'));
}
/**
@ -936,7 +942,7 @@ class VersionedTest extends SapphireTest {
"NewField" => "Varchar",
));
VersionedTest_RelatedWithoutVersion::add_extension("Versioned");
VersionedTest_RelatedWithoutVersion::add_extension("SilverStripe\\ORM\\Versioning\\Versioned");
$this->resetDBSchema(true);
$testData = new VersionedTest_RelatedWithoutVersion();
$testData->NewField = 'Test';
@ -1050,7 +1056,7 @@ class VersionedTest_DataObject extends DataObject implements TestOnly {
);
private static $extensions = array(
"Versioned",
"SilverStripe\\ORM\\Versioning\\Versioned",
);
private static $has_one = array(
@ -1085,7 +1091,7 @@ class VersionedTest_WithIndexes extends DataObject implements TestOnly {
'UniqS' => 'Int',
);
private static $extensions = array(
"Versioned"
"SilverStripe\\ORM\\Versioning\\Versioned"
);
private static $indexes = array(
'UniqS_idx' => 'unique ("UniqS")',
@ -1147,7 +1153,7 @@ class VersionedTest_SingleStage extends DataObject implements TestOnly {
);
private static $extensions = array(
'Versioned("Versioned")'
'SilverStripe\ORM\Versioning\Versioned("Versioned")'
);
}
@ -1162,7 +1168,7 @@ class VersionedTest_PublicStage extends DataObject implements TestOnly {
);
private static $extensions = array(
"Versioned"
"SilverStripe\\ORM\\Versioning\\Versioned"
);
public function canView($member = null) {
@ -1200,7 +1206,7 @@ class VersionedTest_PublicViaExtension extends DataObject implements TestOnly {
);
private static $extensions = array(
"Versioned",
"SilverStripe\\ORM\\Versioning\\Versioned",
"VersionedTest_PublicExtension"
);
}

View File

@ -1,5 +1,10 @@
<?php
use SilverStripe\ORM\DB;
use SilverStripe\ORM\Connect\MySQLDatabase;
use SilverStripe\ORM\Connect\MySQLSchemaManager;
use SilverStripe\ORM\DataObject;
class FulltextFilterTest extends SapphireTest {
protected $extraDataObjects = array(
@ -115,7 +120,7 @@ class FulltextFilterTest_DataObject extends DataObject implements TestOnly {
);
private static $create_table_options = array(
"MySQLDatabase" => "ENGINE=MyISAM",
MySQLSchemaManager::ID => "ENGINE=MyISAM",
);
}

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
class SearchContextTest extends SapphireTest {
protected static $fixture_file = 'SearchContextTest.yml';
@ -238,7 +240,7 @@ class SearchContextTest_Project extends DataObject implements TestOnly {
class SearchContextTest_Deadline extends DataObject implements TestOnly {
private static $db = array(
"CompletionDate" => "SS_Datetime"
"CompletionDate" => "Datetime"
);
private static $has_one = array(

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* This test class will focus on the when an search filter contains relational
* component such as has_one, has_many, many_many, the {@link SearchFilter::applyRelation($query)}

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBDatetime;
/**
* @package framework
* @subpackage tests
@ -169,7 +172,7 @@ class MemberAuthenticatorTest extends SapphireTest {
{
Config::inst()->update('Member', 'lock_out_after_incorrect_logins', 1);
Config::inst()->update('Member', 'lock_out_delay_mins', 10);
SS_Datetime::set_mock_now('2016-04-18 00:00:00');
DBDatetime::set_mock_now('2016-04-18 00:00:00');
$controller = new Security();
$form = new Form($controller, 'Form', new FieldList(), new FieldList());

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,10 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DB;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\DataExtension;
/**
* @package framework
* @subpackage tests
@ -48,7 +54,7 @@ class MemberTest extends FunctionalTest {
/**
* @expectedException ValidationException
* @expectedException SilverStripe\ORM\ValidationException
*/
public function testWriteDoesntMergeNewRecordWithExistingMember() {
$m1 = new Member();
@ -61,7 +67,7 @@ class MemberTest extends FunctionalTest {
}
/**
* @expectedException ValidationException
* @expectedException SilverStripe\ORM\ValidationException
*/
public function testWriteDoesntMergeExistingMemberOnIdentifierChange() {
$m1 = new Member();
@ -169,7 +175,7 @@ class MemberTest extends FunctionalTest {
$this->assertTrue($passwords->current()->checkPassword('test1'), "Password test1 not found in MemberRecord");
$passwords->next();
$this->assertInstanceOf('DataObject', $passwords->current());
$this->assertInstanceOf('SilverStripe\\ORM\\DataObject', $passwords->current());
$this->assertTrue($passwords->current()->checkPassword('1nitialPassword'),
"Password 1nitialPassword not found in MemberRecord");
@ -913,7 +919,7 @@ class MemberTest extends FunctionalTest {
$firstHash->ExpiryDate = '2000-01-01 00:00:00';
$firstHash->write();
SS_DateTime::set_mock_now('1999-12-31 23:59:59');
DBDateTime::set_mock_now('1999-12-31 23:59:59');
$response = $this->get(
'Security/login',
@ -939,7 +945,7 @@ class MemberTest extends FunctionalTest {
$firstHash->ExpiryDate = '2000-01-01 00:00:00';
$firstHash->write();
SS_DateTime::set_mock_now('2000-01-01 00:00:01');
DBDateTime::set_mock_now('2000-01-01 00:00:01');
$response = $this->get(
'Security/login',
@ -952,7 +958,7 @@ class MemberTest extends FunctionalTest {
);
$this->assertNotContains($message, $response->getBody());
$this->session()->inst_set('loggedInAs', null);
SS_Datetime::clear_mock_now();
DBDatetime::clear_mock_now();
}
public function testRememberMeMultipleDevices() {

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,7 +1,12 @@
<?php
use SilverStripe\Model\FieldType\DBDatetime;
use SilverStripe\Model\FieldType\DBClassName;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\ORM\FieldType\DBClassName;
use SilverStripe\ORM\DB;
/**
* Test the security class, including log-in form, change password form, etc

View File

@ -1,4 +1,6 @@
<?php
use SilverStripe\ORM\DataObject;
/**
* @package framework
* @subpackage tests

View File

@ -1,5 +1,7 @@
<?php
use SilverStripe\ORM\DataObject;
class YamlFixtureTest extends SapphireTest {
protected $extraDataObjects = array(

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\Versioning\Versioned;
// Not actually a data object, we just want a ViewableData object that's just for us
class SSViewerCacheBlockTest_Model extends DataObject implements TestOnly {
@ -25,7 +28,7 @@ class SSViewerCacheBlockTest_VersionedModel extends DataObject implements TestOn
protected $entropy = 'default';
private static $extensions = array(
"Versioned('Stage', 'Live')"
"SilverStripe\\ORM\\Versioning\\Versioned('Stage', 'Live')"
);
public function setEntropy($entropy) {

View File

@ -1,5 +1,8 @@
<?php
use SilverStripe\ORM\ArrayList;
use SilverStripe\ORM\DataObject;
class SSViewerTest extends SapphireTest {
/**

View File

@ -153,7 +153,7 @@ class ViewableDataTest extends SapphireTest {
// Casted data should be the string wrapped in a DBField-object.
$this->assertNotEmpty($castedData, 'Casted data was empty.');
$this->assertInstanceOf('SilverStripe\Model\FieldType\DBField', $castedData, 'Casted data should be instance of DBField.');
$this->assertInstanceOf('SilverStripe\\ORM\\FieldType\\DBField', $castedData, 'Casted data should be instance of DBField.');
$this->assertEquals($uncastedData, $castedData->getValue(), 'Casted and uncasted strings are not equal.');
}

View File

@ -1,4 +1,7 @@
<?php
use SilverStripe\ORM\DataList;
use SilverStripe\ORM\DataModel;
class GenericTemplateGlobalProvider implements TemplateGlobalProvider {
public static function get_template_global_variables() {

View File

@ -1,6 +1,8 @@
<?php
use SilverStripe\Model\FieldType\DBField;
use SilverStripe\ORM\FieldType\DBField;
/**
* This tracks the current scope for an SSViewer instance. It has three goals:

View File

@ -1,6 +1,6 @@
<?php
use SilverStripe\Model\FieldType\DBVarchar;
/**
* A ViewableData object is any object that can be rendered into a template/view.
@ -315,7 +315,7 @@ class ViewableData extends Object implements IteratorAggregate {
foreach($ancestry as $class) {
if(!isset(self::$casting_cache[$class]) && $merge) {
$mergeFields = is_subclass_of($class, 'DataObject') ? array('db', 'casting') : array('casting');
$mergeFields = is_subclass_of($class, 'SilverStripe\\ORM\\DataObject') ? array('db', 'casting') : array('casting');
if($mergeFields) foreach($mergeFields as $field) {
$casting = Config::inst()->get($class, $field, Config::UNINHERITED);