예제 #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->apiKey != "" && $this->apiSecretKey != "" && $this->userId != "") {
         $execution = $this->getExecution();
         $interval = $execution->getInterval();
         $time = time();
         $to = $time;
         $from = $time - $interval - $this->intervalBuffer;
         try {
             $rawFeed = \TYPO3\MooxSocial\Controller\SlideshareController::slideshare($this->apiKey, $this->apiSecretKey, $this->userId);
             /*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_slidesharegettask.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->apiKey . $this->apiSecretKey . $this->userId);
                 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_slidesharegettask.api_error_mailsubject'))->setBody('ERROR: while requesting [api key: ' . $this->apiKey . ' | api secret key: ' . $this->apiSecretKey . ' | user id: ' . $this->userId . "]");
                     $message->send();
                     touch($lockfile);
                 }
             }
         }
         $posts = array();
         $postIds = array();
         foreach ($rawFeed as $item) {
             if (!in_array($item['ID'], $postIds)) {
                 $postIds[] = $item['ID'];
                 $postId = $item['ID'];
                 $item['id'] = $postId;
                 $item['userId'] = $this->userId;
                 $item['pid'] = $this->pid;
                 $post = \TYPO3\MooxSocial\Controller\SlideshareController::slidesharePost($item);
                 if (is_array($post)) {
                     $posts[] = $post;
                 }
             }
         }
         if (count($posts)) {
             $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
             $slideshareRepository = $objectManager->get('\\TYPO3\\MooxSocial\\Domain\\Repository\\SlideshareRepository');
             $insertCnt = 0;
             $updateCnt = 0;
             foreach ($posts as $post) {
                 $slidesharePost = $slideshareRepository->findOneByApiUid($post['apiUid'], $this->pid);
                 if (!$slidesharePost instanceof \TYPO3\MooxSocial\Domain\Model\Slideshare) {
                     $slidesharePost = new \TYPO3\MooxSocial\Domain\Model\Slideshare();
                     $action = "insert";
                 }
                 if ($action == "insert") {
                     $slidesharePost->setPid($post['pid']);
                     $slidesharePost->setCreated($post['created']);
                 }
                 $slidesharePost->setUpdated($post['updated']);
                 $slidesharePost->setType($post['type']);
                 $slidesharePost->setStatusType($post['statusType']);
                 if ($action == "insert") {
                     $slidesharePost->setPage($post['page']);
                     $slidesharePost->setModel("slideshare");
                 }
                 $slidesharePost->setAction($post['action']);
                 $slidesharePost->setTitle($post['title']);
                 $slidesharePost->setSummary($post['summary']);
                 $slidesharePost->setText($post['text']);
                 $slidesharePost->setAuthor($post['author']);
                 $slidesharePost->setAuthorId($post['authorId']);
                 $slidesharePost->setDescription($post['description']);
                 $slidesharePost->setCaption($post['caption']);
                 $slidesharePost->setUrl($post['url']);
                 $slidesharePost->setLinkName($post['linkName']);
                 $slidesharePost->setLinkUrl($post['linkUrl']);
                 $slidesharePost->setImageUrl($post['imageUrl']);
                 $slidesharePost->setImageEmbedcode($post['imageEmbedcode']);
                 $slidesharePost->setVideoUrl($post['videoUrl']);
                 $slidesharePost->setVideoEmbedcode($post['videoEmbedcode']);
                 $slidesharePost->setSharedUrl($post['sharedUrl']);
                 $slidesharePost->setSharedTitle($post['sharedTitle']);
                 $slidesharePost->setSharedDescription($post['sharedDescription']);
                 $slidesharePost->setSharedCaption($post['sharedCaption']);
                 $slidesharePost->setLikes($post['likes']);
                 $slidesharePost->setShares($post['shares']);
                 $slidesharePost->setComments($post['comments']);
                 if ($action == "insert") {
                     $slidesharePost->setApiUid($post['apiUid']);
                 }
                 $slidesharePost->setApiHash($post['apiHash']);
                 if ($action == "insert") {
                     $slideshareRepository->add($slidesharePost);
                     $insertCnt++;
                 } else {
                     $slideshareRepository->update($slidesharePost);
                     $updateCnt++;
                 }
             }
             $objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\PersistenceManagerInterface')->persistAll();
             $message = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessage', $insertCnt . " neue Praesentationen geladen | " . $updateCnt . " bestehende Praesentationen 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 Praesentationen 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 Slideshare 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\SlideshareController::slideshare($settings['api_user_id']);
     $posts = array();
     foreach ($rawFeed as $item) {
         if (!in_array($item['ID'], $postIds)) {
             $postIds[] = $item['ID'];
             $postId = $item['ID'];
             $item['id'] = $postId;
             $item['userId'] = $userId;
             $item['pid'] = $storagePid;
             $post = \TYPO3\MooxSocial\Controller\SlideshareController::slidesharePost($item);
             if (is_array($post)) {
                 $posts[] = $post;
             }
         }
     }
     if (count($posts)) {
         foreach ($posts as $post) {
             $slidesharePost = new \TYPO3\MooxSocial\Domain\Model\Slideshare();
             $slidesharePost->setPid($post['pid']);
             $slidesharePost->setCreated($post['created']);
             $slidesharePost->setUpdated($post['updated']);
             $slidesharePost->setType($post['type']);
             $slidesharePost->setStatusType($post['statusType']);
             $slidesharePost->setPage($post['page']);
             $slidesharePost->setAction($post['action']);
             $slidesharePost->setTitle($post['title']);
             $slidesharePost->setSummary($post['summary']);
             $slidesharePost->setText($post['text']);
             $slidesharePost->setAuthor($post['author']);
             $slidesharePost->setAuthorId($post['authorId']);
             $slidesharePost->setDescription($post['description']);
             $slidesharePost->setCaption($post['caption']);
             $slidesharePost->setUrl($post['url']);
             $slidesharePost->setLinkName($post['linkName']);
             $slidesharePost->setLinkUrl($post['linkUrl']);
             $slidesharePost->setImageUrl($post['imageUrl']);
             $slidesharePost->setImageEmbedcode($post['imageEmbedcode']);
             $slidesharePost->setVideoUrl($post['videoUrl']);
             $slidesharePost->setVideoEmbedcode($post['videoEmbedcode']);
             $slidesharePost->setSharedUrl($post['sharedUrl']);
             $slidesharePost->setSharedTitle($post['sharedTitle']);
             $slidesharePost->setSharedDescription($post['sharedDescription']);
             $slidesharePost->setSharedCaption($post['sharedCaption']);
             $slidesharePost->setLikes($post['likes']);
             $slidesharePost->setShares($post['shares']);
             $slidesharePost->setComments($post['comments']);
             $slidesharePost->setApiUid($post['apiUid']);
             $slidesharePost->setApiHash($post['apiHash']);
             $result[] = $slidesharePost;
         }
     }
     return $result;
 }