Merge pull request #1087 from chillu/pulls/dataobject-get-join

API Removed non-functional $join argument from DataObject::get() and oth...
This commit is contained in:
Sam Minnée 2013-01-09 16:17:21 -08:00
commit 58013cf367
3 changed files with 45 additions and 13 deletions

View File

@ -1365,8 +1365,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* @param string $filter A filter to be inserted into the WHERE clause * @param string $filter A filter to be inserted into the WHERE clause
* @param string|array $sort A sort expression to be inserted into the ORDER BY clause. If omitted, the static * @param string|array $sort A sort expression to be inserted into the ORDER BY clause. If omitted, the static
* field $default_sort on the component class will be used. * field $default_sort on the component class will be used.
* @param string $join A single join clause. This can be used for filtering, only 1 instance of each DataObject * @param string $join Deprecated, use leftJoin($table, $joinClause) instead
* will be returned.
* @param string|array $limit A limit expression to be inserted into the LIMIT clause * @param string|array $limit A limit expression to be inserted into the LIMIT clause
* *
* @return HasManyList The components of the one-to-many relationship. * @return HasManyList The components of the one-to-many relationship.
@ -1379,6 +1378,12 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
. " on class '$this->class'", E_USER_ERROR); . " on class '$this->class'", E_USER_ERROR);
} }
if($join) {
throw new \InvalidArgumentException(
'The $join argument has been removed. Use leftJoin($table, $joinClause) instead.'
);
}
// If we haven't been written yet, we can't save these relations, so use a list that handles this case // If we haven't been written yet, we can't save these relations, so use a list that handles this case
if(!$this->ID) { if(!$this->ID) {
if(!isset($this->unsavedRelations[$componentName])) { if(!isset($this->unsavedRelations[$componentName])) {
@ -1395,7 +1400,6 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
$result = $result->forForeignID($this->ID); $result = $result->forForeignID($this->ID);
$result = $result->where($filter)->limit($limit)->sort($sort); $result = $result->where($filter)->limit($limit)->sort($sort);
if($join) $result = $result->join($join);
return $result; return $result;
} }
@ -1406,7 +1410,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* @param string $componentName * @param string $componentName
* @param string $filter * @param string $filter
* @param string|array $sort * @param string|array $sort
* @param string $join * @param string $join Deprecated, use leftJoin($table, $joinClause) instead
* @param string|array $limit * @param string|array $limit
* @return SQLQuery * @return SQLQuery
*/ */
@ -1416,6 +1420,12 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
. " on class '$this->class'", E_USER_ERROR); . " on class '$this->class'", E_USER_ERROR);
} }
if($join) {
throw new \InvalidArgumentException(
'The $join argument has been removed. Use leftJoin($table, $joinClause) instead.'
);
}
$joinField = $this->getRemoteJoinField($componentName, 'has_many'); $joinField = $this->getRemoteJoinField($componentName, 'has_many');
$id = $this->getField("ID"); $id = $this->getField("ID");
@ -2692,8 +2702,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
* @param string $filter A filter to be inserted into the WHERE clause. * @param string $filter A filter to be inserted into the WHERE clause.
* @param string|array $sort A sort expression to be inserted into the ORDER BY clause. If omitted, * @param string|array $sort A sort expression to be inserted into the ORDER BY clause. If omitted,
* self::$default_sort will be used. * self::$default_sort will be used.
* @param string $join A single join clause. This can be used for filtering, only 1 instance of each DataObject * @param string $join Deprecated 3.0 Join clause. Use leftJoin($table, $joinClause) instead.
* will be returned.
* @param string|array $limit A limit expression to be inserted into the LIMIT clause. * @param string|array $limit A limit expression to be inserted into the LIMIT clause.
* @param string $containerClass The container class to return the results in. * @param string $containerClass The container class to return the results in.
* *
@ -2718,6 +2727,12 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
return $result; return $result;
} }
if($join) {
throw new \InvalidArgumentException(
'The $join argument has been removed. Use leftJoin($table, $joinClause) instead.'
);
}
$result = DataList::create($callerClass)->where($filter)->sort($sort); $result = DataList::create($callerClass)->where($filter)->sort($sort);
if($limit && strpos($limit, ',') !== false) { if($limit && strpos($limit, ',') !== false) {
@ -2727,8 +2742,6 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
$result = $result->limit($limit); $result = $result->limit($limit);
} }
if($join) $result = $result->join($join);
$result->setDataModel(DataModel::inst()); $result->setDataModel(DataModel::inst());
return $result; return $result;
} }
@ -2748,7 +2761,7 @@ class DataObject extends ViewableData implements DataObjectInterface, i18nEntity
$list = new DataList(get_class($this)); $list = new DataList(get_class($this));
$list->setDataModel($this->model); $list->setDataModel($this->model);
} else { } else {
throw new InvalidArgumentException("DataObject::aggregate() must be called as an instance method or passed" throw new \InvalidArgumentException("DataObject::aggregate() must be called as an instance method or passed"
. " a classname"); . " a classname");
} }
return $list; return $list;

View File

@ -754,13 +754,25 @@ class Versioned extends DataExtension {
return !$stagesAreEqual; return !$stagesAreEqual;
} }
/**
* @param string $filter
* @param string $sort
* @param string $limit
* @param string $join Deprecated, use leftJoin($table, $joinClause) instead
* @param string $having
*/
public function Versions($filter = "", $sort = "", $limit = "", $join = "", $having = "") { public function Versions($filter = "", $sort = "", $limit = "", $join = "", $having = "") {
return $this->allVersions($filter, $sort, $limit, $join, $having); return $this->allVersions($filter, $sort, $limit, $join, $having);
} }
/** /**
* Return a list of all the versions available. * Return a list of all the versions available.
*
* @param string $filter * @param string $filter
* @param string $sort
* @param string $limit
* @param string $join Deprecated, use leftJoin($table, $joinClause) instead
* @param string $having
*/ */
public function allVersions($filter = "", $sort = "", $limit = "", $join = "", $having = "") { public function allVersions($filter = "", $sort = "", $limit = "", $join = "", $having = "") {
// Make sure the table names are not postfixed (e.g. _Live) // Make sure the table names are not postfixed (e.g. _Live)
@ -1009,7 +1021,7 @@ class Versioned extends DataExtension {
* @param string $stage The name of the stage. * @param string $stage The name of the stage.
* @param string $filter A filter to be inserted into the WHERE clause. * @param string $filter A filter to be inserted into the WHERE clause.
* @param string $sort A sort expression to be inserted into the ORDER BY clause. * @param string $sort A sort expression to be inserted into the ORDER BY clause.
* @param string $join A join expression, such as LEFT JOIN or INNER JOIN * @param string $join Deprecated, use leftJoin($table, $joinClause) instead
* @param int $limit A limit on the number of records returned from the database. * @param int $limit A limit on the number of records returned from the database.
* @param string $containerClass The container class for the result set (default is DataList) * @param string $containerClass The container class for the result set (default is DataList)
* @return SS_List * @return SS_List

View File

@ -221,7 +221,9 @@ class Group extends DataObject {
* including all members which are "inherited" from children groups of this record. * including all members which are "inherited" from children groups of this record.
* See {@link DirectMembers()} for retrieving members without any inheritance. * See {@link DirectMembers()} for retrieving members without any inheritance.
* *
* @param String * @param String $filter
* @param String $sort
* @param String $join Deprecated, use leftJoin($table, $joinClause) instead
* @return ManyManyList * @return ManyManyList
*/ */
public function Members($filter = "", $sort = "", $join = "", $limit = "") { public function Members($filter = "", $sort = "", $join = "", $limit = "") {
@ -231,6 +233,12 @@ class Group extends DataObject {
. " DataList instead."); . " DataList instead.");
} }
if($join) {
throw new \InvalidArgumentException(
'The $join argument has been removed. Use leftJoin($table, $joinClause) instead.'
);
}
// First get direct members as a base result // First get direct members as a base result
$result = $this->DirectMembers(); $result = $this->DirectMembers();
// Remove the default foreign key filter in prep for re-applying a filter containing all children groups. // Remove the default foreign key filter in prep for re-applying a filter containing all children groups.
@ -242,7 +250,6 @@ class Group extends DataObject {
// Now set all children groups as a new foreign key // Now set all children groups as a new foreign key
$groups = Group::get()->byIDs($this->collateFamilyIDs()); $groups = Group::get()->byIDs($this->collateFamilyIDs());
$result = $result->forForeignID($groups->column('ID'))->where($filter)->sort($sort)->limit($limit); $result = $result->forForeignID($groups->column('ID'))->where($filter)->sort($sort)->limit($limit);
if($join) $result = $result->join($join);
return $result; return $result;
} }