00001 <?php
00002
00003 lt_include( PLOG_CLASS_PATH."class/action/admin/adminaction.class.php" );
00004 lt_include( PLOG_CLASS_PATH."class/locale/locales.class.php" );
00005 lt_include( PLOG_CLASS_PATH."class/view/admin/adminsitelocaleslistview.class.php" );
00006 lt_include( PLOG_CLASS_PATH."class/file/fileupload.class.php" );
00007 lt_include( PLOG_CLASS_PATH."class/file/fileuploads.class.php" );
00008 lt_include( PLOG_CLASS_PATH."class/locale/localefinder.class.php" );
00009
00016 class AdminAddLocaleAction extends AdminAction
00017 {
00018
00019 function AdminAddLocaleAction( $actionInfo, $request )
00020 {
00021 $this->AdminAction( $actionInfo, $request );
00022
00023
00024 if( $this->_request->getValue( "addLocale" ) != "" )
00025 $this->_op = "uploadLocale";
00026 else
00027 $this->_op = "scanLocales";
00028
00029 $this->requireAdminPermission( "add_locale" );
00030 }
00031
00032 function validate()
00033 {
00034
00035 if( $this->_op == "uploadLocale" ) {
00036 $files = HttpVars::getFiles();
00037
00038 $upload = new FileUpload( $files["localeFile"] );
00039
00040 if( !Locales::isValidLocaleFileName( $upload->getFileName())) {
00041 $this->_view = new AdminTemplatedView( $this->_blogInfo, "newlocale" );
00042 $this->_view->setErrorMessage( $this->_locale->tr("error_invalid_locale_file"));
00043 $this->setCommonData();
00044 return false;
00045 }
00046 }
00047
00048 return true;
00049 }
00050
00057 function _performScanLocales()
00058 {
00059 $locales = new Locales();
00060
00061
00062 $f = new LocaleFinder();
00063 $newLocaleCodes = $f->find();
00064
00065
00066 $successMessage = "";
00067
00068
00069 $this->_view = new AdminSiteLocalesListView( $this->_blogInfo );
00070
00071
00072 if( count( $newLocaleCodes ) == 0 ) {
00073 $this->_view->setErrorMessage( $this->_locale->tr("error_no_new_locales_found" ));
00074 return false;
00075 }
00076
00077 foreach( $newLocaleCodes as $newLocaleCode ) {
00078
00079 $res = $locales->addLocale( $newLocaleCode );
00080
00081
00082 $successMessage .= $this->_locale->pr("locale_added_ok", $newLocaleCode)."<br/>";
00083 }
00084
00085 if( $successMessage != "" ) $this->_view->setSuccessMessage( $successMessage );
00086
00087 return true;
00088 }
00089
00090 function _performUploadLocale()
00091 {
00092
00093
00094 $files = HttpVars::getFiles();
00095 $uploads = new FileUploads( $files );
00096
00097 $this->_view = new AdminSiteLocalesListView( $this->_blogInfo );
00098
00099
00100 $result = $uploads->process( $this->_config->getValue( "locale_folder" ));
00101
00102
00103 if( $result[0]->getError() != 0 ) {
00104 $this->_view->setErrorMessage( $this->_locale->tr("error_saving_locale"));
00105 return false;
00106 }
00107
00108
00109 $upload = new FileUpload( $files["localeFile"] );
00110 $res = preg_match( REGEXP_VALID_LOCALE, $upload->getFileName(), $matches );
00111 $localeCode = $matches[1];
00112
00113
00114 $locales = new Locales();
00115 $locales->addLocale( $localeCode );
00116
00117 $this->_view->setSuccessMessage( $this->_locale->pr( "locale_added_ok", $localeCode ));
00118
00119 return true;
00120 }
00121
00122 function perform()
00123 {
00124 if( $this->_op == "scanLocales" )
00125 $result = $this->_performScanLocales();
00126 else
00127 $result = $this->_performUploadLocale();
00128
00129 $this->setCommonData();
00130
00131 return $result;
00132 }
00133 }
00134 ?>