Skip to content

Commit

Permalink
Merge pull request #3018 from ec-europa/release-2.6.17-Hotfix-1
Browse files Browse the repository at this point in the history
NEPT-2955: Release 2.6.17 hotfix 1
  • Loading branch information
Fefaine committed Jan 25, 2022
2 parents 5e6dfc1 + 7ed0d12 commit 9cd86b6
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 68 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public function translationReceived(TranslationReceived $message) {
$reference = $message->getIdentifier()->getFormattedIdentifier();

// Get main job in order to register the messages and get translator.
$main_reference = 'MAIN_%_POETRY_%' . $reference;
$main_reference = db_like('MAIN_') . '%' . db_like('_POETRY_' . $reference);
$targets = $message->getTargets();
/** @var \EC\Poetry\Messages\Components\Target $target */
$target = current($targets);
Expand Down Expand Up @@ -66,13 +66,25 @@ public function translationReceived(TranslationReceived $message) {
return FALSE;
}

// Get main job.
// Get the job.
$language_job = $translator->mapToLocalLanguage(drupal_strtolower($target->getLanguage()));
$ids = tmgmt_poetry_obtain_related_translation_jobs(array($language_job), $reference)
$reference_arg = '%' . db_like('_' . $reference);
$ids = tmgmt_poetry_obtain_related_translation_jobs(array($language_job), $reference_arg)
->fetchAll();
$main_ids = $ids[0];
$job = tmgmt_job_load($main_ids->tjid);
$job_item = tmgmt_job_item_load($main_ids->tjiid);

if (empty($ids)) {
watchdog(
"tmgmt_poetry",
"Callback can't find a job with the reference !reference.",
array('!reference' => $reference_arg),
WATCHDOG_ERROR
);
return FALSE;
}

$job_ids = $ids[0];
$job = tmgmt_job_load($job_ids->tjid);
$job_item = tmgmt_job_item_load($job_ids->tjiid);

// Import content using controller.
$imported_file = base64_decode($target->getTranslatedFile());
Expand Down Expand Up @@ -208,7 +220,7 @@ public function statusUpdated(StatusUpdated $message) {
$attributions_statuses = $message->getAttributionStatuses();

// Get main job in order to register the messages.
$main_reference = 'MAIN_%_POETRY_%' . $reference;
$main_reference = db_like('MAIN_') . '%' . db_like('_POETRY_' . $reference);
$languages_jobs = array();
/** @var \EC\Poetry\Messages\Components\Status $attribution_status */
foreach ($attributions_statuses as $attribution_status) {
Expand Down Expand Up @@ -308,20 +320,18 @@ public function statusUpdated(StatusUpdated $message) {
);

if ($cancelled) {
$reference = '%' . $reference;

$ids = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference)
$reference_arg = '%' . db_like('_' . $reference);
$ids = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference_arg)
->fetchAll();
foreach ($ids as $id) {
$job = tmgmt_job_load($id->tjid);
$job->aborted(t('Request aborted by DGT.'), array());
}
}
elseif ($main_job->isAborted()) {
$reference = '%' . $reference;
$ids = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference)
$reference_arg = '%' . db_like('_' . $reference);
$ids = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference_arg)
->fetchAll();

foreach ($ids as $id) {
$reopen_job = tmgmt_job_load($id->tjid);
$reopen_job->setState(
Expand All @@ -335,14 +345,19 @@ public function statusUpdated(StatusUpdated $message) {

// 3. Check Status for specific languages.
foreach ($attributions_statuses as $attribution_status) {
$reference_arg = '%' . db_like('_' . $reference);
$language_code = drupal_strtolower($attribution_status->getLanguage());
$language_code = $translator->mapToLocalLanguage($language_code);
$language_job = array($language_code);

$ids = tmgmt_poetry_obtain_related_translation_jobs($language_job, $reference)
$ids = tmgmt_poetry_obtain_related_translation_jobs($language_job, $reference_arg)
->fetchAll();

if (empty($ids)) {
continue;
}

$ids = array_shift($ids);
$job = tmgmt_job_load($ids->tjid);
$job_item = tmgmt_job_item_load($ids->tjiid);

$main_job->addMessage(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ class TMGMTPoetryJobController extends TMGMTJobController {

$ids_iterate = $ids;
foreach ($ids_iterate as $id_iterate) {
$related_jobs = tmgmt_poetry_obtain_related_translation_jobs(array(), 'SUB_' . $id_iterate, TRUE)->fetchAll();
$reference = db_like('SUB_' . $id_iterate);
$related_jobs = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference, TRUE)->fetchAll();
foreach ($related_jobs as $related_job) {
$ids[] = $related_job->tjid;
}
Expand Down Expand Up @@ -69,7 +70,8 @@ class TMGMTPoetryJobController extends TMGMTJobController {
// Check if job is already created
// and in that case don't create it again, just update it.
// The update is useful for #card .
$result = tmgmt_poetry_obtain_related_translation_jobs(array($requested_language), 'SUB_' . $origin_job->tjid);
$reference = db_like('SUB_' . $origin_job->tjid);
$result = tmgmt_poetry_obtain_related_translation_jobs(array($requested_language), $reference, TRUE);
if ($result->rowCount() > 0) {
$row = $result->fetchAssoc();
$job = tmgmt_job_load($row['tjid']);
Expand Down Expand Up @@ -102,7 +104,8 @@ class TMGMTPoetryJobController extends TMGMTJobController {
// we should update the related additional sub translation jobs
// with a reference returned by poetry.
if ($origin_job->state !== TMGMT_JOB_STATE_UNPROCESSED && (strpos($origin_job->reference, 'MAIN_' . $origin_job->tjid . '_POETRY') !== FALSE)) {
$jobs = tmgmt_poetry_obtain_related_translation_jobs(array(), 'SUB_' . $origin_job->tjid, TRUE);
$reference = db_like('SUB_' . $origin_job->tjid);
$jobs = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference, TRUE)->fetchAll();
foreach ($jobs as $ids) {
$job = tmgmt_job_load($ids->tjid);
$initial_reference = $job->reference;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,9 @@ function FPFISPoetryIntegrationRequest($user, $password, $msg) {
}

// Get main job in order to register the messages.
$main_reference = 'MAIN_%_POETRY_%' . $reference;
$main_reference = db_like('MAIN_') . '%' . db_like('_POETRY_' . $reference);
$language_job = $request->status['lgCode'];
$ids = tmgmt_poetry_obtain_related_translation_jobs($language_job, $reference)
$ids = tmgmt_poetry_obtain_related_translation_jobs($language_job, $main_reference)
->fetchAll();

// Handling the case where we can't find the corresponding job.
Expand Down Expand Up @@ -214,20 +214,18 @@ function FPFISPoetryIntegrationRequest($user, $password, $msg) {
);

if ($cancelled) {
$reference = '%' . $reference;

$ids = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference)
$reference_arg = '%' . db_like('_' . $reference);
$ids = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference_arg)
->fetchAll();
foreach ($ids as $id) {
$job = tmgmt_job_load($id->tjid);
$job->aborted(t('Request aborted by DGT.'), array());
}
}
elseif ($message_job->isAborted()) {
$reference = '%' . $reference;
$ids = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference)
$reference_arg = '%' . db_like('_' . $reference);
$ids = tmgmt_poetry_obtain_related_translation_jobs(array(), $reference_arg)
->fetchAll();

foreach ($ids as $id) {
$reopen_job = tmgmt_job_load($id->tjid);
$reopen_job->setState(
Expand All @@ -244,16 +242,16 @@ function FPFISPoetryIntegrationRequest($user, $password, $msg) {
// </STATUS> - type:attribution.
if ($status['type'] == 'attribution') {
if (!empty($status['lgCode'])) {
$reference = '%' . $reference;
$reference_arg = '%' . db_like('_' . $reference);
$language_code = drupal_strtolower((string) $status['lgCode']);
$language_code = $poetry_translator->mapToLocalLanguage($language_code);
$language_job = array($language_code);
}
else {
$reference = 'MAIN_%_POETRY_%' . $reference;
$reference_arg = db_like('MAIN_') . '%' . db_like('_POETRY_' . $reference);
$language_job = array();
}
$ids = tmgmt_poetry_obtain_related_translation_jobs($language_job, $reference)
$ids = tmgmt_poetry_obtain_related_translation_jobs($language_job, $reference_arg)
->fetchAll();
$ids = array_shift($ids);
$job = tmgmt_job_load($ids->tjid);
Expand Down Expand Up @@ -282,12 +280,12 @@ function FPFISPoetryIntegrationRequest($user, $password, $msg) {
// Check the attributions to look for translations and delai confirmations.
// </ATTRIBUTIONS>.
foreach ($request->attributions as $attributions) {
$reference = '%' . $reference;
$reference_arg = '%' . db_like('_' . $reference);
$language_code = drupal_strtolower((string) $attributions['lgCode']);
$language_code = $poetry_translator->mapToLocalLanguage($language_code);
$language_job = array($language_code);

$ids = tmgmt_poetry_obtain_related_translation_jobs($language_job, $reference)
$ids = tmgmt_poetry_obtain_related_translation_jobs($language_job, $reference_arg)
->fetchAll();
$ids = array_shift($ids);
$job = tmgmt_job_load($ids->tjid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,8 @@ class TMGMTPoetryTranslatorUIController extends TMGMTDefaultTranslatorUIControll
continue;
}

$language_job_ids = tmgmt_poetry_obtain_related_translation_jobs(array($language->language), '%' . str_replace('MAIN_', '', $job->reference))->fetchAll();
$reference = '%' . db_like('_' . str_replace('MAIN_', '', $job->reference));
$language_job_ids = tmgmt_poetry_obtain_related_translation_jobs(array($language->language), $reference)->fetchAll();
if (count($language_job_ids) > 0) {
$language_job_id = array_shift($language_job_ids);
$language_job_item = tmgmt_job_item_load($language_job_id->tjiid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,24 +59,6 @@ function tmgmt_poetry_tmgmt_translator_plugin_info() {
);
}

/**
* Implements hook_entity_type_delete().
*
* When main translation job is removed,
* delete also the sub translation if the translator is poetry.
*
* @TODO remove this deletion.
*/
function tmgmt_poetry_tmgmt_job_delete($job) {
if ($job->hasPoetryTranslator() && isset($job->settings['languages']) && (strpos($job->reference, 'MAIN_' . $job->tjid) !== FALSE)) {
$related_jobs = tmgmt_poetry_obtain_related_translation_jobs($job->settings['languages'], 'SUB_' . $job->tjid);
foreach ($related_jobs as $related_job) {
entity_get_controller('tmgmt_job')->delete(array($related_job->tjid));
entity_get_controller('tmgmt_job_item')->delete(array($related_job->tjiid));
}
}
}

/**
* Helper function to retrive a Job based on its reference.
*/
Expand Down Expand Up @@ -357,7 +339,8 @@ function _tmgmt_poetry_form_tmgmt_job_submit($form, &$form_state) {

// If there was already a job item for new target language, delete it.
// This is usefull for the #cart.
$result = tmgmt_poetry_obtain_related_translation_jobs($new_main_lg, 'SUB_' . $origin_job->tjid);
$reference = db_like('SUB_' . $origin_job->tjid);
$result = tmgmt_poetry_obtain_related_translation_jobs($new_main_lg, $reference, TRUE);

if ($row = $result->fetchAssoc()) {
entity_get_controller('tmgmt_job')->delete(array($row['tjid']));
Expand Down Expand Up @@ -442,7 +425,8 @@ function _tmgmt_poetry_form_tmgmt_job_submit($form, &$form_state) {
}

if (!empty($language_targets_to_remove)) {
$result = tmgmt_poetry_obtain_related_translation_jobs($language_targets_to_remove, 'SUB_' . $origin_job->tjid);
$reference = db_like('SUB_' . $origin_job->tjid);
$result = tmgmt_poetry_obtain_related_translation_jobs($language_targets_to_remove, $reference, TRUE)->fetchAll();

// If any, removed found translations.
if ($result) {
Expand Down Expand Up @@ -472,19 +456,19 @@ function _tmgmt_poetry_form_tmgmt_job_submit($form, &$form_state) {
}

/**
* Return related translations by the translated entity id.
* Returns related translation jobs (by the reference).
*
* @param array $languages
* Target languages.
* @param string $reference
* Reference to look for.
* @param bool $not_poetry
* Job does not belong to poetry.
* @param bool $additional_check
* If TRUE, adds a condition to check additional case.
*
* @return mixed
* mixed.
* @return \DatabaseStatementInterface|null
* Executed query to get related jobs.
*/
function tmgmt_poetry_obtain_related_translation_jobs($languages, $reference = '', $not_poetry = FALSE) {
function tmgmt_poetry_obtain_related_translation_jobs($languages, $reference, $additional_check = FALSE) {
$query = db_select('tmgmt_job', 'job');
$query->join('tmgmt_job_item', 'job_item', 'job.tjid = job_item.tjid');
$query->fields('job', array('tjid'));
Expand All @@ -494,12 +478,15 @@ function tmgmt_poetry_obtain_related_translation_jobs($languages, $reference = '
$query->condition('job.target_language', $languages, 'IN');
}

$query->condition('job.reference', '%' . $reference . '%', 'LIKE');

if ($not_poetry) {
$query->condition('job.reference', $reference . '_POETRY_%', 'NOT LIKE');
if ($additional_check) {
$or = db_or();
$or->condition('job.reference', $reference, 'LIKE');
$or->condition('job.reference', $reference . db_like('_POETRY_') . '%', 'LIKE');
$query->condition($or);
}
else {
$query->condition('job.reference', $reference, 'LIKE');
}

return $query->execute();
}

Expand All @@ -526,7 +513,8 @@ function _tmgmt_poetry_tmgmt_job_reject($job, $status_message, $internal_message
}

// Reject the related sub Job.
$related_jobs = tmgmt_poetry_obtain_related_translation_jobs($job->settings['languages'], 'SUB_' . $job->tjid);
$reference = db_like('SUB_' . $job->tjid);
$related_jobs = tmgmt_poetry_obtain_related_translation_jobs($job->settings['languages'], $reference, TRUE)->fetchAll();

foreach ($related_jobs as $related_job) {
$job_rejected = tmgmt_job_load($related_job->tjid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ function tmgmt_poetry_views_query_alter(&$view, &$query) {
db_or()
->condition(
db_or()
->condition('reference', 'SUB_%', 'NOT LIKE')
->condition('reference', db_like('SUB_') . '%', 'NOT LIKE')
->isNull('reference')
)
);
Expand Down
6 changes: 3 additions & 3 deletions tests/features/tmgmt/fast-track_custom-delay.feature
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ Feature: Fast track
And I fill in the content's title with "Test page"
And I fill in "edit-delay-date-und-0-value-day" with "14"
And I fill in "edit-delay-date-und-0-value-month" with "11"
And I fill in "edit-delay-date-und-0-value-year" with "2018"
And I fill in "edit-delay-date-und-0-value-year" with "2019"
And I fill in "edit-delay-date-und-0-value-hour" with "12"
And I fill in "edit-delay-date-und-0-value-minute" with "00"
And I press "Save"
Expand All @@ -168,5 +168,5 @@ Feature: Fast track
| <organisationAuteur>IE/CE/DIGIT</organisationAuteur> |
| <serviceDemandeur>IE/CE/DIGIT</serviceDemandeur> |
| <applicationReference>FPFIS</applicationReference> |
| <delai>14/11/2018</delai> |
| <attributionsDelai>14/11/2018</attributionsDelai> |
| <delai>14/11/2019</delai> |
| <attributionsDelai>14/11/2019</attributionsDelai> |

0 comments on commit 9cd86b6

Please sign in to comment.