• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

course/classes/class.ilObjCourse.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2001 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
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         // SET/GET
00084         function setId($a_id)
00085         {
00086                 parent::setId($a_id);
00087 
00088 //              unset($this->meta_data);
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 //              $this->__initMetaObject();
00102 //              $this->meta_data->setDescription($a_description);
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 //              $this->__initMetaObject();
00114 //              $this->meta_data->setTitle($a_title);
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                 // always call parent ilClone function first!!
00511                 $new_ref_id = parent::ilClone($a_parent_ref);
00512                 
00513                 // put here crs specific stuff
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                 // ... and finally always return new reference ID!!
00551                 return $new_ref_id;
00552         }
00553 
00560         function delete()
00561         {
00562                 // always call parent delete function first!!
00563                 if (!parent::delete())
00564                 {
00565                         return false;
00566                 }
00567 
00568 
00569                 // delete meta data
00570                 $this->deleteMetaData();
00571 
00572                 // put here course specific stuff
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                 // At the beginning of the recursive process it avoids second call of the notify function with the same parameter
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         // META DATA METHODS
00648 /*
00649         function &getMetaData()
00650         {
00651                 // CALLED BY META DATA GUI
00652 
00653                 $this->__initMetaObject();
00654 
00655                 return $this->meta_data;
00656         }
00657 */
00658 
00662 /*
00663         function updateMetaData()
00664         {
00665                 $this->__initMetaObject();
00666 
00667                 $this->meta_data->update();
00668                 if ($this->meta_data->section != "General")
00669                 {
00670                         $meta = $this->meta_data->getElement("Title", "General");
00671                         $this->meta_data->setTitle($meta[0]["value"]);
00672                         $meta = $this->meta_data->getElement("Description", "General");
00673                         $this->meta_data->setDescription($meta[0]["value"]);
00674                 }
00675                 else
00676                 {
00677                         $this->setTitle($this->meta_data->getTitle());
00678                         $this->setDescription($this->meta_data->getDescription());
00679                 }
00680                 parent::update();
00681         }
00682 */
00683 
00687         function update()
00688         {
00689                 $this->updateMetaData();
00690                 $this->__updateSettings();
00691                 parent::update();
00692         }
00693 
00694 /*
00695         function __initMetaObject()
00696         {
00697                 include_once "./classes/class.ilMetaData.php";
00698 
00699                 if(is_object($this->meta_data))
00700                 {
00701                         return true;
00702                 }
00703 
00704                 if($this->getId())
00705                 {
00706                         $this->meta_data =& new ilMetaData($this->getType(),$this->getId());
00707                 }
00708                 else
00709                 {
00710                         $this->meta_data =& new ilMetaData();
00711                 }
00712 
00713                 return true;
00714         }
00715 */
00716 
00717         function __updateSettings()
00718         {
00719                 global $ilDB;
00720 
00721                 // Due to a bug 3.5.alpha maybe no settings exist. => create default settings
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         // RBAC METHODS
00879         function __initDefaultRoles()
00880         {
00881                 global $rbacadmin,$rbacreview;
00882 
00883                 $rolf_obj = $this->createRoleFolder();
00884 
00885                 // CREATE ADMIN ROLE
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                 // SET PERMISSION TEMPLATE OF NEW LOCAL ADMIN ROLE
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                 // SET OBJECT PERMISSIONS OF COURSE OBJECT
00897                 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"crs",$rolf_obj->getRefId());
00898                 $rbacadmin->grantPermission($role_obj->getId(),$ops,$this->getRefId());
00899 
00900                 // SET OBJECT PERMISSIONS OF ROLE FOLDER OBJECT
00901                 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"rolf",$rolf_obj->getRefId());
00902                 $rbacadmin->grantPermission($role_obj->getId(),$ops,$rolf_obj->getRefId());
00903 
00904                 // CREATE TUTOR ROLE
00905                 // CREATE ROLE AND ASSIGN ROLE TO ROLEFOLDER...
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                 // SET PERMISSION TEMPLATE OF NEW LOCAL ROLE
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                 // SET OBJECT PERMISSIONS OF COURSE OBJECT
00916                 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"crs",$rolf_obj->getRefId());
00917                 $rbacadmin->grantPermission($role_obj->getId(),$ops,$this->getRefId());
00918 
00919                 // SET OBJECT PERMISSIONS OF ROLE FOLDER OBJECT
00920                 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"rolf",$rolf_obj->getRefId());
00921                 $rbacadmin->grantPermission($role_obj->getId(),$ops,$rolf_obj->getRefId());
00922 
00923                 // CREATE MEMBER ROLE
00924                 // CREATE ROLE AND ASSIGN ROLE TO ROLEFOLDER...
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                 // SET PERMISSION TEMPLATE OF NEW LOCAL ROLE
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                 // SET OBJECT PERMISSIONS OF COURSE OBJECT
00935                 $ops = $rbacreview->getOperationsOfRole($role_obj->getId(),"crs",$rolf_obj->getRefId());
00936                 $rbacadmin->grantPermission($role_obj->getId(),$ops,$this->getRefId());
00937 
00938                 // SET OBJECT PERMISSIONS OF ROLE FOLDER OBJECT
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                 // GET role_objects of predefined roles
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         // static method for condition handler
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 } //END class.ilObjCourse
01035 ?>

Generated on Fri Dec 13 2013 10:18:30 for ILIAS Release_3_5_x_branch .rev 46805 by  doxygen 1.7.1