/**
  * 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['oauthAccessToken'] == "") {
         $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_twittergettask.oauth_access_token_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR);
         $result = FALSE;
     }
     if ($submittedData['oauthAccessTokenSecret'] == "") {
         $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_twittergettask.oauth_access_token_secret_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR);
         $result = FALSE;
     }
     if ($submittedData['consumerKey'] == "") {
         $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_twittergettask.consumer_key_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR);
         $result = FALSE;
     }
     if ($submittedData['consumerKeySecret'] == "") {
         $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_twittergettask.consumer_key_secret_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR);
         $result = FALSE;
     }
     if ($submittedData['screenName'] == "") {
         $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_twittergettask.screen_name_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_twittergettask.email_error'), \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR);
         $result = FALSE;
     }
     if ($result) {
         $config = array('consumer_key' => $submittedData['consumerKey'], 'consumer_secret' => $submittedData['consumerKeySecret'], 'oauth_access_token' => $submittedData['oauthAccessToken'], 'oauth_access_token_secret' => $submittedData['oauthAccessTokenSecret'], 'screenName' => $submittedData['screenName'], 'allowSignedRequest' => false);
         $twitter = new \TYPO3\MooxSocial\Twitter\TwitterAPIExchange($config);
         $url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
         $requestMethod = "GET";
         $getfield = '?screen_name=' . $submittedData['screenName'];
         try {
             $rawFeed = json_decode($twitter->setGetfield($getfield)->buildOauth($url, $requestMethod)->performRequest(), $assoc = TRUE);
         } catch (\Exception $e) {
             $parentObject->addMessage($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_twittergettask.api_error') . " [" . $e->getMessage() . "]", \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR);
             $result = FALSE;
         }
     }
     return $result;
 }
 /**
  * execute twitter api request
  *
  * @param string $oauthAccessToken
  * @param string $oauthAccessTokenSecret
  * @param string $consumerKey
  * @param string $consumerKeySecret
  * @param string $screenName
  * @param string $request
  * @return array feedData
  */
 public function twitter($oauthAccessToken, $oauthAccessTokenSecret, $consumerKey, $consumerKeySecret, $screenName, $request = "")
 {
     $rawFeed = array();
     // Get the extensions's configuration
     $extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['moox_social']);
     if ($oauthAccessToken == "") {
         $oauthAccessToken = $extConf['fallbackTwitterOauthAccessToken'];
     }
     if ($oauthAccessTokenSecret == "") {
         $oauthAccessTokenSecret = $extConf['fallbackTwitterOauthAccessTokenSecret'];
     }
     if ($consumerKey == "") {
         $consumerKey = $extConf['fallbackTwitterConsumerKey'];
     }
     if ($consumerKeySecret == "") {
         $consumerKeySecret = $extConf['fallbackTwitterConsumerKeySecret'];
     }
     if ($oauthAccessToken != "" && $oauthAccessTokenSecret != "" && $consumerKey != "" && $consumerKeySecret != "" && $screenName != "") {
         $config = array('consumer_key' => $consumerKey, 'consumer_secret' => $consumerKeySecret, 'oauth_access_token' => $oauthAccessToken, 'oauth_access_token_secret' => $oauthAccessTokenSecret, 'screenName' => $screenName, 'allowSignedRequest' => false);
         $twitter = new \TYPO3\MooxSocial\Twitter\TwitterAPIExchange($config);
         if ($request == "init") {
             $request = "&count=200";
         } elseif ($request == "") {
             $request = "&count=50";
         }
         $url = "https://api.twitter.com/1.1/statuses/user_timeline.json";
         $requestMethod = "GET";
         $getfield = '?screen_name=' . $screenName . $request;
         $rawFeed = json_decode($twitter->setGetfield($getfield)->buildOauth($url, $requestMethod)->performRequest(), $assoc = TRUE);
     }
     return $rawFeed;
 }