You are here

function _geshifilter_get_available_languages in GeSHi Filter for syntax highlighting 6

Same name and namespace in other branches
  1. 5.2 geshifilter.inc \_geshifilter_get_available_languages()
  2. 7 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

4 calls to _geshifilter_get_available_languages()
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 66
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 = _geshifilter_check_geshi_library();
    $available_languages = array();
    if ($geshi_library['success']) {
      $dirs = array(
        _geshifilter_get_geshi_dir() . '/geshi',
        drupal_get_path('module', 'geshifilter') . '/geshi-extra',
      );
      foreach ($dirs as $dir) {
        foreach (file_scan_directory($dir, '\\.[pP][hH][pP]$') 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;
}