/**
  * checks wether a user may invoke a command or not
  * (this method is called by ilAccessHandler::checkAccess)
  *
  * @param	string		$a_cmd		command (not permission!)
  * @param	string		$a_permission	permission
  * @param	int			$a_ref_id	reference id
  * @param	int			$a_obj_id	object id
  * @param	int			$a_user_id	user id (if not provided, current user is taken)
  *
  * @return	boolean		true, if everything is ok
  */
 function _checkAccess($a_cmd, $a_permission, $a_ref_id, $a_obj_id, $a_user_id = "")
 {
     global $ilUser, $lng, $rbacsystem, $ilAccess, $ilias;
     if ($a_user_id == "") {
         $a_user_id = $ilUser->getId();
     }
     switch ($a_cmd) {
         case "info":
             include_once './Modules/ILinc/classes/class.ilObjiLincCourse.php';
             if (ilObjiLincCourse::_isMember($a_user_id, $a_ref_id)) {
                 $ilAccess->addInfoItem(IL_STATUS_MESSAGE, $lng->txt("info_is_member"));
             } else {
                 $ilAccess->addInfoItem(IL_STATUS_MESSAGE, $lng->txt("info_is_not_member"));
             }
             break;
         case 'join':
             include_once './Modules/ILinc/classes/class.ilObjiLincCourse.php';
             if (ilObjiLincCourse::_isMember($a_user_id, $a_ref_id)) {
                 return false;
             }
             break;
     }
     switch ($a_permission) {
         case "visible":
             include_once './Modules/ILinc/classes/class.ilObjiLincCourse.php';
             if (!($activated = ilObjiLincCourse::_isActivated($a_obj_id))) {
                 $ilAccess->addInfoItem(IL_NO_OBJECT_ACCESS, $lng->txt("offline"));
             } else {
                 $ilAccess->addInfoItem(IL_STATUS_MESSAGE, $lng->txt("online"));
             }
             if (!$ilias->getSetting("ilinc_active")) {
                 $ilAccess->addInfoItem(IL_STATUS_MESSAGE, $lng->txt("ilinc_server_not_active"));
             }
             if (!$rbacsystem->checkAccessOfUser($a_user_id, 'write', $a_ref_id) and !$activated) {
                 return false;
             }
             break;
     }
     return true;
 }
 /**
  * Get item properties
  *
  * @return	array		array of property arrays:
  *						"alert" (boolean) => display as an alert property (usually in red)
  *						"property" (string) => property name
  *						"value" (string) => property value
  */
 function getProperties()
 {
     global $lng, $ilias, $rbacsystem;
     $props = array();
     include_once "./Modules/ILinc/classes/class.ilObjiLincCourse.php";
     if (!ilObjiLincCourse::_isActivated($this->obj_id)) {
         $props[] = array("alert" => true, "property" => $lng->txt("status"), "value" => $lng->txt("offline"));
     }
     if (!$ilias->getSetting("ilinc_active")) {
         $props[] = array("alert" => false, "property" => $lng->txt("ilinc_remark"), "value" => $lng->txt("ilinc_server_not_active"));
     }
     // Display cost centers if active
     if ($ilias->getSetting("ilinc_akclassvalues_active") and $rbacsystem->checkAccess("write", $this->ref_id)) {
         $akclassvalues = ilObjiLincCourse::_getAKClassValues($this->obj_id);
         $value = "";
         if (!empty($akclassvalues[0])) {
             $value = $akclassvalues[0];
             $property = $lng->txt("ilinc_akclassvalue");
             if (!empty($akclassvalues[1])) {
                 $value .= " / " . $akclassvalues[1];
                 $property = $lng->txt("ilinc_akclassvalues");
             }
         } elseif (!empty($akclassvalues[1])) {
             $value = $akclassvalues[1];
             $property = $lng->txt("ilinc_akclassvalue");
         } else {
             $property = $lng->txt("ilinc_akclassvalues");
             $value = $lng->txt("ilinc_no_akclassvalues");
         }
     }
     $props[] = array("alert" => false, "property" => $property, "value" => $value);
     return $props;
 }