You are here

protected static function LingotekSync::getQueryCompletedConfigTranslations in Lingotek Translation 7.6

Same name and namespace in other branches
  1. 7.7 lib/Drupal/lingotek/LingotekSync.php \LingotekSync::getQueryCompletedConfigTranslations()
  2. 7.3 lib/Drupal/lingotek/LingotekSync.php \LingotekSync::getQueryCompletedConfigTranslations()
  3. 7.4 lib/Drupal/lingotek/LingotekSync.php \LingotekSync::getQueryCompletedConfigTranslations()
  4. 7.5 lib/Drupal/lingotek/LingotekSync.php \LingotekSync::getQueryCompletedConfigTranslations()

File

lib/Drupal/lingotek/LingotekSync.php, line 499
LingotekSync

Class

LingotekSync
A utility class for Lingotek Syncing.

Code

protected static function getQueryCompletedConfigTranslations($drupal_codes) {

  // return a query object that contains all fully-translated/current strings
  // or ones that were not translated by Lingotek.
  // use the first addtl language as the query's base.
  $first_lang = array_shift($drupal_codes);
  $lingotek_id = LingotekConfigSet::getLingotekTranslationAgentId();
  $primary_or = db_or()
    ->condition('lt0.i18n_status', 0)
    ->condition('lt0.translation_agent_id', $lingotek_id, '!=');
  $query = db_select('locales_target', "lt0")
    ->fields('lt0', array(
    'lid',
  ))
    ->condition('lt0.language', $first_lang)
    ->condition($primary_or);
  $addtl_joins = 0;
  foreach ($drupal_codes as $new_join) {

    // join a new instance of locales_target for each target language
    // where an entry for the language exists for the given lid and
    // it is "current" (ie. i18n_status field is set to 0)
    $addtl_joins++;
    $ja = "lt{$addtl_joins}";

    // join alias
    $join_str = "{$ja}.lid = lt0.lid and {$ja}.language = '{$new_join}' and ({$ja}.i18n_status = 0 or {$ja}.translation_agent_id != {$lingotek_id})";
    $query
      ->join('locales_target', $ja, $join_str);
  }
  return $query;
}