protected function FlagCreateTrait::createFlagFromArray in Flag 8.4
Creates a flag from an array.
Sensible key values pairs will be inserted into the input array if not provided.
Parameters
array $edit: The edit array to pass to Flag::create().
Return value
\Drupal\flag\FlagInterface A new flag entity with the given criteria.
6 calls to FlagCreateTrait::createFlagFromArray()
- FlagCreateTrait::createFlag in tests/
src/ Traits/ FlagCreateTrait.php - Create a basic flag programmatically.
- FlagCreateTrait::createGlobalFlag in tests/
src/ Traits/ FlagCreateTrait.php - Create a global flag programmatically.
- LinkTypeConfirmFormTest::doCreateFlag in tests/
src/ Functional/ LinkTypeConfirmFormTest.php - Create a flag.
- LinkTypeFieldEntryTest::doCreateFlag in tests/
src/ Functional/ LinkTypeFieldEntryTest.php - Create a node type and flag.
- ShowOnEntityFormTest::testEntityForm in tests/
src/ Functional/ ShowOnEntityFormTest.php - Tests if flags appear on the entity form.
File
- tests/
src/ Traits/ FlagCreateTrait.php, line 82
Class
- FlagCreateTrait
- Trait for programmatically creating Flags.
Namespace
Drupal\Tests\flag\TraitsCode
protected function createFlagFromArray(array $edit) {
$default = [
'id' => strtolower($this
->randomMachineName()),
'label' => $this
->randomString(),
'entity_type' => 'node',
'bundles' => array_keys(\Drupal::service('entity_type.bundle.info')
->getBundleInfo('node')),
'flag_short' => $this
->randomHTMLString(),
'unflag_short' => $this
->randomHTMLString(),
'unflag_denied_text' => $this
->randomHTMLString(),
'flag_long' => $this
->randomHTMLString(16),
'unflag_long' => $this
->randomHTMLString(16),
'flag_message' => $this
->randomHTMLString(32),
'unflag_message' => $this
->randomHTMLString(32),
'flag_type' => $this
->getFlagType('node'),
'link_type' => 'reload',
'flagTypeConfig' => [
'show_as_field' => TRUE,
'show_on_form' => FALSE,
'show_contextual_link' => FALSE,
],
'linkTypeConfig' => [],
'global' => FALSE,
];
$link_type = array_key_exists('link_type', $edit) ? $edit['link_type'] : 'reload';
// To keep this up-to-date see flag.schema.yml.
switch ($link_type) {
case 'comment':
$default = array_merge($default, [
'flagTypeConfig' => [
'access_author' => $this
->randomHTMLString(),
],
]);
break;
case 'confirm':
$default = array_merge($default, [
'linkTypeConfig' => [
'flag_confirmation' => $this
->randomHTMLString(),
'unflag_confirmation' => $this
->randomHTMLString(),
],
]);
break;
case 'field_entry':
$default = array_merge($default, [
'linkTypeConfig' => [
'flag_confirmation' => $this
->randomHTMLString(),
'unflag_confirmation' => $this
->randomHTMLString(),
'edit_flagging' => $this
->randomHTMLString(),
],
]);
break;
default:
break;
}
foreach ($default as $key => $value) {
if (empty($edit[$key])) {
$edit[$key] = $value;
}
}
// Create the flag programmatically.
$flag = Flag::create($edit);
// Save the flag.
$flag
->save();
// Make sure that we actually did get a flag entity.
$this
->assertTrue($flag instanceof Flag);
return $flag;
}