/**
  * Get settings
  */
 protected function buildData()
 {
     $data = array();
     /** @var $setting srCertificateTypeSetting */
     foreach ($this->type->getSettings() as $setting) {
         $row = array();
         $row['identifier'] = $setting->getIdentifier();
         $row['setting'] = $this->pl->txt("setting_id_" . $setting->getIdentifier());
         $row['editable_in'] = implode(',', $setting->getEditableIn());
         $default_value = $setting->getValue();
         switch ($setting->getIdentifier()) {
             case srCertificateTypeSetting::IDENTIFIER_VALIDITY_TYPE:
                 $default_value = $this->pl->txt("setting_validity_{$default_value}");
                 break;
             case srCertificateTypeSetting::IDENTIFIER_VALIDITY:
                 $validity_type = $this->type->getSettingByIdentifier(srCertificateTypeSetting::IDENTIFIER_VALIDITY_TYPE)->getValue();
                 if ($default_value && $validity_type == srCertificateTypeSetting::VALIDITY_TYPE_DATE_RANGE) {
                     $date_data = json_decode($default_value);
                     $default_value = sprintf($this->pl->txt('validity_date_range'), $date_data->m, $date_data->d);
                 }
                 break;
         }
         $row['default_value'] = $default_value;
         $data[] = $row;
     }
     $this->setData($data);
 }
 /**
  * Download template file
  */
 public function downloadTemplate()
 {
     if (is_file($this->type->getCertificateTemplatesPath(true))) {
         $filename = srCertificateTemplateTypeFactory::getById($this->type->getTemplateTypeId())->getTemplateFilename();
         ilUtil::deliverFile($this->type->getCertificateTemplatesPath(true), $filename);
     }
     $this->editTemplate();
 }
 /**
  * Init form
  */
 protected function initForm()
 {
     $this->setFormAction($this->ctrl->getFormAction($this->parent_gui));
     $title = $this->isNew ? $this->pl->txt('add_new_type') : $this->pl->txt('edit_type');
     $this->setTitle($title);
     $item = new ilTextInputGUI($this->lng->txt('title'), 'title');
     $item->setRequired(true);
     $item->setValue($this->type->getTitle());
     $this->addItem($item);
     $item = new ilTextAreaInputGUI($this->lng->txt('description'), 'description');
     $item->setValue($this->type->getDescription());
     $this->addItem($item);
     $item = new ilMultiSelectInputGUI($this->lng->txt('languages'), 'languages');
     $item->setWidth(self::WIDTH_MULTISELECT_INPUT);
     $langs = $this->lng->getInstalledLanguages();
     $options = array();
     foreach ($langs as $lang_code) {
         $options[$lang_code] = $this->lng->txt("meta_l_{$lang_code}");
     }
     $item->setOptions($options);
     $item->setValue($this->type->getLanguages());
     $item->setRequired(true);
     $this->addItem($item);
     $item = new ilMultiSelectInputGUI($this->lng->txt('roles'), 'roles');
     $item->setWidth(self::WIDTH_MULTISELECT_INPUT);
     $roles = $this->rbac->getRolesByFilter(ilRbacReview::FILTER_ALL, 0, '');
     $options = array();
     $hide_roles = array(14, 5);
     foreach ($roles as $role) {
         if (strpos($role['title'], 'il_') === 0 || in_array($role['obj_id'], $hide_roles)) {
             // Don't show auto-generated roles. If this takes to much performance, write query...
             continue;
         }
         $options[$role['obj_id']] = $role['title'];
     }
     $item->setOptions($options);
     $item->setValue($this->type->getRoles());
     $item->setInfo($this->pl->txt('roles_info'));
     $this->addItem($item);
     $item = new ilMultiSelectInputGUI($this->pl->txt('available_objects'), 'available_objects');
     $item->setWidth(self::WIDTH_MULTISELECT_INPUT);
     $options = array();
     foreach (srCertificateType::getAllAvailableObjectTypes() as $type) {
         $options[$type] = $type;
     }
     $item->setOptions($options);
     $item->setValue($this->type->getAvailableObjects());
     $item->setRequired(true);
     $item->setInfo($this->pl->txt('available_objects_info'));
     $this->addItem($item);
     $this->addCommandButton('saveType', $this->lng->txt('save'));
 }
 /**
  * Get settings
  */
 protected function buildData()
 {
     $data = array();
     /** @var $signature srCertificateSignature */
     foreach ($this->type->getSignatures() as $signature) {
         $row = array();
         $row['id'] = $signature->getId();
         $row['last_name'] = $signature->getLastName();
         $row['first_name'] = $signature->getFirstName();
         $data[] = $row;
     }
     $this->setData($data);
 }
 /**
  * Init form
  */
 protected function initForm()
 {
     $this->setFormAction($this->ctrl->getFormAction($this->parent_gui));
     $this->setTitle($this->pl->txt('edit_type_template'));
     $types_available = array();
     $types = array(srCertificateTemplateTypeFactory::getById(srCertificateTemplateType::TEMPLATE_TYPE_HTML), srCertificateTemplateTypeFactory::getById(srCertificateTemplateType::TEMPLATE_TYPE_JASPER));
     /** @var $type srCertificateTemplateType */
     foreach ($types as $type) {
         if ($type->isAvailable()) {
             $types_available[$type->getId()] = $type->getTitle();
         }
     }
     if (!count($types_available)) {
         ilUtil::sendInfo($this->pl->txt('msg_no_template_types'));
     }
     $item = new ilSelectInputGUI($this->pl->txt('template_type_id'), 'template_type_id');
     $item->setOptions($types_available);
     $item->setRequired(true);
     $item->setValue($this->type->getTemplateTypeId());
     $this->addItem($item);
     $item = new ilFileInputGUI($this->pl->txt('template_file'), 'template_file');
     $template_file = $this->type->getCertificateTemplatesPath(true);
     if (is_file($template_file)) {
         $item->setValue($template_file);
     }
     $item->setFilename($template_file);
     $item->setInfo($this->pl->txt('template_file_info'));
     $item->setRequired(!is_file($template_file));
     $this->addItem($item);
     $assets = $this->type->getAssets();
     if (count($assets)) {
         $item = new ilMultiSelectInputGUI($this->pl->txt('assets'), 'remove_assets');
         $options = array();
         foreach ($assets as $asset) {
             $options[$asset] = $asset;
         }
         $item->setOptions($options);
         $item->setInfo($this->pl->txt('assets_info'));
         $this->addItem($item);
     }
     $item = new ilFileWizardInputGUI($this->pl->txt('add_assets'), 'add_assets');
     $item->setFilenames(array(0 => ''));
     $this->addItem($item);
     $this->addCommandButton('downloadDefaultTemplate', $this->pl->txt('download_default_template'));
     if (is_file($this->type->getCertificateTemplatesPath(true))) {
         $this->addCommandButton('downloadTemplate', $this->pl->txt('download_template'));
     }
     $this->addCommandButton('updateTemplate', $this->lng->txt('save'));
 }
 /**
  * Get settings
  */
 protected function buildData()
 {
     $data = array();
     /** @var $setting srCertificateCustomTypeSetting */
     foreach ($this->type->getCustomSettings() as $setting) {
         $row = array();
         $row['id'] = $setting->getId();
         $row['identifier'] = $setting->getIdentifier();
         $row['editable_in'] = implode(',', $setting->getEditableIn());
         $row['setting_type'] = $this->pl->txt('custom_setting_type_' . $setting->getSettingTypeId());
         $row['default_value'] = $setting->getValue();
         $data[] = $row;
     }
     $this->setData($data);
 }
 public function __construct($a_parent_obj, $a_parent_cmd)
 {
     global $ilCtrl, $ilToolbar;
     $this->setId('cert_type_table');
     parent::__construct($a_parent_obj, $a_parent_cmd);
     $this->pl = ilCertificatePlugin::getInstance();
     $this->ctrl = $ilCtrl;
     $this->toolbar = $ilToolbar;
     $this->setRowTemplate('tpl.type_row.html', $this->pl->getDirectory());
     $this->initColumns();
     $this->addColumn($this->pl->txt('actions'));
     $this->setFormAction($this->ctrl->getFormAction($a_parent_obj));
     $this->toolbar->addButton($this->pl->txt('add_new_type'), $this->ctrl->getLinkTargetByClass('srcertificatetypegui', 'addType'));
     $data = srCertificateType::getArray();
     $this->setData($data);
 }
 /**
  * Get settings
  */
 protected function buildData()
 {
     $data = array();
     /** @var $placeholder srCertificatePlaceholder */
     foreach ($this->type->getPlaceholders() as $placeholder) {
         $row = array();
         $row['id'] = $placeholder->getId();
         $row['identifier'] = $placeholder->getIdentifier();
         $row['max_characters'] = $placeholder->getMaxCharactersValue();
         $row['mandatory'] = (int) $placeholder->getIsMandatory();
         $row['editable_in'] = implode(',', $placeholder->getEditableIn());
         foreach ($this->type->getLanguages() as $lang_code) {
             $row["default_value_{$lang_code}"] = $placeholder->getDefaultValue($lang_code);
             $row["label_{$lang_code}"] = $placeholder->getLabel($lang_code);
         }
         $data[] = $row;
     }
     $this->setData($data);
 }
 /**
  * @param mixed $value
  */
 public function setValue($value)
 {
     // This should be factored out, currently there is one exception where a value needs to be parsed before storing in DB
     if ($value && $this->getIdentifier() == srCertificateTypeSetting::IDENTIFIER_VALIDITY) {
         /** @var srCertificateType $type */
         $type = srCertificateType::find($this->getTypeId());
         $value = self::formatValidityBasedOnType($type->getSettingByIdentifier(self::IDENTIFIER_VALIDITY_TYPE)->getValue(), $value);
     }
     $this->value = $value;
 }
Пример #10
0
srCertificateCustomDefinitionSetting::installDB();
?>
<#10>
    <?php 
if (!$ilDB->tableColumnExists('uihkcertificate_c', 'value')) {
    $ilDB->renameTableColumn('uihkcertificate_c', 'config_value', 'value');
}
if (!$ilDB->tableColumnExists('uihkcertificate_c', 'name')) {
    $ilDB->renameTableColumn('uihkcertificate_c', 'config_key', 'name');
}
?>
<#11>
	<?php 
// We will add one default certificate definition for easier installation.
require_once './Customizing/global/plugins/Services/UIComponent/UserInterfaceHook/Certificate/classes/Definition/class.srCertificateDefinition.php';
$type = new srCertificateType();
$type->setTitle("Default Certificate");
$type->setLanguages(array('en'));
$type->setRoles(array(2));
//2 Is the default administration role.
$type->setAvailableObjects(array('crs'));
$type->setTemplateTypeId(1);
// JasperReport
$type->storeTemplateFileFromServer(ILIAS_ABSOLUTE_PATH . '/Customizing/global/plugins/Services/UIComponent/UserInterfaceHook/Certificate/resources/template.jrxml');
$type->create();
//	$placeholder = new srCertificatePlaceholder();
//	$placeholder->setCertificateType($type);
//	$placeholder->setIdentifier('crs_title');
//	$placeholder->setIsMandatory(true);
//	$placeholder->setEditableIn(array('crs'));
//	$placeholder->setLabel('Course Title', 'en');
 /**
  * Check if a given user is allowed to select a given certificate type to create a new definition for the given ref_id.
  * This method checks the following steps:
  *  1) Is the type restricted to certain object types, e.g. is the object type of the given ref_id valid?
  *  2) Is the type restricted to certain roles, e.g. check if the a user has at least one role
  *
  * @param srCertificateType $type
  * @param $ref_id
  * @param int $user_id If empty, the current user is used
  * @return bool
  */
 public static function isSelectable(srCertificateType $type, $ref_id, $user_id = 0)
 {
     global $ilUser, $rbacreview;
     $user_id = $user_id ? $user_id : $ilUser->getId();
     $pl = ilCertificatePlugin::getInstance();
     $object_type = $pl->isCourseTemplate($ref_id) ? 'crs-tpl' : ilObject::_lookupType($ref_id, true);
     if (!in_array($object_type, $type->getAvailableObjects())) {
         return false;
     }
     // Access restricted by roles. Check if current user has a role to choose the type
     if (count($type->getRoles()) && !$rbacreview->isAssignedToAtLeastOneGivenRole($user_id, $type->getRoles())) {
         return false;
     }
     return true;
 }
 /**
  * @return \srCertificateType
  */
 public function getType()
 {
     return srCertificateType::find($this->getTypeId());
 }
 /**
  * Add filter items
  *
  */
 public function initFilter()
 {
     if ($this->isColumnSelected('id')) {
         $this->addFilterItemWithValue(new ilTextInputGUI($this->pl->txt('cert_id'), 'id'));
     }
     if ($this->isColumnSelected('firstname')) {
         $this->addFilterItemWithValue(new ilTextInputGUI($this->pl->txt('firstname'), 'firstname'));
     }
     if ($this->isColumnSelected('lastname')) {
         $this->addFilterItemWithValue(new ilTextInputGUI($this->pl->txt('lastname'), 'lastname'));
     }
     if ($this->isColumnSelected('crs_title')) {
         $this->addFilterItemWithValue(new ilTextInputGUI($this->pl->txt('crs_title'), 'crs_title'));
     }
     if ($this->isColumnSelected('valid_from')) {
         $item = new ilDateTimeInputGUI($this->pl->txt('valid_from'), 'valid_from');
         $item->setMode(ilDateTimeInputGUI::MODE_INPUT);
         $this->addFilterItemWithValue($item);
     }
     if ($this->isColumnSelected('valid_to')) {
         $item = new ilDateTimeInputGUI($this->pl->txt('valid_to'), 'valid_to');
         $item->setMode(ilDateTimeInputGUI::MODE_INPUT);
         $this->addFilterItemWithValue($item);
     }
     if ($this->isColumnSelected('cert_type')) {
         $item = new ilSelectInputGUI($this->pl->txt('cert_type'), 'type_id');
         $options = array('' => '') + srCertificateType::getArray('id', 'title');
         $item->setOptions($options);
         $this->addFilterItemWithValue($item);
     }
     if (!$this->getOption('newest_version_only')) {
         $item = new ilCheckboxInputGUI($this->pl->txt('only_newest_version'), 'active');
         $this->addFilterItemWithValue($item);
     }
 }
 /**
  * Init your form
  *
  */
 protected function initForm()
 {
     $title = $this->setting->getId() ? sprintf($this->pl->txt('edit_setting'), $this->setting->getIdentifier()) : $this->pl->txt('add_new_custom_setting');
     $this->setTitle($title);
     $item = new ilHiddenInputGUI('custom_setting_id');
     $item->setValue($this->setting->getId());
     $this->addItem($item);
     $item = new ilTextInputGUI($this->pl->txt('identifier'), 'identifier');
     $item->setRequired(true);
     $item->setValue($this->setting->getIdentifier());
     $item->setInfo(sprintf($this->pl->txt('identifier_info'), srCertificatePlaceholder::REGEX_VALID_IDENTIFIER));
     $this->addItem($item);
     $item = new ilRadioGroupInputGUI($this->pl->txt('custom_setting_type'), 'setting_type_id');
     $item->setRequired(true);
     $option = new ilRadioOption($this->pl->txt('custom_setting_type_' . srCertificateCustomTypeSetting::SETTING_TYPE_BOOLEAN), srCertificateCustomTypeSetting::SETTING_TYPE_BOOLEAN);
     $item->addOption($option);
     $option = new ilRadioOption($this->pl->txt('custom_setting_type_' . srCertificateCustomTypeSetting::SETTING_TYPE_SELECT), srCertificateCustomTypeSetting::SETTING_TYPE_SELECT);
     $subitem = new ilTextAreaInputGUI($this->pl->txt('custom_setting_type_2_data'), 'data');
     $subitem->setValue($this->setting->getData());
     $subitem->setInfo($this->pl->txt('custom_setting_type_2_data_info'));
     $option->addSubItem($subitem);
     $item->setValue($this->setting->getSettingTypeId());
     $item->addOption($option);
     $this->addItem($item);
     $item = new ilTextInputGUI($this->pl->txt('default_value'), "value");
     $item->setInfo($this->pl->txt('custom_setting_default_value_info'));
     $item->setValue($this->setting->getValue());
     $this->addItem($item);
     $item = new ilMultiSelectInputGUI($this->pl->txt('editable_in'), 'editable_in');
     $options = array();
     foreach (srCertificateType::getAllAvailableObjectTypes() as $type) {
         $options[$type] = $type;
     }
     $item->setOptions($options);
     $item->setValue($this->setting->getEditableIn());
     $this->addItem($item);
     // Update definitions, add settings
     if (!$this->setting->getId()) {
         $item = new ilCheckboxInputGUI($this->pl->txt('update_cert_definitions'), 'update_definitions');
         $item->setInfo($this->pl->txt('custom_setting_update_cert_definitions_info'));
         $this->addItem($item);
     }
     // Label per language
     /** @var srCertificateType $type */
     $type = $this->setting->getId() ? srCertificateType::find($this->setting->getTypeId()) : srCertificateType::find((int) $_GET['type_id']);
     foreach ($type->getLanguages() as $lang_code) {
         $this->addLabelInput($lang_code);
     }
 }
 /**
  * Get dropdown for choosing the certificate type
  *
  * @return ilSelectInputGUI
  */
 protected function getTypeInput()
 {
     $types = srcertificateType::get();
     $options = array();
     $object_type = $this->pl->isCourseTemplate((int) $_GET['ref_id']) ? 'crs-tpl' : ilObject::_lookupType((int) $_GET['ref_id'], true);
     /** @var $type srCertificateType */
     $invalid = array();
     foreach ($types as $type) {
         if (!srCertificateType::isSelectable($type, (int) $_GET['ref_id'])) {
             continue;
         }
         // Skip the type if it contains no valid template file!
         if (!is_file($type->getCertificateTemplatesPath(true))) {
             $invalid[] = $type->getTitle();
             continue;
         }
         $options[$type->getId()] = $type->getTitle();
     }
     if (count($invalid) && $this->isNew) {
         ilUtil::sendInfo(sprintf($this->pl->txt('msg_info_invalid_cert_types'), implode(', ', $invalid)));
     }
     $item = new ilSelectInputGUI($this->pl->txt('setting_id_type'), 'type_id');
     asort($options);
     $item->setOptions($options);
     $info = $this->isNew ? $this->pl->txt('setting_id_type_info_new') : $this->pl->txt('setting_id_type_info_change');
     $item->setInfo($info);
     $item->setValue($this->definition->getTypeId());
     $item->setRequired(true);
     return $item;
 }
 /**
  * Get input GUI depending on identifier
  *
  * @return ilFormPropertyGUI|null
  */
 protected function getInputByIdentifier()
 {
     $name = 'default_value';
     $title = $this->pl->txt('default_value');
     switch ($this->identifier) {
         case srCertificateTypeSetting::IDENTIFIER_DEFAULT_LANG:
             $input = new ilSelectInputGUI($title, $name);
             $options = array();
             foreach ($this->type->getLanguages() as $lang) {
                 $options[$lang] = $this->lng->txt("meta_l_{$lang}");
             }
             $input->setOptions($options);
             $input->setValue($this->setting->getValue());
             break;
         case srCertificateTypeSetting::IDENTIFIER_GENERATION:
             $input = new ilRadioGroupInputGUI($title, $name);
             $option = new ilRadioOption($this->pl->txt('setting_generation_auto'), srCertificateTypeSetting::GENERATION_AUTO);
             $input->addOption($option);
             $option = new ilRadioOption($this->pl->txt('setting_generation_manually'), srCertificateTypeSetting::GENERATION_MANUAL);
             $input->addOption($option);
             $input->setValue($this->setting->getValue());
             break;
         case srCertificateTypeSetting::IDENTIFIER_VALIDITY_TYPE:
             $input = new ilRadioGroupInputGUI($title, $name);
             $option = new ilRadioOption($this->pl->txt('always'), srCertificateTypeSetting::VALIDITY_TYPE_ALWAYS);
             $input->addOption($option);
             $option = new ilRadioOption($this->pl->txt('setting_validity_range'), srCertificateTypeSetting::VALIDITY_TYPE_DATE_RANGE);
             $input->addOption($option);
             $option = new ilRadioOption($this->pl->txt('setting_validity_date'), srCertificateTypeSetting::VALIDITY_TYPE_DATE);
             $input->addOption($option);
             $input->setValue($this->setting->getValue());
             break;
         case srCertificateTypeSetting::IDENTIFIER_VALIDITY:
             $validity_value = $this->setting->getValue();
             switch ($this->type->getSettingByIdentifier(srCertificateTypeSetting::IDENTIFIER_VALIDITY_TYPE)->getValue()) {
                 case srCertificateTypeSetting::VALIDITY_TYPE_DATE_RANGE:
                     $input = new ilDurationInputGUI($title, $name);
                     $input->setShowMinutes(false);
                     $input->setShowHours(false);
                     $input->setShowDays(true);
                     $input->setShowMonths(true);
                     if ($validity_value) {
                         $range_array = json_decode($validity_value, true);
                         $data = array();
                         $data[$input->getPostVar()]['MM'] = $range_array['m'];
                         $data[$input->getPostVar()]['dd'] = $range_array['d'];
                         $input->setValueByArray($data);
                     }
                     break;
                 case srCertificateTypeSetting::VALIDITY_TYPE_DATE:
                     $input = new ilDateTimeInputGUI($title, $name);
                     $input->setMode(ilDateTimeInputGUI::MODE_INPUT);
                     if ($validity_value) {
                         $input->setDate(new ilDateTime($validity_value, IL_CAL_DATE));
                     }
                     break;
                 case srCertificateTypeSetting::VALIDITY_TYPE_ALWAYS:
                     // Makes no sence to configure this further
                     $input = null;
                     break;
                 default:
                     $input = new ilTextInputGUI($title, $name);
             }
             break;
         case srCertificateTypeSetting::IDENTIFIER_DOWNLOADABLE:
         case srCertificateTypeSetting::IDENTIFIER_SCORM_TIMING:
         case srCertificateTypeSetting::IDENTIFIER_NOTIFICATION_USER:
             $input = new ilCheckboxInputGUI($title, $name);
             if ($this->setting->getValue()) {
                 $input->setChecked(true);
             }
             break;
         default:
             $input = new ilTextInputGUI($title, $name);
             $input->setValue($this->setting->getValue());
     }
     return $input;
 }
 /**
  * @return \srCertificateType
  */
 public function getCertificateType()
 {
     if (is_null($this->type)) {
         $this->type = srCertificateType::find($this->getTypeId());
     }
     return $this->type;
 }