Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewmenich committed Mar 13, 2024
2 parents 8e23be2 + a805e6a commit 919f531
Show file tree
Hide file tree
Showing 31 changed files with 2,177 additions and 737 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## 4.0.3 - 2024-03-13

### Added
- Merge KB Media Manager logic into this version as well. Additions primarily include the ability to schedule syncs.

## 4.0.2 - 2024-03-12

### Added
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "moon/pbs-media-manager-craft-plugin-food",
"description": "Media Manager 4 for PBS API",
"version": "4.0.2",
"version": "4.0.3",
"type": "craft-plugin",
"keywords": ["craftcms", "pbs", "media-manager"],
"license": "MIT",
Expand Down
175 changes: 109 additions & 66 deletions src/MediaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,38 +11,46 @@
namespace papertiger\mediamanager;

use Craft;
use craft\log\MonologTarget;
use craft\models\FieldGroup;
use Exception;
use Monolog\Formatter\LineFormatter;
use papertiger\mediamanager\base\ConstantAbstract;
use Psr\Log\LogLevel;
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
* @package papertiger\mediamanager
* @property ApiService $api
* @property ShowService $show
* @property OldSettingsService $oldsettings
* @property ScheduledSyncService $scheduledSync
* @method SettingsModel getSettings()
*/
class MediaManager extends Plugin
{
// Static Properties
Expand All @@ -55,8 +63,7 @@ class MediaManager extends Plugin
public bool $hasCpSettings = true;
public bool $hasCpSection = true;

public string $schemaVersion = '1.0.1';

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

Expand All @@ -75,9 +82,22 @@ public function init()
$this->registerBehaviors();
$this->registerPluginServices();

Craft::getLogger()->dispatcher->targets[] = new MonologTarget([
'name' => 'media-manager',
'categories' => ['papertiger\mediamanager\*'],
'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',
),
]);

// ? ERROR LOG FILE
Craft::getLogger()->dispatcher->targets[] = new MonologTarget([
'name' => 'media-manager-errors',
'categories' => ['plugins\pbs-media-manager-craft-plugin-food\*'],
'categories' => ['papertiger\mediamanager\*'],
'level' => LogLevel::ERROR,
'logContext' => true,
'allowLineBreaks' => true,
Expand All @@ -90,58 +110,52 @@ public function init()

public function beforeInstall(): void
{
if( version_compare( Craft::$app->getInfo()->version, '3.0', '<' ) ) {
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
// create Media Manager field group
$fieldgroup = \craft\records\FieldGroup::find()->where(['name' => ConstantAbstract::DEFAULT_FIELD_GROUP])->one();

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
]);
}

}


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
]);
}


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

}

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

Expand All @@ -167,6 +181,11 @@ public function getCpNavItem(): array
'url' => 'mediamanager/synchronize'
];

$navigation[ 'subnav' ][ 'scheduler' ] = [
'label' => self::t( 'Scheduler' ),
'url' => 'mediamanager/scheduler'
];

if( SettingsHelper::get( 'mediaSection' ) ) {

$navigation[ 'subnav' ][ 'entries' ] = [
Expand All @@ -180,15 +199,15 @@ public function getCpNavItem(): array
'url' => 'mediamanager/clean'
];

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

$navigation[ 'subnav' ][ 'settings' ] = [
'label' => self::t( 'Settings' ),
'url' => UrlHelper::cpUrl( 'settings/plugins/mediamanager' )
];

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

return $navigation;
}
Expand Down Expand Up @@ -220,6 +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/clean' ] = 'mediamanager/synchronize/clean';
}
Expand Down Expand Up @@ -251,6 +273,8 @@ function( PluginEvent $event ) {
}
);



// Before plugin uninstalled
Event::on(
Plugins::class,
Expand All @@ -270,26 +294,45 @@ private function registerBehaviors()
CraftVariable::class,
CraftVariable::EVENT_INIT,
function( Event $e ) {

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

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

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

$pushableSync->processed = 1;
$scheduledSyncService->saveScheduledSync($pushableSync);
}
}
);
}

private function registerPluginServices()
{
// Register service
$this->setComponents([
'show' => ShowService::class,
'api' => ApiService::class,
'oldsettings' => OldSettingsService::class,
'show' => ShowService::class,
'api' => ApiService::class,
'oldsettings' => OldSettingsService::class,
'scheduledSync' => ScheduledSyncService::class,
]);
}




// Protected Methods
Expand Down
Loading

0 comments on commit 919f531

Please sign in to comment.