24require_once 
"./Services/Container/classes/class.ilContainer.php";
 
   25include_once 
'./Modules/Course/classes/class.ilCourseConstants.php';
 
   26include_once 
'./Services/Membership/interfaces/interface.ilMembershipRegistrationCodes.php';
 
   92                #define("ILIAS_MODULE","course");
 
   93                #define("KEEP_IMAGE_PATH",1);
 
   95                $this->SUBSCRIPTION_DEACTIVATED = 1;
 
   96                $this->SUBSCRIPTION_CONFIRMATION = 2;
 
   97                $this->SUBSCRIPTION_DIRECT = 3;
 
   98                $this->SUBSCRIPTION_PASSWORD = 4;
 
   99                $this->SUBSCRIPTION_AUTOSUBSCRIPTION = 5;
 
  100                $this->ARCHIVE_DISABLED = 1;
 
  101                $this->ARCHIVE_READ = 2;
 
  102                $this->ARCHIVE_DOWNLOAD = 3;
 
  103                $this->ABO_ENABLED = 1;
 
  104                $this->ABO_DISABLED = 0;
 
  105                $this->SHOW_MEMBERS_ENABLED = 1;
 
  106                $this->SHOW_MEMBERS_DISABLED = 0;
 
  111                parent::__construct($a_id,$a_call_by_reference);
 
  122                $query = 
'SELECT show_members FROM crs_settings '.
 
  123                                'WHERE obj_id = '.$GLOBALS[
'ilDB']->quote($a_obj_id,
'integer');
 
  127                        return (
bool) 
$row->show_members;
 
  148                $this->reg_access_code = $a_code;
 
  167                $this->reg_access_code_enabled = $a_status;
 
  172                return $this->important;
 
  176                $this->important = $a_info;
 
  180                return $this->syllabus;
 
  184                $this->syllabus = $a_syllabus;
 
  188                return $this->contact_name;
 
  192                $this->contact_name = $a_cn;
 
  196                return $this->contact_consultation;
 
  200                $this->contact_consultation = $a_value;
 
  204                return $this->contact_phone;
 
  208                $this->contact_phone = $a_value;
 
  212                return $this->contact_email;
 
  216                $this->contact_email = $a_value;
 
  220                return $this->contact_responsibility;
 
  224                $this->contact_responsibility = $a_value;
 
  228                return (
int) $this->activation_type;
 
  239                $this->activation_type = $a_type;
 
  247                return $this->activation_start ? $this->activation_start : time();
 
  251                $this->activation_start = $a_value;
 
  255                return $this->activation_end ? $this->activation_end : mktime(0,0,0,12,12,date(
"Y",time())+2);
 
  259                $this->activation_end = $a_value;
 
  263                return (
bool)$this->activation_offline;
 
  267                $this->activation_offline = (bool) $a_value;
 
  271                $this->activation_visibility = (bool) $a_value;
 
  275                return $this->activation_visibility;
 
  280                return $this->subscription_limitation_type;
 
  284                $this->subscription_limitation_type = $a_type;
 
  292                return $this->subscription_start ? $this->subscription_start : time();
 
  296                $this->subscription_start = $a_value;
 
  300                return $this->subscription_end ? $this->subscription_end : mktime(0,0,0,12,12,date(
"Y",time())+2);
 
  304                $this->subscription_end = $a_value;
 
  309                #return $this->subscription_type ? $this->subscription_type : $this->SUBSCRIPTION_DEACTIVATED; 
  313                $this->subscription_type = $a_value;
 
  317                return $this->subscription_password;
 
  321                $this->subscription_password = $a_value;
 
  330                return (
bool) $this->waiting_list;
 
  335                $this->waiting_list = (bool) $a_status;
 
  358                $this->session_limit = $a_status;
 
  375                $this->subscription_membership_limitation = $a_status;
 
  385                $this->session_prev = $a_num;
 
  404                $this->session_next = $a_num;
 
  424                return (
bool) $this->subscription_membership_limitation;
 
  429                return $this->subscription_max_members;
 
  433                $this->subscription_max_members = $a_value;
 
  448                $query = 
"SELECT * FROM crs_settings ".
 
  449                        "WHERE obj_id = ".$ilDB->quote($a_course_id ,
'integer').
" ".
 
  450                        "AND sub_notify = 1";
 
  452                return $res->numRows() ? true : 
false;
 
  461        public function getSubItems($a_admin_panel_enabled = 
false, $a_include_side_block = 
false)
 
  466                if (is_array($this->items[(
int) $a_admin_panel_enabled][(
int) $a_include_side_block]))
 
  468                        return $this->items[(int) $a_admin_panel_enabled][(
int) $a_include_side_block];
 
  472                parent::getSubItems($a_admin_panel_enabled,$a_include_side_block);
 
  475                if(!$a_admin_panel_enabled &&
 
  476                        !$a_include_side_block &&
 
  477                        $this->items[
'sess'] &&
 
  478                        is_array($this->items[
'sess']) &&
 
  487                        return $this->items[(int) $a_admin_panel_enabled][(
int) $a_include_side_block];
 
  494                if(isset(
$_GET[
'crs_prev_sess']))
 
  496                        $ilUser->writePref(
'crs_sess_show_prev_'.$this->
getId(), (string) (
int) 
$_GET[
'crs_prev_sess']);
 
  498                if(isset(
$_GET[
'crs_next_sess']))
 
  500                        $ilUser->writePref(
'crs_sess_show_next_'.$this->
getId(), (string) (
int) 
$_GET[
'crs_next_sess']);
 
  505                $previous = $current = $next = array();
 
  506                foreach($sessions as $key => $item)
 
  524                $num_previous_remove = max(
 
  528                while($num_previous_remove--)
 
  530                        if(!
$ilUser->getPref(
'crs_sess_show_prev_'.$this->getId()))
 
  532                                array_shift($previous);
 
  534                        $this->items[
'sess_link'][
'prev'][
'value'] = 1;
 
  537                $num_next_remove = max(
 
  541                while($num_next_remove--)
 
  543                        if(!
$ilUser->getPref(
'crs_sess_show_next_'.$this->getId()))
 
  548                        $this->items[
'sess_link'][
'next'][
'value'] = 1;
 
  551                $sessions = array_merge($previous,$current,$next);
 
  552                $this->items[
'sess'] = $sessions;
 
  555                include_once(
'Services/Container/classes/class.ilContainerSorting.php');
 
  557                $this->items[(int) $a_admin_panel_enabled][(
int) $a_include_side_block] = $sort->sortItems($this->items);
 
  559                return $this->items[(int) $a_admin_panel_enabled][(
int) $a_include_side_block];
 
  565                return $this->subscription_notify ? true : 
false;
 
  569                $this->subscription_notify = $a_value ? true : 
false;
 
  574                $this->view_mode = $a_mode;
 
  578                return $this->view_mode;
 
  585                $query = 
"SELECT view_mode FROM crs_settings WHERE obj_id = ".$ilDB->quote($a_id ,
'integer').
" ";
 
  589                        return $row->view_mode;
 
  598                $query = 
"SELECT abo FROM crs_settings WHERE obj_id = ".$ilDB->quote($a_id ,
'integer').
" ";
 
  609                return $this->archive_start ? $this->archive_start : time();
 
  613                $this->archive_start = $a_value;
 
  617                return $this->archive_end ? $this->archive_end : mktime(0,0,0,12,12,date(
"Y",time())+2);
 
  621                $this->archive_end = $a_value;
 
  629                $this->archive_type = $a_value;
 
  633                $this->abo = $a_status;
 
  641                $this->show_members = $a_status;
 
  645                return $this->show_members;
 
  655                $this->mail_members = $a_type;
 
  669                return $this->message;
 
  673                $this->message = $a_message;
 
  679                        $this->message .= 
"<br /> ";
 
  681                $this->message .= $a_message;
 
  717                include_once(
"./Modules/Course/classes/class.ilObjCourseAccess.php");
 
  729                include_once(
"./Modules/Course/classes/class.ilObjCourseAccess.php");
 
  748                return $this->ABO == $this->ABO_ENABLED;
 
  751        function read($a_force_db = 
false)
 
  753                parent::read($a_force_db);
 
  755                include_once(
'./Services/Container/classes/class.ilContainerSortingSettings.php');
 
  762                global $ilAppEventHandler;
 
  764                parent::create($a_upload);
 
  772                $ilAppEventHandler->raise(
'Modules/Course',
 
  774                        array(
'object' => $this,
 
  775                                'obj_id' => $this->
getId(),
 
  787                $this->latitude = $a_latitude;
 
  807                $this->longitude = $a_longitude;
 
  827                $this->locationzoom = $a_locationzoom;
 
  847                $this->enablemap = $a_enablemap;
 
  862                $this->crs_start = $a_value;
 
  872                $this->crs_end = $a_value;
 
  882                $this->leave_end = $a_value;
 
  892                if($a_value !== 
null)
 
  894                        $a_value = (int)$a_value;
 
  896                $this->min_members = $a_value;
 
  906                $this->auto_fill_from_waiting = (bool)$a_value;
 
  926                $new_obj = parent::cloneObject($a_target_id,$a_copy_id);
 
  934                $new_obj->getMemberObject()->updateContact(
$ilUser->getId(), 1);
 
  940                if($cwo->isRootNode($this->getRefId()))
 
  949                include_once(
'Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php');
 
  953                include_once(
'Modules/Course/classes/class.ilCourseFile.php');
 
  957                include_once(
'Services/Tracking/classes/class.ilLPObjSettings.php');
 
  959                $obj_settings->cloneSettings($new_obj->getId());
 
  960                unset($obj_settings);
 
  964                $ilLog->write(__METHOD__.
': '.$this->getBigIconPath().
' '.$this->getSmallIconPath());
 
  970                include_once 
"./Services/Certificate/classes/class.ilCertificate.php";
 
  971                include_once 
"./Modules/Course/classes/class.ilCourseCertificateAdapter.php";
 
  974                $cert->cloneCertificate($newcert);
 
  989                parent::cloneDependencies($a_target_id,$a_copy_id);
 
  992                include_once(
'Services/Container/classes/class.ilContainerStartObjects.php');
 
  994                $start->cloneDependencies($a_target_id,$a_copy_id);
 
  997                include_once(
'Services/Object/classes/class.ilObjectActivation.php');
 
 1001                include_once 
'./Modules/Course/classes/Objectives/class.ilLOSettings.php';
 
 1005                include_once(
'Modules/Course/classes/class.ilCourseObjective.php');
 
 1007                $crs_objective->ilClone($a_target_id,$a_copy_id);
 
 1021                global 
$ilLog,$rbacadmin,$rbacreview;
 
 1024                $new_admin = $new_obj->getDefaultAdminRole();
 
 1026                if(!$admin || !$new_admin || !$this->
getRefId() || !$new_obj->getRefId())
 
 1028                        $ilLog->write(__METHOD__.
' : Error cloning auto generated role: il_crs_admin');
 
 1030                $rbacadmin->copyRolePermissions($admin,$this->
getRefId(),$new_obj->getRefId(),$new_admin,
true);
 
 1031                $ilLog->write(__METHOD__.
' : Finished copying of role crs_admin.');
 
 1034                $new_tutor = $new_obj->getDefaultTutorRole();
 
 1035                if(!$tutor || !$new_tutor)
 
 1037                        $ilLog->write(__METHOD__.
' : Error cloning auto generated role: il_crs_tutor');
 
 1039                $rbacadmin->copyRolePermissions($tutor,$this->
getRefId(),$new_obj->getRefId(),$new_tutor,
true);
 
 1040                $ilLog->write(__METHOD__.
' : Finished copying of role crs_tutor.');
 
 1043                $new_member = $new_obj->getDefaultMemberRole();
 
 1044                if(!$member || !$new_member)
 
 1046                        $ilLog->write(__METHOD__.
' : Error cloning auto generated role: il_crs_member');
 
 1048                $rbacadmin->copyRolePermissions($member,$this->
getRefId(),$new_obj->getRefId(),$new_member,
true);
 
 1049                $ilLog->write(__METHOD__.
' : Finished copying of role crs_member.');
 
 1059                #if(($this->getSubscriptionLimitationType() != IL_CRS_SUBSCRIPTION_DEACTIVATED) and 
 1060                #   $this->getSubscriptionType() == ) 
 1062                #       $this->appendMessage($this->lng->txt('crs_select_registration_type')); 
 1068                        $this->
appendMessage($this->lng->txt(
"activation_times_not_valid"));
 
 1073                        $this->
appendMessage($this->lng->txt(
"subscription_times_not_valid"));
 
 1075                #if((!$this->getActivationUnlimitedStatus() and 
 1076                #       !$this->getSubscriptionUnlimitedStatus()) and 
 1077                #       ($this->getSubscriptionStart() > $this->getActivationEnd() or 
 1078                #        $this->getSubscriptionStart() < $this->getActivationStart() or 
 1079                #        $this->getSubscriptionEnd() > $this->getActivationEnd() or 
 1080                #        $this->getSubscriptionEnd() <  $this->getActivationStart())) 
 1083                #       $this->appendMessage($this->lng->txt("subscription_time_not_within_activation"));
 
 1087                        $this->
appendMessage($this->lng->txt(
"crs_password_required"));
 
 1093                                $this->
appendMessage($this->lng->txt(
"crs_max_and_min_members_needed"));
 
 1097                                $this->
appendMessage($this->lng->txt(
"crs_max_members_needed"));
 
 1101                                $this->
appendMessage($this->lng->txt(
"crs_max_and_min_members_invalid"));
 
 1107                        $this->
appendMessage($this->lng->txt(
"archive_times_not_valid"));
 
 1117                        $this->
appendMessage($this->lng->txt(
"crs_course_period_not_valid"));
 
 1130                        foreach ($emails as $email) {
 
 1131                                $email = trim($email);
 
 1134                                        $ilErr->appendMessage($this->lng->txt(
'contact_email_not_valid').
" '".$email.
"'");
 
 1160                global $ilAppEventHandler;
 
 1163                if (!parent::delete())
 
 1175                include_once(
'Modules/Course/classes/class.ilCourseParticipants.php');
 
 1179                $this->archives_obj->deleteAll();
 
 1181                include_once 
'./Modules/Course/classes/class.ilCourseObjective.php';
 
 1184                include_once 
'./Modules/Course/classes/class.ilObjCourseGrouping.php';
 
 1187                include_once 
'./Modules/Course/classes/class.ilCourseFile.php';
 
 1190                include_once(
'Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php');
 
 1193                $ilAppEventHandler->raise(
'Modules/Course',
 
 1195                        array(
'object' => $this,
 
 1196                                'obj_id' => $this->
getId(),
 
 1210                global $ilAppEventHandler,
$ilLog;
 
 1212                include_once(
'./Services/Container/classes/class.ilContainerSortingSettings.php');
 
 1221                $ilAppEventHandler->raise(
'Modules/Course',
 
 1223                        array(
'object' => $this,
 
 1224                                'obj_id' => $this->
getId(),
 
 1235                $query = 
"SELECT * FROM crs_settings WHERE obj_id = ".$ilDB->quote($this->
getId() ,
'integer').
" ";
 
 1238                if(!
$res->numRows())
 
 1243                $query = 
"UPDATE crs_settings SET ".
 
 1244                        "syllabus = ".$ilDB->quote($this->
getSyllabus() ,
'text').
", ".
 
 1245                        "contact_name = ".$ilDB->quote($this->
getContactName() ,
'text').
", ".
 
 1247                        "contact_phone = ".$ilDB->quote($this->
getContactPhone() ,
'text').
", ".
 
 1248                        "contact_email = ".$ilDB->quote($this->
getContactEmail() ,
'text').
", ".
 
 1250                        "activation_type = ".$ilDB->quote(!$this->
getOfflineStatus() ,
'integer').
", ".                  
 
 1259                        "view_mode = ".$ilDB->quote($this->
getViewMode() ,
'integer').
", ".
 
 1260                        "archive_start = ".$ilDB->quote($this->
getArchiveStart() ,
'integer').
", ".
 
 1261                        "archive_end = ".$ilDB->quote($this->
getArchiveEnd() ,
'integer').
", ".
 
 1262                        "archive_type = ".$ilDB->quote($this->
getArchiveType() ,
'integer').
", ".
 
 1263                        "abo = ".$ilDB->quote($this->
getAboStatus() ,
'integer').
", ".
 
 1266                        "show_members = ".$ilDB->quote($this->
getShowMembers() ,
'integer').
", ".
 
 1267                        "latitude = ".$ilDB->quote($this->
getLatitude() ,
'text').
", ".
 
 1268                        "longitude = ".$ilDB->quote($this->
getLongitude() ,
'text').
", ".
 
 1269                        "location_zoom = ".$ilDB->quote($this->
getLocationZoom() ,
'integer').
", ".
 
 1270                        "enable_course_map = ".$ilDB->quote((
int) $this->
getEnableCourseMap() ,
'integer').
", ".
 
 1284                        "WHERE obj_id = ".$ilDB->quote($this->
getId() ,
'integer').
"";           
 
 1291                        include_once 
"./Services/Object/classes/class.ilObjectActivation.php";          
 
 1307                        $item->update($this->ref_id);
 
 1353                include_once 
'./Services/Membership/classes/class.ilMembershipRegistrationCodeUtils.php';
 
 1376                include_once 
'./Services/Membership/classes/class.ilMembershipRegistrationCodeUtils.php';
 
 1379                $query = 
"INSERT INTO crs_settings (obj_id,syllabus,contact_name,contact_responsibility,".
 
 1380                        "contact_phone,contact_email,contact_consultation,activation_type,activation_start,".
 
 1381                        "activation_end,sub_limitation_type,sub_start,sub_end,sub_type,sub_password,sub_mem_limit,".
 
 1382                        "sub_max_members,sub_notify,view_mode,archive_start,archive_end,archive_type,abo," .
 
 1383                        "latitude,longitude,location_zoom,enable_course_map,waiting_list,show_members, ".
 
 1384                        "session_limit,session_prev,session_next, reg_ac_enabled, reg_ac, auto_notification, status_dt,mail_members_type) ".
 
 1386                        $ilDB->quote($this->
getId() ,
'integer').
", ".
 
 1393                        $ilDB->quote(0 ,
'integer').
", ".
 
 1408                        $ilDB->quote($this->ABO_ENABLED ,
'integer').
", ".
 
 1413                        #"objective_view = '0', ".
 
 1429                include_once(
'./Services/Container/classes/class.ilContainerSortingSettings.php');
 
 1440                $query = 
"SELECT * FROM crs_settings WHERE obj_id = ".$ilDB->quote($this->
getId() ,
'integer').
"";
 
 1490                        include_once 
"./Services/Object/classes/class.ilObjectActivation.php";
 
 1492                        switch($activation[
"timing_type"])
 
 1517                include_once 
"./Modules/Course/classes/class.ilCourseWaitingList.php";
 
 1519                if(!is_object($this->waiting_list_obj))
 
 1536                include_once 
"./Modules/Course/classes/class.ilCourseParticipant.php";
 
 1550                include_once 
"./Modules/Course/classes/class.ilCourseParticipants.php";
 
 1583                include_once 
"./Modules/Course/classes/class.ilCourseArchives.php";
 
 1585                if(!is_object($this->archives_obj))
 
 1597                global $rbacadmin,$rbacreview,
$ilDB;
 
 1599                include_once 
'./Services/AccessControl/classes/class.ilObjRole.php';
 
 1602                                "Admin of crs obj_no.".$this->
getId(),
 
 1608                                "Tutor of crs obj_no.".$this->
getId(),
 
 1613                                'il_crs_member_'.$this->
getRefId(),
 
 1614                                "Member of crs obj_no.".$this->
getId(),
 
 1633                global $rbacadmin, $rbacreview;
 
 1635                $parent_roles = $rbacreview->getParentRoleIds($a_parent_ref);
 
 1636                foreach((array) $parent_roles as $parent_role)
 
 1638                        $rbacadmin->initIntersectionPermissions(
 
 1640                                $parent_role[
'obj_id'],
 
 1641                                $parent_role[
'parent'],
 
 1658                $q = 
"SELECT obj_id FROM object_data WHERE type='rolt' AND title='il_crs_non_member'";
 
 1662                return $row[
"obj_id"];
 
 1673                $query = 
'SELECT obj_id FROM object_data WHERE type = '.$ilDB->quote(
'rolt',
'text').
' AND title = '.
$ilDB->quote(
'il_crs_non_member',
'text');
 
 1677                return isset(
$row[
'obj_id']) ? 
$row[
'obj_id'] : 0;
 
 1688                global $rbacadmin,$rbacreview;
 
 1690                if (empty($this->local_roles))
 
 1692                        $this->local_roles = array();
 
 1693                        $role_arr  = $rbacreview->getRolesOfRoleFolder($this->
getRefId());
 
 1695                        foreach ($role_arr as $role_id)
 
 1697                                if ($rbacreview->isAssignable($role_id,$this->getRefId()) == 
true)
 
 1699                                        $role_Obj = $this->
ilias->obj_factory->getInstanceByObjId($role_id);
 
 1707                                                $role_name = $role_Obj->getTitle();
 
 1709                                        $this->local_roles[$role_name] = $role_Obj->getId();
 
 1714                return $this->local_roles;
 
 1730                global $rbacadmin, $rbacreview;
 
 1732                if (strlen($a_crs_id) > 0)
 
 1734                        $crs_id = $a_crs_id;
 
 1741                $role_arr  = $rbacreview->getRolesOfRoleFolder($crs_id);
 
 1743                foreach ($role_arr as $role_id)
 
 1745                        $role_Obj =& $this->
ilias->obj_factory->getInstanceByObjId($role_id);
 
 1747                        $crs_Member =
"il_crs_member_".$crs_id;
 
 1748                        $crs_Admin  =
"il_crs_admin_".$crs_id;
 
 1749                        $crs_Tutor  =
"il_crs_tutor_".$crs_id;
 
 1751                        if (strcmp($role_Obj->getTitle(), $crs_Member) == 0 )
 
 1753                                $arr_crsDefaultRoles[
"crs_member_role"] = $role_Obj->getId();
 
 1756                        if (strcmp($role_Obj->getTitle(), $crs_Admin) == 0)
 
 1758                                $arr_crsDefaultRoles[
"crs_admin_role"] = $role_Obj->getId();
 
 1761                        if (strcmp($role_Obj->getTitle(), $crs_Tutor) == 0)
 
 1763                                $arr_crsDefaultRoles[
"crs_tutor_role"] = $role_Obj->getId();
 
 1767                return $arr_crsDefaultRoles;
 
 1776                return $rbacreview->getRolesOfRoleFolder($this->
getRefId(),
false);
 
 1783                $query = 
"DELETE FROM crs_settings ".
 
 1784                        "WHERE obj_id = ".$ilDB->quote($this->
getId() ,
'integer').
" ";
 
 1795                foreach($local_roles as $role_id)
 
 1798                        if(substr(
$title,0,8) == 
'il_crs_m')
 
 1809                foreach($local_roles as $role_id)
 
 1813                                if(!strcmp($tmp_role->getTitle(),
"il_crs_tutor_".$this->getRefId()))
 
 1825                foreach($local_roles as $role_id)
 
 1829                                if(!strcmp($tmp_role->getTitle(),
"il_crs_admin_".$this->getRefId()))
 
 1842                include_once 
'./Modules/Course/classes/class.ilCourseLMHistory.php';
 
 1845                include_once 
'./Modules/Course/classes/class.ilCourseParticipants.php';
 
 1849                include_once 
"Modules/Course/classes/Objectives/class.ilLOUserResults.php";
 
 1863                parent::MDUpdateListener($a_element);
 
 1869                                include_once 
'Modules/Course/classes/class.ilECSCourseSettings.php';
 
 1871                                $ecs->handleContentUpdate();
 
 1885                include_once 
'./Services/Object/classes/class.ilObjectActivation.php';
 
 1898                include_once(
'./Services/Calendar/classes/class.ilCalendarAppointmentTemplate.php');
 
 1899                include_once(
'./Services/Calendar/classes/class.ilDateTime.php');
 
 1909                                        $app->setSubtitle(
'crs_cal_activation_start');
 
 1917                                        $app->setSubtitle(
'crs_cal_activation_end');
 
 1927                                        $app->setSubtitle(
'crs_cal_reg_start');
 
 1935                                        $app->setSubtitle(
'crs_cal_reg_end');
 
 1945                                        $app->setSubtitle(
'crs_start');
 
 1949                                        $app->setFullday(
true);
 
 1954                                        $app->setSubtitle(
'crs_end');
 
 1958                                        $app->setFullday(
true);
 
 1963                                return $apps ? $apps : array();
 
 1971        ###### Interface ilMembershipRegistrationCodes 
 1980                $query = 
"SELECT obj_id FROM crs_settings ".
 
 1981                        "WHERE reg_ac_enabled = ".$ilDB->quote(1,
'integer').
" ".
 
 1982                        "AND reg_ac = ".$ilDB->quote($a_code,
'text');
 
 1988                        $obj_ids[] = 
$row->obj_id;
 
 2002                include_once 
'./Services/Membership/exceptions/class.ilMembershipRegistrationException.php';
 
 2003                include_once 
"./Modules/Course/classes/class.ilCourseParticipants.php";
 
 2006                if($part->isAssigned($a_user_id))
 
 2011                if(!$a_force_registration)
 
 2016                                include_once 
'./Modules/Group/classes/class.ilObjGroupAccess.php';
 
 2021                                                ', course subscription is deactivated.', 
'456');
 
 2031                                                ', course is out of registration time.', 
'789');
 
 2039                                include_once(
'./Modules/Course/classes/class.ilCourseWaitingList.php');
 
 2043                                        $waiting_list->addToList($a_user_id);
 
 2044                                        $this->lng->loadLanguageModule(
"crs");
 
 2045                                        $info = sprintf($this->lng->txt(
'crs_added_to_list'),
 
 2046                                                $waiting_list->getPosition($a_user_id));
 
 2047                                        include_once(
'./Modules/Course/classes/class.ilCourseParticipants.php');
 
 2049                                        $participants->sendNotification($participants->NOTIFY_WAITING_LIST,$a_user_id);
 
 2057                                                ', membership is limited.', 
'123');
 
 2062                $part->add($a_user_id,$a_role);
 
 2063                $part->sendNotification($part->NOTIFY_ACCEPT_USER, $a_user_id);
 
 2064                $part->sendNotification($part->NOTIFY_ADMINS,$a_user_id);
 
 2067                include_once 
'./Modules/Forum/classes/class.ilForumNotification.php';
 
 2093                $this->auto_notification = $value;
 
 2103                $a_value = (int)$a_value;
 
 2106                if($a_value == self::STATUS_DETERMINATION_LP)                           
 
 2108                        include_once(
"Services/Tracking/classes/class.ilObjUserTracking.php");
 
 2115                $this->status_dt = $a_value;
 
 2133                include_once 
"Services/Tracking/classes/class.ilLPStatusWrapper.php";
 
 2151                include_once(
"Services/Tracking/classes/class.ilObjUserTracking.php");
 
 2155                        include_once(
"Services/Tracking/classes/class.ilLPStatus.php"); 
 
 2158                        $this->
getMembersObject()->updatePassed($a_member_id, $has_completed, 
false, 
true);                                     
 
 2168                return parent::getOrderType();
 
 2181                                include_once(
'./Modules/Course/classes/class.ilCourseWaitingList.php');
 
 2184                                foreach($waiting_list->getUserIds() as $user_id)
 
 2196                                        $waiting_list->removeFromList($user_id);
 
 2210        public static function mayLeave($a_course_id, $a_user_id = 
null, &$a_date = 
null)
 
 2216                        $a_user_id = 
$ilUser->getId();
 
 2219                $set = 
$ilDB->query(
"SELECT leave_end".
 
 2220                        " FROM crs_settings".
 
 2221                        " WHERE obj_id = ".
$ilDB->quote($a_course_id, 
"integer"));
 
 2226                        $limit = date(
"Ymd", 
$row[
"leave_end"]);                        
 
 2227                        if($limit < date(
"Ymd"))
 
 2249                include_once 
"Modules/Course/classes/class.ilCourseParticipants.php";
 
 2251                $set = 
$ilDB->query(
"SELECT obj_id, min_members".
 
 2252                        " FROM crs_settings".
 
 2253                        " WHERE min_members > ".
$ilDB->quote(0, 
"integer").
 
 2254                        " AND sub_mem_limit = ".$ilDB->quote(1, 
"integer"). 
 
 2255                        " AND ((leave_end IS NOT NULL".
 
 2256                                " AND leave_end < ".$ilDB->quote($now, 
"text").
")".
 
 2257                                " OR (leave_end IS NULL".
 
 2258                                " AND sub_end IS NOT NULL".
 
 2259                                " AND sub_end < ".$ilDB->quote($now, 
"text").
"))".
 
 2260                        " AND (crs_start IS NULL OR crs_start > ".$ilDB->quote($now, 
"integer").
")");
 
 2266                        if(
$GLOBALS[
'tree']->isDeleted($ref))
 
 2272                        $reci = $part->getNotificationRecipients();
 
 2275                                $missing = (int)
$row[
"min_members"]-$part->getCountMembers();
 
 2278                                        $res[
$row[
"obj_id"]] = array($missing, $reci);          
 
const IL_CAL_TRANSLATION_SYSTEM
const IL_CRS_SUBSCRIPTION_LIMITED
const IL_CRS_ACTIVATION_OFFLINE
const IL_CRS_ACTIVATION_UNLIMITED
const IL_CRS_VIEW_OBJECTIVE
const IL_CRS_SUBSCRIPTION_PASSWORD
const IL_CRS_ARCHIVE_NONE
const IL_CRS_ARCHIVE_DOWNLOAD
const IL_CRS_VIEW_ARCHIVE
const IL_CRS_SUBSCRIPTION_UNLIMITED
const IL_CRS_ACTIVATION_LIMITED
const IL_CRS_SUBSCRIPTION_DEACTIVATED
const IL_CRS_SUBSCRIPTION_DIRECT
const DB_FETCHMODE_OBJECT
const IL_CRS_ADMIN
Base class for course and group participants.
Apointment templates are used for automatic generated apointments.
static _lookupSortMode($a_obj_id)
lookup sort mode
static _getInstance($a_obj_id)
get instance by obj_id
getBigIconPath()
Get path for big icon.
getSmallIconPath()
Get path for small icon.
getTinyIconPath()
Get path for tiny icon.
static _getInstance($a_copy_id)
Get instance of copy wizard options.
Test certificate adapter.
static _deleteByContainer($a_container_id)
Delete all fields of a container.
static _clone($a_source_id, $a_target_id)
Clone fields.
static _cloneFiles($a_source_id, $a_target_id)
Clone course files.
_deleteByCourse($a_course_id)
static _getInstanceByObjId($a_obj_id, $a_usr_id)
Get singleton instance.
static _getInstanceByObjId($a_obj_id)
Get singleton instance.
@classDescription Date and time handling
static _after(ilDateTime $start, ilDateTime $end, $a_compare_field='', $a_tz='')
compare two dates and check start is after end This method does not consider tz offsets.
static _within(ilDateTime $dt, ilDateTime $start, ilDateTime $end, $a_compare_field='', $a_tz='')
Check whether an date is within a date duration given by start and end.
static _before(ilDateTime $start, ilDateTime $end, $a_compare_field='', $a_tz='')
compare two dates and check start is before end This method does not consider tz offsets.
Class ilECSCourseSettings.
static checkForumsExistsInsert($ref_id, $user_id=0)
static cloneSettings($a_copy_id, $a_container_id, $a_new_container_id)
Clone settings.
static deleteResultsForUser($a_user_id)
Delete all result entries for user.
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_force_raise=false)
Update status.
const LP_STATUS_COMPLETED_NUM
static _lookupStatus($a_obj_id, $a_user_id, $a_create=true)
Lookup status.
static generateCode()
Generate new registration key.
membership registration exception
static _registrationEnabled($a_obj_id)
static _usingRegistrationCode()
Using Registration code.
static _isActivated($a_obj_id, &$a_visible_flag=null, $a_mind_member_view=true)
Is activated?
static lookupCourseNonMemberTemplatesId()
Lookup course non member id.
getDefaultCourseRoles($a_crs_id="")
get default course roles, returns the defaultlike create roles il_crs_tutor, il_crs_admin and il_crs_...
getImportantInformation()
getNumberOfNextSessions()
Set number of previous sessions.
getMailToMembersType()
Get mail to members type.
setParentRolePermissions($a_parent_ref)
This method is called before "initDefaultRoles".
_isActivated($a_obj_id)
Is activated.
const STATUS_DETERMINATION_MANUAL
getSubscriptionPassword()
setLongitude($a_longitude)
Set Longitude.
const STATUS_DETERMINATION_LP
ilObjCourse($a_id=0, $a_call_by_reference=true)
Constructor @access public.
setActivationStart($a_value)
setStatusDetermination($a_value)
Set status determination mode.
setSubscriptionNotify($a_value)
enableWaitingList($a_status)
_registrationEnabled($a_obj_id)
Registration enabled? Method is in Access class, since it is needed by Access/ListGUI.
getActivationVisibility()
static _isSubscriptionNotificationEnabled($a_course_id)
Check if subscription notification is enabled.
update()
update complete object
isSubscriptionMembershipLimited()
is membership limited
enableSubscriptionMembershipLimitation($a_status)
enable max members
enableSessionLimit($a_status)
en/disable limited number of sessions
initDefaultRoles()
init default roles settings Purpose of this function is to create a local role folder and local roles...
getLatitude()
Get Latitude.
cloneDependencies($a_target_id, $a_copy_id)
Clone object dependencies (start objects, preconditions)
getLocalCourseRoles($a_translate=false)
get ALL local roles of course, also those created and defined afterwards only fetch data once from da...
getViewMode()
Get container view mode.
setNumberOfNextSessions($a_num)
Set number of previous sessions.
setWaitingListAutoFill($a_value)
setCourseEnd(ilDate $a_value=null)
setSubscriptionType($a_value)
MDUpdateListener($a_element)
Overwriten Metadata update listener for ECS functionalities.
__getCrsNonMemberTemplateId()
get course non-member template @access private
static lookupObjectsByCode($a_code)
static mayLeave($a_course_id, $a_user_id=null, &$a_date=null)
getSubscriptionUnlimitedStatus()
setCourseStart(ilDate $a_value=null)
setContactEmail($a_value)
setOfflineStatus($a_value)
initCourseMemberObject()
Init course member object @global ilObjUser $ilUser.
setActivationEnd($a_value)
setRegistrationAccessCode($a_code)
Set refistration access code.
getSubscriptionLimitationType()
cloneObject($a_target_id, $a_copy_id=0)
Clone course (no member data)
prepareAppointments($a_mode='create')
Prepare calendar appointments.
setContactPhone($a_value)
__createDefaultSettings()
initCourseArchiveObject()
getLocationZoom()
Get LocationZoom.
initCourseMembersObject()
Init course member object @global ilObjUser $ilUser.
static findCoursesWithNotEnoughMembers()
Minimum members check @global type $ilDB.
getEnableCourseMap()
Get Enable Course Map.
setSubscriptionEnd($a_value)
setLatitude($a_latitude)
Set Latitude.
enableRegistrationAccessCode($a_status)
En/disable registration access code.
getSubscriptionMaxMembers()
setSubscriptionMaxMembers($a_value)
static lookupShowMembersEnabled($a_obj_id)
Check if show member is enabled.
getRegistrationAccessCode()
get access code
getMemberObject()
Get course member object.
checkLPStatusSync($a_member_id)
sync course status from lp
isActivated($a_check_archive=false)
syncMembersStatusWithLP()
Set course status for all members by lp status.
setShowMembers($a_status)
getContactResponsibility()
setMailToMembersType($a_type)
Set mail to members type.
setSubscriptionPassword($a_value)
setSubscriptionStart($a_value)
setImportantInformation($a_info)
const CAL_ACTIVATION_START
getOrderType()
Get order type default implementation.
setNumberOfPreviousSessions($a_num)
Set number of previous sessions.
cloneAutoGeneratedRoles($new_obj)
Clone automatic genrated roles (permissions and template permissions)
appendMessage($a_message)
getActivationUnlimitedStatus()
setContactConsultation($a_value)
setSubscriptionMinMembers($a_value)
getSubItems($a_admin_panel_enabled=false, $a_include_side_block=false)
Get subitems of container.
setContactResponsibility($a_value)
getStatusDetermination()
Get status determination mode.
addAdditionalSubItemInformation(&$a_item_data)
Add additional information to sub item, e.g.
cloneSettings($new_obj)
Clone entries in settings table.
setArchiveStart($a_value)
setEnableCourseMap($a_enablemap)
Set Enable Course Map.
getSubscriptionMinMembers()
setSubscriptionLimitationType($a_type)
setActivationType($a_type)
isRegistrationAccessCodeEnabled()
Check if access code is enabled.
setCancellationEnd(ilDate $a_value=null)
setLocationZoom($a_locationzoom)
Set LocationZoom.
getAutoNotification()
Returns automatic notification status from $this->auto_notification.
getNumberOfPreviousSessions()
Set number of previous sessions.
setAutoNotification($value)
Sets automatic notification status in $this->auto_notification, using given $status.
setActivationVisibility($a_value)
read($a_force_db=false)
read object data from db into object
getLongitude()
Get Longitude.
static createDefaultRole($a_title, $a_description, $a_tpl_name, $a_ref_id)
_getTranslation($a_role_title)
static _enabledLearningProgress()
check wether learing progress is enabled or not
getUserIdByLogin($a_login)
Class ilObjectActivation.
const TIMINGS_DEACTIVATED
setTimingType($a_type)
Set timing type.
static cloneDependencies($a_ref_id, $a_target_id, $a_copy_id)
Clone dependencies.
static addAdditionalSubItemInformation(array &$a_item)
Parse item data for list entries.
static getItem($a_ref_id)
Get item data.
getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
static _lookupObjId($a_id)
static _lookupTitle($a_id)
lookup object title
deleteMetaData()
delete meta data entry
updateMetaData()
update meta data entry
createMetaData()
create meta data entry
getRefId()
get reference id @access public
getLongDescription()
get object long description (stored in object_description)
static _getAllReferences($a_id)
get all reference ids of object
cloneMetaData($target_obj)
Copy meta data.
getId()
get object id @access public
getTitle()
get object title @access public
static lookupNumberOfMembers($a_ref_id)
Lookup number of members @global ilRbacReview $rbacreview @global <type> $ilObjDataCache.
static _deleteUser($a_usr_id)
Delete user data.
static _deleteAllEntries($a_obj_id)
Delete all entries Normally called for course deletion.
static is_email($a_email)
This preg-based function checks whether an e-mail address is formally valid.
static sortArray($array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
$GLOBALS['PHPCAS_CLIENT']
This global variable is used by the interface class phpCAS.
Interface for all objects that offer registration with access codes.
redirection script todo: (a better solution should control the processing via a xml file)