コード例 #1
0
 /**
  * Returns information about localization of traditional content elements (non FCEs).
  * It will be added to the content tree by getContentTree().
  *
  * @param	array		$contentTreeArr: Part of the content tree of the element to create the localization information for.
  * @param	array		$tt_content_elementRegister: Array of sys_language UIDs with some information as the value
  * @return	array		Localization information
  * @access	protected
  * @see	getContentTree_element()
  */
 function getContentTree_getLocalizationInfoForElement($contentTreeArr, &$tt_content_elementRegister)
 {
     global $TYPO3_DB;
     $localizationInfoArr = array();
     if ($contentTreeArr['el']['table'] == 'tt_content' && $contentTreeArr['el']['sys_language_uid'] <= 0) {
         // Finding translations of this record and select overlay record:
         $fakeElementRow = array('uid' => $contentTreeArr['el']['uid'], 'pid' => $contentTreeArr['el']['pid']);
         t3lib_beFunc::fixVersioningPID('tt_content', $fakeElementRow);
         $res = $TYPO3_DB->exec_SELECTquery('*', 'tt_content', 'pid=' . $fakeElementRow['pid'] . ' AND sys_language_uid>0' . ' AND l18n_parent=' . intval($contentTreeArr['el']['uid']) . t3lib_BEfunc::deleteClause('tt_content'));
         $attachedLocalizations = array();
         while (TRUE == ($olrow = $TYPO3_DB->sql_fetch_assoc($res))) {
             t3lib_BEfunc::workspaceOL('tt_content', $olrow);
             if (!isset($attachedLocalizations[$olrow['sys_language_uid']])) {
                 $attachedLocalizations[$olrow['sys_language_uid']] = $olrow['uid'];
             }
         }
         $TYPO3_DB->sql_free_result($res);
         // Traverse the available languages of the page (not default and [All])
         if (is_array($this->allSystemWebsiteLanguages) && is_array($this->allSystemWebsiteLanguages['rows'])) {
             foreach (array_keys($this->allSystemWebsiteLanguages['rows']) as $sys_language_uid) {
                 if ($sys_language_uid > 0) {
                     if (isset($attachedLocalizations[$sys_language_uid])) {
                         $localizationInfoArr[$sys_language_uid] = array();
                         $localizationInfoArr[$sys_language_uid]['mode'] = 'exists';
                         $localizationInfoArr[$sys_language_uid]['localization_uid'] = $attachedLocalizations[$sys_language_uid];
                         $tt_content_elementRegister[$attachedLocalizations[$sys_language_uid]]++;
                     } elseif ($contentTreeArr['el']['CType'] != 'templavoila_pi1') {
                         // Only localize content elements with "Default" langauge set
                         if ((int) $contentTreeArr['el']['sys_language_uid'] === 0) {
                             $localizationInfoArr[$sys_language_uid] = array();
                             $localizationInfoArr[$sys_language_uid]['mode'] = 'localize';
                         }
                     } elseif (!$contentTreeArr['ds_meta']['langDisable'] && ((int) $contentTreeArr['el']['sys_language_uid'] === -1 || (int) $contentTreeArr['el']['sys_language_uid'] === 0)) {
                         $localizationInfoArr[$sys_language_uid] = array();
                         $localizationInfoArr[$sys_language_uid]['mode'] = 'localizedFlexform';
                     } else {
                         $localizationInfoArr[$sys_language_uid] = array();
                         $localizationInfoArr[$sys_language_uid]['mode'] = 'no_localization';
                     }
                 }
             }
         }
     }
     return $localizationInfoArr;
 }