87 lines
2 KiB
PHP
87 lines
2 KiB
PHP
<?php
|
|
|
|
namespace Shaarli\Formatter;
|
|
|
|
/**
|
|
* Class BookmarkDefaultFormatter
|
|
*
|
|
* Default bookmark formatter.
|
|
* Escape values for HTML display and automatically add link to URL and hashtags.
|
|
*
|
|
* @package Shaarli\Formatter
|
|
*/
|
|
class BookmarkDefaultFormatter extends BookmarkFormatter
|
|
{
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function formatTitle($bookmark)
|
|
{
|
|
return escape($bookmark->getTitle());
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function formatDescription($bookmark)
|
|
{
|
|
$indexUrl = ! empty($this->contextData['index_url']) ? $this->contextData['index_url'] : '';
|
|
return format_description(escape($bookmark->getDescription()), $indexUrl);
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected function formatTagList($bookmark)
|
|
{
|
|
return escape(parent::formatTagList($bookmark));
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function formatTagString($bookmark)
|
|
{
|
|
return implode(' ', $this->formatTagList($bookmark));
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
public function formatUrl($bookmark)
|
|
{
|
|
if ($bookmark->isNote() && !empty($this->contextData['index_url'])) {
|
|
return rtrim($this->contextData['index_url'], '/') . '/' . escape(ltrim($bookmark->getUrl(), '/'));
|
|
}
|
|
|
|
return escape($bookmark->getUrl());
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected function formatRealUrl($bookmark)
|
|
{
|
|
if ($bookmark->isNote()) {
|
|
if (!empty($this->contextData['index_url'])) {
|
|
$prefix = rtrim($this->contextData['index_url'], '/') . '/';
|
|
}
|
|
|
|
if (!empty($this->contextData['base_path'])) {
|
|
$prefix = rtrim($this->contextData['base_path'], '/') . '/';
|
|
}
|
|
|
|
return escape($prefix ?? '') . escape(ltrim($bookmark->getUrl(), '/'));
|
|
}
|
|
|
|
return escape($bookmark->getUrl());
|
|
}
|
|
|
|
/**
|
|
* @inheritdoc
|
|
*/
|
|
protected function formatThumbnail($bookmark)
|
|
{
|
|
return escape($bookmark->getThumbnail());
|
|
}
|
|
}
|