/**
     * Testing soft reference parsers on content
     *
     * @return	string		HTML content
     */
    function calc_softref()
    {
        // Render input form:
        $content = '
			<h3>Input values to run soft reference parsers on:</h3>' . 'Input the content to parse:<br/>
				<textarea rows="10" name="inputCalc[softref][input]" wrap="off"' . $GLOBALS['TBE_TEMPLATE']->formWidthText(48, 'width:98%;', 'off') . '>' . t3lib_div::formatForTextarea($this->inputCalc['softref']['input']) . '</textarea>' . '<br/>Input parser keys to test: <br/>
				<input name="inputCalc[softref][parsers]" value="' . htmlspecialchars($this->inputCalc['softref']['parsers'] ? $this->inputCalc['softref']['parsers'] : implode(',', array_keys($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['GLOBAL']['softRefParser']))) . '" type="text" /><br/>
				<input type="submit" name="cmd[softref]" value="Test" />
		';
        if ($this->cmd == 'softref' && trim($this->inputCalc['softref']['input'])) {
            $value = $this->inputCalc['softref']['input'];
            $table = '_TABLE';
            $field = '_FIELD_';
            $uid = '_UID_';
            // Soft References:
            if (strlen($value) && ($softRefs = t3lib_BEfunc::explodeSoftRefParserList($this->inputCalc['softref']['parsers']))) {
                $softRefValue = $value;
                foreach ($softRefs as $spKey => $spParams) {
                    $softRefObj =& t3lib_BEfunc::softRefParserObj($spKey);
                    if (is_object($softRefObj)) {
                        $resultArray = $softRefObj->findRef($table, $field, $uid, $softRefValue, $spKey, $spParams);
                        if (is_array($resultArray)) {
                            $outRow[$field]['softrefs']['keys'][$spKey] = $resultArray['elements'];
                            if (strlen($resultArray['content'])) {
                                $softRefValue = $resultArray['content'];
                            }
                        }
                    }
                }
                if (is_array($outRow[$field]['softrefs']) && count($outRow[$field]['softrefs']) && strcmp($value, $softRefValue) && strstr($softRefValue, '{softref:')) {
                    $outRow[$field]['softrefs']['tokenizedContent'] = $softRefValue;
                }
            }
            $content .= Tx_Extdeveval_Compatibility::viewArray($outRow);
        }
        return $content;
    }
 /**
  * Find all supported broken links for a specific record.
  *
  * @param	array		$results: array of broken links
  * @param	string		$table: table name of the record
  * @param	array		$fields: array of fields to analyze
  * @param	array		$record: record to analyse
  * @return	void
  */
 public function analyzeRecord(&$results, $table, $fields, $record)
 {
     // array to store urls from relevant field contents
     $urls = array();
     $referencedRecordType = '';
     // last-parsed link element was a page.
     $wasPage = TRUE;
     // flag whether row contains a broken link in some field or not
     $rowContainsBrokenLink = FALSE;
     // put together content of all relevant fields
     $haystack = '';
     $htmlParser = t3lib_div::makeInstance('t3lib_parsehtml');
     $idRecord = $record['uid'];
     // get all references
     foreach ($fields as $field) {
         $haystack .= $record[$field] . ' --- ';
         $conf = $GLOBALS['TCA'][$table]['columns'][$field]['config'];
         $valueField = $record[$field];
         // Check if a TCA configured field has softreferences defined (see TYPO3 Core API document)
         if ($conf['softref'] && strlen($valueField)) {
             // Explode the list of softreferences/parameters
             $softRefs = t3lib_BEfunc::explodeSoftRefParserList($conf['softref']);
             // Traverse soft references
             foreach ($softRefs as $spKey => $spParams) {
                 // create / get object
                 $softRefObj =& t3lib_BEfunc::softRefParserObj($spKey);
                 // If there was an object returned...:
                 if (is_object($softRefObj)) {
                     // Do processing
                     $resultArray = $softRefObj->findRef($table, $field, $idRecord, $valueField, $spKey, $spParams);
                     if (!empty($resultArray['elements'])) {
                         if ($spKey == 'typolink_tag') {
                             $this->analyseTypoLinks($resultArray, $results, $htmlParser, $record, $field, $table);
                         } else {
                             $this->analyseLinks($resultArray, $results, $record, $field, $table);
                         }
                     }
                 }
             }
         }
     }
 }
 /**
  * Callback function for traversing the FlexForm structure in relation to finding file and DB references!
  *
  * @param	array		Data structure for the current value
  * @param	mixed		Current value
  * @param	array		Additional configuration used in calling function
  * @param	string		Path of value in DS structure
  * @param	object		Object reference to caller
  * @return	void
  * @see t3lib_TCEmain::checkValue_flex_procInData_travDS()
  */
 function getRelations_flexFormCallBack($dsArr, $dataValue, $PA, $structurePath, $pObj)
 {
     $structurePath = substr($structurePath, 5) . '/';
     // removing "data/" in the beginning of path (which points to location in data array)
     $dsConf = $dsArr['TCEforms']['config'];
     // Implode parameter values:
     list($table, $uid, $field) = array($PA['table'], $PA['uid'], $PA['field']);
     // Add files
     if ($result = $this->getRelations_procFiles($dataValue, $dsConf, $uid)) {
         // Creates an entry for the field with all the files:
         $this->temp_flexRelations['file'][$structurePath] = $result;
     }
     // Add DB:
     if ($result = $this->getRelations_procDB($dataValue, $dsConf, $uid)) {
         // Create an entry for the field with all DB relations:
         $this->temp_flexRelations['db'][$structurePath] = $result;
     }
     // Soft References:
     if (strlen($dataValue) && ($softRefs = t3lib_BEfunc::explodeSoftRefParserList($dsConf['softref']))) {
         $softRefValue = $dataValue;
         foreach ($softRefs as $spKey => $spParams) {
             $softRefObj = t3lib_BEfunc::softRefParserObj($spKey);
             if (is_object($softRefObj)) {
                 $resultArray = $softRefObj->findRef($table, $field, $uid, $softRefValue, $spKey, $spParams, $structurePath);
                 if (is_array($resultArray) && is_array($resultArray['elements'])) {
                     $this->temp_flexRelations['softrefs'][$structurePath]['keys'][$spKey] = $resultArray['elements'];
                     if (strlen($resultArray['content'])) {
                         $softRefValue = $resultArray['content'];
                     }
                 }
             }
         }
         if (count($this->temp_flexRelations['softrefs']) && strcmp($dataValue, $softRefValue)) {
             $this->temp_flexRelations['softrefs'][$structurePath]['tokenizedContent'] = $softRefValue;
         }
     }
 }