src/Biz/Course/Copy/Chain/CourseSetQuestionCopy.php

(开头部分) 1KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

<?php

namespace Biz\Course\Copy\Chain;

use AppBundle\Common\ArrayToolkit;
use Biz\Course\Copy\AbstractEntityCopy;
use Biz\File\Service\UploadFileService;
use Biz\Question\Service\QuestionService;
use Biz\Testpaper\Service\TestpaperService;

class CourseSetQuestionCopy extends AbstractEntityCopy
{
    /**
     * 复制链说明:
     * CourseSet
     * - Question
     *   - Attachment 问题附件.
     * 由于exercise类型任务的题目列表是使用时自动创建的,因此需要把题目事先复制过去.
     *
     * @param
     */
    protected function copyEntity($source, $config = array())
    {
        $newCourse = $config['newCourse'];

        return $this->doCopyQuestions($newCourse, $source);
    }

    /*
     * $ids = question ids
     * */
    protected function doCopyQuestions($newCourse, $sourceCourse)
    {
        $this->copyParentQuestions($newCourse, $sourceCourse['courseSetId']);
        $this->copyChildrenQuestions($newCourse, $sourceCourse['courseSetId']);

        $questions = $this->getQuestionService()->findQuestionsByCourseSetId($newCourse['courseSetId']);
        $questions = ArrayToolkit::index($questions, 'copyId');

        $this->copyAttachments($questions);

        return $questions;
    }

    protected function copyParentQuestions($newCourse, $sourceCourseSetId)
    {
        $conditions = array(
            'parentId' => 0,
            'courseSetId' => $sourceCourseSetId,
        );
        $parentQuestions = $this->getQuestionService()->search($conditions, array(), 0, PHP_INT_MAX);

        if (empty($parentQuestions)) {
            return;
        }

        $newQuestions = array();
        foreach ($parentQuestions as $question) {
            $newQuestion = $this->processFields($newCourse, $question);
            $newQuestion['parentId'] = 0;

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。