function opigno_learning_path_completed_on in Opigno Learning path 8
Same name and namespace in other branches
- 3.x opigno_learning_path.module \opigno_learning_path_completed_on()
Calculates learning path completion date.
Parameters
int $group_id: Group ID.
int $uid: User ID.
Return value
int Completion time.
Throws
\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
\Drupal\Component\Plugin\Exception\PluginException
\Drupal\Component\Plugin\Exception\PluginNotFoundException
6 calls to opigno_learning_path_completed_on()
- opigno_learning_path_group_access in ./opigno_learning_path.module 
- Restricts user access to Learning Path and it's content.
- opigno_learning_path_preprocess_opigno_certificate in ./opigno_learning_path.module 
- Implements template_preprocess_HOOK().
- opigno_learning_path_save_achievements in ./opigno_learning_path.module 
- Stores training achievements data.
- Progress::getProgressBuildAchievementsPage in src/Progress.php 
- Get get progress for achievements page.
- Progress::getProgressBuildGroupPage in src/Progress.php 
- Get get progress for group page.
File
- ./opigno_learning_path.module, line 3187 
- Contains opigno_learning_path.module.
Code
function opigno_learning_path_completed_on($group_id, $uid, $only_mandatory = FALSE) {
  // Get all mandatory steps.
  $steps = opigno_learning_path_get_steps($group_id, $uid);
  $mandatory_steps = array_filter($steps, function ($step) {
    return $step['mandatory'];
  });
  $completed_on = 0;
  // If has mandatory steps.
  if (!empty($mandatory_steps)) {
    $completed_steps = array_filter($mandatory_steps, function ($step) {
      return $step['completed on'] > 0;
    });
    // If all mandatory steps completed.
    if (count($completed_steps) === count($mandatory_steps)) {
      // Get completion time of the last step.
      if (!$only_mandatory) {
        $completed_on = max(array_map(function ($step) {
          return $step['completed on'];
        }, $steps));
      }
      else {
        $completed_on = max(array_map(function ($step) {
          return $step['completed on'];
        }, $mandatory_steps));
      }
    }
  }
  return $completed_on;
}