示例#1
0
 /**
  * Works through the indexing queue and indexes the queued items into Solr.
  *
  * @return	boolean	Returns TRUE on success, FALSE if no items were indexed or none were found.
  * @see	typo3/sysext/scheduler/tx_scheduler_Task#execute()
  */
 public function execute()
 {
     // Get the extensions's configuration
     $extConf = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['moox_social']);
     if ($extConf['debugEmailSenderName'] == "") {
         $extConf['debugEmailSenderName'] = $extConf['debugEmailSenderAddress'];
     }
     if ($this->email == "") {
         $this->email = $extConf['debugEmailReceiverAddress'];
     }
     $executionSucceeded = FALSE;
     if (!$this->pid) {
         $this->pid = 0;
     }
     if ($this->youtubeChannel != "") {
         $execution = $this->getExecution();
         $interval = $execution->getInterval();
         $time = time();
         $to = $time;
         $from = $time - $interval - $this->intervalBuffer;
         try {
             $rawFeed = \TYPO3\MooxSocial\Controller\YoutubeController::youtube($this->youtubeChannel);
             /*print "<pre>"; 
                                           print_r($rawFeed);
                                           print "</pre>"; 
             		exit();*/
             $executionSucceeded = TRUE;
         } catch (\Exception $e) {
             $message = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessage', $GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_youtubegettask.api_execution_error') . " [" . $e->getMessage() . "]", '', \TYPO3\CMS\Core\Messaging\FlashMessage::ERROR, TRUE);
             \TYPO3\CMS\Core\Messaging\FlashMessageQueue::addMessage($message);
             if ($this->email && $extConf['debugEmailSenderAddress']) {
                 $lockfile = $_SERVER['DOCUMENT_ROOT'] . "/typo3temp/.lock-email-task-" . md5($this->youtubeChannel);
                 if (file_exists($lockfile)) {
                     $lockfiletime = filemtime($lockfile);
                     if ($lockfiletime < time() - 86400) {
                         unlink($lockfile);
                     }
                 }
                 if (!file_exists($lockfile)) {
                     $message = (new \TYPO3\CMS\Core\Mail\MailMessage())->setFrom(array($extConf['debugEmailSenderAddress'] => $extConf['debugEmailSenderName']))->setTo(array($this->email => $this->email))->setSubject($GLOBALS['LANG']->sL('LLL:EXT:moox_social/Resources/Private/Language/locallang_scheduler.xlf:tx_mooxsocial_tasks_youtubegettask.api_error_mailsubject'))->setBody('ERROR: while requesting [youtube channel: ' . $this->youtubeChannel . "]");
                     $message->send();
                     touch($lockfile);
                 }
             }
         }
         $posts = array();
         $postIds = array();
         foreach ($rawFeed as $item) {
             //if(1 || !in_array($item['type'],array("status"))){
             //if(!in_array($item['id'],$postIds) && $item['status_type']!=""){
             if (!in_array($item['id'], $postIds)) {
                 $postIds[] = $item['id'];
                 $postId = $item['id'];
                 $item['id'] = $postId;
                 $item['youtubeChannel'] = $this->youtubeChannel;
                 $item['pid'] = $this->pid;
                 $post = \TYPO3\MooxSocial\Controller\YoutubeController::youtubePost($item);
                 if (is_array($post)) {
                     $posts[] = $post;
                 }
             }
         }
         if (count($posts)) {
             $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
             $youtubeRepository = $objectManager->get('\\TYPO3\\MooxSocial\\Domain\\Repository\\YoutubeRepository');
             $insertCnt = 0;
             $updateCnt = 0;
             foreach ($posts as $post) {
                 $youtubePost = $youtubeRepository->findOneByApiUid($post['apiUid'], $this->pid);
                 if (!$youtubePost instanceof \TYPO3\MooxSocial\Domain\Model\Youtube) {
                     $youtubePost = new \TYPO3\MooxSocial\Domain\Model\Youtube();
                     $action = "insert";
                 }
                 if ($action == "insert") {
                     $youtubePost->setPid($post['pid']);
                     $youtubePost->setCreated($post['created']);
                 }
                 $youtubePost->setUpdated($post['updated']);
                 $youtubePost->setType($post['type']);
                 $youtubePost->setStatusType($post['statusType']);
                 if ($action == "insert") {
                     $youtubePost->setPage($post['page']);
                     $youtubePost->setModel("youtube");
                 }
                 $youtubePost->setAction($post['action']);
                 $youtubePost->setTitle($post['title']);
                 $youtubePost->setSummary($post['summary']);
                 $youtubePost->setText($post['text']);
                 $youtubePost->setAuthor($post['author']);
                 $youtubePost->setAuthorId($post['authorId']);
                 $youtubePost->setDescription($post['description']);
                 $youtubePost->setCaption($post['caption']);
                 $youtubePost->setUrl($post['url']);
                 $youtubePost->setLinkName($post['linkName']);
                 $youtubePost->setLinkUrl($post['linkUrl']);
                 $youtubePost->setImageUrl($post['imageUrl']);
                 $youtubePost->setImageEmbedcode($post['imageEmbedcode']);
                 $youtubePost->setVideoUrl($post['videoUrl']);
                 $youtubePost->setVideoEmbedcode($post['videoEmbedcode']);
                 $youtubePost->setSharedUrl($post['sharedUrl']);
                 $youtubePost->setSharedTitle($post['sharedTitle']);
                 $youtubePost->setSharedDescription($post['sharedDescription']);
                 $youtubePost->setSharedCaption($post['sharedCaption']);
                 $youtubePost->setLikes($post['likes']);
                 $youtubePost->setShares($post['shares']);
                 $youtubePost->setComments($post['comments']);
                 if ($action == "insert") {
                     $youtubePost->setApiUid($post['apiUid']);
                 }
                 $youtubePost->setApiHash($post['apiHash']);
                 if ($action == "insert") {
                     $youtubeRepository->add($youtubePost);
                     $insertCnt++;
                 } else {
                     $youtubeRepository->update($youtubePost);
                     $updateCnt++;
                 }
             }
             $objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\PersistenceManagerInterface')->persistAll();
             $message = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessage', $insertCnt . " neue Videos geladen | " . $updateCnt . " bestehende Videos aktualisiert", '', \TYPO3\CMS\Core\Messaging\FlashMessage::OK, TRUE);
             \TYPO3\CMS\Core\Messaging\FlashMessageQueue::addMessage($message);
         } else {
             $message = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessage', "Keine neuen oder aktualisierten Videos gefunden", '', \TYPO3\CMS\Core\Messaging\FlashMessage::OK, TRUE);
             \TYPO3\CMS\Core\Messaging\FlashMessageQueue::addMessage($message);
         }
     }
     return $executionSucceeded;
 }
 /**
  * Finds all posts by given request settings directly from Youtube api
  *
  * @param array $settings settings The settings
  * @return Tx_Extbase_Persistence_QueryResultInterface The posts
  */
 public function requestAllBySettings($settings)
 {
     $result = array();
     $postIds = array();
     if (!$settings['offset']) {
         $settings['offset'] = 0;
     }
     $rawFeed = \TYPO3\MooxSocial\Controller\YoutubeController::youtube($settings['api_youtube_channel']);
     $posts = array();
     foreach ($rawFeed as $item) {
         if (!in_array($item['id'], $postIds)) {
             $postIds[] = $item['id'];
             $postId = $item['id'];
             $item['id'] = $postId;
             $item['youtubeChannel'] = $youtubeChannel;
             $item['pid'] = $storagePid;
             $post = \TYPO3\MooxSocial\Controller\YoutubeController::youtubePost($item);
             if (is_array($post)) {
                 $posts[] = $post;
             }
         }
     }
     if (count($posts)) {
         foreach ($posts as $post) {
             $youtubePost = new \TYPO3\MooxSocial\Domain\Model\Youtube();
             $youtubePost->setPid($post['pid']);
             $youtubePost->setCreated($post['created']);
             $youtubePost->setUpdated($post['updated']);
             $youtubePost->setType($post['type']);
             $youtubePost->setStatusType($post['statusType']);
             $youtubePost->setPage($post['page']);
             $youtubePost->setAction($post['action']);
             $youtubePost->setTitle($post['title']);
             $youtubePost->setSummary($post['summary']);
             $youtubePost->setText($post['text']);
             $youtubePost->setAuthor($post['author']);
             $youtubePost->setAuthorId($post['authorId']);
             $youtubePost->setDescription($post['description']);
             $youtubePost->setCaption($post['caption']);
             $youtubePost->setUrl($post['url']);
             $youtubePost->setLinkName($post['linkName']);
             $youtubePost->setLinkUrl($post['linkUrl']);
             $youtubePost->setImageUrl($post['imageUrl']);
             $youtubePost->setImageEmbedcode($post['imageEmbedcode']);
             $youtubePost->setVideoUrl($post['videoUrl']);
             $youtubePost->setVideoEmbedcode($post['videoEmbedcode']);
             $youtubePost->setSharedUrl($post['sharedUrl']);
             $youtubePost->setSharedTitle($post['sharedTitle']);
             $youtubePost->setSharedDescription($post['sharedDescription']);
             $youtubePost->setSharedCaption($post['sharedCaption']);
             $youtubePost->setLikes($post['likes']);
             $youtubePost->setShares($post['shares']);
             $youtubePost->setComments($post['comments']);
             $youtubePost->setApiUid($post['apiUid']);
             $youtubePost->setApiHash($post['apiHash']);
             $result[] = $youtubePost;
         }
     }
     return $result;
 }