language_list.php

Go to the documentation of this file.
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         // preventing deleting main language with base id = 0
00044         if ( $iBaseId == 0 ) {
00045             $oEx = new oxExceptionToDisplay();
00046             $oEx->setMessage( 'LANGUAGE_DELETINGMAINLANG_WARNING' );
00047             oxUtilsView::getInstance()->addErrorToDisplay( $oEx );
00048             return;
00049         }
00050 
00051         // unsetting selected lang from languages arrays
00052         unset( $aLangData['params'][$sOxId] );
00053         unset( $aLangData['lang'][$sOxId] );
00054         unset( $aLangData['urls'][$iBaseId] );
00055         unset( $aLangData['sslUrls'][$iBaseId] );
00056 
00057         //saving languages info back to DB
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         //if deleted language was default, setting defalt lang to 0
00064         if ( $iBaseId == $myConfig->getConfigParam( 'sDefaultLang' ) ) {
00065             $myConfig->saveShopConfVar( 'str',  'sDefaultLang', 0 );
00066         }
00067 
00068         // reseting all multilanguage DB fields with deleted lang id
00069         // to default value
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                     //reverting sort order for field 'active'
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         //skipping reseting language with id = 0
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             // if exception, rollBack everything
00171             oxDb::rollbackTransaction();
00172             //show warning
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 }

Generated on Mon Oct 26 20:07:16 2009 for OXID eShop CE by  doxygen 1.5.5