original_string: public static function get_user_plan($workshopid, $userid = 0) {
          global $USER;
  
          $params = array(
              'workshopid' => $workshopid,
              'userid' => $userid,
          );
          $params = self::validate_parameters(self::get_user_plan_parameters(), $params);
  
          list($workshop, $course, $cm, $context) = self::validate_workshop($params['workshopid']);
  
          // Extra checks so only users with permissions can view other users plans.
          if (empty($params['userid']) || $params['userid'] == $USER->id) {
              $userid = $USER->id;
          } else {
              require_capability('moodle/course:manageactivities', $context);
              $user = core_user::get_user($params['userid'], '*', MUST_EXIST);
              core_user::require_active_user($user);
              if (!$workshop->check_group_membership($user->id)) {
                  throw new moodle_exception('notingroup');
              }
              $userid = $user->id;
          }
  
          // Get the user plan information ready for external functions.
          $userplan = new workshop_user_plan($workshop, $userid);
          $userplan = array('phases' => $userplan->phases, 'examples' => $userplan->get_examples());
          foreach ($userplan['phases'] as $phasecode => $phase) {
              $phase->code = $phasecode;
              $userplan['phases'][$phasecode] = (array) $phase;
              foreach ($userplan['phases'][$phasecode]['tasks'] as $taskcode => $task) {
                  $task->code = $taskcode;
                  if ($task->link instanceof moodle_url) {
                      $task->link = $task->link->out(false);
                  }
                  $userplan['phases'][$phasecode]['tasks'][$taskcode] = (array) $task;
              }
              foreach ($userplan['phases'][$phasecode]['actions'] as $actioncode => $action) {
                  if ($action->url instanceof moodle_url) {
                      $action->url = $action->url->out(false);
                  }
                  $userplan['phases'][$phasecode]['actions'][$actioncode] = (array) $action;
              }
          }
  
          $result['userplan'] = $userplan;
          $result['warnings'] = array();
          return $result;
      }
code: public static function get_user_plan($workshopid, $userid = 0) {
          global $USER;
  
          $params = array(
              'workshopid' => $workshopid,
              'userid' => $userid,
          );
          $params = self::validate_parameters(self::get_user_plan_parameters(), $params);
  
          list($workshop, $course, $cm, $context) = self::validate_workshop($params['workshopid']);
  
          // Extra checks so only users with permissions can view other users plans.
          if (empty($params['userid']) || $params['userid'] == $USER->id) {
              $userid = $USER->id;
          } else {
              require_capability('moodle/course:manageactivities', $context);
              $user = core_user::get_user($params['userid'], '*', MUST_EXIST);
              core_user::require_active_user($user);
              if (!$workshop->check_group_membership($user->id)) {
                  throw new moodle_exception('notingroup');
              }
              $userid = $user->id;
          }
  
          // Get the user plan information ready for external functions.
          $userplan = new workshop_user_plan($workshop, $userid);
          $userplan = array('phases' => $userplan->phases, 'examples' => $userplan->get_examples());
          foreach ($userplan['phases'] as $phasecode => $phase) {
              $phase->code = $phasecode;
              $userplan['phases'][$phasecode] = (array) $phase;
              foreach ($userplan['phases'][$phasecode]['tasks'] as $taskcode => $task) {
                  $task->code = $taskcode;
                  if ($task->link instanceof moodle_url) {
                      $task->link = $task->link->out(false);
                  }
                  $userplan['phases'][$phasecode]['tasks'][$taskcode] = (array) $task;
              }
              foreach ($userplan['phases'][$phasecode]['actions'] as $actioncode => $action) {
                  if ($action->url instanceof moodle_url) {
                      $action->url = $action->url->out(false);
                  }
                  $userplan['phases'][$phasecode]['actions'][$actioncode] = (array) $action;
              }
          }
  
          $result['userplan'] = $userplan;
          $result['warnings'] = array();
          return $result;
      }
code_tokens: public static function get_user_plan ( $ workshopid , $ userid = 0 ) { global $ USER ; $ params = array ( 'workshopid' => $ workshopid , 'userid' => $ userid , ) ; $ params = self :: validate_parameters ( self :: get_user_plan_parameters ( ) , $ params ) ; list ( $ workshop , $ course , $ cm , $ context ) = self :: validate_workshop ( $ params [ 'workshopid' ] ) ; // Extra checks so only users with permissions can view other users plans. if ( empty ( $ params [ 'userid' ] ) || $ params [ 'userid' ] == $ USER -> id ) { $ userid = $ USER -> id ; } else { require_capability ( 'moodle/course:manageactivities' , $ context ) ; $ user = core_user :: get_user ( $ params [ 'userid' ] , '*' , MUST_EXIST ) ; core_user :: require_active_user ( $ user ) ; if ( ! $ workshop -> check_group_membership ( $ user -> id ) ) { throw new moodle_exception ( 'notingroup' ) ; } $ userid = $ user -> id ; } // Get the user plan information ready for external functions. $ userplan = new workshop_user_plan ( $ workshop , $ userid ) ; $ userplan = array ( 'phases' => $ userplan -> phases , 'examples' => $ userplan -> get_examples ( ) ) ; foreach ( $ userplan [ 'phases' ] as $ phasecode => $ phase ) { $ phase -> code = $ phasecode ; $ userplan [ 'phases' ] [ $ phasecode ] = ( array ) $ phase ; foreach ( $ userplan [ 'phases' ] [ $ phasecode ] [ 'tasks' ] as $ taskcode => $ task ) { $ task -> code = $ taskcode ; if ( $ task -> link instanceof moodle_url ) { $ task -> link = $ task -> link -> out ( false ) ; } $ userplan [ 'phases' ] [ $ phasecode ] [ 'tasks' ] [ $ taskcode ] = ( array ) $ task ; } foreach ( $ userplan [ 'phases' ] [ $ phasecode ] [ 'actions' ] as $ actioncode => $ action ) { if ( $ action -> url instanceof moodle_url ) { $ action -> url = $ action -> url -> out ( false ) ; } $ userplan [ 'phases' ] [ $ phasecode ] [ 'actions' ] [ $ actioncode ] = ( array ) $ action ; } } $ result [ 'userplan' ] = $ userplan ; $ result [ 'warnings' ] = array ( ) ; return $ result ; }
docstring: Return the planner information for the given user.
  
  @param int $workshopid workshop instance id
  @param int $userid user id
  @return array of warnings and the user plan
  @since Moodle 3.4
  @throws  moodle_exception
docstring_tokens: Return the planner information for the given user .