00001 <?php
00002
00006 class Language_List extends oxAdminList
00007 {
00008
00014 protected $_sDefSort = 'sort';
00015
00021 protected $_sDefSortOrder = 'asc';
00022
00029 public function deleteEntry()
00030 {
00031
00032 $myConfig = $this->getConfig();
00033
00034 $sOxId = oxConfig::getParameter( 'oxid' );
00035
00036 $aLangData['params'] = $myConfig->getConfigParam( 'aLanguageParams' );
00037 $aLangData['lang'] = $myConfig->getConfigParam( 'aLanguages' );
00038 $aLangData['urls'] = $myConfig->getConfigParam( 'aLanguageURLs' );
00039 $aLangData['sslUrls'] = $myConfig->getConfigParam( 'aLanguageSSLURLs' );
00040
00041 $iBaseId = (int)$aLangData['params'][$sOxId]['baseId'];
00042
00043
00044 if ( $iBaseId == 0 ) {
00045 $oEx = new oxExceptionToDisplay();
00046 $oEx->setMessage( 'LANGUAGE_DELETINGMAINLANG_WARNING' );
00047 oxUtilsView::getInstance()->addErrorToDisplay( $oEx );
00048 return;
00049 }
00050
00051
00052 unset( $aLangData['params'][$sOxId] );
00053 unset( $aLangData['lang'][$sOxId] );
00054 unset( $aLangData['urls'][$iBaseId] );
00055 unset( $aLangData['sslUrls'][$iBaseId] );
00056
00057
00058 $myConfig->saveShopConfVar( 'aarr', 'aLanguageParams', $aLangData['params'] );
00059 $myConfig->saveShopConfVar( 'aarr', 'aLanguages', $aLangData['lang'] );
00060 $myConfig->saveShopConfVar( 'arr', 'aLanguageURLs', $aLangData['urls'] );
00061 $myConfig->saveShopConfVar( 'arr', 'aLanguageSSLURLs', $aLangData['sslUrls'] );
00062
00063
00064 if ( $iBaseId == $myConfig->getConfigParam( 'sDefaultLang' ) ) {
00065 $myConfig->saveShopConfVar( 'str', 'sDefaultLang', 0 );
00066 }
00067
00068
00069
00070 $this->_resetMultiLangDbFields( $iBaseId );
00071 }
00072
00079 public function render()
00080 {
00081
00082 parent::render();
00083 $this->_aViewData['mylist'] = $this->_getLanguagesList();
00084
00085 return "language_list.tpl";
00086 }
00087
00093 protected function _getLanguagesList()
00094 {
00095 $aLangParams = $this->getConfig()->getConfigParam( 'aLanguageParams' );
00096 $aLanguages = oxLang::getInstance()->getLanguageArray();
00097 $sDefaultLang = $this->getConfig()->getConfigParam( 'sDefaultLang' );
00098
00099 foreach( $aLanguages as $sKey => $sValue ) {
00100 $sOxId = $sValue->oxid;
00101 $aLanguages[$sKey]->active = (!isset($aLangParams[$sOxId]["active"])) ? 1 : $aLangParams[$sOxId]["active"];
00102 $aLanguages[$sKey]->default = ($aLangParams[$sOxId]["baseId"] == $sDefaultLang) ? true : false;
00103 $aLanguages[$sKey]->sort = $aLangParams[$sOxId]["sort"];
00104 }
00105
00106 if ( is_array($aLangParams) ) {
00107 $sSrotParam = $this->getConfig()->getParameter( 'sort' );
00108
00109 if ( !empty($sSrotParam) ) {
00110 $this->_sDefSort = $sSrotParam;
00111
00112 if ( $sSrotParam == 'active' ) {
00113
00114 $this->_sDefSortOrder = 'desc';
00115 }
00116 }
00117
00118 uasort( $aLanguages, array($this, '_sortLanguagesCallback') );
00119 }
00120
00121 return $aLanguages;
00122 }
00123
00133 protected function _sortLanguagesCallback( $oLang1, $oLang2 )
00134 {
00135 $sSortParam = $this->_sDefSort;
00136 $sVal1 = is_string($oLang1->$sSortParam) ? strtolower( $oLang1->$sSortParam ) : $oLang1->$sSortParam;
00137 $sVal2 = is_string($oLang2->$sSortParam) ? strtolower( $oLang2->$sSortParam ) : $oLang2->$sSortParam;
00138
00139 if ( $this->_sDefSortOrder == 'asc' ) {
00140 return ($sVal1 < $sVal2) ? -1 : 1;
00141 } else {
00142 return ($sVal1 > $sVal2) ? -1 : 1;
00143 }
00144 }
00145
00154 protected function _resetMultiLangDbFields( $iLangId )
00155 {
00156 $iLangId = (int)$iLangId;
00157
00158
00159 if ( $iLangId == 0 ) {
00160 return;
00161 }
00162
00163 $oDbMeta = oxNew( "oxDbMetaDataHandler" );
00164
00165 oxDb::startTransaction();
00166
00167 try {
00168 $oDbMeta->resetLanguage( $iLangId );
00169 } catch( Exception $oEx ) {
00170
00171 oxDb::rollbackTransaction();
00172
00173 $oEx = new oxExceptionToDisplay();
00174 $oEx->setMessage( 'LANGUAGE_ERROR_RESETING_MULTILANG_FIELDS' );
00175 oxUtilsView::getInstance()->addErrorToDisplay( $oEx );
00176
00177 return;
00178 }
00179
00180 oxDb::commitTransaction();
00181 }
00182
00183
00184 }