00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00035 require_once "./classes/class.ilObject.php";
00036
00037 class ilObjCourse extends ilObject
00038 {
00039 var $members_obj;
00040 var $archives_obj;
00041 var $items_obj;
00042
00049 function ilObjCourse($a_id = 0,$a_call_by_reference = true)
00050 {
00051 #define("ILIAS_MODULE","course");
00052 #define("KEEP_IMAGE_PATH",1);
00053
00054 $this->SUBSCRIPTION_DEACTIVATED = 1;
00055 $this->SUBSCRIPTION_CONFIRMATION = 2;
00056 $this->SUBSCRIPTION_DIRECT = 3;
00057 $this->SUBSCRIPTION_PASSWORD = 4;
00058 $this->SUBSCRIPTION_AUTOSUBSCRIPTION = 5;
00059 $this->SORT_MANUAL = 1;
00060 $this->SORT_TITLE = 2;
00061 $this->SORT_ACTIVATION = 3;
00062 $this->ARCHIVE_DISABLED = 1;
00063 $this->ARCHIVE_READ = 2;
00064 $this->ARCHIVE_DOWNLOAD = 3;
00065 $this->ABO_ENABLED = 1;
00066 $this->ABO_DISABLED = 0;
00067
00068 $this->type = "crs";
00069 $this->ilObject($a_id,$a_call_by_reference);
00070
00071 if($a_id)
00072 {
00073 #$this->__initMetaObject();
00074 $this->initCourseMemberObject();
00075 }
00076 else
00077 {
00078
00079 }
00080
00081 }
00082
00083
00084 function setId($a_id)
00085 {
00086 parent::setId($a_id);
00087
00088
00089 #$this->__initMetaObject();
00090 }
00091
00092
00093 function getDescription()
00094 {
00095 return parent::getDescription();
00096 }
00097 function setDescription($a_description)
00098 {
00099 parent::setDescription($a_description);
00100
00101
00102
00103
00104 return true;
00105 }
00106 function getTitle()
00107 {
00108 return parent::getTitle();
00109 }
00110 function setTitle($a_title)
00111 {
00112 parent::setTitle($a_title);
00113
00114
00115 }
00116 function getSyllabus()
00117 {
00118 return $this->syllabus;
00119 }
00120 function setSyllabus($a_syllabus)
00121 {
00122 $this->syllabus = $a_syllabus;
00123 }
00124 function getContactName()
00125 {
00126 return $this->contact_name;
00127 }
00128 function setContactName($a_cn)
00129 {
00130 $this->contact_name = $a_cn;
00131 }
00132 function getContactConsultation()
00133 {
00134 return $this->contact_consultation;
00135 }
00136 function setContactConsultation($a_value)
00137 {
00138 $this->contact_consultation = $a_value;
00139 }
00140 function getContactPhone()
00141 {
00142 return $this->contact_phone;
00143 }
00144 function setContactPhone($a_value)
00145 {
00146 $this->contact_phone = $a_value;
00147 }
00148 function getcontactEmail()
00149 {
00150 return $this->contact_email;
00151 }
00152 function setContactEmail($a_value)
00153 {
00154 $this->contact_email = $a_value;
00155 }
00156 function getContactResponsibility()
00157 {
00158 return $this->contact_responsibility;
00159 }
00160 function setContactResponsibility($a_value)
00161 {
00162 $this->contact_responsibility = $a_value;
00163 }
00164 function getActivationUnlimitedStatus()
00165 {
00166 return $this->activation_unlimited ? true : false;
00167 }
00168 function setActivationUnlimitedStatus($a_unlimited)
00169 {
00170 $this->activation_unlimited = (bool) $a_unlimited;
00171 }
00172 function getActivationStart()
00173 {
00174 return $this->activation_start ? $this->activation_start : time();
00175 }
00176 function setActivationStart($a_value)
00177 {
00178 $this->activation_start = $a_value;
00179 }
00180 function getActivationEnd()
00181 {
00182 return $this->activation_end ? $this->activation_end : mktime(0,0,0,12,12,date("Y",time())+2);
00183 }
00184 function setActivationEnd($a_value)
00185 {
00186 $this->activation_end = $a_value;
00187 }
00188 function getOfflineStatus()
00189 {
00190 return $this->offline_status ? true : false;
00191 }
00192 function setOfflineStatus($a_value)
00193 {
00194 $this->offline_status = $a_value ? true : false;
00195 }
00196 function getSubscriptionUnlimitedStatus()
00197 {
00198 return $this->subscription_unlimited ? true : false;
00199 }
00200 function setSubscriptionUnlimitedStatus($a_unlimited)
00201 {
00202 $this->subscription_unlimited = (bool) $a_unlimited;
00203 }
00204 function getSubscriptionStart()
00205 {
00206 return $this->subscription_start ? $this->subscription_start : time();
00207 }
00208 function setSubscriptionStart($a_value)
00209 {
00210 $this->subscription_start = $a_value;
00211 }
00212 function getSubscriptionEnd()
00213 {
00214 return $this->subscription_end ? $this->subscription_end : mktime(0,0,0,12,12,date("Y",time())+2);
00215 }
00216 function getSubscriptionType()
00217 {
00218 return $this->subscription_type ? $this->subscription_type : $this->SUBSCRIPTION_DEACTIVATED;
00219 }
00220 function setSubscriptionType($a_value)
00221 {
00222 $this->subscription_type = $a_value;
00223 }
00224 function setSubscriptionEnd($a_value)
00225 {
00226 $this->subscription_end = $a_value;
00227 }
00228 function getSubscriptionPassword()
00229 {
00230 return $this->subscription_password;
00231 }
00232 function setSubscriptionPassword($a_value)
00233 {
00234 $this->subscription_password = $a_value;
00235 }
00236 function setObjectiveViewStatus($a_status)
00237 {
00238 $this->objective_view = $a_status;
00239 }
00240 function enabledObjectiveView()
00241 {
00242 return (bool) $this->objective_view;
00243 }
00244
00245 function inSubscriptionTime()
00246 {
00247 if($this->getSubscriptionUnlimitedStatus())
00248 {
00249 return true;
00250 }
00251 if(time() > $this->getSubscriptionStart() and time() < $this->getSubscriptionEnd())
00252 {
00253 return true;
00254 }
00255 return false;
00256 }
00257
00258 function getSubscriptionMaxMembers()
00259 {
00260 return $this->subscription_max_members;
00261 }
00262 function setSubscriptionMaxMembers($a_value)
00263 {
00264 $this->subscription_max_members = $a_value;
00265 }
00266 function getSubscriptionNotify()
00267 {
00268 return $this->subscription_notify ? true : false;
00269 }
00270 function setSubscriptionNotify($a_value)
00271 {
00272 $this->subscription_notify = $a_value ? true : false;
00273 }
00274 function getOrderType()
00275 {
00276 return $this->order_type ? $this->order_type : $this->SORT_TITLE;
00277 }
00278 function setOrderType($a_value)
00279 {
00280 $this->order_type = $a_value;
00281 }
00282 function getArchiveStart()
00283 {
00284 return $this->archive_start ? $this->archive_start : time();
00285 }
00286 function setArchiveStart($a_value)
00287 {
00288 $this->archive_start = $a_value;
00289 }
00290 function getArchiveEnd()
00291 {
00292 return $this->archive_end ? $this->archive_end : mktime(0,0,0,12,12,date("Y",time())+2);
00293 }
00294 function setArchiveEnd($a_value)
00295 {
00296 $this->archive_end = $a_value;
00297 }
00298 function getArchiveType()
00299 {
00300 return $this->archive_type ? $this->archive_type : $this->ARCHIVE_DISABLED;
00301 }
00302 function setArchiveType($a_value)
00303 {
00304 $this->archive_type = $a_value;
00305 }
00306 function setAboStatus($a_status)
00307 {
00308 $this->abo = $a_status;
00309 }
00310 function getAboStatus()
00311 {
00312 return $this->abo;
00313 }
00314
00315
00316 function getMessage()
00317 {
00318 return $this->message;
00319 }
00320 function setMessage($a_message)
00321 {
00322 $this->message = $a_message;
00323 }
00324 function appendMessage($a_message)
00325 {
00326 if($this->getMessage())
00327 {
00328 $this->message .= "<br /> ";
00329 }
00330 $this->message .= $a_message;
00331 }
00332
00333 function getMembers()
00334 {
00335 return $this->members_obj->getMembers();
00336 }
00337
00338
00339 function isActivated($a_check_archive = false)
00340 {
00341 if($a_check_archive)
00342 {
00343 if($this->isArchived())
00344 {
00345 return true;
00346 }
00347 }
00348 if($this->getOfflineStatus())
00349 {
00350 return false;
00351 }
00352 if($this->getActivationUnlimitedStatus())
00353 {
00354 return true;
00355 }
00356 if(time() < $this->getActivationStart() or
00357 time() > $this->getActivationEnd())
00358 {
00359 return false;
00360 }
00361 return true;
00362 }
00363
00370 function _isActivated($a_obj_id)
00371 {
00372 global $ilDB;
00373
00374 $query = "SELECT * FROM crs_settings ".
00375 "WHERE obj_id = '".$a_obj_id."'";
00376
00377 $res = $ilDB->query($query);
00378 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
00379 {
00380 $offline = $row->activation_offline;
00381 $unlimited = $row->activation_unlimited;
00382 $start = $row->activation_start;
00383 $end = $row->activation_end;
00384 }
00385 if($offline)
00386 {
00387 return false;
00388 }
00389 if($unlimited)
00390 {
00391 return true;
00392 }
00393 if(time() < $start or
00394 time() > $end)
00395 {
00396 return false;
00397 }
00398 return true;
00399 }
00400
00401
00402 function isArchived()
00403 {
00404 if($this->getArchiveType() == $this->ARCHIVE_DISABLED)
00405 {
00406 return false;
00407 }
00408 if(time() < $this->getArchiveStart() or time() > $this->getArchiveEnd())
00409 {
00410 return false;
00411 }
00412 return true;
00413 }
00414
00415 function allowAbo()
00416 {
00417 return $this->ABO == $this->ABO_ENABLED;
00418 }
00419
00420 function read($a_force_db = false)
00421 {
00422 parent::read($a_force_db);
00423
00424 $this->__readSettings();
00425 }
00426 function create($a_upload = false)
00427 {
00428 parent::create($a_upload);
00429 $this->createMetaData();
00430
00431 if (!$a_upload)
00432 {
00433 #$this->__initMetaObject();
00434 #$this->meta_data->setId($this->getId());
00435 #$this->meta_data->setType($this->getType());
00436 #$this->meta_data->setTitle($this->getTitle());
00437 #$this->meta_data->setDescription($this->getDescription());
00438 #$this->meta_data->setObject($this);
00439 #$this->meta_data->create();
00440
00441 $this->__createDefaultSettings();
00442 }
00443 }
00444
00445 function validate()
00446 {
00447 $this->initCourseMemberObject();
00448
00449 $this->setMessage('');
00450
00451 if(!$this->getSubscriptionType())
00452 {
00453 $this->appendMessage($this->lng->txt('crs_select_registration_type'));
00454 }
00455
00456 if(!$this->getActivationUnlimitedStatus() and $this->getActivationEnd() < $this->getActivationStart())
00457 {
00458 $this->appendMessage($this->lng->txt("activation_times_not_valid"));
00459 }
00460 if(!$this->getSubscriptionUnlimitedStatus() and $this->getSubscriptionStart() > $this->getSubscriptionEnd())
00461 {
00462 $this->appendMessage($this->lng->txt("subscription_times_not_valid"));
00463 }
00464 #if((!$this->getActivationUnlimitedStatus() and
00465 # !$this->getSubscriptionUnlimitedStatus()) and
00466 # ($this->getSubscriptionStart() > $this->getActivationEnd() or
00467 # $this->getSubscriptionStart() < $this->getActivationStart() or
00468 # $this->getSubscriptionEnd() > $this->getActivationEnd() or
00469 # $this->getSubscriptionEnd() < $this->getActivationStart()))
00470 #
00471 #{
00472 # $this->appendMessage($this->lng->txt("subscription_time_not_within_activation"));
00473 #}
00474 if($this->getSubscriptionType() == $this->SUBSCRIPTION_PASSWORD and !$this->getSubscriptionPassword())
00475 {
00476 $this->appendMessage($this->lng->txt("password_required"));
00477 }
00478 if($this->getSubscriptionMaxMembers() and !is_numeric($this->getSubscriptionMaxMembers()))
00479 {
00480 $this->appendMessage($this->lng->txt("max_members_not_numeric"));
00481 }
00482 #if($this->getSubscriptionMaxMembers() and
00483 # $this->getSubscriptionMaxMembers() < $this->members_obj->getCountMembers())
00484 #{
00485 # $this->appendMessage($this->lng->txt("crs_max_members_smaller_members"));
00486 #}
00487 if($this->getArchiveStart() > $this->getArchiveEnd())
00488 {
00489 $this->appendMessage($this->lng->txt("archive_times_not_valid"));
00490 }
00491 if($this->getContactEmail() and
00492 !(ilUtil::is_email($this->getContactEmail()) or
00493 ilObjUser::getUserIdByLogin($this->getContactEmail())))
00494 {
00495 $this->appendMessage($this->lng->txt("contact_email_not_valid"));
00496 }
00497 return $this->getMessage() ? false : true;
00498 }
00499
00506 function ilClone($a_parent_ref)
00507 {
00508 global $rbacadmin;
00509
00510
00511 $new_ref_id = parent::ilClone($a_parent_ref);
00512
00513
00514 $new_course =& ilObjectFactory::getInstanceByRefId($new_ref_id);
00515
00516 $new_course->__initDefaultRoles();
00517 $new_course->initCourseMemberObject();
00518 $new_course->members_obj->add($this->ilias->account,$new_course->members_obj->ROLE_ADMIN);
00519 $new_course->__createDefaultSettings();
00520
00521
00522 $new_course->setSyllabus($this->getSyllabus());
00523 $new_course->setContactName($this->getContactName());
00524 $new_course->setContactConsultation($this->getContactConsultation());
00525 $new_course->setContactPhone($this->getContactPhone());
00526 $new_course->setContactEmail($this->getContactEmail());
00527 $new_course->setContactResponsibility($this->getContactResponsibility());
00528
00529 $new_course->setActivationUnlimitedStatus($this->getActivationUnlimitedStatus());
00530 $new_course->setActivationStart($this->getActivationStart());
00531 $new_course->setActivationEnd($this->getActivationEnd());
00532 $new_course->setOfflineStatus($this->getOfflineStatus());
00533
00534 $new_course->setSubscriptionUnlimitedStatus($this->getSubscriptionUnlimitedStatus());
00535 $new_course->setSubscriptionStart($this->getSubscriptionStart());
00536 $new_course->setSubscriptionEnd($this->getSubscriptionEnd());
00537 $new_course->setSubscriptionType($this->getSubscriptionType());
00538 $new_course->setSubscriptionPassword($this->getSubscriptionPassword());
00539 $new_course->setSubscriptionMaxMembers($this->getSubscriptionMaxMembers());
00540 $new_course->setSubscriptionNotify($this->getSubscriptionNotify());
00541 $new_course->setOrderType($this->getOrderType());
00542 $new_course->setArchiveStart($this->getArchiveStart());
00543 $new_course->setArchiveEnd($this->getArchiveEnd());
00544 $new_course->setArchiveType($this->getArchiveType());
00545 $new_course->setAboStatus($this->getAboStatus());
00546 $new_course->setObjectiveViewStatus($this->enabledObjectiveView());
00547
00548 $new_course->update();
00549
00550
00551 return $new_ref_id;
00552 }
00553
00560 function delete()
00561 {
00562
00563 if (!parent::delete())
00564 {
00565 return false;
00566 }
00567
00568
00569
00570 $this->deleteMetaData();
00571
00572
00573
00574 $this->__deleteSettings();
00575
00576 $this->initCourseItemObject();
00577 $this->items_obj->deleteAllEntries();
00578
00579 $this->initCourseMemberObject();
00580 $this->members_obj->deleteAllEntries();
00581
00582 $this->initCourseArchiveObject();
00583 $this->archives_obj->deleteAll();
00584
00585 include_once './course/classes/class.ilCourseObjective.php';
00586
00587 ilCourseObjective::_deleteAll($this->getId());
00588
00589 include_once './course/classes/class.ilObjCourseGrouping.php';
00590
00591 ilObjCourseGrouping::_deleteAll($this->getId());
00592
00593 return true;
00594 }
00595
00606 function notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params = 0)
00607 {
00608 global $tree;
00609
00610 switch ($a_event)
00611 {
00612 case "link":
00613
00614 break;
00615
00616 case "cut":
00617
00618 break;
00619
00620 case "copy":
00621
00622 break;
00623
00624 case "paste":
00625
00626 break;
00627
00628 case "new":
00629
00630 break;
00631 }
00632
00633
00634 if ($a_node_id==$_GET["ref_id"])
00635 {
00636 $parent_obj =& $this->ilias->obj_factory->getInstanceByRefId($a_node_id);
00637 $parent_type = $parent_obj->getType();
00638 if($parent_type == $this->getType())
00639 {
00640 $a_node_id = (int) $tree->getParentId($a_node_id);
00641 }
00642 }
00643
00644 parent::notify($a_event,$a_ref_id,$a_parent_non_rbac_id,$a_node_id,$a_params);
00645 }
00646
00647
00648
00649
00650
00651
00652
00653
00654
00655
00656
00657
00658
00662
00663
00664
00665
00666
00667
00668
00669
00670
00671
00672
00673
00674
00675
00676
00677
00678
00679
00680
00681
00682
00683
00687 function update()
00688 {
00689 $this->updateMetaData();
00690 $this->__updateSettings();
00691 parent::update();
00692 }
00693
00694
00695
00696
00697
00698
00699
00700
00701
00702
00703
00704
00705
00706
00707
00708
00709
00710
00711
00712
00713
00714
00715
00716
00717 function __updateSettings()
00718 {
00719 global $ilDB;
00720
00721
00722
00723 $query = "SELECT * FROM crs_settings WHERE obj_id = '".$this->getId()."'";
00724 $res = $ilDB->query($query);
00725
00726 if(!$res->numRows())
00727 {
00728 $this->__createDefaultSettings();
00729 }
00730
00731 $query = "UPDATE crs_settings SET ".
00732 "syllabus = '".ilUtil::prepareDBString($this->getSyllabus())."', ".
00733 "contact_name = '".ilUtil::prepareDBString($this->getContactName())."', ".
00734 "contact_responsibility = '".ilUtil::prepareDBString($this->getContactResponsibility())."', ".
00735 "contact_phone = '".ilUtil::prepareDBString($this->getContactPhone())."', ".
00736 "contact_email = '".ilUtil::prepareDBString($this->getContactEmail())."', ".
00737 "contact_consultation = '".ilUtil::prepareDBString($this->getContactConsultation())."', ".
00738 "activation_unlimited = '".(int) $this->getActivationUnlimitedStatus()."', ".
00739 "activation_start = '".$this->getActivationStart()."', ".
00740 "activation_end = '".$this->getActivationEnd()."', ".
00741 "activation_offline = '".(int) $this->getOfflineStatus()."', ".
00742 "subscription_unlimited = '".(int) $this->getSubscriptionUnlimitedStatus()."', ".
00743 "subscription_start = '".$this->getSubscriptionStart()."', ".
00744 "subscription_end = '".$this->getSubscriptionEnd()."', ".
00745 "subscription_type = '".(int) $this->getSubscriptionType()."', ".
00746 "subscription_password = '".ilUtil::prepareDBString($this->getSubscriptionPassword())."', ".
00747 "subscription_max_members = '".(int) $this->getSubscriptionMaxMembers()."', ".
00748 "subscription_notify = '".(int) $this->getSubscriptionNotify()."', ".
00749 "sortorder = '".(int) $this->getOrderType()."', ".
00750 "archive_start = '".$this->getArchiveStart()."', ".
00751 "archive_end = '".$this->getArchiveEnd()."', ".
00752 "archive_type = '".(int) $this->getArchiveType()."', ".
00753 "abo = '".(int) $this->getAboStatus()."', ".
00754 "objective_view = '".(int) $this->enabledObjectiveView()."' ".
00755 "WHERE obj_id = '".$this->getId()."'";
00756
00757 $res = $ilDB->query($query);
00758 }
00759
00760 function __createDefaultSettings()
00761 {
00762 global $ilDB;
00763
00764 $query = "INSERT INTO crs_settings SET ".
00765 "obj_id = '".$this->getId()."', ".
00766 "syllabus = '".ilUtil::prepareDBString($this->getSyllabus())."', ".
00767 "contact_name = '".ilUtil::prepareDBString($this->getContactName())."', ".
00768 "contact_responsibility = '".ilUtil::prepareDBString($this->getContactResponsibility())."', ".
00769 "contact_phone = '".ilUtil::prepareDBString($this->getContactPhone())."', ".
00770 "contact_email = '".ilUtil::prepareDBString($this->getContactEmail())."', ".
00771 "contact_consultation = '".ilUtil::prepareDBString($this->getContactConsultation())."', ".
00772 "activation_unlimited = '1', ".
00773 "activation_start = '".$this->getActivationStart()."', ".
00774 "activation_end = '".$this->getActivationEnd()."', ".
00775 "activation_offline = '1', ".
00776 "subscription_unlimited = '1', ".
00777 "subscription_start = '".$this->getSubscriptionStart()."', ".
00778 "subscription_end = '".$this->getSubscriptionEnd()."', ".
00779 "subscription_type = '".(int) $this->SUBSCRIPTION_DEACTIVATED."', ".
00780 "subscription_password = '".ilUtil::prepareDBString($this->getSubscriptionPassword())."', ".
00781 "subscription_max_members = '".(int) $this->getSubscriptionMaxMembers()."', ".
00782 "subscription_notify = '1', ".
00783 "sortorder = '".(int) $this->SORT_MANUAL."', ".
00784 "archive_start = '".$this->getArchiveStart()."', ".
00785 "archive_end = '".$this->getArchiveEnd()."', ".
00786 "archive_type = '".(int) $this->ARCHIVE_DISABLED."', ".
00787 "abo = '".(int) $this->ABO_ENABLED."', ".
00788 "objective_view = '0'";
00789
00790 $res = $ilDB->query($query);
00791 }
00792
00793
00794 function __readSettings()
00795 {
00796 global $ilDB;
00797
00798 $query = "SELECT * FROM crs_settings WHERE obj_id = '".$this->getId()."'";
00799
00800 $res = $ilDB->query($query);
00801 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
00802 {
00803 $this->setSyllabus($row->syllabus);
00804 $this->setContactName($row->contact_name);
00805 $this->setContactResponsibility($row->contact_responsibility);
00806 $this->setContactPhone($row->contact_phone);
00807 $this->setContactEmail($row->contact_email);
00808 $this->setContactConsultation($row->contact_consultation);
00809 $this->setActivationUnlimitedStatus($row->activation_unlimited);
00810 $this->setActivationStart($row->activation_start);
00811 $this->setActivationEnd($row->activation_end);
00812 $this->setOfflineStatus($row->activation_offline);
00813 $this->setSubscriptionUnlimitedStatus($row->subscription_unlimited);
00814 $this->setSubscriptionStart($row->subscription_start);
00815 $this->setSubscriptionEnd($row->subscription_end);
00816 $this->setSubscriptionType($row->subscription_type);
00817 $this->setSubscriptionPassword($row->subscription_password);
00818 $this->setSubscriptionMaxMembers($row->subscription_max_members);
00819 $this->setSubscriptionNotify($row->subscription_notify);
00820 $this->setOrderType($row->sortorder);
00821 $this->setArchiveStart($row->archive_start);
00822 $this->setArchiveEnd($row->archive_end);
00823 $this->setArchiveType($row->archive_type);
00824 $this->setAboStatus($row->abo);
00825 $this->setObjectiveViewStatus($row->objective_view);
00826 }
00827 return true;
00828 }
00829
00830 function initWaitingList()
00831 {
00832 include_once "./course/classes/class.ilCourseWaitingList.php";
00833
00834 if(!is_object($this->waiting_list_obj))
00835 {
00836 $this->waiting_list_obj =& new ilCourseWaitingList($this->getId());
00837 }
00838 return true;
00839 }
00840
00841
00842
00843 function initCourseMemberObject()
00844 {
00845 include_once "./course/classes/class.ilCourseMembers.php";
00846
00847 if(!is_object($this->members_obj))
00848 {
00849 $this->members_obj =& new ilCourseMembers($this);
00850 }
00851 return true;
00852 }
00853
00854 function initCourseItemObject($a_child_id = 0)
00855 {
00856 include_once "./course/classes/class.ilCourseItems.php";
00857
00858 if(!is_object($this->items_obj))
00859 {
00860 $this->items_obj =& new ilCourseItems($this,$a_child_id);
00861 }
00862 return true;
00863 }
00864
00865 function initCourseArchiveObject()
00866 {
00867 include_once "./course/classes/class.ilCourseArchives.php";
00868
00869 if(!is_object($this->archives_obj))
00870 {
00871 $this->archives_obj =& new ilCourseArchives($this);
00872 }
00873 return true;
00874 }
00875
00876
00877
00878
00879 function __initDefaultRoles()
00880 {
00881 global $rbacadmin,$rbacreview;
00882
00883 $rolf_obj = $this->createRoleFolder();
00884
00885
00886 $role_obj = $rolf_obj->createRole("il_crs_admin_".$this->getRefId(),"Admin of course obj_no.".$this->getId());
00887 $admin_id = $role_obj->getId();
00888
00889
00890 $query = "SELECT obj_id FROM object_data ".
00891 " WHERE type='rolt' AND title='il_crs_admin'";
00892
00893 $res = $this->ilias->db->getRow($query, DB_FETCHMODE_OBJECT);
00894 $rbacadmin->copyRolePermission($res->obj_id,ROLE_FOLDER_ID,$rolf_obj->getRefId(),$role_obj->getId());
00895
00896
00897 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"crs",$rolf_obj->getRefId());
00898 $rbacadmin->grantPermission($role_obj->getId(),$ops,$this->getRefId());
00899
00900
00901 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"rolf",$rolf_obj->getRefId());
00902 $rbacadmin->grantPermission($role_obj->getId(),$ops,$rolf_obj->getRefId());
00903
00904
00905
00906 $role_obj = $rolf_obj->createRole("il_crs_tutor_".$this->getRefId(),"Tutors of course obj_no.".$this->getId());
00907 $member_id = $role_obj->getId();
00908
00909
00910 $query = "SELECT obj_id FROM object_data ".
00911 " WHERE type='rolt' AND title='il_crs_tutor'";
00912 $res = $this->ilias->db->getRow($query, DB_FETCHMODE_OBJECT);
00913 $rbacadmin->copyRolePermission($res->obj_id,ROLE_FOLDER_ID,$rolf_obj->getRefId(),$role_obj->getId());
00914
00915
00916 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"crs",$rolf_obj->getRefId());
00917 $rbacadmin->grantPermission($role_obj->getId(),$ops,$this->getRefId());
00918
00919
00920 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"rolf",$rolf_obj->getRefId());
00921 $rbacadmin->grantPermission($role_obj->getId(),$ops,$rolf_obj->getRefId());
00922
00923
00924
00925 $role_obj = $rolf_obj->createRole("il_crs_member_".$this->getRefId(),"Member of course obj_no.".$this->getId());
00926 $member_id = $role_obj->getId();
00927
00928
00929 $query = "SELECT obj_id FROM object_data ".
00930 " WHERE type='rolt' AND title='il_crs_member'";
00931 $res = $this->ilias->db->getRow($query, DB_FETCHMODE_OBJECT);
00932 $rbacadmin->copyRolePermission($res->obj_id,ROLE_FOLDER_ID,$rolf_obj->getRefId(),$role_obj->getId());
00933
00934
00935 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"crs",$rolf_obj->getRefId());
00936 $rbacadmin->grantPermission($role_obj->getId(),$ops,$this->getRefId());
00937
00938
00939 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"rolf",$rolf_obj->getRefId());
00940 $rbacadmin->grantPermission($role_obj->getId(),$ops,$rolf_obj->getRefId());
00941
00942 unset($role_obj);
00943 unset($rolf_obj);
00944
00945 return true;
00946 }
00947
00948 function __getLocalRoles()
00949 {
00950 global $rbacreview;
00951
00952
00953
00954 $rolf = $rbacreview->getRoleFolderOfObject($this->getRefId());
00955
00956 return $rbacreview->getRolesOfRoleFolder($rolf["ref_id"],false);
00957 }
00958
00959 function __deleteSettings()
00960 {
00961 $query = "DELETE FROM crs_settings ".
00962 "WHERE obj_id = '".$this->getId()."'";
00963
00964 $this->ilias->db->query($query);
00965
00966 return true;
00967 }
00968
00969 function getDefaultMemberRole()
00970 {
00971 $local_roles = $this->__getLocalRoles();
00972
00973 foreach($local_roles as $role_id)
00974 {
00975 if($tmp_role =& ilObjectFactory::getInstanceByObjId($role_id,false))
00976 {
00977 if(!strcmp($tmp_role->getTitle(),"il_crs_member_".$this->getRefId()))
00978 {
00979 return $role_id;
00980 }
00981 }
00982 }
00983 return false;
00984 }
00985 function getDefaultTutorRole()
00986 {
00987 $local_roles = $this->__getLocalRoles();
00988
00989 foreach($local_roles as $role_id)
00990 {
00991 if($tmp_role =& ilObjectFactory::getInstanceByObjId($role_id,false))
00992 {
00993 if(!strcmp($tmp_role->getTitle(),"il_crs_tutor_".$this->getRefId()))
00994 {
00995 return $role_id;
00996 }
00997 }
00998 }
00999 return false;
01000 }
01001 function getDefaultAdminRole()
01002 {
01003 $local_roles = $this->__getLocalRoles();
01004
01005 foreach($local_roles as $role_id)
01006 {
01007 if($tmp_role =& ilObjectFactory::getInstanceByObjId($role_id,false))
01008 {
01009 if(!strcmp($tmp_role->getTitle(),"il_crs_admin_".$this->getRefId()))
01010 {
01011 return $role_id;
01012 }
01013 }
01014 }
01015 return false;
01016 }
01017
01018
01019 function _checkCondition($a_obj_id,$a_operator,$a_value)
01020 {
01021 global $ilias;
01022
01023 include_once "./course/classes/class.ilCourseMembers.php";
01024
01025 switch($a_operator)
01026 {
01027 case 'passed':
01028 return ilCourseMembers::_hasPassed($a_obj_id,$ilias->account->getId());
01029
01030 default:
01031 return true;
01032 }
01033 }
01034 }
01035 ?>