Source of file SCO.php

Size: 11,550 Bytes - Last Modified: 2018-11-03T09:50:48-04:00

G:/AdobeConnectClient/src/Entities/SCO.php

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638
<?php

namespace AdobeConnectClient\Entities;

use DateTimeInterface;
use DateTimeImmutable;
use DomainException;
use AdobeConnectClient\ArrayableInterface;
use AdobeConnectClient\Helpers\ValueTransform as VT;
use AdobeConnectClient\Traits\Arrayable as ArrayableTrait;

/**
 * Adobe Connect SCO
 *
 * See {@link https://helpx.adobe.com/adobe-connect/webservices/common-xml-elements-attributes.html#type}
 *
 */
class SCO implements ArrayableInterface
{
    use ArrayableTrait;

    /**
     * A viewable file uploaded to the server.
     * For example, an FLV file, an HTML file, an image, a pod, and so on.
     * @var string
     */
    const TYPE_CONTENT = 'content';

    /**
     * A curriculum.
     * @var string
     */
    const TYPE_CURRICULUM = 'curriculum';

    /**
     * An event.
     * @var string
     */
    const TYPE_EVENT = 'event';

    /**
     * A folder on the server’s hard disk that contains content.
     * @var string
     */
    const TYPE_FOLDER = 'folder';

    /**
     * A reference to another SCO. These links are used by curriculums to link to other SCOs.
     * When content is added to a curriculum, a link is created from the curriculum to the content.
     * @var string
     */
    const TYPE_LINK = 'link';

    /**
     * An Adobe Connect meeting.
     * @var string
     */
    const TYPE_MEETING = 'meeting';

    /**
     * One occurrence of a recurring Adobe Connect meeting.
     * @var string
     */
    const TYPE_SESSION = 'session';

    /**
     * The root of a folder hierarchy. A tree’s root is treated as an independent hierarchy;
     * you can’t determine the parent folder of a tree from inside the tree.
     * @var string
     */
    const TYPE_TREE = 'tree';

    /**
     * @var int
     */
    protected $accountId = null;

    /**
     * @var bool
     */
    protected $disabled = null;

    /**
     * @var int
     */
    protected $displaySeq = null;

    /**
     * @var int
     */
    protected $folderId = null;

    /**
     * @var string
     */
    protected $icon = null;

    /**
     * @var string
     */
    protected $lang = null;

    /**
     * @var int
     */
    protected $maxRetries = null;

    /**
     * @var int
     */
    protected $scoId = null;

    /**
     * @var int
     */
    protected $sourceScoId = null;

    /**
     * @var string
     */
    protected $type = null;

    /**
     * @var string
     */
    protected $version = null;

    /**
     * @var DateTimeImmutable
     */
    protected $dateCreated = null;

    /**
     * @var DateTimeImmutable
     */
    protected $dateModified = null;

    /**
     * @var string
     */
    protected $description = null;

    /**
     * @var string
     */
    protected $name = null;

    /**
     * @var string
     */
    protected $urlPath = null;

    /**
     * @var DateTimeImmutable
     */
    protected $dateBegin = null;

    /**
     * @var DateTimeImmutable
     */
    protected $dateEnd = null;

    /**
     * @var bool
     */
    protected $meetingPodsLayoutsLocked = null;

    /**
     * @var bool
     */
    protected $updateLinkedItem = null;

    /**
     * Create a new SCO Instance
     *
     * @return SCO
     */
    public static function instance()
    {
        return new static;
    }

    /**
     * Get the Account ID
     *
     * @return int
     */
    public function getAccountId()
    {
        return $this->accountId;
    }

    /**
     * Get the  disabled indicator
     *
     * @return bool
     */
    public function getDisabled()
    {
        return $this->disabled;
    }

    /**
     * Get the display sequence
     *
     * @return int
     */
    public function getDisplaySeq()
    {
        return $this->displaySeq;
    }

    /**
     * Get the Folder ID
     *
     * @return int
     */
    public function getFolderId()
    {
        return $this->folderId;
    }

    /**
     * Get the icon
     *
     * @return string
     */
    public function getIcon()
    {
        return $this->icon;
    }

    /**
     * Get the language
     *
     * @return string
     */
    public function getLang()
    {
        return $this->lang;
    }

    /**
     * Get the max retries
     *
     * @return int
     */
    public function getMaxRetries()
    {
        return $this->maxRetries;
    }

    /**
     * Get the SCO ID
     *
     * @return int
     */
    public function getScoId()
    {
        return $this->scoId;
    }

    /**
     * Get the Source ID
     *
     * @return int
     */
    public function getSourceScoId()
    {
        return $this->sourceScoId;
    }

    /**
     * Get the type
     *
     * @return string
     */
    public function getType()
    {
        return $this->type;
    }

    /**
     * Get the version
     *
     * @return string
     */
    public function getVersion()
    {
        return $this->version;
    }

    /**
     * Get the Creation Date
     *
     * @return DateTimeImmutable
     */
    public function getDateCreated()
    {
        return $this->dateCreated;
    }

    /**
     * Get the Modified date
     *
     * @return DateTimeImmutable
     */
    public function getDateModified()
    {
        return $this->dateModified;
    }

    /**
     * Get the description
     *
     * @return string
     */
    public function getDescription()
    {
        return $this->description;
    }

    /**
     * Get the name
     *
     * @return string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Get the URL
     *
     * @return string
     */
    public function getUrlPath()
    {
        return $this->urlPath;
    }

    /**
     * Get the time Begins the meeting
     *
     * @return DateTimeImmutable
     */
    public function getDateBegin()
    {
        return $this->dateBegin;
    }

    /**
     * Get the time End the meeting
     *
     * @return DateTimeImmutable
     */
    public function getDateEnd()
    {
        return $this->dateEnd;
    }

    /**
     * Get the Pod layout locked status
     *
     * @return bool
     */
    public function getMeetingPodsLayoutsLocked()
    {
        return $this->meetingPodsLayoutsLocked;
    }

    /**
     * Get the linked item update status
     *
     * @return bool
     */
    public function getUpdateLinkedItem()
    {
        return $this->updateLinkedItem;
    }

    /**
     * Set the Account ID
     *
     * @param int $accountId The account ID
     * @return SCO
     */
    public function setAccountId($accountId)
    {
        $this->accountId = (int) $accountId;
        return $this;
    }

    /**
     * Set the disabled status
     *
     * @param bool $disabled
     * @return SCO
     */
    public function setDisabled($disabled)
    {
        $this->disabled = VT::toBool($disabled);
        return $this;
    }

    /**
     * Set the Display Sequence
     *
     * @param int $displaySeq
     * @return SCO
     */
    public function setDisplaySeq($displaySeq)
    {
        $this->displaySeq = (int) $displaySeq;
        return $this;
    }

    /**
     * Set the Folder ID
     *
     * @param int $folderId
     * @return SCO
     */
    public function setFolderId($folderId)
    {
        $this->folderId = (int) $folderId;
        return $this;
    }

    /**
     * Set the Icon
     *
     * @param string $icon
     * @return SCO
     */
    public function setIcon($icon)
    {
        $this->icon = (string) $icon;
        return $this;
    }

    /**
     * Set the Language
     *
     * @param string $lang
     * @return SCO
     */
    public function setLang($lang)
    {
        $this->lang = (string) $lang;
        return $this;
    }

    /**
     * Set the Max retries
     *
     * @param int $maxRetries
     * @return SCO
     */
    public function setMaxRetries($maxRetries)
    {
        $this->maxRetries = (int) $maxRetries;
        return $this;
    }

    /**
     * Set the SCO ID
     *
     * @param int $scoId
     * @return SCO
     */
    public function setScoId($scoId)
    {
        $this->scoId = (int) $scoId;
        return $this;
    }

    /**
     * Set the Source ID
     * @param int $sourceScoId
     * @return SCO
     */
    public function setSourceScoId($sourceScoId)
    {
        $this->sourceScoId = (int) $sourceScoId;
        return $this;
    }

    /**
     * Set the Type
     *
     * @param string $type
     * @return SCO
     * @throws DomainException
     */
    public function setType($type)
    {
        if (!in_array(
            $type,
            [
                self::TYPE_CONTENT,
                self::TYPE_CURRICULUM,
                self::TYPE_EVENT,
                self::TYPE_FOLDER,
                self::TYPE_LINK,
                self::TYPE_MEETING,
                self::TYPE_SESSION,
                self::TYPE_TREE
            ]
        )) {
            throw new DomainException("{$type} isn't a valid SCO Type");
        }
        $this->type = $type;
        return $this;
    }

    /**
     * Set the Version
     *
     * @param string $version
     * @return SCO
     */
    public function setVersion($version)
    {
        $this->version = (string) $version;
        return $this;
    }

    /**
     * Set the Created Date
     *
     * @param DateTimeInterface|string $dateCreated
     * @return SCO
     */
    public function setDateCreated($dateCreated)
    {
        $this->dateCreated = VT::toDateTimeImmutable($dateCreated);
        return $this;
    }

    /**
     * Set the Modified Date
     *
     * @param DateTimeInterface|string $dateModified
     * @return SCO
     */
    public function setDateModified($dateModified)
    {
        $this->dateModified = VT::toDateTimeImmutable($dateModified);
        return $this;
    }

    /**
     * Set the Description
     *
     * @param string $description
     * @return SCO
     */
    public function setDescription($description)
    {
        $this->description = (string) $description;
        return $this;
    }

    /**
     * Set the Name
     *
     * @param string $name
     * @return SCO
     */
    public function setName($name)
    {
        $this->name = (string) $name;
        return $this;
    }

    /**
     * Set the URL
     *
     * @param string $urlPath
     * @return SCO
     */
    public function setUrlPath($urlPath)
    {
        $this->urlPath = (string) $urlPath;
        return $this;
    }

    /**
     * Set the time Meeting begin
     *
     * @param DateTimeInterface|string $dateBegin
     * @return SCO
     */
    public function setDateBegin($dateBegin)
    {
        $this->dateBegin = VT::toDateTimeImmutable($dateBegin);
        return $this;
    }

    /**
     * Set the time Meeting end
     *
     * @param DateTimeInterface|string $dateEnd
     * @return SCO
     */
    public function setDateEnd($dateEnd)
    {
        $this->dateEnd = VT::toDateTimeImmutable($dateEnd);
        return $this;
    }

    /**
     * Set the Pods Layout locked status
     *
     * @param bool $meetingPodsLayoutsLocked
     * @return SCO
     */
    public function setMeetingPodsLayoutsLocked($meetingPodsLayoutsLocked)
    {
        $this->meetingPodsLayoutsLocked = VT::toBool($meetingPodsLayoutsLocked);
        return $this;
    }

    /**
     * Set the linked item status
     *
     * @param bool $updateLinkedItem
     * @return SCO
     */
    public function setUpdateLinkedItem($updateLinkedItem)
    {
        $this->updateLinkedItem = VT::toBool($updateLinkedItem);
        return $this;
    }
}