advpoll.install in Advanced Poll 8
Same filename and directory in other branches
File
advpoll.installView source
<?php
use Drupal\Core\Config\FileStorage;
use Drupal\Core\Database\Database;
/**
* implements hook_uninstall
*/
function advpoll_uninstall() {
// clean up fields we added.
$entity_manager = \Drupal::service('entity_field.manager');
$fields = $entity_manager
->getFieldDefinitions('poll', 'poll');
if (isset($fields['field_poll_type'])) {
$fields['field_poll_type']
->delete();
}
if (isset($fields['field_writein'])) {
$fields['field_writein']
->delete();
}
if (isset($fields['field_writein_multiple'])) {
$fields['field_writein_multiple']
->delete();
}
if (isset($fields['field_number_of_votes'])) {
$fields['field_number_of_votes']
->delete();
}
if (isset($fields['field_start_date'])) {
$fields['field_start_date']
->delete();
}
// Clean up choice fields.
$choiceFields = $entity_manager
->getFieldDefinitions('poll_choice', 'poll_choice');
if (isset($choiceFields['field_writein'])) {
$choiceFields['field_writein']
->delete();
}
}
/**
* implements hook_install
*/
function advpoll_install() {
// remove primary key lock on poll vote table so that other vote types can be
// recorded.
$schema = Database::getConnection()
->schema();
$schema
->dropPrimaryKey('poll_vote');
}
/**
* Add availability of the multiple write-in options.
*/
function advpoll_update_8001() {
$configPath = drupal_get_path('module', 'advpoll') . '/config/install';
$source = new FileStorage($configPath);
$config_manager = Drupal::service('config.manager');
$entityTypeManager = Drupal::entityTypeManager();
$field_storage = $entityTypeManager
->getStorage('field_storage_config');
$field_config = $entityTypeManager
->getStorage('field_config');
// Only try to create the field if it doesn't already exist.
if (!$field_storage
->load('poll.field_writein_multiple')) {
$config_record = $source
->read('field.storage.poll.field_writein_multiple');
$entity_type = $config_manager
->getEntityTypeIdByName('field.storage.poll.field_writein_multiple');
/** @var \Drupal\Core\Config\Entity\ConfigEntityStorageInterface $storage */
$storage = $entityTypeManager
->getStorage($entity_type);
// Create the config entity.
$entity = $storage
->createFromStorageRecord($config_record)
->save();
}
if (!$field_config
->load('poll.poll.field_writein_multiple')) {
$config_record = $source
->read('field.field.poll.poll.field_writein_multiple');
$entity_type = $config_manager
->getEntityTypeIdByName('field.field.poll.poll.field_writein_multiple');
/** @var \Drupal\Core\Config\Entity\ConfigEntityStorageInterface $storage */
$storage = $entityTypeManager
->getStorage($entity_type);
// Create the config entity.
$entity = $storage
->createFromStorageRecord($config_record)
->save();
}
}
Functions
Name | Description |
---|---|
advpoll_install | implements hook_install |
advpoll_uninstall | implements hook_uninstall |
advpoll_update_8001 | Add availability of the multiple write-in options. |