MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/amazeing.in/wp-content/plugins/cozy-essential-addons/includes/block-patterns.php
<?php

/**
 * Registering patterns categories for ct_patterns
 * @since 1.0.0
 * @package cozy_essential_addons
 */
function ct_patterns_register_pattern_category()
{
    $cozy_current_theme = wp_get_theme()->get('Name');
    $cozy_parent_theme = wp_get_theme(get_template())->get('Name');
    if ($cozy_current_theme == 'FotaWP' || $cozy_parent_theme == 'FotaWP') {
        $block_pattern_categories = array(
            'ct-patterns-innerpage' => array('label' => __('FOTAWP: Page Templates', 'walker-core')),
            'ct-patterns-promotions' => array('label' => __('FOTAWP: Promotions Sections', 'walker-core')),
            'ct-patterns-gallery' => array('label' => __('FOTAWP: Gallery Sections', 'walker-core')),
            'ct-patterns-newsletter' => array('label' => __('FOTAWP: Newsletter Sections', 'walker-core')),
            'ct-patterns' => array('label' => __('FOTAWP PRO: All Patterns', 'walker-core')),
        );
    } elseif ($cozy_current_theme == 'Hello Agency' || $cozy_parent_theme == 'Hello Agency') {
        $block_pattern_categories = array(
            'ha-patterns-pro' => array('label' => __('Hello Agency Patterns (PRO)', 'walker-core')),
        );
    } else {
        $block_pattern_categories = array(
            'cozy-patterns' => array('label' => __('Default Patterns', 'walker-core')),
        );
    }

    $block_pattern_categories = apply_filters('ct_patterns_block_pattern_categories', $block_pattern_categories);

    foreach ($block_pattern_categories as $name => $properties) {
        if (!WP_Block_Pattern_Categories_Registry::get_instance()->is_registered($name)) {
            register_block_pattern_category($name, $properties); // phpcs:ignore WPThemeReview.PluginTerritory.ForbiddenFunctions.editor_blocks_register_block_pattern_category
        }
    }
}
add_action('init', 'ct_patterns_register_pattern_category');
/**
 * source: https://github.com/WordPress/wordpress-develop/blob/6.1/src/wp-includes/block-patterns.php#L198-L336
 * Register any patterns that the active theme may provide under its
 * `./patterns/` directory. Each pattern is defined as a PHP file and defines
 * its metadata using plugin-style headers. The minimum required definition is:
 *
 *     /**
 *      * Title: My Pattern
 *      * Slug: my-theme/my-pattern
 *      *
 *
 * The output of the PHP source corresponds to the content of the pattern, e.g.:
 *
 *     <main><p><?php echo "Hello"; ?></p></main>
 *
 * If applicable, this will collect from both parent and child theme.
 *
 * Other settable fields include:
 *
 *   - Description
 *   - Viewport Width
 *   - Categories       (comma-separated values)
 *   - Keywords         (comma-separated values)
 *   - Block Types      (comma-separated values)
 *   - Post Types       (comma-separated values)
 *   - Inserter         (yes/no)
 *
 * @since 6.0.0
 * @access private
 */
function _ct_patterns_register_plugin_block_patterns()
{
    $default_headers = array(
        'title'         => 'Title',
        'slug'          => 'Slug',
        'description'   => 'Description',
        'viewportWidth' => 'Viewport Width',
        'categories'    => 'Categories',
        'keywords'      => 'Keywords',
        'blockTypes'    => 'Block Types',
        'postTypes'     => 'Post Types',
        'inserter'      => 'Inserter',
    );

    /*
	 * Register patterns for the active theme. If the theme is a child theme,
	 * let it override any patterns from the parent theme that shares the same slug.
	 */
    $dirpath = plugin_dir_path(__DIR__) . '/patterns/';
    if (!is_dir($dirpath) || !is_readable($dirpath)) {
        return;
    }

    if (file_exists($dirpath)) {
        $files = glob($dirpath . '*.php');
        if ($files) {
            foreach ($files as $file) {
                $pattern_data = get_file_data($file, $default_headers);

                if (empty($pattern_data['slug'])) {
                    _doing_it_wrong(
                        '_ct_patterns_register_plugin_block_patterns',
                        sprintf(
                            /* translators: %s: file name. */
                            __('Could not register file "%s" as a block pattern ("Slug" field missing)'),
                            $file
                        ),
                        '6.0.0'
                    );
                    continue;
                }

                if (!preg_match('/^[A-z0-9\/_-]+$/', $pattern_data['slug'])) {
                    _doing_it_wrong(
                        '_ct_patterns_register_plugin_block_patterns',
                        sprintf(
                            /* translators: %1s: file name; %2s: slug value found. */
                            __('Could not register file "%1$s" as a block pattern (invalid slug "%2$s")'),
                            $file,
                            $pattern_data['slug']
                        ),
                        '6.0.0'
                    );
                }

                if (WP_Block_Patterns_Registry::get_instance()->is_registered($pattern_data['slug'])) {
                    continue;
                }

                // Title is a required property.
                if (!$pattern_data['title']) {
                    _doing_it_wrong(
                        '_ct_patterns_register_plugin_block_patterns',
                        sprintf(
                            /* translators: %1s: file name; %2s: slug value found. */
                            __('Could not register file "%s" as a block pattern ("Title" field missing)'),
                            $file
                        ),
                        '6.0.0'
                    );
                    continue;
                }

                // For properties of type array, parse data as comma-separated.
                foreach (array('categories', 'keywords', 'blockTypes', 'postTypes') as $property) {
                    if (!empty($pattern_data[$property])) {
                        $pattern_data[$property] = array_filter(
                            preg_split(
                                '/[\s,]+/',
                                (string) $pattern_data[$property]
                            )
                        );
                    } else {
                        unset($pattern_data[$property]);
                    }
                }

                // Parse properties of type int.
                foreach (array('viewportWidth') as $property) {
                    if (!empty($pattern_data[$property])) {
                        $pattern_data[$property] = (int) $pattern_data[$property];
                    } else {
                        unset($pattern_data[$property]);
                    }
                }

                // Parse properties of type bool.
                foreach (array('inserter') as $property) {
                    if (!empty($pattern_data[$property])) {
                        $pattern_data[$property] = in_array(
                            strtolower($pattern_data[$property]),
                            array('yes', 'true'),
                            true
                        );
                    } else {
                        unset($pattern_data[$property]);
                    }
                }

                // Translate the pattern metadata.
                $text_domain = 'walker-core';
                //phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText, WordPress.WP.I18n.NonSingularStringLiteralContext, WordPress.WP.I18n.NonSingularStringLiteralDomain, WordPress.WP.I18n.LowLevelTranslationFunction
                $pattern_data['title'] = translate_with_gettext_context($pattern_data['title'], 'Pattern title', $text_domain);
                if (!empty($pattern_data['description'])) {
                    //phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText, WordPress.WP.I18n.NonSingularStringLiteralContext, WordPress.WP.I18n.NonSingularStringLiteralDomain, WordPress.WP.I18n.LowLevelTranslationFunction
                    $pattern_data['description'] = translate_with_gettext_context($pattern_data['description'], 'Pattern description', $text_domain);
                }

                // The actual pattern content is the output of the file.
                ob_start();
                include $file;
                $pattern_data['content'] = ob_get_clean();
                if (!$pattern_data['content']) {
                    continue;
                }

                register_block_pattern($pattern_data['slug'], $pattern_data);
            }
        }
    }
}
add_action('init', '_ct_patterns_register_plugin_block_patterns');