You are here

ldap_api.admin.inc in Lightweight Directory Access Protocol (LDAP) 6

Administrative page callbacks for the ldap_api module.

File

ldap_api.admin.inc
View source
<?php

/**
 * @file
 * Administrative page callbacks for the ldap_api module.
 */

/**
 * Implements the info page.
 *
 * @return
 *   The form structure.
 */
function ldap_api_info() {
  drupal_add_css(drupal_get_path('module', 'system') . '/system.css', 'module', 'all', FALSE);
  include_once drupal_get_path('module', 'system') . '/system.admin.inc';
  $data = _ldap_api_get_ldap_settings();
  foreach ($data as $title => $value) {
    if (!is_array($value)) {
      $status[] = array(
        'title' => $title,
        'value' => $value,
      );
    }
  }
  return theme_status_report($status);
}
function _ldap_api_get_ldap_settings() {
  $php_settings = array();
  $phpinfo = _ldap_api_parsePHPModules();
  $php_settings['PHP Version'] = phpversion();
  $php_settings['Drupal Version'] = VERSION;
  $php_settings['LDAP Extension Loaded'] = extension_loaded('ldap') ? 'Yes' : 'No';

  // set status array to be converted into html table.
  if ($phpinfo['Apache Environment']) {
    $php_settings['SERVER_SOFTWARE'] = $phpinfo['Apache Environment']['SERVER_SOFTWARE'];
  }
  elseif ($_SERVER["SERVER_SOFTWARE"]) {
    $php_settings['SERVER_SOFTWARE'] = $_SERVER["SERVER_SOFTWARE"];
  }
  foreach ($phpinfo['ldap'] as $key => $value) {
    $php_settings[$key] = $value[0];
  }
  $modules = module_rebuild_cache();
  $ldapmodules = array(
    'ldap_api',
    'ldap_authn',
    'ldap_authz',
    'ldap_authentication',
    'ldap_authorization',
  );
  foreach ($ldapmodules as $ldapmodule) {
    $php_settings[$ldapmodule]['status'] = $modules[$ldapmodule]->status;
    $php_settings[$ldapmodule]['schema_version'] = $modules[$ldapmodule]->schema_version;
    $php_settings[$ldapmodule]['version'] = $modules[$ldapmodule]->info['version'];
  }
  return $php_settings;
}
function _ldap_api_parsePHPModules() {
  ob_start();
  phpinfo();
  $s = ob_get_contents();
  ob_end_clean();
  $s = strip_tags($s, '<h2><th><td>');
  $s = preg_replace('/<th[^>]*>([^<]+)<\\/th>/', "<info>\\1</info>", $s);
  $s = preg_replace('/<td[^>]*>([^<]+)<\\/td>/', "<info>\\1</info>", $s);
  $vtmp = preg_split('/(<h2>[^<]+<\\/h2>)/', $s, -1, PREG_SPLIT_DELIM_CAPTURE);
  $vmodules = array();
  for ($i = 1; $i < count($vtmp); $i++) {
    if (preg_match('/<h2>([^<]+)<\\/h2>/', $vtmp[$i], $vmat)) {
      $vname = trim($vmat[1]);
      $vtmp2 = explode("\n", $vtmp[$i + 1]);
      foreach ($vtmp2 as $vone) {
        $vpat = '<info>([^<]+)<\\/info>';
        $vpat3 = "/{$vPat}\\s*{$vpat}\\s*{$vpat}/";
        $vpat2 = "/{$vPat}\\s*{$vpat}/";
        if (preg_match($vpat3, $vone, $vmat)) {

          // 3cols
          $vmodules[$vname][trim($vmat[1])] = array(
            trim($vmat[2]),
            trim($vmat[3]),
          );
        }
        elseif (preg_match($vpat2, $vone, $vmat)) {

          // 2cols
          $vmodules[$vname][trim($vmat[1])] = trim($vmat[2]);
        }
      }
    }
  }
  return $vmodules;
}

// vim:fenc=utf-8:ft=php:ai:si:ts=2:sw=2:et:

Functions