original_string: protected static function export_user_data_in_course_contexts_associations($userid, $courseids, $path) {
          global $DB;
  
          // Fetch all the courses with associations we created or modified.
          $compfields = competency::get_sql_fields('c', 'c_');
          $ccfields = course_competency::get_sql_fields('cc', 'cc_');
          $ctxfields = context_helper::get_preload_record_columns_sql('ctx');
          list($insql, $inparams) = $DB->get_in_or_equal($courseids, SQL_PARAMS_NAMED);
          $sql = "
              SELECT $compfields, $ccfields, $ctxfields
                FROM {" . course_competency::TABLE . "} cc
                JOIN {" . competency::TABLE . "} c
                  ON c.id = cc.competencyid
                JOIN {" . competency_framework::TABLE . "} f
                  ON f.id = c.competencyframeworkid
                JOIN {context} ctx
                  ON ctx.id = f.contextid
               WHERE cc.usermodified = :userid
                 AND cc.courseid $insql
            ORDER BY cc.courseid, c.id";
          $params = array_merge($inparams, ['userid' => $userid]);
          $recordset = $DB->get_recordset_sql($sql, $params);
  
          // Export the data.
          static::recordset_loop_and_export($recordset, 'cc_courseid', [], function($carry, $record) {
              context_helper::preload_from_record($record);
              $competency = new competency(null, competency::extract_record($record, 'c_'));
              $cc = new course_competency(null, course_competency::extract_record($record, 'cc_'));
              $carry[] = array_merge(static::transform_competency_brief($competency), [
                  'timemodified' => transform::datetime($cc->get('timemodified')),
                  'created_or_modified_by_you' => transform::yesno(true)
              ]);
              return $carry;
  
          }, function($courseid, $data) use ($path, $userid, $DB) {
              $context = context_course::instance($courseid);
              writer::with_context($context)->export_related_data($path, 'associations', (object) ['competencies' => $data]);
          });
      }
code: protected static function export_user_data_in_course_contexts_associations($userid, $courseids, $path) {
          global $DB;
  
          // Fetch all the courses with associations we created or modified.
          $compfields = competency::get_sql_fields('c', 'c_');
          $ccfields = course_competency::get_sql_fields('cc', 'cc_');
          $ctxfields = context_helper::get_preload_record_columns_sql('ctx');
          list($insql, $inparams) = $DB->get_in_or_equal($courseids, SQL_PARAMS_NAMED);
          $sql = "
              SELECT $compfields, $ccfields, $ctxfields
                FROM {" . course_competency::TABLE . "} cc
                JOIN {" . competency::TABLE . "} c
                  ON c.id = cc.competencyid
                JOIN {" . competency_framework::TABLE . "} f
                  ON f.id = c.competencyframeworkid
                JOIN {context} ctx
                  ON ctx.id = f.contextid
               WHERE cc.usermodified = :userid
                 AND cc.courseid $insql
            ORDER BY cc.courseid, c.id";
          $params = array_merge($inparams, ['userid' => $userid]);
          $recordset = $DB->get_recordset_sql($sql, $params);
  
          // Export the data.
          static::recordset_loop_and_export($recordset, 'cc_courseid', [], function($carry, $record) {
              context_helper::preload_from_record($record);
              $competency = new competency(null, competency::extract_record($record, 'c_'));
              $cc = new course_competency(null, course_competency::extract_record($record, 'cc_'));
              $carry[] = array_merge(static::transform_competency_brief($competency), [
                  'timemodified' => transform::datetime($cc->get('timemodified')),
                  'created_or_modified_by_you' => transform::yesno(true)
              ]);
              return $carry;
  
          }, function($courseid, $data) use ($path, $userid, $DB) {
              $context = context_course::instance($courseid);
              writer::with_context($context)->export_related_data($path, 'associations', (object) ['competencies' => $data]);
          });
      }
code_tokens: protected static function export_user_data_in_course_contexts_associations ( $ userid , $ courseids , $ path ) { global $ DB ; // Fetch all the courses with associations we created or modified. $ compfields = competency :: get_sql_fields ( 'c' , 'c_' ) ; $ ccfields = course_competency :: get_sql_fields ( 'cc' , 'cc_' ) ; $ ctxfields = context_helper :: get_preload_record_columns_sql ( 'ctx' ) ; list ( $ insql , $ inparams ) = $ DB -> get_in_or_equal ( $ courseids , SQL_PARAMS_NAMED ) ; $ sql = "
              SELECT $compfields, $ccfields, $ctxfields
                FROM {" . course_competency :: TABLE . "} cc
                JOIN {" . competency :: TABLE . "} c
                  ON c.id = cc.competencyid
                JOIN {" . competency_framework :: TABLE . "} f
                  ON f.id = c.competencyframeworkid
                JOIN {context} ctx
                  ON ctx.id = f.contextid
               WHERE cc.usermodified = :userid
                 AND cc.courseid $insql
            ORDER BY cc.courseid, c.id" ; $ params = array_merge ( $ inparams , [ 'userid' => $ userid ] ) ; $ recordset = $ DB -> get_recordset_sql ( $ sql , $ params ) ; // Export the data. static :: recordset_loop_and_export ( $ recordset , 'cc_courseid' , [ ] , function ( $ carry , $ record ) { context_helper :: preload_from_record ( $ record ) ; $ competency = new competency ( null , competency :: extract_record ( $ record , 'c_' ) ) ; $ cc = new course_competency ( null , course_competency :: extract_record ( $ record , 'cc_' ) ) ; $ carry [ ] = array_merge ( static :: transform_competency_brief ( $ competency ) , [ 'timemodified' => transform :: datetime ( $ cc -> get ( 'timemodified' ) ) , 'created_or_modified_by_you' => transform :: yesno ( true ) ] ) ; return $ carry ; } , function ( $ courseid , $ data ) use ( $ path , $ userid , $ DB ) { $ context = context_course :: instance ( $ courseid ) ; writer :: with_context ( $ context ) -> export_related_data ( $ path , 'associations' , ( object ) [ 'competencies' => $ data ] ) ; } ) ; }
docstring: Export user data in course contexts related to linked competencies.
  
  @param int $userid The user ID.
  @param array $courseids The course IDs.
  @param array $path The root path to export at.
  @return void
docstring_tokens: Export user data in course contexts related to linked competencies .