Version: current

# Class MemberTableField

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.

  Object
  ViewableData implements IteratorAggregate
  RequestHandler
  FormField
  TableListField
  ComplexTableField
  MemberTableField

Package: cms\security
Located at cms/code/MemberTableField.php

## Methods summary

`public` | # `__construct( `Controller` $controller, string $name, mixed $group = null, `DataObjectSet` $members = null, boolean $hidePassword = true )` Constructor method for MemberTableField. Constructor method for MemberTableField. #### Parameters $controller Controller $controller Controller class which created this field $name string $name Name of the field (e.g. "Members") $group mixed $group Can be the ID of a Group instance, or a Group instance itself $members DataObjectSet $members Optional set of Members to set as the source items for this field $hidePassword boolean $hidePassword Hide the password field or not in the summary? #### Overrides `ComplexTableField::__construct`
`public String` | # `FieldHolder( )` #### Returns `String` String #### Overrides `ComplexTableField::FieldHolder`
`public `Int`` | # `sourceID( )` #### Returns ``Int`` Int #### Overrides `ComplexTableField::sourceID`
`public` | # `AddLink( )` #### Overrides `ComplexTableField::AddLink`
`public` | # `SearchForm( )`
`public` | # `addtogroup( )` Add existing member to group rather than creating a new member Add existing member to group rather than creating a new member
`public String` | # `delete( )` Custom delete implementation: Remove member from group rather than from the database Custom delete implementation: Remove member from group rather than from the database #### Returns `String` String #### Overrides `TableListField::delete`
`public String` | # `getParentClass( )` ################################# Utility Functions ################################# # ################################# Utility Functions #### Returns `String` String #### Overrides `ComplexTableField::getParentClass`
`public` | # `getParentIdName( mixed $childClass, mixed $parentClass )` Returns the db-fieldname of the currently used has_one-relationship. Returns the db-fieldname of the currently used has_one-relationship. #### Overrides `ComplexTableField::getParentIdName`
`public `DataObjectSet`` | # `memberListWithGroupID( `DataObjectSet` $members, `Group` $group )` Customise an existing DataObjectSet of Member objects with a GroupID. Customise an existing DataObjectSet of Member objects with a GroupID. #### Parameters $members DataObjectSet $members Set of Member objects to customise $group Group $group Group object to customise with #### Returns ``DataObjectSet`` Customised set of Member objects
`public` | # `setGroup( mixed $group )`
`public `Group`` | # `getGroup( )` #### Returns ``Group`` Group
`public` | # `setController( mixed $controller )` #### Overrides `ComplexTableField::setController`
`public` | # `GetControllerName( )`
`public` | # `AddRecordForm( )` Add existing member to group by name (with JS-autocompletion) Add existing member to group by name (with JS-autocompletion)
`public` | # `AddForm( mixed $childID = NULL )` #### Overrides `ComplexTableField::AddForm`
`public string` | # `saveComplexTableField( mixed $data, mixed $form, mixed $params )` Same behaviour as parent class, but adds the member to the passed GroupID. Same behaviour as parent class, but adds the member to the passed GroupID. #### Returns `string` string #### Overrides `ComplexTableField::saveComplexTableField`
`public` | # `sourceItems( )` Cached version for getting the appropraite members for this particular group. Cached version for getting the appropraite members for this particular group. This includes getting inherited groups, such as groups under groups. #### Overrides `TableListField::sourceItems`
`public` | # `TotalCount( )` #### Overrides `TableListField::TotalCount`
`public` | # `handleItem( mixed $request )` Handles item requests MemberTableField needs its own item request class so that it can overload the delete method Handles item requests MemberTableField needs its own item request class so that it can overload the delete method #### Overrides `ComplexTableField::handleItem`

### Methods inherited from ComplexTableField

`IsAddMode()`, `ItemCount()`, `Items()`, `PopupHeight()`, `PopupWidth()`, `Title()`, `add()`, `createFieldSet()`, `getCustomFieldsFor()`, `getFieldsFor()`, `getParentIdNameRelation()`, `getParentRecord()`, `getValidatorFor()`, `getViewer()`, `isComposite()`, `setAddTitle()`, `setDetailFormValidator()`, `setParentClass()`, `setParentIdName()`, `setPopupCaption()`, `setPopupSize()`, `setRelationAutoSetting()`, `setTemplatePopup()`, `sourceClass()`, `sourceFilter()`

### Methods inherited from TableListField

`Actions()`, `BaseLink()`, `Can()`, `CurrentLink()`, `ExportLink()`, `FieldList()`, `FirstItem()`, `FirstLink()`, `GroupedItems()`, `HasGroupedItems()`, `HasSummary()`, `Headings()`, `LastItem()`, `LastLink()`, `ListStart()`, `Name()`, `NamePlural()`, `NameSingular()`, `NextLink()`, `PageSize()`, `PrevLink()`, `PrintLink()`, `ShowPagination()`, `SummaryFields()`, `SummaryTitle()`, `Utility()`, `addSummary()`, `ajax_refresh()`, `colFunction_avg()`, `colFunction_sum()`, `disableSorting()`, `export()`, `filterString()`, `generateExportFileData()`, `getCastedValue()`, `getCsvQuery()`, `getCsvSeparator()`, `getExtraLinkParams()`, `getPermissions()`, `getQuery()`, `index()`, `isFieldSortable()`, `performReadonlyTransformation()`, `permissions_for_object()`, `printall()`, `removeCsvHeader()`, `removeSummary()`, `setCSVFieldFormatting()`, `setClick_AjaxLoad()`, `setClick_PopupLoad()`, `setCsvSeparator()`, `setCustomCsvQuery()`, `setCustomQuery()`, `setCustomSourceItems()`, `setExtraLinkParams()`, `setFieldCasting()`, `setFieldFormatting()`, `setFieldList()`, `setFieldListCsv()`, `setHighlightConditions()`, `setPageSize()`, `setPermissions()`, `setShowPagination()`, `setTemplate()`

### Methods inherited from FormField

`Field()`, `LeftTitle()`, `Link()`, `Message()`, `MessageType()`, `Required()`, `RightTitle()`, `SmallFieldHolder()`, `Type()`, `Value()`, `addExtraAttribute()`, `addExtraClass()`, `allowHTML5()`, `allow_html5()`, `attrName()`, `attrTitle()`, `attrValue()`, `createTag()`, `dataValue()`, `debug()`, `describe()`, `extraClass()`, `fieldHolderTemplates()`, `fieldTemplates()`, `forTemplate()`, `getCustomValidationMessage()`, `getExtraClasses()`, `getForm()`, `getHTML5Attribute()`, `getTabIndex()`, `getTabIndexHTML()`, `hasClass()`, `hasData()`, `id()`, `isDisabled()`, `isReadonly()`, `jsValidation()`, `name_to_label()`, `performDisabledTransformation()`, `removeExtraAttribute()`, `removeExtraClass()`, `rootFieldSet()`, `saveInto()`, `securityTokenEnabled()`, `setAutocomplete()`, `setContainerFieldSet()`, `setCustomValidationMessage()`, `setDisabled()`, `setError()`, `setFieldHolderTemplate()`, `setForm()`, `setHTML5Attribute()`, `setLeftTitle()`, `setName()`, `setReadonly()`, `setRightTitle()`, `setSmallFieldHolderTemplate()`, `setTabIndex()`, `setTitle()`, `setValue()`, `smallFieldHolderTemplates()`, `transform()`, `useHTML5()`, `use_html5()`, `validate()`

### Methods inherited from RequestHandler

`allowedActions()`, `checkAccessAction()`, `getRequest()`, `handleRequest()`, `hasAction()`, `httpError()`

### Methods inherited from ViewableData

`ATT_val()`, `BaseHref()`, `CSSClasses()`, `ColumnBreak()`, `ColumnCalc()`, `ColumnNumber()`, `ColumnPad()`, `ColumnPos()`, `CurrentMember()`, `CurrentPage()`, `Debug()`, `Even()`, `EvenOdd()`, `First()`, `FirstLast()`, `HasPerm()`, `IsAjax()`, `JS_val()`, `Last()`, `Me()`, `Middle()`, `MiddleString()`, `Modulus()`, `MultipleOf()`, `Odd()`, `Pos()`, `RAW_val()`, `SQL_val()`, `ThemeDir()`, `ThemeName()`, `Top()`, `TotalItems()`, `XML_val()`, `__get()`, `__isset()`, `__set()`, `buildCastingCache()`, `cachedCall()`, `castingClass()`, `castingHelper()`, `castingHelperPair()`, `castingObjectCreator()`, `castingObjectCreatorPair()`, `customise()`, `defineMethods()`, `escapeTypeForField()`, `getField()`, `getIterator()`, `getSecurityID()`, `getXMLValues()`, `hasField()`, `hasValue()`, `i18nLocale()`, `iteratorProperties()`, `obj()`, `renderWith()`, `setCustomisedObj()`, `setField()`

### Methods inherited from Object

`__call()`, `__toString()`, `__wakeup()`, `addMethodsFrom()`, `addStaticVars()`, `addWrapperMethod()`, `add_extension()`, `add_static_var()`, `allMethodNames()`, `cacheToFile()`, `cacheToFileWithArgs()`, `clearCache()`, `combined_static()`, `create()`, `createMethod()`, `create_from_string()`, `exists()`, `extInstance()`, `extend()`, `getCustomClass()`, `getExtensionInstance()`, `getExtensionInstances()`, `get_extensions()`, `get_static()`, `hasExtension()`, `hasMethod()`, `has_extension()`, `invokeWithExtensions()`, `is_a()`, `loadCache()`, `parentClass()`, `parse_class_spec()`, `remove_extension()`, `sanitiseCachename()`, `saveCache()`, `set_stat()`, `set_static()`, `set_uninherited()`, `stat()`, `strong_create()`, `uninherited()`, `uninherited_static()`, `useCustomClass()`

### Magic methods summary

## Properties summary

`protected mixed` | $members | #
`protected mixed` | $hidePassword | #
`protected mixed` | $detailFormValidator | # Validator Validator
`protected mixed` | $group | #
`protected string` | $template | # Template for main rendering Template for main rendering
`public string` | $popupClass | # Classname for the popup form Classname for the popup form
`public string` | $itemClass | # Classname for each row/item Classname for each row/item
`public static string` | $data_class | #
`public static integer` | $page_size | # Set the page size for this table. Set the page size for this table.
`protected array` | $permissions | # Influence output without having to subclass the template. Influence output without having to subclass the template.

### Properties inherited from ComplexTableField

`$actions`, `$addTitle`, `$controller`, `$defaultAction`, `$detailFormFields`, `$parentClass`, `$parentIdName`, `$popupCaption`, `$popupHeight`, `$popupWidth`, `$relationAutoSetting`, `$requirementsForPopupCallback`, `$showPagination`, `$sourceItems`, `$sourceJoin`, `$templatePopup`, `$url_handlers`, `$viewAction`

### Properties inherited from TableListField

`$IsReadOnly`, `$Markable`, `$MarkableTitle`, `$__cachedQuery`, `$cachedSourceItems`, `$clickAction`, `$csvFieldEscape`, `$csvFieldFormatting`, `$csvHasHeader`, `$csvSeparator`, `$customCsvQuery`, `$customQuery`, `$customSourceItems`, `$disableSorting`, `$exportButtonLabel`, `$extraLinkParams`, `$fieldCasting`, `$fieldFormatting`, `$fieldList`, `$fieldListCsv`, `$groupByField`, `$highlightConditions`, `$methodName`, `$pageSize`, `$paginationBaseLink`, `$readOnly`, `$sourceClass`, `$sourceFilter`, `$sourceSort`, `$summaryFieldList`, `$summaryTitle`, `$totalCount`

### Properties inherited from FormField

`$autocomplete`, `$containerFieldSet`, `$customValidationMessage`, `$description`, `$disabled`, `$dontEscape`, `$extraAttributes`, `$extraClass`, `$extraClasses`, `$fieldHTML5`, `$fieldHolderTemplate`, `$form`, `$html5Attributes`, `$leftTitle`, `$message`, `$messageType`, `$name`, `$possible_autocomplete_values`, `$readonly`, `$rightTitle`, `$smallFieldHolderTemplate`, `$tabIndex`, `$title`, `$use_html5`, `$value`

### Properties inherited from RequestHandler

`$allowed_actions`, `$brokenOnConstruct`, `$request`

### Properties inherited from ViewableData

`$casting`, `$customisedObject`, `$default_cast`, `$failover`, `$iteratorPos`, `$iteratorTotalItems`

### Properties inherited from Object

`$class`, `$extension_instances`, `$extensions`

[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the Silverstripe Forums to ask development related questions. -