2 namespace TYPO3\CMS\Workspaces\ExtDirect;
29 private $pathToLocallang =
'LLL:EXT:workspaces/Resources/Private/Language/locallang.xlf';
41 $massActionsEnabled =
$GLOBALS[
'BE_USER']->getTSConfigVal(
'options.workspaces.enableMassActions') !==
'0';
44 $publishAccess =
$GLOBALS[
'BE_USER']->workspacePublishAccess($currentWorkspace);
45 if ($publishAccess && !(
$GLOBALS[
'BE_USER']->workspaceRec[
'publish_access'] & 1)) {
46 $actions[] = array(
'action' =>
'publish',
'title' =>
$GLOBALS[
'LANG']->sL($this->pathToLocallang .
':label_doaction_publish'));
47 if (
$GLOBALS[
'BE_USER']->workspaceSwapAccess()) {
48 $actions[] = array(
'action' =>
'swap',
'title' =>
$GLOBALS[
'LANG']->sL($this->pathToLocallang .
':label_doaction_swap'));
52 $actions[] = array(
'action' =>
'discard',
'title' =>
$GLOBALS[
'LANG']->sL($this->pathToLocallang .
':label_doaction_discard'));
56 'total' => count($actions),
77 if ($parameters->init) {
80 $result[
'total'] = $cnt;
83 $result[
'total'] =
$GLOBALS[
'BE_USER']->getSessionData(
'workspaceMassAction_total');
85 }
catch (\Exception $e) {
86 $result[
'error'] = $e->getMessage();
106 if ($parameters->init) {
109 $result[
'total'] = $cnt;
112 $result[
'total'] =
$GLOBALS[
'BE_USER']->getSessionData(
'workspaceMassAction_total');
114 }
catch (\Exception $e) {
115 $result[
'error'] = $e->getMessage();
131 $publishData = $this->
getWorkspaceService()->getCmdArrayForPublishWS($workspace, $swap, 0, $language);
133 foreach ($publishData as $table => $recs) {
134 $recordCount += count($recs);
136 if ($recordCount > 0) {
137 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction', $publishData);
138 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction_total', $recordCount);
139 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction_processed', 0);
154 $flushData = $this->
getWorkspaceService()->getCmdArrayForFlushWS($workspace,
true, 0, $language);
156 foreach ($flushData as $table => $recs) {
157 $recordCount += count($recs);
159 if ($recordCount > 0) {
160 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction', $flushData);
161 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction_total', $recordCount);
162 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction_processed', 0);
173 protected function processData($workspace)
175 $processData =
$GLOBALS[
'BE_USER']->getSessionData(
'workspaceMassAction');
176 $recordsProcessed =
$GLOBALS[
'BE_USER']->getSessionData(
'workspaceMassAction_processed');
177 $limitedCmd = array();
179 foreach ($processData as $table => $recs) {
180 foreach ($recs as $key => $value) {
182 $limitedCmd[$table][$key] = $value;
183 if ($numRecs == self::MAX_RECORDS_TO_PROCESS) {
187 if ($numRecs == self::MAX_RECORDS_TO_PROCESS) {
193 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction', null);
194 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction_total', 0);
197 $tce = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class);
198 $tce->stripslashes_values = 0;
200 $tce->start(array(), $limitedCmd);
201 $tce->process_cmdmap();
202 $errors = $tce->errorLog;
203 if (!empty($errors)) {
204 throw new \Exception(implode(
', ', $errors));
207 foreach ($limitedCmd as $table => $recs) {
208 foreach ($recs as $key => $value) {
210 unset($processData[$table][$key]);
213 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction', $processData);
214 $GLOBALS[
'BE_USER']->setAndSaveSessionData(
'workspaceMassAction_processed', $recordsProcessed);
216 return $recordsProcessed;