public function GroupChannel::preSave in Rocket.Chat 8.2
@inheritDoc
Overrides FieldItemBase::preSave
File
- modules/
rocket_chat_group/ src/ Plugin/ Field/ FieldType/ GroupChannel.php, line 140
Class
- GroupChannel
- Class GroupChannel
Namespace
Drupal\rocket_chat_group\Plugin\Field\FieldTypeCode
public function preSave() {
parent::preSave();
$entity = $this
->getEntity();
if ($entity
->isNew()) {
$isNew = $entity
->isNew();
$logger = Drupal::logger("Rocket Chat Group Channel");
$logger
->info("Channel Created [" . $this
->get('value')
->getValue() . "]");
}
else {
$original = $entity->original;
$fd = $this
->getFieldDefinition();
$newValue = $this
->get('value')
->getValue();
$oldValue = $original
->get($fd
->getName())
->getValue()[0]['value'];
$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);
$channelsList = $channels
->getCache();
$safeChannelName = Channel::toSafeChannelName($oldValue);
$channelList = [];
foreach ($channelsList as $channelList) {
if (strcmp($channelList['name'], $safeChannelName) === 0) {
break;
}
else {
$channelList = [];
}
}
if (empty($channelList)) {
$channels = new Groups($rcState, $apiClient);
$channelsList = $channels
->getCache();
$channelList = [];
foreach ($channelsList as $channelList) {
if (strcmp($channelList['name'], $safeChannelName) === 0) {
break;
}
else {
$channelList = [];
}
}
}
$channelType = 0;
if (isset($channelList['t'])) {
switch ($channelList['t']) {
case "c":
//channel
$channelType = $channelType | Channel::PUBLIC_CHANNEL;
break;
case "p":
//group
$channelType = $channelType | Channel::PRIVATE_CHANNEL;
break;
}
}
if (isset($channelList['ro'])) {
if (!$channelList['ro']) {
$channelType = $channelType | Channel::WRITE;
}
$channelType = $channelType | Channel::READ;
}
if ($channelType > 0) {
$channel = new Channel($channelType, $oldValue);
$cp = $channel
->getChannelProxy($apiClient);
$channel
->changeChannelName($apiClient, $newValue);
//not renameing non existant channel
}
}
}