Пример #1
0
 /**
  * Removes fields from a field list that are not configured in TCA.
  *
  * @param	string		$table Table name
  * @param	mixed		$fields Field list as array or as string comma list.
  * @return	array		Cleaned field list as array.
  */
 function cleanupFieldList($table, $fields)
 {
     $allowedFields = tx_dam_db::getTCAFieldListArray($table);
     $fields = is_array($fields) ? $fields : t3lib_div::trimExplode(',', $fields, 1);
     foreach ($fields as $key => $field) {
         if (!in_array($field, $allowedFields)) {
             unset($fields[$key]);
         }
     }
     return $fields;
 }
 /**
  * Builds the array of reference items
  *
  * @param	array		$rows: Array of reference records
  * @param	array		$columns: Array of column names required from the entries
  * @return	void
  */
 function processEntries($rows, $columns)
 {
     foreach ($rows as $damRow) {
         $refTable = $damRow['tablenames'];
         if ($refTable) {
             // Get main fields from TCA
             $selectFields = tx_dam_db::getTCAFieldListArray($refTable, TRUE);
             $orderBy = in_array('tstamp', $selectFields) ? 'tstamp DESC' : '';
             $selectFields = tx_dam_db::compileFieldList($refTable, $selectFields, FALSE);
             $selectFields = $selectFields ? $selectFields : $refTable . '.uid,' . $refTable . '.pid';
             // Query for non-deleted tables only
             $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery($selectFields, $refTable, $refTable . '.uid=' . intval($damRow['uid_foreign']) . t3lib_BEfunc::deleteClause($refTable), '', $orderBy, 40);
             // Assemble data
             while ($refRow = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
                 $pageRow = t3lib_BEfunc::getRecord('pages', $refRow['pid']);
                 if (is_array($pageRow)) {
                     $item = array();
                     $item = $damRow;
                     $rootline = t3lib_BEfunc::BEgetRootLine($pageRow['uid']);
                     $pageOnClick = t3lib_BEfunc::viewOnClick($pageRow['uid'], '', $rootline);
                     foreach ($columns as $element) {
                         switch ($element) {
                             case 'page':
                                 $item[$element] = $pageRow;
                                 $item['pid'] = $pageRow['uid'];
                                 break;
                             case 'content_element':
                                 $item[$element] = $refRow;
                                 break;
                             case 'content_field':
                                 // Create sortable item for reference field
                                 $item[$element] = '';
                                 if ($item['ident']) {
                                     $item[$element] = trim($GLOBALS['LANG']->sL(t3lib_befunc::getItemLabel($refTable, $item['ident'])));
                                 } else {
                                     if ($item['field']) {
                                         $item[$element] = trim($GLOBALS['LANG']->sL(t3lib_befunc::getItemLabel($refTable, $item['field'])));
                                     }
                                 }
                                 // Removing trailing : from field label, if any
                                 if (substr($item[$element], -1) == ':') {
                                     $item[$element] = substr($item[$element], 0, -1);
                                 }
                                 break;
                             case 'content_age':
                                 $item[$element] = $refRow['tstamp'];
                                 break;
                             default:
                                 break;
                         }
                     }
                     $this->entries[] = $item;
                 }
             }
         }
     }
 }