Bug #15452 » 0002314_v2.patch
t3lib/class.t3lib_tcemain.php (working copy) | ||
---|---|---|
$newVersion_placeholderFieldArray['t3ver_wsid'] = $this->BE_USER->workspace; // Setting workspace - only so display of place holders can filter out those from other workspaces.
|
||
$newVersion_placeholderFieldArray[$TCA[$table]['ctrl']['label']] = '[MOVE-TO PLACEHOLDER for #'.$uid.', WS#'.$this->BE_USER->workspace.']';
|
||
// moving localized records requires to "localize" the placeholder too
|
||
if( array_key_exists('languageField', $GLOBALS['TCA'][$table]['ctrl']) && array_key_exists('transOrigPointerField', $GLOBALS['TCA'][$table]['ctrl']) ) {
|
||
$l10nParentRec = t3lib_BEfunc::getRecord($table,$uid);
|
||
$newVersion_placeholderFieldArray[ $GLOBALS['TCA'][$table]['ctrl']['languageField'] ] = $l10nParentRec[ $GLOBALS['TCA'][$table]['ctrl']['languageField'] ];
|
||
$newVersion_placeholderFieldArray[ $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] ] = $l10nParentRec[ $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] ];
|
||
unset($l10nParentRec);
|
||
}
|
||
$newVersion_placeholderFieldArray['pid'] = 0; // Initially, create at root level.
|
||
$id = 'NEW_MOVE_PLH';
|
||
$this->insertDB($table,$id,$newVersion_placeholderFieldArray,FALSE); // Saving placeholder as 'original'
|
||
... | ... | |
$updateFields['t3ver_state'] = 4; // Setting placeholder state value for version (so it can know it is currently a new version...)
|
||
$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, 'uid='.intval($wsUid), $updateFields);
|
||
}
|
||
//check for the localizations of that element and move them as well
|
||
$this->moveL10nOverlayRecords($table,$uid,$destPid);
|
||
}
|
||
/**
|
||
... | ... | |
$this->moveRecord_procFields($table,$uid,$destPid);
|
||
// Create query for update:
|
||
$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, 'uid='.intval($uid), $updateFields);
|
||
// check for the localizations of that element
|
||
$this->moveL10nOverlayRecords($table,$uid,$destPid);
|
||
// Call post processing hooks:
|
||
foreach($hookObjectsArr as $hookObj) {
|
||
... | ... | |
$this->moveRecord_procFields($table,$uid,$destPid);
|
||
// Create query for update:
|
||
$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, 'uid='.intval($uid), $updateFields);
|
||
// check for the localizations of that element
|
||
$this->moveL10nOverlayRecords($table,$uid,$destPid);
|
||
// Call post processing hooks:
|
||
foreach($hookObjectsArr as $hookObj) {
|
||
... | ... | |
}
|
||
/**
|
||
* Find l10n-overlay records and perform the requested move action for these records.
|
||
*
|
||
* @param string $table: Record Table
|
||
* @param string $uid: Record UID
|
||
* @param string $destPid: Position to move to
|
||
* @return void
|
||
*/
|
||
function moveL10nOverlayRecords($table,$uid,$destPid) {
|
||
//there's no need to perform this for table-records
|
||
if( $table == 'pages' ) return;
|
||
t3lib_div::loadTCA( $table );
|
||
$l10nRecords = t3lib_BEfunc::getRecordsByField( $table, $GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'], $uid );
|
||
if( is_array($l10nRecords) ) {
|
||
foreach( $l10nRecords as $record ) {
|
||
$this->moveRecord( $table, $record['uid'], $destPid );
|
||
}
|
||
}
|
||
}
|
||
/**
|
||
* Localizes a record to another system language
|
||
* In reality it only works if transOrigPointerTable is not set. For "pages" the implementation is hardcoded
|
||
*
|
||
... | ... | |
if ($TCA[$table]['ctrl']['sortby']) {
|
||
$keepFields[] = $TCA[$table]['ctrl']['sortby'];
|
||
}
|
||
// l10n-fields must be kept otherwise the localization will be lost during the publishing
|
||
if ( $TCA[$table]['ctrl']['transOrigPointerField'] ) {
|
||
$keepFields[] = $TCA[$table]['ctrl']['transOrigPointerField'];
|
||
}
|
||
// Swap "keepfields"
|
||
foreach($keepFields as $fN) {
|