public static function RocketChatGroupHelper::rebuildRocketchatState in Rocket.Chat 8.2
1 call to RocketChatGroupHelper::rebuildRocketchatState()
- RocketChatSettingsForm::groupsSubmitForm in src/Form/RocketChatSettingsForm.php
- Alternative submit handler for Button Precces that do not safe.
File
- src/Form/RocketChatGroupHelper.php, line 23
Class
- RocketChatGroupHelper
Namespace
Drupal\rocket_chat\Form
Code
public static function rebuildRocketchatState(array &$form, FormStateInterface $form_state = NULL) {
$rcState = new Drupal8State(Drupal::service('state'));
$apiConfig = new Drupal8Config(Drupal::configFactory(), Drupal::moduleHandler(), Drupal::state(), Drupal::messenger());
$apiClient = new ApiClient($apiConfig);
$Channels = new Channels($rcState, $apiClient);
$Channels
->refreshCache(TRUE);
$Groups = new Groups($rcState, $apiClient);
$Groups
->refreshCache(TRUE);
$Users = new Users($rcState, $apiClient);
$Users
->refreshCache(TRUE);
if ($apiConfig
->isReady()) {
$entityfieldManager = Drupal::service('entity_field.manager');
$fieldMapping = $entityfieldManager
->getFieldMapByFieldType('channel');
$groupseq = Drupal::entityQuery("group");
$machineNames = [];
foreach ($fieldMapping['group'] as $machinename => $definition) {
$groupseq
->exists($machinename);
$machineNames[] = $machinename;
}
$groups = Group::loadMultiple($groupseq
->execute());
foreach ($groups as $group) {
$fields = $group
->getFields(FALSE);
$fieldValue = [];
foreach ($machineNames as $machineName) {
foreach ($fields[$machineName]
->getValue() as $channelValues) {
$value = $channelValues['value'];
$fieldValue[] = $value;
}
}
$groupOwner = $group
->getOwner();
$owner = new User($rcState, $groupOwner
->getAccountName(), $groupOwner
->getEmail(), $groupOwner
->getDisplayName());
$groupMembers = $group
->getMembers();
$members = [];
foreach ($groupMembers as $groupMember) {
$groupMemberUser = $groupMember
->getUser();
$member = new User($rcState, $groupMemberUser
->getAccountName(), $groupMemberUser
->getEmail(), $groupMemberUser
->getDisplayName());
$members[] = $member;
try {
$member
->getUserProxy($apiClient);
} catch (Exception $e) {
}
}
$type = $group
->bundle();
$Channels = [];
foreach ($fieldValue as $channelName) {
$Channel = new Channel(NULL, $fieldValue[0]);
$Channels[] = $Channel;
$Channel
->setOwner($owner);
moduleHelper::updateChannelType($type, $Channel);
try {
$Channel
->getChannelProxy($apiClient);
$Channel
->addMembers($apiClient, $members);
} catch (Exception $e) {
}
}
Drupal::messenger()
->addStatus("Group Channel | " . json_encode($fieldValue) . " | Group Type | " . json_encode($type) . " | Members " . count($members));
}
}
else {
Drupal::messenger()
->addError("Rocket Chat connection Failed");
if (!empty($form_state)) {
$form_state
->setErrorByName('url', "Rocket Chat connection Failed, is this correct?");
}
}
}