You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
5.6 KiB
123 lines
5.6 KiB
<?php
|
|
/* For licensing terms, see /license.txt */
|
|
|
|
use Brumann\Polyfill\Unserialize;
|
|
|
|
/**
|
|
* Class UnserializeApi.
|
|
*/
|
|
class UnserializeApi
|
|
{
|
|
/**
|
|
* Unserialize content using Brummann\Polyfill\Unserialize.
|
|
*
|
|
* @param string $type
|
|
* @param string $serialized
|
|
* @param bool $ignoreErrors. Optional.
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function unserialize($type, $serialized, $ignoreErrors = false)
|
|
{
|
|
$allowedClasses = [];
|
|
|
|
switch ($type) {
|
|
case 'career':
|
|
case 'sequence_graph':
|
|
$allowedClasses = [
|
|
\Fhaculty\Graph\Graph::class,
|
|
\Fhaculty\Graph\Set\VerticesMap::class,
|
|
\Fhaculty\Graph\Set\Vertices::class,
|
|
\Fhaculty\Graph\Set\Edges::class,
|
|
\Fhaculty\Graph\Vertex::class,
|
|
\Fhaculty\Graph\Edge\Base::class,
|
|
\Fhaculty\Graph\Edge\Directed::class,
|
|
\Fhaculty\Graph\Edge\Undirected::class,
|
|
];
|
|
break;
|
|
case 'course':
|
|
$allowedClasses = [
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Course::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Announcement::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Asset::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Attendance::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\CalendarEvent::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\CourseCopyLearnpath::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\CourseCopyTestCategory::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\CourseDescription::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\CourseSession::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Document::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Forum::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\ForumCategory::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\ForumPost::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\ForumTopic::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Glossary::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\GradeBookBackup::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\LearnPathCategory::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Link::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\LinkCategory::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Quiz::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\QuizQuestion::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\QuizQuestionOption::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\ScormDocument::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Survey::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\SurveyInvitation::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\SurveyQuestion::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Thematic::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\ToolIntro::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Wiki::class,
|
|
\Chamilo\CourseBundle\Component\CourseCopy\Resources\Work::class,
|
|
\Chamilo\CourseBundle\Entity\CLpCategory::class,
|
|
stdClass::class,
|
|
Category::class,
|
|
AttendanceLink::class,
|
|
DropboxLink::class,
|
|
Evaluation::class,
|
|
ExerciseLink::class,
|
|
ForumThreadLink::class,
|
|
LearnpathLink::class,
|
|
LinkFactory::class,
|
|
Result::class,
|
|
StudentPublicationLink::class,
|
|
SurveyLink::class,
|
|
];
|
|
// no break
|
|
case 'lp':
|
|
$allowedClasses = array_merge(
|
|
$allowedClasses,
|
|
[
|
|
learnpath::class,
|
|
learnpathItem::class,
|
|
aicc::class,
|
|
aiccBlock::class,
|
|
aiccItem::class,
|
|
aiccObjective::class,
|
|
aiccResource::class,
|
|
scorm::class,
|
|
scormItem::class,
|
|
scormMetadata::class,
|
|
scormOrganization::class,
|
|
scormResource::class,
|
|
Link::class,
|
|
LpItem::class,
|
|
]
|
|
);
|
|
break;
|
|
case 'not_allowed_classes':
|
|
default:
|
|
$allowedClasses = false;
|
|
}
|
|
|
|
if ($ignoreErrors) {
|
|
return @Unserialize::unserialize(
|
|
$serialized,
|
|
['allowed_classes' => $allowedClasses]
|
|
);
|
|
}
|
|
|
|
return Unserialize::unserialize(
|
|
$serialized,
|
|
['allowed_classes' => $allowedClasses]
|
|
);
|
|
}
|
|
}
|
|
|