Acf
2 days ago
Admin
2 days ago
Ajax
2 days ago
ApplyFilter
2 days ago
Asset
2 days ago
Capabilities
2 days ago
Check
2 days ago
Collection
2 days ago
Column
2 days ago
ColumnFactories
2 days ago
ColumnFactory
2 days ago
ColumnIterator
2 days ago
ColumnRepository
2 days ago
ColumnSize
2 days ago
DI
2 days ago
DefaultColumnHandler
2 days ago
Deprecated
2 days ago
Entity
2 days ago
Exception
2 days ago
Expression
2 days ago
Form
2 days ago
Formatter
2 days ago
Helper
2 days ago
Integration
2 days ago
ListScreenRepository
2 days ago
ListTable
2 days ago
Message
2 days ago
Meta
2 days ago
Nonce
2 days ago
Notice
2 days ago
Plugin
2 days ago
Preferences
2 days ago
Promo
2 days ago
Request
2 days ago
RequestHandler
2 days ago
Response
2 days ago
Sanitize
2 days ago
Service
2 days ago
Setting
2 days ago
Settings
2 days ago
Storage
2 days ago
Table
2 days ago
TableIdsFactory
2 days ago
TableScreen
2 days ago
TableScreenFactory
2 days ago
ThirdParty
2 days ago
Type
2 days ago
Value
2 days ago
View
2 days ago
Acf.php
2 days ago
AdminColumns.php
2 days ago
ArrayIterator.php
2 days ago
Capabilities.php
2 days ago
Collection.php
2 days ago
CollectionFormatter.php
2 days ago
Column.php
2 days ago
ColumnCollection.php
2 days ago
ColumnFactoryCollectionFactory.php
2 days ago
ColumnFactoryDefinitionCollection.php
2 days ago
ColumnGroups.php
2 days ago
ColumnIterator.php
2 days ago
ColumnNamesTrait.php
2 days ago
ColumnRepository.php
2 days ago
ColumnTypeRepository.php
2 days ago
Config.php
2 days ago
DateFormats.php
2 days ago
DefaultColumnHandler.php
2 days ago
Expirable.php
2 days ago
Formatter.php
2 days ago
FormatterCollection.php
2 days ago
Helper.php
2 days ago
ListScreen.php
2 days ago
ListScreenCollection.php
2 days ago
ListScreenRepository.php
2 days ago
ListScreenRepositoryWritable.php
2 days ago
ListTable.php
2 days ago
ListTableFactory.php
2 days ago
Loader.php
2 days ago
Message.php
2 days ago
MetaType.php
2 days ago
Middleware.php
2 days ago
OpCacheInvalidateTrait.php
2 days ago
PluginActionLinks.php
2 days ago
PluginActionUpgrade.php
2 days ago
PostType.php
2 days ago
PostTypeRepository.php
2 days ago
Registerable.php
2 days ago
Registry.php
2 days ago
Renderable.php
2 days ago
Request.php
2 days ago
RequestAjaxHandler.php
2 days ago
RequestAjaxHandlers.php
2 days ago
RequestAjaxParser.php
2 days ago
RequestHandler.php
2 days ago
RequestHandlerFactory.php
2 days ago
Screen.php
2 days ago
Services.php
2 days ago
TableIdsFactory.php
2 days ago
TableScreen.php
2 days ago
TableScreenFactory.php
2 days ago
Taxonomy.php
2 days ago
Transient.php
2 days ago
TypedArrayIterator.php
2 days ago
View.php
2 days ago
WooCommerce.php
2 days ago
WpListTableFactory.php
2 days ago
Loader.php
249 lines
| 1 | <?php |
| 2 | |
| 3 | declare(strict_types=1); |
| 4 | |
| 5 | namespace AC; |
| 6 | |
| 7 | use AC; |
| 8 | use AC\Admin\MenuGroupFactory; |
| 9 | use AC\Admin\MenuGroupFactory\DefaultGroups; |
| 10 | use AC\Admin\PageFactory; |
| 11 | use AC\Admin\PageRequestHandler; |
| 12 | use AC\Admin\PageRequestHandlers; |
| 13 | use AC\ListScreenRepository\Storage; |
| 14 | use AC\Plugin\SetupFactory; |
| 15 | use AC\RequestHandler\Ajax; |
| 16 | use AC\Service\View; |
| 17 | use AC\Table\ManageHeading; |
| 18 | use AC\Table\ManageValue\ListScreenServiceFactory; |
| 19 | use AC\Table\SaveHeading; |
| 20 | use AC\Value\Extended\MediaPreview; |
| 21 | use AC\Value\Extended\Posts; |
| 22 | use AC\Value\ExtendedValueRegistry; |
| 23 | |
| 24 | class Loader |
| 25 | { |
| 26 | private bool $is_pro_active; |
| 27 | |
| 28 | public function __construct(AC\DI\Container $container, bool $is_pro_active = false) |
| 29 | { |
| 30 | $this->is_pro_active = $is_pro_active; |
| 31 | |
| 32 | $this->load($container); |
| 33 | } |
| 34 | |
| 35 | protected function load(AC\DI\Container $container): void |
| 36 | { |
| 37 | $this->register_factories($container); |
| 38 | $this->register_page_handlers($container); |
| 39 | $this->register_services($container); |
| 40 | |
| 41 | // Setup Registry for API |
| 42 | Registry::set(Storage::class, static function () use ($container) { |
| 43 | return $container->get(Storage::class); |
| 44 | }); |
| 45 | |
| 46 | $plugin = $container->get(AdminColumns::class); |
| 47 | |
| 48 | /** |
| 49 | * @param AC\DI\Container $container A PSR-11 dependency injection container. |
| 50 | * @param AdminColumns $plugin The plugin instance. |
| 51 | */ |
| 52 | do_action('ac/init', $container, $plugin); |
| 53 | } |
| 54 | |
| 55 | private function register_factories(AC\DI\Container $container): void |
| 56 | { |
| 57 | foreach ($this->get_table_screen_factory_classes() as $class) { |
| 58 | TableScreenFactory\Aggregate::add($container->get($class)); |
| 59 | } |
| 60 | |
| 61 | foreach ($this->get_column_factory_classes() as $class) { |
| 62 | ColumnFactories\Aggregate::add($container->get($class)); |
| 63 | } |
| 64 | |
| 65 | ExtendedValueRegistry::add($container->get(MediaPreview::class)); |
| 66 | ExtendedValueRegistry::add($container->get(Posts::class)); |
| 67 | |
| 68 | MenuGroupFactory\Aggregate::add($container->get(DefaultGroups::class)); |
| 69 | |
| 70 | foreach ($this->get_menu_group_factory_classes() as $class) { |
| 71 | MenuGroupFactory\Aggregate::add(new $class(), 5); |
| 72 | } |
| 73 | TableIdsFactory\Aggregate::add($container->get(TableIdsFactory\BaseFactory::class)); |
| 74 | TableScreen\TableRowsFactory\Aggregate::add(new TableScreen\TableRowsFactory\BaseFactory()); |
| 75 | |
| 76 | foreach ($this->get_manage_value_factory_classes() as $class) { |
| 77 | Service\ManageValue::add( |
| 78 | $container->make(ListScreenServiceFactory::class, ['factory' => $container->get($class)]) |
| 79 | ); |
| 80 | } |
| 81 | |
| 82 | Service\ManageHeadings::add($container->get(ManageHeading\WpListTableFactory::class)); |
| 83 | Service\SaveHeadings::add($container->get(SaveHeading\WpListTableFactory::class)); |
| 84 | } |
| 85 | |
| 86 | private function get_table_screen_factory_classes(): array |
| 87 | { |
| 88 | return [ |
| 89 | TableScreenFactory\CommentFactory::class, |
| 90 | TableScreenFactory\MediaFactory::class, |
| 91 | TableScreenFactory\PostFactory::class, |
| 92 | TableScreenFactory\UserFactory::class, |
| 93 | ]; |
| 94 | } |
| 95 | |
| 96 | private function get_column_factory_classes(): array |
| 97 | { |
| 98 | $classes = [ |
| 99 | ColumnFactories\OriginalFactory::class, |
| 100 | ColumnFactories\PostFactory::class, |
| 101 | ColumnFactories\CommentFactory::class, |
| 102 | ColumnFactories\MediaFactory::class, |
| 103 | ColumnFactories\UserFactory::class, |
| 104 | ]; |
| 105 | |
| 106 | if (! $this->is_pro_active) { |
| 107 | $classes[] = ColumnFactories\ThirdPartyFactory::class; |
| 108 | $classes[] = ColumnFactories\IntegrationFactory::class; |
| 109 | } |
| 110 | |
| 111 | return $classes; |
| 112 | } |
| 113 | |
| 114 | private function get_manage_value_factory_classes(): array |
| 115 | { |
| 116 | return [ |
| 117 | TableScreen\ManageValue\PostServiceFactory::class, |
| 118 | TableScreen\ManageValue\UserServiceFactory::class, |
| 119 | TableScreen\ManageValue\MediaServiceFactory::class, |
| 120 | TableScreen\ManageValue\CommentServiceFactory::class, |
| 121 | ]; |
| 122 | } |
| 123 | |
| 124 | /** |
| 125 | * @return array<class-string<MenuGroupFactory>> |
| 126 | */ |
| 127 | private function get_menu_group_factory_classes(): array |
| 128 | { |
| 129 | return [ |
| 130 | MenuGroupFactory\WooCommerceGroups::class, |
| 131 | MenuGroupFactory\BuddyPressGroups::class, |
| 132 | MenuGroupFactory\EventsCalendarGroups::class, |
| 133 | MenuGroupFactory\GravityFormsGroups::class, |
| 134 | MenuGroupFactory\JetEngineGroups::class, |
| 135 | MenuGroupFactory\MediaLibraryAssistantGroups::class, |
| 136 | MenuGroupFactory\MetaBoxGroups::class, |
| 137 | MenuGroupFactory\BeaverBuilderGroups::class, |
| 138 | ]; |
| 139 | } |
| 140 | |
| 141 | private function register_page_handlers(AC\DI\Container $container): void |
| 142 | { |
| 143 | $page_handler = new PageRequestHandler(); |
| 144 | $page_handler |
| 145 | ->add('columns', $container->get(PageFactory\Columns::class)) |
| 146 | ->add('settings', $container->get(PageFactory\Settings::class)) |
| 147 | ->add('addons', $container->get(PageFactory\Addons::class)) |
| 148 | ->add('help', $container->get(PageFactory\Help::class)); |
| 149 | |
| 150 | PageRequestHandlers::add_handler($page_handler); |
| 151 | } |
| 152 | |
| 153 | private function get_ajax_handler_classes(): array |
| 154 | { |
| 155 | return [ |
| 156 | 'ac-list-screen-settings' => Ajax\ListScreenSettings::class, |
| 157 | 'ac-list-screen-save' => Ajax\ListScreenSave::class, |
| 158 | 'ac-list-screen-add-column' => Ajax\ListScreenAddColumn::class, |
| 159 | 'ac-number-format' => Ajax\NumberFormat::class, |
| 160 | 'ac-list-screen-default-columns' => Ajax\ListScreenOriginalColumns::class, |
| 161 | 'ac-list-screen-select-column' => Ajax\ListScreenSelectColumn::class, |
| 162 | 'ac-editor-menu-status' => Ajax\EditorMenuStatus::class, |
| 163 | 'ac-editor-menu-favorites' => Ajax\EditorMenuFavorites::class, |
| 164 | 'ac-custom-field-keys' => Ajax\CustomFieldKeys::class, |
| 165 | 'ac-get-network-post-statuses' => Ajax\NetworkPostStati::class, |
| 166 | 'ac-admin-screen-options' => Ajax\ScreenOptions::class, |
| 167 | 'ac-extended-value' => Ajax\ExtendedValue::class, |
| 168 | 'ac-persist-admin-general-option' => Ajax\AdminGeneralOptionsPersist::class, |
| 169 | 'ac-get-admin-general-option' => Ajax\AdminGeneralOptionsGet::class, |
| 170 | 'ac-restore-settings' => Ajax\RestoreSettingsRequest::class, |
| 171 | 'ac-integration-toggle' => Ajax\IntegrationToggle::class, |
| 172 | 'ac-integrations' => Ajax\Integrations::class, |
| 173 | 'ac-list-screen-delete' => Ajax\ListScreenDelete::class, |
| 174 | 'ac-acf-add-column' => AC\Acf\RequestHandler\FieldSettingsAddColumn::class, |
| 175 | ]; |
| 176 | } |
| 177 | |
| 178 | private function get_service_classes(): array |
| 179 | { |
| 180 | $classes = [ |
| 181 | PluginActionLinks::class, |
| 182 | Screen::class, |
| 183 | Admin\Admin::class, |
| 184 | Admin\Scripts::class, |
| 185 | Admin\Notice\DatabaseMissing::class, |
| 186 | ThirdParty\AdvancedCustomFields::class, |
| 187 | ThirdParty\NinjaForms::class, |
| 188 | ThirdParty\MediaLibraryAssistant\MediaLibraryAssistant::class, |
| 189 | ThirdParty\WooCommerce::class, |
| 190 | ThirdParty\WPML::class, |
| 191 | Capabilities\Manage::class, |
| 192 | Service\QuickEdit::class, |
| 193 | Service\CurrentTable::class, |
| 194 | Service\CommonAssets::class, |
| 195 | Service\Colors::class, |
| 196 | Service\TableRows::class, |
| 197 | Service\ManageValue::class, |
| 198 | Service\ManageHeadings::class, |
| 199 | Service\SaveHeadings::class, |
| 200 | Service\AdminBarEditColumns::class, |
| 201 | Service\PluginUpdate::class, |
| 202 | Service\Tooltips::class, |
| 203 | AC\Acf\Service\DateSaveFormat::class, |
| 204 | AC\Acf\FieldGroupCache::class, |
| 205 | ]; |
| 206 | |
| 207 | if (! $this->is_pro_active) { |
| 208 | $classes[] = Service\PromoChecks::class; |
| 209 | $classes[] = Service\NoticeChecks::class; |
| 210 | $classes[] = PluginActionUpgrade::class; |
| 211 | $classes[] = AC\Acf\Service\FieldSettings::class; |
| 212 | } |
| 213 | |
| 214 | return $classes; |
| 215 | } |
| 216 | |
| 217 | private function register_services(AC\DI\Container $container): void |
| 218 | { |
| 219 | $services = []; |
| 220 | |
| 221 | foreach ($this->get_service_classes() as $class) { |
| 222 | $services[] = $container->get($class); |
| 223 | } |
| 224 | |
| 225 | $plugin = $container->get(AdminColumns::class); |
| 226 | $setup_factory = $container->get(SetupFactory\AdminColumns::class); |
| 227 | |
| 228 | $services[] = new View($plugin->get_location()); |
| 229 | $services[] = new Service\Setup($setup_factory->create(SetupFactory::SITE)); |
| 230 | |
| 231 | if ($plugin->is_network_active()) { |
| 232 | $services[] = new Service\Setup($setup_factory->create(SetupFactory::NETWORK)); |
| 233 | } |
| 234 | |
| 235 | $request_ajax_handlers = new RequestAjaxHandlers(); |
| 236 | |
| 237 | foreach ($this->get_ajax_handler_classes() as $key => $class) { |
| 238 | $request_ajax_handlers->add($key, $container->get($class)); |
| 239 | } |
| 240 | |
| 241 | $services[] = new RequestAjaxParser($request_ajax_handlers); |
| 242 | |
| 243 | foreach ($services as $service) { |
| 244 | $service->register(); |
| 245 | } |
| 246 | } |
| 247 | |
| 248 | } |
| 249 |