Plugin Directory

Changeset 3017234


Ignore:
Timestamp:
01/04/2024 02:04:58 AM (2 years ago)
Author:
suiteplugins
Message:

Adding maintenance release

Location:
um-custom-tab-builder-lite
Files:
18 edited
1 copied

Legend:

Unmodified
Added
Removed
  • um-custom-tab-builder-lite/tags/1.0.4.2/includes/class-core.php

    r2871810 r3017234  
    133133            }
    134134        }
    135 
    136135        update_option( 'um_options', $options );
    137136    }
  • um-custom-tab-builder-lite/tags/1.0.4.2/includes/class-tab.php

    r2333915 r3017234  
    224224        }
    225225
    226         //$url = remove_query_arg( 'profiletab', $url );
    227226        $url = remove_query_arg( 'subnav', $url );
    228         //$url = add_query_arg( 'profiletab', 'main', $url );
    229227        $url = add_query_arg( 'um_action', 'edit', $url );
    230228
     
    239237    public function um_is_on_edit_profile() {
    240238        if (isset( $_REQUEST['profiletab'] ) && isset( $_REQUEST['um_action'] )) {
    241             if ( $_REQUEST['um_action'] == 'edit') {
     239            if ( sanitize_text_field( $_REQUEST['um_action'] ) == 'edit') {
    242240                return true;
    243241            }
  • um-custom-tab-builder-lite/tags/1.0.4.2/includes/icon-picker.php

    r2000609 r3017234  
    6767            $icons = $this->default_icons;
    6868        }
    69         //echo '<select name="' . $field_type->_name() .'" id="' . $field_type->_id($icon) . '">';
     69
    7070        echo '<ul class="cmb2-icon-picker-list">';
    7171
     
    9393
    9494            echo '<li class="cmb2-icon-picker-list-item">';
    95             //echo '<option value="' . $icon . '"><i class="um-faicon-file-o"></i>' . $icon . '';
    96             //$args['type'] = 'select';
    97         echo $field_type->input($args);
    9895
    99        echo '<label for="' . $field_type->_id($icon) . '"><span class="cmb2-icon-picker-icon '.$icon.'" style="font-family: \'' .  implode('\',\'', $this->font_family) . '\' !important;"></span></label>';
     96            echo $field_type->input($args);
     97
     98            echo '<label for="' . $field_type->_id($icon) . '"><span class="cmb2-icon-picker-icon '.$icon.'" style="font-family: \'' .  implode('\',\'', $this->font_family) . '\' !important;"></span></label>';
    10099
    101100            echo '</li>';
    102             //echo '</option>';
    103101        }
    104102
    105103        echo '</ul>';
    106         //echo '</select>';
    107104
    108105        // Display our description if one exists
  • um-custom-tab-builder-lite/tags/1.0.4.2/readme.txt

    r2902297 r3017234  
    44Tags: ultimatemember, ultimate member, ultimate member profile tabs, ultimatemember custom tabs, ultimate member iframe, ultimate member contact form
    55Requires at least: 3.0.1
    6 Tested up to: 6.2
    7 Stable tag: 1.0.4.1
     6Tested up to: 6.4.2
     7Stable tag: 1.0.4.2
    88Requires PHP: 5.6
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1111
    12 An easy way to add custom profile tabs to Ultimate Member Profile. Ultimate Member 2.0 compatible
     12Revolutionize Ultimate Member profiles with our custom tabs plugin, enabling admins to easily create and organize dynamic content in user profiles. This intuitive tool enhances user engagement by offering a versatile way to showcase personalized content, from text and images to videos and links, directly within Ultimate Member.
    1313
    1414== Description ==
    1515
    16 Use the Ultimate Member custom tab builder to add unlimited tabs with icons and slug. Add custom content or shortcodes to Ultimate Member profiles with just a few clicks.
     16### Ultimate Member Custom Tab Builder
    1717
    18 = Features =
     18Elevate your Ultimate Member experience with our **Custom Tab Builder**, designed for seamless integration and unlimited creativity. Add bespoke tabs complete with custom icons and slugs to enrich user profiles. With just a few clicks, you can inject dynamic content or shortcodes, transforming profiles into rich, interactive experiences.
    1919
    20 * Show tabs based on roles
    21 * Change icons, slug and name from admin
    22 * Language Localization ready
    23 * Add Shortcodes - Add shortcodes to profiles and change attributes with short tags.
    24 * Add custom content - Add iframes, text, images, shortcodes to profiles.
     20#### Features
    2521
    26 = Pro Features =
     22- **Role-Based Tab Visibility**: Display tabs selectively based on user roles for tailored user experiences.
     23- **Customizable Icons, Slugs, and Names**: Personalize your tabs directly from the admin panel, ensuring each tab uniquely represents its content.
     24- **Language Localization Ready**: Broaden your reach with a plugin ready for global audiences.
     25- **Shortcodes Integration**: Easily add shortcodes to profiles, offering endless possibilities for custom content.
     26- **Diverse Content Options**: Enrich profiles with iframes, text, images, and more, all embedded seamlessly within custom tabs.
    2727
    28 * Show tabs based on roles
    29 * Change icons, slug and name from admin
    30 * Language Localization ready
    31 * Add Shortcodes - Add shortcodes to profiles and change attributes with short tags.
    32 * Add custom content - Add iframes, text, images, shortcodes to profiles.
    33 * Add Profile Form - Create multiple profile forms
    34 * Contact Form 7 Integration - Add Contact Form Shortcode to profiles and have emails sent to profile owner
     28#### Pro Features
    3529
    36 * [Get UM Custom Tab Builder](https://suiteplugins.com/downloads/um-custom-tab-builder/?utm_source=wordpress&utm_medium=plugin&utm_content=um-custom-tab-builder) - Same as lite but with a few extras.
     30Unlock the full power of Ultimate Member with these exclusive Pro features:
    3731
    38 * [Ultimate Member Plugin Bundle](https://suiteplugins.com/downloads/um-starter-suite/?utm_source=wordpress&utm_medium=plugin&utm_content=um-custom-tab-builder) - A bundle of all our plugins including UM Custom Tab Builder.
     32- **Enhanced Role-Based Visibility**: Advanced options for displaying tabs based on user roles.
     33- **Profile Form Creation**: Craft multiple profile forms for diverse user interactions.
     34- **Contact Form 7 Integration**: Integrate Contact Form 7 shortcodes into profiles, allowing direct and personalized communication with profile owners.
    3935
    40 = Ultimate Member Theme =
    41 * [SocialTribe](https://suiteplugins.com/downloads/social-tribe/?utm_source=wordpress&utm_medium=plugin&utm_content=um-story-lite) - WordPress Theme built to Support Ultimate Member
     36#### Get More with Our Plugins
     37
     38- [**UM Custom Tab Builder**](https://suiteplugins.com/downloads/um-custom-tab-builder/?utm_source=wordpress&utm_medium=plugin&utm_content=um-custom-tab-builder): Enjoy all Lite features and more with our Pro version.
     39- [**Ultimate Member Plugin Bundle**](https://suiteplugins.com/downloads/um-starter-suite/?utm_source=wordpress&utm_medium=plugin&utm_content=um-custom-tab-builder): Explore a world of possibilities with our complete bundle, including UM Custom Tab Builder and all our other innovative plugins.
     40
     41Elevate your Ultimate Member profiles today and create a more engaging, personalized user experience!
    4242
    4343
     
    8282== Changelog ==
    8383
    84 = 1.0.0 =
    85 * Plugin released into the wild
     84= 1.0.4.2 =
     85* Maintenance: Tested Compatibility with WordPress 6.4.2
     86* Maintenance: Cleaned up code
     87
     88= 1.0.4.1 =
     89* Removed code not needed for plugin
     90
     91= 1.0.4 =
     92* Maintenance: Tested Ultimate Member 2.5.4 and WordPress 6.1.1
     93* Fixed: Translations not available for all text
     94
     95= 1.0.3 =
     96* Maintenance: Updated internal libraries
     97* Maintenance: Tested with Ultimate Member version
     98* Fixed: Tabs not displaying immediately
    8699
    87100= 1.0.1 =
     101**Tested**
     102* Tested Ultimate Member version 2.1.6 and WordPress 5.4.2
     103
     104**Fixed**
     105* Tabs not showing in Ultimate Member tab Settings
     106
     107= 1.0.1 =
     108**Notes**
     109* Tested with WordPress 5.4.1 and Ultimate Member 2.1.5
     110* Investigated issue with "headers already sent", no issue found.
    88111
    89112**Fixed**
    90113* Some strings not translating
    91114
    92 **Notes**
    93 * Investigated issue with "headers already sent", no issue found.
    94 * Tested with WordPress 5.4.1 and Ultimate Member 2.1.5
     115= 1.0.0 =
     116* Plugin released into the wild
    95117
    96 = 1.0.1 =
    97 
    98 **Fixed**
    99 * Tabs not showing in Ultimate Member tab Settings
    100 
    101 **Tested**
    102 * Tested Ultimate Member version 2.1.6 and WordPress 5.4.2
    103 
    104 = 1.0.3 =
    105 * Fixed: Tabs not displaying immediately
    106 * Maintenance: Tested with Ultimate Member version
    107 * Maintenance: Updated internal libraries
    108 
    109 = 1.0.4 =
    110 * Fixed: Translations not available for all text
    111 * Maintenance: Tested Ultimate Member 2.5.4 and WordPress 6.1.1
    112 
    113 = 1.0.4.1 =
    114 * Removed code not needed for plugin
    115118
    116119== Upgrade Notice ==
  • um-custom-tab-builder-lite/tags/1.0.4.2/um-custom-tab-builder-lite.php

    r2902297 r3017234  
    11<?php
    22/**
    3  * Plugin Name: UM Custom Tab Builder Lite
     3 * Plugin Name: Custom Tab Builder for Ultimate Member
    44 * Plugin URI:  https://suiteplugins.com/downloads/um-custom-tab-builder/
    55 * Description: Adds an option to build tabs for Ultimate Member via admin.
    6  * Version:     1.0.4.1
     6 * Version:     1.0.4.2
    77 * Author:      SuitePlugins
    88 * Author URI:  https://suiteplugins.com
     
    8080     * @since  1.0.0
    8181     */
    82     const VERSION = '1.0.4.1';
     82    const VERSION = '1.0.4.2';
    8383
    8484    /**
  • um-custom-tab-builder-lite/tags/1.0.4.2/vendor/autoload.php

    r2871810 r3017234  
    44
    55if (PHP_VERSION_ID < 50600) {
    6     echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
    7     exit(1);
     6    if (!headers_sent()) {
     7        header('HTTP/1.1 500 Internal Server Error');
     8    }
     9    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
     10    if (!ini_get('display_errors')) {
     11        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
     12            fwrite(STDERR, $err);
     13        } elseif (!headers_sent()) {
     14            echo $err;
     15        }
     16    }
     17    trigger_error(
     18        $err,
     19        E_USER_ERROR
     20    );
    821}
    922
  • um-custom-tab-builder-lite/tags/1.0.4.2/vendor/composer/ClassLoader.php

    r2871810 r3017234  
    4343class ClassLoader
    4444{
    45     /** @var ?string */
     45    /** @var \Closure(string):void */
     46    private static $includeFile;
     47
     48    /** @var string|null */
    4649    private $vendorDir;
    4750
    4851    // PSR-4
    4952    /**
    50      * @var array[]
    51      * @psalm-var array<string, array<string, int>>
     53     * @var array<string, array<string, int>>
    5254     */
    5355    private $prefixLengthsPsr4 = array();
    5456    /**
    55      * @var array[]
    56      * @psalm-var array<string, array<int, string>>
     57     * @var array<string, list<string>>
    5758     */
    5859    private $prefixDirsPsr4 = array();
    5960    /**
    60      * @var array[]
    61      * @psalm-var array<string, string>
     61     * @var list<string>
    6262     */
    6363    private $fallbackDirsPsr4 = array();
     
    6565    // PSR-0
    6666    /**
    67      * @var array[]
    68      * @psalm-var array<string, array<string, string[]>>
     67     * List of PSR-0 prefixes
     68     *
     69     * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
     70     *
     71     * @var array<string, array<string, list<string>>>
    6972     */
    7073    private $prefixesPsr0 = array();
    7174    /**
    72      * @var array[]
    73      * @psalm-var array<string, string>
     75     * @var list<string>
    7476     */
    7577    private $fallbackDirsPsr0 = array();
     
    7981
    8082    /**
    81      * @var string[]
    82      * @psalm-var array<string, string>
     83     * @var array<string, string>
    8384     */
    8485    private $classMap = array();
     
    8889
    8990    /**
    90      * @var bool[]
    91      * @psalm-var array<string, bool>
     91     * @var array<string, bool>
    9292     */
    9393    private $missingClasses = array();
    9494
    95     /** @var ?string */
     95    /** @var string|null */
    9696    private $apcuPrefix;
    9797
    9898    /**
    99      * @var self[]
     99     * @var array<string, self>
    100100     */
    101101    private static $registeredLoaders = array();
    102102
    103103    /**
    104      * @param ?string $vendorDir
     104     * @param string|null $vendorDir
    105105     */
    106106    public function __construct($vendorDir = null)
    107107    {
    108108        $this->vendorDir = $vendorDir;
    109     }
    110 
    111     /**
    112      * @return string[]
     109        self::initializeIncludeClosure();
     110    }
     111
     112    /**
     113     * @return array<string, list<string>>
    113114     */
    114115    public function getPrefixes()
     
    122123
    123124    /**
    124      * @return array[]
    125      * @psalm-return array<string, array<int, string>>
     125     * @return array<string, list<string>>
    126126     */
    127127    public function getPrefixesPsr4()
     
    131131
    132132    /**
    133      * @return array[]
    134      * @psalm-return array<string, string>
     133     * @return list<string>
    135134     */
    136135    public function getFallbackDirs()
     
    140139
    141140    /**
    142      * @return array[]
    143      * @psalm-return array<string, string>
     141     * @return list<string>
    144142     */
    145143    public function getFallbackDirsPsr4()
     
    149147
    150148    /**
    151      * @return string[] Array of classname => path
    152      * @psalm-return array<string, string>
     149     * @return array<string, string> Array of classname => path
    153150     */
    154151    public function getClassMap()
     
    158155
    159156    /**
    160      * @param string[] $classMap Class to filename map
    161      * @psalm-param array<string, string> $classMap
     157     * @param array<string, string> $classMap Class to filename map
    162158     *
    163159     * @return void
     
    176172     * appending or prepending to the ones previously set for this prefix.
    177173     *
    178      * @param string          $prefix  The prefix
    179      * @param string[]|string $paths   The PSR-0 root directories
    180      * @param bool            $prepend Whether to prepend the directories
     174     * @param string              $prefix  The prefix
     175     * @param list<string>|string $paths   The PSR-0 root directories
     176     * @param bool                $prepend Whether to prepend the directories
    181177     *
    182178     * @return void
     
    184180    public function add($prefix, $paths, $prepend = false)
    185181    {
     182        $paths = (array) $paths;
    186183        if (!$prefix) {
    187184            if ($prepend) {
    188185                $this->fallbackDirsPsr0 = array_merge(
    189                     (array) $paths,
     186                    $paths,
    190187                    $this->fallbackDirsPsr0
    191188                );
     
    193190                $this->fallbackDirsPsr0 = array_merge(
    194191                    $this->fallbackDirsPsr0,
    195                     (array) $paths
     192                    $paths
    196193                );
    197194            }
     
    202199        $first = $prefix[0];
    203200        if (!isset($this->prefixesPsr0[$first][$prefix])) {
    204             $this->prefixesPsr0[$first][$prefix] = (array) $paths;
     201            $this->prefixesPsr0[$first][$prefix] = $paths;
    205202
    206203            return;
     
    208205        if ($prepend) {
    209206            $this->prefixesPsr0[$first][$prefix] = array_merge(
    210                 (array) $paths,
     207                $paths,
    211208                $this->prefixesPsr0[$first][$prefix]
    212209            );
     
    214211            $this->prefixesPsr0[$first][$prefix] = array_merge(
    215212                $this->prefixesPsr0[$first][$prefix],
    216                 (array) $paths
     213                $paths
    217214            );
    218215        }
     
    223220     * appending or prepending to the ones previously set for this namespace.
    224221     *
    225      * @param string          $prefix  The prefix/namespace, with trailing '\\'
    226      * @param string[]|string $paths   The PSR-4 base directories
    227      * @param bool            $prepend Whether to prepend the directories
     222     * @param string              $prefix  The prefix/namespace, with trailing '\\'
     223     * @param list<string>|string $paths   The PSR-4 base directories
     224     * @param bool                $prepend Whether to prepend the directories
    228225     *
    229226     * @throws \InvalidArgumentException
     
    233230    public function addPsr4($prefix, $paths, $prepend = false)
    234231    {
     232        $paths = (array) $paths;
    235233        if (!$prefix) {
    236234            // Register directories for the root namespace.
    237235            if ($prepend) {
    238236                $this->fallbackDirsPsr4 = array_merge(
    239                     (array) $paths,
     237                    $paths,
    240238                    $this->fallbackDirsPsr4
    241239                );
     
    243241                $this->fallbackDirsPsr4 = array_merge(
    244242                    $this->fallbackDirsPsr4,
    245                     (array) $paths
     243                    $paths
    246244                );
    247245            }
     
    253251            }
    254252            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
    255             $this->prefixDirsPsr4[$prefix] = (array) $paths;
     253            $this->prefixDirsPsr4[$prefix] = $paths;
    256254        } elseif ($prepend) {
    257255            // Prepend directories for an already registered namespace.
    258256            $this->prefixDirsPsr4[$prefix] = array_merge(
    259                 (array) $paths,
     257                $paths,
    260258                $this->prefixDirsPsr4[$prefix]
    261259            );
     
    264262            $this->prefixDirsPsr4[$prefix] = array_merge(
    265263                $this->prefixDirsPsr4[$prefix],
    266                 (array) $paths
     264                $paths
    267265            );
    268266        }
     
    273271     * replacing any others previously set for this prefix.
    274272     *
    275      * @param string          $prefix The prefix
    276      * @param string[]|string $paths  The PSR-0 base directories
     273     * @param string              $prefix The prefix
     274     * @param list<string>|string $paths  The PSR-0 base directories
    277275     *
    278276     * @return void
     
    291289     * replacing any others previously set for this namespace.
    292290     *
    293      * @param string          $prefix The prefix/namespace, with trailing '\\'
    294      * @param string[]|string $paths  The PSR-4 base directories
     291     * @param string              $prefix The prefix/namespace, with trailing '\\'
     292     * @param list<string>|string $paths  The PSR-4 base directories
    295293     *
    296294     * @throws \InvalidArgumentException
     
    426424    {
    427425        if ($file = $this->findFile($class)) {
    428             includeFile($file);
     426            $includeFile = self::$includeFile;
     427            $includeFile($file);
    429428
    430429            return true;
     
    477476
    478477    /**
    479      * Returns the currently registered loaders indexed by their corresponding vendor directories.
    480      *
    481      * @return self[]
     478     * Returns the currently registered loaders keyed by their corresponding vendor directories.
     479     *
     480     * @return array<string, self>
    482481     */
    483482    public static function getRegisteredLoaders()
     
    556555        return false;
    557556    }
     557
     558    /**
     559     * @return void
     560     */
     561    private static function initializeIncludeClosure()
     562    {
     563        if (self::$includeFile !== null) {
     564            return;
     565        }
     566
     567        /**
     568         * Scope isolated include.
     569         *
     570         * Prevents access to $this/self from included files.
     571         *
     572         * @param  string $file
     573         * @return void
     574         */
     575        self::$includeFile = \Closure::bind(static function($file) {
     576            include $file;
     577        }, null, null);
     578    }
    558579}
    559 
    560 /**
    561  * Scope isolated include.
    562  *
    563  * Prevents access to $this/self from included files.
    564  *
    565  * @param  string $file
    566  * @return void
    567  * @private
    568  */
    569 function includeFile($file)
    570 {
    571     include $file;
    572 }
  • um-custom-tab-builder-lite/tags/1.0.4.2/vendor/composer/InstalledVersions.php

    r2871810 r3017234  
    9999        foreach (self::getInstalled() as $installed) {
    100100            if (isset($installed['versions'][$packageName])) {
    101                 return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
     101                return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
    102102            }
    103103        }
     
    120120    public static function satisfies(VersionParser $parser, $packageName, $constraint)
    121121    {
    122         $constraint = $parser->parseConstraints($constraint);
     122        $constraint = $parser->parseConstraints((string) $constraint);
    123123        $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
    124124
     
    329329                    $installed[] = self::$installedByVendor[$vendorDir];
    330330                } elseif (is_file($vendorDir.'/composer/installed.php')) {
    331                     $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
     331                    /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
     332                    $required = require $vendorDir.'/composer/installed.php';
     333                    $installed[] = self::$installedByVendor[$vendorDir] = $required;
    332334                    if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
    333335                        self::$installed = $installed[count($installed) - 1];
     
    341343            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
    342344            if (substr(__DIR__, -8, 1) !== 'C') {
    343                 self::$installed = require __DIR__ . '/installed.php';
     345                /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
     346                $required = require __DIR__ . '/installed.php';
     347                self::$installed = $required;
    344348            } else {
    345349                self::$installed = array();
    346350            }
    347351        }
    348         $installed[] = self::$installed;
     352
     353        if (self::$installed !== array()) {
     354            $installed[] = self::$installed;
     355        }
    349356
    350357        return $installed;
  • um-custom-tab-builder-lite/tags/1.0.4.2/vendor/composer/installed.php

    r2871810 r3017234  
    44        'pretty_version' => 'dev-master',
    55        'version' => 'dev-master',
    6         'reference' => '28991c0f3a0e2f3e6632b159cf7b8448542ded39',
     6        'reference' => '8889d524945ff4d6d591d8301e1750cd9542cce4',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-master',
    1515            'version' => 'dev-master',
    16             'reference' => '28991c0f3a0e2f3e6632b159cf7b8448542ded39',
     16            'reference' => '8889d524945ff4d6d591d8301e1750cd9542cce4',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • um-custom-tab-builder-lite/trunk/includes/class-core.php

    r2871810 r3017234  
    133133            }
    134134        }
    135 
    136135        update_option( 'um_options', $options );
    137136    }
  • um-custom-tab-builder-lite/trunk/includes/class-tab.php

    r2333915 r3017234  
    224224        }
    225225
    226         //$url = remove_query_arg( 'profiletab', $url );
    227226        $url = remove_query_arg( 'subnav', $url );
    228         //$url = add_query_arg( 'profiletab', 'main', $url );
    229227        $url = add_query_arg( 'um_action', 'edit', $url );
    230228
     
    239237    public function um_is_on_edit_profile() {
    240238        if (isset( $_REQUEST['profiletab'] ) && isset( $_REQUEST['um_action'] )) {
    241             if ( $_REQUEST['um_action'] == 'edit') {
     239            if ( sanitize_text_field( $_REQUEST['um_action'] ) == 'edit') {
    242240                return true;
    243241            }
  • um-custom-tab-builder-lite/trunk/includes/icon-picker.php

    r2000609 r3017234  
    6767            $icons = $this->default_icons;
    6868        }
    69         //echo '<select name="' . $field_type->_name() .'" id="' . $field_type->_id($icon) . '">';
     69
    7070        echo '<ul class="cmb2-icon-picker-list">';
    7171
     
    9393
    9494            echo '<li class="cmb2-icon-picker-list-item">';
    95             //echo '<option value="' . $icon . '"><i class="um-faicon-file-o"></i>' . $icon . '';
    96             //$args['type'] = 'select';
    97         echo $field_type->input($args);
    9895
    99        echo '<label for="' . $field_type->_id($icon) . '"><span class="cmb2-icon-picker-icon '.$icon.'" style="font-family: \'' .  implode('\',\'', $this->font_family) . '\' !important;"></span></label>';
     96            echo $field_type->input($args);
     97
     98            echo '<label for="' . $field_type->_id($icon) . '"><span class="cmb2-icon-picker-icon '.$icon.'" style="font-family: \'' .  implode('\',\'', $this->font_family) . '\' !important;"></span></label>';
    10099
    101100            echo '</li>';
    102             //echo '</option>';
    103101        }
    104102
    105103        echo '</ul>';
    106         //echo '</select>';
    107104
    108105        // Display our description if one exists
  • um-custom-tab-builder-lite/trunk/readme.txt

    r2902297 r3017234  
    44Tags: ultimatemember, ultimate member, ultimate member profile tabs, ultimatemember custom tabs, ultimate member iframe, ultimate member contact form
    55Requires at least: 3.0.1
    6 Tested up to: 6.2
    7 Stable tag: 1.0.4.1
     6Tested up to: 6.4.2
     7Stable tag: 1.0.4.2
    88Requires PHP: 5.6
    99License: GPLv2 or later
    1010License URI: http://www.gnu.org/licenses/gpl-2.0.html
    1111
    12 An easy way to add custom profile tabs to Ultimate Member Profile. Ultimate Member 2.0 compatible
     12Revolutionize Ultimate Member profiles with our custom tabs plugin, enabling admins to easily create and organize dynamic content in user profiles. This intuitive tool enhances user engagement by offering a versatile way to showcase personalized content, from text and images to videos and links, directly within Ultimate Member.
    1313
    1414== Description ==
    1515
    16 Use the Ultimate Member custom tab builder to add unlimited tabs with icons and slug. Add custom content or shortcodes to Ultimate Member profiles with just a few clicks.
     16### Ultimate Member Custom Tab Builder
    1717
    18 = Features =
     18Elevate your Ultimate Member experience with our **Custom Tab Builder**, designed for seamless integration and unlimited creativity. Add bespoke tabs complete with custom icons and slugs to enrich user profiles. With just a few clicks, you can inject dynamic content or shortcodes, transforming profiles into rich, interactive experiences.
    1919
    20 * Show tabs based on roles
    21 * Change icons, slug and name from admin
    22 * Language Localization ready
    23 * Add Shortcodes - Add shortcodes to profiles and change attributes with short tags.
    24 * Add custom content - Add iframes, text, images, shortcodes to profiles.
     20#### Features
    2521
    26 = Pro Features =
     22- **Role-Based Tab Visibility**: Display tabs selectively based on user roles for tailored user experiences.
     23- **Customizable Icons, Slugs, and Names**: Personalize your tabs directly from the admin panel, ensuring each tab uniquely represents its content.
     24- **Language Localization Ready**: Broaden your reach with a plugin ready for global audiences.
     25- **Shortcodes Integration**: Easily add shortcodes to profiles, offering endless possibilities for custom content.
     26- **Diverse Content Options**: Enrich profiles with iframes, text, images, and more, all embedded seamlessly within custom tabs.
    2727
    28 * Show tabs based on roles
    29 * Change icons, slug and name from admin
    30 * Language Localization ready
    31 * Add Shortcodes - Add shortcodes to profiles and change attributes with short tags.
    32 * Add custom content - Add iframes, text, images, shortcodes to profiles.
    33 * Add Profile Form - Create multiple profile forms
    34 * Contact Form 7 Integration - Add Contact Form Shortcode to profiles and have emails sent to profile owner
     28#### Pro Features
    3529
    36 * [Get UM Custom Tab Builder](https://suiteplugins.com/downloads/um-custom-tab-builder/?utm_source=wordpress&utm_medium=plugin&utm_content=um-custom-tab-builder) - Same as lite but with a few extras.
     30Unlock the full power of Ultimate Member with these exclusive Pro features:
    3731
    38 * [Ultimate Member Plugin Bundle](https://suiteplugins.com/downloads/um-starter-suite/?utm_source=wordpress&utm_medium=plugin&utm_content=um-custom-tab-builder) - A bundle of all our plugins including UM Custom Tab Builder.
     32- **Enhanced Role-Based Visibility**: Advanced options for displaying tabs based on user roles.
     33- **Profile Form Creation**: Craft multiple profile forms for diverse user interactions.
     34- **Contact Form 7 Integration**: Integrate Contact Form 7 shortcodes into profiles, allowing direct and personalized communication with profile owners.
    3935
    40 = Ultimate Member Theme =
    41 * [SocialTribe](https://suiteplugins.com/downloads/social-tribe/?utm_source=wordpress&utm_medium=plugin&utm_content=um-story-lite) - WordPress Theme built to Support Ultimate Member
     36#### Get More with Our Plugins
     37
     38- [**UM Custom Tab Builder**](https://suiteplugins.com/downloads/um-custom-tab-builder/?utm_source=wordpress&utm_medium=plugin&utm_content=um-custom-tab-builder): Enjoy all Lite features and more with our Pro version.
     39- [**Ultimate Member Plugin Bundle**](https://suiteplugins.com/downloads/um-starter-suite/?utm_source=wordpress&utm_medium=plugin&utm_content=um-custom-tab-builder): Explore a world of possibilities with our complete bundle, including UM Custom Tab Builder and all our other innovative plugins.
     40
     41Elevate your Ultimate Member profiles today and create a more engaging, personalized user experience!
    4242
    4343
     
    8282== Changelog ==
    8383
    84 = 1.0.0 =
    85 * Plugin released into the wild
     84= 1.0.4.2 =
     85* Maintenance: Tested Compatibility with WordPress 6.4.2
     86* Maintenance: Cleaned up code
     87
     88= 1.0.4.1 =
     89* Removed code not needed for plugin
     90
     91= 1.0.4 =
     92* Maintenance: Tested Ultimate Member 2.5.4 and WordPress 6.1.1
     93* Fixed: Translations not available for all text
     94
     95= 1.0.3 =
     96* Maintenance: Updated internal libraries
     97* Maintenance: Tested with Ultimate Member version
     98* Fixed: Tabs not displaying immediately
    8699
    87100= 1.0.1 =
     101**Tested**
     102* Tested Ultimate Member version 2.1.6 and WordPress 5.4.2
     103
     104**Fixed**
     105* Tabs not showing in Ultimate Member tab Settings
     106
     107= 1.0.1 =
     108**Notes**
     109* Tested with WordPress 5.4.1 and Ultimate Member 2.1.5
     110* Investigated issue with "headers already sent", no issue found.
    88111
    89112**Fixed**
    90113* Some strings not translating
    91114
    92 **Notes**
    93 * Investigated issue with "headers already sent", no issue found.
    94 * Tested with WordPress 5.4.1 and Ultimate Member 2.1.5
     115= 1.0.0 =
     116* Plugin released into the wild
    95117
    96 = 1.0.1 =
    97 
    98 **Fixed**
    99 * Tabs not showing in Ultimate Member tab Settings
    100 
    101 **Tested**
    102 * Tested Ultimate Member version 2.1.6 and WordPress 5.4.2
    103 
    104 = 1.0.3 =
    105 * Fixed: Tabs not displaying immediately
    106 * Maintenance: Tested with Ultimate Member version
    107 * Maintenance: Updated internal libraries
    108 
    109 = 1.0.4 =
    110 * Fixed: Translations not available for all text
    111 * Maintenance: Tested Ultimate Member 2.5.4 and WordPress 6.1.1
    112 
    113 = 1.0.4.1 =
    114 * Removed code not needed for plugin
    115118
    116119== Upgrade Notice ==
  • um-custom-tab-builder-lite/trunk/um-custom-tab-builder-lite.php

    r2902297 r3017234  
    11<?php
    22/**
    3  * Plugin Name: UM Custom Tab Builder Lite
     3 * Plugin Name: Custom Tab Builder for Ultimate Member
    44 * Plugin URI:  https://suiteplugins.com/downloads/um-custom-tab-builder/
    55 * Description: Adds an option to build tabs for Ultimate Member via admin.
    6  * Version:     1.0.4.1
     6 * Version:     1.0.4.2
    77 * Author:      SuitePlugins
    88 * Author URI:  https://suiteplugins.com
     
    8080     * @since  1.0.0
    8181     */
    82     const VERSION = '1.0.4.1';
     82    const VERSION = '1.0.4.2';
    8383
    8484    /**
  • um-custom-tab-builder-lite/trunk/vendor/autoload.php

    r2871810 r3017234  
    44
    55if (PHP_VERSION_ID < 50600) {
    6     echo 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
    7     exit(1);
     6    if (!headers_sent()) {
     7        header('HTTP/1.1 500 Internal Server Error');
     8    }
     9    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
     10    if (!ini_get('display_errors')) {
     11        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
     12            fwrite(STDERR, $err);
     13        } elseif (!headers_sent()) {
     14            echo $err;
     15        }
     16    }
     17    trigger_error(
     18        $err,
     19        E_USER_ERROR
     20    );
    821}
    922
  • um-custom-tab-builder-lite/trunk/vendor/composer/ClassLoader.php

    r2871810 r3017234  
    4343class ClassLoader
    4444{
    45     /** @var ?string */
     45    /** @var \Closure(string):void */
     46    private static $includeFile;
     47
     48    /** @var string|null */
    4649    private $vendorDir;
    4750
    4851    // PSR-4
    4952    /**
    50      * @var array[]
    51      * @psalm-var array<string, array<string, int>>
     53     * @var array<string, array<string, int>>
    5254     */
    5355    private $prefixLengthsPsr4 = array();
    5456    /**
    55      * @var array[]
    56      * @psalm-var array<string, array<int, string>>
     57     * @var array<string, list<string>>
    5758     */
    5859    private $prefixDirsPsr4 = array();
    5960    /**
    60      * @var array[]
    61      * @psalm-var array<string, string>
     61     * @var list<string>
    6262     */
    6363    private $fallbackDirsPsr4 = array();
     
    6565    // PSR-0
    6666    /**
    67      * @var array[]
    68      * @psalm-var array<string, array<string, string[]>>
     67     * List of PSR-0 prefixes
     68     *
     69     * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
     70     *
     71     * @var array<string, array<string, list<string>>>
    6972     */
    7073    private $prefixesPsr0 = array();
    7174    /**
    72      * @var array[]
    73      * @psalm-var array<string, string>
     75     * @var list<string>
    7476     */
    7577    private $fallbackDirsPsr0 = array();
     
    7981
    8082    /**
    81      * @var string[]
    82      * @psalm-var array<string, string>
     83     * @var array<string, string>
    8384     */
    8485    private $classMap = array();
     
    8889
    8990    /**
    90      * @var bool[]
    91      * @psalm-var array<string, bool>
     91     * @var array<string, bool>
    9292     */
    9393    private $missingClasses = array();
    9494
    95     /** @var ?string */
     95    /** @var string|null */
    9696    private $apcuPrefix;
    9797
    9898    /**
    99      * @var self[]
     99     * @var array<string, self>
    100100     */
    101101    private static $registeredLoaders = array();
    102102
    103103    /**
    104      * @param ?string $vendorDir
     104     * @param string|null $vendorDir
    105105     */
    106106    public function __construct($vendorDir = null)
    107107    {
    108108        $this->vendorDir = $vendorDir;
    109     }
    110 
    111     /**
    112      * @return string[]
     109        self::initializeIncludeClosure();
     110    }
     111
     112    /**
     113     * @return array<string, list<string>>
    113114     */
    114115    public function getPrefixes()
     
    122123
    123124    /**
    124      * @return array[]
    125      * @psalm-return array<string, array<int, string>>
     125     * @return array<string, list<string>>
    126126     */
    127127    public function getPrefixesPsr4()
     
    131131
    132132    /**
    133      * @return array[]
    134      * @psalm-return array<string, string>
     133     * @return list<string>
    135134     */
    136135    public function getFallbackDirs()
     
    140139
    141140    /**
    142      * @return array[]
    143      * @psalm-return array<string, string>
     141     * @return list<string>
    144142     */
    145143    public function getFallbackDirsPsr4()
     
    149147
    150148    /**
    151      * @return string[] Array of classname => path
    152      * @psalm-return array<string, string>
     149     * @return array<string, string> Array of classname => path
    153150     */
    154151    public function getClassMap()
     
    158155
    159156    /**
    160      * @param string[] $classMap Class to filename map
    161      * @psalm-param array<string, string> $classMap
     157     * @param array<string, string> $classMap Class to filename map
    162158     *
    163159     * @return void
     
    176172     * appending or prepending to the ones previously set for this prefix.
    177173     *
    178      * @param string          $prefix  The prefix
    179      * @param string[]|string $paths   The PSR-0 root directories
    180      * @param bool            $prepend Whether to prepend the directories
     174     * @param string              $prefix  The prefix
     175     * @param list<string>|string $paths   The PSR-0 root directories
     176     * @param bool                $prepend Whether to prepend the directories
    181177     *
    182178     * @return void
     
    184180    public function add($prefix, $paths, $prepend = false)
    185181    {
     182        $paths = (array) $paths;
    186183        if (!$prefix) {
    187184            if ($prepend) {
    188185                $this->fallbackDirsPsr0 = array_merge(
    189                     (array) $paths,
     186                    $paths,
    190187                    $this->fallbackDirsPsr0
    191188                );
     
    193190                $this->fallbackDirsPsr0 = array_merge(
    194191                    $this->fallbackDirsPsr0,
    195                     (array) $paths
     192                    $paths
    196193                );
    197194            }
     
    202199        $first = $prefix[0];
    203200        if (!isset($this->prefixesPsr0[$first][$prefix])) {
    204             $this->prefixesPsr0[$first][$prefix] = (array) $paths;
     201            $this->prefixesPsr0[$first][$prefix] = $paths;
    205202
    206203            return;
     
    208205        if ($prepend) {
    209206            $this->prefixesPsr0[$first][$prefix] = array_merge(
    210                 (array) $paths,
     207                $paths,
    211208                $this->prefixesPsr0[$first][$prefix]
    212209            );
     
    214211            $this->prefixesPsr0[$first][$prefix] = array_merge(
    215212                $this->prefixesPsr0[$first][$prefix],
    216                 (array) $paths
     213                $paths
    217214            );
    218215        }
     
    223220     * appending or prepending to the ones previously set for this namespace.
    224221     *
    225      * @param string          $prefix  The prefix/namespace, with trailing '\\'
    226      * @param string[]|string $paths   The PSR-4 base directories
    227      * @param bool            $prepend Whether to prepend the directories
     222     * @param string              $prefix  The prefix/namespace, with trailing '\\'
     223     * @param list<string>|string $paths   The PSR-4 base directories
     224     * @param bool                $prepend Whether to prepend the directories
    228225     *
    229226     * @throws \InvalidArgumentException
     
    233230    public function addPsr4($prefix, $paths, $prepend = false)
    234231    {
     232        $paths = (array) $paths;
    235233        if (!$prefix) {
    236234            // Register directories for the root namespace.
    237235            if ($prepend) {
    238236                $this->fallbackDirsPsr4 = array_merge(
    239                     (array) $paths,
     237                    $paths,
    240238                    $this->fallbackDirsPsr4
    241239                );
     
    243241                $this->fallbackDirsPsr4 = array_merge(
    244242                    $this->fallbackDirsPsr4,
    245                     (array) $paths
     243                    $paths
    246244                );
    247245            }
     
    253251            }
    254252            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
    255             $this->prefixDirsPsr4[$prefix] = (array) $paths;
     253            $this->prefixDirsPsr4[$prefix] = $paths;
    256254        } elseif ($prepend) {
    257255            // Prepend directories for an already registered namespace.
    258256            $this->prefixDirsPsr4[$prefix] = array_merge(
    259                 (array) $paths,
     257                $paths,
    260258                $this->prefixDirsPsr4[$prefix]
    261259            );
     
    264262            $this->prefixDirsPsr4[$prefix] = array_merge(
    265263                $this->prefixDirsPsr4[$prefix],
    266                 (array) $paths
     264                $paths
    267265            );
    268266        }
     
    273271     * replacing any others previously set for this prefix.
    274272     *
    275      * @param string          $prefix The prefix
    276      * @param string[]|string $paths  The PSR-0 base directories
     273     * @param string              $prefix The prefix
     274     * @param list<string>|string $paths  The PSR-0 base directories
    277275     *
    278276     * @return void
     
    291289     * replacing any others previously set for this namespace.
    292290     *
    293      * @param string          $prefix The prefix/namespace, with trailing '\\'
    294      * @param string[]|string $paths  The PSR-4 base directories
     291     * @param string              $prefix The prefix/namespace, with trailing '\\'
     292     * @param list<string>|string $paths  The PSR-4 base directories
    295293     *
    296294     * @throws \InvalidArgumentException
     
    426424    {
    427425        if ($file = $this->findFile($class)) {
    428             includeFile($file);
     426            $includeFile = self::$includeFile;
     427            $includeFile($file);
    429428
    430429            return true;
     
    477476
    478477    /**
    479      * Returns the currently registered loaders indexed by their corresponding vendor directories.
    480      *
    481      * @return self[]
     478     * Returns the currently registered loaders keyed by their corresponding vendor directories.
     479     *
     480     * @return array<string, self>
    482481     */
    483482    public static function getRegisteredLoaders()
     
    556555        return false;
    557556    }
     557
     558    /**
     559     * @return void
     560     */
     561    private static function initializeIncludeClosure()
     562    {
     563        if (self::$includeFile !== null) {
     564            return;
     565        }
     566
     567        /**
     568         * Scope isolated include.
     569         *
     570         * Prevents access to $this/self from included files.
     571         *
     572         * @param  string $file
     573         * @return void
     574         */
     575        self::$includeFile = \Closure::bind(static function($file) {
     576            include $file;
     577        }, null, null);
     578    }
    558579}
    559 
    560 /**
    561  * Scope isolated include.
    562  *
    563  * Prevents access to $this/self from included files.
    564  *
    565  * @param  string $file
    566  * @return void
    567  * @private
    568  */
    569 function includeFile($file)
    570 {
    571     include $file;
    572 }
  • um-custom-tab-builder-lite/trunk/vendor/composer/InstalledVersions.php

    r2871810 r3017234  
    9999        foreach (self::getInstalled() as $installed) {
    100100            if (isset($installed['versions'][$packageName])) {
    101                 return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']);
     101                return $includeDevRequirements || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
    102102            }
    103103        }
     
    120120    public static function satisfies(VersionParser $parser, $packageName, $constraint)
    121121    {
    122         $constraint = $parser->parseConstraints($constraint);
     122        $constraint = $parser->parseConstraints((string) $constraint);
    123123        $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
    124124
     
    329329                    $installed[] = self::$installedByVendor[$vendorDir];
    330330                } elseif (is_file($vendorDir.'/composer/installed.php')) {
    331                     $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php';
     331                    /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
     332                    $required = require $vendorDir.'/composer/installed.php';
     333                    $installed[] = self::$installedByVendor[$vendorDir] = $required;
    332334                    if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
    333335                        self::$installed = $installed[count($installed) - 1];
     
    341343            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
    342344            if (substr(__DIR__, -8, 1) !== 'C') {
    343                 self::$installed = require __DIR__ . '/installed.php';
     345                /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
     346                $required = require __DIR__ . '/installed.php';
     347                self::$installed = $required;
    344348            } else {
    345349                self::$installed = array();
    346350            }
    347351        }
    348         $installed[] = self::$installed;
     352
     353        if (self::$installed !== array()) {
     354            $installed[] = self::$installed;
     355        }
    349356
    350357        return $installed;
  • um-custom-tab-builder-lite/trunk/vendor/composer/installed.php

    r2871810 r3017234  
    44        'pretty_version' => 'dev-master',
    55        'version' => 'dev-master',
    6         'reference' => '28991c0f3a0e2f3e6632b159cf7b8448542ded39',
     6        'reference' => '8889d524945ff4d6d591d8301e1750cd9542cce4',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-master',
    1515            'version' => 'dev-master',
    16             'reference' => '28991c0f3a0e2f3e6632b159cf7b8448542ded39',
     16            'reference' => '8889d524945ff4d6d591d8301e1750cd9542cce4',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
Note: See TracChangeset for help on using the changeset viewer.