You are here

function maestro_maestro_post_production_assignments in Maestro 3.x

Same name and namespace in other branches
  1. 8.2 maestro.module \maestro_maestro_post_production_assignments()

Implements hook_maestro_post_production_assignments().

File

./maestro.module, line 129
Provides glue logic, hook implementation and core set process variable functions.

Code

function maestro_maestro_post_production_assignments($templateMachineName, $taskID, $queueID) {
  global $base_url;

  // For our Maestro implementation, we are concerned only with the content type task
  // We need to detect if there is an already existing task that has created a piece of content
  // that matches the unique_id and content type.  If so, we alter the handler from the
  // default handler the task template provided to a handler that allows the console to edit the existing
  // content and still tack on the appropriate maestro hooks.
  $task = MaestroEngine::getTemplateTaskByID($templateMachineName, $taskID);
  if ($task['tasktype'] == 'MaestroContentType') {

    // let's see if this process has any variables that align to the template task's uniqueID requirements for the content type task.
    $processID = MaestroEngine::getProcessIdFromQueueId($queueID);
    $uniqueIdentifier = $task['data']['unique_id'];
    $contentType = $task['data']['content_type'];
    $entityIdentifier = MaestroEngine::getEntityIdentiferByUniqueID($processID, $uniqueIdentifier);
    if ($entityIdentifier) {

      // We have a match.  adjust the queue item's handler to suit.
      $queueRecord = \Drupal::entityTypeManager()
        ->getStorage('maestro_queue')
        ->load($queueID);
      if (isset($task['data']['link_to_edit']) && $task['data']['link_to_edit'] == 1) {
        $queueRecord
          ->set('handler', $base_url . '/node/' . intval($entityIdentifier) . '/edit?maestro=1&queueid=' . $queueID);
      }
      else {
        $queueRecord
          ->set('handler', $base_url . '/node/' . intval($entityIdentifier) . '?maestro=1');
      }
      $queueRecord
        ->save();
    }
  }
}