/**
  * Init acceptance
  * @return 
  */
 protected function initSettings()
 {
     if (self::$accepted_ids !== NULL) {
         return true;
     }
     self::$export_allowed = ilPrivacySettings::_getInstance()->checkExportAccess($this->getParentObject()->object->getRefId());
     self::$confirmation_required = ilPrivacySettings::_getInstance()->groupConfirmationRequired();
     include_once 'Services/Membership/classes/class.ilMemberAgreement.php';
     self::$accepted_ids = ilMemberAgreement::lookupAcceptedAgreements($this->getParentObject()->object->getId());
     include_once 'Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php';
     self::$has_odf_definitions = ilCourseDefinedFieldDefinition::_hasFields($this->getParentObject()->object->getId());
 }
예제 #2
0
 /**
  * delete course and all related data	
  *
  * @access	public
  * @return	boolean	true if all object data were removed; false if only a references were removed
  */
 function delete()
 {
     global $ilAppEventHandler;
     // always call parent delete function first!!
     if (!parent::delete()) {
         return false;
     }
     // delete meta data
     $this->deleteMetaData();
     // put here course specific stuff
     $this->__deleteSettings();
     include_once 'Modules/Course/classes/class.ilCourseParticipants.php';
     ilCourseParticipants::_deleteAllEntries($this->getId());
     $this->initCourseArchiveObject();
     $this->archives_obj->deleteAll();
     include_once './Modules/Course/classes/class.ilCourseObjective.php';
     ilCourseObjective::_deleteAll($this->getId());
     include_once './Modules/Course/classes/class.ilObjCourseGrouping.php';
     ilObjCourseGrouping::_deleteAll($this->getId());
     include_once './Modules/Course/classes/class.ilCourseFile.php';
     ilCourseFile::_deleteByCourse($this->getId());
     include_once 'Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php';
     ilCourseDefinedFieldDefinition::_deleteByContainer($this->getId());
     $ilAppEventHandler->raise('Modules/Course', 'delete', array('object' => $this, 'obj_id' => $this->getId(), 'appointments' => $this->prepareAppointments('delete')));
     return true;
 }
 /**
  * Update field definition
  * @return 
  */
 protected function updateField()
 {
     $GLOBALS['ilLog']->write(__METHOD__ . ': ' . print_r($_POST, true));
     $this->initFieldForm(self::MODE_UPDATE);
     if ($this->form->checkInput()) {
         $udf = new ilCourseDefinedFieldDefinition($this->getObjId(), (int) $_REQUEST['field_id']);
         $udf->setName($this->form->getInput('na'));
         $udf->setType($this->form->getInput('ty'));
         $udf->setValues($udf->prepareValues($this->form->getInput('va')));
         $udf->setValueOptions($this->form->getItemByPostVar('va')->getOpenAnswerIndexes());
         $udf->enableRequired($this->form->getInput('re'));
         $udf->update();
         // Finally reset member agreements
         ilMemberAgreement::_deleteByObjId($this->getObjId());
         ilUtil::sendSuccess($this->lng->txt('settings_saved'));
         $this->listFields();
         return true;
     }
     ilUtil::sendFailure($this->lng->txt('err_check_input'));
     $this->form->setValuesByPost();
     $this->tpl->setContent($this->form->getHTML());
     return false;
 }
 /**
  * Checks whether the agreement is accepted
  * This function return always true if no acceptance is required by global setting
  *
  * @access public
  * @return bool
  */
 public function agreementRequired()
 {
     if (!$this->privacy->confirmationRequired($this->type) and !ilCourseDefinedFieldDefinition::_hasFields($this->obj_id)) {
         return false;
     }
     return $this->accepted ? false : true;
 }
 /**
  * Check Agreement
  *
  * @access private
  * 
  */
 private function checkAgreement()
 {
     global $ilUser;
     if ($_POST['agreed']) {
         return true;
     }
     if (!$this->privacy->confirmationRequired($this->type) and !ilCourseDefinedFieldDefinition::_hasFields($this->obj_id)) {
         return true;
     }
     return false;
 }
 /**
  * Constructor
  *
  * @access public
  * @param
  * @return
  */
 public function __construct($a_parent_obj, $show_content = true, $show_subject = true)
 {
     global $lng, $ilCtrl;
     $this->lng = $lng;
     $this->lng->loadLanguageModule('grp');
     $this->lng->loadLanguageModule('crs');
     $this->ctrl = $ilCtrl;
     $this->setShowSubject($show_subject);
     $this->setId('crs_sub_' . $a_parent_obj->object->getId());
     parent::__construct($a_parent_obj, 'members');
     $this->setFormName('subscribers');
     $this->setFormAction($this->ctrl->getFormAction($a_parent_obj, 'members'));
     $this->addColumn('', 'f', "1");
     $this->addColumn($this->lng->txt('name'), 'lastname', '20%');
     $all_cols = $this->getSelectableColumns();
     foreach ($this->getSelectedColumns() as $col) {
         $this->addColumn($all_cols[$col]['txt'], $col);
     }
     $this->addColumn($this->lng->txt('application_date'), 'sub_time', "10%");
     if ($this->getShowSubject()) {
         $this->addColumn($this->lng->txt('subject'), 'subject', '15%');
     }
     $this->addColumn('', 'mail', '10%');
     $this->addMultiCommand('assignSubscribers', $this->lng->txt('assign'));
     $this->addMultiCommand('refuseSubscribers', $this->lng->txt('refuse'));
     $this->addMultiCommand('sendMailToSelectedUsers', $this->lng->txt('crs_mem_send_mail'));
     $this->setPrefix('subscribers');
     $this->setSelectAllCheckbox('subscribers');
     $this->setRowTemplate("tpl.show_subscribers_row.html", "Services/Membership");
     if ($show_content) {
         $this->enable('sort');
         $this->enable('header');
         $this->enable('numinfo');
         $this->enable('select_all');
     } else {
         $this->disable('content');
         $this->disable('header');
         $this->disable('footer');
         $this->disable('numinfo');
         $this->disable('select_all');
     }
     $this->setExternalSegmentation(true);
     include_once 'Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php';
     self::$has_odf_definitions = ilCourseDefinedFieldDefinition::_hasFields($this->getParentObject()->object->getId());
 }
 /**
  * Show list of export files
  *
  * @access public
  * 
  */
 public function show($a_deliver_file = false)
 {
     $this->showFileList();
     $this->tpl->addBlockFile('ADM_CONTENT', 'adm_content', 'tpl.member_export.html', 'Modules/Course');
     $this->tpl->setVariable('FORM_ACTION', $this->ctrl->getFormAction($this));
     $this->tpl->setVariable('TXT_EXPORT_SETTINGS', $this->lng->txt('ps_export_settings'));
     $this->tpl->setVariable('TXT_USER_SELECTION', $this->lng->txt('ps_user_selection'));
     $this->tpl->setVariable('TXT_EXPORT_ADMIN', $this->lng->txt('ps_export_admin'));
     $this->tpl->setVariable('TXT_EXPORT_MEMBER', $this->lng->txt('ps_export_member'));
     $this->tpl->setVariable('TXT_EXPORT_WAIT', $this->lng->txt('ps_export_wait'));
     $this->tpl->setVariable('TXT_EXPORT_SUB', $this->lng->txt('ps_export_sub'));
     // Check user selection
     $this->exportSettings = new ilUserFormSettings('memexp');
     $this->tpl->setVariable('CHECK_EXPORT_ADMIN', ilUtil::formCheckbox($this->exportSettings->enabled('admin'), 'export_members[admin]', 1));
     if ($this->type == 'crs') {
         $this->tpl->setVariable('CHECK_EXPORT_TUTOR', ilUtil::formCheckbox($this->exportSettings->enabled('tutor'), 'export_members[tutor]', 1));
         $this->tpl->setVariable('TXT_EXPORT_TUTOR', $this->lng->txt('ps_export_tutor'));
     }
     $this->tpl->setVariable('CHECK_EXPORT_MEMBER', ilUtil::formCheckbox($this->exportSettings->enabled('member'), 'export_members[member]', 1));
     $this->tpl->setVariable('CHECK_EXPORT_SUB', ilUtil::formCheckbox($this->exportSettings->enabled('subscribers'), 'export_members[subscribers]', 1));
     $this->tpl->setVariable('CHECK_EXPORT_WAIT', ilUtil::formCheckbox($this->exportSettings->enabled('waiting_list'), 'export_members[waiting_list]', 1));
     $this->tpl->setVariable('TXT_EXPORT', $this->lng->txt('ps_perform_export'));
     $this->tpl->setVariable('TXT_EXPORT_EXCEL', $this->lng->txt('ps_export_excel'));
     // User Data
     $this->tpl->setVariable('TXT_USER_DATA_SELECTION', $this->lng->txt('ps_export_data'));
     $this->tpl->setVariable('TXT_EXPORT_USER_DATA_HEADER', $this->lng->txt('ps_export_user_data'));
     include_once './Services/Booking/classes/class.ilBookingEntry.php';
     if (ilBookingEntry::hasObjectBookingEntries($this->obj_id, $GLOBALS['ilUser']->getId())) {
         $this->tpl->setCurrentBlock('consultation');
         $this->lng->loadLanguageModule('dateplaner');
         $this->tpl->setVariable('TXT_CH', $this->lng->txt('cal_ch_field_ch'));
         $this->tpl->setVariable('TXT_EXPORT_CH', $this->lng->txt('cal_ch_export_apps'));
         $this->tpl->setVariable('CHECK_EXPORT_CH', ilUtil::formCheckbox($this->exportSettings->enabled('consultation_hour'), 'export_members[consultation_hour]', 1));
         $this->tpl->parseCurrentBlock();
     }
     $fields = $this->fields_info->getFieldsInfo();
     foreach ($fields as $field => $exportable) {
         if (!$exportable) {
             continue;
         }
         $this->tpl->setCurrentBlock('user_data_row');
         $this->tpl->setVariable('CHECK_EXPORT_USER_DATA', ilUtil::formCheckbox($this->exportSettings->enabled($field), 'export_members[' . $field . ']', 1));
         $this->tpl->setVariable('TXT_EXPORT_USER_DATA', $this->lng->txt($field));
         $this->tpl->parseCurrentBlock();
     }
     $udf = ilUserDefinedFields::_getInstance();
     foreach ($exp = $udf->getExportableFields($this->obj_id) as $field_id => $udf_data) {
         $this->tpl->setCurrentBlock('user_data_row');
         $this->tpl->setVariable('CHECK_EXPORT_USER_DATA', ilUtil::formCheckbox($this->exportSettings->enabled('udf_' . $field_id), 'export_members[udf_' . $field_id . ']', 1));
         $this->tpl->setVariable('TXT_EXPORT_USER_DATA', $udf_data['field_name']);
         $this->tpl->parseCurrentBlock();
     }
     $cdf_fields = ilCourseDefinedFieldDefinition::_getFields($this->obj_id);
     foreach ($cdf_fields as $field_obj) {
         $this->tpl->setCurrentBlock('cdf_row');
         $this->tpl->setVariable('CHECK_CDF_DATA', ilUtil::formCheckbox($this->exportSettings->enabled('cdf_' . $field_obj->getId()), 'export_members[cdf_' . $field_obj->getId() . ']', 1));
         $this->tpl->setVariable('TXT_CDF_NAME', $field_obj->getName());
         $this->tpl->parseCurrentBlock();
     }
     if (count($cdf_fields)) {
         $this->tpl->setCurrentBlock('cdf_fields');
         $this->tpl->setVariable('TXT_CDF_SELECTION', $this->lng->txt('ps_' . $this->type . '_user_fields'));
         $this->tpl->parseCurrentBlock();
     }
     if ($a_deliver_file and 0) {
         $this->tpl->setCurrentBlock('iframe');
         $this->tpl->setVariable('SOURCE', $this->ctrl->getLinkTarget($this, 'deliverData'));
     }
 }
예제 #8
0
 /**
  * Set Agreement accepted
  *
  * @access private
  * @param bool 
  */
 protected function setAccepted($a_status)
 {
     global $ilUser;
     include_once 'Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php';
     if (!$this->privacy->confirmationRequired($this->type) and !ilCourseDefinedFieldDefinition::_hasFields($this->container->getId())) {
         return true;
     }
     include_once 'Services/Membership/classes/class.ilMemberAgreement.php';
     $this->agreement = new ilMemberAgreement($ilUser->getId(), $this->container->getId());
     $this->agreement->setAccepted($a_status);
     $this->agreement->setAcceptanceTime(time());
     $this->agreement->save();
 }
 /**
  * Save course defined fields
  * @param ilPropertyFormGUI $form
  */
 public static function saveCourseDefinedFields(ilPropertyFormGUI $form, $a_obj_id, $a_usr_id = 0)
 {
     global $ilUser;
     if (!$a_usr_id) {
         $a_usr_id = $ilUser->getId();
     }
     foreach (ilCourseDefinedFieldDefinition::_getFields($a_obj_id) as $field_obj) {
         switch ($field_obj->getType()) {
             case IL_CDF_TYPE_SELECT:
                 // Split value id from post
                 list($field_id, $option_id) = explode('_', $form->getInput('cdf_' . $field_obj->getId()));
                 $open_answer_indexes = (array) $field_obj->getValueOptions();
                 if (in_array($option_id, $open_answer_indexes)) {
                     $value = $form->getInput('cdf_oa_' . $field_obj->getId() . '_' . $option_id);
                 } else {
                     $value = $field_obj->getValueById($option_id);
                 }
                 break;
             case IL_CDF_TYPE_TEXT:
                 $value = $form->getInput('cdf_' . $field_obj->getId());
                 break;
         }
         $course_user_data = new ilCourseUserData($a_usr_id, $field_obj->getId());
         $course_user_data->setValue($value);
         $course_user_data->update();
     }
 }
 /**
  * fill course specific fields
  *
  * @access private
  * @param int usr_id
  * @param string field
  * @return bool
  * 
  */
 private function addCourseField($a_usr_id, $a_field, $row, $col)
 {
     if (substr($a_field, 0, 4) != 'cdf_') {
         return false;
     }
     if (!$this->privacy->courseConfirmationRequired() and ilCourseDefinedFieldDefinition::_getFields($this->obj_id) or $this->agreement[$a_usr_id]['accepted']) {
         $field_info = explode('_', $a_field);
         $field_id = $field_info[1];
         $value = $this->user_course_fields[$a_usr_id][$field_id];
         #$this->csv->addColumn($value);
         $this->addCol($value, $row, $col);
         return true;
     }
     #$this->csv->addColumn('');
     $this->addCol('', $row, $col);
     return true;
 }
예제 #11
0
 /**
  * Get selectable fields
  * @return 
  */
 public function getSelectableFieldsInfo($a_obj_id)
 {
     global $lng;
     $fields = array();
     foreach ($this->getExportableFields() as $field) {
         switch ($field) {
             case 'lastname':
             case 'firstname':
                 break;
             case 'username':
                 $fields['login']['txt'] = $lng->txt('login');
                 $fields['login']['default'] = 1;
                 break;
             default:
                 $fields[$field]['txt'] = $lng->txt($field);
                 $fields[$field]['default'] = 0;
                 break;
         }
     }
     include_once './Services/Booking/classes/class.ilBookingEntry.php';
     if (ilBookingEntry::hasObjectBookingEntries($a_obj_id, $GLOBALS['ilUser']->getId())) {
         $GLOBALS['lng']->loadLanguageModule('dateplaner');
         $fields['consultation_hour']['txt'] = $GLOBALS['lng']->txt('cal_ch_field_ch');
         $fields['consultation_hour']['default'] = 0;
     }
     include_once './Services/User/classes/class.ilUserDefinedFields.php';
     if ($this->getType() == 'crs') {
         $udf = ilUserDefinedFields::_getInstance()->getCourseExportableFields();
     } elseif ($this->getType() == 'grp') {
         $udf = ilUserDefinedFields::_getInstance()->getGroupExportableFields();
     }
     if ($udf) {
         foreach ($udf as $field_id => $field) {
             $fields['udf_' . $field_id]['txt'] = $field['field_name'];
             $fields['udf_' . $field_id]['default'] = 0;
         }
     }
     include_once './Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php';
     $cdf = ilCourseDefinedFieldDefinition::_getFields($a_obj_id);
     foreach ($cdf as $def) {
         $fields['odf_' . $def->getId()]['txt'] = $def->getName();
         $fields['odf_' . $def->getId()]['default'] = 0;
     }
     if (count($cdf)) {
         // add last edit
         $fields['odf_last_update']['txt'] = $GLOBALS['lng']->txt($this->getType() . '_cdf_tbl_last_edit');
         $fields['odf_last_update']['default'] = 0;
     }
     return $fields;
 }
예제 #12
0
 /**
  * Check agreement and redirect if it is not accepted
  *
  * @access private
  * 
  */
 private function checkAgreement()
 {
     global $ilUser, $ilAccess;
     if ($ilAccess->checkAccess('write', '', $this->object->getRefId())) {
         return true;
     }
     // Disable aggrement if is not member of course
     if (!$this->object->getMemberObject()->isAssigned()) {
         return true;
     }
     include_once './Services/Container/classes/class.ilMemberViewSettings.php';
     if (ilMemberViewSettings::getInstance()->isActive()) {
         return true;
     }
     include_once 'Services/PrivacySecurity/classes/class.ilPrivacySettings.php';
     include_once 'Services/Membership/classes/class.ilMemberAgreement.php';
     $privacy = ilPrivacySettings::_getInstance();
     // Check agreement
     if (($privacy->courseConfirmationRequired() or ilCourseDefinedFieldDefinition::_hasFields($this->object->getId())) and !ilMemberAgreement::_hasAccepted($ilUser->getId(), $this->object->getId())) {
         $GLOBALS['ilLog']->write(__METHOD__ . ': Missing course confirmation.');
         return false;
     }
     // Check required fields
     include_once 'Modules/Course/classes/Export/class.ilCourseUserData.php';
     if (!ilCourseUserData::_checkRequired($ilUser->getId(), $this->object->getId())) {
         $GLOBALS['ilLog']->write(__METHOD__ . ': Missing required fields');
         return false;
     }
     return true;
 }
 /**
  * Get selectable fields
  * @return 
  */
 public function getSelectableFieldsInfo($a_obj_id)
 {
     global $lng;
     $fields = array();
     foreach ($this->getExportableFields() as $field) {
         switch ($field) {
             case 'lastname':
             case 'firstname':
                 break;
             case 'username':
                 $fields['login']['txt'] = $lng->txt('username');
                 $fields['login']['default'] = 1;
                 break;
             default:
                 $fields[$field]['txt'] = $lng->txt($field);
                 $fields[$field]['default'] = 0;
                 break;
         }
     }
     include_once './Services/User/classes/class.ilUserDefinedFields.php';
     if ($this->getType() == 'crs') {
         $udf = ilUserDefinedFields::_getInstance()->getCourseExportableFields();
     } elseif ($this->getType() == 'grp') {
         $udf = ilUserDefinedFields::_getInstance()->getGroupExportableFields();
     }
     if ($udf) {
         foreach ($udf as $field_id => $field) {
             $fields['udf_' . $field_id]['txt'] = $field['field_name'];
             $fields['udf_' . $field_id]['default'] = 0;
         }
     }
     include_once './Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php';
     $cdf = ilCourseDefinedFieldDefinition::_getFields($a_obj_id);
     foreach ($cdf as $def) {
         $fields['odf_' . $def->getId()]['txt'] = $def->getName();
         $fields['odf_' . $def->getId()]['default'] = 0;
     }
     return $fields;
 }
 /**
  * Get all fields of a container
  *
  * @access public
  * @static
  * @param int container obj_id
  * @return array array of ilCourseDefinedFieldDefinitions objects
  */
 public static function _getFields($a_container_id, $a_sort = IL_CDF_SORT_NAME)
 {
     foreach (ilCourseDefinedFieldDefinition::_getFieldIds($a_container_id, $a_sort) as $field_id) {
         $fields[] = new ilCourseDefinedFieldDefinition($a_container_id, $field_id);
     }
     return $fields ? $fields : array();
 }
예제 #15
0
 /**
  * Clone group (no member data)
  *
  * @access public
  * @param int target ref_id
  * @param int copy id
  *
  */
 public function cloneObject($a_target_id, $a_copy_id = 0)
 {
     global $ilDB, $ilUser;
     $new_obj = parent::cloneObject($a_target_id, $a_copy_id);
     $new_obj->setGroupType($this->getGroupType());
     $new_obj->initGroupStatus($this->getGroupType() ? $this->getGroupType() : $this->readGroupStatus());
     $this->cloneAutoGeneratedRoles($new_obj);
     $new_obj->setRegistrationType($this->getRegistrationType());
     $new_obj->setInformation($this->getInformation());
     $new_obj->setRegistrationStart($this->getRegistrationStart());
     $new_obj->setRegistrationEnd($this->getRegistrationEnd());
     $new_obj->enableUnlimitedRegistration($this->isRegistrationUnlimited());
     $new_obj->setPassword($this->getPassword());
     $new_obj->enableMembershipLimitation($this->isMembershipLimited());
     $new_obj->setMaxMembers($this->getMaxMembers());
     $new_obj->enableWaitingList($this->isWaitingListEnabled());
     // map
     $new_obj->setLatitude($this->getLatitude());
     $new_obj->setLongitude($this->getLongitude());
     $new_obj->setLocationZoom($this->getLocationZoom());
     $new_obj->setEnableGroupMap($this->getEnableGroupMap());
     $new_obj->enableRegistrationAccessCode($this->isRegistrationAccessCodeEnabled());
     include_once './Services/Membership/classes/class.ilMembershipRegistrationCodeUtils.php';
     $new_obj->setRegistrationAccessCode(ilMembershipRegistrationCodeUtils::generateCode());
     $new_obj->setViewMode($this->getViewMode());
     $new_obj->setMailToMembersType($this->getMailToMembersType());
     $new_obj->update();
     // #13008 - Group Defined Fields
     include_once 'Modules/Course/classes/Export/class.ilCourseDefinedFieldDefinition.php';
     ilCourseDefinedFieldDefinition::_clone($this->getId(), $new_obj->getId());
     global $ilLog;
     $ilLog->write(__METHOD__ . ': Starting add user');
     // Assign user as admin
     include_once './Modules/Group/classes/class.ilGroupParticipants.php';
     $part = ilGroupParticipants::_getInstanceByObjId($new_obj->getId());
     $part->add($ilUser->getId(), IL_GRP_ADMIN);
     $part->updateNotification($ilUser->getId(), 1);
     // Copy learning progress settings
     include_once 'Services/Tracking/classes/class.ilLPObjSettings.php';
     $obj_settings = new ilLPObjSettings($this->getId());
     $obj_settings->cloneSettings($new_obj->getId());
     unset($obj_settings);
     // clone icons
     $new_obj->saveIcons($this->getBigIconPath(), $this->getSmallIconPath(), $this->getTinyIconPath());
     return $new_obj;
 }