| Conditions | 24 |
| Paths | 1 |
| Total Lines | 249 |
| Code Lines | 146 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 176 | * Add in our Craft components |
||
| 177 | */ |
||
| 178 | protected function addComponents() |
||
| 179 | { |
||
| 180 | // Register our variables |
||
| 181 | Event::on( |
||
| 182 | CraftVariable::class, |
||
| 183 | CraftVariable::EVENT_INIT, |
||
| 184 | function (Event $event) { |
||
| 185 | /** @var CraftVariable $variable */ |
||
| 186 | $variable = $event->sender; |
||
| 187 | $variable->set('imageOptimize', ImageOptimizeVariable::class); |
||
| 188 | } |
||
| 189 | ); |
||
| 190 | |||
| 191 | // Register our Field |
||
| 192 | Event::on( |
||
| 193 | Fields::class, |
||
| 194 | Fields::EVENT_REGISTER_FIELD_TYPES, |
||
| 195 | function (RegisterComponentTypesEvent $event) { |
||
| 196 | Craft::debug( |
||
| 197 | 'Fields::EVENT_REGISTER_FIELD_TYPES', |
||
| 198 | __METHOD__ |
||
| 199 | ); |
||
| 200 | $event->types[] = OptimizedImages::class; |
||
| 201 | } |
||
| 202 | ); |
||
| 203 | } |
||
| 204 | |||
| 205 | /** |
||
| 206 | * Install our event handlers |
||
| 207 | */ |
||
| 208 | protected function installEventHandlers() |
||
| 209 | { |
||
| 210 | $this->installAssetEventHandlers(); |
||
| 211 | $this->installElementEventHandlers(); |
||
| 212 | $this->installMiscEventHandlers() |
||
| 213 | } |
||
|
|
|||
| 214 | |||
| 215 | /** |
||
| 216 | * Install our miscellaneous event handlers |
||
| 217 | */ |
||
| 218 | protected function installMiscEventHandlers() |
||
| 219 | { |
||
| 220 | // Handler: Fields::EVENT_AFTER_SAVE_FIELD |
||
| 221 | Event::on( |
||
| 222 | Fields::class, |
||
| 223 | Fields::EVENT_AFTER_SAVE_FIELD, |
||
| 224 | function (FieldEvent $event) { |
||
| 225 | Craft::debug( |
||
| 226 | 'Fields::EVENT_AFTER_SAVE_FIELD', |
||
| 227 | __METHOD__ |
||
| 228 | ); |
||
| 229 | $settings = $this->getSettings(); |
||
| 230 | /** @var Field $field */ |
||
| 231 | if (!$event->isNew && $settings->automaticallyResaveImageVariants) { |
||
| 232 | $thisField = $event->field; |
||
| 233 | if ($thisField instanceof OptimizedImages) { |
||
| 234 | $volumes = Craft::$app->getVolumes()->getAllVolumes(); |
||
| 235 | foreach ($volumes as $volume) { |
||
| 236 | $needToReSave = false; |
||
| 237 | /** @var FieldLayout $fieldLayout */ |
||
| 238 | /** @var Volume $volume */ |
||
| 239 | $fieldLayout = $volume->getFieldLayout(); |
||
| 240 | // Loop through the fields in the layout to see if it contains our field |
||
| 241 | if ($fieldLayout) { |
||
| 242 | $fields = $fieldLayout->getFields(); |
||
| 243 | foreach ($fields as $field) { |
||
| 244 | if ($thisField->handle == $field->handle) { |
||
| 245 | $needToReSave = true; |
||
| 246 | } |
||
| 247 | } |
||
| 248 | if ($needToReSave) { |
||
| 249 | ImageOptimize::$plugin->optimizedImages->resaveVolumeAssets($volume); |
||
| 250 | } |
||
| 251 | } |
||
| 252 | } |
||
| 253 | } |
||
| 254 | } |
||
| 255 | } |
||
| 256 | ); |
||
| 257 | |||
| 258 | // Handler: Plugins::EVENT_AFTER_SAVE_PLUGIN_SETTINGS |
||
| 259 | Event::on( |
||
| 260 | Plugins::class, |
||
| 261 | Plugins::EVENT_AFTER_SAVE_PLUGIN_SETTINGS, |
||
| 262 | function (PluginEvent $event) { |
||
| 263 | if ($event->plugin === $this) { |
||
| 264 | Craft::debug( |
||
| 265 | 'Plugins::EVENT_AFTER_SAVE_PLUGIN_SETTINGS', |
||
| 266 | __METHOD__ |
||
| 267 | ); |
||
| 268 | $settings = $this->getSettings(); |
||
| 269 | if ($settings->automaticallyResaveImageVariants) { |
||
| 270 | // After they have changed the settings, resave all of the assets |
||
| 271 | ImageOptimize::$plugin->optimizedImages->resaveAllVolumesAssets(); |
||
| 272 | } |
||
| 273 | } |
||
| 274 | } |
||
| 275 | ); |
||
| 276 | |||
| 277 | // Handler: Volumes::EVENT_AFTER_SAVE_VOLUME |
||
| 278 | Event::on( |
||
| 279 | Volumes::class, |
||
| 280 | Volumes::EVENT_AFTER_SAVE_VOLUME, |
||
| 281 | function (VolumeEvent $event) { |
||
| 282 | Craft::debug( |
||
| 283 | 'Volumes::EVENT_AFTER_SAVE_VOLUME', |
||
| 284 | __METHOD__ |
||
| 285 | ); |
||
| 286 | $settings = $this->getSettings(); |
||
| 287 | // Only worry about this volume if it's not new |
||
| 288 | if (!$event->isNew && $settings->automaticallyResaveImageVariants) { |
||
| 289 | /** @var Volume $volume */ |
||
| 290 | $volume = $event->volume; |
||
| 291 | if (is_subclass_of($volume, Volume::class)) { |
||
| 292 | ImageOptimize::$plugin->optimizedImages->resaveVolumeAssets($volume); |
||
| 293 | } |
||
| 294 | } |
||
| 295 | } |
||
| 296 | ); |
||
| 297 | |||
| 298 | // Do something after we're installed |
||
| 299 | Event::on( |
||
| 300 | Plugins::class, |
||
| 301 | Plugins::EVENT_AFTER_INSTALL_PLUGIN, |
||
| 302 | function (PluginEvent $event) { |
||
| 303 | if ($event->plugin === $this) { |
||
| 304 | $request = Craft::$app->getRequest(); |
||
| 305 | if (($request->isCpRequest) && (!$request->isConsoleRequest)) { |
||
| 306 | Craft::$app->getResponse()->redirect(UrlHelper::cpUrl('image-optimize/welcome'))->send(); |
||
| 307 | } |
||
| 308 | } |
||
| 309 | } |
||
| 310 | ); |
||
| 311 | } |
||
| 312 | |||
| 313 | /** |
||
| 314 | * Install our Asset event handlers |
||
| 315 | */ |
||
| 316 | protected function installAssetEventHandlers() |
||
| 317 | { |
||
| 318 | |||
| 319 | // Handler: Assets::EVENT_GET_ASSET_URL |
||
| 320 | Event::on( |
||
| 321 | Assets::class, |
||
| 322 | Assets::EVENT_GET_ASSET_URL, |
||
| 323 | function (GetAssetUrlEvent $event) { |
||
| 324 | Craft::debug( |
||
| 325 | 'Assets::EVENT_GET_ASSET_URL', |
||
| 326 | __METHOD__ |
||
| 327 | ); |
||
| 328 | // Return the URL to the asset URL or null to let Craft handle it |
||
| 329 | $event->url = ImageOptimize::$plugin->optimize->handleGetAssetUrlEvent( |
||
| 330 | $event |
||
| 331 | ); |
||
| 332 | } |
||
| 333 | ); |
||
| 334 | |||
| 335 | // Handler: AssetTransforms::EVENT_GENERATE_TRANSFORM |
||
| 336 | Event::on( |
||
| 337 | AssetTransforms::class, |
||
| 338 | AssetTransforms::EVENT_GENERATE_TRANSFORM, |
||
| 339 | function (GenerateTransformEvent $event) { |
||
| 340 | Craft::debug( |
||
| 341 | 'AssetTransforms::EVENT_GENERATE_TRANSFORM', |
||
| 342 | __METHOD__ |
||
| 343 | ); |
||
| 344 | // Return the path to the optimized image to _createTransformForAsset() |
||
| 345 | $event->tempPath = ImageOptimize::$plugin->optimize->handleGenerateTransformEvent( |
||
| 346 | $event |
||
| 347 | ); |
||
| 348 | } |
||
| 349 | ); |
||
| 350 | |||
| 351 | // Handler: AssetTransforms::EVENT_AFTER_DELETE_TRANSFORMS |
||
| 352 | Event::on( |
||
| 353 | AssetTransforms::class, |
||
| 354 | AssetTransforms::EVENT_AFTER_DELETE_TRANSFORMS, |
||
| 355 | function (AssetTransformImageEvent $event) { |
||
| 356 | Craft::debug( |
||
| 357 | 'AssetTransforms::EVENT_AFTER_DELETE_TRANSFORMS', |
||
| 358 | __METHOD__ |
||
| 359 | ); |
||
| 360 | // Clean up any stray variant files |
||
| 361 | ImageOptimize::$plugin->optimize->handleAfterDeleteTransformsEvent( |
||
| 362 | $event |
||
| 363 | ); |
||
| 364 | } |
||
| 365 | ); |
||
| 366 | |||
| 367 | // Handler: Assets::EVENT_BEFORE_REPLACE_ASSET |
||
| 368 | Event::on( |
||
| 369 | Assets::class, |
||
| 370 | Assets::EVENT_BEFORE_REPLACE_ASSET, |
||
| 371 | function (ReplaceAssetEvent $event) { |
||
| 372 | Craft::debug( |
||
| 373 | 'Assets::EVENT_BEFORE_REPLACE_ASSET', |
||
| 374 | __METHOD__ |
||
| 375 | ); |
||
| 376 | /** @var Asset $element */ |
||
| 377 | $element = $event->asset; |
||
| 378 | // Purge the URL |
||
| 379 | $purgeUrl = ImageOptimize::$transformClass::getPurgeUrl( |
||
| 380 | $element, |
||
| 381 | ImageOptimize::$transformParams |
||
| 382 | ); |
||
| 383 | if ($purgeUrl) { |
||
| 384 | ImageOptimize::$transformClass::purgeUrl($purgeUrl, ImageOptimize::$transformParams); |
||
| 385 | } |
||
| 386 | } |
||
| 387 | ); |
||
| 388 | |||
| 389 | // Handler: Assets::EVENT_AFTER_REPLACE_ASSET |
||
| 390 | Event::on( |
||
| 391 | Assets::class, |
||
| 392 | Assets::EVENT_AFTER_REPLACE_ASSET, |
||
| 393 | function (ReplaceAssetEvent $event) { |
||
| 394 | Craft::debug( |
||
| 395 | 'Assets::EVENT_AFTER_REPLACE_ASSET', |
||
| 396 | __METHOD__ |
||
| 397 | ); |
||
| 398 | /** @var Asset $element */ |
||
| 399 | $element = $event->asset; |
||
| 400 | if (!empty($element->id)) { |
||
| 401 | ImageOptimize::$plugin->optimizedImages->resaveAsset($element->id); |
||
| 402 | } |
||
| 403 | } |
||
| 404 | ); |
||
| 405 | } |
||
| 406 | |||
| 407 | /** |
||
| 408 | * Install our Element event handlers |
||
| 409 | */ |
||
| 410 | protected function installElementEventHandlers() |
||
| 411 | { |
||
| 412 | // Handler: Elements::EVENT_BEFORE_SAVE_ELEMENT |
||
| 413 | Event::on( |
||
| 414 | Assets::class, |
||
| 415 | Elements::EVENT_BEFORE_SAVE_ELEMENT, |
||
| 416 | function (ElementEvent $event) { |
||
| 417 | Craft::debug( |
||
| 418 | 'Elements::EVENT_BEFORE_SAVE_ELEMENT', |
||
| 419 | __METHOD__ |
||
| 420 | ); |
||
| 421 | /** @var Asset $element */ |
||
| 422 | $element = $event->element; |
||
| 423 | $isNewElement = $event->isNew; |
||
| 424 | if (!$isNewElement) { |
||
| 425 | // Purge the URL |
||
| 460 |