From oliver.hader at typo3.org Tue Nov 1 13:03:28 2016 From: oliver.hader at typo3.org (Oliver Hader) Date: Tue, 1 Nov 2016 13:03:28 +0100 Subject: [TYPO3-dev] [TYPO3-core] Announcing TYPO3 CMS 6.2.28 LTS and 7.6.12 LTS Message-ID: Dear TYPO3 World, the TYPO3 Community has just released TYPO3 CMS versions 6.2.28 LTS and 7.6.12 LTS which are now ready for you to download. All versions are maintenance releases and contain bug fixes only. The packages can be downloaded here: https://typo3.org/download/ For details about the releases, please see: https://typo3.org/news/article/typo3-cms-6228-and-7612-released/ MD5 checksums: 86dad15f9d617d4f7f29b1e74aeaf526 typo3_src-6.2.28.tar.gz ec9a5aebc132e355ac564118ee991351 typo3_src-6.2.28.zip 69e1e975b5257619a913893fb6222dc2 typo3_src-7.6.12.tar.gz 00f4802cb32ae02f4a9c90efcace41d8 typo3_src-7.6.12.zip SHA256 checksums: e7f479bfbd9498ce0c5465656f99bccb0487a2dc7fb37855a0702e630c5a5c0f typo3_src-7.6.12.tar.gz 09bd768487f893b1b8910bf695b14e31ec0649aef5d055a4346ad5cd00deb3dc typo3_src-7.6.12.zip 5063c586b292a057db539fe32022119f2ec42d234c51ad3018826d78a45d91ed typo3_src-6.2.28.tar.gz d47d77a4700306c07dee9a7a85be156694d41f3fbe8ef6443a61fd99fa138dfc typo3_src-6.2.28.zip Further details on the signing and hashing process of TYPO3 releases: https://typo3.org/download/signed-packages/ Best regards Oliver -- Oliver Hader TYPO3 .... inspiring people to share! Get involved: http://typo3.org From info at andreas-haubold.de Sun Nov 6 12:11:40 2016 From: info at andreas-haubold.de (Andreas Haubold) Date: Sun, 06 Nov 2016 12:11:40 +0100 Subject: [TYPO3-dev] =?utf-8?q?Howto_define_processedFiles_folder_for_each?= =?utf-8?q?_feuser_within_extension?= References: Message-ID: Hello Frans, thank you very much for your answer and the great extension! Please excuse my late reply also. What you're writing makes absolutely sense to me and fal_securedownload is working very well for the intended purpose. I just created a BeforeFileDumpSlot (as descriped in the docs) and connected it to the according hook in fal_securedownload. In the slot the check is done if the user belongs to the account or not. If not he currently gets an echo 'You are not allowed to access this file.'; exit; Well, maybe you have another tip for me what is the best way to redirect the user to a redirect url through the slot. Although the BeechIt\FalSecuredownload\Hooks\FileDumpHook is given to the slot the redirectToUrl() method can't be accessed as it is protected. Thanks alot Andreas Quote: Frans Saris (minifranske) wrote on Sat, 10 September 2016 11:46 ---------------------------------------------------- > Hi Andreas, > > The core makes sure all processed files are deleted when the original file > is deleted (if you use the api or BE filelist to remove the file). > > To protect the uploaded files I can recommend to use ext:fal_securedownload > that will provide the necessary checks or can be used as an example how to > implement the permission check/handling. > > Groet Frans From florian.typo3 at oktopuce.fr Mon Nov 7 11:43:23 2016 From: florian.typo3 at oktopuce.fr (Florian Rival) Date: Mon, 07 Nov 2016 11:43:23 +0100 Subject: [TYPO3-dev] =?utf-8?q?_Re=3A_Howto_define_processedFiles_folder_f?= =?utf-8?q?or_each_feuser_within_extension?= References: Message-ID: Hi Andreas, If you want to change the upload folder, you can do it in the 'initializeCreateAction' function : public function initializeCreateAction() { $mediaUploadConfiguration = array( UploadedFileReferenceConverter::CONFIGURATION_ALLOWED_FILE_EXTENSIONS => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], UploadedFileReferenceConverter::CONFIGURATION_UPLOAD_FOLDER => $this->settings['imagesFolder'], ); ... } // Define conversion to file reference for image $newArticleConfiguration->forProperty('image') ->setTypeConverterOptions( 'Vendor\\MyExt\\Property\\TypeConverter\\UploadedFileReferenceConverter', $mediaUploadConfiguration ); in the above example, the folder comes from TS ($this->settings['imagesFolder']) : plugin.tx_myext_myPlugin.settings { # Folder for images imagesFolder = 5:/user_upload/ } but you can also use fe user uid : $GLOBALS['TSFE']->fe_user->user['uid'] Florian -- -- Florian Rival -- www.oktopuce.fr From info at andreas-haubold.de Mon Nov 7 21:35:11 2016 From: info at andreas-haubold.de (Andreas Haubold) Date: Mon, 07 Nov 2016 21:35:11 +0100 Subject: [TYPO3-dev] =?utf-8?q?_Re=3A_Howto_define_processedFiles_folder_f?= =?utf-8?q?or_each_feuser_within_extension?= References: Message-ID: Hello Florian, thanks a lot for your reply. Sorry that I didn't explained clearly what my intention was. The upload worked quite well and I did it in the way you explained. The problem was the download where the ext:fal_securedownload realy helped out. The only problem left is to redirect the user correctly if not authenticated. For the upload I created a type converter method and a small StorageUtility. The type converter is called in the intitializeCreateAction of the controller. /** * Set type converter configuration * * @param string $argumentName * @return void */ protected function setTypeConverterConfigurationForImageUpload($argumentName) { $uploadConfiguration = array( UploadedFileReferenceConverter::CONFIGURATION_ALLOWED_FILE_EXTENSIONS => $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], UploadedFileReferenceConverter::CONFIGURATION_UPLOAD_FOLDER => $this->storageUtility->getUploadFolderOfUser(), ); [..] } In the StorageUtility the upload folder of the account the user belongs to is resolved. /** * Returns the upload folder as string ([storageUid]:/[accountUid], e.g. '2:/16') * * @return string */ public static function getUploadFolderOfUser() { $settings = ConfigurationService::getPluginSettings(); return $settings['falStorageUid'] . ':/' . self::getFolderIdentifier() . '/'; } /** * Returns the folder identifier which belongs to a user (the accountUid) * * @return int */ public static function getFolderIdentifier() { return $GLOBALS['TSFE']->fe_user->user['tx_myextension_domain_model_account']; } Best Andreas From franssaris at gmail.com Wed Nov 9 21:45:44 2016 From: franssaris at gmail.com (Frans Saris) Date: Wed, 09 Nov 2016 20:45:44 +0000 Subject: [TYPO3-dev] Howto define processedFiles folder for each feuser within extension In-Reply-To: References: Message-ID: Hi Andreas, In the extension settings of fal_securedownload (you find this in the extension manager) you can set the url that should be called when the access check fails. If you have some additional access checks in your slot I guess the easiest way to redirect the user is just to copy the redirectToUrl() method to your own class. Just out of curiosity, what additional access check did you add that fal_securedownload doesn't handle? Groet Frans Op ma 7 nov. 2016 21:40 schreef Andreas Haubold : > Hello Florian, > > thanks a lot for your reply. Sorry that I didn't explained clearly what my > intention was. The upload worked quite well and I did it in the way you > explained. The problem was the download where the ext:fal_securedownload > realy helped out. The only problem left is to redirect the user correctly > if not authenticated. > > For the upload I created a type converter method and a small > StorageUtility. The type converter is called in the intitializeCreateAction > of the controller. > > /** > * Set type converter configuration > * > * @param string $argumentName > * @return void > */ > protected function > setTypeConverterConfigurationForImageUpload($argumentName) > { > $uploadConfiguration = array( > > UploadedFileReferenceConverter::CONFIGURATION_ALLOWED_FILE_EXTENSIONS => > $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext'], > UploadedFileReferenceConverter::CONFIGURATION_UPLOAD_FOLDER => > $this->storageUtility->getUploadFolderOfUser(), > ); > [..] > } > > In the StorageUtility the upload folder of the account the user belongs to > is resolved. > > /** > * Returns the upload folder as string ([storageUid]:/[accountUid], > e.g. '2:/16') > * > * @return string > */ > public static function getUploadFolderOfUser() > { > $settings = ConfigurationService::getPluginSettings(); > > return $settings['falStorageUid'] . ':/' . > self::getFolderIdentifier() . '/'; > } > > /** > * Returns the folder identifier which belongs to a user (the > accountUid) > * > * @return int > */ > public static function getFolderIdentifier() > { > return > $GLOBALS['TSFE']->fe_user->user['tx_myextension_domain_model_account']; > } > > > Best > Andreas > _______________________________________________ > TYPO3-dev mailing list > TYPO3-dev at lists.typo3.org > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-dev > From info at andreas-haubold.de Fri Nov 11 10:12:00 2016 From: info at andreas-haubold.de (Andreas Haubold) Date: Fri, 11 Nov 2016 10:12:00 +0100 Subject: [TYPO3-dev] =?utf-8?q?Howto_define_processedFiles_folder_for_each?= =?utf-8?q?_feuser_within_extension?= References: Message-ID: Hello Frans! > If you have some additional access checks in your slot > I guess the easiest way to redirect the user is just to copy the > redirectToUrl() method to your own class. This sounds reasonable. My first thought was to use the method of FileDumpHook directly as the object is also accessable in the slot. I just wondered why it's private. But by thinking more deeply about it, it makes sense. > Just out of curiosity, what additional access check did you add that > fal_securedownload doesn't handle? In the project I'm working on each user belongs to an account (e.g. a company). Within the account the files should be shareable between the users, so they are stored within an account folder. Users which don't belong to that account should not access the files of another account (although they are maybe logged in). /** * compare accountUid of file and user * * @param $file * @param $fileDumpHook * @return void * * @todo: add a property "account" to the file and do the access check with this property */ public function compareAccountUid($file, $fileDumpHook) { // by definition the folder correlates with the account uid $fileIdentifier = $file->getOriginalFile()->getIdentifier(); $accountFolder = intval( substr($fileIdentifier, 1, strpos($fileIdentifier, '/', 1)-1 )) ; $user = $fileDumpHook->getFeUser()->user; if (!is_array($user) || $user['tx_myextension_domain_model_account'] != $accountFolder) { echo 'You are not allowed to access this file.'; exit; } } Cheers, Andreas From pascal.querner at mscg.de Thu Nov 17 10:49:23 2016 From: pascal.querner at mscg.de (=?Windows-1252?Q?Pascal_Querner_=96_MSCG?=) Date: Thu, 17 Nov 2016 09:49:23 +0000 Subject: [TYPO3-dev] FlashMessage TYPO3 7.6 Backend Hook Message-ID: Hello Devs! I?m struggling with having flashmessages visible on TYPO3 7.6.9 Backend which I add into the users Backend Session via Hook. Idea: some Backend User wants to delete an object which has intact relations. To prevent that I am hooking into ?processCmdmap_preProcess? and check if thats OK or not. If it isnt OK I will override &$table variable, so no harm is done ?after? me. That works well, but I?d like to show the user whats currently going on. I want to inform the user about what happend via Flashmessage (prefer JS Flashmessage, because he?ll probably see it instantly instead of after page reload, because the Garbagebinicon is still spinning (as its still trying to delete something and takes ages for it.. but thats another story), but I cannot get it to work. I see my message added to users BE session (be_session table in database) but its nowhere printed on the backend as far as I can tell. I tried switching my users backend language (hoping it would fetch the messages from session table..), I tried loading another page where I often see flashmessages (TS Object Browser) etc. Some code: (All from within the Hook class) $this->sendFlashMessage( LocalizationUtility::translate("object_deletion_refused.title", 'mxx'), LocalizationUtility::translate("object_deletion_refused.message", 'mxx'), FlashMessage::WARNING); /** * Sends a flash message to backend. * Also logs it internally. * * @param string $messageHeader - Message Header * @param string $messageBody - Message body (actual information text) * @param int $severity */ protected function sendFlashMessage($messageHeader, $messageBody, $severity = FlashMessage::NOTICE) { /** @var FlashMessage $message */ $message = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessage', htmlspecialchars($messageBody), htmlspecialchars($messageHeader), $severity, TRUE //store in session ); $flashMessageService = $this->getFlashMessageService(); $messageQueue = $flashMessageService->getMessageQueueByIdentifier(); $messageQueue->addMessage($message); } /** * Initialize and return FlashMessageService object * * @return FlashMessageService */ protected function getFlashMessageService() { if (!$this->flashMessageService) { $this->flashMessageService = $this->getObjectManager()->get( FlashMessageService::class); } return $this->flashMessageService; } /** * Get ObjectManager instance * * @return ObjectManager */ protected function getObjectManager() { if (!$this->objectManager) { /** @var $this ->objectManager \TYPO3\CMS\Extbase\Object\ObjectManager */ $this->objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); } return $this->objectManager; } Best wishes, Pascal Querner Software-Developer From pascal.querner at mscg.de Thu Nov 17 14:11:30 2016 From: pascal.querner at mscg.de (=?Windows-1252?Q?Pascal_Querner_=96_MSCG?=) Date: Thu, 17 Nov 2016 13:11:30 +0000 Subject: [TYPO3-dev] FlashMessage TYPO3 7.6 Backend Hook In-Reply-To: References: Message-ID: I debugged this somewhat. Here is what I learned so far: My JSON Response from \TYPO3\CMS\Backend\Controller\SimpleDataHandlerController::processAjaxRequest (called via Ajax Route "record_process" in AjaxDataHandler._call (typo3/sysext/backend/Resources/Public/JavaScript/AjaxDataHandler.js) Looks like this {"redirect":"","messages":[{"title":"WARNING: MyWarning","message":"MyWarning","severity":2}],"hasErrors":true} So it does get rendered correctly. However, debugging why its not getting rendered, led me to AjaxDataHandler.deleteRecord (see file info above) In the done callback function I do not see any of my debugging "console.logs" therefore I'll never enter there. (Therefore I have always the spinning icon, because its getting cleared in the callback function which I never enter) HTTP Headers for info Request URL:http://tejo.typo3.pq/typo3/index.php?ajaxID=%2Fajax%2Frecord%2Fprocess&ajaxToken=f6b052b324f07210708377e1de86b95fecd27f5d&cmd[tx_my_model][1][delete]=1 Request Method:GET Status Code:200 OK Accept:application/json, text/javascript, */*; q=0.01 Accept-Encoding:gzip, deflate, sdch Accept-Language:de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control:no-cache Connection:keep-alive Cookie:be_lastLoginProvider=1433416747; cb-enabled=accepted; XDEBUG_SESSION=pq-phpstorm; PHPSESSID=4vdgrjglf7aoa2tbfmfkalt6u5; be_typo_user=d79c89f8756405df626940409404950d Host:xxxxxxxxxx Pragma:no-cache Referer:http://xxxxxxxxxxxx/typo3/index.php?M=web_list&moduleToken=0db77f8f216a5a9cfbcb0d36af5030d388eec02e&id=180 User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.44 Safari/537.36 X-Requested-With:XMLHttpRequest ~Pascal -----Urspr?ngliche Nachricht----- Von: typo3-dev-bounces at lists.typo3.org [mailto:typo3-dev-bounces at lists.typo3.org] Im Auftrag von Pascal Querner ? MSCG Gesendet: Donnerstag, 17. November 2016 10:49 An: typo3-dev at lists.typo3.org Betreff: [TYPO3-dev] FlashMessage TYPO3 7.6 Backend Hook Dieser Absender hat unsere Tests zur Betrugserkennung nicht bestanden und ist m?glicherweise nicht der, der er zu sein scheint. Weitere Informationen ?ber Spoofing unter "http://aka.ms/LearnAboutSpoofing". Hello Devs! I?m struggling with having flashmessages visible on TYPO3 7.6.9 Backend which I add into the users Backend Session via Hook. Idea: some Backend User wants to delete an object which has intact relations. To prevent that I am hooking into ?processCmdmap_preProcess? and check if thats OK or not. If it isnt OK I will override &$table variable, so no harm is done ?after? me. That works well, but I?d like to show the user whats currently going on. I want to inform the user about what happend via Flashmessage (prefer JS Flashmessage, because he?ll probably see it instantly instead of after page reload, because the Garbagebinicon is still spinning (as its still trying to delete something and takes ages for it.. but thats another story), but I cannot get it to work. I see my message added to users BE session (be_session table in database) but its nowhere printed on the backend as far as I can tell. I tried switching my users backend language (hoping it would fetch the messages from session table..), I tried loading another page where I often see flashmessages (TS Object Browser) etc. Some code: (All from within the Hook class) $this->sendFlashMessage( LocalizationUtility::translate("object_deletion_refused.title", 'mxx'), LocalizationUtility::translate("object_deletion_refused.message", 'mxx'), FlashMessage::WARNING); /** * Sends a flash message to backend. * Also logs it internally. * * @param string $messageHeader - Message Header * @param string $messageBody - Message body (actual information text) * @param int $severity */ protected function sendFlashMessage($messageHeader, $messageBody, $severity = FlashMessage::NOTICE) { /** @var FlashMessage $message */ $message = GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessage', htmlspecialchars($messageBody), htmlspecialchars($messageHeader), $severity, TRUE //store in session ); $flashMessageService = $this->getFlashMessageService(); $messageQueue = $flashMessageService->getMessageQueueByIdentifier(); $messageQueue->addMessage($message); } /** * Initialize and return FlashMessageService object * * @return FlashMessageService */ protected function getFlashMessageService() { if (!$this->flashMessageService) { $this->flashMessageService = $this->getObjectManager()->get( FlashMessageService::class); } return $this->flashMessageService; } /** * Get ObjectManager instance * * @return ObjectManager */ protected function getObjectManager() { if (!$this->objectManager) { /** @var $this ->objectManager \TYPO3\CMS\Extbase\Object\ObjectManager */ $this->objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); } return $this->objectManager; } Best wishes, Pascal Querner Software-Developer _______________________________________________ TYPO3-dev mailing list TYPO3-dev at lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-dev From info at netz-giraffe.de Mon Nov 21 18:51:04 2016 From: info at netz-giraffe.de (Björn Lindner) Date: Mon, 21 Nov 2016 18:51:04 +0100 Subject: [TYPO3-dev] =?utf-8?q?_TypoScript_DataProcessors?= Message-ID: Hey folks, I have the following bit of TypoScript to retrieve a target page's page resources (i.e. imaes in different dimensions) for a custom teaser element I have made. dataProcessing.10 = TYPO3\CMS\Frontend\DataProcessing\DatabaseQueryProcessor dataProcessing.10 { # Notes: # The following piece takes the pid of the teaser's related_page # and sets it as the pidInList setting. # After that the sql query is extended by looking up the uid which is related_page. # then, all image variants are fetched and assigned to a variable. # thus, there is no need for a controller just to get a target page's image assets table = pages pidInList { dataWrap = DB:pages:{field:related_page}:pid wrap3 = {|} insertData=1 } #where.data = 1831 orderBy = sorting where.dataWrap = uid={field:related_page} as = relatedPageMediaArray dataProcessing { 10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor 10 { references.fieldName = media_normal as = mediaNormal } 20 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor 20 { references.fieldName = media_skyscraper as = mediaSkyscraper } 30 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor 30 { references.fieldName = media_wide as = mediaWide } 40 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor 40 { references.fieldName = media_header as = mediaHeader } } this works perfectly if I only want to retrieve assets from one target page. Let's assume I have multiple pages from where I want to get assets (image 364, 899,574 are stored in the database as the respective page UIDs via a comma separated list). How would I have to modify the TS in order to process the list of page IDs first (I wanted to go with the Split Processor) and then iterate over the array of IDs i just got from the Split Processor? nesting another DatabaseQueryProcessor inside the SplitProcessor did not work, unfortunately. Thanks in advance. From oliver.hader at typo3.org Tue Nov 22 12:16:38 2016 From: oliver.hader at typo3.org (Oliver Hader) Date: Tue, 22 Nov 2016 12:16:38 +0100 Subject: [TYPO3-dev] [TYPO3-core] Announcing TYPO3 CMS 6.2.29 LTS, 7.6.13 LTS and 8.4.1 Message-ID: Announcing TYPO3 CMS 6.2.29 LTS, 7.6.13 LTS and 8.4.1 Dear TYPO3 World, the TYPO3 Community has just released TYPO3 CMS versions 6.2.29 LTS, 7.6.13 LTS and 8.4.1 which are now ready for you to download. All versions are maintenance releases and contain bug fixes and security fixes. *IMPORTANT* These versions include important security fixes to the TYPO3 CMS Core. The according security bulletins with details have just been released: https://typo3.org/teams/security/security-bulletins/typo3-core/typo3-core-sa-2016-023/ https://typo3.org/teams/security/security-bulletins/typo3-core/typo3-core-sa-2016-024/ The packages can be downloaded here: https://typo3.org/download/ For details about the releases, please see: https://typo3.org/news/article/typo3-cms-6229-7613-and-841-released/ MD5 checksums: 2c9e782e14c6688a77d005fd904cc40e typo3_src-6.2.29.tar.gz 6ad92e04c2834d9d2aa05af4b955a59a typo3_src-6.2.29.zip 4bc2bddc9f4a75480ff9e8cb7cf68d7a typo3_src-7.6.13.tar.gz ac939f17c48791e7a5e9493fe562b3dc typo3_src-7.6.13.zip 18b59e9a0c4a56a4b61fb887477718c7 typo3_src-8.4.1.tar.gz a1ac7768e3f9972726ed9f7d6c97fc47 typo3_src-8.4.1.zip SHA256 checksums: 2803a89698ea8fe776aa177660db6c0ddd1b2a3a034c5724f25e0cd3017e26e1 typo3_src-6.2.29.tar.gz 63a3ca2f7b807db71e6952c9023a0de8ffe27c6e9e1fb4eed932941e2884b28f typo3_src-6.2.29.zip 01bba6656e04af18cfbb81e537d1958e0821511500ac7a3a6ad31593092a6b90 typo3_src-7.6.13.tar.gz 14eff54f0fde3f1102f0409c7e1da3f387c707e220e8a4ffc1025b2f5d7a91ce typo3_src-7.6.13.zip 85ea054e9d3046d153607d0befa1404ae3b54998c208ae59262dade380aa8763 typo3_src-8.4.1.tar.gz 53a4ccc62ec322efbae39d2870532fcde9857d8d75acd62386bd96fb93ac6022 typo3_src-8.4.1.zip Further details on the signing and hashing process of TYPO3 releases: https://typo3.org/download/signed-packages/ Best regards Oliver -- Oliver Hader TYPO3 .... inspiring people to share! Get involved: http://typo3.org From oliver.hader at typo3.org Tue Nov 29 13:21:10 2016 From: oliver.hader at typo3.org (Oliver Hader) Date: Tue, 29 Nov 2016 13:21:10 +0100 Subject: [TYPO3-dev] [TYPO3-core] Announcing TYPO3 CMS 7.6.14 LTS Message-ID: Dear TYPO3 World, the TYPO3 Community has just released TYPO3 CMS version 7.6.14 LTS which is now ready for you to download. This version is a regression fix release for TYPO3 CMS 7.6.13 concerning the usage of the Composer mode with additional third party PHP libraries. This version contains bugfixes concerning Composer only. The package can be downloaded here: https://typo3.org/download/ For details about the release, please see: https://typo3.org/news/article/typo3-cms-7614-released/ MD5 checksums: 87a49aa744e19319f4458d88dfcbb0d9 typo3_src-7.6.14.tar.gz 5792a9e43ffa96e6a4e4f62d5890887b typo3_src-7.6.14.zip SHA256 checksums: c07d6d4e0532b64fdc228b666396b0da8fb692dc2a4b5ba213bbc2fb4897235b typo3_src-7.6.14.tar.gz 7bd59fdb83b0f1187e110a3e6c30530ad4a864a76730faeb9582e6375aacdf1b typo3_src-7.6.14.zip Further details on the signing and hashing process of TYPO3 releases: https://typo3.org/download/signed-packages/ Best regards Oliver -- Oliver Hader TYPO3 .... inspiring people to share! Get involved: http://typo3.org From miguel.molina at statistik.rlp.de Wed Nov 30 17:15:06 2016 From: miguel.molina at statistik.rlp.de (Miguel Ángel Molina Hernández) Date: Wed, 30 Nov 2016 17:15:06 +0100 Subject: [TYPO3-dev] =?utf-8?q?_Extbase_and_removing_M=3AN_Relations_in_MM?= =?utf-8?q?_table?= Message-ID: Hello, I'm developing extensions with extbase and fluid. I have some questions about how extbase works removing elements with MM-relations. I read a lot of post in forums about this topic, however I didn't reach to remove my relations in my MM-tables. First, when I remove an object from my repository, $this->remove($object), I understand that extbase only change the column deleted to 1, and it doesn't mean the relations to this object have to be deleted. The option for this object to live again with deleted to 0 exists, and we want that the relations living on this way too. When does decideTypo3 when the relations have to be deleted?, or when does know Extbase the relations are not more necessary?, Who of both is the responsable of this decision? I will explain one of my cases. I have a system for newsletter which works with categories. Two entities take place in this case, 'Email' and 'Category', the first one has an object storage from the second one. Category extends the Extbase category model and take another new properties for my cause. The relation is defined with an extra MM-table 'tx_myext_email_category_mm'. When I remove an email object from my repository, the record get 1 in the column deleted, but the relations persist there, all rigth, the object can be there again and maybe I want his relations too there. But what when I remove the object from the trash? They are still there, and I can't delete those relations (in a clean way, without using directly sql or making a function for this job). I tried with @cascade remove and the relation persist in the MM-Table. I can understand the idea, the trash is to restore the objects, but who does decide over the relations? When the objects are not more in the DB, their relations should not be neither there. Do you have any idea how can I delete this relations? or how Typo3/Extbase do this?. Maybe I have errors on my code and for this reason, it doesn't work for me. P.S.: Sorry for my english, I hope you understand my question. Best regards