Ejemplo n.º 1
0
 /**
  *
  */
 protected function compile()
 {
     global $objPage;
     $strFormTemplate = $this->f_form_template;
     $strDateFormat = $objPage->dateFormat;
     $arrPageTaxonomy = $this->getPageTaxonomy($objPage->page_taxonomy);
     $arrFEFields = $this->f_form_fields ? deserialize($this->f_form_fields) : array();
     $arrFields = array();
     $arrWidgets = array();
     $strWidget = '';
     $arrActiveOptions = $this->f_active_options ? deserialize($this->f_active_options) : array();
     $objAutoComplete = new AutoCompletion();
     // model information
     $strListViewID = $this->f_list_field;
     $objModule = $this->Database->prepare('SELECT * FROM tl_module WHERE id = ?')->execute($strListViewID)->row();
     $strModuleTableName = $objModule['f_select_module'];
     $strWrapperID = $objModule['f_select_wrapper'];
     $arrModeSettings = deserialize($objModule['f_display_mode']);
     $arrModeSettings = is_array($arrModeSettings) ? array_values($arrModeSettings) : array();
     if (!$strModuleTableName || !$strWrapperID) {
         return;
     }
     // set fields from db
     if (is_array($arrFEFields)) {
         $arrIDs = array();
         foreach ($arrFEFields as $strID => $arrFEField) {
             $arrIDs[] = $strID;
         }
         $strPlaceholder = implode(',', array_fill(0, count($arrIDs), '?'));
         $objFields = $this->Database->prepare('SELECT * FROM tl_fmodules_filters WHERE id IN (' . $strPlaceholder . ')')->execute($arrIDs);
         if ($objFields->count()) {
             while ($objFields->next()) {
                 $arrField = $objFields->row();
                 $arrFields[$arrField['id']] = $arrField;
             }
         }
         // merge field from fe and fields from db
         $_arrFields = array();
         foreach ($arrFEFields as $strID => $arrFEField) {
             // do not display if field has dependency on other field
             if ($arrFEField['dependsOn']) {
                 if (!\Input::get($arrFEField['dependsOn'])) {
                     continue;
                 }
             }
             $_arrFields[$arrFEField['fieldID']] = $arrFEField;
             if (is_array($arrFields[$strID])) {
                 foreach ($arrFields[$strID] as $strKey => $strValue) {
                     $_arrFields[$arrFEField['fieldID']][$strKey] = $strValue;
                 }
             }
         }
         // replace fields array
         $arrFields = $_arrFields;
     }
     // generate action attribute
     $strAction = \Environment::get('request');
     if ($this->fm_redirect_source) {
         $type = $this->fm_redirect_source;
         if ($type == 'siteID') {
             $id = $this->fm_redirect_jumpTo;
             if ($id) {
                 $pageDB = $this->Database->prepare('SELECT * FROM tl_page WHERE id = ?')->execute($id)->row();
             }
             if (!empty($pageDB)) {
                 $strAction = $this->generateFrontendUrl($pageDB);
             }
         }
         if ($type == 'siteURL') {
             $url = $this->fm_redirect_url;
             if ($url) {
                 $strAction = $this->replaceInsertTags($url);
             }
         }
     }
     // get field values
     $arrActiveFields = array();
     $blnStartPoint = true;
     $arrNotRelateAbleFields = array('orderBy', 'sorting_fields', 'pagination');
     foreach ($arrFields as $strFieldID => $arrField) {
         $strValue = \Input::get($strFieldID) ? \Input::get($strFieldID) : '';
         $arrFields[$strFieldID]['value'] = $strValue;
         $arrFields[$strFieldID]['enable'] = false;
         $blnIsValue = QueryModel::isValue($strValue);
         // set labels
         $arrLabel = $this->setLabels($arrField);
         $arrFields[$strFieldID]['title'] = $arrLabel[0];
         $arrFields[$strFieldID]['description'] = $arrLabel[1];
         // set enable
         if ($blnIsValue) {
             $arrFields[$strFieldID]['enable'] = true;
         }
         // do not set start point
         if ($this->fm_related_start_point && $blnStartPoint) {
             $blnStartPoint = false;
             continue;
         }
         // do not set
         if (in_array($arrField['fieldID'], $arrNotRelateAbleFields)) {
             continue;
         }
         $arrActiveFields[] = $strFieldID;
     }
     unset($blnStartPoint);
     $arrFilteredOptions = array();
     if ($this->fm_related_options) {
         // get only active options
         $arrQueryData = HelperModel::generateSQLQueryFromFilterArray($arrFields);
         $strQuery = $arrQueryData['qStr'];
         $qTextSearch = $arrQueryData['isFulltextSearch'] ? $arrQueryData['$qTextSearch'] : '';
         //get text search results
         $textSearchResults = array();
         if ($qTextSearch) {
             $textSearchResults = QueryModel::getTextSearchResult($qTextSearch, $strModuleTableName, $strWrapperID, $arrQueryData['searchSettings']);
         }
         // get only published items
         $qProtectedStr = ' AND published = "1"';
         // preview mode
         if (HelperModel::previewMode()) {
             $qProtectedStr = '';
         }
         // get all items
         $objList = $this->Database->prepare('SELECT * FROM ' . $strModuleTableName . '_data WHERE pid = ' . $strWrapperID . $qProtectedStr . $strQuery)->query();
         // filtered options
         $_arrFilteredOptions = array();
         while ($objList->next()) {
             $arrListItem = $objList->row();
             if ($qTextSearch) {
                 if (!$textSearchResults[$arrListItem['id']]) {
                     continue;
                 }
             }
             foreach ($arrActiveFields as $strActiveField) {
                 $arrFilteredOptions[$strActiveField] = array();
                 $arrValues = explode(',', $arrListItem[$strActiveField]);
                 $_arrFilteredOptions[$strActiveField][] = array_values($arrValues);
             }
         }
         // pluck values
         foreach ($_arrFilteredOptions as $strFieldID => $arrFilteredOption) {
             $arrFilteredOption = call_user_func_array('array_merge', $arrFilteredOption);
             $arrFilteredOption = array_unique($arrFilteredOption);
             $arrFilteredOptions[$strFieldID] = $arrFilteredOption;
         }
     }
     // set options
     $objWrapper = $this->Database->prepare('SELECT * FROM ' . $strModuleTableName . ' WHERE id = ?')->execute($strWrapperID)->row();
     foreach ($arrFields as $strFieldID => $arrField) {
         if ($arrField['type'] == 'multi_choice' || $arrField['type'] == 'simple_choice') {
             $arrWrapperOptions = $objWrapper[$strFieldID] ? deserialize($objWrapper[$strFieldID]) : array();
             if ($arrField['dataFromTaxonomy'] == '1') {
                 $arrWrapperOptions = $this->getDataFromTaxonomy($objWrapper['select_taxonomy_' . $strFieldID]);
             }
             if ($arrField['reactToTaxonomy'] == '1') {
                 $arrWrapperOptions = $this->getDataFromTaxonomyTags($arrField['reactToField'], $objWrapper);
             }
             if ($arrWrapperOptions['table'] && !in_array($strFieldID, $arrActiveOptions)) {
                 $arrFields[$strFieldID]['options'] = $this->getDataFromTable($objWrapper[$strFieldID]);
             }
             if (is_null($arrWrapperOptions['table']) && !in_array($strFieldID, $arrActiveOptions)) {
                 $arrFields[$strFieldID]['options'] = $arrWrapperOptions;
             }
         }
         // set countries
         if ($arrField['fieldID'] == 'address_country') {
             $arrCountries = $this->getCountries();
             $arrFields[$strFieldID]['options'] = DiverseFunction::conformOptionsArray($arrCountries);
         }
         // geo locator
         if ($arrField['type'] == 'geo_locator') {
             if ($arrField['locatorType'] == 'geo_distance') {
                 $arrFields[$strFieldID]['geoDistanceOptions'] = $this->generateGeoDistanceOptions($arrField['geoDistanceOptions']);
             }
         }
         // get options
         if ($strFieldID && in_array($strFieldID, $arrActiveOptions)) {
             $results = $objAutoComplete->getAutoCompletion($strModuleTableName, $strWrapperID, $strFieldID, $objPage->dateFormat, $objPage->timeFormat);
             // taxonomy tags
             if ($arrField['reactToTaxonomy'] == '1') {
                 $tempResults = array();
                 $arrValues = $this->getDataFromTaxonomyTags($arrField['reactToField'], $arrField, true);
                 foreach ($results as $result) {
                     if (!in_array($result['value'], $arrValues)) {
                         continue;
                     }
                     $tempResults[] = $result;
                 }
                 $results = $tempResults;
                 unset($tempResults);
             }
             $arrFields[$strFieldID]['options'] = is_array($results) ? $results : array();
         }
         if ($this->fm_related_options && is_array($arrFields[$strFieldID]['options'])) {
             $arrNewOptions = array();
             foreach ($arrFields[$strFieldID]['options'] as $intIndex => $arrKeyValue) {
                 if (is_array($arrFilteredOptions[$strFieldID]) && !in_array($arrKeyValue['value'], $arrFilteredOptions[$strFieldID])) {
                     continue;
                 }
                 $arrNewOptions[] = $arrKeyValue;
             }
             $arrFields[$strFieldID]['options'] = $arrNewOptions;
         }
         // set table name
         $arrFields[$strFieldID]['tablename'] = !strpos($strModuleTableName, '_data') ? $strModuleTableName . '_data' : $strModuleTableName;
         // date field
         if ($arrField['type'] == 'date_field') {
             $format = $arrField['addTime'] ? $objPage->datimFormat : $strDateFormat;
             $arrFields[$strFieldID]['format'] = $format;
             $arrFields[$strFieldID]['operator'] = $this->getOperator();
             $arrFields[$strFieldID]['selected_operator'] = \Input::get($strFieldID . '_int');
         }
         // search field (int)
         if ($arrField['type'] == 'search_field' && $arrField['isInteger'] == '1') {
             $arrFields[$strFieldID]['operator'] = $this->getOperator();
             $arrFields[$strFieldID]['selected_operator'] = \Input::get($strFieldID . '_int');
         }
         // search field
         if ($arrField['type'] == 'search_field') {
             //backwards compatible
             $arrFields[$strFieldID]['auto_complete'] = $arrFields[$strFieldID]['options'];
         }
         if ($arrField['type'] == 'toggle_field') {
             $arrFields[$strFieldID]['showLabel'] = $GLOBALS['TL_LANG']['MSC']['fm_highlight_show'];
             $arrFields[$strFieldID]['ignoreLabel'] = $GLOBALS['TL_LANG']['MSC']['fm_highlight_ignore'];
         }
         $arrFields[$strFieldID]['wrapperID'] = $strWrapperID;
         $arrFields[$strFieldID]['selected'] = $arrFields[$strFieldID]['value'];
         //
         if ($arrField['type'] == 'search_field' && $arrField['isInteger'] == '1') {
             if (!$arrFields[$strFieldID]['selected'] && !is_null(\Input::get($arrField['fieldID']))) {
                 $arrFields[$strFieldID]['selected'] = '';
             }
         }
         //
         if ($arrField['type'] == 'toggle_field' && !$arrFields[$strFieldID]['value']) {
             $arrFields[$strFieldID]['selected'] = '';
         }
         // set templates
         $strTemplateName = $this->parseTemplateName($arrField['used_templates']);
         $arrWidgets[$strFieldID] = array('data' => $arrFields[$strFieldID], 'tpl' => $strTemplateName);
     }
     foreach ($arrWidgets as $strFieldID => $arrWidget) {
         if ($arrWidget['data']['type'] == 'wrapper_field' && $arrWidget['data']['from_field'] && $arrWidget['data']['to_field']) {
             if ($arrWidget['data']['from_field'] == $arrWidget['data']['to_field']) {
                 $fromFieldData = $arrWidgets[$arrWidget['data']['from_field']]['data'];
                 $arrWidget['data']['title'] = $fromFieldData['title'];
                 $arrWidget['data']['description'] = $fromFieldData['description'];
                 $fromFieldData['operator'] = array('gte' => $GLOBALS['TL_LANG']['MSC']['f_gte']);
                 $fromFieldData['title'] = $GLOBALS['TL_LANG']['MSC']['fm_from_label'];
                 $fromFieldData['description'] = '';
                 $fromTemplateObj = new \FrontendTemplate($arrWidgets[$arrWidget['data']['from_field']]['tpl']);
                 $fromTemplateObj->setData($fromFieldData);
                 $from_template = $fromTemplateObj->parse();
                 $arrWidget['data']['from_template'] = $from_template;
                 //to
                 $toFieldData = $arrWidgets[$arrWidget['data']['to_field']]['data'];
                 $toFieldData['fieldID'] = $toFieldData['fieldID'] . '_btw';
                 $toFieldData['title'] = $GLOBALS['TL_LANG']['MSC']['fm_to_label'];
                 $toFieldData['description'] = '';
                 $selectValue = \Input::get($toFieldData['fieldID']);
                 if (!is_null($selectValue) && !$selectValue && $toFieldData['type'] != 'date_field') {
                     $selectValue = '';
                 }
                 $toFieldData['selected'] = $selectValue;
                 $toFieldData['operator'] = array('lte' => $GLOBALS['TL_LANG']['MSC']['f_lte']);
                 $toTemplateObj = new \FrontendTemplate($arrWidgets[$arrWidget['data']['to_field']]['tpl']);
                 $toTemplateObj->setData($toFieldData);
                 $to_template = $toTemplateObj->parse();
                 $arrWidget['data']['to_template'] = $to_template;
             } else {
                 // generate from field tpl
                 $fromFieldData = $arrWidgets[$arrWidget['data']['from_field']]['data'];
                 $fromFieldData['operator'] = array('gte' => $GLOBALS['TL_LANG']['MSC']['f_gte']);
                 $fromTemplateObj = new \FrontendTemplate($arrWidgets[$arrWidget['data']['from_field']]['tpl']);
                 $fromTemplateObj->setData($fromFieldData);
                 $from_template = $fromTemplateObj->parse();
                 $arrWidget['data']['from_template'] = $from_template;
                 // generate to field tpl
                 $toFieldData = $arrWidgets[$arrWidget['data']['to_field']]['data'];
                 $toFieldData['operator'] = array('lte' => $GLOBALS['TL_LANG']['MSC']['f_lte']);
                 $toTemplateObj = new \FrontendTemplate($arrWidgets[$arrWidget['data']['to_field']]['tpl']);
                 $toTemplateObj->setData($toFieldData);
                 $to_template = $toTemplateObj->parse();
                 $arrWidget['data']['to_template'] = $to_template;
             }
         }
         // sort out fixed field
         if ($this->sortOutFixedField($strFieldID, $arrModeSettings)) {
             continue;
         }
         // disable inactive fields
         if (!$arrWidget['data']['active']) {
             continue;
         }
         //
         if ($arrWidget['data']['overwrite'] == '1') {
             continue;
         }
         //
         if ($arrPageTaxonomy[$strFieldID] && $arrPageTaxonomy[$strFieldID]['set']['overwrite'] == '1') {
             continue;
         }
         $strWidgetTemplate = new \FrontendTemplate($arrWidget['tpl']);
         $strWidgetTemplate->setData($arrWidget['data']);
         $strWidget .= $strWidgetTemplate->parse();
     }
     $strResult = '';
     $objTemplate = new \FrontendTemplate($strFormTemplate);
     $objTemplate->setData(array('widgets' => $strWidget, 'filter' => $GLOBALS['TL_LANG']['MSC']['widget_submit'], 'enableSubmit' => $this->fm_disable_submit));
     $strResult .= $objTemplate->parse();
     $this->Template->action = $strAction;
     $this->Template->reset = $GLOBALS['TL_LANG']['MSC']['fm_ff_reset'];
     $this->Template->cssID = $this->cssID;
     $this->Template->fields = $strResult;
 }
Ejemplo n.º 2
0
 /**
  * return list view
  * filter allowed
  */
 public function getEntities()
 {
     $strTableName = \Input::get('tablename');
     $strTableData = $strTableName . '_data';
     $strWrapperID = \Input::get('wrapperID');
     $dateFormat = \Input::get('dateFormat') ? \Input::get('dateFormat') : \Config::get('dateFormat');
     $timeFormat = \Input::get('timeFormat') ? \Input::get('timeFormat') : \Config::get('timeFormat');
     $strTemplate = \Input::get('template') ? \Input::get('template') : 'fmodule_teaser';
     $this->tablename = $strTableData;
     $arrResults = [];
     $arrModuleData = $this->getModule($strTableName, $strWrapperID);
     $arrFields = $arrModuleData['arrFields'];
     $fieldWidgets = $arrModuleData['arrWidgets'];
     $mapFields = $arrModuleData['mapFields'];
     $arrCleanOptions = $arrModuleData['arrCleanOptions'];
     if (!$strTableName || !$strWrapperID) {
         $this->sendFailState("no back end module found");
     }
     if (!$this->Database->tableExists($strTableName)) {
         $this->sendFailState("no table found");
     }
     // get wrapper
     $wrapperDB = $this->Database->prepare('SELECT * FROM ' . $strTableName . ' WHERE id = ?')->execute($strWrapperID)->row();
     // get fields and create query
     $qResult = HelperModel::generateSQLQueryFromFilterArray($arrFields);
     $qStr = $qResult['qStr'];
     $qTextSearch = $qResult['isFulltextSearch'] ? $qResult['$qTextSearch'] : '';
     //get text search results
     $textSearchResults = array();
     if ($qTextSearch) {
         $textSearchResults = QueryModel::getTextSearchResult($qTextSearch, $strTableName, $strWrapperID, $qResult['searchSettings']);
     }
     $addDetailPage = $wrapperDB['addDetailPage'];
     $rootDB = $this->Database->prepare('SELECT * FROM ' . $strTableName . ' JOIN tl_page ON tl_page.id = ' . $strTableName . '.rootPage WHERE ' . $strTableName . '.id = ?')->execute($strWrapperID)->row();
     $qOrderByStr = $this->getOrderBy();
     $qProtectedStr = ' AND published = "1"';
     // get list
     $objList = $this->Database->prepare('SELECT * FROM ' . $strTableData . ' WHERE pid = ' . $strWrapperID . $qProtectedStr . $qStr . $qOrderByStr)->query();
     $arrItems = array();
     while ($objList->next()) {
         $arrItem = $objList->row();
         if (HelperModel::sortOutProtected($arrItem, $this->User->groups)) {
             continue;
         }
         if (!HelperModel::outSideScope($arrItem['start'], $arrItem['stop'])) {
             continue;
         }
         // image
         $imagePath = $this->generateSingeSrc($objList);
         if ($imagePath) {
             $arrItem['singleSRC'] = $imagePath;
         }
         if ($arrItem['size']) {
             $arrItem['size'] = deserialize($arrItem['size']);
         }
         if ($arrItem['cssID']) {
             $arrItem['cssID'] = deserialize($arrItem['cssID']);
         }
         if ($arrItem['addGallery'] && $arrItem['multiSRC']) {
             $objGallery = new GalleryGenerator();
             $objGallery->id = $arrItem['id'];
             $objGallery->sortBy = $arrItem['sortBy'];
             $objGallery->orderSRC = $arrItem['orderSRC'];
             $objGallery->metaIgnore = $arrItem['metaIgnore'];
             $objGallery->numberOfItems = $arrItem['numberOfItems'];
             $objGallery->perPage = $arrItem['perPageGallery'];
             $objGallery->perRow = $arrItem['perRow'];
             $objGallery->size = $arrItem['size'];
             $objGallery->fullsize = $arrItem['fullsize'];
             $objGallery->galleryTpl = $arrItem['galleryTpl'];
             $objGallery->getAllImages($arrItem['multiSRC']);
             $arrItem['gallery'] = $objGallery->renderGallery();
         }
         // create href
         $arrItem['href'] = null;
         if ($addDetailPage == '1' && $objList->source == 'default') {
             // reset target
             $arrItem['target'] = '';
             $arrItem['href'] = $this->generateUrl($rootDB, $arrItem['alias']);
             // $listDB->alias
         }
         if ($arrItem['source'] == 'external') {
             $arrItem['href'] = $arrItem['url'];
         }
         if ($arrItem['source'] == 'internal') {
             // reset target
             $arrItem['target'] = '';
             $jumpToDB = $this->Database->prepare('SELECT * FROM tl_page WHERE id = ?')->execute($objList->jumpTo)->row();
             $strTaxonomyUrl = \Config::get('taxonomyDisable') ? '' : $this->generateTaxonomyUrl();
             $arrItem['href'] = $this->generateFrontendUrl($jumpToDB, $strTaxonomyUrl);
         }
         // check for text search
         if ($qTextSearch) {
             if (!$textSearchResults[$arrItem['id']]) {
                 continue;
             }
         }
         //
         $arrItems[] = $arrItem;
     }
     if (\Input::get('orderBy') && mb_strtoupper(\Input::get('orderBy'), 'UTF-8') == 'RAND') {
         shuffle($arrItems);
     }
     $total = count($arrItems);
     $this->listViewLimit = $total;
     $this->createPagination($total);
     $objTemplate = new \FrontendTemplate($strTemplate);
     $strResults = '';
     for ($i = $this->listViewOffset; $i < $this->listViewLimit; $i++) {
         $item = $arrItems[$i];
         // set css and id
         $item['cssID'] = deserialize($item['cssID']);
         $item['itemID'] = $item['cssID'][0];
         $item['itemCSS'] = $item['cssID'][1] ? ' ' . $item['cssID'][1] : '';
         // set date format
         $date = date('Y-m-d', $item['date']);
         $time = date('H:i', $item['time']);
         $dateTime = $time ? $date . ' ' . $time : $date;
         $item['dateTime'] = $dateTime;
         $item['date'] = $item['date'] ? date($dateFormat, $item['date']) : '';
         $item['time'] = $item['time'] ? date($timeFormat, $item['time']) : '';
         // set more
         $item['more'] = $GLOBALS['TL_LANG']['MSC']['more'];
         // get list view ce
         $objCte = ContentModelExtend::findPublishedByPidAndTable($item['id'], $strTableName . '_data', array('fview' => 'list'));
         $arrElements = array();
         if ($objCte !== null) {
             $intCount = 0;
             $intLast = $objCte->count() - 1;
             while ($objCte->next()) {
                 $arrCss = array();
                 $objRow = $objCte->current();
                 if ($intCount == 0 || $intCount == $intLast) {
                     if ($intCount == 0) {
                         $arrCss[] = 'first';
                     }
                     if ($intCount == $intLast) {
                         $arrCss[] = 'last';
                     }
                 }
                 $objRow->classes = $arrCss;
                 $arrElements[] = $this->getContentElement($objRow, $this->strColumn);
                 ++$intCount;
             }
         }
         $item['teaser'] = $arrElements;
         // set odd and even classes
         $item['cssClass'] = $i % 2 ? ' even' : ' odd';
         //field
         if (!empty($fieldWidgets)) {
             $arrayAsValue = array('list.blank', 'list.keyValue', 'table.blank');
             foreach ($fieldWidgets as $widget) {
                 $id = $widget['fieldID'];
                 $tplName = $widget['widgetTemplate'];
                 $type = $widget['widgetType'];
                 $value = $item[$id];
                 if (in_array($type, $arrayAsValue)) {
                     $value = deserialize($value);
                 }
                 // unserialize
                 $objFieldTemplate = new \FrontendTemplate($tplName);
                 $objFieldTemplate->setData(array('value' => $value, 'type' => $type, 'item' => $item));
                 $item[$id] = $objFieldTemplate->parse();
             }
         }
         // set last first classes
         if ($i == 0) {
             $item['cssClass'] .= ' first';
         }
         if ($i == $this->listViewLimit - 1) {
             $item['cssClass'] .= ' last';
         }
         // create marker path
         if ($item['addMarker'] && $item['markerSRC']) {
             if ($this->markerCache[$item['markerSRC']]) {
                 $item['markerSRC'] = $this->markerCache[$item['markerSRC']];
             } else {
                 $markerDB = $this->Database->prepare('SELECT * FROM tl_files WHERE uuid = ?')->execute($item['markerSRC']);
                 if ($markerDB->count()) {
                     $pathInfo = $markerDB->row()['path'];
                     if ($pathInfo) {
                         $this->markerCache[$item['markerSRC']] = $pathInfo;
                         $item['markerSRC'] = $pathInfo;
                     }
                 }
             }
         }
         // map settings from field
         if (!empty($mapFields)) {
             foreach ($mapFields as $map) {
                 $objMapTemplate = new \FrontendTemplate($map['template']);
                 $item['mapSettings'] = $map;
                 $objMapTemplate->setData($item);
                 $item[$map['fieldID']] = $objMapTemplate->parse();
             }
         }
         // mapSettings
         if (!empty($mapSettings)) {
             $item['mapSettings'] = $mapSettings;
         }
         // set clean options
         if (!empty($arrCleanOptions)) {
             $item['cleanOptions'] = $arrCleanOptions;
             // overwrite clean options
             foreach ($arrCleanOptions as $fieldID => $options) {
                 if ($item[$fieldID] && is_string($item[$fieldID])) {
                     $arrValues = explode(',', $item[$fieldID]);
                     $arrValuesAsString = array();
                     $arrValuesAsArray = array();
                     if (is_array($arrValues)) {
                         foreach ($arrValues as $val) {
                             $arrValuesAsArray[$val] = $options[$val];
                             $arrValuesAsString[] = $options[$val];
                         }
                     }
                     $item[$fieldID . 'AsArray'] = $arrValuesAsArray;
                     $item[$fieldID] = implode(', ', $arrValuesAsString);
                 }
             }
         }
         //set data
         $objTemplate->setData($item);
         //set image
         if ($item['addImage']) {
             $this->addImageToTemplate($objTemplate, array('singleSRC' => $item['singleSRC'], 'alt' => $item['alt'], 'size' => $item['size'], 'fullsize' => $item['fullsize'], 'caption' => $item['caption'], 'title' => $item['title']));
         }
         // set enclosure
         $objTemplate->enclosure = array();
         if ($item['addEnclosure']) {
             $this->addEnclosuresToTemplate($objTemplate, $item);
         }
         $arrResults[] = $item;
         $strResults .= $objTemplate->parse();
     }
     $arrData = array('arrData' => $arrResults, 'strTemplate' => $strResults, 'arrFields' => $arrModuleData, 'arrWrapper' => $wrapperDB, 'arrLabels' => array('noResults' => $GLOBALS['TL_LANG']['MSC']['noResult']));
     header('Content-type: application/json');
     echo json_encode($arrData, 512);
     exit;
 }