1
0
mirror of https://github.com/Kovah/LinkAce.git synced 2025-02-24 19:22:35 +01:00
LinkAce/app/Helper/Sharing.php
2019-01-11 19:14:37 +01:00

83 lines
2.2 KiB
PHP

<?php
namespace App\Helper;
use App\Models\Link;
/**
* Class Sharing
*
* @package App\Helper
*/
class Sharing
{
public static $link_classes = 'share-link btn btn-xs btn-outline-secondary';
public static $placeholders = [
'#URL#',
'#E-URL#',
'#SUBJECT#',
'#E-SUBJECT#',
'#SHARETEXT#',
'#E-SHARETEXT#',
];
/**
* @param string $service
* @param Link $link
* @return string
*/
public static function getShareLink(string $service, Link $link): string
{
$service_details = config('sharing.services.' . $service);
$service_name = trans('sharing.service.' . $service);
$share_action = $service_details['action'];
$link_data = self::generateLinkData($link);
$share_action = str_replace(self::$placeholders, $link_data, $share_action);
$share_link = '<a class="' . self::$link_classes . '"';
$share_link .= ' href="' . $share_action . '"';
$share_link .= ' title="' . trans('sharing.share', ['service' => $service_name]) . '">';
$share_link .= '<i class="fa-fw ' . $service_details['icon'] . '"></i>';
$share_link .= '</a>';
return $share_link;
}
/**
* Prepare all needed raw or encoded values for the share link
*
* @param Link $link
* @return array
*/
protected static function generateLinkData(Link $link): array
{
$subject = $link->title ?: trans(config('sharing.defaults.subject'));
$sharetext = trans(config('sharing.defaults.sharetext'));
$sharetext = str_replace('#URL#', $link->url, $sharetext);
return [
$link->url, // URL
self::encode($link->url), // endoced URL
$subject, // subject
self::encode($subject), // encoded subject
$sharetext, // sharetext
self::encode($sharetext), // encoded sharetext
];
}
/**
* Encode a string with the basic rawurlencode function
* "Hello this is text!" becomes Hello%20this%20is%20text%21%
*
* @param $string
* @return string
*/
protected static function encode($string)
{
return rawurlencode($string);
}
}