public static function LingotekSync::getEntityTargetCountByStatus in Lingotek Translation 7.5
Same name and namespace in other branches
- 7.7 lib/Drupal/lingotek/LingotekSync.php \LingotekSync::getEntityTargetCountByStatus()
- 7.6 lib/Drupal/lingotek/LingotekSync.php \LingotekSync::getEntityTargetCountByStatus()
Get a count of translation targets by entity and status.
Parameters
mixed $status: a string or array of strings containing the desired status(es) to count
string $lingotek_locale: the desired locale to count
string $entity_type: the desired entity type to count
Return value
array
1 call to LingotekSync::getEntityTargetCountByStatus()
- LingotekSync::getCountsByStatus in lib/
Drupal/ lingotek/ LingotekSync.php
File
- lib/
Drupal/ lingotek/ LingotekSync.php, line 336 - LingotekSync
Class
- LingotekSync
- A utility class for Lingotek Syncing.
Code
public static function getEntityTargetCountByStatus($status, $lingotek_locale, $entity_type = NULL) {
if (!is_array($status)) {
$status = array(
-1,
$status,
);
}
$managed_entities = lingotek_managed_entity_types();
$drupal_language_code = Lingotek::convertLingotek2Drupal($lingotek_locale);
$target_prefix = 'target_sync_status_';
$target_key = $target_prefix . $lingotek_locale;
$q = array();
$total_count = 0;
foreach ($managed_entities as $m_entity_type => $properties) {
if (!is_null($entity_type) && $entity_type != $m_entity_type) {
continue;
}
$entity_base_table = $properties['base table'];
$query = db_select('{' . $entity_base_table . '}', 't');
$query
->leftJoin('{lingotek_entity_metadata}', 'l', 'l.entity_id = ' . $properties['entity keys']['id'] . ' AND l.entity_type = \'' . $m_entity_type . '\'' . ' AND l.entity_key = \'' . $target_key . '\' ');
// exclude translation sets (only for nodes)
if ($entity_base_table == 'node') {
$tnid_query = db_or();
$tnid_query
->condition('t.tnid', 0);
$tnid_query
->where('t.tnid = t.nid');
$query
->condition($tnid_query);
}
// exclude disabled nodes (including those that have disabled bundles)
$disabled_entities = lingotek_get_entities_by_profile_and_entity_type(LingotekSync::PROFILE_DISABLED, $entity_base_table);
if (!empty($disabled_entities)) {
$disabled_entity_ids = array();
array_walk($disabled_entities, function ($a) use (&$disabled_entity_ids) {
$disabled_entity_ids[] = $a['id'];
});
$query
->condition("t." . $properties['entity keys']['id'], $disabled_entity_ids, "NOT IN");
//exclude disabled entities
}
$query
->condition('l.value', $status, 'IN');
$count = $query
->countQuery()
->execute()
->fetchField();
$total_count += $count;
}
return $total_count;
}