Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a83cd9d authored by AVINASH GUSAIN's avatar AVINASH GUSAIN
Browse files

Merge branch 'dev/calendar-loading' into 'ecloud-main'

calendar array object fix and sender fix

See merge request !20
parents 0c3172b5 d1356c0a
Loading
Loading
Loading
Loading
Loading
+35 −18
Original line number Diff line number Diff line
@@ -32,15 +32,13 @@ class InvitationMiddleware extends Middleware
			"meeting_head" => "Tentatively Accepted",
		],
		"accept" => [
			"meeting_title" => "Invitation Tentatively Accepted: %s",
			"meeting_body" =>
				"%s has tentatively accepted your invitation to %s on %s",
			"meeting_title" => "Invitation Accepted: %s",
			"meeting_body" => "%s has accepted your invitation to %s on %s",
			"meeting_head" => "Accepted",
		],
		"decline" => [
			"meeting_title" => "Invitation Tentatively Accepted: %s",
			"meeting_body" =>
				"%s has tentatively accepted your invitation to %s on %s",
			"meeting_title" => "Invitation Declined: %s",
			"meeting_body" => "%s has declined your invitation to %s on %s",
			"meeting_head" => "Declined",
		],
	];
@@ -93,6 +91,15 @@ class InvitationMiddleware extends Middleware
			"meeting_head" => $meetingHead,
		];
	}
	private function extract_emails_from($string)
	{
		$matches = [];
		$found = preg_match("/mailto:(.*)/i", $string, $matches);
		if ($found === 1) {
			return $matches[1];
		}
		return "";
	}
	public function afterController(
		$controller,
		$methodName,
@@ -123,10 +130,9 @@ class InvitationMiddleware extends Middleware
				);
			$stmt = $queryCalendarInvitations->execute();
			$row = $stmt->fetch(\PDO::FETCH_ASSOC);

			$uid = $row["uid"];
			$sender = substr($row["attendee"], 7);
			$recipient = substr($row["organizer"], 7);
			$sender = $this->extract_emails_from($row["attendee"]);
			$recipient = $this->extract_emails_from($row["organizer"]);
			$userdata = $this->iusermanager->getByEmail($recipient);
			if (count($userdata) > 0) {
				$username = $userdata[0]->getUID();
@@ -164,16 +170,26 @@ class InvitationMiddleware extends Middleware
							)
					);
				$stmt2 = $queryCalendarObjects->execute();

				if ($row2 = $stmt2->fetch(\PDO::FETCH_ASSOC)) {
					$vObject = Reader::read($row2["calendardata"]);
					$SUMMARY = $vObject->VEVENT->SUMMARY;
					$datestart = (string) $vObject->VEVENT->DTSTART;
					$attendeeName = empty($vObject->VEVENT->ATTENDEE["CN"])

					foreach ($vObject->VEVENT->ATTENDEE as $attendee1) {
						$attendee = $this->extract_emails_from($attendee1);

						if ($attendee == $sender) {
							$attendeeName = empty($attendee1["CN"])
								? $sender
						: $vObject->VEVENT->ATTENDEE["CN"];
					$organizername = empty($vObject->VEVENT->ORGANIZER["CN"])
								: $attendee1["CN"];
							break;
						}
					}
					$organizerName = empty($vObject->VEVENT->ORGANIZER["CN"])
						? $recipient
						: $vObject->VEVENT->ORGANIZER["CN"];

					$SUMMARY = $vObject->VEVENT->SUMMARY;
					$datestart = (string) $vObject->VEVENT->DTSTART;
					if (str_contains($datestart, "T")) {
						$eventdate = date("F d, Y h:i", strtotime($datestart));
					} else {
@@ -210,13 +226,13 @@ class InvitationMiddleware extends Middleware
					$emailTemplate->addHeading($translations["meeting_head"]);
					$emailTemplate->addBodyText(
						htmlspecialchars($translations["meeting_body"]),
						$mailbodytext
						$translations["meeting_body"]
					);
					$emailTemplate->addFooter();
					try {
						$message = $this->mailer->createMessage();
						$message->setTo([$recipient => $organizername]);
						$message->setReplyTo([$sender => $attendeename]);
						$message->setTo([$recipient => $organizerName]);
						$message->setReplyTo([$sender => $attendeeName]);
						$message->useTemplate($emailTemplate);
						$this->mailer->send($message);
					} catch (\Exception $e) {
@@ -226,6 +242,7 @@ class InvitationMiddleware extends Middleware
				}
			}
		}

		return $response;
	}
}