abstract class CourseObjectAccessPluginBase in Course 3.x
Same name and namespace in other branches
- 8.3 src/Plugin/CourseObjectAccessPluginBase.php \Drupal\course\Plugin\CourseObjectAccessPluginBase
- 8.2 src/Plugin/CourseObjectAccessPluginBase.php \Drupal\course\Plugin\CourseObjectAccessPluginBase
Base class for Course object access plugins.
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
- class \Drupal\course\Plugin\CourseObjectAccessPluginBase implements PluginFormInterface, CourseObjectAccessInterface
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of CourseObjectAccessPluginBase
4 files declare their use of CourseObjectAccessPluginBase
- CourseObject.php in src/
Entity/ CourseObject.php - CourseObjectAccessConditional.php in src/
Plugin/ course/ CourseObjectAccess/ CourseObjectAccessConditional.php - CourseObjectAccessGrade.php in src/
Plugin/ course/ CourseObjectAccess/ CourseObjectAccessGrade.php - CourseObjectAccessTiming.php in src/
Plugin/ course/ CourseObjectAccess/ CourseObjectAccessTiming.php
File
- src/
Plugin/ CourseObjectAccessPluginBase.php, line 13
Namespace
Drupal\course\PluginView source
abstract class CourseObjectAccessPluginBase extends PluginBase implements CourseObjectAccessInterface, PluginFormInterface {
private $courseObject;
private $type;
public function setType($type) {
$this->type = $type;
}
/**
* Helper method to get possible objects.
*/
public function getObjectOptions() {
$options = array(
'',
);
foreach ($this
->getCourseObject()
->getCourse()
->getObjects() as $courseObject) {
if ($courseObject
->id() != $this
->getCourseObject()
->id()) {
$options[$courseObject
->id()] = $courseObject
->getTitle();
}
}
return $options;
}
public function setCourseObject($courseObject) {
$this->courseObject = $courseObject;
}
public function getCourseObject() {
return $this->courseObject;
}
public function getOptions() {
$plugins = $this
->getCourseObject()
->getOption('plugins');
if (isset($plugins['access'][$this->pluginId])) {
return $plugins['access'][$this->pluginId];
}
else {
return $this
->optionsDefinition();
}
}
public function getOption($option) {
$options = $this
->getOptions();
if (isset($options[$option])) {
return $options[$option];
}
else {
return NULL;
}
}
public function optionsDefinition() {
return array();
}
/**
* Can the user take the object?
*
* @param type $account
* @return boolean
*/
public function take($account) {
// Block access if conditions evaluate.
$alter = $this
->getOption('alter');
if ($this
->evaluate($account) xor !empty($alter['negate'])) {
if ($alter['access']) {
return FALSE;
}
}
return TRUE;
}
/**
* Can the user see the object in the outline?
*
* @param type $account
* @return boolean
*/
public function see($account) {
return TRUE;
}
/**
* Can the user view the object but not interact?
*
* @param type $account
* @return boolean
*/
public function view($account) {
return TRUE;
}
/**
* Alter a property during display/tracking. Does not affect the stored
* options. This is called in CourseObject::getReadOnlyOptions().
*
* @param array $property
* Array of object options.
*
* @param object $account
* User account to evaluate.
*/
public function alterOptions(&$options, $account) {
$alter = $this
->getOption('alter');
if ($this
->evaluate($account) xor !empty($alter['negate'])) {
// Conditions passed. Apply modifications.
if (isset($alter['required']) && $alter['required'] != -1) {
$options['required'] = $alter['required'];
}
if (isset($alter['visible']) && $alter['visible'] != -1) {
$options['hidden'] = !$alter['visible'];
}
}
}
/**
* Evaluate the access conditions.
*
* @param AccountInterface $account
*
* @return bool
*/
public function evaluate(AccountInterface $account) {
}
public function validateConfigurationForm(array &$form, FormStateInterface $form_state) {
}
public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
}
/**
* Define the form to be used in the object access settings area.
*
* {@inheritdoc}
*/
public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$config = $this
->getOptions();
$form['alter']['#weight'] = 100;
$form['alter']['#type'] = 'fieldset';
$form['alter']['#collapsed'] = FALSE;
$form['alter']['#collapsible'] = FALSE;
$form['alter']['#title'] = t('Modifications');
$form['alter']['#attributes']['class'][] = 'course-object-access-alter';
$form['alter']['negate'] = [
'#title' => t('If the above condition(s) are:'),
'#type' => 'select',
'#options' => [
0 => t('Met'),
1 => t('Not met'),
],
'#default_value' => isset($config['alter']['negate']) ? $config['alter']['negate'] : 1,
];
$form['alter']['access'] = [
'#title' => t('Block access'),
'#description' => t('This will prevent the user from accessing the course object.'),
'#type' => 'checkbox',
'#default_value' => isset($config['alter']['access']) ? $config['alter']['access'] : 0,
];
$form['alter']['required'] = [
'#title' => t('Required'),
'#description' => t('Change the "Required" property.'),
'#type' => 'radios',
'#options' => [
'-1' => t('No change'),
1 => t('Make required'),
0 => t('Make optional'),
],
'#default_value' => isset($config['alter']['required']) ? $config['alter']['required'] : -1,
];
$form['alter']['visible'] = [
'#title' => t('Visibility'),
'#description' => t('Change the "Visible" property.'),
'#type' => 'radios',
'#options' => [
'-1' => t('No change'),
1 => t('Visible'),
0 => t('Hidden'),
],
'#default_value' => isset($config['alter']['visible']) ? $config['alter']['visible'] : -1,
];
return $form;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CourseObjectAccessPluginBase:: |
private | property | ||
CourseObjectAccessPluginBase:: |
private | property | ||
CourseObjectAccessPluginBase:: |
public | function | Alter a property during display/tracking. Does not affect the stored options. This is called in CourseObject::getReadOnlyOptions(). | |
CourseObjectAccessPluginBase:: |
public | function |
Define the form to be used in the object access settings area. Overrides PluginFormInterface:: |
3 |
CourseObjectAccessPluginBase:: |
public | function | Evaluate the access conditions. | 1 |
CourseObjectAccessPluginBase:: |
public | function | ||
CourseObjectAccessPluginBase:: |
public | function | Helper method to get possible objects. | 1 |
CourseObjectAccessPluginBase:: |
public | function | ||
CourseObjectAccessPluginBase:: |
public | function | ||
CourseObjectAccessPluginBase:: |
public | function | 3 | |
CourseObjectAccessPluginBase:: |
public | function | Can the user see the object in the outline? | 2 |
CourseObjectAccessPluginBase:: |
public | function | ||
CourseObjectAccessPluginBase:: |
public | function | ||
CourseObjectAccessPluginBase:: |
public | function |
Form submission handler. Overrides PluginFormInterface:: |
|
CourseObjectAccessPluginBase:: |
public | function | Can the user take the object? | 2 |
CourseObjectAccessPluginBase:: |
public | function |
Form validation handler. Overrides PluginFormInterface:: |
|
CourseObjectAccessPluginBase:: |
public | function | Can the user view the object but not interact? | 2 |
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
protected | property | ||
DependencySerializationTrait:: |
public | function | 2 | |
DependencySerializationTrait:: |
public | function | 2 | |
MessengerTrait:: |
protected | property | The messenger. | 27 |
MessengerTrait:: |
public | function | Gets the messenger. | 27 |
MessengerTrait:: |
public | function | Sets the messenger. | |
PluginBase:: |
protected | property | Configuration information passed into the plugin. | 1 |
PluginBase:: |
protected | property | The plugin implementation definition. | 1 |
PluginBase:: |
protected | property | The plugin_id. | |
PluginBase:: |
constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
PluginBase:: |
public | function |
Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: |
|
PluginBase:: |
public | function |
Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: |
2 |
PluginBase:: |
public | function |
Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: |
|
PluginBase:: |
public | function | Determines if the plugin is configurable. | |
PluginBase:: |
public | function | Constructs a \Drupal\Component\Plugin\PluginBase object. | 98 |
StringTranslationTrait:: |
protected | property | The string translation service. | 4 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |