/**
  * 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;
 }