diff --git a/app/Controllers/BaseController.php b/app/Controllers/BaseController.php
index fba12dd8..243bbc94 100644
--- a/app/Controllers/BaseController.php
+++ b/app/Controllers/BaseController.php
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace App\Controllers;
use CodeIgniter\Controller;
+use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
@@ -20,6 +21,13 @@ use ViewThemes\Theme;
*/
abstract class BaseController extends Controller
{
+ /**
+ * Instance of the main Request object.
+ *
+ * @var IncomingRequest
+ */
+ protected $request;
+
/**
* Constructor.
*/
diff --git a/app/Controllers/EpisodeAudioController.php b/app/Controllers/EpisodeAudioController.php
index 8efc0811..a069bb83 100644
--- a/app/Controllers/EpisodeAudioController.php
+++ b/app/Controllers/EpisodeAudioController.php
@@ -16,6 +16,7 @@ use App\Models\EpisodeModel;
use App\Models\PodcastModel;
use CodeIgniter\Controller;
use CodeIgniter\Exceptions\PageNotFoundException;
+use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RedirectResponse;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
@@ -27,6 +28,13 @@ use Psr\Log\LoggerInterface;
class EpisodeAudioController extends Controller
{
+ /**
+ * Instance of the main Request object.
+ *
+ * @var IncomingRequest
+ */
+ protected $request;
+
/**
* An array of helpers to be loaded automatically upon class instantiation. These helpers will be available to all
* other controllers that extend Analytics.
diff --git a/app/Controllers/EpisodeCommentController.php b/app/Controllers/EpisodeCommentController.php
index 79d6a324..44486b0a 100644
--- a/app/Controllers/EpisodeCommentController.php
+++ b/app/Controllers/EpisodeCommentController.php
@@ -166,16 +166,24 @@ class EpisodeCommentController extends BaseController
public function attemptLike(): RedirectResponse
{
+ if (! ($interactAsActor = interact_as_actor()) instanceof Actor) {
+ return redirect()->back();
+ }
+
model(LikeModel::class)
- ->toggleLike(interact_as_actor(), $this->comment);
+ ->toggleLike($interactAsActor, $this->comment);
return redirect()->back();
}
public function attemptReply(): RedirectResponse
{
+ if (! ($interactAsActor = interact_as_actor()) instanceof Actor) {
+ return redirect()->back();
+ }
+
model(LikeModel::class)
- ->toggleLike(interact_as_actor(), $this->comment);
+ ->toggleLike($interactAsActor, $this->comment);
return redirect()->back();
}
diff --git a/app/Controllers/FeedController.php b/app/Controllers/FeedController.php
index 335bd89f..fbf742f9 100644
--- a/app/Controllers/FeedController.php
+++ b/app/Controllers/FeedController.php
@@ -10,10 +10,12 @@ declare(strict_types=1);
namespace App\Controllers;
+use App\Entities\Podcast;
use App\Models\EpisodeModel;
use App\Models\PodcastModel;
use CodeIgniter\Controller;
use CodeIgniter\Exceptions\PageNotFoundException;
+use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\ResponseInterface;
use Exception;
use Modules\PremiumPodcasts\Entities\Subscription;
@@ -22,13 +24,20 @@ use Opawg\UserAgentsPhp\UserAgentsRSS;
class FeedController extends Controller
{
+ /**
+ * Instance of the main Request object.
+ *
+ * @var IncomingRequest
+ */
+ protected $request;
+
public function index(string $podcastHandle): ResponseInterface
{
helper(['rss', 'premium_podcasts', 'misc']);
$podcast = (new PodcastModel())->where('handle', $podcastHandle)
->first();
- if (! $podcast) {
+ if (! $podcast instanceof Podcast) {
throw PageNotFoundException::forPageNotFound();
}
diff --git a/app/Controllers/PageController.php b/app/Controllers/PageController.php
index b33bd864..83c03566 100644
--- a/app/Controllers/PageController.php
+++ b/app/Controllers/PageController.php
@@ -24,9 +24,8 @@ class PageController extends BaseController
throw PageNotFoundException::forPageNotFound();
}
- if (
- ($page = (new PageModel())->where('slug', $params[0])->first()) === null
- ) {
+ $page = (new PageModel())->where('slug', $params[0])->first();
+ if (! $page instanceof Page) {
throw PageNotFoundException::forPageNotFound();
}
diff --git a/app/Database/Migrations/2021-05-29-152000_add_categories.php b/app/Database/Migrations/2021-05-29-152000_add_categories.php
index 0895520c..ba547987 100644
--- a/app/Database/Migrations/2021-05-29-152000_add_categories.php
+++ b/app/Database/Migrations/2021-05-29-152000_add_categories.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddCategories extends Migration
+class AddCategories extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-05-30-101000_add_languages.php b/app/Database/Migrations/2021-05-30-101000_add_languages.php
index 0c931b55..c5293f8f 100644
--- a/app/Database/Migrations/2021-05-30-101000_add_languages.php
+++ b/app/Database/Migrations/2021-05-30-101000_add_languages.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddLanguages extends Migration
+class AddLanguages extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-05-30-101500_add_podcasts.php b/app/Database/Migrations/2021-05-30-101500_add_podcasts.php
index 2e3cdc9b..006d7224 100644
--- a/app/Database/Migrations/2021-05-30-101500_add_podcasts.php
+++ b/app/Database/Migrations/2021-05-30-101500_add_podcasts.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddPodcasts extends Migration
+class AddPodcasts extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-06-05-170000_add_episodes.php b/app/Database/Migrations/2021-06-05-170000_add_episodes.php
index 280d1cd5..22641eab 100644
--- a/app/Database/Migrations/2021-06-05-170000_add_episodes.php
+++ b/app/Database/Migrations/2021-06-05-170000_add_episodes.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddEpisodes extends Migration
+class AddEpisodes extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-06-05-190000_add_platforms.php b/app/Database/Migrations/2021-06-05-190000_add_platforms.php
index 6f129136..eaba263b 100644
--- a/app/Database/Migrations/2021-06-05-190000_add_platforms.php
+++ b/app/Database/Migrations/2021-06-05-190000_add_platforms.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddPlatforms extends Migration
+class AddPlatforms extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-06-05-200000_add_podcasts_platforms.php b/app/Database/Migrations/2021-06-05-200000_add_podcasts_platforms.php
index d6e3680e..5f30084e 100644
--- a/app/Database/Migrations/2021-06-05-200000_add_podcasts_platforms.php
+++ b/app/Database/Migrations/2021-06-05-200000_add_podcasts_platforms.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddPodcastsPlatforms extends Migration
+class AddPodcastsPlatforms extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-08-12-150000_add_episode_comments.php b/app/Database/Migrations/2021-08-12-150000_add_episode_comments.php
index c1978c98..4c1869ce 100644
--- a/app/Database/Migrations/2021-08-12-150000_add_episode_comments.php
+++ b/app/Database/Migrations/2021-08-12-150000_add_episode_comments.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddEpisodeComments extends Migration
+class AddEpisodeComments extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-08-12-160000_add_likes.php b/app/Database/Migrations/2021-08-12-160000_add_likes.php
index 264d5e1b..830de1f1 100644
--- a/app/Database/Migrations/2021-08-12-160000_add_likes.php
+++ b/app/Database/Migrations/2021-08-12-160000_add_likes.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddLikes extends Migration
+class AddLikes extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-08-17-150000_add_pages.php b/app/Database/Migrations/2021-08-17-150000_add_pages.php
index f6b5c954..c5881287 100644
--- a/app/Database/Migrations/2021-08-17-150000_add_pages.php
+++ b/app/Database/Migrations/2021-08-17-150000_add_pages.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddPages extends Migration
+class AddPages extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-09-29-150000_add_podcasts_categories.php b/app/Database/Migrations/2021-09-29-150000_add_podcasts_categories.php
index bdfdf06d..c9754fd0 100644
--- a/app/Database/Migrations/2021-09-29-150000_add_podcasts_categories.php
+++ b/app/Database/Migrations/2021-09-29-150000_add_podcasts_categories.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddPodcastsCategories extends Migration
+class AddPodcastsCategories extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-12-09-130000_add_clips.php b/app/Database/Migrations/2021-12-09-130000_add_clips.php
index 1049507f..eb47d1cc 100644
--- a/app/Database/Migrations/2021-12-09-130000_add_clips.php
+++ b/app/Database/Migrations/2021-12-09-130000_add_clips.php
@@ -10,9 +10,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddClips extends Migration
+class AddClips extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-12-25-120000_add_persons.php b/app/Database/Migrations/2021-12-25-120000_add_persons.php
index 06ca6bae..fe72ee1c 100644
--- a/app/Database/Migrations/2021-12-25-120000_add_persons.php
+++ b/app/Database/Migrations/2021-12-25-120000_add_persons.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddPersons extends Migration
+class AddPersons extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-12-25-130000_add_podcasts_persons.php b/app/Database/Migrations/2021-12-25-130000_add_podcasts_persons.php
index 00b567f5..72740a28 100644
--- a/app/Database/Migrations/2021-12-25-130000_add_podcasts_persons.php
+++ b/app/Database/Migrations/2021-12-25-130000_add_podcasts_persons.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddPodcastsPersons extends Migration
+class AddPodcastsPersons extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-12-25-140000_add_episodes_persons.php b/app/Database/Migrations/2021-12-25-140000_add_episodes_persons.php
index 8bf72fd4..6debdb38 100644
--- a/app/Database/Migrations/2021-12-25-140000_add_episodes_persons.php
+++ b/app/Database/Migrations/2021-12-25-140000_add_episodes_persons.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddEpisodesPersons extends Migration
+class AddEpisodesPersons extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2021-12-25-150000_add_credits_view.php b/app/Database/Migrations/2021-12-25-150000_add_credits_view.php
index 62b8415b..bef51fa5 100644
--- a/app/Database/Migrations/2021-12-25-150000_add_credits_view.php
+++ b/app/Database/Migrations/2021-12-25-150000_add_credits_view.php
@@ -10,9 +10,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddCreditsView extends Migration
+class AddCreditsView extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2022-02-23-100000_add_episode_id_to_posts.php b/app/Database/Migrations/2022-02-23-100000_add_episode_id_to_posts.php
index c179780a..c22cb5f8 100644
--- a/app/Database/Migrations/2022-02-23-100000_add_episode_id_to_posts.php
+++ b/app/Database/Migrations/2022-02-23-100000_add_episode_id_to_posts.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddEpisodeIdToPosts extends Migration
+class AddEpisodeIdToPosts extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/2022-03-09-113000_add_created_by_to_posts.php b/app/Database/Migrations/2022-03-09-113000_add_created_by_to_posts.php
index 656df7a9..ccd6de67 100644
--- a/app/Database/Migrations/2022-03-09-113000_add_created_by_to_posts.php
+++ b/app/Database/Migrations/2022-03-09-113000_add_created_by_to_posts.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddCreatedByToPosts extends Migration
+class AddCreatedByToPosts extends BaseMigration
{
public function up(): void
{
diff --git a/app/Database/Migrations/BaseMigration.php b/app/Database/Migrations/BaseMigration.php
new file mode 100644
index 00000000..e3861389
--- /dev/null
+++ b/app/Database/Migrations/BaseMigration.php
@@ -0,0 +1,34 @@
+first();
- if ($podcast !== null) {
- $firstEpisode = (new EpisodeModel())
- ->selectMin('published_at')
- ->first();
+ if (! $podcast instanceof Podcast) {
+ throw new Exception("COULD NOT POPULATE DATABASE:\n\tCreate a podcast with episodes first.\n");
+ }
- for (
- $date = strtotime((string) $firstEpisode->published_at);
- $date < strtotime('now');
- $date = strtotime(date('Y-m-d', $date) . ' +1 day')
- ) {
- $analyticsPodcasts = [];
- $analyticsPodcastsByHour = [];
- $analyticsPodcastsByCountry = [];
- $analyticsPodcastsByEpisode = [];
- $analyticsPodcastsByPlayer = [];
- $analyticsPodcastsByRegion = [];
+ $firstEpisode = (new EpisodeModel())
+ ->selectMin('published_at')
+ ->first();
- $episodes = (new EpisodeModel())
- ->where('podcast_id', $podcast->id)
- ->where('`published_at` <= UTC_TIMESTAMP()', null, false)
- ->findAll();
- foreach ($episodes as $episode) {
- $age = floor(($date - strtotime((string) $episode->published_at)) / 86400);
- $probability1 = floor(exp(3 - $age / 40)) + 1;
+ if (! $firstEpisode instanceof Episode) {
+ throw new Exception("COULD NOT POPULATE DATABASE:\n\tCreate an episode first.");
+ }
- for (
- $lineNumber = 0;
- $lineNumber < rand(1, (int) $probability1);
- ++$lineNumber
- ) {
- $probability2 = floor(exp(6 - $age / 20)) + 10;
+ for (
+ $date = strtotime((string) $firstEpisode->published_at);
+ $date < strtotime('now');
+ $date = strtotime(date('Y-m-d', $date) . ' +1 day')
+ ) {
+ $analyticsPodcasts = [];
+ $analyticsPodcastsByHour = [];
+ $analyticsPodcastsByCountry = [];
+ $analyticsPodcastsByEpisode = [];
+ $analyticsPodcastsByPlayer = [];
+ $analyticsPodcastsByRegion = [];
- $player =
- $jsonUserAgents[
- rand(1, count($jsonUserAgents) - 1)
- ];
- $service =
- $jsonRSSUserAgents[
- rand(1, count($jsonRSSUserAgents) - 1)
- ]['slug'];
- $app = isset($player['app']) ? $player['app'] : '';
- $device = isset($player['device'])
- ? $player['device']
- : '';
- $os = isset($player['os']) ? $player['os'] : '';
- $isBot = isset($player['bot']) ? $player['bot'] : 0;
+ $episodes = (new EpisodeModel())
+ ->where('podcast_id', $podcast->id)
+ ->where('`published_at` <= UTC_TIMESTAMP()', null, false)
+ ->findAll();
+ foreach ($episodes as $episode) {
+ $age = floor(($date - strtotime((string) $episode->published_at)) / 86400);
+ $probability1 = floor(exp(3 - $age / 40)) + 1;
- $fakeIp =
- rand(0, 255) .
- '.' .
- rand(0, 255) .
- '.' .
- rand(0, 255) .
- '.' .
- rand(0, 255);
+ for (
+ $lineNumber = 0;
+ $lineNumber < rand(1, (int) $probability1);
+ ++$lineNumber
+ ) {
+ $probability2 = floor(exp(6 - $age / 20)) + 10;
- $cityReader = new Reader(WRITEPATH . 'uploads/GeoLite2-City/GeoLite2-City.mmdb');
-
- $countryCode = 'N/A';
- $regionCode = 'N/A';
- $latitude = null;
- $longitude = null;
- try {
- $city = $cityReader->city($fakeIp);
-
- $countryCode = $city->country->isoCode === null
- ? 'N/A'
- : $city->country->isoCode;
-
- $regionCode = $city->subdivisions === []
- ? 'N/A'
- : $city->subdivisions[0]->isoCode;
- $latitude = round((float) $city->location->latitude, 3);
- $longitude = round((float) $city->location->longitude, 3);
- } catch (AddressNotFoundException) {
- //Bad luck, bad IP, nothing to do.
- }
-
- $hits = rand(0, (int) $probability2);
-
- $analyticsPodcasts[] = [
- 'podcast_id' => $podcast->id,
- 'date' => date('Y-m-d', $date),
- 'duration' => rand(60, 3600),
- 'bandwidth' => rand(1000000, 10000000),
- 'hits' => $hits,
- 'unique_listeners' => $hits,
- ];
- $analyticsPodcastsByHour[] = [
- 'podcast_id' => $podcast->id,
- 'date' => date('Y-m-d', $date),
- 'hour' => rand(0, 23),
- 'hits' => $hits,
- ];
- $analyticsPodcastsByCountry[] = [
- 'podcast_id' => $podcast->id,
- 'date' => date('Y-m-d', $date),
- 'country_code' => $countryCode,
- 'hits' => $hits,
- ];
- $analyticsPodcastsByEpisode[] = [
- 'podcast_id' => $podcast->id,
- 'date' => date('Y-m-d', $date),
- 'episode_id' => $episode->id,
- 'age' => $age,
- 'hits' => $hits,
- ];
- $analyticsPodcastsByPlayer[] = [
- 'podcast_id' => $podcast->id,
- 'date' => date('Y-m-d', $date),
- 'service' => $service,
- 'app' => $app,
- 'device' => $device,
- 'os' => $os,
- 'is_bot' => $isBot,
- 'hits' => $hits,
- ];
- $analyticsPodcastsByRegion[] = [
- 'podcast_id' => $podcast->id,
- 'date' => date('Y-m-d', $date),
- 'country_code' => $countryCode,
- 'region_code' => $regionCode,
- 'latitude' => $latitude,
- 'longitude' => $longitude,
- 'hits' => $hits,
+ $player =
+ $jsonUserAgents[
+ rand(1, count($jsonUserAgents) - 1)
];
+ $service =
+ $jsonRSSUserAgents[
+ rand(1, count($jsonRSSUserAgents) - 1)
+ ]['slug'];
+ $app = isset($player['app']) ? $player['app'] : '';
+ $device = isset($player['device'])
+ ? $player['device']
+ : '';
+ $os = isset($player['os']) ? $player['os'] : '';
+ $isBot = isset($player['bot']) ? $player['bot'] : 0;
+
+ $fakeIp =
+ rand(0, 255) .
+ '.' .
+ rand(0, 255) .
+ '.' .
+ rand(0, 255) .
+ '.' .
+ rand(0, 255);
+
+ $cityReader = new Reader(WRITEPATH . 'uploads/GeoLite2-City/GeoLite2-City.mmdb');
+
+ $countryCode = 'N/A';
+ $regionCode = 'N/A';
+ $latitude = null;
+ $longitude = null;
+ try {
+ $city = $cityReader->city($fakeIp);
+
+ $countryCode = $city->country->isoCode === null
+ ? 'N/A'
+ : $city->country->isoCode;
+
+ $regionCode = $city->subdivisions === []
+ ? 'N/A'
+ : $city->subdivisions[0]->isoCode;
+ $latitude = round((float) $city->location->latitude, 3);
+ $longitude = round((float) $city->location->longitude, 3);
+ } catch (AddressNotFoundException) {
+ //Bad luck, bad IP, nothing to do.
}
- }
- $this->db
- ->table('analytics_podcasts')
- ->ignore(true)
- ->insertBatch($analyticsPodcasts);
- $this->db
- ->table('analytics_podcasts_by_hour')
- ->ignore(true)
- ->insertBatch($analyticsPodcastsByHour);
- $this->db
- ->table('analytics_podcasts_by_country')
- ->ignore(true)
- ->insertBatch($analyticsPodcastsByCountry);
- $this->db
- ->table('analytics_podcasts_by_episode')
- ->ignore(true)
- ->insertBatch($analyticsPodcastsByEpisode);
- $this->db
- ->table('analytics_podcasts_by_player')
- ->ignore(true)
- ->insertBatch($analyticsPodcastsByPlayer);
- $this->db
- ->table('analytics_podcasts_by_region')
- ->ignore(true)
- ->insertBatch($analyticsPodcastsByRegion);
+ $hits = rand(0, (int) $probability2);
+
+ $analyticsPodcasts[] = [
+ 'podcast_id' => $podcast->id,
+ 'date' => date('Y-m-d', $date),
+ 'duration' => rand(60, 3600),
+ 'bandwidth' => rand(1000000, 10000000),
+ 'hits' => $hits,
+ 'unique_listeners' => $hits,
+ ];
+ $analyticsPodcastsByHour[] = [
+ 'podcast_id' => $podcast->id,
+ 'date' => date('Y-m-d', $date),
+ 'hour' => rand(0, 23),
+ 'hits' => $hits,
+ ];
+ $analyticsPodcastsByCountry[] = [
+ 'podcast_id' => $podcast->id,
+ 'date' => date('Y-m-d', $date),
+ 'country_code' => $countryCode,
+ 'hits' => $hits,
+ ];
+ $analyticsPodcastsByEpisode[] = [
+ 'podcast_id' => $podcast->id,
+ 'date' => date('Y-m-d', $date),
+ 'episode_id' => $episode->id,
+ 'age' => $age,
+ 'hits' => $hits,
+ ];
+ $analyticsPodcastsByPlayer[] = [
+ 'podcast_id' => $podcast->id,
+ 'date' => date('Y-m-d', $date),
+ 'service' => $service,
+ 'app' => $app,
+ 'device' => $device,
+ 'os' => $os,
+ 'is_bot' => $isBot,
+ 'hits' => $hits,
+ ];
+ $analyticsPodcastsByRegion[] = [
+ 'podcast_id' => $podcast->id,
+ 'date' => date('Y-m-d', $date),
+ 'country_code' => $countryCode,
+ 'region_code' => $regionCode,
+ 'latitude' => $latitude,
+ 'longitude' => $longitude,
+ 'hits' => $hits,
+ ];
+ }
}
- } else {
- echo "COULD NOT POPULATE DATABASE:\n\tCreate a podcast with episodes first.\n";
+
+ $this->db
+ ->table('analytics_podcasts')
+ ->ignore(true)
+ ->insertBatch($analyticsPodcasts);
+ $this->db
+ ->table('analytics_podcasts_by_hour')
+ ->ignore(true)
+ ->insertBatch($analyticsPodcastsByHour);
+ $this->db
+ ->table('analytics_podcasts_by_country')
+ ->ignore(true)
+ ->insertBatch($analyticsPodcastsByCountry);
+ $this->db
+ ->table('analytics_podcasts_by_episode')
+ ->ignore(true)
+ ->insertBatch($analyticsPodcastsByEpisode);
+ $this->db
+ ->table('analytics_podcasts_by_player')
+ ->ignore(true)
+ ->insertBatch($analyticsPodcastsByPlayer);
+ $this->db
+ ->table('analytics_podcasts_by_region')
+ ->ignore(true)
+ ->insertBatch($analyticsPodcastsByRegion);
}
}
}
diff --git a/app/Database/Seeds/FakeWebsiteAnalyticsSeeder.php b/app/Database/Seeds/FakeWebsiteAnalyticsSeeder.php
index 7198fea3..0b1bb931 100644
--- a/app/Database/Seeds/FakeWebsiteAnalyticsSeeder.php
+++ b/app/Database/Seeds/FakeWebsiteAnalyticsSeeder.php
@@ -12,10 +12,13 @@ declare(strict_types=1);
namespace App\Database\Seeds;
+use App\Entities\Episode;
+use App\Entities\Podcast;
use App\Models\EpisodeModel;
use App\Models\PodcastModel;
use CodeIgniter\Database\Seeder;
+use Exception;
class FakeWebsiteAnalyticsSeeder extends Seeder
{
@@ -183,86 +186,90 @@ class FakeWebsiteAnalyticsSeeder extends Seeder
{
$podcast = (new PodcastModel())->first();
- if ($podcast) {
- $firstEpisode = (new EpisodeModel())
- ->selectMin('published_at')
- ->first();
+ if (! $podcast instanceof Podcast) {
+ throw new Exception("COULD NOT POPULATE DATABASE:\n\tCreate a podcast with episodes first.\n");
+ }
- for (
- $date = strtotime((string) $firstEpisode->published_at);
- $date < strtotime('now');
- $date = strtotime(date('Y-m-d', $date) . ' +1 day')
- ) {
- $websiteByBrowser = [];
- $websiteByEntryPage = [];
- $websiteByReferer = [];
+ $firstEpisode = (new EpisodeModel())
+ ->selectMin('published_at')
+ ->first();
- $episodes = (new EpisodeModel())
- ->where('podcast_id', $podcast->id)
- ->where('`published_at` <= UTC_TIMESTAMP()', null, false)
- ->findAll();
- foreach ($episodes as $episode) {
- $age = floor(($date - strtotime((string) $episode->published_at)) / 86400);
- $probability1 = (int) floor(exp(3 - $age / 40)) + 1;
+ if (! $firstEpisode instanceof Episode) {
+ throw new Exception("COULD NOT POPULATE DATABASE:\n\tCreate an episode first.");
+ }
- for (
- $lineNumber = 0;
- $lineNumber < rand(1, $probability1);
- ++$lineNumber
- ) {
- $probability2 = (int) floor(exp(6 - $age / 20)) + 10;
+ for (
+ $date = strtotime((string) $firstEpisode->published_at);
+ $date < strtotime('now');
+ $date = strtotime(date('Y-m-d', $date) . ' +1 day')
+ ) {
+ $websiteByBrowser = [];
+ $websiteByEntryPage = [];
+ $websiteByReferer = [];
- $domain =
- $this->domains[rand(0, count($this->domains) - 1)];
- $keyword =
- $this->keywords[
- rand(0, count($this->keywords) - 1)
- ];
- $browser =
- $this->browsers[
- rand(0, count($this->browsers) - 1)
- ];
+ $episodes = (new EpisodeModel())
+ ->where('podcast_id', $podcast->id)
+ ->where('`published_at` <= UTC_TIMESTAMP()', null, false)
+ ->findAll();
+ foreach ($episodes as $episode) {
+ $age = floor(($date - strtotime((string) $episode->published_at)) / 86400);
+ $probability1 = (int) floor(exp(3 - $age / 40)) + 1;
- $hits = rand(0, $probability2);
+ for (
+ $lineNumber = 0;
+ $lineNumber < rand(1, $probability1);
+ ++$lineNumber
+ ) {
+ $probability2 = (int) floor(exp(6 - $age / 20)) + 10;
- $websiteByBrowser[] = [
- 'podcast_id' => $podcast->id,
- 'date' => date('Y-m-d', $date),
- 'browser' => $browser,
- 'hits' => $hits,
+ $domain =
+ $this->domains[rand(0, count($this->domains) - 1)];
+ $keyword =
+ $this->keywords[
+ rand(0, count($this->keywords) - 1)
];
- $websiteByEntryPage[] = [
- 'podcast_id' => $podcast->id,
- 'date' => date('Y-m-d', $date),
- 'entry_page_url' => $episode->link,
- 'hits' => $hits,
+ $browser =
+ $this->browsers[
+ rand(0, count($this->browsers) - 1)
];
- $websiteByReferer[] = [
- 'podcast_id' => $podcast->id,
- 'date' => date('Y-m-d', $date),
- 'referer_url' => 'http://' . $domain . '/?q=' . $keyword,
- 'domain' => $domain,
- 'keywords' => $keyword,
- 'hits' => $hits,
- ];
- }
+
+ $hits = rand(0, $probability2);
+
+ $websiteByBrowser[] = [
+ 'podcast_id' => $podcast->id,
+ 'date' => date('Y-m-d', $date),
+ 'browser' => $browser,
+ 'hits' => $hits,
+ ];
+ $websiteByEntryPage[] = [
+ 'podcast_id' => $podcast->id,
+ 'date' => date('Y-m-d', $date),
+ 'entry_page_url' => $episode->link,
+ 'hits' => $hits,
+ ];
+ $websiteByReferer[] = [
+ 'podcast_id' => $podcast->id,
+ 'date' => date('Y-m-d', $date),
+ 'referer_url' => 'http://' . $domain . '/?q=' . $keyword,
+ 'domain' => $domain,
+ 'keywords' => $keyword,
+ 'hits' => $hits,
+ ];
}
-
- $this->db
- ->table('analytics_website_by_browser')
- ->ignore(true)
- ->insertBatch($websiteByBrowser);
- $this->db
- ->table('analytics_website_by_entry_page')
- ->ignore(true)
- ->insertBatch($websiteByEntryPage);
- $this->db
- ->table('analytics_website_by_referer')
- ->ignore(true)
- ->insertBatch($websiteByReferer);
}
- } else {
- echo "COULD NOT POPULATE DATABASE:\n\tCreate a podcast with episodes first.\n";
+
+ $this->db
+ ->table('analytics_website_by_browser')
+ ->ignore(true)
+ ->insertBatch($websiteByBrowser);
+ $this->db
+ ->table('analytics_website_by_entry_page')
+ ->ignore(true)
+ ->insertBatch($websiteByEntryPage);
+ $this->db
+ ->table('analytics_website_by_referer')
+ ->ignore(true)
+ ->insertBatch($websiteByReferer);
}
}
}
diff --git a/app/Entities/Clip/BaseClip.php b/app/Entities/Clip/BaseClip.php
index 39a546b5..4a2186a3 100644
--- a/app/Entities/Clip/BaseClip.php
+++ b/app/Entities/Clip/BaseClip.php
@@ -119,6 +119,7 @@ class BaseClip extends Entity
public function getUser(): ?User
{
+ /** @var ?User */
return (new UserModel())->find($this->created_by);
}
diff --git a/app/Entities/Credit.php b/app/Entities/Credit.php
index d9c9e955..6c283e8c 100644
--- a/app/Entities/Credit.php
+++ b/app/Entities/Credit.php
@@ -98,6 +98,7 @@ class Credit extends Entity
return '';
}
+ /** @var string */
return lang("PersonsTaxonomy.persons.{$this->person_group}.label");
}
@@ -111,6 +112,7 @@ class Credit extends Entity
return '';
}
+ /** @var string */
return lang("PersonsTaxonomy.persons.{$this->person_group}.roles.{$this->person_role}.label");
}
}
diff --git a/app/Entities/Episode.php b/app/Entities/Episode.php
index 29e2b9aa..3108afcc 100644
--- a/app/Entities/Episode.php
+++ b/app/Entities/Episode.php
@@ -33,6 +33,7 @@ use Modules\Media\Entities\Image;
use Modules\Media\Entities\Transcript;
use Modules\Media\Models\MediaModel;
use RuntimeException;
+use SimpleXMLElement;
/**
* @property int $id
@@ -619,13 +620,19 @@ class Episode extends Entity
}
helper('rss');
- $customRssArray = rss_to_array(
- simplexml_load_string(
- '- ' .
- $customRssString .
- '
',
- ),
- )['elements'][0]['elements'][0];
+
+ $customXML = simplexml_load_string(
+ '- ' .
+ $customRssString .
+ '
',
+ );
+
+ if (! $customXML instanceof SimpleXMLElement) {
+ // TODO: Failed to parse custom xml, should return error?
+ return $this;
+ }
+
+ $customRssArray = rss_to_array($customXML)['elements'][0]['elements'][0];
if (array_key_exists('elements', $customRssArray)) {
$this->attributes['custom_rss'] = json_encode($customRssArray['elements']);
diff --git a/app/Entities/Podcast.php b/app/Entities/Podcast.php
index 7eb98eb3..174e50a7 100644
--- a/app/Entities/Podcast.php
+++ b/app/Entities/Podcast.php
@@ -21,6 +21,7 @@ use CodeIgniter\Files\File;
use CodeIgniter\HTTP\Files\UploadedFile;
use CodeIgniter\I18n\Time;
use CodeIgniter\Shield\Entities\User;
+use Exception;
use League\CommonMark\Environment\Environment;
use League\CommonMark\Extension\Autolink\AutolinkExtension;
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
@@ -260,7 +261,13 @@ class Podcast extends Entity
public function getCover(): Image
{
if (! $this->cover instanceof Image) {
- $this->cover = (new MediaModel('image'))->getMediaById($this->cover_id);
+ $cover = (new MediaModel('image'))->getMediaById($this->cover_id);
+
+ if (! $cover instanceof Image) {
+ throw new Exception('Could not retrieve podcast cover.');
+ }
+
+ $this->cover = $cover;
}
return $this->cover;
diff --git a/app/Helpers/url_helper.php b/app/Helpers/url_helper.php
index feb98031..b5e53c17 100644
--- a/app/Helpers/url_helper.php
+++ b/app/Helpers/url_helper.php
@@ -40,7 +40,9 @@ if (! function_exists('current_domain')) {
*/
function current_domain(): string
{
+ /** @var URI $uri */
$uri = current_url(true);
+
return $uri->getHost() . ($uri->getPort() ? ':' . $uri->getPort() : '');
}
}
diff --git a/app/Models/EpisodeCommentModel.php b/app/Models/EpisodeCommentModel.php
index a2be2dfd..862177c5 100644
--- a/app/Models/EpisodeCommentModel.php
+++ b/app/Models/EpisodeCommentModel.php
@@ -10,6 +10,8 @@ declare(strict_types=1);
namespace App\Models;
+use App\Entities\Actor;
+use App\Entities\Episode;
use App\Entities\EpisodeComment;
use App\Libraries\CommentObject;
use CodeIgniter\Database\BaseBuilder;
@@ -297,7 +299,15 @@ class EpisodeCommentModel extends UuidModel
$episode = model(EpisodeModel::class, false)
->find((int) $data['data']['episode_id']);
- $data['data']['uri'] = url_to('episode-comment', esc($actor->username), $episode->slug, $uuid4->toString());
+ if (! $episode instanceof Episode) {
+ return $data;
+ }
+
+ if (! $actor instanceof Actor) {
+ return $data;
+ }
+
+ $data['data']['uri'] = url_to('episode-comment', $actor->username, $episode->slug, $uuid4->toString());
}
return $data;
diff --git a/app/Models/LikeModel.php b/app/Models/LikeModel.php
index 6aa666be..a2b100aa 100644
--- a/app/Models/LikeModel.php
+++ b/app/Models/LikeModel.php
@@ -15,6 +15,7 @@ use App\Entities\Like;
use Michalsn\Uuid\UuidModel;
use Modules\Fediverse\Activities\LikeActivity;
use Modules\Fediverse\Activities\UndoActivity;
+use Modules\Fediverse\Entities\Activity;
use Modules\Fediverse\Entities\Actor;
use Modules\Fediverse\Models\ActivityModel;
@@ -113,6 +114,11 @@ class LikeModel extends UuidModel
])
->first();
+ if (! $activity instanceof Activity) {
+ // no like activity found, do nothing
+ return;
+ }
+
$likeActivity = new LikeActivity();
$likeActivity
->set('id', url_to('activity', esc($actor->username), $activity->id))
diff --git a/app/Models/PodcastModel.php b/app/Models/PodcastModel.php
index ee2c0b19..5701d631 100644
--- a/app/Models/PodcastModel.php
+++ b/app/Models/PodcastModel.php
@@ -439,12 +439,14 @@ class PodcastModel extends Model
if ($podcast instanceof Podcast) {
$podcastActor = (new ActorModel())->find($podcast->actor_id);
- if ($podcastActor) {
- $podcastActor->avatar_image_url = $podcast->cover->federation_url;
- $podcastActor->avatar_image_mimetype = $podcast->cover->federation_mimetype;
-
- (new ActorModel())->update($podcast->actor_id, $podcastActor);
+ if (! $podcastActor instanceof Actor) {
+ return $data;
}
+
+ $podcastActor->avatar_image_url = $podcast->cover->federation_url;
+ $podcastActor->avatar_image_mimetype = $podcast->cover->federation_mimetype;
+
+ (new ActorModel())->update($podcast->actor_id, $podcastActor);
}
return $data;
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-000000_add_analytics_podcasts.php b/modules/Analytics/Database/Migrations/2017-12-01-000000_add_analytics_podcasts.php
index 5a139714..ab757aa0 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-000000_add_analytics_podcasts.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-000000_add_analytics_podcasts.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsPodcasts extends Migration
+class AddAnalyticsPodcasts extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-010000_add_analytics_podcasts_by_episode.php b/modules/Analytics/Database/Migrations/2017-12-01-010000_add_analytics_podcasts_by_episode.php
index e01d3d12..490b296f 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-010000_add_analytics_podcasts_by_episode.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-010000_add_analytics_podcasts_by_episode.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsPodcastsByEpisode extends Migration
+class AddAnalyticsPodcastsByEpisode extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-020000_add_analytics_podcasts_by_hour.php b/modules/Analytics/Database/Migrations/2017-12-01-020000_add_analytics_podcasts_by_hour.php
index 01908740..73fb643d 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-020000_add_analytics_podcasts_by_hour.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-020000_add_analytics_podcasts_by_hour.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsPodcastsByHour extends Migration
+class AddAnalyticsPodcastsByHour extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-030000_add_analytics_podcasts_by_player.php b/modules/Analytics/Database/Migrations/2017-12-01-030000_add_analytics_podcasts_by_player.php
index 2e77ad5e..6187b755 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-030000_add_analytics_podcasts_by_player.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-030000_add_analytics_podcasts_by_player.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsPodcastsByPlayer extends Migration
+class AddAnalyticsPodcastsByPlayer extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-040000_add_analytics_podcasts_by_country.php b/modules/Analytics/Database/Migrations/2017-12-01-040000_add_analytics_podcasts_by_country.php
index 1bc111d0..33db986e 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-040000_add_analytics_podcasts_by_country.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-040000_add_analytics_podcasts_by_country.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsPodcastsByCountry extends Migration
+class AddAnalyticsPodcastsByCountry extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-050000_add_analytics_podcasts_by_region.php b/modules/Analytics/Database/Migrations/2017-12-01-050000_add_analytics_podcasts_by_region.php
index 4fbcff97..51a12a05 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-050000_add_analytics_podcasts_by_region.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-050000_add_analytics_podcasts_by_region.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsPodcastsByRegion extends Migration
+class AddAnalyticsPodcastsByRegion extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-060000_add_analytics_website_by_browser.php b/modules/Analytics/Database/Migrations/2017-12-01-060000_add_analytics_website_by_browser.php
index 737e9f81..3b47f828 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-060000_add_analytics_website_by_browser.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-060000_add_analytics_website_by_browser.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsWebsiteByBrowser extends Migration
+class AddAnalyticsWebsiteByBrowser extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-070000_add_analytics_website_by_referer.php b/modules/Analytics/Database/Migrations/2017-12-01-070000_add_analytics_website_by_referer.php
index 497fce80..c7d6d40c 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-070000_add_analytics_website_by_referer.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-070000_add_analytics_website_by_referer.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsWebsiteByReferer extends Migration
+class AddAnalyticsWebsiteByReferer extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-080000_add_analytics_website_by_entry_page.php b/modules/Analytics/Database/Migrations/2017-12-01-080000_add_analytics_website_by_entry_page.php
index a38b94fb..9d21b9ce 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-080000_add_analytics_website_by_entry_page.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-080000_add_analytics_website_by_entry_page.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsWebsiteByEntryPage extends Migration
+class AddAnalyticsWebsiteByEntryPage extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-090000_add_analytics_unknown_useragents.php b/modules/Analytics/Database/Migrations/2017-12-01-090000_add_analytics_unknown_useragents.php
index f97aa484..bdff40a7 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-090000_add_analytics_unknown_useragents.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-090000_add_analytics_unknown_useragents.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsUnknownUseragents extends Migration
+class AddAnalyticsUnknownUseragents extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-100000_add_analytics_podcasts_by_subscription.php b/modules/Analytics/Database/Migrations/2017-12-01-100000_add_analytics_podcasts_by_subscription.php
index 50f51b50..9d6e2c7e 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-100000_add_analytics_podcasts_by_subscription.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-100000_add_analytics_podcasts_by_subscription.php
@@ -10,9 +10,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsPodcastsBySubscription extends Migration
+class AddAnalyticsPodcastsBySubscription extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php b/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php
index c87a0193..fafe2d5c 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsPodcastsProcedure extends Migration
+class AddAnalyticsPodcastsProcedure extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_unknown_useragents_procedure.php b/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_unknown_useragents_procedure.php
index 13a3003d..d236318e 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_unknown_useragents_procedure.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_unknown_useragents_procedure.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsUnknownUseragentsProcedure extends Migration
+class AddAnalyticsUnknownUseragentsProcedure extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_website_procedure.php b/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_website_procedure.php
index c0668ad4..452b6b0a 100644
--- a/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_website_procedure.php
+++ b/modules/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_website_procedure.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Analytics\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddAnalyticsWebsiteProcedure extends Migration
+class AddAnalyticsWebsiteProcedure extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Auth/Database/Migrations/2020-12-29-100000_add_is_owner_to_users.php b/modules/Auth/Database/Migrations/2020-12-29-100000_add_is_owner_to_users.php
index 2257990e..0e12311f 100644
--- a/modules/Auth/Database/Migrations/2020-12-29-100000_add_is_owner_to_users.php
+++ b/modules/Auth/Database/Migrations/2020-12-29-100000_add_is_owner_to_users.php
@@ -4,9 +4,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddIsOwnerToUsers extends Migration
+class AddIsOwnerToUsers extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Auth/Helpers/auth_helper.php b/modules/Auth/Helpers/auth_helper.php
index 67cd2df2..f664f687 100644
--- a/modules/Auth/Helpers/auth_helper.php
+++ b/modules/Auth/Helpers/auth_helper.php
@@ -68,15 +68,15 @@ if (! function_exists('interact_as_actor')) {
/**
* Get the actor the user is currently interacting as
*/
- function interact_as_actor(): Actor | false
+ function interact_as_actor(): ?Actor
{
if (! auth()->loggedIn()) {
- return false;
+ return null;
}
$session = session();
if (! $session->has('interact_as_actor_id')) {
- return false;
+ return null;
}
return model(ActorModel::class, false)->getActorById($session->get('interact_as_actor_id'));
diff --git a/modules/Fediverse/Controllers/PostController.php b/modules/Fediverse/Controllers/PostController.php
index 9fcd74ac..6141f402 100644
--- a/modules/Fediverse/Controllers/PostController.php
+++ b/modules/Fediverse/Controllers/PostController.php
@@ -12,6 +12,7 @@ namespace Modules\Fediverse\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\Exceptions\PageNotFoundException;
+use CodeIgniter\HTTP\IncomingRequest;
use CodeIgniter\HTTP\RedirectResponse;
use CodeIgniter\HTTP\Response;
use CodeIgniter\HTTP\ResponseInterface;
@@ -23,6 +24,13 @@ use Modules\Fediverse\Objects\OrderedCollectionPage;
class PostController extends Controller
{
+ /**
+ * Instance of the main Request object.
+ *
+ * @var IncomingRequest
+ */
+ protected $request;
+
/**
* @var string[]
*/
diff --git a/modules/Fediverse/Core/AbstractObject.php b/modules/Fediverse/Core/AbstractObject.php
index 85a837c5..122b1186 100644
--- a/modules/Fediverse/Core/AbstractObject.php
+++ b/modules/Fediverse/Core/AbstractObject.php
@@ -47,8 +47,8 @@ abstract class AbstractObject
});
}
- public function toJSON(): string | bool
+ public function toJSON(): string
{
- return json_encode($this->toArray(), JSON_UNESCAPED_UNICODE);
+ return (string) json_encode($this->toArray(), JSON_UNESCAPED_UNICODE);
}
}
diff --git a/modules/Fediverse/Database/Migrations/2018-01-01-010000_add_actors.php b/modules/Fediverse/Database/Migrations/2018-01-01-010000_add_actors.php
index 1fb33d89..c2fa15d1 100644
--- a/modules/Fediverse/Database/Migrations/2018-01-01-010000_add_actors.php
+++ b/modules/Fediverse/Database/Migrations/2018-01-01-010000_add_actors.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Fediverse\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddActors extends Migration
+class AddActors extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Fediverse/Database/Migrations/2018-01-01-020000_add_posts.php b/modules/Fediverse/Database/Migrations/2018-01-01-020000_add_posts.php
index f741d0e2..1f04ef2a 100644
--- a/modules/Fediverse/Database/Migrations/2018-01-01-020000_add_posts.php
+++ b/modules/Fediverse/Database/Migrations/2018-01-01-020000_add_posts.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Fediverse\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddPosts extends Migration
+class AddPosts extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_activities.php b/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_activities.php
index 84fe7595..2baa67c9 100644
--- a/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_activities.php
+++ b/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_activities.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Fediverse\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddActivities extends Migration
+class AddActivities extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_favourites.php b/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_favourites.php
index bead0fbf..33aaa898 100644
--- a/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_favourites.php
+++ b/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_favourites.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Fediverse\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddFavourites extends Migration
+class AddFavourites extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_follows.php b/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_follows.php
index ee60a55a..9704a7a8 100644
--- a/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_follows.php
+++ b/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_follows.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Fediverse\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddFollowers extends Migration
+class AddFollowers extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_preview_cards.php b/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_preview_cards.php
index 91c1b952..9f143184 100644
--- a/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_preview_cards.php
+++ b/modules/Fediverse/Database/Migrations/2018-01-01-100000_add_preview_cards.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Fediverse\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddPreviewCards extends Migration
+class AddPreviewCards extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Fediverse/Database/Migrations/2018-01-01-110000_add_posts_preview_cards.php b/modules/Fediverse/Database/Migrations/2018-01-01-110000_add_posts_preview_cards.php
index 51c3b2e1..d6719bcc 100644
--- a/modules/Fediverse/Database/Migrations/2018-01-01-110000_add_posts_preview_cards.php
+++ b/modules/Fediverse/Database/Migrations/2018-01-01-110000_add_posts_preview_cards.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Fediverse\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddPostsPreviewCards extends Migration
+class AddPostsPreviewCards extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Fediverse/Database/Migrations/2018-01-01-120000_add_blocked_domains.php b/modules/Fediverse/Database/Migrations/2018-01-01-120000_add_blocked_domains.php
index 9b438815..df4d15b2 100644
--- a/modules/Fediverse/Database/Migrations/2018-01-01-120000_add_blocked_domains.php
+++ b/modules/Fediverse/Database/Migrations/2018-01-01-120000_add_blocked_domains.php
@@ -12,9 +12,9 @@ declare(strict_types=1);
namespace Modules\Fediverse\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddBlockedDomains extends Migration
+class AddBlockedDomains extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Fediverse/Database/Migrations/2018-01-01-130000_add_notifications.php b/modules/Fediverse/Database/Migrations/2018-01-01-130000_add_notifications.php
index bbc355a9..78b0ab24 100644
--- a/modules/Fediverse/Database/Migrations/2018-01-01-130000_add_notifications.php
+++ b/modules/Fediverse/Database/Migrations/2018-01-01-130000_add_notifications.php
@@ -12,9 +12,7 @@ declare(strict_types=1);
namespace App\Database\Migrations;
-use CodeIgniter\Database\Migration;
-
-class AddNotifications extends Migration
+class AddNotifications extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Media/Database/Migrations/2021-05-29-120000_add_media.php b/modules/Media/Database/Migrations/2021-05-29-120000_add_media.php
index c5b24c70..9a0bb26e 100644
--- a/modules/Media/Database/Migrations/2021-05-29-120000_add_media.php
+++ b/modules/Media/Database/Migrations/2021-05-29-120000_add_media.php
@@ -10,9 +10,9 @@ declare(strict_types=1);
namespace Media\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddMedia extends Migration
+class AddMedia extends BaseMigration
{
public function up(): void
{
diff --git a/modules/Media/Database/Migrations/2022-30-12-180000_rename_media_file_path.php b/modules/Media/Database/Migrations/2022-30-12-180000_rename_media_file_path.php
index 7a8cc61c..1cd9c196 100644
--- a/modules/Media/Database/Migrations/2022-30-12-180000_rename_media_file_path.php
+++ b/modules/Media/Database/Migrations/2022-30-12-180000_rename_media_file_path.php
@@ -10,9 +10,9 @@ declare(strict_types=1);
namespace Media\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class RenameMediafileKey extends Migration
+class RenameMediafileKey extends BaseMigration
{
public function up(): void
{
diff --git a/modules/PremiumPodcasts/Database/Migrations/2022-07-07-120000_add_subscriptions.php b/modules/PremiumPodcasts/Database/Migrations/2022-07-07-120000_add_subscriptions.php
index b3b8716a..5f7abaaa 100644
--- a/modules/PremiumPodcasts/Database/Migrations/2022-07-07-120000_add_subscriptions.php
+++ b/modules/PremiumPodcasts/Database/Migrations/2022-07-07-120000_add_subscriptions.php
@@ -10,9 +10,9 @@ declare(strict_types=1);
namespace Modules\PremiumPodcasts\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddSubscriptions extends Migration
+class AddSubscriptions extends BaseMigration
{
public function up(): void
{
diff --git a/modules/WebSub/Database/Migrations/2022-03-07-180000_add_is_published_on_hubs_to_podcasts.php b/modules/WebSub/Database/Migrations/2022-03-07-180000_add_is_published_on_hubs_to_podcasts.php
index fb3d68ca..b58a75a0 100644
--- a/modules/WebSub/Database/Migrations/2022-03-07-180000_add_is_published_on_hubs_to_podcasts.php
+++ b/modules/WebSub/Database/Migrations/2022-03-07-180000_add_is_published_on_hubs_to_podcasts.php
@@ -10,9 +10,9 @@ declare(strict_types=1);
namespace Modules\WebSub\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddIsPublishedOnHubsToPodcasts extends Migration
+class AddIsPublishedOnHubsToPodcasts extends BaseMigration
{
public function up(): void
{
diff --git a/modules/WebSub/Database/Migrations/2022-03-07-181500_add_is_published_on_hubs_to_episodes.php b/modules/WebSub/Database/Migrations/2022-03-07-181500_add_is_published_on_hubs_to_episodes.php
index dfe92a08..67a18ab4 100644
--- a/modules/WebSub/Database/Migrations/2022-03-07-181500_add_is_published_on_hubs_to_episodes.php
+++ b/modules/WebSub/Database/Migrations/2022-03-07-181500_add_is_published_on_hubs_to_episodes.php
@@ -10,9 +10,9 @@ declare(strict_types=1);
namespace Modules\WebSub\Database\Migrations;
-use CodeIgniter\Database\Migration;
+use App\Database\Migrations\BaseMigration;
-class AddIsPublishedOnHubsToEpisodes extends Migration
+class AddIsPublishedOnHubsToEpisodes extends BaseMigration
{
public function up(): void
{
diff --git a/phpstan.neon b/phpstan.neon
index 8b88ce7b..b6877ff9 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -27,7 +27,4 @@ parameters:
- ENVIRONMENT
- SODIUM_LIBRARY_VERSION
ignoreErrors:
- - '#Cannot access property [\$a-z_]+ on ((array\|)?object)#'
- - '#^Call to an undefined method CodeIgniter\\Database\\ConnectionInterface#'
- '#^Access to an undefined property Modules\\Media\\Entities\\Image#'
- - '#^Call to an undefined method CodeIgniter\\HTTP\\RequestInterface#'
diff --git a/tests/database/ExampleDatabaseTest.php b/tests/database/ExampleDatabaseTest.php
index 0108160d..134c4ffd 100644
--- a/tests/database/ExampleDatabaseTest.php
+++ b/tests/database/ExampleDatabaseTest.php
@@ -36,6 +36,11 @@ class ExampleDatabaseTest extends CIUnitTestCase
$this->setPrivateProperty($model, 'tempUseSoftDeletes', true);
$object = $model->first();
+
+ if (! is_object($object)) {
+ return;
+ }
+
$model->delete($object->id);
// The model should no longer find it