ILIAS  release_10 Revision v10.1-43-ga1241a92c2f
ilObjStudyProgramme Class Reference
+ Inheritance diagram for ilObjStudyProgramme:
+ Collaboration diagram for ilObjStudyProgramme:

Public Member Functions

 __construct (int $id=0, bool $call_by_reference=true)
 ATTENTION: After using the constructor the object won't be in the cache. More...
 
 getSettings ()
 
 updateSettings (ilStudyProgrammeSettings $settings)
 
 create ()
 
 update ()
 
 delete ()
 Delete Study Programme and all related data. More...
 
 hasAdvancedMetadata ()
 
 cloneObject (int $target_ref_id, int $copy_id=0, bool $omit_tree=false)
 
 getLastChange ()
 Get the timestamp of the last change on this program or sub program. More...
 
 getPoints ()
 Get the amount of points. More...
 
 setPoints (int $points)
 Set the amount of points. More...
 
 getLPMode ()
 
 adjustLPMode ()
 Adjust the lp mode to match current state of tree: More...
 
 getStatus ()
 
 setStatus (int $a_status)
 Set the status of the node. More...
 
 isActive ()
 
 getSubType ()
 Gets the SubType Object. More...
 
 isCertificateActive ()
 
 getAllPrgChildren ()
 
 getChildren (bool $include_references=false)
 Get all ilObjStudyProgrammes that are direct children of this object. More...
 
 getParent ()
 Get the parent ilObjStudyProgramme of this object. More...
 
 getReferencesToSelf ()
 
 getParents (bool $include_references=false)
 Get all parents of the node, where the root of the program comes first. More...
 
 hasChildren (bool $include_references=false)
 Does this StudyProgramme have other ilObjStudyProgrammes as children? More...
 
 getAmountOfChildren ($include_references=false)
 Get the amount of other StudyProgrammes this StudyProgramme has as children. More...
 
 getDepth ()
 Get the depth of this StudyProgramme in the tree starting at the topmost StudyProgramme (not root node of the repo tree!). More...
 
 getRoot ()
 Get the ilObjStudyProgramme that is the root node of the tree this programme is in. More...
 
 getLPChildren ()
 Get the leafs the study programme contains. More...
 
 getLPChildrenIds ()
 Get the obj-ids of the leafs the program contains. More...
 
 getAmountOfLPChildren ()
 Get the amount of leafs the study programme contains. More...
 
 hasLPChildren ()
 
 applyToSubTreeNodes (Closure $fun, bool $include_references=false)
 Apply the given Closure to every node in the subtree starting at this object. More...
 
 getCompletedCourses (ilPRGAssignment $assignment)
 Get courses in this program that the given user already completed. More...
 
 addNode (ilObjStudyProgramme $a_prg)
 Inserts another ilObjStudyProgramme in this object. More...
 
 nodeInserted ($prg)
 Clears child cache and adds progress for new node. More...
 
 putInTree (int $parent_ref_id)
 Overwritten from ilObject. More...
 
 removeNode (ilObjStudyProgramme $a_prg)
 Remove a node from this object. More...
 
 canBeRemoved ()
 Check weather a node can be removed. More...
 
 moveTo (ilObjStudyProgramme $new_parent)
 Move this tree node to a new parent. More...
 
 assignUser (int $usr_id, int $acting_usr_id=null, $raise_event=true)
 Assign a user to this node at the study program. More...
 
 removeAssignment (ilPRGAssignment $assignment)
 Remove an assignment from this program. More...
 
 getSpecificAssignment (int $assignment_id)
 
 storeExpiryInfoSentFor (ilPRGAssignment $ass)
 
 resetExpiryInfoSentFor (ilPRGAssignment $ass)
 
 storeRiskyToFailSentFor (ilPRGAssignment $ass)
 
 resetRiskyToFailSentFor (ilPRGAssignment $ass)
 
 hasAssignmentOf (int $user_id)
 Check whether user is assigned to this program or any node above. More...
 
 getAmountOfAssignmentsOf (int $user_id)
 Get the amount of assignments a user has on this program node or any node above. More...
 
 getAssignmentsOf (int $user_id)
 Get the assignments of user at this program or any node above. More...
 
 getAssignments ()
 
 getMembers ()
 get usr_ids with any progress on this node More...
 
 getLocalMembers ()
 get usr_ids with assignment on this node More...
 
 hasAssignments ()
 Are there any assignments on this node or any node above? More...
 
 getAssignmentsOfSingleProgramForUser (int $usr_id)
 Get assignments of user to this program-node only. More...
 
 hasAssignmentsOfSingleProgramForUser (int $usr_id)
 Get assignments of user to this program-node only. More...
 
 getCertificateRelevantAssignmentIds (int ... $usr_ids)
 
 addMissingProgresses ()
 Add missing progress records for all assignments of this programm. More...
 
 hasRelevantProgresses ()
 Are there any users that have a relevant progress on this programme? More...
 
 getIdsOfUsersWithRelevantProgress ()
 
 getAutomaticContentCategories ()
 Get configuration of categories with auto-content for this StudyProgramme;. More...
 
 hasAutomaticContentCategories ()
 
 storeAutomaticContentCategory (int $category_ref_id)
 Store a Category with auto-content for this StudyProgramme; a category can only be referenced once (per programme). More...
 
 deleteAutomaticContentCategories (array $category_ids=[])
 Delete configuration of categories with auto-content for this StudyProgramme;. More...
 
 deleteAllAutomaticContentCategories ()
 Delete all configuration of categories with auto-content for this StudyProgramme;. More...
 
 isAutoContentApplicable ()
 AutoContent should only be available in active- or draft-mode, and only, if there is no sub-programme. More...
 
 getAutomaticMembershipSources ()
 Get sources for auto-memberships. More...
 
 storeAutomaticMembershipSource (string $type, int $src_id, bool $search_recursive)
 Store a source to be monitored for automatic memberships. More...
 
 deleteAutomaticMembershipSource (string $type, int $src_id)
 Delete a membership source. More...
 
 deleteAllAutomaticMembershipSources ()
 Delete all membership sources of this StudyProgramme;. More...
 
 disableAutomaticMembershipSource (string $type, int $src_id, bool $search_recursive)
 Disable a membership source. More...
 
 enableAutomaticMembershipSource (string $type, int $src_id, bool $search_recursive, $assign_now=false)
 Enable a membership source. More...
 
 getApplicableMembershipSourceForUser (int $usr_id, ?int $exclude_id)
 
 succeed (int $usr_id, int $triggering_obj_id, ilPRGAssignment $ass=null)
 
 updateCustomIcon ()
 
 markAccredited (int $assignment_id, int $acting_usr_id, ilPRGMessageCollection $err_collection)
 
 unmarkAccredited (int $assignment_id, int $acting_usr_id, ilPRGMessageCollection $err_collection)
 
 markNotRelevant (int $assignment_id, int $acting_usr_id, ilPRGMessageCollection $err_collection)
 
 markRelevant (int $assignment_id, int $acting_usr_id, ilPRGMessageCollection $err_collection)
 
 changeProgressDeadline (int $assignment_id, int $acting_usr_id, ilPRGMessageCollection $err_collection, ?DateTimeImmutable $deadline)
 
 changeProgressValidityDate (int $assignment_id, int $acting_usr_id, ilPRGMessageCollection $err_collection, ?DateTimeImmutable $validity)
 
 changeAmountOfPoints (int $assignment_id, int $acting_usr_id, ilPRGMessageCollection $err_collection, int $points)
 
 updatePlanFromRepository (int $assignment_id, int $acting_usr_id, ilPRGMessageCollection $err_collection=null)
 
 acknowledgeCourses (int $assignment_id, array $nodes, ilPRGMessageCollection $err_collection=null)
 
 canBeCompleted (ilPRGProgress $progress)
 
 statusToRepr (int $status)
 Get a user readable representation of a status. More...
 
 hasContentPage ()
 
 createContentPage ()
 
- Public Member Functions inherited from ilContainer
 getTileSizes ()
 
 getObjectTranslation ()
 
 setObjectTranslation (?ilObjectTranslation $obj_trans)
 
 createContainerDirectory ()
 
 getContainerDirectory ()
 
 setHiddenFilesFound (bool $a_hiddenfilesfound)
 
 getHiddenFilesFound ()
 
 getStyleSheetId ()
 
 setStyleSheetId (int $a_style_id)
 
 setNewsTimeline (bool $a_val)
 
 getNewsTimeline ()
 
 setNewsTimelineAutoEntries (bool $a_val)
 
 getNewsTimelineAutoEntries ()
 
 setNewsTimelineLandingPage (bool $a_val)
 
 getNewsTimelineLandingPage ()
 
 isNewsTimelineEffective ()
 
 isNewsTimelineLandingPageEffective ()
 
 setNewsBlockActivated (bool $a_val)
 
 getNewsBlockActivated ()
 
 setUseNews (bool $a_val)
 
 getUseNews ()
 
 cloneDependencies (int $target_id, int $copy_id)
 Clone object dependencies (container sorting) More...
 
 cloneAllObject (string $session_id, string $client_id, string $new_type, int $ref_id, int $clone_source, array $options, bool $soap_call=false, int $a_submode=1)
 
 delete ()
 delete category and all related data More...
 
 getViewMode ()
 
 getOrderType ()
 
 setOrderType (int $a_value)
 
 isClassificationFilterActive ()
 
 filteredSubtree ()
 Note grp/crs currently allow to filter in their whole subtrees Catetories only their direct childs. More...
 
 getSubItems (bool $a_admin_panel_enabled=false, bool $a_include_side_block=false, int $a_get_single=0, ilContainerUserFilter $container_user_filter=null)
 
 gotItems ()
 
 addAdditionalSubItemInformation (array &$object)
 Add additional information to sub item, e.g. More...
 
 getGroupedObjTypes ()
 
 enablePageEditing ()
 
 create ()
 
 putInTree (int $parent_ref_id)
 
 update ()
 
 read ()
 
 readContainerSettings ()
 
 removeTranslations ()
 
 deleteTranslation (string $a_lang)
 
 addTranslation (string $a_title, string $a_desc, string $a_lang, string $a_lang_default)
 
- Public Member Functions inherited from ilObject
 getObjectProperties ()
 
 flushObjectProperties ()
 
 withReferences ()
 determines whether objects are referenced or not (got ref ids or not) More...
 
 processAutoRating ()
 
 read ()
 
 getId ()
 
 setId (int $id)
 
 setRefId (int $ref_id)
 
 getRefId ()
 
 getType ()
 
 setType (string $type)
 
 getPresentationTitle ()
 get presentation title Normally same as title Overwritten for sessions More...
 
 getTitle ()
 
 getUntranslatedTitle ()
 Get untranslated object title WebDAV needs to access the untranslated title of an object. More...
 
 setTitle (string $title)
 
 getDescription ()
 
 setDescription (string $description)
 
 getLongDescription ()
 get object long description (stored in object_description) More...
 
 getImportId ()
 
 setImportId (string $import_id)
 
 setOfflineStatus (bool $status)
 
 getOfflineStatus ()
 
 supportsOfflineHandling ()
 
 getOwner ()
 
 getOwnerName ()
 get full name of object owner More...
 
 setOwner (int $usr_id)
 
 getCreateDate ()
 Get create date in YYYY-MM-DD HH-MM-SS format. More...
 
 getLastUpdateDate ()
 Get last update date in YYYY-MM-DD HH-MM-SS format. More...
 
 create ()
 note: title, description and type should be set when this function is called More...
 
 update ()
 
 MDUpdateListener (string $element)
 Metadata update listener. More...
 
 createMetaData ()
 
 updateMetaData ()
 
 deleteMetaData ()
 
 updateOwner ()
 update owner of object in db More...
 
 putInTree (int $parent_ref_id)
 maybe this method should be in tree object!? More...
 
 setPermissions (int $parent_ref_id)
 
 setParentRolePermissions (int $parent_ref_id)
 Initialize the permissions of parent roles (local roles of categories, global roles...) This method is overwritten in e.g. More...
 
 createReference ()
 creates reference for object More...
 
 countReferences ()
 
 delete ()
 delete object or referenced object (in the case of a referenced object, object data is only deleted if last reference is deleted) This function removes an object entirely from system!! More...
 
 initDefaultRoles ()
 init default roles settings Purpose of this function is to create a local role folder and local roles, that are needed depending on the object type. More...
 
 applyDidacticTemplate (int $tpl_id)
 
 getXMLZip ()
 
 getHTMLDirectory ()
 
 appendCopyInfo (int $target_id, int $copy_id)
 Prepend Copy info if object with same name exists in that container. More...
 
 cloneDependencies (int $target_id, int $copy_id)
 Clone object dependencies. More...
 
 cloneMetaData (ilObject $target_obj)
 Copy meta data. More...
 
 selfOrParentWithRatingEnabled ()
 
 getPossibleSubObjects (bool $filter=true)
 get all possible sub objects of this type the object can decide which types of sub objects are possible jut in time overwrite if the decision distinguish from standard model More...
 

Static Public Member Functions

static initStudyProgrammeCache ()
 
static getRefIdFor (int $obj_id)
 
static getInstanceByObjId (int $obj_id)
 
static getInstanceByRefId ($ref_id)
 
static createInstance ()
 Create an instance of ilObjStudyProgramme, put in cache. More...
 
static getAllChildren (int $a_ref_id, bool $include_references=false)
 Get a list of all ilObjStudyProgrammes in the subtree starting at $a_ref_id. More...
 
static addCrsToProgrammes (int $crs_ref_id, int $cat_ref_id)
 Check, if a category is under surveilllance and automatically add the course. More...
 
static removeCrsFromProgrammes (int $crs_ref_id, int $cat_ref_id)
 Check, if a category is under surveillance and automatically remove the deleted course. More...
 
static addMemberToProgrammes (string $src_type, int $src_id, int $usr_id)
 
static removeMemberFromProgrammes (string $src_type, int $src_id, int $usr_id)
 
static setProgressesCompletedFor (int $obj_id, int $user_id)
 Succeed all StudyProgramme(Nodes) where the object with the given id (a CRSR) is in a Programme with MODE_LP_COMPLETED. More...
 
static setProgressesCompletedIfParentIsProgrammeInLPCompletedMode (int $ref_id, int $obj_id, int $user_id)
 
static getCreatableSubObjects (array $subobjects, $ref_id)
 Filter the list of possible subobjects for the objects that actually could be created on a concrete node. More...
 
- Static Public Member Functions inherited from ilContainer
static _getContainerDirectory (int $a_id)
 
static _lookupContainerSetting (int $a_id, string $a_keyword, string $a_default_value=null)
 
static _hasContainerSetting (int $a_id, string $a_keyword)
 
static _writeContainerSetting (int $a_id, string $a_keyword, string $a_value)
 
static _getContainerSettings (int $a_id)
 
static _deleteContainerSettings (int $a_id, string $a_keyword="", bool $a_keyword_like=false)
 
static _exportContainerSettings (ilXmlWriter $a_xml, int $a_obj_id)
 
static getCompleteDescriptions (array $objects)
 overwrites description fields to long or short description in an assoc array keys needed (obj_id and description) More...
 
- Static Public Member Functions inherited from ilObject
static _lookupObjIdByImportId (string $import_id)
 Get (latest) object id for an import id. More...
 
static _lookupImportId (int $obj_id)
 
static _lookupOwnerName (int $owner_id)
 Lookup owner name for owner id. More...
 
static _getIdForImportId (string $import_id)
 
static _getAllReferences (int $id)
 get all reference ids for object ID More...
 
static _lookupTitle (int $obj_id)
 
static lookupOfflineStatus (int $obj_id)
 Lookup offline status using objectDataCache. More...
 
static _lookupOwner (int $obj_id)
 Lookup owner user ID for object ID. More...
 
static _getIdsForTitle (string $title, string $type='', bool $partial_match=false)
 
static _lookupDescription (int $obj_id)
 
static _lookupLastUpdate (int $obj_id, bool $formatted=false)
 
static _getLastUpdateOfObjects (array $obj_ids)
 
static _lookupObjId (int $ref_id)
 
static _setDeletedDate (int $ref_id, int $deleted_by)
 
static setDeletedDates (array $ref_ids, int $user_id)
 
static _resetDeletedDate (int $ref_id)
 
static _lookupDeletedDate (int $ref_id)
 
static _writeTitle (int $obj_id, string $title)
 write title to db (static) More...
 
static _writeDescription (int $obj_id, string $desc)
 write description to db (static) More...
 
static _writeImportId (int $obj_id, string $import_id)
 write import id to db (static) More...
 
static _lookupType (int $id, bool $reference=false)
 
static _isInTrash (int $ref_id)
 
static _hasUntrashedReference (int $obj_id)
 checks whether an object has at least one reference that is not in trash More...
 
static _lookupObjectId (int $ref_id)
 
static _getObjectsDataForType (string $type, bool $omit_trash=false)
 get all objects of a certain type More...
 
static _exists (int $id, bool $reference=false, ?string $type=null)
 checks if an object exists in object_data More...
 
static _getObjectsByType (string $obj_type="", int $owner=null)
 
static _prepareCloneSelection (array $ref_ids, string $new_type, bool $show_path=true)
 Prepare copy wizard object selection. More...
 
static getIconForType (string $type)
 
static _getIcon (int $obj_id=0, string $size="big", string $type="", bool $offline=false)
 Get icon for repository item. More...
 
static collectDeletionDependencies (array &$deps, int $ref_id, int $obj_id, string $type, int $depth=0)
 Collect deletion dependencies. More...
 
static getDeletionDependencies (int $obj_id)
 Get deletion dependencies. More...
 
static getLongDescriptions (array $obj_ids)
 
static getAllOwnedRepositoryObjects (int $user_id)
 
static fixMissingTitles ($type, array &$obj_title_map)
 Try to fix missing object titles. More...
 
static _lookupCreationDate (int $obj_id)
 
static _getObjectTypeIdByTitle (string $type, \ilDBInterface $ilDB=null)
 

Data Fields

const CP_TYPE = 'cont'
 
- Data Fields inherited from ilContainer
const VIEW_SESSIONS = 0
 
const VIEW_OBJECTIVE = 1
 
const VIEW_TIMING = 2
 
const VIEW_ARCHIVE = 3
 
const VIEW_SIMPLE = 4
 
const VIEW_BY_TYPE = 5
 
const VIEW_INHERIT = 6
 
const VIEW_DEFAULT = self::VIEW_BY_TYPE
 
const SORT_TITLE = 0
 
const SORT_MANUAL = 1
 
const SORT_ACTIVATION = 2
 
const SORT_INHERIT = 3
 
const SORT_CREATION = 4
 
const SORT_DIRECTION_ASC = 0
 
const SORT_DIRECTION_DESC = 1
 
const SORT_NEW_ITEMS_POSITION_TOP = 0
 
const SORT_NEW_ITEMS_POSITION_BOTTOM = 1
 
const SORT_NEW_ITEMS_ORDER_TITLE = 0
 
const SORT_NEW_ITEMS_ORDER_CREATION = 1
 
const SORT_NEW_ITEMS_ORDER_ACTIVATION = 2
 
const TILE_NORMAL = 0
 
const TILE_SMALL = 1
 
const TILE_LARGE = 2
 
const TILE_EXTRA_LARGE = 3
 
const TILE_FULL = 4
 
array $items = []
 
- Data Fields inherited from ilObject
const TITLE_LENGTH = 255
 
const DESC_LENGTH = 128
 
const LONG_DESC_LENGTH = 4000
 
const TABLE_OBJECT_DATA = "object_data"
 
array $objectList
 
string $untranslatedTitle
 

Protected Member Functions

 clearParentCache ()
 Clear the cached parent to query it again at the tree. More...
 
 clearChildrenCache ()
 Clear the cached children. More...
 
 clearLPChildrenCache ()
 Clear the cached lp children. More...
 
 getPrgInstanceByObjId (int $obj_id)
 
 getAssignmentRepository ()
 
 getSettingsRepository ()
 
 getTree ()
 
 getLogger ()
 
 deleteSettings ()
 
 deleteAssignmentsAndProgresses ()
 Delete all assignments from the DB. More...
 
 getReferencesTo (ilObjStudyProgramme $prg)
 
 throwIfNotInTree ()
 
 getMembersOfMembershipSource (ilStudyProgrammeAutoMembershipSource $ams, ?int $exclude_id)
 Get member-ids of a certain source. More...
 
 updateLastChange ()
 Update last change timestamp on this node and its parents. More...
 
 getLoggedInUserId ()
 
 getNow ()
 
 refreshLPStatus (int $usr_id, int $node_obj_id=null)
 
- Protected Member Functions inherited from ilContainer
 getInitialSubitems ()
 
 applyContainerUserFilter (array $objects, ilContainerUserFilter $container_user_filter=null)
 
- Protected Member Functions inherited from ilObject
 doMDUpdateListener (string $a_element)
 
 beforeMDUpdateListener (string $a_element)
 
 doCreateMetaData ()
 
 beforeCreateMetaData ()
 
 doUpdateMetaData ()
 
 beforeUpdateMetaData ()
 
 doDeleteMetaData ()
 
 beforeDeleteMetaData ()
 
 handleAutoRating ()
 
 hasAutoRating ()
 

Static Protected Member Functions

static getProgrammesMonitoringCategory (int $cat_ref_id)
 Get all (not OUTDATED) StudyProgrammes monitoring this category. More...
 
static getProgrammesMonitoringMemberSource (string $src_type, int $src_id)
 Get all StudyProgrammes monitoring this membership-source. More...
 

Protected Attributes

 $parent
 
array $children = null
 
array $lp_children = null
 
ilStudyProgrammeTypeDBRepository $type_repository
 
ilPRGAssignmentDBRepository $assignment_repository
 
ilStudyProgrammeAutoCategoryDBRepository $auto_categories_repository
 
ilStudyProgrammeAutoMembershipsDBRepository $auto_memberships_repository
 
ilStudyProgrammeMembershipSourceReaderFactory $membersourcereader_factory
 
ilStudyProgrammeEvents $events
 
ilStudyProgrammeSettingsDBRepository $settings_repository
 
array $members_cache = null
 
array $reference_children = null
 
Filesystem $webdir
 
ilObjUser $ilUser
 
ilObjectFactoryWrapper $object_factory = null
 
ilObjectCustomIconFactory $custom_icon_factory
 
ilLogger $logger
 
- Protected Attributes inherited from ilContainer
News $news
 
ILIAS Style Content DomainService $content_style_domain
 
ILIAS Container InternalDomainService $domain
 
ilAccessHandler $access
 
ilRbacSystem $rbacsystem
 
ilObjUser $user
 
ilObjectDefinition $obj_definition
 
int $order_type = 0
 
bool $hiddenfilesfound = false
 
bool $news_timeline = false
 
bool $news_timeline_auto_entries = false
 
ilSetting $setting
 
ilObjectTranslation $obj_trans = null
 
int $style_id = 0
 
bool $news_timeline_landing_page = false
 
bool $news_block_activated = false
 
bool $use_news = false
 
ilRecommendedContentManager $recommended_content_manager
 
array $type_grps = null
 
- Protected Attributes inherited from ilObject
ilLogger $obj_log
 
ILIAS $ilias
 
ilObjectDefinition $obj_definition
 
ilDBInterface $db
 
ilLogger $log
 
ilErrorHandling $error
 
ilTree $tree
 
ilAppEventHandler $app_event_handler
 
ilRbacAdmin $rbac_admin
 
ilRbacReview $rbac_review
 
ilObjUser $user
 
ilLanguage $lng
 
LOMServices $lom_services
 
bool $call_by_reference
 
int $max_title = self::TITLE_LENGTH
 
int $max_desc = self::DESC_LENGTH
 
bool $add_dots = true
 
int $ref_id = null
 
string $type = ""
 
string $title = ""
 
string $desc = ""
 
string $long_desc = ""
 
int $owner = 0
 
string $create_date = ""
 
string $last_update = ""
 
string $import_id = ""
 
bool $register = false
 

Static Protected Attributes

static ilObjStudyProgrammeCache $study_programme_cache = null
 

Additional Inherited Members

- Static Public Attributes inherited from ilContainer
static bool $data_preloaded = false
 

Detailed Description

Definition at line 23 of file class.ilObjStudyProgramme.php.

Constructor & Destructor Documentation

◆ __construct()

ilObjStudyProgramme::__construct ( int  $id = 0,
bool  $call_by_reference = true 
)

ATTENTION: After using the constructor the object won't be in the cache.

This could lead to unexpected behaviour when using the tree navigation.

Definition at line 74 of file class.ilObjStudyProgramme.php.

References ilObject\$call_by_reference, $DIC, $dic, $id, $ilUser, ilObject\$tree, ILIAS\GlobalScreen\Provider\__construct(), clearChildrenCache(), clearLPChildrenCache(), clearParentCache(), ilStudyProgrammeDIC\dic(), ilLoggerFactory\getLogger(), ILIAS\Repository\lng(), ILIAS\Repository\logger(), and ilObjectFactoryWrapper\singleton().

75  {
77  $this->type = "prg";
78 
79  $this->type_repository = $dic['model.Type.ilStudyProgrammeTypeRepository'];
80  $this->auto_categories_repository = $dic['model.AutoCategories.ilStudyProgrammeAutoCategoriesRepository'];
81  $this->auto_memberships_repository = $dic['model.AutoMemberships.ilStudyProgrammeAutoMembershipsRepository'];
82  $this->membersourcereader_factory = $dic['model.AutoMemberships.ilStudyProgrammeMembershipSourceReaderFactory'];
83 
84  $this->settings_repository = $dic['model.Settings.ilStudyProgrammeSettingsRepository'];
85  $this->assignment_repository = $dic['repo.assignment'];
86  $this->events = $dic['ilStudyProgrammeEvents'];
87 
89 
90  $this->clearParentCache();
91  $this->clearChildrenCache();
92  $this->clearLPChildrenCache();
93 
94  global $DIC;
95  $tree = $DIC['tree'];
96  $ilUser = $DIC['ilUser'];
97  $this->webdir = $DIC->filesystem()->web();
98  $this->tree = $tree;
99  $this->ilUser = $ilUser;
100  $this->db = $DIC['ilDB'];
101  $this->lng = $DIC['lng'];
102  $this->logger = ilLoggerFactory::getLogger($this->type);
103 
104  $this->object_factory = ilObjectFactoryWrapper::singleton();
105 
106  $this->custom_icon_factory = $DIC['object.customicons.factory'];
107 
108  self::initStudyProgrammeCache();
109  }
clearLPChildrenCache()
Clear the cached lp children.
static getLogger(string $a_component_id)
Get component logger.
ilTree $tree
clearChildrenCache()
Clear the cached children.
bool $call_by_reference
global $DIC
Definition: shib_login.php:25
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:24
__construct(Container $dic, ilPlugin $plugin)
$dic
Definition: ltiresult.php:33
clearParentCache()
Clear the cached parent to query it again at the tree.
+ Here is the call graph for this function:

Member Function Documentation

◆ acknowledgeCourses()

ilObjStudyProgramme::acknowledgeCourses ( int  $assignment_id,
array  $nodes,
ilPRGMessageCollection  $err_collection = null 
)

Definition at line 1844 of file class.ilObjStudyProgramme.php.

References getLoggedInUserId(), and refreshLPStatus().

1848  : void {
1849  $acting_usr_id = $this->getLoggedInUserId();
1850  $assignment = $this->assignment_repository->get($assignment_id);
1851  foreach ($nodes as $nodeinfo) {
1852  [$node_obj_id, $course_obj_id] = $nodeinfo;
1853 
1854  $assignment = $assignment->succeed(
1855  $this->settings_repository,
1856  $node_obj_id,
1857  $course_obj_id
1858  );
1859 
1860  $msg = sprintf(
1861  '%s, progress-id (%s/%s)',
1862  $assignment->getUserInformation()->getFullname(),
1863  $assignment->getId(),
1864  (string) $node_obj_id
1865  );
1866  $err_collection->add(true, 'acknowledged_course', $msg);
1867  }
1868  $this->assignment_repository->store($assignment);
1869  $this->refreshLPStatus($assignment->getUserId());
1870  }
add(bool $success, string $message, string $record_identitifer)
refreshLPStatus(int $usr_id, int $node_obj_id=null)
+ Here is the call graph for this function:

◆ addCrsToProgrammes()

static ilObjStudyProgramme::addCrsToProgrammes ( int  $crs_ref_id,
int  $cat_ref_id 
)
static

Check, if a category is under surveilllance and automatically add the course.

Definition at line 1253 of file class.ilObjStudyProgramme.php.

References ilObject\_lookupObjectId(), and ilContainerReference\TITLE_TYPE_REUSE.

Referenced by ilStudyProgrammeAppEventListener\addCrsToProgrammes().

1253  : void
1254  {
1255  foreach (self::getProgrammesMonitoringCategory($cat_ref_id) as $prg) {
1256  $course_ref = new ilObjCourseReference();
1257  $course_ref->setTitleType(ilContainerReference::TITLE_TYPE_REUSE);
1258  $course_ref->setTargetRefId($crs_ref_id);
1259  $course_ref->create();
1260  $course_ref->createReference();
1261  $course_ref->putInTree($prg->getRefId());
1262  $course_ref->setPermissions($crs_ref_id);
1263  $course_ref->setTargetId(ilObject::_lookupObjectId($crs_ref_id));
1264  $course_ref->update();
1265  $lp = new ilLPObjSettings($course_ref->getId());
1266  $lp->insert();
1267  $lp->setMode($lp::LP_MODE_COURSE_REFERENCE);
1268  $lp->update(false);
1269  }
1270  }
static _lookupObjectId(int $ref_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addMemberToProgrammes()

static ilObjStudyProgramme::addMemberToProgrammes ( string  $src_type,
int  $src_id,
int  $usr_id 
)
static

Definition at line 1466 of file class.ilObjStudyProgramme.php.

References ilStudyProgrammeAutoMembershipSource\SOURCE_MAPPING.

Referenced by ilStudyProgrammeAppEventListener\addMemberToProgrammes().

1466  : void
1467  {
1468  foreach (self::getProgrammesMonitoringMemberSource($src_type, $src_id) as $prg) {
1469  if ($prg->isActive() &&
1470  !$prg->hasAssignmentsOfSingleProgramForUser($usr_id)) {
1471  $assigned_by = ilStudyProgrammeAutoMembershipSource::SOURCE_MAPPING[$src_type];
1472  $prg->assignUser($usr_id, $assigned_by);
1473  }
1474  }
1475  }
+ Here is the caller graph for this function:

◆ addMissingProgresses()

ilObjStudyProgramme::addMissingProgresses ( )

Add missing progress records for all assignments of this programm.

Use this after the structure of the programme was modified, i.e.: there was a node added below this one.

Definition at line 1167 of file class.ilObjStudyProgramme.php.

References getAssignments().

Referenced by nodeInserted().

1167  : void
1168  {
1169  $assignments = $this->getAssignments();
1170  foreach ($assignments as $ass) {
1171  $this->assignment_repository->store($ass);
1172  }
1173  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addNode()

ilObjStudyProgramme::addNode ( ilObjStudyProgramme  $a_prg)

Inserts another ilObjStudyProgramme in this object.

Throws when object already contains non ilObjStudyProgrammes as children. Throws when $a_prg already is in the tree. Throws when this object is not in tree.

Parameters
ilObjStudyProgramme$a_prg
Returns
ilObjStudyProgramme
Exceptions
ilException
ilStudyProgrammeTreeException

Definition at line 801 of file class.ilObjStudyProgramme.php.

References ilObject\createReference(), getLPMode(), ilObject\getRefId(), ilStudyProgrammeSettings\MODE_LP_COMPLETED, putInTree(), and throwIfNotInTree().

802  {
803  $this->throwIfNotInTree();
804 
806  throw new ilStudyProgrammeTreeException("Program already contains leafs.");
807  }
808 
809  if ($this->tree->isInTree($a_prg->getRefId())) {
810  throw new ilStudyProgrammeTreeException("Other program already is in tree.");
811  }
812 
813  if ($a_prg->getRefId() === null) {
814  $a_prg->createReference();
815  }
816  $a_prg->putInTree($this->getRefId());
817  return $this;
818  }
createReference()
creates reference for object
putInTree(int $parent_ref_id)
Overwritten from ilObject.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:

◆ adjustLPMode()

ilObjStudyProgramme::adjustLPMode ( )

Adjust the lp mode to match current state of tree:

If there are any non programme children, the mode is MODE_LP_COMPLETED, otherwise its MODE_POINTS.

Exceptions
ilExceptionwhen programme is not in draft mode.

Definition at line 364 of file class.ilObjStudyProgramme.php.

References clearChildrenCache(), clearLPChildrenCache(), getAmountOfChildren(), getAmountOfLPChildren(), getSettings(), ilStudyProgrammeSettings\MODE_LP_COMPLETED, ilStudyProgrammeSettings\MODE_POINTS, and ilStudyProgrammeSettings\MODE_UNDEFINED.

364  : void
365  {
366  // Clear caches here, there have been some changes, because this method
367  // would not have been called otherwise, and the changer just does not
368  // know if we have filled the caches already...
369  $this->clearLPChildrenCache();
370  $this->clearChildrenCache();
371 
372  if ($this->tree->isInTree($this->getRefId())) {
373  if ($this->getAmountOfLPChildren() > 0) {
374  $this->settings_repository->update(
376  );
377  } elseif ($this->getAmountOfChildren(true) > 0) {
378  $this->settings_repository->update(
380  );
381  } else {
382  $this->settings_repository->update(
384  );
385  }
386  }
387  }
clearLPChildrenCache()
Clear the cached lp children.
getAmountOfLPChildren()
Get the amount of leafs the study programme contains.
clearChildrenCache()
Clear the cached children.
getAmountOfChildren($include_references=false)
Get the amount of other StudyProgrammes this StudyProgramme has as children.
+ Here is the call graph for this function:

◆ applyToSubTreeNodes()

ilObjStudyProgramme::applyToSubTreeNodes ( Closure  $fun,
bool  $include_references = false 
)

Apply the given Closure to every node in the subtree starting at this object.

When the closure returns false, the underlying nodes won't be visited.

Exceptions
ilStudyProgrammeTreeExceptionThrows when this object is not in tree.

Definition at line 736 of file class.ilObjStudyProgramme.php.

References getChildren(), and throwIfNotInTree().

Referenced by getAllPrgChildren(), and getCompletedCourses().

736  : void
737  {
738  $this->throwIfNotInTree();
739 
740  if ($fun($this) !== false) {
741  foreach ($this->getChildren($include_references) as $child) {
742  $child->applyToSubTreeNodes($fun, $include_references);
743  }
744  }
745  }
getChildren(bool $include_references=false)
Get all ilObjStudyProgrammes that are direct children of this object.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ assignUser()

ilObjStudyProgramme::assignUser ( int  $usr_id,
int  $acting_usr_id = null,
  $raise_event = true 
)

Assign a user to this node at the study program.

Throws when node is in DRAFT or OUTDATED status. Throws when there are no settings for the program.

TODO: Should it be allowed to assign inactive users?

Exceptions
ilException

Definition at line 953 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), getLoggedInUserId(), getSettingsRepository(), getStatus(), and ilStudyProgrammeSettings\STATUS_ACTIVE.

Referenced by enableAutomaticMembershipSource().

954  {
955  $this->members_cache = null;
956 
958  throw new ilException(
959  "ilObjStudyProgramme::assignUser: Can't assign user to program '"
960  . $this->getId() . "', since it's not in active status."
961  );
962  }
963 
964  if (is_null($acting_usr_id)) {
965  $acting_usr_id = $this->getLoggedInUserId();
966  }
967 
968  $ass = $this->assignment_repository->createFor($this->getId(), $usr_id, $acting_usr_id);
969  $ass = $ass
970  ->initAssignmentDates();
971 
972  $ass = $ass->resetProgresses(
973  $this->getSettingsRepository(),
974  $acting_usr_id
975  );
976 
977  $this->assignment_repository->store($ass);
978 
979  if ($raise_event) {
980  $this->events->userAssigned($ass);
981  }
982  return $ass;
983  }
Assignments are relations of users to a PRG; They hold progress-information for (sub-)nodes of the PR...
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ canBeCompleted()

ilObjStudyProgramme::canBeCompleted ( ilPRGProgress  $progress)

Definition at line 1872 of file class.ilObjStudyProgramme.php.

References ilPRGProgress\getAmountOfPoints(), getLPMode(), ilPRGProgress\getPossiblePointsOfRelevantChildren(), getStatus(), ilStudyProgrammeSettings\MODE_LP_COMPLETED, and ilStudyProgrammeSettings\STATUS_DRAFT.

1872  : bool
1873  {
1875  return false;
1876  }
1878  return true;
1879  }
1880  $possible_points = $progress->getPossiblePointsOfRelevantChildren();
1881  return $possible_points >= $progress->getAmountOfPoints();
1882  }
+ Here is the call graph for this function:

◆ canBeRemoved()

ilObjStudyProgramme::canBeRemoved ( )

Check weather a node can be removed.

This is allowed when all progresses on the node are marked as not relevant programmatically.

Definition at line 898 of file class.ilObjStudyProgramme.php.

References hasRelevantProgresses().

Referenced by removeNode().

898  : bool
899  {
900  return ! $this->hasRelevantProgresses();
901  }
hasRelevantProgresses()
Are there any users that have a relevant progress on this programme?
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ changeAmountOfPoints()

ilObjStudyProgramme::changeAmountOfPoints ( int  $assignment_id,
int  $acting_usr_id,
ilPRGMessageCollection  $err_collection,
int  $points 
)

Definition at line 1808 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), getSettingsRepository(), and refreshLPStatus().

1813  : void {
1814  $progress_node_id = $this->getId();
1815  $assignment = $this->assignment_repository->get($assignment_id)
1816  ->changeAmountOfPoints(
1817  $this->getSettingsRepository(),
1818  $progress_node_id,
1819  $acting_usr_id,
1820  $err_collection,
1821  $points
1822  );
1823 
1824  $this->assignment_repository->store($assignment);
1825  $this->refreshLPStatus($assignment->getUserId());
1826  }
refreshLPStatus(int $usr_id, int $node_obj_id=null)
+ Here is the call graph for this function:

◆ changeProgressDeadline()

ilObjStudyProgramme::changeProgressDeadline ( int  $assignment_id,
int  $acting_usr_id,
ilPRGMessageCollection  $err_collection,
?DateTimeImmutable  $deadline 
)

Definition at line 1768 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), getSettingsRepository(), and refreshLPStatus().

1773  : void {
1774  $progress_node_id = $this->getId();
1775  $assignment = $this->assignment_repository->get($assignment_id)
1776  ->changeProgressDeadline(
1777  $this->getSettingsRepository(),
1778  $progress_node_id,
1779  $acting_usr_id,
1780  $err_collection,
1781  $deadline
1782  );
1783 
1784  $this->assignment_repository->store($assignment);
1785  $this->refreshLPStatus($assignment->getUserId());
1786  }
refreshLPStatus(int $usr_id, int $node_obj_id=null)
+ Here is the call graph for this function:

◆ changeProgressValidityDate()

ilObjStudyProgramme::changeProgressValidityDate ( int  $assignment_id,
int  $acting_usr_id,
ilPRGMessageCollection  $err_collection,
?DateTimeImmutable  $validity 
)

Definition at line 1788 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), getSettingsRepository(), and refreshLPStatus().

1793  : void {
1794  $progress_node_id = $this->getId();
1795  $assignment = $this->assignment_repository->get($assignment_id)
1796  ->changeProgressValidityDate(
1797  $this->getSettingsRepository(),
1798  $progress_node_id,
1799  $acting_usr_id,
1800  $err_collection,
1801  $validity
1802  );
1803 
1804  $this->assignment_repository->store($assignment);
1805  $this->refreshLPStatus($assignment->getUserId());
1806  }
refreshLPStatus(int $usr_id, int $node_obj_id=null)
+ Here is the call graph for this function:

◆ clearChildrenCache()

ilObjStudyProgramme::clearChildrenCache ( )
protected

Clear the cached children.

Definition at line 130 of file class.ilObjStudyProgramme.php.

Referenced by __construct(), adjustLPMode(), moveTo(), nodeInserted(), and removeNode().

130  : void
131  {
132  $this->children = null;
133  }
+ Here is the caller graph for this function:

◆ clearLPChildrenCache()

ilObjStudyProgramme::clearLPChildrenCache ( )
protected

Clear the cached lp children.

Definition at line 138 of file class.ilObjStudyProgramme.php.

Referenced by __construct(), adjustLPMode(), and moveTo().

138  : void
139  {
140  $this->lp_children = null;
141  }
+ Here is the caller graph for this function:

◆ clearParentCache()

ilObjStudyProgramme::clearParentCache ( )
protected

Clear the cached parent to query it again at the tree.

Definition at line 121 of file class.ilObjStudyProgramme.php.

Referenced by __construct(), moveTo(), and removeNode().

121  : void
122  {
123  // This is not initialized, but we need null if there is no parent.
124  $this->parent = false;
125  }
+ Here is the caller graph for this function:

◆ cloneObject()

ilObjStudyProgramme::cloneObject ( int  $target_ref_id,
int  $copy_id = 0,
bool  $omit_tree = false 
)

Definition at line 305 of file class.ilObjStudyProgramme.php.

References getSettings(), and ilStudyProgrammeSettings\STATUS_DRAFT.

305  : ?ilObject
306  {
307  $new_obj = parent::cloneObject($target_ref_id, $copy_id, $omit_tree);
308  $settings = $this->getSettings()->withObjId($new_obj->getId());
309  $settings = $settings->withAssessmentSettings(
310  $settings->getAssessmentSettings()->withStatus(ilStudyProgrammeSettings::STATUS_DRAFT)
311  );
312  $new_obj->updateSettings($settings);
313  return $new_obj;
314  }
+ Here is the call graph for this function:

◆ create()

ilObjStudyProgramme::create ( )
Exceptions
ilException

Definition at line 238 of file class.ilObjStudyProgramme.php.

References $id, getSettingsRepository(), and ILIAS\Repository\int().

238  : int
239  {
240  $id = (int) parent::create();
241  $this->getSettingsRepository()->createFor($id);
242  return $id;
243  }
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:24
+ Here is the call graph for this function:

◆ createContentPage()

ilObjStudyProgramme::createContentPage ( )

Definition at line 1913 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), and hasContentPage().

1913  : void
1914  {
1915  if ($this->hasContentPage()) {
1916  throw new \LogicException('will not create content page - it already exists.');
1917  }
1918  $new_page_object = new \ilContainerPage();
1919  $new_page_object->setId($this->getId());
1920  $new_page_object->setParentId($this->getId());
1921  $new_page_object->createFromXML();
1922  }
+ Here is the call graph for this function:

◆ createInstance()

static ilObjStudyProgramme::createInstance ( )
static

Create an instance of ilObjStudyProgramme, put in cache.

Exceptions
ilException

Definition at line 192 of file class.ilObjStudyProgramme.php.

193  {
194  $obj = new ilObjStudyProgramme();
195  $obj->create();
196  $obj->createReference();
197  self::$study_programme_cache->addInstance($obj);
198  return $obj;
199  }

◆ delete()

ilObjStudyProgramme::delete ( )

Delete Study Programme and all related data.

Exceptions
ilException

Definition at line 272 of file class.ilObjStudyProgramme.php.

References Vendor\Package\$e, deleteAllAutomaticContentCategories(), deleteAllAutomaticMembershipSources(), deleteAssignmentsAndProgresses(), deleteSettings(), and ilObject\getId().

272  : bool
273  {
274  // always call parent delete function first!!
275  if (!parent::delete()) {
276  return false;
277  }
278 
279  $this->deleteSettings();
281  try {
282  $this->auto_categories_repository->deleteFor($this->getId());
284  // This would be the case when SP is in trash (#17797)
285  }
286 
289 
290  $this->events->raise('delete', ['object' => $this, 'obj_id' => $this->getId()]);
291  return true;
292  }
deleteAssignmentsAndProgresses()
Delete all assignments from the DB.
deleteAllAutomaticContentCategories()
Delete all configuration of categories with auto-content for this StudyProgramme;.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
deleteAllAutomaticMembershipSources()
Delete all membership sources of this StudyProgramme;.
+ Here is the call graph for this function:

◆ deleteAllAutomaticContentCategories()

ilObjStudyProgramme::deleteAllAutomaticContentCategories ( )

Delete all configuration of categories with auto-content for this StudyProgramme;.

Definition at line 1245 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

Referenced by delete().

1245  : void
1246  {
1247  $this->auto_categories_repository->deleteFor($this->getId());
1248  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deleteAllAutomaticMembershipSources()

ilObjStudyProgramme::deleteAllAutomaticMembershipSources ( )

Delete all membership sources of this StudyProgramme;.

Definition at line 1383 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

Referenced by delete().

1383  : void
1384  {
1385  $this->auto_memberships_repository->deleteFor($this->getId());
1386  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deleteAssignmentsAndProgresses()

ilObjStudyProgramme::deleteAssignmentsAndProgresses ( )
protected

Delete all assignments from the DB.

Exceptions
ilException

Definition at line 230 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

Referenced by delete().

230  : void
231  {
232  $this->assignment_repository->deleteAllAssignmentsForProgrammeId($this->getId());
233  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deleteAutomaticContentCategories()

ilObjStudyProgramme::deleteAutomaticContentCategories ( array  $category_ids = [])

Delete configuration of categories with auto-content for this StudyProgramme;.

Parameters
int[]$category_ids

Definition at line 1237 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

1237  : void
1238  {
1239  $this->auto_categories_repository->delete($this->getId(), $category_ids);
1240  }
+ Here is the call graph for this function:

◆ deleteAutomaticMembershipSource()

ilObjStudyProgramme::deleteAutomaticMembershipSource ( string  $type,
int  $src_id 
)

Delete a membership source.

Definition at line 1375 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

1375  : void
1376  {
1377  $this->auto_memberships_repository->delete($this->getId(), $type, $src_id);
1378  }
string $type
+ Here is the call graph for this function:

◆ deleteSettings()

ilObjStudyProgramme::deleteSettings ( )
protected

Definition at line 220 of file class.ilObjStudyProgramme.php.

References getSettings(), and getSettingsRepository().

Referenced by delete().

220  : void
221  {
222  $this->getSettingsRepository()->delete($this->getSettings());
223  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ disableAutomaticMembershipSource()

ilObjStudyProgramme::disableAutomaticMembershipSource ( string  $type,
int  $src_id,
bool  $search_recursive 
)

Disable a membership source.

Definition at line 1391 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

1391  : void
1392  {
1393  $ams = $this->auto_memberships_repository->create(
1394  $this->getId(),
1395  $type,
1396  $src_id,
1397  false,
1398  null,
1399  null,
1400  $search_recursive
1401  );
1402  $this->auto_memberships_repository->update($ams);
1403  }
string $type
+ Here is the call graph for this function:

◆ enableAutomaticMembershipSource()

ilObjStudyProgramme::enableAutomaticMembershipSource ( string  $type,
int  $src_id,
bool  $search_recursive,
  $assign_now = false 
)

Enable a membership source.

Exceptions
ilException

Definition at line 1409 of file class.ilObjStudyProgramme.php.

References ilObject\$type, assignUser(), getAssignmentsOfSingleProgramForUser(), ilObject\getId(), getMembersOfMembershipSource(), and ilStudyProgrammeAutoMembershipSource\SOURCE_MAPPING.

1409  : void
1410  {
1411  if ($assign_now) {
1413  $member_ids = $this->getMembersOfMembershipSource($type, $src_id);
1414  foreach ($member_ids as $usr_id) {
1415  if (!$this->getAssignmentsOfSingleProgramForUser($usr_id)) {
1416  $this->assignUser($usr_id, $assigned_by);
1417  }
1418  }
1419  }
1420  $ams = $this->auto_memberships_repository->create(
1421  $this->getId(),
1422  $type,
1423  $src_id,
1424  true,
1425  null,
1426  null,
1427  $search_recursive
1428  );
1429  $this->auto_memberships_repository->update($ams);
1430  }
string $type
assignUser(int $usr_id, int $acting_usr_id=null, $raise_event=true)
Assign a user to this node at the study program.
getMembersOfMembershipSource(ilStudyProgrammeAutoMembershipSource $ams, ?int $exclude_id)
Get member-ids of a certain source.
getAssignmentsOfSingleProgramForUser(int $usr_id)
Get assignments of user to this program-node only.
+ Here is the call graph for this function:

◆ getAllChildren()

static ilObjStudyProgramme::getAllChildren ( int  $a_ref_id,
bool  $include_references = false 
)
static

Get a list of all ilObjStudyProgrammes in the subtree starting at $a_ref_id.

Throws when object is not in tree.

Returns
ilObjStudyProgramme[]

Definition at line 453 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

453  : array
454  {
455  $ret = array();
456  $root = self::getInstanceByRefId($a_ref_id);
457  $root_id = $root->getId();
458  $root->applyToSubTreeNodes(function (ilObjStudyProgramme $prg) use (&$ret, $root_id) {
459  // exclude root node of subtree.
460  if ($prg->getId() === $root_id) {
461  return;
462  }
463  $ret[] = $prg;
464  }, $include_references);
465  return $ret;
466  }
+ Here is the call graph for this function:

◆ getAllPrgChildren()

ilObjStudyProgramme::getAllPrgChildren ( )

Definition at line 468 of file class.ilObjStudyProgramme.php.

References applyToSubTreeNodes(), and ilObject\getId().

468  : array
469  {
470  $ret = [];
471  $this->applyToSubTreeNodes(
472  function (ilObjStudyProgramme $prg) use (&$ret) {
473  if ($prg->getId() === $this->getId()) {
474  return;
475  }
476  $ret[] = $prg;
477  }
478  );
479  return $ret;
480  }
applyToSubTreeNodes(Closure $fun, bool $include_references=false)
Apply the given Closure to every node in the subtree starting at this object.
+ Here is the call graph for this function:

◆ getAmountOfAssignmentsOf()

ilObjStudyProgramme::getAmountOfAssignmentsOf ( int  $user_id)

Get the amount of assignments a user has on this program node or any node above.

Definition at line 1051 of file class.ilObjStudyProgramme.php.

References getAssignmentsOf().

Referenced by hasAssignmentOf().

1051  : int
1052  {
1053  return count($this->getAssignmentsOf($user_id));
1054  }
getAssignmentsOf(int $user_id)
Get the assignments of user at this program or any node above.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAmountOfChildren()

ilObjStudyProgramme::getAmountOfChildren (   $include_references = false)

Get the amount of other StudyProgrammes this StudyProgramme has as children.

Exceptions
ilStudyProgrammeTreeExceptionwhen this object is not in tree.

Definition at line 622 of file class.ilObjStudyProgramme.php.

References getChildren().

Referenced by adjustLPMode(), hasChildren(), and isAutoContentApplicable().

622  : int
623  {
624  return count($this->getChildren($include_references));
625  }
getChildren(bool $include_references=false)
Get all ilObjStudyProgrammes that are direct children of this object.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAmountOfLPChildren()

ilObjStudyProgramme::getAmountOfLPChildren ( )

Get the amount of leafs the study programme contains.

Exceptions
whenthis object is not in tree.

Definition at line 705 of file class.ilObjStudyProgramme.php.

References getLPChildren().

Referenced by adjustLPMode(), and hasLPChildren().

705  : int
706  {
707  return count($this->getLPChildren());
708  }
getLPChildren()
Get the leafs the study programme contains.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getApplicableMembershipSourceForUser()

ilObjStudyProgramme::getApplicableMembershipSourceForUser ( int  $usr_id,
?int  $exclude_id 
)

Definition at line 1507 of file class.ilObjStudyProgramme.php.

References getAutomaticMembershipSources(), and getMembersOfMembershipSource().

1511  foreach ($this->getAutomaticMembershipSources() as $ams) {
1512  if ($ams->isEnabled()) {
1513  $source_members = $this->getMembersOfMembershipSource($ams, $exclude_id);
1514  if (in_array($usr_id, $source_members)) {
1515  return $ams;
1516  }
1517  }
1518  }
1519  return null;
1520  }
getMembersOfMembershipSource(ilStudyProgrammeAutoMembershipSource $ams, ?int $exclude_id)
Get member-ids of a certain source.
getAutomaticMembershipSources()
Get sources for auto-memberships.
+ Here is the call graph for this function:

◆ getAssignmentRepository()

ilObjStudyProgramme::getAssignmentRepository ( )
protected

Definition at line 170 of file class.ilObjStudyProgramme.php.

References $assignment_repository.

◆ getAssignments()

ilObjStudyProgramme::getAssignments ( )
Returns
ilPRGAssignment[]

Definition at line 1082 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

Referenced by addMissingProgresses(), getIdsOfUsersWithRelevantProgress(), and getMembers().

1082  : array
1083  {
1084  return $this->assignment_repository->getAllForNodeIsContained($this->getId());
1085  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAssignmentsOf()

ilObjStudyProgramme::getAssignmentsOf ( int  $user_id)

Get the assignments of user at this program or any node above.

The assignments are ordered by last_change, where the most recently changed assignment is the first one.

Returns
ilPRGAssignment[]

Definition at line 1063 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

Referenced by getAmountOfAssignmentsOf().

1063  : array
1064  {
1065  $assignments = $this->assignment_repository->getAllForNodeIsContained(
1066  $this->getId(),
1067  [$user_id]
1068  );
1069 
1070  usort($assignments, function ($a_one, $a_other) {
1071  return strcmp(
1072  $a_one->getLastChange()->format('Y-m-d'),
1073  $a_other->getLastChange()->format('Y-m-d')
1074  );
1075  });
1076  return $assignments;
1077  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAssignmentsOfSingleProgramForUser()

ilObjStudyProgramme::getAssignmentsOfSingleProgramForUser ( int  $usr_id)

Get assignments of user to this program-node only.

Returns
ilPRGAssignment[]

Definition at line 1136 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

Referenced by enableAutomaticMembershipSource(), and hasAssignmentsOfSingleProgramForUser().

1136  : array
1137  {
1138  return $this->assignment_repository->getAllForSpecificNode($this->getId(), [$usr_id]);
1139  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAutomaticContentCategories()

ilObjStudyProgramme::getAutomaticContentCategories ( )

Get configuration of categories with auto-content for this StudyProgramme;.

Returns
ilStudyProgrammeAutoCategory[]

Definition at line 1209 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

Referenced by hasAutomaticContentCategories().

1209  : array
1210  {
1211  return $this->auto_categories_repository->getFor($this->getId());
1212  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getAutomaticMembershipSources()

ilObjStudyProgramme::getAutomaticMembershipSources ( )

Get sources for auto-memberships.

Returns
ilStudyProgrammeAutoMembershipSource[]

Definition at line 1350 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

Referenced by getApplicableMembershipSourceForUser().

1350  : array
1351  {
1352  return $this->auto_memberships_repository->getFor($this->getId());
1353  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCertificateRelevantAssignmentIds()

ilObjStudyProgramme::getCertificateRelevantAssignmentIds ( int ...  $usr_ids)

Definition at line 1149 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

1149  : array
1150  {
1151  return $this->assignment_repository->getCertificateRelevantAssignmentIds(
1152  $this->getId(),
1153  ...$usr_ids
1154  );
1155  }
+ Here is the call graph for this function:

◆ getChildren()

ilObjStudyProgramme::getChildren ( bool  $include_references = false)

Get all ilObjStudyProgrammes that are direct children of this object.

Returns
ilObjStudyProgramme[]
Exceptions
ilStudyProgrammeTreeExceptionwhen this object is not in tree.

Definition at line 489 of file class.ilObjStudyProgramme.php.

References $children, $data, ilContainerSorting\_getInstance(), ilObject\getId(), getInstanceByRefId(), ilObject\getRefId(), and throwIfNotInTree().

Referenced by applyToSubTreeNodes(), getAmountOfChildren(), and ilStudyProgrammeProgressListGUI\showMoreObjectsInfo().

489  : array
490  {
491  $this->throwIfNotInTree();
492 
493  if ($this->children === null) {
494  $ref_ids = $this->tree->getChildsByType($this->getRefId(), "prg");
495 
496  // apply container sorting to tree
497  $sorting = ilContainerSorting::_getInstance($this->getId());
498  $ref_ids = $sorting->sortItems(array('prg' => $ref_ids));
499  $ref_ids = $ref_ids['prg'];
500 
501  $this->children = array_map(static function ($node_data) {
502  return ilObjStudyProgramme::getInstanceByRefId($node_data["child"]);
503  }, $ref_ids);
504  }
505 
506  if ($include_references && $this->reference_children === null) {
507  $this->reference_children = [];
508  $ref_child_ref_ids = $this->tree->getChildsByType($this->getRefId(), "prgr");
509  foreach (
510  array_unique(
511  array_map(
512  static function ($data) {
513  return (int) $data['child'];
514  },
515  array_filter($ref_child_ref_ids, static function ($data) {
516  return $data["deleted"] === null;
517  })
518  )
519  ) as $prg_ref_id
520  ) {
521  $this->reference_children[] =
522  (new ilObjStudyProgrammeReference($prg_ref_id))->getReferencedObject();
523  }
524  }
525  return $include_references ?
526  array_merge($this->children, $this->reference_children) :
527  $this->children;
528  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getInstance(int $a_obj_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getCompletedCourses()

ilObjStudyProgramme::getCompletedCourses ( ilPRGAssignment  $assignment)

Get courses in this program that the given user already completed.

Definition at line 750 of file class.ilObjStudyProgramme.php.

References Vendor\Package\$f, ilObject\_exists(), ilLPStatus\_hasUserCompleted(), ilObject\_lookupDeletedDate(), ilContainerReference\_lookupTargetId(), ilContainerReference\_lookupTargetRefId(), ilContainerReference\_lookupTitle(), applyToSubTreeNodes(), ilPRGAssignment\getProgressForNode(), ilPRGAssignment\getUserId(), and ILIAS\Repository\int().

750  : array
751  {
752  $completed_crss = [];
753  $f = function ($prg) use (&$completed_crss, $assignment) {
754  if ($prg->isActive() &&
755  $assignment->getProgressForNode($prg->getId())->isRelevant()
756  ) {
757  foreach ($prg->getLPChildren() as $child) {
758  $crs_id = (int) ilContainerReference::_lookupTargetId((int) $child->getId());
759  $crs_ref_id = (int) ilContainerReference::_lookupTargetRefId((int) $child->getId());
760  $crsr_ref_id = (int) $child->getRefId();
761 
762  if (ilObject::_exists($crsr_ref_id, true) &&
763  is_null(ilObject::_lookupDeletedDate($crsr_ref_id)) &&
764  ilObject::_exists($crs_id, false) &&
765  is_null(ilObject::_lookupDeletedDate($crs_ref_id)) &&
766  ilLPStatus::_hasUserCompleted($crs_id, $assignment->getUserId())
767  ) {
768  $completed_crss[] = [
769  'crs_id' => $crs_id,
770  'prg_ref_id' => $prg->getRefId(),
771  'prg_obj_id' => $prg->getId(),
772  'crsr_ref_id' => $crsr_ref_id,
773  'crsr_id' => $child->getId(),
774  'crs_ref_id' => $crs_ref_id,
775  'title' => ilContainerReference::_lookupTitle((int) $child->getId()),
776  ];
777  }
778  }
779  return true;
780  }
781  return false;
782  };
783  $this->applyToSubTreeNodes($f, true);
784  return $completed_crss;
785  }
static _hasUserCompleted(int $a_obj_id, int $a_user_id)
Lookup user object completion.
static _lookupTitle(int $obj_id)
applyToSubTreeNodes(Closure $fun, bool $include_references=false)
Apply the given Closure to every node in the subtree starting at this object.
static _exists(int $id, bool $reference=false, ?string $type=null)
checks if an object exists in object_data
static _lookupTargetRefId(int $a_obj_id)
static _lookupTargetId(int $a_obj_id)
getProgressForNode(int $node_id)
static _lookupDeletedDate(int $ref_id)
+ Here is the call graph for this function:

◆ getCreatableSubObjects()

static ilObjStudyProgramme::getCreatableSubObjects ( array  $subobjects,
  $ref_id 
)
static

Filter the list of possible subobjects for the objects that actually could be created on a concrete node.

Will be called by ilObjDefinition::getCreatableSubObjects.

ilException

Parameters
string[]$subobjects

Definition at line 1634 of file class.ilObjStudyProgramme.php.

References $parent, ilObject\$ref_id, ilObject\_lookupType(), ilStudyProgrammeSettings\MODE_LP_COMPLETED, ilStudyProgrammeSettings\MODE_POINTS, and ilStudyProgrammeSettings\MODE_UNDEFINED.

Referenced by ilObjectDefinition\getCreatableSubObjects().

1634  : array
1635  {
1636  if ($ref_id === null) {
1637  return $subobjects;
1638  }
1639 
1640  if (ilObject::_lookupType($ref_id, true) !== "prg") {
1641  throw new ilException("Ref-Id '$ref_id' does not belong to a study programme object.");
1642  }
1643 
1644  $parent = self::getInstanceByRefId($ref_id);
1645 
1646  $mode = $parent->getLPMode();
1647 
1648  switch ($mode) {
1650  $possible_subobjects = $subobjects;
1651  break;
1653  $possible_subobjects = [
1654  "prg" => $subobjects["prg"],
1655  "prgr" => $subobjects["prgr"]
1656  ];
1657  break;
1659  $possible_subobjects = ['crsr' => $subobjects['crsr']];
1660  break;
1661  default:
1662  throw new ilException("Undefined mode for study programme: '$mode'");
1663  }
1664 
1665  if ($parent->hasAutomaticContentCategories()) {
1666  $possible_subobjects = array_filter(
1667  $possible_subobjects,
1668  static function ($subtype) {
1669  return $subtype === 'crsr';
1670  },
1671  ARRAY_FILTER_USE_KEY
1672  );
1673  }
1674  return $possible_subobjects;
1675  }
static _lookupType(int $id, bool $reference=false)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getDepth()

ilObjStudyProgramme::getDepth ( )

Get the depth of this StudyProgramme in the tree starting at the topmost StudyProgramme (not root node of the repo tree!).

Root node has depth = 0.

Exceptions
ilExceptionwhen this object is not in tree.

Definition at line 633 of file class.ilObjStudyProgramme.php.

633  : int
634  {
635  $cur = $this;
636  $count = 0;
637  while ($cur = $cur->getParent()) {
638  $count++;
639  }
640  return $count;
641  }

◆ getIdsOfUsersWithRelevantProgress()

ilObjStudyProgramme::getIdsOfUsersWithRelevantProgress ( )

Definition at line 1192 of file class.ilObjStudyProgramme.php.

References getAssignments().

1192  : array
1193  {
1194  return array_map(
1195  fn($ass) => $ass->getUserId(),
1196  $this->getAssignments()
1197  );
1198  }
+ Here is the call graph for this function:

◆ getInstanceByObjId()

◆ getInstanceByRefId()

◆ getLastChange()

ilObjStudyProgramme::getLastChange ( )

Get the timestamp of the last change on this program or sub program.

Definition at line 323 of file class.ilObjStudyProgramme.php.

References getSettings().

323  : DateTime
324  {
325  return $this->getSettings()->getLastChange();
326  }
+ Here is the call graph for this function:

◆ getLocalMembers()

ilObjStudyProgramme::getLocalMembers ( )

get usr_ids with assignment on this node

Definition at line 1103 of file class.ilObjStudyProgramme.php.

References $members_cache, and ilObject\getId().

1103  : array
1104  {
1105  if (!$this->members_cache) {
1106  $this->members_cache = array_map(
1107  static function ($assignment) {
1108  return $assignment->getUserId();
1109  },
1110  $this->assignment_repository->getByPrgId($this->getId())
1111  );
1112  }
1113  return $this->members_cache;
1114  }
+ Here is the call graph for this function:

◆ getLoggedInUserId()

ilObjStudyProgramme::getLoggedInUserId ( )
protected

Definition at line 1678 of file class.ilObjStudyProgramme.php.

Referenced by acknowledgeCourses(), and assignUser().

1678  : int
1679  {
1680  return $this->ilUser->getId();
1681  }
+ Here is the caller graph for this function:

◆ getLogger()

ilObjStudyProgramme::getLogger ( )
protected

Definition at line 182 of file class.ilObjStudyProgramme.php.

References $logger.

182  : ilLogger
183  {
184  return $this->logger;
185  }

◆ getLPChildren()

ilObjStudyProgramme::getLPChildren ( )

Get the leafs the study programme contains.

Returns
ilStudyProgrammeLeaf[]
Exceptions
ilStudyProgrammeTreeExceptionwhen this object is not in tree.

Definition at line 662 of file class.ilObjStudyProgramme.php.

References $lp_children, ilContainerSorting\_getInstance(), ilObject\getId(), ilObject\getRefId(), and throwIfNotInTree().

Referenced by getAmountOfLPChildren(), and getLPChildrenIds().

662  : array
663  {
664  $this->throwIfNotInTree();
665 
666  if ($this->lp_children === null) {
667  $this->lp_children = array();
668 
669  $ref_ids = $this->tree->getChildsByType($this->getRefId(), "crsr");
670 
671  // apply container sorting to tree
672  $sorting = ilContainerSorting::_getInstance($this->getId());
673  $ref_ids = $sorting->sortItems(array('crs_ref' => $ref_ids));
674  $ref_ids = $ref_ids['crs_ref'];
675 
676  $lp_children = array_map(function ($node_data) {
677  $lp_obj = $this->object_factory->getInstanceByRefId((int) $node_data["child"]);
678 
679  // filter out all StudyProgramme instances
680  return ($lp_obj instanceof $this) ? null : $lp_obj;
681  }, $ref_ids);
682 
683  $this->lp_children = array_filter($lp_children);
684  }
685  return $this->lp_children;
686  }
static _getInstance(int $a_obj_id)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getLPChildrenIds()

ilObjStudyProgramme::getLPChildrenIds ( )

Get the obj-ids of the leafs the program contains.

Returns
int[]
Exceptions
ilStudyProgrammeTreeException

Definition at line 694 of file class.ilObjStudyProgramme.php.

References getLPChildren().

694  : array
695  {
696  return array_map(static function ($child) {
697  return $child->getId();
698  }, $this->getLPChildren());
699  }
getLPChildren()
Get the leafs the study programme contains.
+ Here is the call graph for this function:

◆ getLPMode()

ilObjStudyProgramme::getLPMode ( )

Definition at line 351 of file class.ilObjStudyProgramme.php.

References getSettings().

Referenced by addNode(), canBeCompleted(), and nodeInserted().

351  : int
352  {
353  return $this->getSettings()->getLPMode();
354  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getMembers()

ilObjStudyProgramme::getMembers ( )

get usr_ids with any progress on this node

Returns
int[]

Definition at line 1091 of file class.ilObjStudyProgramme.php.

References getAssignments().

1091  : array
1092  {
1093  $usr_ids = [];
1094  foreach ($this->getAssignments() as $assignment) {
1095  $usr_ids[] = $assignment->getUserId();
1096  }
1097  return array_unique($usr_ids);
1098  }
+ Here is the call graph for this function:

◆ getMembersOfMembershipSource()

ilObjStudyProgramme::getMembersOfMembershipSource ( ilStudyProgrammeAutoMembershipSource  $ams,
?int  $exclude_id 
)
protected

Get member-ids of a certain source.

Returns
int[]
Exceptions
InvalidArgumentExceptionif $src_type is not in AutoMembershipSource-types

Definition at line 1437 of file class.ilObjStudyProgramme.php.

Referenced by enableAutomaticMembershipSource(), and getApplicableMembershipSourceForUser().

1437  : array
1438  {
1439  $source_reader = $this->membersourcereader_factory->getReaderFor($ams, $exclude_id);
1440  return $source_reader->getMemberIds();
1441  }
+ Here is the caller graph for this function:

◆ getNow()

ilObjStudyProgramme::getNow ( )
protected

Definition at line 1683 of file class.ilObjStudyProgramme.php.

1684  {
1685  return new DateTimeImmutable();
1686  }

◆ getParent()

ilObjStudyProgramme::getParent ( )

Get the parent ilObjStudyProgramme of this object.

Returns null if parent is no StudyProgramme.

Exceptions
ilExceptionwhen this object is not in tree.

Definition at line 536 of file class.ilObjStudyProgramme.php.

References $parent, ilObject\getRefId(), and throwIfNotInTree().

Referenced by moveTo(), removeNode(), and updateLastChange().

537  {
538  if ($this->parent === false) {
539  $this->throwIfNotInTree();
540  $parent_data = $this->tree->getParentNodeData($this->getRefId());
541  if ($parent_data["type"] !== "prg") {
542  $this->parent = null;
543  } else {
544  $this->parent = self::getInstanceByRefId($parent_data["ref_id"]);
545  }
546  }
547  return $this->parent;
548  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getParents()

ilObjStudyProgramme::getParents ( bool  $include_references = false)

Get all parents of the node, where the root of the program comes first.

Returns
ilObjStudyProgramme[]

Definition at line 579 of file class.ilObjStudyProgramme.php.

References $parent, and getReferencesTo().

Referenced by getRoot().

579  : array
580  {
581  $current = $this;
582  $parents = [];
583  $queque = [$current];
584  while ($element = array_shift($queque)) {
585  $parent = $element->getParent();
586  if ($parent === null || $include_references) {
587  foreach ($this->getReferencesTo($element) as $reference) {
588  if ($this->tree->isDeleted($reference->getRefId())) {
589  continue;
590  }
591  $r_parent = $reference->getParent();
592  if (is_null($r_parent)) {
593  continue;
594  }
595  $queque[] = $r_parent;
596  $parents[] = $r_parent;
597  }
598  continue;
599  }
600  $queque[] = $parent;
601  $parents[] = $parent;
602  }
603  return array_reverse($parents);
604  }
getReferencesTo(ilObjStudyProgramme $prg)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getPoints()

ilObjStudyProgramme::getPoints ( )

Get the amount of points.

Definition at line 331 of file class.ilObjStudyProgramme.php.

References getSettings().

331  : int
332  {
333  return $this->getSettings()->getAssessmentSettings()->getPoints();
334  }
+ Here is the call graph for this function:

◆ getPrgInstanceByObjId()

ilObjStudyProgramme::getPrgInstanceByObjId ( int  $obj_id)
protected

Definition at line 152 of file class.ilObjStudyProgramme.php.

References getRefIdFor().

153  {
154  return self::getInstanceByRefId(self::getRefIdFor($obj_id));
155  }
getRefIdFor(int $obj_id)
+ Here is the call graph for this function:

◆ getProgrammesMonitoringCategory()

static ilObjStudyProgramme::getProgrammesMonitoringCategory ( int  $cat_ref_id)
staticprotected

Get all (not OUTDATED) StudyProgrammes monitoring this category.

Returns
ilObjStudyProgramme[]

Definition at line 1292 of file class.ilObjStudyProgramme.php.

References ilObject\$db, ilObject\_getAllReferences(), ilStudyProgrammeDIC\dic(), and ILIAS\Repository\int().

1292  : array
1293  {
1294  $db = ilStudyProgrammeDIC::dic()['model.AutoCategories.ilStudyProgrammeAutoCategoriesRepository'];
1295  $programmes =
1296  array_filter(
1297  array_map(
1298  static function (array $rec) {
1299  $values = array_values($rec);
1300  $prg_obj_id = (int) array_shift($values);
1301 
1302  $references = ilObject::_getAllReferences($prg_obj_id);
1303  $prg_ref_id = (int) array_shift($references);
1304 
1305  $prg = self::getInstanceByRefId($prg_ref_id);
1306  if ($prg->isAutoContentApplicable()) {
1307  return $prg;
1308  }
1309  },
1310  $db::getProgrammesFor($cat_ref_id)
1311  )
1312  );
1313  return $programmes;
1314  }
static _getAllReferences(int $id)
get all reference ids for object ID
ilDBInterface $db
+ Here is the call graph for this function:

◆ getProgrammesMonitoringMemberSource()

static ilObjStudyProgramme::getProgrammesMonitoringMemberSource ( string  $src_type,
int  $src_id 
)
staticprotected

Get all StudyProgrammes monitoring this membership-source.

Returns
ilObjStudyProgramme[]

Definition at line 1447 of file class.ilObjStudyProgramme.php.

References ilObject\$db, ilObject\_getAllReferences(), ilStudyProgrammeDIC\dic(), and ILIAS\Repository\int().

1447  : array
1448  {
1449  $db = ilStudyProgrammeDIC::dic()['model.AutoMemberships.ilStudyProgrammeAutoMembershipsRepository'];
1450  $programmes = array_map(
1451  static function ($rec) {
1452  $values = array_values($rec);
1453  $prg_obj_id = (int) array_shift($values);
1454 
1455  $references = ilObject::_getAllReferences($prg_obj_id);
1456  $prg_ref_id = (int) array_shift($references);
1457 
1458  $prg = self::getInstanceByRefId($prg_ref_id);
1459  return $prg;
1460  },
1461  $db::getProgrammesFor($src_type, $src_id)
1462  );
1463  return $programmes;
1464  }
static _getAllReferences(int $id)
get all reference ids for object ID
ilDBInterface $db
+ Here is the call graph for this function:

◆ getReferencesTo()

ilObjStudyProgramme::getReferencesTo ( ilObjStudyProgramme  $prg)
protected

Definition at line 550 of file class.ilObjStudyProgramme.php.

References $id, ilObject\$tree, ilObject\_getAllReferences(), ilContainerReference\_lookupSourceIds(), ilObject\getId(), and ilTree\isDeleted().

Referenced by getParents(), and getReferencesToSelf().

550  : array
551  {
552  $tree = $this->tree;
553  return array_filter(
554  array_map(
555  static function ($id) {
556  $refs = ilObject::_getAllReferences((int) $id);
557  return new ilObjStudyProgrammeReference(
558  array_shift($refs)
559  );
560  },
562  ),
563  static function ($prg_ref) use ($tree) {
564  return !$tree->isDeleted($prg_ref->getRefId());
565  }
566  );
567  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getAllReferences(int $id)
get all reference ids for object ID
ilTree $tree
isDeleted(int $a_node_id)
This is a wrapper for isSaved() with a more useful name.
static _lookupSourceIds(int $a_target_id)
Get ids of all container references that target the object with the given id.
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:24
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getReferencesToSelf()

ilObjStudyProgramme::getReferencesToSelf ( )

Definition at line 569 of file class.ilObjStudyProgramme.php.

References getReferencesTo().

569  : array
570  {
571  return $this->getReferencesTo($this);
572  }
getReferencesTo(ilObjStudyProgramme $prg)
+ Here is the call graph for this function:

◆ getRefIdFor()

static ilObjStudyProgramme::getRefIdFor ( int  $obj_id)
static

Definition at line 143 of file class.ilObjStudyProgramme.php.

References ilObject\_getAllReferences().

Referenced by ilStudyProgrammeMailMemberSearchGUI\getRootPrgRefId(), ilStudyProgrammeUserTable\lookupTitle(), ilObjStudyProgrammeMembersGUI\removeAssignment(), and ilPRGMail\sendMail().

143  : int
144  {
145  $refs = ilObject::_getAllReferences($obj_id);
146  if (count($refs) < 1) {
147  throw new ilException("Could not find ref_id for programme with obj_id $obj_id");
148  }
149  return (int) array_shift($refs);
150  }
static _getAllReferences(int $id)
get all reference ids for object ID
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRoot()

ilObjStudyProgramme::getRoot ( )

Get the ilObjStudyProgramme that is the root node of the tree this programme is in.

Definition at line 647 of file class.ilObjStudyProgramme.php.

References getParents().

648  {
649  $parents = $this->getParents();
650  if (count($parents) < 1) {
651  return $this;
652  }
653  return $parents[0];
654  }
getParents(bool $include_references=false)
Get all parents of the node, where the root of the program comes first.
+ Here is the call graph for this function:

◆ getSettings()

◆ getSettingsRepository()

ilObjStudyProgramme::getSettingsRepository ( )
protected

Definition at line 174 of file class.ilObjStudyProgramme.php.

References $settings_repository.

Referenced by assignUser(), changeAmountOfPoints(), changeProgressDeadline(), changeProgressValidityDate(), create(), deleteSettings(), getSettings(), markAccredited(), markNotRelevant(), markRelevant(), succeed(), unmarkAccredited(), updatePlanFromRepository(), and updateSettings().

175  {
177  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilStudyProgrammeSettingsDBRepository $settings_repository
+ Here is the caller graph for this function:

◆ getSpecificAssignment()

ilObjStudyProgramme::getSpecificAssignment ( int  $assignment_id)

Definition at line 1014 of file class.ilObjStudyProgramme.php.

1014  : ilPRGAssignment
1015  {
1016  return $this->assignment_repository->get($assignment_id);
1017  }
Assignments are relations of users to a PRG; They hold progress-information for (sub-)nodes of the PR...

◆ getStatus()

ilObjStudyProgramme::getStatus ( )

Definition at line 389 of file class.ilObjStudyProgramme.php.

References getSettings().

Referenced by assignUser(), canBeCompleted(), ilStudyProgrammeIndividualPlanProgressListGUI\getTitleForItem(), isActive(), and isAutoContentApplicable().

389  : int
390  {
391  return $this->getSettings()->getAssessmentSettings()->getStatus();
392  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSubType()

ilObjStudyProgramme::getSubType ( )

Gets the SubType Object.

Definition at line 417 of file class.ilObjStudyProgramme.php.

References getSettings().

Referenced by updateCustomIcon().

418  {
419  $type_settings = $this->getSettings()->getTypeSettings();
420  if (!in_array($type_settings->getTypeId(), array("-", "0"))) {
421  $subtype_id = $type_settings->getTypeId();
422  return $this->type_repository->getType($subtype_id);
423  }
424 
425  return null;
426  }
Class ilStudyProgrammeType.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getTree()

ilObjStudyProgramme::getTree ( )
protected

Definition at line 178 of file class.ilObjStudyProgramme.php.

References ilObject\$tree.

178  : ilTree
179  {
180  return $this->tree;
181  }
ilTree $tree

◆ hasAdvancedMetadata()

ilObjStudyProgramme::hasAdvancedMetadata ( )

Definition at line 294 of file class.ilObjStudyProgramme.php.

References ilObject\$type, and getSettings().

294  : bool
295  {
296  $sub_type_id = $this->getSettings()->getTypeSettings()->getTypeId();
297  $type = null;
298  if ($sub_type_id) {
299  $type = $this->type_repository->getType($sub_type_id);
300  }
301 
302  return !is_null($type) && count($this->type_repository->getAssignedAMDRecordIdsByType($type->getId(), true)) > 0;
303  }
string $type
+ Here is the call graph for this function:

◆ hasAssignmentOf()

ilObjStudyProgramme::hasAssignmentOf ( int  $user_id)

Check whether user is assigned to this program or any node above.

Definition at line 1042 of file class.ilObjStudyProgramme.php.

References getAmountOfAssignmentsOf().

1042  : bool
1043  {
1044  return $this->getAmountOfAssignmentsOf($user_id) > 0;
1045  }
getAmountOfAssignmentsOf(int $user_id)
Get the amount of assignments a user has on this program node or any node above.
+ Here is the call graph for this function:

◆ hasAssignments()

ilObjStudyProgramme::hasAssignments ( )

Are there any assignments on this node or any node above?

Definition at line 1119 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), and ILIAS\Repository\lng().

1119  : bool
1120  {
1121  $filter = new ilPRGAssignmentFilter($this->lng);
1122  $count = $this->assignment_repository->countAllForNodeIsContained(
1123  $this->getId(),
1124  null,
1125  $filter
1126  );
1127  return $count > 0;
1128 
1129  }
+ Here is the call graph for this function:

◆ hasAssignmentsOfSingleProgramForUser()

ilObjStudyProgramme::hasAssignmentsOfSingleProgramForUser ( int  $usr_id)

Get assignments of user to this program-node only.

Definition at line 1144 of file class.ilObjStudyProgramme.php.

References getAssignmentsOfSingleProgramForUser().

1144  : bool
1145  {
1146  return count($this->getAssignmentsOfSingleProgramForUser($usr_id)) > 0;
1147  }
getAssignmentsOfSingleProgramForUser(int $usr_id)
Get assignments of user to this program-node only.
+ Here is the call graph for this function:

◆ hasAutomaticContentCategories()

ilObjStudyProgramme::hasAutomaticContentCategories ( )

Definition at line 1214 of file class.ilObjStudyProgramme.php.

References getAutomaticContentCategories().

1214  : bool
1215  {
1216  return count($this->getAutomaticContentCategories()) > 0;
1217  }
getAutomaticContentCategories()
Get configuration of categories with auto-content for this StudyProgramme;.
+ Here is the call graph for this function:

◆ hasChildren()

ilObjStudyProgramme::hasChildren ( bool  $include_references = false)

Does this StudyProgramme have other ilObjStudyProgrammes as children?

Exceptions
ilStudyProgrammeTreeException

Definition at line 611 of file class.ilObjStudyProgramme.php.

References getAmountOfChildren().

611  : bool
612  {
613  return $this->getAmountOfChildren($include_references) > 0;
614  }
getAmountOfChildren($include_references=false)
Get the amount of other StudyProgrammes this StudyProgramme has as children.
+ Here is the call graph for this function:

◆ hasContentPage()

ilObjStudyProgramme::hasContentPage ( )

Definition at line 1909 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

Referenced by createContentPage().

1909  : bool
1910  {
1911  return \ilContainerPage::_exists(self::CP_TYPE, $this->getId());
1912  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hasLPChildren()

ilObjStudyProgramme::hasLPChildren ( )

Definition at line 710 of file class.ilObjStudyProgramme.php.

References getAmountOfLPChildren().

Referenced by isAutoContentApplicable().

710  : bool
711  {
712  return ($this->getAmountOfLPChildren() > 0);
713  }
getAmountOfLPChildren()
Get the amount of leafs the study programme contains.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ hasRelevantProgresses()

ilObjStudyProgramme::hasRelevantProgresses ( )

Are there any users that have a relevant progress on this programme?

Definition at line 1178 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), and ILIAS\Repository\lng().

Referenced by canBeRemoved().

1178  : bool
1179  {
1180  $filter = new ilPRGAssignmentFilter($this->lng);
1181  $filter = $filter->withValues([
1182  'prg_status_hide_irrelevant' => true
1183  ]);
1184  $count = $this->assignment_repository->countAllForNodeIsContained(
1185  $this->getId(),
1186  null,
1187  $filter
1188  );
1189  return $count > 0;
1190  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initStudyProgrammeCache()

static ilObjStudyProgramme::initStudyProgrammeCache ( )
static

Definition at line 111 of file class.ilObjStudyProgramme.php.

References ilObjStudyProgrammeCache\singleton().

111  : void
112  {
113  if (self::$study_programme_cache === null) {
114  self::$study_programme_cache = ilObjStudyProgrammeCache::singleton();
115  }
116  }
+ Here is the call graph for this function:

◆ isActive()

ilObjStudyProgramme::isActive ( )

Definition at line 409 of file class.ilObjStudyProgramme.php.

References getStatus(), and ilStudyProgrammeSettings\STATUS_ACTIVE.

+ Here is the call graph for this function:

◆ isAutoContentApplicable()

ilObjStudyProgramme::isAutoContentApplicable ( )

AutoContent should only be available in active- or draft-mode, and only, if there is no sub-programme.

Exceptions
ilStudyProgrammeTreeException

Definition at line 1322 of file class.ilObjStudyProgramme.php.

References getAmountOfChildren(), getSettings(), getStatus(), hasLPChildren(), ilStudyProgrammeSettings\STATUS_ACTIVE, and ilStudyProgrammeSettings\STATUS_DRAFT.

1322  : bool
1323  {
1324  $valid_status = in_array(
1325  $this->getSettings()->getAssessmentSettings()->getStatus(),
1326  [
1329  ],
1330  true
1331  );
1332 
1333  $crslnk_allowed = (
1334  $this->hasLPChildren()
1335  || $this->getAmountOfChildren(true) === 0
1336  );
1337 
1338  return $valid_status && $crslnk_allowed;
1339  }
getAmountOfChildren($include_references=false)
Get the amount of other StudyProgrammes this StudyProgramme has as children.
+ Here is the call graph for this function:

◆ isCertificateActive()

ilObjStudyProgramme::isCertificateActive ( )

Definition at line 428 of file class.ilObjStudyProgramme.php.

References $certificate_template_repository, ilCertificateTemplateRepository\fetchCurrentlyUsedCertificate(), and ilObject\getId().

428  : bool
429  {
430  $global_settings = new ilSetting('certificate');
431  $global_active = (bool) $global_settings->get('active', '0');
432  if (!$global_active) {
433  return false;
434  }
436  $certificate_template = $certificate_template_repository->fetchCurrentlyUsedCertificate($this->getId());
437  return $certificate_template->isCurrentlyActive();
438  }
fetchCurrentlyUsedCertificate(int $objId)
ilCertificateTemplateRepository $certificate_template_repository
+ Here is the call graph for this function:

◆ markAccredited()

ilObjStudyProgramme::markAccredited ( int  $assignment_id,
int  $acting_usr_id,
ilPRGMessageCollection  $err_collection 
)

Definition at line 1696 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), and getSettingsRepository().

1700  : void {
1701  $progress_node_id = $this->getId();
1702  $assignment = $this->assignment_repository->get($assignment_id)
1703  ->markAccredited(
1704  $this->getSettingsRepository(),
1705  $this->events,
1706  $progress_node_id,
1707  $acting_usr_id,
1708  $err_collection
1709  );
1710 
1711  $this->assignment_repository->store($assignment);
1712  }
+ Here is the call graph for this function:

◆ markNotRelevant()

ilObjStudyProgramme::markNotRelevant ( int  $assignment_id,
int  $acting_usr_id,
ilPRGMessageCollection  $err_collection 
)

Definition at line 1732 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), getSettingsRepository(), and refreshLPStatus().

1736  : void {
1737  $progress_node_id = $this->getId();
1738  $assignment = $this->assignment_repository->get($assignment_id)
1739  ->markNotRelevant(
1740  $this->getSettingsRepository(),
1741  $progress_node_id,
1742  $acting_usr_id,
1743  $err_collection
1744  );
1745 
1746  $this->assignment_repository->store($assignment);
1747  $this->refreshLPStatus($assignment->getUserId());
1748  }
refreshLPStatus(int $usr_id, int $node_obj_id=null)
+ Here is the call graph for this function:

◆ markRelevant()

ilObjStudyProgramme::markRelevant ( int  $assignment_id,
int  $acting_usr_id,
ilPRGMessageCollection  $err_collection 
)

Definition at line 1750 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), getSettingsRepository(), and refreshLPStatus().

1754  : void {
1755  $progress_node_id = $this->getId();
1756  $assignment = $this->assignment_repository->get($assignment_id)
1757  ->markRelevant(
1758  $this->getSettingsRepository(),
1759  $progress_node_id,
1760  $acting_usr_id,
1761  $err_collection
1762  );
1763 
1764  $this->assignment_repository->store($assignment);
1765  $this->refreshLPStatus($assignment->getUserId());
1766  }
refreshLPStatus(int $usr_id, int $node_obj_id=null)
+ Here is the call graph for this function:

◆ moveTo()

ilObjStudyProgramme::moveTo ( ilObjStudyProgramme  $new_parent)

Move this tree node to a new parent.

Throws when manipulation of tree is not allowed due to invariants that need to hold on the tree.

Exceptions
ilStudyProgrammeTreeException
ilException

Definition at line 912 of file class.ilObjStudyProgramme.php.

References $DIC, $parent, clearChildrenCache(), clearLPChildrenCache(), clearParentCache(), getParent(), and ilObject\getRefId().

913  {
914  global $DIC;
915  $rbacadmin = $DIC['rbacadmin'];
916 
917  if ($parent = $this->getParent()) {
918  // TODO: check if there some leafs in the new parent
919 
920  $this->tree->moveTree($this->getRefId(), $new_parent->getRefId());
921  // necessary to clean up permissions
922  $rbacadmin->adjustMovedObjectPermissions($this->getRefId(), $parent->getRefId());
923 
924  // TODO: lp-progress needs to be updated
925 
926  // clear caches on different nodes
927  $this->clearParentCache();
928 
929  $parent->clearChildrenCache();
930  $parent->clearLPChildrenCache();
931 
932  $new_parent->clearChildrenCache();
933  $new_parent->clearLPChildrenCache();
934  }
935 
936  return $this;
937  }
clearLPChildrenCache()
Clear the cached lp children.
getParent()
Get the parent ilObjStudyProgramme of this object.
clearChildrenCache()
Clear the cached children.
global $DIC
Definition: shib_login.php:25
clearParentCache()
Clear the cached parent to query it again at the tree.
+ Here is the call graph for this function:

◆ nodeInserted()

ilObjStudyProgramme::nodeInserted (   $prg)

Clears child cache and adds progress for new node.

called by ilObjStudyProgrammeReference::putInTree, e.g.

Parameters
ilObjStudyProgrammeReference | ilObjStudyProgramme$prg
Exceptions
ilStudyProgrammeTreeException
ilException

Definition at line 828 of file class.ilObjStudyProgramme.php.

References addMissingProgresses(), clearChildrenCache(), getLPMode(), getSettings(), ilStudyProgrammeSettings\MODE_LP_COMPLETED, and ilStudyProgrammeSettings\MODE_POINTS.

828  : void
829  {
830  if (! $prg instanceof ilObjStudyProgrammeReference &&
831  ! $prg instanceof ilObjStudyProgramme
832  ) {
833  throw new ilStudyProgrammeTreeException("Wrong type of node: " . get_class($prg));
834  }
836  throw new ilStudyProgrammeTreeException("Program already contains leafs.");
837  }
838 
840  $this->settings_repository->update(
842  );
843  }
844 
845  $this->clearChildrenCache();
846  $this->addMissingProgresses();
847  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
clearChildrenCache()
Clear the cached children.
addMissingProgresses()
Add missing progress records for all assignments of this programm.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the call graph for this function:

◆ putInTree()

ilObjStudyProgramme::putInTree ( int  $parent_ref_id)

Overwritten from ilObject.

Calls nodeInserted on parent object if parent object is another program.

Parameters
int$parent_ref_id
Exceptions
ilStudyProgrammeTreeException
ilException

Definition at line 856 of file class.ilObjStudyProgramme.php.

References ilObject\_lookupType().

Referenced by addNode().

856  : void
857  {
858  parent::putInTree($parent_ref_id);
859 
860  if (ilObject::_lookupType($parent_ref_id, true) === "prg") {
861  $par = self::getInstanceByRefId($parent_ref_id);
862  $par->nodeInserted($this);
863  }
864  }
static _lookupType(int $id, bool $reference=false)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ refreshLPStatus()

ilObjStudyProgramme::refreshLPStatus ( int  $usr_id,
int  $node_obj_id = null 
)
protected

Definition at line 1688 of file class.ilObjStudyProgramme.php.

References ilLPStatusWrapper\_updateStatus(), and ilObject\getId().

Referenced by acknowledgeCourses(), changeAmountOfPoints(), changeProgressDeadline(), changeProgressValidityDate(), markNotRelevant(), markRelevant(), removeAssignment(), unmarkAccredited(), and updatePlanFromRepository().

1688  : void
1689  {
1690  if (is_null($node_obj_id)) {
1691  $node_obj_id = $this->getId();
1692  }
1693  ilLPStatusWrapper::_updateStatus($node_obj_id, $usr_id);
1694  }
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removeAssignment()

ilObjStudyProgramme::removeAssignment ( ilPRGAssignment  $assignment)

Remove an assignment from this program.

Throws when assignment doesn't have this program as root node.

Exceptions
ilException

Definition at line 992 of file class.ilObjStudyProgramme.php.

References ilPRGAssignment\getId(), ilObject\getId(), ilPRGAssignment\getProgresses(), ilPRGAssignment\getRootId(), ilPRGAssignment\getUserId(), and refreshLPStatus().

993  {
994  $this->members_cache = null;
995  if ($assignment->getRootId() !== $this->getId()) {
996  throw new ilException(
997  "ilObjStudyProgramme::removeAssignment: Assignment '"
998  . $assignment->getId() . "' does not belong to study "
999  . "program '" . $this->getId() . "'."
1000  );
1001  }
1002 
1003  $this->assignment_repository->delete($assignment);
1004 
1005  $affected_node_ids = array_map(fn($pgs) => $pgs->getNodeId(), $assignment->getProgresses());
1006  foreach ($affected_node_ids as $node_obj_id) {
1007  $this->refreshLPStatus($assignment->getUserId(), $node_obj_id);
1008  }
1009 
1010  $this->events->userDeassigned($assignment);
1011  return $this;
1012  }
getProgresses(array &$ret=[], ilPRGProgress $pgs=null)
refreshLPStatus(int $usr_id, int $node_obj_id=null)
+ Here is the call graph for this function:

◆ removeCrsFromProgrammes()

static ilObjStudyProgramme::removeCrsFromProgrammes ( int  $crs_ref_id,
int  $cat_ref_id 
)
static

Check, if a category is under surveillance and automatically remove the deleted course.

Exceptions
ilStudyProgrammeTreeException

Definition at line 1277 of file class.ilObjStudyProgramme.php.

Referenced by ilStudyProgrammeAppEventListener\removeCrsFromProgrammes().

1277  : void
1278  {
1279  foreach (self::getProgrammesMonitoringCategory($cat_ref_id) as $prg) {
1280  foreach ($prg->getLPChildren() as $child) {
1281  if ((int) $child->getTargetRefId() === $crs_ref_id) {
1282  $child->delete();
1283  }
1284  }
1285  }
1286  }
+ Here is the caller graph for this function:

◆ removeMemberFromProgrammes()

static ilObjStudyProgramme::removeMemberFromProgrammes ( string  $src_type,
int  $src_id,
int  $usr_id 
)
static

Definition at line 1477 of file class.ilObjStudyProgramme.php.

References ilPRGAssignmentDBRepository\delete(), ilStudyProgrammeDIC\dic(), ilStudyProgrammeAutoMembershipSource\SOURCE_MAPPING, and ilPRGAssignmentDBRepository\store().

Referenced by ilStudyProgrammeAppEventListener\removeMemberFromProgrammes().

1477  : void
1478  {
1479  $now = new DateTimeImmutable();
1480  $assignment_repository = ilStudyProgrammeDIC::dic()['repo.assignment'];
1481  foreach (self::getProgrammesMonitoringMemberSource($src_type, $src_id) as $prg) {
1482  $assignments = $prg->getAssignmentsOfSingleProgramForUser($usr_id);
1483  $next_membership_source = $prg->getApplicableMembershipSourceForUser($usr_id, $src_id);
1484 
1485  foreach ($assignments as $assignment) {
1486  if (!$assignment->getProgressTree()->isInProgress()) {
1487  continue;
1488  }
1489 
1490  if (
1491  $next_membership_source !== null
1492  && $next_membership_source?->isEnabled()
1493  && $next_membership_source->getSourceId() !== $src_id
1494  ) {
1495  $new_src_type = $next_membership_source->getSourceType();
1496  $assigned_by = ilStudyProgrammeAutoMembershipSource::SOURCE_MAPPING[$new_src_type];
1497  $assignment = $assignment->withLastChange($assigned_by, $now);
1498  $assignment_repository->store($assignment);
1499  break;
1500  } else {
1501  $assignment_repository->delete($assignment);
1502  }
1503  }
1504  }
1505  }
ilPRGAssignmentDBRepository $assignment_repository
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removeNode()

ilObjStudyProgramme::removeNode ( ilObjStudyProgramme  $a_prg)

Remove a node from this object.

Throws when node is no child of the object. Throws when manipulation of tree is not allowed due to invariants that need to hold on the tree.

Exceptions
ilException
ilStudyProgrammeTreeException

Definition at line 875 of file class.ilObjStudyProgramme.php.

References canBeRemoved(), clearChildrenCache(), clearParentCache(), ilObject\getId(), getParent(), and ilObject\getRefId().

876  {
877  if ($a_prg->getParent()->getId() !== $this->getId()) {
878  throw new ilStudyProgrammeTreeException("This is no parent of the given programm.");
879  }
880 
881  if (!$a_prg->canBeRemoved()) {
882  throw new ilStudyProgrammeTreeException("The node has relevant assignments.");
883  }
884 
885  // *sigh*...
886  $node_data = $this->tree->getNodeData($a_prg->getRefId());
887  $this->tree->deleteTree($node_data);
888  $a_prg->clearParentCache();
889  $this->clearChildrenCache();
890 
891  return $this;
892  }
getParent()
Get the parent ilObjStudyProgramme of this object.
clearChildrenCache()
Clear the cached children.
canBeRemoved()
Check weather a node can be removed.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
clearParentCache()
Clear the cached parent to query it again at the tree.
+ Here is the call graph for this function:

◆ resetExpiryInfoSentFor()

ilObjStudyProgramme::resetExpiryInfoSentFor ( ilPRGAssignment  $ass)

Definition at line 1024 of file class.ilObjStudyProgramme.php.

1024  : void
1025  {
1026  $this->assignment_repository->resetExpiryInfoSentFor($ass);
1027  }

◆ resetRiskyToFailSentFor()

ilObjStudyProgramme::resetRiskyToFailSentFor ( ilPRGAssignment  $ass)

Definition at line 1034 of file class.ilObjStudyProgramme.php.

1034  : void
1035  {
1036  $this->assignment_repository->resetRiskyToFailSentFor($ass);
1037  }

◆ setPoints()

ilObjStudyProgramme::setPoints ( int  $points)

Set the amount of points.

Exceptions
ilException

Definition at line 341 of file class.ilObjStudyProgramme.php.

References getSettings(), updateLastChange(), and updateSettings().

342  {
343  $settings = $this->getSettings();
344  $this->updateSettings(
345  $settings->withAssessmentSettings($settings->getAssessmentSettings()->withPoints($points))
346  );
347  $this->updateLastChange();
348  return $this;
349  }
updateLastChange()
Update last change timestamp on this node and its parents.
updateSettings(ilStudyProgrammeSettings $settings)
+ Here is the call graph for this function:

◆ setProgressesCompletedFor()

static ilObjStudyProgramme::setProgressesCompletedFor ( int  $obj_id,
int  $user_id 
)
static

Succeed all StudyProgramme(Nodes) where the object with the given id (a CRSR) is in a Programme with MODE_LP_COMPLETED.

This is exclusively called via event "Services/Tracking, updateStatus" (onServiceTrackingUpdateStatus)

Parameters
int$ref_idthe RefId of the CRSR; used to find the PRG it's in
int$obj_idthe ObjId of the CRS; used as "triggering object"
int$user_idthe user's id to succeed for; all assignments are affected

This is exclusively called via event "components/ILIAS/Tracking, updateStatus" (onServiceTrackingUpdateStatus)

Definition at line 1549 of file class.ilObjStudyProgramme.php.

References ilObject\$ref_id, ilObject\$type, ilObject\_getAllReferences(), and ilObject\_lookupType().

1549  : void
1550  {
1551  // We only use courses via crs_refs
1552  $type = ilObject::_lookupType($obj_id);
1553  if ($type === "crsr") {
1554  foreach (ilObject::_getAllReferences($obj_id) as $ref_id) {
1555  self::setProgressesCompletedIfParentIsProgrammeInLPCompletedMode($ref_id, $obj_id, $user_id);
1556  }
1557  }
1558  }
string $type
static _getAllReferences(int $id)
get all reference ids for object ID
static _lookupType(int $id, bool $reference=false)
+ Here is the call graph for this function:

◆ setProgressesCompletedIfParentIsProgrammeInLPCompletedMode()

static ilObjStudyProgramme::setProgressesCompletedIfParentIsProgrammeInLPCompletedMode ( int  $ref_id,
int  $obj_id,
int  $user_id 
)
static
Exceptions
ilException

Definition at line 1563 of file class.ilObjStudyProgramme.php.

References $DIC, ilObject\$tree, ilTree\getParentNodeData(), and ilStudyProgrammeSettings\MODE_LP_COMPLETED.

Referenced by ilStudyProgrammeAppEventListener\onServiceTrackingUpdateStatus().

1567  : void {
1568  global $DIC; // TODO: replace this by a settable static for testing purpose?
1569  $tree = $DIC['tree'];
1570  $node_data = $tree->getParentNodeData($ref_id);
1571  if (count($node_data) === 0 || !array_key_exists('type', $node_data) || $node_data["type"] !== "prg") {
1572  return;
1573  }
1574  self::initStudyProgrammeCache();
1575  $prg = self::getInstanceByRefId($node_data["child"]);
1576  if ($prg->getLPMode() !== ilStudyProgrammeSettings::MODE_LP_COMPLETED) {
1577  return;
1578  }
1579  $prg->succeed($user_id, $obj_id);
1580  }
ilTree $tree
getParentNodeData(int $a_node_id)
get data of parent node from tree and object_data
global $DIC
Definition: shib_login.php:25
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setStatus()

ilObjStudyProgramme::setStatus ( int  $a_status)

Set the status of the node.

Exceptions
ilException

Definition at line 399 of file class.ilObjStudyProgramme.php.

References getSettings(), updateLastChange(), and updateSettings().

400  {
401  $settings = $this->getSettings();
402  $this->updateSettings(
403  $settings->withAssessmentSettings($settings->getAssessmentSettings()->withStatus($a_status))
404  );
405  $this->updateLastChange();
406  return $this;
407  }
updateLastChange()
Update last change timestamp on this node and its parents.
updateSettings(ilStudyProgrammeSettings $settings)
+ Here is the call graph for this function:

◆ statusToRepr()

ilObjStudyProgramme::statusToRepr ( int  $status)

Get a user readable representation of a status.

Definition at line 1887 of file class.ilObjStudyProgramme.php.

References ilObject\$lng, ilLanguage\loadLanguageModule(), ilPRGProgress\STATUS_ACCREDITED, ilPRGProgress\STATUS_COMPLETED, ilPRGProgress\STATUS_FAILED, ilPRGProgress\STATUS_IN_PROGRESS, ilPRGProgress\STATUS_NOT_RELEVANT, and ilLanguage\txt().

1887  : string
1888  {
1889  $lng = $this->lng;
1890  $lng->loadLanguageModule("prg");
1891  if ($status === ilPRGProgress::STATUS_IN_PROGRESS) {
1892  return $lng->txt("prg_status_in_progress");
1893  }
1894  if ($status === ilPRGProgress::STATUS_COMPLETED) {
1895  return $lng->txt("prg_status_completed");
1896  }
1897  if ($status === ilPRGProgress::STATUS_ACCREDITED) {
1898  return $lng->txt("prg_status_accredited");
1899  }
1900  if ($status === ilPRGProgress::STATUS_NOT_RELEVANT) {
1901  return $lng->txt("prg_status_not_relevant");
1902  }
1903  if ($status === ilPRGProgress::STATUS_FAILED) {
1904  return $lng->txt("prg_status_failed");
1905  }
1906  throw new ilException("Unknown status: '$status'");
1907  }
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
loadLanguageModule(string $a_module)
Load language module.
ilLanguage $lng
+ Here is the call graph for this function:

◆ storeAutomaticContentCategory()

ilObjStudyProgramme::storeAutomaticContentCategory ( int  $category_ref_id)

Store a Category with auto-content for this StudyProgramme; a category can only be referenced once (per programme).

Definition at line 1224 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

1224  : void
1225  {
1226  $ac = $this->auto_categories_repository->create(
1227  $this->getId(),
1228  $category_ref_id
1229  );
1230  $this->auto_categories_repository->update($ac);
1231  }
+ Here is the call graph for this function:

◆ storeAutomaticMembershipSource()

ilObjStudyProgramme::storeAutomaticMembershipSource ( string  $type,
int  $src_id,
bool  $search_recursive 
)

Store a source to be monitored for automatic memberships.

Definition at line 1358 of file class.ilObjStudyProgramme.php.

References ilObject\getId().

1358  : void
1359  {
1360  $ams = $this->auto_memberships_repository->create(
1361  $this->getId(),
1362  $type,
1363  $src_id,
1364  false,
1365  null,
1366  null,
1367  $search_recursive
1368  );
1369  $this->auto_memberships_repository->update($ams);
1370  }
string $type
+ Here is the call graph for this function:

◆ storeExpiryInfoSentFor()

ilObjStudyProgramme::storeExpiryInfoSentFor ( ilPRGAssignment  $ass)

Definition at line 1019 of file class.ilObjStudyProgramme.php.

1019  : void
1020  {
1021  $this->assignment_repository->storeExpiryInfoSentFor($ass);
1022  }

◆ storeRiskyToFailSentFor()

ilObjStudyProgramme::storeRiskyToFailSentFor ( ilPRGAssignment  $ass)

Definition at line 1029 of file class.ilObjStudyProgramme.php.

1029  : void
1030  {
1031  $this->assignment_repository->storeRiskyToFailSentFor($ass);
1032  }

◆ succeed()

ilObjStudyProgramme::succeed ( int  $usr_id,
int  $triggering_obj_id,
ilPRGAssignment  $ass = null 
)

Definition at line 1582 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), and getSettingsRepository().

1582  : void
1583  {
1584  $progress_node_id = $this->getId();
1585  if (is_null($ass)) {
1586  $user_assignments = $this->assignment_repository
1587  ->getAllForNodeIsContained($progress_node_id, [$usr_id]);
1588  } else {
1589  $user_assignments = [$ass];
1590  }
1591 
1592  foreach ($user_assignments as $ass) {
1593  $ass = $ass->succeed(
1594  $this->getSettingsRepository(),
1595  $progress_node_id,
1596  $triggering_obj_id
1597  );
1598  $this->assignment_repository->store($ass);
1599  }
1600  }
+ Here is the call graph for this function:

◆ throwIfNotInTree()

ilObjStudyProgramme::throwIfNotInTree ( )
protected
Exceptions
ilStudyProgrammeTreeExceptionif object is not in tree.

Definition at line 718 of file class.ilObjStudyProgramme.php.

Referenced by addNode(), applyToSubTreeNodes(), getChildren(), getLPChildren(), and getParent().

718  : void
719  {
720  if (!$this->tree->isInTree($this->getRefId())) {
721  throw new ilStudyProgrammeTreeException("This program is not in tree.");
722  }
723  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
+ Here is the caller graph for this function:

◆ unmarkAccredited()

ilObjStudyProgramme::unmarkAccredited ( int  $assignment_id,
int  $acting_usr_id,
ilPRGMessageCollection  $err_collection 
)

Definition at line 1714 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), getSettingsRepository(), and refreshLPStatus().

1718  : void {
1719  $progress_node_id = $this->getId();
1720  $assignment = $this->assignment_repository->get($assignment_id)
1721  ->unmarkAccredited(
1722  $this->getSettingsRepository(),
1723  $progress_node_id,
1724  $acting_usr_id,
1725  $err_collection
1726  );
1727 
1728  $this->assignment_repository->store($assignment);
1729  $this->refreshLPStatus($assignment->getUserId());
1730  }
refreshLPStatus(int $usr_id, int $node_obj_id=null)
+ Here is the call graph for this function:

◆ update()

ilObjStudyProgramme::update ( )
Exceptions
ilException

Definition at line 248 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), getSettings(), and ilAdvancedMDRecord\saveObjRecSelection().

Referenced by updateLastChange().

248  : bool
249  {
250  parent::update();
251 
252  $type_settings = $this->getSettings()->getTypeSettings();
253  // Update selection for advanced metadata of the type
254  if ($type_settings->getTypeId()) {
256  $this->getId(),
257  'prg_type',
258  $this->type_repository->getAssignedAMDRecordIdsByType($type_settings->getTypeId())
259  );
260  } else {
261  // If no type is assigned, delete relations by passing an empty array
262  ilAdvancedMDRecord::saveObjRecSelection($this->getId(), 'prg_type', array());
263  }
264  return true;
265  }
static saveObjRecSelection(int $a_obj_id, string $a_sub_type="", array $a_records=null, bool $a_delete_before=true)
Save repository object record selection.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateCustomIcon()

ilObjStudyProgramme::updateCustomIcon ( )

Definition at line 1602 of file class.ilObjStudyProgramme.php.

References ilFileUtils\getDataDir(), ilObject\getId(), getSubType(), and ilObject\getType().

Referenced by ilObjStudyProgrammeSettingsGUI\buildForm().

1602  : void
1603  {
1604  $customIcon = $this->custom_icon_factory->getByObjId($this->getId(), $this->getType());
1605  $subtype = $this->getSubType();
1606 
1607  if ($subtype && $subtype->getIconIdentifier()) {
1608  $src = $this->type_repository->getIconPathFS($subtype);
1609 
1610  //This is a horrible hack to allow Flysystem/LocalFilesystem to read the file.
1611  $tmp = 'ico_' . $this->getId();
1612  copy($src, \ilFileUtils::getDataDir() . '/temp/' . $tmp);
1613 
1614  $customIcon->saveFromTempFileName($tmp);
1615  } else {
1616  $customIcon->remove();
1617  }
1618  }
getSubType()
Gets the SubType Object.
static getDataDir()
get data directory (outside webspace)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updateLastChange()

ilObjStudyProgramme::updateLastChange ( )
protected

Update last change timestamp on this node and its parents.

Definition at line 1529 of file class.ilObjStudyProgramme.php.

References $parent, getParent(), getSettings(), and update().

Referenced by setPoints(), and setStatus().

1529  : void
1530  {
1531  $this->getSettings()->updateLastChange();
1532  if ($parent = $this->getParent()) {
1533  $parent->updateLastChange();
1534  }
1535  $this->update();
1536  }
getParent()
Get the parent ilObjStudyProgramme of this object.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ updatePlanFromRepository()

ilObjStudyProgramme::updatePlanFromRepository ( int  $assignment_id,
int  $acting_usr_id,
ilPRGMessageCollection  $err_collection = null 
)

Definition at line 1828 of file class.ilObjStudyProgramme.php.

References getSettingsRepository(), and refreshLPStatus().

1832  : void {
1833  $assignment = $this->assignment_repository->get($assignment_id)
1834  ->updatePlanFromRepository(
1835  $this->getSettingsRepository(),
1836  $acting_usr_id,
1837  $err_collection
1838  );
1839 
1840  $this->assignment_repository->store($assignment);
1841  $this->refreshLPStatus($assignment->getUserId());
1842  }
refreshLPStatus(int $usr_id, int $node_obj_id=null)
+ Here is the call graph for this function:

◆ updateSettings()

ilObjStudyProgramme::updateSettings ( ilStudyProgrammeSettings  $settings)

Definition at line 210 of file class.ilObjStudyProgramme.php.

References ilObject\getId(), ilStudyProgrammeSettings\getObjId(), and getSettingsRepository().

Referenced by ilObjStudyProgrammeSettingsGUI\buildForm(), setPoints(), and setStatus().

210  : bool
211  {
212  if ($settings->getObjId() !== $this->getId()) {
213  throw new Exception("The given settings-object does not belong to this programme", 1);
214  }
215  $this->getSettingsRepository()->update($settings);
216 
217  return true;
218  }
getObjId()
Get the id of the study program.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Field Documentation

◆ $assignment_repository

ilPRGAssignmentDBRepository ilObjStudyProgramme::$assignment_repository
protected

Definition at line 45 of file class.ilObjStudyProgramme.php.

Referenced by getAssignmentRepository().

◆ $auto_categories_repository

ilStudyProgrammeAutoCategoryDBRepository ilObjStudyProgramme::$auto_categories_repository
protected

Definition at line 46 of file class.ilObjStudyProgramme.php.

◆ $auto_memberships_repository

ilStudyProgrammeAutoMembershipsDBRepository ilObjStudyProgramme::$auto_memberships_repository
protected

Definition at line 47 of file class.ilObjStudyProgramme.php.

◆ $children

array ilObjStudyProgramme::$children = null
protected

Definition at line 37 of file class.ilObjStudyProgramme.php.

Referenced by getChildren().

◆ $custom_icon_factory

ilObjectCustomIconFactory ilObjStudyProgramme::$custom_icon_factory
protected

Definition at line 67 of file class.ilObjStudyProgramme.php.

◆ $events

ilStudyProgrammeEvents ilObjStudyProgramme::$events
protected

Definition at line 49 of file class.ilObjStudyProgramme.php.

◆ $ilUser

ilObjUser ilObjStudyProgramme::$ilUser
protected

Definition at line 65 of file class.ilObjStudyProgramme.php.

Referenced by __construct().

◆ $logger

ilLogger ilObjStudyProgramme::$logger
protected

Definition at line 68 of file class.ilObjStudyProgramme.php.

Referenced by getLogger().

◆ $lp_children

array ilObjStudyProgramme::$lp_children = null
protected

Definition at line 42 of file class.ilObjStudyProgramme.php.

Referenced by getLPChildren().

◆ $members_cache

array ilObjStudyProgramme::$members_cache = null
protected

Definition at line 57 of file class.ilObjStudyProgramme.php.

Referenced by getLocalMembers().

◆ $membersourcereader_factory

ilStudyProgrammeMembershipSourceReaderFactory ilObjStudyProgramme::$membersourcereader_factory
protected

Definition at line 48 of file class.ilObjStudyProgramme.php.

◆ $object_factory

ilObjectFactoryWrapper ilObjStudyProgramme::$object_factory = null
protected

Definition at line 66 of file class.ilObjStudyProgramme.php.

◆ $parent

ilObjStudyProgramme::$parent
protected

◆ $reference_children

array ilObjStudyProgramme::$reference_children = null
protected

Definition at line 62 of file class.ilObjStudyProgramme.php.

◆ $settings_repository

ilStudyProgrammeSettingsDBRepository ilObjStudyProgramme::$settings_repository
protected

Definition at line 50 of file class.ilObjStudyProgramme.php.

Referenced by getSettingsRepository().

◆ $study_programme_cache

ilObjStudyProgrammeCache ilObjStudyProgramme::$study_programme_cache = null
staticprotected

Definition at line 27 of file class.ilObjStudyProgramme.php.

◆ $type_repository

ilStudyProgrammeTypeDBRepository ilObjStudyProgramme::$type_repository
protected

Definition at line 44 of file class.ilObjStudyProgramme.php.

◆ $webdir

Filesystem ilObjStudyProgramme::$webdir
protected

Definition at line 64 of file class.ilObjStudyProgramme.php.

◆ CP_TYPE

const ilObjStudyProgramme::CP_TYPE = 'cont'

Definition at line 25 of file class.ilObjStudyProgramme.php.


The documentation for this class was generated from the following file: