/** * [GROUP_ID]-group@[MAIL_HOST_NAME] (Example: "*****@*****.**") * @param $gid */ public function onPreCreateGroup($gid) { if (!empty($gid)) { $prefix = $this->configurator->get('group_prefix'); $email = $this->encodeUidToEmail($gid . $prefix); $result = $this->mtaConnector->insertVirtualUser($email, 'pass' . strtolower($gid)); if (!$result) { $errorMessage = 'Error adding user data in the MTA database, '; if ($result === false) { $errorMessage .= 'the domain specified in the configuration can not be found'; } else { $errorMessage .= 'possible SQL query error'; } Helper::mailParserLogerError($errorMessage); } else { Helper::mailParserLoger('Added new virtual user: ' . $email); } } }
private function parserFileHandler($files, $userForSharing) { $saveFiles = ['file_fileid' => [], 'shared_with' => []]; if ($this->loginVirtualUser()) { $innerDir = date("Ymd", time()); foreach ($files as $file) { if (!\OC\Files\Filesystem::is_dir('/Talks')) { \OC\Files\Filesystem::mkdir('/Talks'); } if (!\OC\Files\Filesystem::is_dir('/Talks/' . $innerDir)) { \OC\Files\Filesystem::mkdir('/Talks/' . $innerDir); } if (is_file($file['tmpfile'])) { try { chmod($file['tmpfile'], 0755); } catch (\Exception $e) { } $filePathTo = '/Talks/' . $innerDir . '/' . $file['filename']; $fileInfoExist = \OC\Files\Filesystem::getFileInfo($filePathTo, false); if ($fileInfoExist) { $filePathTo = '/Talks/' . $innerDir . '/' . time() . '-' . $file['filename']; } $saved = \OC\Files\Filesystem::file_put_contents($filePathTo, file_get_contents($file['tmpfile'])); if ($saved) { unlink($file['tmpfile']); $saveFilesInfo = \OC\Files\Filesystem::getFileInfo($filePathTo); Helper::mailParserLoger('FILES INFO: ' . json_encode($saveFilesInfo)); $saveFiles['file_fileid'][] = $saveFilesInfo['fileid']; $saveFiles['shared_with'][] = $this->shareFileToUsers($saveFilesInfo, $userForSharing); //todo mails sands } } } } return $saveFiles; }
public function syncVirtualAliasesWithUsers(array $users, array $groups) { $deleteVirtualUsersIds = []; $virtualUsers = $this->mtaConnector->getCurrentVirtualUsers(false); $groupPrefix = $this->configurator->get('group_prefix'); $groupPrefixLength = strlen($groupPrefix); // delete fake user unset($users[array_search($this->configurator->get('collab_user'), $users)]); foreach ($virtualUsers as $virtualUser) { $vUid = explode('@', $virtualUser['email'])[0]; // -group if (strlen($vUid) > $groupPrefixLength && substr($vUid, -$groupPrefixLength) === $groupPrefix) { $gvUid = substr($vUid, 0, -$groupPrefixLength); if (!in_array($gvUid, $groups)) { $deleteVirtualUsersIds[] = $virtualUser['id']; } else { unset($groups[array_search($gvUid, $groups)]); } } else { if (!in_array($vUid, $users)) { $deleteVirtualUsersIds[] = $virtualUser['id']; } else { unset($users[array_search($vUid, $users)]); } } } // Delete virtual_users . var_dump('Delete: ', $deleteVirtualUsersIds); if (!empty($deleteVirtualUsersIds)) { $deleteVirtualUsersIdsStr = join(',', $deleteVirtualUsersIds); $result = $this->mtaConnector->deleteVirtualUserIn($deleteVirtualUsersIdsStr); if ($result) { Helper::mailParserLoger('Deleted virtual user id: ' . $deleteVirtualUsersIdsStr); } } // Add new virtual_users Users . var_dump('Add users:', $users); if (!empty($users)) { foreach ($users as $user) { $this->onPreCreateUser($user, Helper::randomString(8)); } } // Add new virtual_users Groups . var_dump('Add groups:', $groups); if (!empty($groups)) { foreach ($groups as $group) { $this->onPreCreateGroup($group); } } }