Unverified Commit 3d6f786e authored by Stefan Auditor's avatar Stefan Auditor Committed by Stefan Auditor
Browse files

Issue #3282696 by sanduhrs: Port of l10n_community: Add additional statistics

parent 0a88d046
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -152,4 +152,44 @@ class L10nStatistics {
    return $result->fetchAll();
  }

  /**
   * Get general language statistics.
   *
   * @return array
   *   An array of language statistics.
   */
  public function getLanguageStatistics() {
    $stats = [];
    $stats['users'] = (int) $this->connection->query("SELECT COUNT(DISTINCT uid_entered) FROM {l10n_server_translation}")->fetchField();
    $stats['projects'] = $this->connection->query('SELECT COUNT(*) FROM {l10n_server_project} WHERE status = 1')->fetchField();
    $stats['releases_parsed'] = $this->connection->query('SELECT COUNT(*) FROM {l10n_server_release} WHERE last_parsed != 0')->fetchField();
    $stats['releases_queue'] = $this->connection->query('SELECT COUNT(*) FROM {l10n_server_release} r INNER JOIN {l10n_server_project} p ON r.pid = p.pid WHERE p.status = 1 AND r.last_parsed = 0')->fetchField();
    $stats['files'] = $this->connection->query('SELECT COUNT(*) FROM {l10n_server_file}')->fetchField();
    $stats['strings'] = $this->connection->query('SELECT COUNT(*) FROM {l10n_server_string}')->fetchField();
    $stats['translations'] = $this->connection->query('SELECT COUNT(*) FROM {l10n_server_status_flag} WHERE has_translation = 1')->fetchField();
    $stats['suggestions'] = $this->connection->query('SELECT COUNT(*) FROM {l10n_server_translation} WHERE is_suggestion = 1 AND is_active = 1')->fetchField();
    if (\Drupal::moduleHandler()->moduleExists('l10n_groups')) {
      $stats['groups'] = $this->connection->query('SELECT COUNT(*) FROM {l10n_groups_group}')->fetchField();
    }
    return $stats;
  }

  /**
   * Get language statistics by language.
   *
   * @param string $langcode
   *   A langcode string, e.g. 'en', 'fr' or 'de'.
   *
   * @return array
   *   An array of language statistics.
   */
  public function getLanguageStatisticsByLanguage(string $langcode) {
    $stats = [];
    $stats['strings'] = $this->connection->query('SELECT COUNT(*) FROM {l10n_server_string}')->fetchField();
    $stats['translations'] = $this->connection->query("SELECT COUNT(*) FROM {l10n_server_status_flag} WHERE has_translation = 1 AND language = :language", [':language' => $langcode])->fetchField();
    $stats['suggestions'] = $this->connection->query("SELECT COUNT(*) FROM {l10n_server_translation} WHERE is_suggestion = 1 AND is_active = 1 AND language = :language", [':language' => $langcode])->fetchField();
    $stats['users'] = $this->connection->query("SELECT COUNT(DISTINCT uid_entered) FROM {l10n_server_translation} WHERE is_suggestion = 0 AND is_active = 1 AND language = :language", [':language' => $langcode])->fetchField();
    return $stats;
  }

}