242 if (!isset($this->workspaceId)) {
243 $this->workspaceId = (int)
$GLOBALS[
'BE_USER']->workspace;
278 public function start($itemlist, $tablelist, $MMtable =
'', $MMuid = 0,
$currentTable =
'', $conf = array()) {
279 $conf = (array)$conf;
281 $this->MM_is_foreign = (boolean)$conf[
'MM_opposite_field'];
282 $this->MM_oppositeField = $conf[
'MM_opposite_field'];
283 $this->MM_table_where = $conf[
'MM_table_where'];
284 $this->MM_hasUidField = $conf[
'MM_hasUidField'];
285 $this->MM_match_fields = is_array($conf[
'MM_match_fields']) ? $conf[
'MM_match_fields'] : array();
286 $this->MM_insert_fields = is_array($conf[
'MM_insert_fields']) ? $conf[
'MM_insert_fields'] :
$this->MM_match_fields;
288 if (!empty($conf[
'MM_oppositeUsage']) && is_array($conf[
'MM_oppositeUsage'])) {
289 $this->MM_oppositeUsage = $conf[
'MM_oppositeUsage'];
291 if ($this->MM_is_foreign) {
292 $tmp = $conf[
'type'] ===
'group' ? $conf[
'allowed'] : $conf[
'foreign_table'];
297 $this->MM_oppositeTable = $tmp[0];
302 if ($this->MM_oppositeFieldConf[
'allowed']) {
303 $oppositeFieldConf_allowed = explode(
',', $this->MM_oppositeFieldConf[
'allowed']);
304 if (count($oppositeFieldConf_allowed) > 1 || $this->MM_oppositeFieldConf[
'allowed'] ===
'*') {
305 $this->MM_isMultiTableRelationship = $oppositeFieldConf_allowed[0];
311 if (trim($tablelist) ===
'*') {
312 $tablelist = implode(
',', array_keys(
$GLOBALS[
'TCA']));
316 foreach ($tempTableArray as $val) {
318 $this->tableArray[$tName] = array();
319 if ($this->checkIfDeleted &&
$GLOBALS[
'TCA'][$tName][
'ctrl'][
'delete']) {
320 $fieldN = $tName .
'.' .
$GLOBALS[
'TCA'][$tName][
'ctrl'][
'delete'];
321 $this->additionalWhere[$tName] .=
' AND ' . $fieldN .
'=0';
324 if (is_array($this->tableArray)) {
325 reset($this->tableArray);
332 $this->firstTable = key($this->tableArray);
333 next($this->tableArray);
336 $this->secondTable = key($this->tableArray);
341 $this->
readMM($MMtable, $MMuid);
348 } elseif ($MMuid && $conf[
'foreign_field']) {
355 if ($conf[
'foreign_default_sortby']) {
356 $this->
sortList($conf[
'foreign_default_sortby']);
369 public function __set($name, $value) {
370 if($name ===
'fromTC') {
372 '$fromTC is protected since TYPO3 6.1. Use setFetchAllFields() instead!' 384 $this->fetchAllFields = (boolean)$allFields;
419 public function readList($itemlist, array $configuration) {
420 if ((
string) trim($itemlist) !=
'') {
424 foreach ($tempItemArray as $key => $val) {
430 $parts = explode(
'_', $val, 2);
431 $theID = strrev($parts[0]);
436 $theTable = trim($parts[1])
437 ? strrev(trim($parts[1]))
440 if (((
string) $theID !=
'' && $theID) && $theTable && isset($this->tableArray[$theTable])) {
442 $theID = $this->secondTable ? abs((
int)$theID) : (int)$theID;
444 $this->itemArray[$key][
'id'] = $theID;
445 $this->itemArray[$key][
'table'] = $theTable;
446 $this->tableArray[$theTable][] = $theID;
453 if (!$isSet && $this->registerNonTableValues) {
454 $this->itemArray[$key][
'id'] = $tempItemArray[$key];
455 $this->itemArray[$key][
'table'] =
'_NO_TABLE';
456 $this->nonTableArray[] = $tempItemArray[$key];
461 if ($configuration[
'type'] !==
'inline' || empty($configuration[
'foreign_table']) || !empty($configuration[
'foreign_field'])
462 || !empty($configuration[
'MM']) || count($this->tableArray) !== 1 || empty($this->tableArray[$configuration[
'foreign_table']])
468 if ($this->useLiveReferenceIds) {
469 foreach ($this->itemArray as &$item) {
474 $this->itemArray = array();
475 $foreignTable = $configuration[
'foreign_table'];
476 $ids = $this->getResolver($foreignTable, $this->tableArray[$foreignTable])->get();
477 foreach ($ids as $id) {
478 $this->itemArray[] = array(
480 'table' => $foreignTable,
498 if ($sortby ==
'uid') {
502 return $a[
'id'] < $b[
'id'] ? -1 : 1;
505 } elseif (count($this->tableArray) == 1) {
506 reset($this->tableArray);
507 $table = key($this->tableArray);
508 $uidList = implode(
',', current($this->tableArray));
510 $this->itemArray = array();
511 $this->tableArray = array();
512 $res =
$GLOBALS[
'TYPO3_DB']->exec_SELECTquery(
'uid', $table,
'uid IN (' . $uidList .
')',
'', $sortby);
513 while ($row =
$GLOBALS[
'TYPO3_DB']->sql_fetch_assoc($res)) {
514 $this->itemArray[] = array(
'id' => $row[
'uid'],
'table' => $table);
515 $this->tableArray[$table][] = $row[
'uid'];
517 $GLOBALS[
'TYPO3_DB']->sql_free_result($res);
536 if ($this->MM_is_foreign) {
537 $uidLocal_field =
'uid_foreign';
538 $uidForeign_field =
'uid_local';
539 $sorting_field =
'sorting_foreign';
540 if ($this->MM_isMultiTableRelationship) {
544 if ($this->currentTable == $this->MM_isMultiTableRelationship) {
552 $uidLocal_field =
'uid_local';
553 $uidForeign_field =
'uid_foreign';
554 $sorting_field =
'sorting';
556 if ($this->MM_table_where) {
559 foreach ($this->MM_match_fields as $field => $value) {
564 $res =
$GLOBALS[
'TYPO3_DB']->exec_SELECTquery(
'*', $tableName, $where,
'', $sorting_field);
565 while ($row =
$GLOBALS[
'TYPO3_DB']->sql_fetch_assoc($res)) {
567 if (!$this->MM_is_foreign) {
571 if (($row[$uidForeign_field] || $theTable ==
'pages') && $theTable && isset($this->tableArray[$theTable])) {
572 $this->itemArray[$key][
'id'] = $row[$uidForeign_field];
573 $this->itemArray[$key][
'table'] = $theTable;
574 $this->tableArray[$theTable][] = $row[$uidForeign_field];
575 } elseif ($this->registerNonTableValues) {
576 $this->itemArray[$key][
'id'] = $row[$uidForeign_field];
577 $this->itemArray[$key][
'table'] =
'_NO_TABLE';
578 $this->nonTableArray[] = $row[$uidForeign_field];
582 $GLOBALS[
'TYPO3_DB']->sql_free_result($res);
594 public function writeMM($MM_tableName,
$uid, $prependTableName = FALSE) {
596 if ($this->MM_is_foreign) {
597 $uidLocal_field =
'uid_foreign';
598 $uidForeign_field =
'uid_local';
599 $sorting_field =
'sorting_foreign';
602 $uidLocal_field =
'uid_local';
603 $uidForeign_field =
'uid_foreign';
604 $sorting_field =
'sorting';
607 $tableC = count($this->tableArray);
610 $prep = $tableC > 1 || $prependTableName || $this->MM_isMultiTableRelationship ? 1 : 0;
612 $additionalWhere_tablenames =
'';
613 if ($this->MM_is_foreign && $prep) {
614 $additionalWhere_tablenames =
' AND tablenames=' .
$GLOBALS[
'TYPO3_DB']->fullQuoteStr($this->currentTable, $MM_tableName);
618 if ($this->MM_table_where) {
622 foreach ($this->MM_match_fields as $field => $value) {
625 $res =
$GLOBALS[
'TYPO3_DB']->exec_SELECTquery(
626 $uidForeign_field . ($prep ?
', tablenames' :
'') . ($this->MM_hasUidField ?
', uid' :
''),
637 $oldMMs_inclUid = array();
638 while ($row =
$GLOBALS[
'TYPO3_DB']->sql_fetch_assoc($res)) {
639 if (!$this->MM_is_foreign && $prep) {
640 $oldMMs[] = array($row[
'tablenames'], $row[$uidForeign_field]);
642 $oldMMs[] = $row[$uidForeign_field];
644 $oldMMs_inclUid[] = array($row[
'tablenames'], $row[$uidForeign_field], $row[
'uid']);
646 $GLOBALS[
'TYPO3_DB']->sql_free_result($res);
648 foreach ($this->itemArray as $val) {
650 if ($prep || $val[
'table'] ==
'_NO_TABLE') {
652 if ($this->MM_is_foreign) {
655 $tablename = $val[
'table'];
660 if (!$this->MM_is_foreign && $prep) {
661 $item = array($val[
'table'], $val[
'id']);
665 if (in_array($item, $oldMMs)) {
666 $oldMMs_index = array_search($item, $oldMMs);
670 $whereClause = $uidLocal_field .
'=' .
$uid .
' AND ' . $uidForeign_field .
'=' . $val[
'id']
671 . ($this->MM_hasUidField ?
' AND uid=' . (int)$oldMMs_inclUid[$oldMMs_index][2] :
'');
673 $whereClause .=
' AND tablenames=' .
$GLOBALS[
'TYPO3_DB']->fullQuoteStr($tablename, $MM_tableName);
675 $GLOBALS[
'TYPO3_DB']->exec_UPDATEquery($MM_tableName, $whereClause . $additionalWhere, array($sorting_field => $c));
678 unset($oldMMs[$oldMMs_index]);
681 unset($oldMMs_inclUid[$oldMMs_index]);
684 $insertFields[$uidLocal_field] =
$uid;
685 $insertFields[$uidForeign_field] = $val[
'id'];
686 $insertFields[$sorting_field] = $c;
688 $insertFields[
'tablenames'] = $tablename;
691 $GLOBALS[
'TYPO3_DB']->exec_INSERTquery($MM_tableName, $insertFields);
692 if ($this->MM_is_foreign) {
693 $this->updateRefIndex($val[
'table'], $val[
'id']);
698 if (is_array($oldMMs) && count($oldMMs) > 0) {
699 $removeClauses = array();
700 $updateRefIndex_records = array();
701 foreach ($oldMMs as $oldMM_key => $mmItem) {
703 if ($this->MM_hasUidField) {
704 $removeClauses[] =
'uid=' . (int)$oldMMs_inclUid[$oldMM_key][2];
706 if (is_array($mmItem)) {
707 $removeClauses[] =
'tablenames=' .
$GLOBALS[
'TYPO3_DB']->fullQuoteStr($mmItem[0], $MM_tableName)
708 .
' AND ' . $uidForeign_field .
'=' . $mmItem[1];
710 $removeClauses[] = $uidForeign_field .
'=' . $mmItem;
713 if ($this->MM_is_foreign) {
714 if (is_array($mmItem)) {
715 $updateRefIndex_records[] = array($mmItem[0], $mmItem[1]);
717 $updateRefIndex_records[] = array($this->firstTable, $mmItem);
721 $deleteAddWhere =
' AND (' . implode(
' OR ', $removeClauses) .
')';
722 $where = $uidLocal_field .
'=' . (int)
$uid . $deleteAddWhere . $additionalWhere_tablenames . $additionalWhere;
723 $GLOBALS[
'TYPO3_DB']->exec_DELETEquery($MM_tableName, $where);
725 foreach ($updateRefIndex_records as $pair) {
726 $this->updateRefIndex($pair[0], $pair[1]);
732 $this->updateRefIndex($this->currentTable,
$uid);
747 public function remapMM($MM_tableName,
$uid, $newUid, $prependTableName = FALSE) {
749 if ($this->MM_is_foreign) {
750 $uidLocal_field =
'uid_foreign';
753 $uidLocal_field =
'uid_local';
756 $tableC = count($this->tableArray);
760 $additionalWhere_tablenames =
'';
761 if ($this->MM_is_foreign && $prep) {
762 $additionalWhere_tablenames =
' AND tablenames=' .
$GLOBALS[
'TYPO3_DB']->fullQuoteStr($this->currentTable, $MM_tableName);
766 if ($this->MM_table_where) {
770 foreach ($this->MM_match_fields as $field => $value) {
774 $GLOBALS[
'TYPO3_DB']->exec_UPDATEquery($MM_tableName, $where, array($uidLocal_field => $newUid));
788 if ($this->useLiveParentIds) {
794 $foreign_table = $conf[
'foreign_table'];
795 $foreign_table_field = $conf[
'foreign_table_field'];
797 $foreign_match_fields = is_array($conf[
'foreign_match_fields']) ? $conf[
'foreign_match_fields'] : array();
799 if ($conf[
'symmetric_field']) {
800 $whereClause =
'(' . $conf[
'foreign_field'] .
'=' .
$uid .
' OR ' . $conf[
'symmetric_field'] .
'=' .
$uid .
')';
802 $whereClause = $conf[
'foreign_field'] .
'=' .
$uid;
805 if ($useDeleteClause) {
810 if ($foreign_table_field && $this->currentTable) {
811 $whereClause .=
' AND ' . $foreign_table_field .
'=' .
$GLOBALS[
'TYPO3_DB']->fullQuoteStr($this->currentTable, $foreign_table);
814 foreach ($foreign_match_fields as $field => $value) {
815 $whereClause .=
' AND ' . $field .
'=' .
$GLOBALS[
'TYPO3_DB']->fullQuoteStr($value, $foreign_table);
820 $whereClause .=
' AND ' . $foreign_table .
'.t3ver_wsid IN (' . $workspaceList .
') AND ' . $foreign_table .
'.pid<>-1';
825 if ($conf[
'foreign_sortby']) {
826 if ($conf[
'symmetric_sortby'] && $conf[
'symmetric_field']) {
830 WHEN ' . $conf[
'foreign_field'] .
'=' .
$uid .
' 831 THEN ' . $conf[
'foreign_sortby'] .
' 832 ELSE ' . $conf[
'symmetric_sortby'] .
' 836 $sortby = $conf[
'foreign_sortby'];
838 } elseif ($conf[
'foreign_default_sortby']) {
840 $sortby = $conf[
'foreign_default_sortby'];
841 } elseif (
$GLOBALS[
'TCA'][$foreign_table][
'ctrl'][
'sortby']) {
843 $sortby =
$GLOBALS[
'TCA'][$foreign_table][
'ctrl'][
'sortby'];
844 } elseif (
$GLOBALS[
'TCA'][$foreign_table][
'ctrl'][
'default_sortby']) {
846 $sortby =
$GLOBALS[
'TCA'][$foreign_table][
'ctrl'][
'default_sortby'];
849 $sortby =
$GLOBALS[
'TYPO3_DB']->stripOrderBy($sortby);
851 $rows =
$GLOBALS[
'TYPO3_DB']->exec_SELECTgetRows(
'uid', $foreign_table, $whereClause,
'', $sortby,
'',
'uid');
853 $ids = $this->getResolver($foreign_table, array_keys($rows), $sortby)->get();
854 foreach ($ids as $id) {
855 $this->itemArray[$key][
'id'] = $id;
856 $this->itemArray[$key][
'table'] = $foreign_table;
857 $this->tableArray[$foreign_table][] = $id;
874 if ($this->useLiveParentIds) {
876 if (!empty($updateToUid)) {
882 $foreign_table = $conf[
'foreign_table'];
883 $foreign_field = $conf[
'foreign_field'];
884 $symmetric_field = $conf[
'symmetric_field'];
885 $foreign_table_field = $conf[
'foreign_table_field'];
886 $foreign_match_fields = is_array($conf[
'foreign_match_fields']) ? $conf[
'foreign_match_fields'] : array();
894 $fields =
'uid,pid,' . $foreign_field;
896 if ($symmetric_field) {
897 $fields .=
',' . $symmetric_field;
900 if ($considerWorkspaces) {
901 $fields .=
',t3ver_wsid,t3ver_state,t3ver_oid';
904 foreach ($this->itemArray as $val) {
906 $table = $val[
'table'];
909 if ($symmetric_field || $considerWorkspaces) {
910 $row = BackendUtility::getRecord($table,
$uid, $fields,
'', TRUE);
915 $isOnSymmetricSide = FALSE;
916 if ($symmetric_field) {
917 $isOnSymmetricSide = self::isOnSymmetricSide($parentUid, $conf, $row);
919 $updateValues = $foreign_match_fields;
924 if ($isOnSymmetricSide) {
925 $updateValues[$symmetric_field] = $parentUid;
927 $updateValues[$foreign_field] = $parentUid;
930 if ($foreign_table_field && $this->currentTable) {
938 if ($conf[
'foreign_sortby']) {
939 $sortby = $conf[
'foreign_sortby'];
940 } elseif (
$GLOBALS[
'TCA'][$foreign_table][
'ctrl'][
'sortby']) {
942 $sortby =
$GLOBALS[
'TCA'][$foreign_table][
'ctrl'][
'sortby'];
946 if ($isOnSymmetricSide && isset($conf[
'symmetric_sortby']) && $conf[
'symmetric_sortby']) {
947 $sortby = $conf[
'symmetric_sortby'];
949 $sortby =
$GLOBALS[
'TYPO3_DB']->stripOrderBy($sortby);
952 $updateValues[$sortby] = ++$c;
956 if ($isOnSymmetricSide) {
957 $updateValues[$symmetric_field] = $updateToUid;
959 $updateValues[$foreign_field] = $updateToUid;
963 if (count($updateValues)) {
964 $GLOBALS[
'TYPO3_DB']->exec_UPDATEquery($table,
'uid=' . (
int)
$uid, $updateValues);
965 $this->updateRefIndex($table, $uid);
968 if ($considerWorkspaces) {
971 $GLOBALS[
'TYPO3_DB']->exec_UPDATEquery($table,
'uid=' . (
int)$row[
't3ver_oid'], $updateValues);
987 $valueArray = array();
988 $tableC = count($this->tableArray);
992 $prep = $tableC > 1 || $prependTableName;
994 foreach ($this->itemArray as $val) {
995 $valueArray[] = ($prep && $val[
'table'] !=
'_NO_TABLE' ? $val[
'table'] .
'_' :
'') . $val[
'id'];
1012 if (is_array($valueArray) && $fTable) {
1013 foreach ($valueArray as $key => $val) {
1014 $val = strrev($val);
1015 $parts = explode(
'_', $val, 2);
1016 $theID = strrev($parts[0]);
1017 $theTable = strrev($parts[1]);
1019 && (!$theTable || $theTable === (
string)$fTable || $theTable === (
string)$nfTable)
1021 $valueArray[$key] = $theTable && $theTable !== (string)$fTable ? $theID * -1 : $theID;
1039 foreach ($this->tableArray as $key => $val) {
1040 if (is_array($val)) {
1041 $itemList = implode(
',', $val);
1043 if ($this->fetchAllFields) {
1047 if (
$GLOBALS[
'TCA'][$key][
'ctrl'][
'label']) {
1049 $from .=
',' .
$GLOBALS[
'TCA'][$key][
'ctrl'][
'label'];
1051 if (
$GLOBALS[
'TCA'][$key][
'ctrl'][
'label_alt']) {
1053 $from .=
',' .
$GLOBALS[
'TCA'][$key][
'ctrl'][
'label_alt'];
1055 if (
$GLOBALS[
'TCA'][$key][
'ctrl'][
'thumbnail']) {
1057 $from .=
',' .
$GLOBALS[
'TCA'][$key][
'ctrl'][
'thumbnail'];
1060 $res =
$GLOBALS[
'TYPO3_DB']->exec_SELECTquery($from, $key,
'uid IN (' . $itemList .
')' . $this->additionalWhere[$key]);
1061 while ($row =
$GLOBALS[
'TYPO3_DB']->sql_fetch_assoc($res)) {
1062 $this->results[$key][$row[
'uid']] = $row;
1064 $GLOBALS[
'TYPO3_DB']->sql_free_result($res);
1078 if (!is_array($this->itemArray)) {
1082 $titleLen = (int)
$GLOBALS[
'BE_USER']->uc[
'titleLen'];
1083 foreach ($this->itemArray as $val) {
1084 $theRow = $this->results[$val[
'table']][$val[
'id']];
1085 if ($theRow && is_array(
$GLOBALS[
'TCA'][$val[
'table']])) {
1088 $label = $label ? $label :
'[...]';
1089 $output[] = str_replace(
',',
'', $val[
'table'] .
'_' . $val[
'id'] .
'|' . rawurlencode($label));
1092 return implode(
',', $output);
1103 $count = count($this->itemArray);
1104 if ($returnAsArray) {
1105 $count = array($count);
1120 public function updateRefIndex($table, $id) {
1121 $statisticsArray = array();
1122 if ($this->updateReferenceIndex) {
1128 $statisticsArray = $refIndexObj->updateRefIndexTable($table, $id);
1130 return $statisticsArray;
1146 $purgeCallback =
'purgeVersionedIds';
1149 $purgeCallback =
'purgeLiveVersionedIds';
1153 $this->purged = ($this->purged || $itemArrayHasBeenPurged);
1154 return $itemArrayHasBeenPurged;
1163 if (!$this->useLiveReferenceIds || $this->
getWorkspaceId() === 0) {
1177 $itemArrayHasBeenPurged = FALSE;
1179 foreach ($this->tableArray as $itemTableName => $itemIds) {
1184 $purgedItemIds = call_user_func(array($this, $purgeCallback), $itemTableName, $itemIds);
1185 $removedItemIds = array_diff($itemIds, $purgedItemIds);
1186 foreach ($removedItemIds as $removedItemId) {
1189 $this->tableArray[$itemTableName] = $purgedItemIds;
1190 if (count($removedItemIds)) {
1191 $itemArrayHasBeenPurged = TRUE;
1195 return $itemArrayHasBeenPurged;
1207 $ids = array_combine($ids, $ids);
1210 'uid,t3ver_oid,t3ver_state',
1212 'pid=-1 AND t3ver_oid IN (' . implode(
',', $ids) .
') AND t3ver_wsid<>0',
1217 if (!empty($versions)) {
1218 foreach ($versions as $version) {
1219 $versionId = $version[
'uid'];
1220 if (isset($ids[$versionId])) {
1221 unset($ids[$versionId]);
1226 return array_values($ids);
1238 $ids = array_combine($ids, $ids);
1241 'uid,t3ver_oid,t3ver_state',
1243 'pid=-1 AND t3ver_oid IN (' . implode(
',', $ids) .
') AND t3ver_wsid<>0',
1248 if (!empty($versions)) {
1249 foreach ($versions as $version) {
1250 $versionId = $version[
'uid'];
1251 $liveId = $version[
't3ver_oid'];
1252 if (isset($ids[$liveId]) && isset($ids[$versionId])) {
1253 unset($ids[$liveId]);
1258 return array_values($ids);
1270 $ids = array_combine($ids, $ids);
1273 'uid,t3ver_oid,t3ver_state',
1275 'pid=-1 AND t3ver_oid IN (' . implode(
',', $ids) .
') AND t3ver_wsid=' . $this->
getWorkspaceId() .
1279 if (!empty($versions)) {
1280 foreach ($versions as $version) {
1281 $liveId = $version[
't3ver_oid'];
1282 if (isset($ids[$liveId])) {
1283 unset($ids[$liveId]);
1288 return array_values($ids);
1292 foreach ($this->itemArray as $index => $item) {
1293 if ($item[
'table'] === $tableName && (
string)$item[
'id'] === (
string)$id) {
1294 unset($this->itemArray[$index]);
1312 && $parentConf[
'symmetric_field']
1313 && $parentUid == $childRec[$parentConf[
'symmetric_field']];
1325 if (empty($this->MM_oppositeUsage[$tableName]) || count($this->MM_oppositeUsage[$tableName]) > 1) {
1326 return $referenceValues;
1329 $fieldName = $this->MM_oppositeUsage[$tableName][0];
1330 if (empty(
$GLOBALS[
'TCA'][$tableName][
'columns'][$fieldName][
'config'])) {
1331 return $referenceValues;
1334 $configuration =
$GLOBALS[
'TCA'][$tableName][
'columns'][$fieldName][
'config'];
1335 if (!empty($configuration[
'MM_insert_fields'])) {
1336 $referenceValues = array_merge($configuration[
'MM_insert_fields'], $referenceValues);
1337 } elseif (!empty($configuration[
'MM_match_fields'])) {
1338 $referenceValues = array_merge($configuration[
'MM_match_fields'], $referenceValues);
1341 return $referenceValues;
1354 if ($liveDefaultId === NULL) {
1355 $liveDefaultId = $id;
1357 return (
int)$liveDefaultId;
1366 protected function getResolver($tableName, array $ids, $sortingStatement = NULL) {
1369 'TYPO3\\CMS\\Core\\DataHandling\\PlainDataResolver',
1375 $resolver->setKeepDeletePlaceholder(TRUE);
1376 $resolver->setKeepLiveIds($this->useLiveReferenceIds);
getValueArray($prependTableName=FALSE)
writeMM($MM_tableName, $uid, $prependTableName=FALSE)
completeOppositeUsageValues($tableName, array $referenceValues)
writeForeignField($conf, $parentUid, $updateToUid=0, $skipSorting=FALSE)
static isTableWorkspaceEnabled($table)
readForeignField($uid, $conf)
processDeletePlaceholder()
static canBeInterpretedAsInteger($var)
purgeItemArrayHandler($purgeCallback)
setUpdateReferenceIndex($updateReferenceIndex)
static makeInstance($className)
static trimExplode($delim, $string, $removeEmptyValues=FALSE, $limit=0)
setUseLiveParentIds($useLiveParentIds)
static getRecordTitle($table, $row, $prep=FALSE, $forceResult=TRUE)
static getLiveVersionIdOfRecord($table, $uid)
getLiveDefaultId($tableName, $id)
static deprecationLog($msg)
setWorkspaceId($workspaceId)
static isOnSymmetricSide($parentUid, $parentConf, $childRec)
purgeVersionedIds($tableName, array $ids)
readList($itemlist, array $configuration)
purgeLiveVersionedIds($tableName, array $ids)
setUseLiveReferenceIds($useLiveReferenceIds)
purgeItemArray($workspaceId=NULL)
remapMM($MM_tableName, $uid, $newUid, $prependTableName=FALSE)
convertPosNeg($valueArray, $fTable, $nfTable)
removeFromItemArray($tableName, $id)
purgeDeletePlaceholder($tableName, array $ids)
static fixed_lgd_cs($string, $chars, $appendString='...')
setFetchAllFields($allFields)
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]
start($itemlist, $tablelist, $MMtable='', $MMuid=0, $currentTable='', $conf=array())
const NEW_PLACEHOLDER_VERSION
$MM_isMultiTableRelationship
static deleteClause($table, $tableAlias='')
countItems($returnAsArray=TRUE)