34 static public function getDataProvider(array $tcaConfiguration, $table, $field, $currentValue) {
37 if (!isset($tcaConfiguration[
'treeConfig']) | !is_array($tcaConfiguration[
'treeConfig'])) {
38 throw new \InvalidArgumentException(
'TCA Tree configuration is invalid: "treeConfig" array is missing', 1288215890);
41 if (!empty($tcaConfiguration[
'treeConfig'][
'dataProvider'])) {
44 if (!isset($tcaConfiguration[
'internal_type'])) {
45 $tcaConfiguration[
'internal_type'] =
'db';
47 if ($tcaConfiguration[
'internal_type'] ===
'db') {
48 $unselectableUids = array();
49 if ($dataProvider === NULL) {
52 if (isset($tcaConfiguration[
'foreign_table'])) {
53 $tableName = $tcaConfiguration[
'foreign_table'];
54 $dataProvider->setTableName($tableName);
55 if ($tableName == $table) {
56 $unselectableUids[] = $currentValue[
'uid'];
59 throw new \InvalidArgumentException(
'TCA Tree configuration is invalid: "foreign_table" not set', 1288215888);
61 if (isset($tcaConfiguration[
'foreign_label'])) {
62 $dataProvider->setLabelField($tcaConfiguration[
'foreign_label']);
64 $dataProvider->setLabelField(
$GLOBALS[
'TCA'][$tableName][
'ctrl'][
'label']);
66 $dataProvider->setTreeId(md5($table .
'|' . $field));
67 $dataProvider->setSelectedList($currentValue);
69 $treeConfiguration = $tcaConfiguration[
'treeConfig'];
70 if (isset($treeConfiguration[
'rootUid'])) {
71 $dataProvider->setRootUid((
int)$treeConfiguration[
'rootUid']);
73 if (isset($treeConfiguration[
'appearance'][
'expandAll'])) {
74 $dataProvider->setExpandAll((
bool) $treeConfiguration[
'appearance'][
'expandAll']);
76 if (isset($treeConfiguration[
'appearance'][
'maxLevels'])) {
77 $dataProvider->setLevelMaximum((
int)$treeConfiguration[
'appearance'][
'maxLevels']);
79 if (isset($treeConfiguration[
'appearance'][
'nonSelectableLevels'])) {
80 $dataProvider->setNonSelectableLevelList($treeConfiguration[
'appearance'][
'nonSelectableLevels']);
81 } elseif (isset($treeConfiguration[
'rootUid'])) {
82 $dataProvider->setNonSelectableLevelList(
'');
84 if (isset($treeConfiguration[
'childrenField'])) {
86 $dataProvider->setLookupField($treeConfiguration[
'childrenField']);
87 } elseif (isset($treeConfiguration[
'parentField'])) {
89 $dataProvider->setLookupField($treeConfiguration[
'parentField']);
91 throw new \InvalidArgumentException(
'TCA Tree configuration is invalid: neither "childrenField" nor "parentField" is set', 1288215889);
93 $dataProvider->setItemUnselectableList($unselectableUids);
95 } elseif ($tcaConfiguration[
'internal_type'] ===
'file' && $dataProvider === NULL) {
97 throw new \InvalidArgumentException(
'TCA Tree configuration is invalid: tree for "internal_type=file" not implemented yet', 1288215891);
98 } elseif ($dataProvider === NULL) {
99 throw new \InvalidArgumentException(
'TCA Tree configuration is invalid: tree for "internal_type=' . $tcaConfiguration[
'internal_type'] .
'" not implemented yet', 1288215892);
101 return $dataProvider;
static makeInstance($className)
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]