mirror of
https://code.castopod.org/adaures/castopod
synced 2025-04-23 01:01:20 +00:00

- add "ActivityPub" library to handle server to server federation and basic client to server protocols using activitypub: - add webfinger endpoint to look for actor - add actor definition with inbox / outbox / followers - remote follow an actor - create notes with possible preview cards - interract with favourites, reblogs and replies - block incoming actors and/or domains - broadcast/schedule activities to fediverse followers using a cron task - For castopod, the podcast is the actor: - overwrite the activitypub library for castopod's specific needs - perform basic interactions administrating a podcast to interact with fediverse users: - create notes with episode attachment - favourite and share a note + reply - add specific castopod_namespaces for podcasts and episodes definitions - overwrite CodeIgniter's Route service to include alternate-content option for activitystream requests - update episode publication logic: - remove publication inputs in create / edit episode form - publish / schedule or unpublish an episode after creation - the podcaster publishes a note when publishing an episode - Javascript / Typescript modules: - fix Dropdown.ts to keep dropdown menu in foreground - add Modal.ts for funding links modal - add Toggler.ts to toggle various css states in ui - User Interface: - update tailwindcss to v2 - use castopod's pine and rose colors - update public layout to a 3 column layout - add pages in public for podcast activity, episode list and notes - update episode page to include linked notes - remove previous and next episodes from episode pages - show different public views depending on whether user is authenticated or not - use Kumbh Sans and Montserrat fonts - update CodeIgniter's config files - with CodeIgniter's new requirements, update docker environments are now based on php v7.3 image - move Image entity to Libraries - update composer and npm packages to latest versions closes #69 #65 #85, fixes #51 #91 #92 #88
154 lines
3.6 KiB
PHP
154 lines
3.6 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @copyright 2021 Podlibre
|
|
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL3
|
|
* @link https://castopod.org/
|
|
*/
|
|
|
|
namespace App\Libraries;
|
|
|
|
class Image
|
|
{
|
|
/**
|
|
* @var \Config\Images
|
|
*/
|
|
protected $config;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $original_path;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $original_url;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $thumbnail_path;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $thumbnail_url;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $medium_path;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $medium_url;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $large_path;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $large_url;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $feed_path;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $feed_url;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $id3_path;
|
|
|
|
public function __construct($originalUri, $mimetype)
|
|
{
|
|
helper('media');
|
|
|
|
$originalPath = media_path($originalUri);
|
|
|
|
[
|
|
'filename' => $filename,
|
|
'dirname' => $dirname,
|
|
'extension' => $extension,
|
|
] = pathinfo($originalPath);
|
|
|
|
// load images extensions from config
|
|
$this->config = config('Images');
|
|
|
|
$thumbnailExtension = $this->config->thumbnailExtension;
|
|
$mediumExtension = $this->config->mediumExtension;
|
|
$largeExtension = $this->config->largeExtension;
|
|
$feedExtension = $this->config->feedExtension;
|
|
$id3Extension = $this->config->id3Extension;
|
|
|
|
$thumbnail =
|
|
$dirname . '/' . $filename . $thumbnailExtension . '.' . $extension;
|
|
$medium =
|
|
$dirname . '/' . $filename . $mediumExtension . '.' . $extension;
|
|
$large =
|
|
$dirname . '/' . $filename . $largeExtension . '.' . $extension;
|
|
$feed = $dirname . '/' . $filename . $feedExtension . '.' . $extension;
|
|
$id3 = $dirname . '/' . $filename . $id3Extension . '.' . $extension;
|
|
|
|
$this->original_path = $originalPath;
|
|
$this->original_url = media_url($originalUri);
|
|
$this->thumbnail_path = $thumbnail;
|
|
$this->thumbnail_url = base_url($thumbnail);
|
|
$this->medium_path = $medium;
|
|
$this->medium_url = base_url($medium);
|
|
$this->large_path = $large;
|
|
$this->large_url = base_url($large);
|
|
$this->feed_path = $feed;
|
|
$this->feed_url = base_url($feed);
|
|
$this->id3_path = $id3;
|
|
|
|
$this->mimetype = $mimetype;
|
|
}
|
|
|
|
public function saveSizes()
|
|
{
|
|
$thumbnailSize = $this->config->thumbnailSize;
|
|
$mediumSize = $this->config->mediumSize;
|
|
$largeSize = $this->config->largeSize;
|
|
$feedSize = $this->config->feedSize;
|
|
$id3Size = $this->config->id3Size;
|
|
|
|
$imageService = \Config\Services::image();
|
|
|
|
$imageService
|
|
->withFile($this->original_path)
|
|
->resize($thumbnailSize, $thumbnailSize)
|
|
->save($this->thumbnail_path);
|
|
|
|
$imageService
|
|
->withFile($this->original_path)
|
|
->resize($mediumSize, $mediumSize)
|
|
->save($this->medium_path);
|
|
|
|
$imageService
|
|
->withFile($this->original_path)
|
|
->resize($largeSize, $largeSize)
|
|
->save($this->large_path);
|
|
|
|
$imageService
|
|
->withFile($this->original_path)
|
|
->resize($feedSize, $feedSize)
|
|
->save($this->feed_path);
|
|
|
|
$imageService
|
|
->withFile($this->original_path)
|
|
->resize($id3Size, $id3Size)
|
|
->save($this->id3_path);
|
|
}
|
|
}
|