⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
dalily.dev-unit.com
/
app
/
Models
/
Traits
/
View File Name :
PostTrait.php
<?php /* * LaraClassifier - Classified Ads Web Application * Copyright (c) BeDigit. All Rights Reserved * * Website: https://laraclassifier.com * Author: Mayeul Akpovi (BeDigit - https://bedigit.com) * * LICENSE * ------- * This software is provided under a license agreement and may only be used or copied * in accordance with its terms, including the inclusion of the above copyright notice. * As this software is sold exclusively on CodeCanyon, * please review the full license details here: https://codecanyon.net/licenses/standard */ namespace App\Models\Traits; use App\Helpers\Common\Date; use App\Models\Post; use Spatie\Feed\FeedItem; trait PostTrait { // ===| ADMIN PANEL METHODS |=== public function getTitleHtml(): string { $out = getPostUrl($this); $out .= '<br>'; $out .= '<small>'; $out .= $this->pictures->count() . ' ' . trans('admin.pictures'); $out .= '</small>'; if (!empty($this->archived_at)) { $out .= '<br>'; $out .= '<span class="badge bg-secondary">'; $out .= trans('admin.Archived'); $out .= '</span>'; } return $out; } public function getPictureHtml(): string { // Get listing URL $url = dmUrl($this->country_code ?? null, urlGen()->postPath($this)); $defaultPictureUrl = thumbParam(config('larapen.media.picture'))->url(); // Get the first picture $style = ' style="width:auto; max-height:90px;"'; $pictureUrl = $this->picture->file_url_small ?? $defaultPictureUrl; $out = '<img src="' . $pictureUrl . '" data-bs-toggle="tooltip" title="' . $this->title . '"' . $style . ' class="img-rounded">'; // Add a link to the listing return '<a href="' . $url . '" target="_blank">' . $out . '</a>'; } public function getUserNameHtml() { $contactName = $this->contact_name ?? '-'; if (!empty($this->user)) { $url = urlGen()->adminUrl('users/' . $this->user->getKey() . '/edit'); $tooltip = ' data-bs-toggle="tooltip" title="' . $this->user->name . '"'; return '<a href="' . $url . '"' . $tooltip . '>' . $contactName . '</a>'; } else { return $contactName; } } public function getCityHtml(): string { $out = $this->getCountryHtml(); $out .= ' - '; if (!empty($this->city)) { $out .= '<a href="' . urlGen()->city($this->city) . '" target="_blank">' . $this->city->name . '</a>'; } else { $out .= $this->city_id ?? 0; } return $out; } public function getReviewedHtml(): string { return ajaxCheckboxDisplay($this->{$this->primaryKey}, $this->getTable(), 'reviewed_at', ($this->reviewed_at ?? null)); } public function getFeaturedHtml(): string { $out = '-'; if (config('plugins.offlinepayment.installed')) { $opTool = '\extras\plugins\offlinepayment\app\Helpers\OpTools'; if (class_exists($opTool)) { $out = $opTool::featuredCheckboxDisplay( $this->{$this->primaryKey}, $this->getTable(), 'featured', ($this->featured ?? null) ); } } return $out; } // ===| OTHER METHODS |=== public static function getFeedItems() { $cacheExpiration = (int)config('settings.optimization.cache_expiration', 86400); $perPage = (int)config('settings.pagination.per_page', 50); $countryCode = (config('plugins.domainmapping.installed')) ? config('country.code') : request()->input('country'); // Cache ID $cacheId = !empty($countryCode) ? $countryCode . '.' : ''; $cacheId .= 'postModel.getFeedItems'; return cache()->remember($cacheId, $cacheExpiration, function () use ($countryCode, $perPage) { $posts = Post::reviewed() ->unarchived() ->when(!empty($countryCode), fn ($query) => $query->where('country_code', '=', $countryCode)) ->take($perPage) ->orderByDesc('id'); return $posts->get(); }); } public function toFeedItem(): FeedItem { $title = $this->title ?? 'Untitled'; $title .= !empty($this->city) ? ' - ' . $this->city->name : ''; $title .= !empty($this->country) ? ', ' . $this->country->name : ''; $summary = multiLinesStringCleaner($this->description ?? 'Description'); $link = urlGen()->post($this, true); return FeedItem::create() ->id($link) ->title($title) ->summary($summary) ->category($this?->category?->name ?? '') ->updated($this->updated_at ?? Date::format(now(Date::getAppTimeZone()), 'datetime')) ->link($link) ->authorName($this->contact_name ?? 'Unknown author'); } }