mirror of
https://github.com/silverstripe/silverstripe-reports
synced 2024-10-22 11:05:53 +02:00
mlanthaler: Suppress E_NOTICE when $_REQUESTctf?childID? is not set (e.g. when adding a new member by clicking on "Add member" in the security tab).
(merged from branches/gsoc) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@41805 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
parent
3ee2969cd5
commit
c2f57b75de
@ -2,7 +2,7 @@
|
||||
/**
|
||||
* Enhances {ComplexTableField} with the ability to list groups and given members.
|
||||
* It is based around groups, so it deletes Members from a Group rather than from the entire system.
|
||||
*
|
||||
*
|
||||
* In contrast to the original implementation, the URL-parameters "ParentClass" and "ParentID" are used
|
||||
* to specify "Group" (hardcoded) and the GroupID-relation.
|
||||
*
|
||||
@ -18,11 +18,11 @@ class MemberTableField extends ComplexTableField {
|
||||
protected $pageSize;
|
||||
protected $detailFormValidator;
|
||||
protected $group;
|
||||
|
||||
|
||||
protected $template = "MemberTableField";
|
||||
|
||||
|
||||
static $data_class = "Member";
|
||||
|
||||
|
||||
protected $permissions = array(
|
||||
"add",
|
||||
"edit",
|
||||
@ -45,27 +45,27 @@ class MemberTableField extends ComplexTableField {
|
||||
}
|
||||
|
||||
function __construct($controller, $name, $group, $members = null, $hidePassword = true, $pageLimit = 10) {
|
||||
|
||||
|
||||
if($group) {
|
||||
if(is_object($group)) {
|
||||
$this->group = $group;
|
||||
} else if(is_numeric($group)){
|
||||
$this->group = DataObject::get_by_id('Group',$group);
|
||||
}
|
||||
}
|
||||
} else if(is_numeric($_REQUEST['ctf'][$this->Name()]["ID"])) {
|
||||
$this->group = DataObject::get_by_id('Group',$_REQUEST['ctf'][$this->Name()]["ID"]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$sourceClass = $this->stat("data_class");
|
||||
|
||||
foreach( self::$addedPermissions as $permission )
|
||||
array_push( $this->permissions, $permission );
|
||||
|
||||
$fieldList = array(
|
||||
"FirstName" => "Firstname",
|
||||
"Surname" => "Surname",
|
||||
"Email" => "Email"
|
||||
"FirstName" => "Firstname",
|
||||
"Surname" => "Surname",
|
||||
"Email" => "Email"
|
||||
);
|
||||
|
||||
$csvFieldList = $fieldList;
|
||||
@ -78,7 +78,7 @@ class MemberTableField extends ComplexTableField {
|
||||
}
|
||||
|
||||
if(!$hidePassword) {
|
||||
$fieldList["Password"] = "Password";
|
||||
$fieldList["Password"] = "Password";
|
||||
}
|
||||
|
||||
if(isset($_REQUEST['ctf']['childID']) && $memberID = $_REQUEST['ctf']['childID']) {
|
||||
@ -90,23 +90,23 @@ class MemberTableField extends ComplexTableField {
|
||||
$this->detailFormValidator = $SNG_member->getValidator();
|
||||
|
||||
$this->pageSize = $pageLimit;
|
||||
|
||||
|
||||
// Legacy: Use setCustomSourceItems() instead.
|
||||
if($members) {
|
||||
$this->customSourceItems = $this->memberListWithGroupID($members, $group);
|
||||
}
|
||||
|
||||
|
||||
$this->hidePassword = $hidePassword;
|
||||
|
||||
parent::__construct($controller, $name, $sourceClass, $fieldList, $detailFormFields);
|
||||
|
||||
|
||||
Requirements::javascript("cms/javascript/MemberTableField.js");
|
||||
|
||||
|
||||
// construct the filter and sort
|
||||
if(isset($_REQUEST['MemberOrderByField'])) {
|
||||
$this->sourceSort = "`" . Convert::raw2sql($_REQUEST['MemberOrderByField']) . "`" . Convert::raw2sql( $_REQUEST['MemberOrderByOrder'] );
|
||||
}
|
||||
|
||||
|
||||
// search
|
||||
$search = isset($_REQUEST['MemberSearch']) ? Convert::raw2sql($_REQUEST['MemberSearch']) : null;
|
||||
if(!empty($_REQUEST['MemberSearch'])) {
|
||||
@ -116,7 +116,7 @@ class MemberTableField extends ComplexTableField {
|
||||
$sourceF .= "`$k` LIKE '%$search%' OR ";
|
||||
$this->sourceFilter[] = substr( $sourceF, 0, -3 ) . ")";
|
||||
}
|
||||
|
||||
|
||||
// filter by groups
|
||||
// TODO Not implemented yet
|
||||
if(isset($_REQUEST['ctf'][$this->Name()]['GroupID']) && is_numeric($_REQUEST['ctf'][$this->Name()]['GroupID'])) {
|
||||
@ -126,25 +126,25 @@ class MemberTableField extends ComplexTableField {
|
||||
// If the table is not clean (without duplication), the total and navigation wil not work well, so uncheck the big line below
|
||||
$this->sourceFilter[] = "`Group_Members`.`ID` IN (SELECT `ID` FROM `Group_Members` WHERE `GroupID`='{$this->group->ID}' GROUP BY `MemberID` HAVING MIN(`ID`))";
|
||||
}
|
||||
|
||||
|
||||
$this->sourceJoin = " INNER JOIN `Group_Members` ON `MemberID`=`Member`.`ID`";
|
||||
|
||||
$this->setFieldListCsv( $csvFieldList );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Overridden functions
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
function sourceID() {
|
||||
return $this->group->ID;
|
||||
}
|
||||
|
||||
|
||||
function AddLink() {
|
||||
return "{$this->PopupBaseLink()}&methodName=add";
|
||||
}
|
||||
|
||||
|
||||
function DetailForm() {
|
||||
$ID = Convert::raw2xml($_REQUEST['ctf']['ID']);
|
||||
$childID = isset($_REQUEST['ctf']['childID']) ? Convert::raw2xml($_REQUEST['ctf']['childID']) : 0;
|
||||
@ -162,7 +162,7 @@ class MemberTableField extends ComplexTableField {
|
||||
|
||||
// the ID field confuses the Controller-logic in finding the right view for ReferencedField
|
||||
$this->detailFormFields->removeByName('ID');
|
||||
|
||||
|
||||
$this->detailFormFields->push(new HiddenField("ctf[ID]"," ",$ID));
|
||||
// add a namespaced ID instead thats "converted" by saveComplexTableField()
|
||||
$this->detailFormFields->push(new HiddenField("ctf[childID]","",$childID));
|
||||
@ -183,7 +183,7 @@ class MemberTableField extends ComplexTableField {
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
|
||||
function SearchForm() {
|
||||
$searchFields = new FieldGroup(
|
||||
new TextField('MemberSearch', 'Search'),
|
||||
@ -191,10 +191,10 @@ class MemberTableField extends ComplexTableField {
|
||||
new HiddenField('MemberFieldName','',$this->name),
|
||||
new HiddenField('MemberDontShowPassword','',$this->hidePassword)
|
||||
);
|
||||
|
||||
|
||||
$orderByFields = new FieldGroup(
|
||||
new LabelField('Order by'),
|
||||
new FieldSet(
|
||||
new FieldSet(
|
||||
new DropdownField('MemberOrderByField','', array(
|
||||
'FirstName' => 'FirstName',
|
||||
'Surname' => 'Surname',
|
||||
@ -206,27 +206,27 @@ class MemberTableField extends ComplexTableField {
|
||||
))
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
$groups = DataObject::get('Group');
|
||||
$groupArray = array('' => 'Any group');
|
||||
foreach( $groups as $group ) {
|
||||
$groupArray[$group->ID] = $group->Title;
|
||||
}
|
||||
$groupFields = new DropdownField('MemberGroup','Filter by group',$groupArray );
|
||||
|
||||
|
||||
$actionFields = new LiteralField('MemberFilterButton','<input type="submit" name="MemberFilterButton" value="Filter" id="MemberFilterButton"/>');
|
||||
|
||||
|
||||
$fieldContainer = new FieldGroup(
|
||||
$searchFields,
|
||||
// $orderByFields,
|
||||
// $groupFields,
|
||||
$actionFields
|
||||
);
|
||||
|
||||
|
||||
return $fieldContainer->FieldHolder();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Add existing member to group rather than creating a new member
|
||||
*/
|
||||
@ -237,10 +237,10 @@ class MemberTableField extends ComplexTableField {
|
||||
if(!is_numeric($data['ctf']['ID'])) {
|
||||
FormResponse::status_messsage('Adding failed', 'bad');
|
||||
}
|
||||
|
||||
|
||||
$className = $this->stat('data_class');
|
||||
$record = new $className();
|
||||
|
||||
|
||||
$record->update($data);
|
||||
$record->write();
|
||||
|
||||
@ -257,7 +257,7 @@ class MemberTableField extends ComplexTableField {
|
||||
|
||||
return FormResponse::respond();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Custom delete implementation:
|
||||
* Remove member from group rather than from the database
|
||||
@ -271,13 +271,13 @@ class MemberTableField extends ComplexTableField {
|
||||
} else {
|
||||
user_error("MemberTableField::delete: Bad parameters: Group=$groupID, Member=$memberID", E_USER_ERROR);
|
||||
}
|
||||
|
||||
|
||||
return FormResponse::respond();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* #################################
|
||||
* Utility Functions
|
||||
@ -286,12 +286,12 @@ class MemberTableField extends ComplexTableField {
|
||||
function getParentClass() {
|
||||
return "Group";
|
||||
}
|
||||
|
||||
|
||||
function getParentIdName($childClass,$parentClass){
|
||||
return "GroupID";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* #################################
|
||||
* Custom Functions
|
||||
@ -304,18 +304,18 @@ class MemberTableField extends ComplexTableField {
|
||||
}
|
||||
return $newMembers;
|
||||
}
|
||||
|
||||
|
||||
function setGroup($group) {
|
||||
$this->group = $group;
|
||||
}
|
||||
function setController($controller) {
|
||||
$this->controller = $controller;
|
||||
}
|
||||
|
||||
|
||||
function GetControllerName() {
|
||||
return $this->controller->class;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add existing member to group by name (with JS-autocompletion)
|
||||
*/
|
||||
@ -325,7 +325,7 @@ class MemberTableField extends ComplexTableField {
|
||||
$fields->push(new TextField($fieldName));
|
||||
}
|
||||
$fields->push(new HiddenField("ctf[ID]", null, $this->group->ID));
|
||||
|
||||
|
||||
return new TabularStyle(new Form($this->controller,'AddRecordForm',
|
||||
$fields,
|
||||
new FieldSet(
|
||||
@ -336,7 +336,7 @@ class MemberTableField extends ComplexTableField {
|
||||
|
||||
/**
|
||||
* Cached version for getting the appropraite members for this particular group.
|
||||
*
|
||||
*
|
||||
* This includes getting inherited groups, such as groups under groups.
|
||||
*/
|
||||
function sourceItems(){
|
||||
@ -344,8 +344,8 @@ class MemberTableField extends ComplexTableField {
|
||||
if($this->sourceItems) {
|
||||
return $this->sourceItems;
|
||||
}
|
||||
|
||||
// Setup limits
|
||||
|
||||
// Setup limits
|
||||
$limitClause = "";
|
||||
if(isset($_REQUEST['ctf'][$this->Name()]['start']) && is_numeric($_REQUEST['ctf'][$this->Name()]['start'])) {
|
||||
$limitClause = ($_REQUEST['ctf'][$this->Name()]['start']) . ", {$this->pageSize}";
|
||||
@ -379,7 +379,7 @@ class MemberTableField extends ComplexTableField {
|
||||
|
||||
class MemberTableField_Popup extends ComplexTableField_Popup {
|
||||
function __construct($controller, $name, $fields, $sourceClass, $readonly=false, $validator = null) {
|
||||
|
||||
|
||||
// DO NOT CHANGE THE ORDER OF THESE JS FILES. THESE ARE ONLY REQUIRED FOR THIS INSTANCE !!!11onetwo
|
||||
|
||||
parent::__construct($controller, $name, $fields, $sourceClass, $readonly, $validator);
|
||||
@ -399,9 +399,9 @@ class MemberTableField_Popup extends ComplexTableField_Popup {
|
||||
}
|
||||
$this->saveInto($childObject);
|
||||
$childObject->write();
|
||||
|
||||
|
||||
$childObject->Groups()->add($_REQUEST['ctf']['ID']);
|
||||
|
||||
|
||||
// if ajax-call in an iframe, close window by javascript, else redirect to referrer
|
||||
if(!Director::is_ajax()) {
|
||||
Director::redirect(substr($_SERVER['REQUEST_URI'],0,strpos($_SERVER['REQUEST_URI'],"?")));
|
||||
|
Loading…
Reference in New Issue
Block a user