/** * @return bool */ public function execute() { $zeroResults = array(); $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager'); $this->persistenceManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager'); $this->storeRepository = $objectManager->get('Aijko\\StoreLocator\\Domain\\Repository\\StoreRepository'); $extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['store_locator']); $stores = $this->storeRepository->findAllStoresWithoutLatLong($this->storagePid); foreach ($stores as $store) { try { $data = \Aijko\StoreLocator\Utility\GoogleUtility::getLatLongFromAddress($store->getAddress(), $extensionConfiguration['googleApiKey']); if (isset($data['ZERO_RESULTS'])) { $zeroResults[] = $data['ZERO_RESULTS']; $store->setHidden(TRUE); } else { $store->setLatitude($data['latitude']); $store->setLongitude($data['longitude']); } $this->storeRepository->update($store); sleep(2); // Usage limits exceeded - https://developers.google.com/maps/documentation/business/articles/usage_limits } catch (\Aijko\StoreLocator\Task\Store\GoogleException $e) { $this->addMessage($e->getMessage(), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); return FALSE; } } $this->addMessage('Bei folgenden Adressen wurde der Datensatz deaktiviert da keine Lat/Long dazu vorhanden sind:<br> - ' . implode('<br> - ', $zeroResults), \TYPO3\CMS\Core\Messaging\FlashMessage::INFO); $this->persistenceManager->persistAll(); return TRUE; }
/** * @param string $status * @param string $table * @param int $id * @param array $fieldArray * @param \TYPO3\CMS\Core\DataHandling\DataHandler $dataHandler */ public function processDatamap_postProcessFieldArray($status, $table, $id, array &$fieldArray, \TYPO3\CMS\Core\DataHandling\DataHandler $dataHandler) { if ('tx_storelocator_domain_model_store' !== $table || !isset($fieldArray['address'])) { return; } $extensionConfiguration = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['store_locator']); $data = \Aijko\StoreLocator\Utility\GoogleUtility::getLatLongFromAddress($fieldArray['address'], $extensionConfiguration['googleApiKey']); $fieldArray['latitude'] = isset($data['latitude']) ? $data['latitude'] : 0; $fieldArray['longitude'] = isset($data['longitude']) ? $data['longitude'] : 0; }