Last active
November 8, 2018 08:46
-
-
Save vladimir-light/608315079aef5890c67b to your computer and use it in GitHub Desktop.
FuelPHP lang-files to DB task (dirty)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
* @author Vladimir Leitenberger (vLight) | |
*/ | |
namespace Fuel\Tasks; | |
class Langfiles2database | |
{ | |
private static $_default_lang; | |
private static $_fallback_lang; | |
private static $_lang_table_nane; | |
/** | |
* RUN function. | |
* @param string $args lanc-code, i.e. 'ru' | |
* @return void | |
*/ | |
public function run($args = NULL) | |
{ | |
self::_init(); | |
self::port_lang_files($args); | |
\Cli::write('All Complete', 'green'); | |
} | |
/** | |
* Function to find and port all php-lang-files to DB | |
* @param string $args lanc-code, i.e. 'ru' | |
* @return void | |
*/ | |
public function port_lang_files($lang = NULL) | |
{ | |
null === $lang and $lang = '*'; | |
$path = APPPATH.'lang/'. $lang . '/' . '*.php'; | |
$files = new \GlobIterator($path); | |
if($files->count() > 0) | |
{ | |
\Cli::write(__FUNCTION__ . ' > Total lang files found : '.$files->count() ); | |
foreach ($files as $fullpath => $file) | |
{ | |
if($file instanceof \SplFileInfo) | |
{ | |
$parent_dir = $file->getPathInfo()->getBasename(); | |
$filename = $file->getBasename( '.' . $file->getExtension() ); | |
$files_to_process[ $parent_dir ][] = $filename; | |
} | |
} | |
} | |
else | |
{ | |
\Cli::write(__FUNCTION__." > Nothing to convert in : {$path}", 'red'); | |
return; | |
} | |
$succeed = array(); | |
$counter = 0; | |
// dd($files_to_process); | |
foreach ($files_to_process as $lang => $files_list) | |
{ | |
foreach ($files_list as $filename) | |
{ | |
\Cli::write(__FUNCTION__." > working with {$lang}:{$filename}\n"); | |
if(true === self::_does_exists($filename, $lang) ) | |
{ | |
\Cli::write(__FUNCTION__ ." > {$lang}:{$filename} already exists. Jumping to the next one...\n", 'orange'); | |
continue; | |
} | |
//load lang file from APPPATH/lang/ | |
if ( \Lang::load($filename, $filename, $lang, false, true) ) | |
{ | |
//try to save | |
$filename_suffix = '.db'; | |
try | |
{ | |
\Lang::save($filename . $filename_suffix, $filename, $lang); //i.e. $fulename = 'general' -> \Lang::save('general.db', 'general', 'de'); | |
} | |
catch (Exception $e) | |
{ | |
\Cli::error(__FUNCTION__ . " > Can't save {$filename}{$filename_suffix} into DB! Abborting...\n", "red"); | |
return; | |
} | |
//check if exsists after \Lang::save and if Loading from DB was successefull | |
if( self::_does_exists($filename, $lang) && \Lang::load($filename . $filename_suffix, $filename, $lang, false, true) ) | |
{ | |
\Cli::write(__FUNCTION__ ." > moving of {$lang}:{$filename} to `" . self::$_lang_table_nane . "` was successefull\n", 'green'); | |
// array_push($succeed, $filename . $filename_suffix); | |
$succeed[ $lang ][] = $filename . $filename_suffix; | |
++$counter; | |
} | |
} | |
else | |
{ | |
\Cli::error(__FUNCTION__ . " > Can't load {$filename} into memory! Abborting...\n", "red"); | |
} | |
} | |
} | |
\Cli::write(__FUNCTION__." > Totaly lang files ported : " . $counter, 'green'); | |
\Cli::write(__FUNCTION__." > Complete\n", 'green'); | |
} | |
/** | |
* Initialization method | |
* @access private | |
* @return void | |
*/ | |
private function _init() | |
{ | |
self::$_default_lang = \Config::get('language', 'en'); | |
self::$_fallback_lang = \Config::get('language_fallback', 'en'); | |
self::$_lang_table_nane = \Config::get('lang.table_name', 'lang'); | |
} | |
/** | |
* checks if lang-group already exists | |
* @access private | |
* @param string $langfile language-file (a.k.a. language group) | |
* @param string $lang language code | |
* @return bool wheather or not the group ist already exists | |
*/ | |
private function _does_exists($langfile, $lang) | |
{ | |
try | |
{ | |
$results = \DB::select()-> | |
from( self::$_lang_table_nane )-> | |
where('identifier', '=', $langfile)-> | |
where('language', '=', $lang)-> | |
execute(); | |
} | |
catch (Exception $e) | |
{ | |
\Cli::beep(); | |
\Cli::error('Some DB problems...'); | |
} | |
return !!$results->count(); | |
} | |
} | |
/* End of file tasks/langfiles2database.php */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment