/** * This method checks any additional data that is relevant to the specific task * If the task class is not relevant, the method is expected to return TRUE * * @param array $submittedData Reference to the array containing the data submitted by the user * @param \TYPO3\CMS\Scheduler\Controller\SchedulerModuleController $parentObject Reference to the calling object (Scheduler's BE module) * @return boolean TRUE if validation was ok (or selected class is not relevant), FALSE otherwise */ public function validateAdditionalFields(array &$submittedData, \TYPO3\CMS\Scheduler\Controller\SchedulerModuleController $parentObject) { $result = TRUE; $submittedData['pid'] = intval($submittedData['pid']); if ($submittedData['pid'] < 0) { $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_facebookgettask.pid_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); $result = FALSE; } if ($submittedData['clearCachePages'] != "") { $clearCachePages = explode(",", $submittedData['clearCachePages']); foreach ($clearCachePages as $clearCachePage) { if (!is_numeric($clearCachePage) || $clearCachePage == "") { $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_facebookgettask.clear_cache_pages_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); $result = FALSE; } } } if ($submittedData['appId'] == "") { $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_facebookgettask.app_id_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); $result = FALSE; } if ($submittedData['secret'] == "") { $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_facebookgettask.secret_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); $result = FALSE; } if ($submittedData['pageId'] == "") { $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_facebookgettask.page_id_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); $result = FALSE; } if ($submittedData['email'] != "" && !\TYPO3\CMS\Core\Utility\GeneralUtility::validEmail($submittedData['email'])) { $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_facebookgettask.email_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); $result = FALSE; } if ($result) { $config = array('appId' => $submittedData['appId'], 'secret' => $submittedData['secret'], 'pageid' => $submittedData['pageId'], 'allowSignedRequest' => false); $facebook = new \TYPO3\MooxSocial\Facebook\Facebook($config); $url = '/' . $submittedData['pageId'] . '/feed'; try { $rawFeed = $facebook->api($url); } catch (\TYPO3\MooxSocial\Facebook\FacebookApiException $e) { $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_facebookgettask.api_error') . " [" . $e->getMessage() . "]", \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR); $result = FALSE; } } return $result; }
/** * execute facebook api request * * @param string $appId * @param string $secret * @param string $pageId * @param string $request * @return array feedData */ public function facebook($appId, $secret, $pageId, $request = "") { $rawFeed = array(); // Get the extensions's configuration $extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['moox_social']); if ($appId == "") { $appId = $extConf['fallbackFacebookAppId']; } if ($secret == "") { $secret = $extConf['fallbackFacebookSecret']; } if ($appId != "" && $secret != "" && $pageId != "") { $config = array('appId' => $appId, 'secret' => $secret, 'pageid' => $pageId, 'allowSignedRequest' => false); $facebook = new \TYPO3\MooxSocial\Facebook\Facebook($config); if ($request == "fullinit") { $repeats = 999; $request = "init"; } else { $repeats = 10; } if ($request == "init") { $rawFeedData = array(); $rawFeedIds = array(); $until = time(); for ($i = 1; $i <= $repeats; $i++) { $since = $until - 604800 * 16; $request = "posts?limit=250&since=" . $since . "&until=" . $until; //."&limit=10000"; limit > 250 is not allowed $url = '/' . $pageId . '/' . $request; $rawFeedTmp = $facebook->api($url); if (count($rawFeedTmp['data']) > 0) { foreach ($rawFeedTmp['data'] as $data) { if (!in_array($data['id'], $rawFeedIds)) { $rawFeedData[] = $data; $rawFeedIds[] = $data['id']; } } } else { break; } $until = $since; } $rawFeed = array("data" => $rawFeedData); } else { $request = "posts?limit=25"; $url = '/' . $pageId . '/' . $request; $rawFeed = $facebook->api($url); } } return $rawFeed; }