function _geshifilter_get_available_languages in GeSHi Filter for syntax highlighting 7
Same name and namespace in other branches
- 5.2 geshifilter.inc \_geshifilter_get_available_languages()
- 6 geshifilter.inc \_geshifilter_get_available_languages()
List of available languages.
Return value
an array mapping language code to array with the language path and full language name.
5 calls to _geshifilter_get_available_languages()
- geshifilter_per_filter_language_settings_validate in ./
geshifilter.admin.inc - Validate function for per filter language settings.
- geshifilter_per_language_settings in ./
geshifilter.admin.inc - Function for generating a form table for per language settings.
- geshifilter_per_language_settings_validate in ./
geshifilter.admin.inc - Validate function for per language settings.
- _geshifilter_geshi_factory in ./
geshifilter.inc - Helper function for generating a GeSHi object.
- _geshifilter_get_enabled_languages in ./
geshifilter.inc - List of enabled languages. (with caching)
File
- ./
geshifilter.inc, line 13 - General GeSHi filter helper functions.
Code
function _geshifilter_get_available_languages() {
// try to get it from cache (database actually)
$available_languages = variable_get('geshifilter_available_languages_cache', NULL);
if ($available_languages === NULL) {
// not in cache: build the array of available_languages
$geshi_library = libraries_load('geshi');
$available_languages = array();
if ($geshi_library['loaded']) {
$dirs = array(
$geshi_library['library path'] . '/geshi',
drupal_get_path('module', 'geshifilter') . '/geshi-extra',
);
foreach ($dirs as $dir) {
foreach (file_scan_directory($dir, '/.[pP][hH][pP]$/i') as $filename => $fileinfo) {
// short name
$name = $fileinfo->name;
// get full name
$geshi = new GeSHi('', $name);
$geshi
->set_language_path($dir);
$fullname = $geshi
->get_language_name();
unset($geshi);
// store
$available_languages[$name] = array(
'language_path' => $dir,
'fullname' => $fullname,
);
}
}
ksort($available_languages);
// save array to database
variable_set('geshifilter_available_languages_cache', $available_languages);
}
}
return $available_languages;
}