function editor_editor_presave

Implements hook_ENTITY_TYPE_presave().

File

core/modules/editor/editor.module, line 658

Code

function editor_editor_presave(EditorInterface $editor) {
    // @see editor_post_update_sanitize_image_upload_settings()
    $image_upload_settings = $editor->getImageUploadSettings();
    // When image uploads are disabled, then none of the other key-value pairs
    // make sense.
    // TRICKY: the configuration system has historically stored `type: boolean`
    // not as `true` and `false`, but as `1` and `0`, so use `==`, not `===`.
    // @see editor_post_update_sanitize_image_upload_settings()
    if (!array_key_exists('status', $image_upload_settings) || $image_upload_settings['status'] == FALSE) {
        $editor->setImageUploadSettings([
            'status' => FALSE,
        ]);
    }
    else {
        // When image uploads are enabled, then some of the key-value pairs need
        // some conversions to comply with the config schema. Note that all these
        // keys SHOULD exist, but because validation has historically been absent,
        // err on the side of caution.
        // @see editor_post_update_sanitize_image_upload_settings()
        if (array_key_exists('directory', $image_upload_settings) && $image_upload_settings['directory'] === '') {
            $image_upload_settings['directory'] = NULL;
        }
        if (array_key_exists('max_size', $image_upload_settings) && $image_upload_settings['max_size'] === '') {
            $image_upload_settings['max_size'] = NULL;
        }
        if (array_key_exists('max_dimensions', $image_upload_settings)) {
            if (!array_key_exists('width', $image_upload_settings['max_dimensions']) || $image_upload_settings['max_dimensions']['width'] === 0) {
                $image_upload_settings['max_dimensions']['width'] = NULL;
            }
            if (!array_key_exists('height', $image_upload_settings['max_dimensions']) || $image_upload_settings['max_dimensions']['height'] === 0) {
                $image_upload_settings['max_dimensions']['height'] = NULL;
            }
        }
        $editor->setImageUploadSettings($image_upload_settings);
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.