excerpt; } public function getMetadataLinks(): array { $links = []; if (! empty($this->vendorDisplayName) && (! empty($this->vendorId) || ! empty($this->vendorEmail))) { $vendor = [ 'prefix' => __('text.by'), 'display' => $this->vendorDisplayName, ]; $vendor['link'] = ! empty($this->vendorId) ? '/plugins/marketplace?'.http_build_query(['vendor_id' => $this->vendorId]) : "mailto:{$this->vendorEmail}"; $links[] = $vendor; } if (! empty($this->rating)) { $links[] = [ 'prefix' => __('text.rating'), 'display' => $this->rating, ]; } return $links; } public function getPrice(): string { if (! empty($this->startingPrice)) { return __('text.starting_at').' '.$this->startingPrice; } return ''; } public function getCalulatedMonthlyPrice(): string { if (! empty($this->calculatedMonthlyPrice)) { return $this->calculatedMonthlyPrice; } return ''; } public function getControlsView(): string { return 'plugins::partials.marketplace.plugincontrols'; } public function getPluginImageData(): string { static $defaultImage; $defaultImage ??= 'data: ' .mime_content_type($imageUrl = APP_ROOT.'/public/dist/images/svg/undraw_search_app_oso2.svg') .';base64,'.base64_encode(file_get_contents($imageUrl)); return ! empty($this->imageUrl) ? $this->imageUrl : $defaultImage; } public function getType(): string { return $this->type = 'marketplace'; } }