Skip to content

Commit

Permalink
add craft 4 support
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewmenich committed Mar 13, 2024
1 parent 289125c commit 059ea9c
Show file tree
Hide file tree
Showing 31 changed files with 1,088 additions and 952 deletions.
29 changes: 19 additions & 10 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,26 +1,30 @@
{
"name": "moon/pbs-media-manager-craft-gacraft",
"description": "Media Manager 3 for PBS API",
"version": "3.3.1",
"description": "Media Manager 4 for PBS API",
"version": "4.0.0-beta.1",
"type": "craft-plugin",
"keywords": ["craftcms", "pbs", "media-manager"],
"license": "MIT",
"authors": [
{
"name": "Paper Tiger",
"homepage": "https://papertiger.com"
},
{
"name": "Good Work",
"homepage": "https://simplygoodwork.com"
}
],
"support": {
"email": "info@papertiger.com",
"issues": "https://projects.pbs.org/bitbucket/projects/MOON/repos/pbs-media-manager-craft-plugin/issues",
"source": "https://projects.pbs.org/bitbucket/projects/MOON/repos/pbs-media-manager-craft-plugin/browse",
"docs": "https://projects.pbs.org/bitbucket/projects/MOON/repos/pbs-media-manager-craft-plugin/browse/README.md"
"email": "dev@simplygoodwork.com",
"issues": "https://github.com/pbs/pbs-media-manager-craft-kenburns/issues",
"source": "https://github.com/pbs/pbs-media-manager-craft-kenburns/blob/main/README.md",
"docs": "https://github.com/pbs/pbs-media-manager-craft-kenburns/blob/main/README.md"
},
"require": {
"craftcms/cms": ">=3.1.0",
"craftcms/redactor": ">=2.3.0",
"peppeocchi/php-cron-scheduler": "4.*"
"craftcms/cms": "^4.0.0",
"craftcms/redactor": "^3.0.0",
"craftcms/ckeditor": "^3.0.0"
},
"autoload": {
"psr-4": {
Expand All @@ -30,13 +34,18 @@
"extra": {
"handle": "mediamanager",
"name": "Media Manager",
"documentationUrl": "https://projects.pbs.org/bitbucket/projects/MOON/repos/pbs-media-manager-craft-plugin/browse/README.md",
"documentationUrl": "https://github.com/pbs/pbs-media-manager-craft-plugin/blob/main/README.md",
"class": "papertiger\\mediamanager\\MediaManager"
},
"config": {
"allow-plugins": {
"craftcms/plugin-installer": true,
"yiisoft/yii2-composer": true
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"require-dev": {
"craftcms/rector": "dev-main"
}
}
152 changes: 96 additions & 56 deletions src/MediaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,37 +11,36 @@
namespace papertiger\mediamanager;

use Craft;
use craft\queue\Queue;
use craft\web\Application;
use Exception;
use papertiger\mediamanager\jobs\ShowSync;
use papertiger\mediamanager\variables\MediaManagerVariable;
use yii\base\Event;
use Psr\Log\LogLevel;
use craft\base\Plugin;
use craft\web\UrlManager;
use craft\web\Application;
use craft\services\Plugins;
use craft\events\PluginEvent;
use craft\events\ModelEvent;
use craft\helpers\UrlHelper;
use craft\services\Utilities;
use craft\log\MonologTarget;
use craft\models\FieldGroup;
use craft\events\PluginEvent;
use Monolog\Formatter\LineFormatter;
use craft\events\RegisterUrlRulesEvent;
use craft\events\RegisterComponentTypesEvent;
use craft\web\twig\variables\CraftVariable;

use papertiger\mediamanager\models\SettingsModel;
use papertiger\mediamanager\jobs\ShowSync;
use craft\web\twig\variables\CraftVariable;
use papertiger\mediamanager\helpers\SetupHelper;
use papertiger\mediamanager\models\SettingsModel;
use papertiger\mediamanager\base\ConstantAbstract;
use papertiger\mediamanager\helpers\SettingsHelper;
use papertiger\mediamanager\helpers\DependencyHelper;
use papertiger\mediamanager\behaviors\MediaBehavior;
use papertiger\mediamanager\helpers\DependencyHelper;
use papertiger\mediamanager\services\Api as ApiService;
use papertiger\mediamanager\services\Show as ShowService;
use papertiger\mediamanager\services\ScheduledSyncService;
use papertiger\mediamanager\variables\MediaManagerVariable;
use papertiger\mediamanager\services\OldSettings as OldSettingsService;
use papertiger\mediamanager\helpers\aftersavesettings\FieldLayoutHelper;
use papertiger\mediamanager\helpers\aftersavesettings\OldSettingsHelper;
use papertiger\mediamanager\helpers\aftersavesettings\ApiColumnFieldsHelper;
use papertiger\mediamanager\helpers\aftersavesettings\ShowFieldLayoutHelper;
use papertiger\mediamanager\helpers\aftersavesettings\ShowApiColumnFieldsHelper;
use papertiger\mediamanager\helpers\aftersavesettings\OldSettingsHelper;

/**
* Class MediaManager
Expand All @@ -61,10 +60,10 @@ class MediaManager extends Plugin

// Public Properties
// =========================================================================
public $hasCpSettings = true;
public $hasCpSection = true;
public $schemaVersion = '1.0.1';
public bool $hasCpSettings = true;
public bool $hasCpSection = true;

public string $schemaVersion = '1.0.1';
// Public Methods
// =========================================================================

Expand All @@ -83,42 +82,84 @@ public function init()
$this->registerBehaviors();
$this->registerPluginServices();

$fileTarget = new \craft\log\FileTarget([
'logFile' => '@storage/logs/media-manager.log',
Craft::getLogger()->dispatcher->targets[] = new MonologTarget([
'name' => 'media-manager',
'categories' => ['papertiger\mediamanager\*'],
'enableRotation' => true,
'level' => LogLevel::INFO,
'logContext' => false,
'allowLineBreaks' => false,
'formatter' => new LineFormatter(
format: "%datetime% [%level_name%] from %extra.yii_category%: %message%\n",
dateFormat: 'Y-m-d H:i:s',
),
]);
Craft::getLogger()->dispatcher->targets[] = $fileTarget;

// ? ERROR LOG FILE
$errorTarget = new \craft\log\FileTarget([
'logFile' => '@storage/logs/media-manager-errors.log',
Craft::getLogger()->dispatcher->targets[] = new MonologTarget([
'name' => 'media-manager-errors',
'categories' => ['papertiger\mediamanager\*'],
'levels' => ['error'],
'enableRotation' => true,
'level' => LogLevel::ERROR,
'logContext' => true,
'allowLineBreaks' => true,
'formatter' => new LineFormatter(
format: "%datetime% [%level_name%] from %extra.yii_category%: %message%\n",
dateFormat: 'Y-m-d H:i:s',
),
]);
Craft::getLogger()->dispatcher->targets[] = $errorTarget;
}

public function beforeInstall(): bool
public function beforeInstall(): void
{
if( version_compare( Craft::$app->getInfo()->version, '3.0', '<' ) ) {
throw new Exception( 'Media Manager 3 requires Craft CMS 3.0+ in order to run.' );
if( version_compare( Craft::$app->getInfo()->version, '4.0', '<' ) ) {
throw new Exception( 'Media Manager 4 requires Craft CMS 4.0+ in order to run.' );
}
}
public function afterInstall(): void
{
// create Media Manager field group
$fieldgroup = \craft\records\FieldGroup::find()->where(['name' => ConstantAbstract::DEFAULT_FIELD_GROUP])->one();

return true;
if(!$fieldgroup) {
$fieldgroup = new FieldGroup();
$fieldgroup->name = ConstantAbstract::DEFAULT_FIELD_GROUP;
Craft::$app->getFields()->saveGroup($fieldgroup);
}

foreach(ConstantAbstract::API_COLUMN_FIELDS as $field) {
$fieldExists = Craft::$app->getFields()->getFieldByHandle($field[3]);

if(!$fieldExists) {
$newField = Craft::$app->getFields()->createField([
'type' => $field[4],
'name' => $field[2],
'handle' => $field[3],
'groupId' => $fieldgroup->id
]);
}
}

foreach(ConstantAbstract::SHOW_API_COLUMN_FIELDS as $field) {
$fieldExists = Craft::$app->getFields()->getFieldByHandle($field[3]);

if(!$fieldExists) {
$newField = Craft::$app->getFields()->createField([
'type' => $field[4],
'name' => $field[2],
'handle' => $field[3],
'groupId' => $fieldgroup->id
]);
}
}
}

public function afterSaveSettings()
public function afterSaveSettings(): void
{
ApiColumnFieldsHelper::process();
FieldLayoutHelper::process();
ShowApiColumnFieldsHelper::process();
ShowFieldLayoutHelper::process();
OldSettingsHelper::process();
}

public function getSettingsResponse()
public function getSettingsResponse(): mixed
{
// This way we can have more flexibility on displaying settings template
return Craft::$app->controller->renderTemplate( 'mediamanager/settings', SettingsHelper::templateVariables() );
Expand All @@ -139,7 +180,7 @@ public function getCpNavItem(): array
'label' => self::t( 'Synchronize' ),
'url' => 'mediamanager/synchronize'
];

$navigation[ 'subnav' ][ 'scheduler' ] = [
'label' => self::t( 'Scheduler' ),
'url' => 'mediamanager/scheduler'
Expand All @@ -157,11 +198,11 @@ public function getCpNavItem(): array
'label' => self::t( 'Clean Garbage Entries' ),
'url' => 'mediamanager/clean'
];
$navigation['subnav']['stale-media'] = [
'label' => self::t('Manage Stale Media'),
'url' => 'mediamanager/stale-media'
];

$navigation['subnav']['stale-media'] = [
'label' => self::t('Manage Stale Media'),
'url' => 'mediamanager/stale-media'
];

$navigation[ 'subnav' ][ 'settings' ] = [
'label' => self::t( 'Settings' ),
Expand All @@ -188,7 +229,7 @@ function(RegisterUrlRulesEvent $event) {

$event->rules[ 'mediamanager/shows' ] = 'mediamanager/show';
$event->rules[ 'mediamanager/shows/<entryId:\d+>' ] = 'mediamanager/show';

$event->rules[ 'mediamanager/synchronize' ] = 'mediamanager/synchronize';
$event->rules[ 'mediamanager/synchronize/<entryId:\d+>' ] = 'mediamanager/synchronize';
$event->rules[ 'mediamanager/synchronize/all' ] = 'mediamanager/synchronize/all';
Expand All @@ -198,9 +239,9 @@ function(RegisterUrlRulesEvent $event) {
$event->rules[ 'mediamanager/synchronize/synchronize-single' ] = 'mediamanager/synchronize/synchronize-single';
$event->rules[ 'mediamanager/synchronize/synchronize-all' ] = 'mediamanager/synchronize/synchronize-all';
$event->rules[ 'mediamanager/synchronize/synchronize-show-entries' ] = 'mediamanager/synchronize/synchronize-show-entries';
$event->rules[ 'mediamanager/scheduler'] = 'mediamanager/scheduled-sync/index';
$event->rules['mediamanager/scheduler/<scheduledSyncId:\d+>'] = 'mediamanager/scheduled-sync/edit';
$event->rules['mediamanager/scheduler/new'] = 'mediamanager/scheduled-sync/edit';
$event->rules[ 'mediamanager/scheduler'] = 'mediamanager/scheduled-sync/index';
$event->rules['mediamanager/scheduler/<scheduledSyncId:\d+>'] = 'mediamanager/scheduled-sync/edit';
$event->rules['mediamanager/scheduler/new'] = 'mediamanager/scheduled-sync/edit';

$event->rules[ 'mediamanager/clean' ] = 'mediamanager/synchronize/clean';
}
Expand Down Expand Up @@ -231,8 +272,8 @@ function( PluginEvent $event ) {
}
}
);



// Before plugin uninstalled
Event::on(
Expand All @@ -253,30 +294,29 @@ private function registerBehaviors()
CraftVariable::class,
CraftVariable::EVENT_INIT,
function( Event $e ) {

$variable = $e->sender;
$variable->attachBehaviors([
MediaBehavior::class,
]);
$variable->set('mediamanager', MediaManagerVariable::class);
$variable->set('mediamanager', MediaManagerVariable::class);
}
);

Event::on(
Application::class,
Application::EVENT_INIT,
function (Event $event) {
$scheduledSyncService = MediaManager::$plugin->scheduledSync;
$scheduledSyncService = MediaManager::$plugin->scheduledSync;
$pushableSyncs = $scheduledSyncService->getPushableSyncs();

foreach ($pushableSyncs as $pushableSync) {
Craft::$app->getQueue()->push(new ShowSync([
'showId' => $pushableSync->showId,
'regenerateThumbnails' => $pushableSync->regenerateThumbnail,
'regenerateThumbnails' => $pushableSync->regenerateThumbnail,
'scheduledSync' => $pushableSync->id
]));
$pushableSync->processed = 1;

$pushableSync->processed = 1;
$scheduledSyncService->saveScheduledSync($pushableSync);
}
}
Expand All @@ -290,7 +330,7 @@ private function registerPluginServices()
'show' => ShowService::class,
'api' => ApiService::class,
'oldsettings' => OldSettingsService::class,
'scheduledSync' => ScheduledSyncService::class,
'scheduledSync' => ScheduledSyncService::class,
]);
}

Expand Down
Loading

0 comments on commit 059ea9c

Please sign in to comment.