/**
  * action approveAction
  *
  * @return void
  */
 public function approveAction($uid)
 {
     if (!($entry = $this->entryRepository->findByUid($uid))) {
         return $this->anyHelper->addFlashMessage('Kein Eintrag gefunden', 'Wurde der Link evt. schon mal geklickt?', 'ERROR');
     }
     $gpVars = $this->_GP;
     $type = $entry->getExt();
     $settings = $this->settings[$type];
     $extName = $settings['extension'];
     $tmplPath = $settings['templatePath'];
     $data = json_decode($entry->getData(), true);
     if (!\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded($extName)) {
         return $this->anyHelper->addFlashMessage('Extension ' . $extName . ' nicht geladen', 'Der Datensatz konnte keiner Extension zugeordnet werden', 'ERROR');
     }
     // Variablen mit eigenem Mapper mappen, falls vorhanden. Sonst Default-Mapper nehmen
     $mapperName = '\\Nng\\Nnfesubmit\\Mapper\\' . \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($extName) . 'Mapper';
     if (class_exists($mapperName)) {
         $mapper = $this->objectManager->create($mapperName);
         $obj = $mapper->map($data, $settings);
     } else {
         $mapper = $this->objectManager->create('\\Nng\\Nnfesubmit\\Mapper\\AbstractMapper');
         $obj = $mapper->map($data, $settings);
     }
     // War es ein bestehender Eintrag? Dann enthält $srcUid jetzt die ursprüngliche UID der fremden Tabelle
     $srcUid = $entry->getSrcuid();
     $insertData = array();
     //*
     // ... und ab in die Datenbank damit
     if ($obj) {
         if ($insertData = $mapper->write($obj, $settings, $srcUid)) {
             $this->entryRepository->remove($entry);
             $mapper->map_mm($obj, $settings);
             $this->persistenceManager->persistAll();
         } else {
             return $this->anyHelper->addFlashMessage('Fehler beim Schreiben', 'Der Datensatz konnte nicht in die Datenbank geschrieben werden.', 'ERROR');
         }
     }
     //*/
     // Seiten-Cache löschen für angegebene Seiten
     if ($pidList = $this->anyHelper->trimExplode(',', $settings['clearCachePid'])) {
         $TCE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('\\TYPO3\\CMS\\Core\\DataHandling\\DataHandler');
         $TCE->admin = 1;
         // Brutal, aber nicht anders lösbar
         $TCE->clear_cacheCmd('all');
         // Das ging leider nicht:
         foreach ($pidList as $pid) {
             $TCE->clear_cacheCmd($pid);
         }
     }
     $mapperVars = $this->insertViewVariablesFromMapper($extName, $data);
     // Nachricht an Admin über erfolgreichen Eintrag?
     // E-Mail an Admin zur Freigabe senden
     $notificationType = $srcUid ? 'feedit' : 'upload';
     if ($settings['notification'] && $settings['notification'][$notificationType]['enabled'] !== '0') {
         // Daten des Ersteller (fe_user) laden, damit in der Mail der Name eingefügt werden kann
         $feUser = $this->feUserRepository->findOneByUid($data['_feUserUid']);
         // Link zum Löschen des Eintrags
         $adminKey = $this->anyHelper->createKeyForUid($insertData['uid'], 'admin');
         $deleteLinkParams = $this->getFeDeleteLinkParams(array_merge($data, $insertData, array('type' => $type, 'adminKey' => $adminKey)));
         $editLinkParams = $this->getEditLinkParams(array_merge($data, $insertData, array('type' => $type, 'adminKey' => $adminKey)));
         $data = array_merge_recursive($data, $mapperVars, array('feUser' => $feUser, 'baseUrl' => $GLOBALS['TSFE']->baseUrl, 'settings' => $settings, 'deleteLinkParams' => $deleteLinkParams, 'editLinkParams' => $editLinkParams));
         $html = $this->anyHelper->renderTemplate($tmplPath . 'EmailNotification' . ucfirst($notificationType) . '.html', $data, true, null, false);
         $this->anyHelper->send_email(array_merge($settings['notification'][$notificationType], array('html' => $html)));
     }
     if ($srcUid) {
         $this->anyHelper->addFlashMessage('Eintrag geändert', 'Ihre Änderungen wurden gespeichert.');
     } else {
         $this->anyHelper->addFlashMessage('Eintrag übernommen', 'Die Daten wurden erfolgreich in die Datenbank eingetragen.');
     }
     if ($settings['approvedPid']) {
         $this->anyHelper->httpRedirect($settings['approvedPid']);
     } else {
         if ($settings['showApprovedPage'] !== '0') {
             // Weiterleitung auf "Beitrag freigeschaltet"-Seite
             $this->anyHelper->redirect('approved', null, null, $this->GP_baseVars(array('type' => $type)));
         } else {
             if ($gpVars['returnUrl']) {
                 // Weiterleiten auf ursprüngliche Seite, in die Beitrag eingefügt wird oder Formular ausgefüllt wurde
                 $this->anyHelper->httpRedirect($gpVars['returnUrl']);
             } else {
                 if ($data['returnUrl']) {
                     $this->anyHelper->httpRedirect($data['returnUrl']);
                 } else {
                     // Weiß nicht, wohin. Also hier bleiben.
                     $this->anyHelper->httpRedirect();
                 }
             }
         }
     }
 }