![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/job-board.corals.io/Corals/modules/Messaging/Contracts/ |
<?php namespace Corals\Modules\Messaging\Contracts; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; interface Discussion { /* ----------------------------------------------------------------- | Relationships | ----------------------------------------------------------------- */ /** * Participations relationship. * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function participations(); /** * Messages relationship. * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function messages(); /** * Get the participable that created the first message. * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function creator(); /* ----------------------------------------------------------------- | Scopes | ----------------------------------------------------------------- */ /** * Scope discussions that the participable is associated with. * * @param \Illuminate\Database\Eloquent\Builder $query * @param \Illuminate\Database\Eloquent\Model $participable * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeForUser(Builder $query, Model $participable); /** * Scope discussions with new messages that the participable is associated with. * * @param \Illuminate\Database\Eloquent\Builder $query * @param \Illuminate\Database\Eloquent\Model $participable * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeForUserWithNewMessages(Builder $query, Model $participable); /** * Scope discussions between given participables. * * @param \Illuminate\Database\Eloquent\Builder $query * @param \Illuminate\Support\Collection|array $participables * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeBetween(Builder $query, $participables); /** * Scope the query by the subject. * * @param \Illuminate\Database\Eloquent\Builder $query * @param string $subject * @param bool $strict * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeSubject(Builder $query, $subject, $strict = false); /* ----------------------------------------------------------------- | Getters & Setters | ----------------------------------------------------------------- */ /** * Get the latest_message attribute. * */ public function getLatestMessageAttribute(); /* ----------------------------------------------------------------- | Main Methods | ----------------------------------------------------------------- */ /** * Returns all of the latest discussions by `updated_at` date. * * @return \Illuminate\Database\Eloquent\Collection */ public static function getLatest(); /** * Returns all discussions by subject. * * @param string $subject * @param bool $strict * * @return \Illuminate\Database\Eloquent\Collection */ public static function getBySubject($subject, $strict = false); /** * Returns an array of participables that are associated with the discussion. * * @return \Illuminate\Database\Eloquent\Collection */ public function getParticipables(); /** * Add a participable to discussion. * * @param \Illuminate\Database\Eloquent\Model $participable * */ public function addParticipant(Model $participable); /** * Add many participables to discussion. * * @param \Illuminate\Support\Collection|array $participables * * @return \Illuminate\Database\Eloquent\Collection */ public function addParticipants($participables); /** * Remove a participable from discussion. * * @param \Illuminate\Database\Eloquent\Model $participable * @param bool $reload * * @return int */ public function removeParticipant(Model $participable, $reload = true); /** * Remove many participables from discussion. * * @param \Illuminate\Support\Collection|array $participables * @param bool $reload * * @return int */ public function removeParticipants($participables, $reload = true); /** * Mark a discussion as read for a participable. * * @param \Illuminate\Database\Eloquent\Model $participable * * @return bool|int */ public function markAsRead(Model $participable); /** * See if the current thread is unread by the participable. * * @param \Illuminate\Database\Eloquent\Model $participable * * @return bool */ public function isUnread(Model $participable); /** * Finds the participation record from a participable model. * * @param \Illuminate\Database\Eloquent\Model $participable * */ public function getParticipationByParticipable(Model $participable); /** * Get the trashed participations. * * @return \Illuminate\Database\Eloquent\Collection */ public function getTrashedParticipations(); /** * Restores all participations within a discussion. * * @param bool $reload * * @return int */ public function restoreAllParticipations($reload = true); /** * Generates a participation information as a string. * * @param \Closure|null $callback * @param string $glue * * @return string */ public function participationsString($callback = null, $glue = ', '); /** * Checks to see if a participable is a current participation of the discussion. * * @param \Illuminate\Database\Eloquent\Model $participable * * @return bool */ public function hasParticipation(Model $participable); /** * Get the unread messages in discussion for a specific participable. * * @param \Illuminate\Database\Eloquent\Model $participable * * @return \Illuminate\Support\Collection */ public function getUnreadMessages(Model $participable); }