You are here

function _potx_explore_dir in Translation template extractor 6.2

Same name and namespace in other branches
  1. 8 potx.inc \_potx_explore_dir()
  2. 5.2 potx.inc \_potx_explore_dir()
  3. 5 potx.inc \_potx_explore_dir()
  4. 6.3 potx.inc \_potx_explore_dir()
  5. 6 potx.inc \_potx_explore_dir()
  6. 7.3 potx.inc \_potx_explore_dir()
  7. 7 potx.inc \_potx_explore_dir()
  8. 7.2 potx.inc \_potx_explore_dir()

Collect a list of file names relevant for extraction, starting from the given path.

@todo Add folder exceptions for other version control systems.

Parameters

$path: Where to start searching for files recursively. Provide non-empty path values with a trailing slash.

$basename: Allows the restriction of search to a specific basename (ie. to collect files for a specific module).

$api_version: Drupal API version to work with.

2 calls to _potx_explore_dir()
potx-cli.php in ./potx-cli.php
potx_select_form_submit in ./potx.module
Generate translation template or translation file for the requested component.

File

./potx.inc, line 1152
Extraction API used by the web and command line interface.

Code

function _potx_explore_dir($path = '', $basename = '*', $api_version = POTX_API_6) {

  // It would be so nice to just use GLOB_BRACE, but it is not available on all
  // operarting systems, so we are working around the missing functionality.
  $extensions = array(
    'php',
    'inc',
    'module',
    'engine',
    'theme',
    'install',
    'info',
    'profile',
  );
  if ($api_version > POTX_API_5) {
    $extensions[] = 'js';
  }
  $files = array();
  foreach ($extensions as $extension) {
    $files_here = glob($path . $basename . '.' . $extension);
    if (is_array($files_here)) {
      $files = array_merge($files, $files_here);
    }
    if ($basename != '*') {

      // Basename was specific, so look for things like basename.admin.inc as well.
      // If the basnename was *, the above glob() already covered this case.
      $files_here = glob($path . $basename . '.*.' . $extension);
      if (is_array($files_here)) {
        $files = array_merge($files, $files_here);
      }
    }
  }

  // Grab subdirectories.
  $dirs = glob($path . '*', GLOB_ONLYDIR);
  if (is_array($dirs)) {
    foreach ($dirs as $dir) {
      if (!preg_match("!(^|.+/)(CVS|.svn|.git)\$!", $dir)) {
        $files = array_merge($files, _potx_explore_dir("{$dir}/", $basename));
      }
    }
  }

  // Skip our own files, because we don't want to get strings from them
  // to appear in the output, especially with the command line interface.
  // TODO: fix this to be able to autogenerate templates for potx itself.
  foreach ($files as $id => $file_name) {
    if (preg_match('!(potx-cli.php|potx.inc)$!', $file_name)) {
      unset($files[$id]);
    }
  }
  return $files;
}