/**
  * Iterates through list of documents and indexes them
  *
  * @access	protected
  *
  * @return	void
  */
 protected function indexLoop()
 {
     // Get document from list.
     list($uid, $title) = $this->list->remove(0);
     $this->list->save();
     // Save document to database and index.
     $doc =& tx_dlf_document::getInstance($uid, 0, TRUE);
     if ($doc->ready) {
         $doc->save($doc->pid, $this->data['core']);
     }
     // Give feedback about progress.
     $_message = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Messaging\\FlashMessage', htmlspecialchars(sprintf(tx_dlf_helper::getLL('flash.documentsToGo'), count($this->list))), tx_dlf_helper::getLL('flash.running', TRUE), \TYPO3\CMS\Core\Messaging\FlashMessage::INFO, TRUE);
     $this->markerArray['CONTENT'] .= $_message->render();
     // Start next loop.
     $this->markerArray['CONTENT'] .= '<script type="text/javascript">window.location.href=unescape("' . \TYPO3\CMS\Core\Utility\GeneralUtility::rawUrlEncodeJS(\TYPO3\CMS\Core\Utility\GeneralUtility::locationHeaderUrl(\TYPO3\CMS\Core\Utility\GeneralUtility::linkThisScript(array('id' => $this->id, 'CMD' => 'indexLoop', $this->prefixId => array('core' => $this->data['core']), 'random' => uniqid())))) . '");</script>';
     $this->printContent();
 }
 /**
  * The main method of the PlugIn
  *
  * @access	public
  *
  * @param	string		$content: The PlugIn content
  * @param	array		$conf: The PlugIn configuration
  *
  * @return	string		The content that is displayed on the website
  */
 public function main($content, $conf)
 {
     $this->init($conf);
     // Don't cache the output.
     $this->setCache(FALSE);
     // Load the list.
     $this->list = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('tx_dlf_list');
     // Sort the list if applicable.
     if (!empty($this->piVars['order']) && $this->piVars['order'] != $this->list->metadata['options']['order'] || isset($this->piVars['asc']) && $this->piVars['asc'] != $this->list->metadata['options']['order.asc']) {
         // Order list by given field.
         $this->list->sort($this->piVars['order'], (bool) $this->piVars['asc']);
         // Update list's metadata.
         $listMetadata = $this->list->metadata;
         $listMetadata['options']['order'] = $this->piVars['order'];
         $listMetadata['options']['order.asc'] = (bool) $this->piVars['asc'];
         $this->list->metadata = $listMetadata;
         // Save updated list.
         $this->list->save();
         // Reset pointer.
         $this->piVars['pointer'] = 0;
     }
     // Load template file.
     if (!empty($this->conf['templateFile'])) {
         $this->template = $this->cObj->getSubpart($this->cObj->fileResource($this->conf['templateFile']), '###TEMPLATE###');
     } else {
         $this->template = $this->cObj->getSubpart($this->cObj->fileResource('EXT:dlf/plugins/listview/template.tmpl'), '###TEMPLATE###');
     }
     $subpartArray['entry'] = $this->cObj->getSubpart($this->template, '###ENTRY###');
     $subpartArray['subentry'] = $this->cObj->getSubpart($this->template, '###SUBENTRY###');
     // Set some variable defaults.
     if (!empty($this->piVars['pointer']) && $this->piVars['pointer'] * $this->conf['limit'] + 1 <= count($this->list)) {
         $this->piVars['pointer'] = max(intval($this->piVars['pointer']), 0);
     } else {
         $this->piVars['pointer'] = 0;
     }
     // Load metadata configuration.
     $this->loadConfig();
     for ($i = $this->piVars['pointer'] * $this->conf['limit'], $j = ($this->piVars['pointer'] + 1) * $this->conf['limit']; $i < $j; $i++) {
         if (empty($this->list[$i])) {
             break;
         } else {
             $content .= $this->getEntry($i, $subpartArray);
         }
     }
     $markerArray['###LISTTITLE###'] = $this->list->metadata['label'];
     $markerArray['###LISTDESCRIPTION###'] = $this->list->metadata['description'];
     if (!empty($this->list->metadata['thumbnail'])) {
         $markerArray['###LISTTHUMBNAIL###'] = '<img alt="" src="' . $this->list->metadata['thumbnail'] . '" />';
     } else {
         $markerArray['###LISTTHUMBNAIL###'] = '';
     }
     if ($i) {
         $markerArray['###COUNT###'] = htmlspecialchars(sprintf($this->pi_getLL('count'), $this->piVars['pointer'] * $this->conf['limit'] + 1, $i, count($this->list)));
     } else {
         $markerArray['###COUNT###'] = $this->pi_getLL('nohits', '', TRUE);
     }
     $markerArray['###PAGEBROWSER###'] = $this->getPageBrowser();
     $markerArray['###SORTING###'] = $this->getSortingForm();
     $content = $this->cObj->substituteMarkerArray($this->cObj->substituteSubpart($this->template, '###ENTRY###', $content, TRUE), $markerArray);
     return $this->pi_wrapInBaseClass($content);
 }