Changeset 3017234
- Timestamp:
- 01/04/2024 02:04:58 AM (2 years ago)
- Location:
- um-custom-tab-builder-lite
- Files:
-
- 18 edited
- 1 copied
-
tags/1.0.4.2 (copied) (copied from um-custom-tab-builder-lite/trunk)
-
tags/1.0.4.2/includes/class-core.php (modified) (1 diff)
-
tags/1.0.4.2/includes/class-tab.php (modified) (2 diffs)
-
tags/1.0.4.2/includes/icon-picker.php (modified) (2 diffs)
-
tags/1.0.4.2/readme.txt (modified) (2 diffs)
-
tags/1.0.4.2/um-custom-tab-builder-lite.php (modified) (2 diffs)
-
tags/1.0.4.2/vendor/autoload.php (modified) (1 diff)
-
tags/1.0.4.2/vendor/composer/ClassLoader.php (modified) (25 diffs)
-
tags/1.0.4.2/vendor/composer/InstalledVersions.php (modified) (4 diffs)
-
tags/1.0.4.2/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/includes/class-core.php (modified) (1 diff)
-
trunk/includes/class-tab.php (modified) (2 diffs)
-
trunk/includes/icon-picker.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/um-custom-tab-builder-lite.php (modified) (2 diffs)
-
trunk/vendor/autoload.php (modified) (1 diff)
-
trunk/vendor/composer/ClassLoader.php (modified) (25 diffs)
-
trunk/vendor/composer/InstalledVersions.php (modified) (4 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
um-custom-tab-builder-lite/tags/1.0.4.2/includes/class-core.php
r2871810 r3017234 133 133 } 134 134 } 135 136 135 update_option( 'um_options', $options ); 137 136 } -
um-custom-tab-builder-lite/tags/1.0.4.2/includes/class-tab.php
r2333915 r3017234 224 224 } 225 225 226 //$url = remove_query_arg( 'profiletab', $url );227 226 $url = remove_query_arg( 'subnav', $url ); 228 //$url = add_query_arg( 'profiletab', 'main', $url );229 227 $url = add_query_arg( 'um_action', 'edit', $url ); 230 228 … … 239 237 public function um_is_on_edit_profile() { 240 238 if (isset( $_REQUEST['profiletab'] ) && isset( $_REQUEST['um_action'] )) { 241 if ( $_REQUEST['um_action']== 'edit') {239 if ( sanitize_text_field( $_REQUEST['um_action'] ) == 'edit') { 242 240 return true; 243 241 } -
um-custom-tab-builder-lite/tags/1.0.4.2/includes/icon-picker.php
r2000609 r3017234 67 67 $icons = $this->default_icons; 68 68 } 69 //echo '<select name="' . $field_type->_name() .'" id="' . $field_type->_id($icon) . '">'; 69 70 70 echo '<ul class="cmb2-icon-picker-list">'; 71 71 … … 93 93 94 94 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);98 95 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>'; 100 99 101 100 echo '</li>'; 102 //echo '</option>';103 101 } 104 102 105 103 echo '</ul>'; 106 //echo '</select>';107 104 108 105 // Display our description if one exists -
um-custom-tab-builder-lite/tags/1.0.4.2/readme.txt
r2902297 r3017234 4 4 Tags: ultimatemember, ultimate member, ultimate member profile tabs, ultimatemember custom tabs, ultimate member iframe, ultimate member contact form 5 5 Requires at least: 3.0.1 6 Tested up to: 6. 27 Stable tag: 1.0.4. 16 Tested up to: 6.4.2 7 Stable tag: 1.0.4.2 8 8 Requires PHP: 5.6 9 9 License: GPLv2 or later 10 10 License URI: http://www.gnu.org/licenses/gpl-2.0.html 11 11 12 An easy way to add custom profile tabs to Ultimate Member Profile. Ultimate Member 2.0 compatible 12 Revolutionize 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. 13 13 14 14 == Description == 15 15 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 17 17 18 = Features = 18 Elevate 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. 19 19 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 25 21 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. 27 27 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 35 29 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. 30 Unlock the full power of Ultimate Member with these exclusive Pro features: 37 31 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. 39 35 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 41 Elevate your Ultimate Member profiles today and create a more engaging, personalized user experience! 42 42 43 43 … … 82 82 == Changelog == 83 83 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 86 99 87 100 = 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. 88 111 89 112 **Fixed** 90 113 * Some strings not translating 91 114 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 95 117 96 = 1.0.1 =97 98 **Fixed**99 * Tabs not showing in Ultimate Member tab Settings100 101 **Tested**102 * Tested Ultimate Member version 2.1.6 and WordPress 5.4.2103 104 = 1.0.3 =105 * Fixed: Tabs not displaying immediately106 * Maintenance: Tested with Ultimate Member version107 * Maintenance: Updated internal libraries108 109 = 1.0.4 =110 * Fixed: Translations not available for all text111 * Maintenance: Tested Ultimate Member 2.5.4 and WordPress 6.1.1112 113 = 1.0.4.1 =114 * Removed code not needed for plugin115 118 116 119 == Upgrade Notice == -
um-custom-tab-builder-lite/tags/1.0.4.2/um-custom-tab-builder-lite.php
r2902297 r3017234 1 1 <?php 2 2 /** 3 * Plugin Name: UM Custom Tab Builder Lite3 * Plugin Name: Custom Tab Builder for Ultimate Member 4 4 * Plugin URI: https://suiteplugins.com/downloads/um-custom-tab-builder/ 5 5 * Description: Adds an option to build tabs for Ultimate Member via admin. 6 * Version: 1.0.4. 16 * Version: 1.0.4.2 7 7 * Author: SuitePlugins 8 8 * Author URI: https://suiteplugins.com … … 80 80 * @since 1.0.0 81 81 */ 82 const VERSION = '1.0.4. 1';82 const VERSION = '1.0.4.2'; 83 83 84 84 /** -
um-custom-tab-builder-lite/tags/1.0.4.2/vendor/autoload.php
r2871810 r3017234 4 4 5 5 if (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 ); 8 21 } 9 22 -
um-custom-tab-builder-lite/tags/1.0.4.2/vendor/composer/ClassLoader.php
r2871810 r3017234 43 43 class ClassLoader 44 44 { 45 /** @var ?string */ 45 /** @var \Closure(string):void */ 46 private static $includeFile; 47 48 /** @var string|null */ 46 49 private $vendorDir; 47 50 48 51 // PSR-4 49 52 /** 50 * @var array[] 51 * @psalm-var array<string, array<string, int>> 53 * @var array<string, array<string, int>> 52 54 */ 53 55 private $prefixLengthsPsr4 = array(); 54 56 /** 55 * @var array[] 56 * @psalm-var array<string, array<int, string>> 57 * @var array<string, list<string>> 57 58 */ 58 59 private $prefixDirsPsr4 = array(); 59 60 /** 60 * @var array[] 61 * @psalm-var array<string, string> 61 * @var list<string> 62 62 */ 63 63 private $fallbackDirsPsr4 = array(); … … 65 65 // PSR-0 66 66 /** 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>>> 69 72 */ 70 73 private $prefixesPsr0 = array(); 71 74 /** 72 * @var array[] 73 * @psalm-var array<string, string> 75 * @var list<string> 74 76 */ 75 77 private $fallbackDirsPsr0 = array(); … … 79 81 80 82 /** 81 * @var string[] 82 * @psalm-var array<string, string> 83 * @var array<string, string> 83 84 */ 84 85 private $classMap = array(); … … 88 89 89 90 /** 90 * @var bool[] 91 * @psalm-var array<string, bool> 91 * @var array<string, bool> 92 92 */ 93 93 private $missingClasses = array(); 94 94 95 /** @var ?string*/95 /** @var string|null */ 96 96 private $apcuPrefix; 97 97 98 98 /** 99 * @var self[]99 * @var array<string, self> 100 100 */ 101 101 private static $registeredLoaders = array(); 102 102 103 103 /** 104 * @param ?string$vendorDir104 * @param string|null $vendorDir 105 105 */ 106 106 public function __construct($vendorDir = null) 107 107 { 108 108 $this->vendorDir = $vendorDir; 109 } 110 111 /** 112 * @return string[] 109 self::initializeIncludeClosure(); 110 } 111 112 /** 113 * @return array<string, list<string>> 113 114 */ 114 115 public function getPrefixes() … … 122 123 123 124 /** 124 * @return array[] 125 * @psalm-return array<string, array<int, string>> 125 * @return array<string, list<string>> 126 126 */ 127 127 public function getPrefixesPsr4() … … 131 131 132 132 /** 133 * @return array[] 134 * @psalm-return array<string, string> 133 * @return list<string> 135 134 */ 136 135 public function getFallbackDirs() … … 140 139 141 140 /** 142 * @return array[] 143 * @psalm-return array<string, string> 141 * @return list<string> 144 142 */ 145 143 public function getFallbackDirsPsr4() … … 149 147 150 148 /** 151 * @return string[] Array of classname => path 152 * @psalm-return array<string, string> 149 * @return array<string, string> Array of classname => path 153 150 */ 154 151 public function getClassMap() … … 158 155 159 156 /** 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 162 158 * 163 159 * @return void … … 176 172 * appending or prepending to the ones previously set for this prefix. 177 173 * 178 * @param string $prefix The prefix179 * @param string[]|string $paths The PSR-0 root directories180 * @param bool $prepend Whether to prepend the directories174 * @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 181 177 * 182 178 * @return void … … 184 180 public function add($prefix, $paths, $prepend = false) 185 181 { 182 $paths = (array) $paths; 186 183 if (!$prefix) { 187 184 if ($prepend) { 188 185 $this->fallbackDirsPsr0 = array_merge( 189 (array)$paths,186 $paths, 190 187 $this->fallbackDirsPsr0 191 188 ); … … 193 190 $this->fallbackDirsPsr0 = array_merge( 194 191 $this->fallbackDirsPsr0, 195 (array)$paths192 $paths 196 193 ); 197 194 } … … 202 199 $first = $prefix[0]; 203 200 if (!isset($this->prefixesPsr0[$first][$prefix])) { 204 $this->prefixesPsr0[$first][$prefix] = (array)$paths;201 $this->prefixesPsr0[$first][$prefix] = $paths; 205 202 206 203 return; … … 208 205 if ($prepend) { 209 206 $this->prefixesPsr0[$first][$prefix] = array_merge( 210 (array)$paths,207 $paths, 211 208 $this->prefixesPsr0[$first][$prefix] 212 209 ); … … 214 211 $this->prefixesPsr0[$first][$prefix] = array_merge( 215 212 $this->prefixesPsr0[$first][$prefix], 216 (array)$paths213 $paths 217 214 ); 218 215 } … … 223 220 * appending or prepending to the ones previously set for this namespace. 224 221 * 225 * @param string $prefix The prefix/namespace, with trailing '\\'226 * @param string[]|string $paths The PSR-4 base directories227 * @param bool $prepend Whether to prepend the directories222 * @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 228 225 * 229 226 * @throws \InvalidArgumentException … … 233 230 public function addPsr4($prefix, $paths, $prepend = false) 234 231 { 232 $paths = (array) $paths; 235 233 if (!$prefix) { 236 234 // Register directories for the root namespace. 237 235 if ($prepend) { 238 236 $this->fallbackDirsPsr4 = array_merge( 239 (array)$paths,237 $paths, 240 238 $this->fallbackDirsPsr4 241 239 ); … … 243 241 $this->fallbackDirsPsr4 = array_merge( 244 242 $this->fallbackDirsPsr4, 245 (array)$paths243 $paths 246 244 ); 247 245 } … … 253 251 } 254 252 $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; 255 $this->prefixDirsPsr4[$prefix] = (array)$paths;253 $this->prefixDirsPsr4[$prefix] = $paths; 256 254 } elseif ($prepend) { 257 255 // Prepend directories for an already registered namespace. 258 256 $this->prefixDirsPsr4[$prefix] = array_merge( 259 (array)$paths,257 $paths, 260 258 $this->prefixDirsPsr4[$prefix] 261 259 ); … … 264 262 $this->prefixDirsPsr4[$prefix] = array_merge( 265 263 $this->prefixDirsPsr4[$prefix], 266 (array)$paths264 $paths 267 265 ); 268 266 } … … 273 271 * replacing any others previously set for this prefix. 274 272 * 275 * @param string $prefix The prefix276 * @param string[]|string $paths The PSR-0 base directories273 * @param string $prefix The prefix 274 * @param list<string>|string $paths The PSR-0 base directories 277 275 * 278 276 * @return void … … 291 289 * replacing any others previously set for this namespace. 292 290 * 293 * @param string $prefix The prefix/namespace, with trailing '\\'294 * @param string[]|string $paths The PSR-4 base directories291 * @param string $prefix The prefix/namespace, with trailing '\\' 292 * @param list<string>|string $paths The PSR-4 base directories 295 293 * 296 294 * @throws \InvalidArgumentException … … 426 424 { 427 425 if ($file = $this->findFile($class)) { 428 includeFile($file); 426 $includeFile = self::$includeFile; 427 $includeFile($file); 429 428 430 429 return true; … … 477 476 478 477 /** 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> 482 481 */ 483 482 public static function getRegisteredLoaders() … … 556 555 return false; 557 556 } 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 } 558 579 } 559 560 /**561 * Scope isolated include.562 *563 * Prevents access to $this/self from included files.564 *565 * @param string $file566 * @return void567 * @private568 */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 99 99 foreach (self::getInstalled() as $installed) { 100 100 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; 102 102 } 103 103 } … … 120 120 public static function satisfies(VersionParser $parser, $packageName, $constraint) 121 121 { 122 $constraint = $parser->parseConstraints( $constraint);122 $constraint = $parser->parseConstraints((string) $constraint); 123 123 $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); 124 124 … … 329 329 $installed[] = self::$installedByVendor[$vendorDir]; 330 330 } 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; 332 334 if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { 333 335 self::$installed = $installed[count($installed) - 1]; … … 341 343 // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 342 344 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; 344 348 } else { 345 349 self::$installed = array(); 346 350 } 347 351 } 348 $installed[] = self::$installed; 352 353 if (self::$installed !== array()) { 354 $installed[] = self::$installed; 355 } 349 356 350 357 return $installed; -
um-custom-tab-builder-lite/tags/1.0.4.2/vendor/composer/installed.php
r2871810 r3017234 4 4 'pretty_version' => 'dev-master', 5 5 'version' => 'dev-master', 6 'reference' => ' 28991c0f3a0e2f3e6632b159cf7b8448542ded39',6 'reference' => '8889d524945ff4d6d591d8301e1750cd9542cce4', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 14 14 'pretty_version' => 'dev-master', 15 15 'version' => 'dev-master', 16 'reference' => ' 28991c0f3a0e2f3e6632b159cf7b8448542ded39',16 'reference' => '8889d524945ff4d6d591d8301e1750cd9542cce4', 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../../', -
um-custom-tab-builder-lite/trunk/includes/class-core.php
r2871810 r3017234 133 133 } 134 134 } 135 136 135 update_option( 'um_options', $options ); 137 136 } -
um-custom-tab-builder-lite/trunk/includes/class-tab.php
r2333915 r3017234 224 224 } 225 225 226 //$url = remove_query_arg( 'profiletab', $url );227 226 $url = remove_query_arg( 'subnav', $url ); 228 //$url = add_query_arg( 'profiletab', 'main', $url );229 227 $url = add_query_arg( 'um_action', 'edit', $url ); 230 228 … … 239 237 public function um_is_on_edit_profile() { 240 238 if (isset( $_REQUEST['profiletab'] ) && isset( $_REQUEST['um_action'] )) { 241 if ( $_REQUEST['um_action']== 'edit') {239 if ( sanitize_text_field( $_REQUEST['um_action'] ) == 'edit') { 242 240 return true; 243 241 } -
um-custom-tab-builder-lite/trunk/includes/icon-picker.php
r2000609 r3017234 67 67 $icons = $this->default_icons; 68 68 } 69 //echo '<select name="' . $field_type->_name() .'" id="' . $field_type->_id($icon) . '">'; 69 70 70 echo '<ul class="cmb2-icon-picker-list">'; 71 71 … … 93 93 94 94 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);98 95 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>'; 100 99 101 100 echo '</li>'; 102 //echo '</option>';103 101 } 104 102 105 103 echo '</ul>'; 106 //echo '</select>';107 104 108 105 // Display our description if one exists -
um-custom-tab-builder-lite/trunk/readme.txt
r2902297 r3017234 4 4 Tags: ultimatemember, ultimate member, ultimate member profile tabs, ultimatemember custom tabs, ultimate member iframe, ultimate member contact form 5 5 Requires at least: 3.0.1 6 Tested up to: 6. 27 Stable tag: 1.0.4. 16 Tested up to: 6.4.2 7 Stable tag: 1.0.4.2 8 8 Requires PHP: 5.6 9 9 License: GPLv2 or later 10 10 License URI: http://www.gnu.org/licenses/gpl-2.0.html 11 11 12 An easy way to add custom profile tabs to Ultimate Member Profile. Ultimate Member 2.0 compatible 12 Revolutionize 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. 13 13 14 14 == Description == 15 15 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 17 17 18 = Features = 18 Elevate 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. 19 19 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 25 21 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. 27 27 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 35 29 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. 30 Unlock the full power of Ultimate Member with these exclusive Pro features: 37 31 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. 39 35 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 41 Elevate your Ultimate Member profiles today and create a more engaging, personalized user experience! 42 42 43 43 … … 82 82 == Changelog == 83 83 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 86 99 87 100 = 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. 88 111 89 112 **Fixed** 90 113 * Some strings not translating 91 114 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 95 117 96 = 1.0.1 =97 98 **Fixed**99 * Tabs not showing in Ultimate Member tab Settings100 101 **Tested**102 * Tested Ultimate Member version 2.1.6 and WordPress 5.4.2103 104 = 1.0.3 =105 * Fixed: Tabs not displaying immediately106 * Maintenance: Tested with Ultimate Member version107 * Maintenance: Updated internal libraries108 109 = 1.0.4 =110 * Fixed: Translations not available for all text111 * Maintenance: Tested Ultimate Member 2.5.4 and WordPress 6.1.1112 113 = 1.0.4.1 =114 * Removed code not needed for plugin115 118 116 119 == Upgrade Notice == -
um-custom-tab-builder-lite/trunk/um-custom-tab-builder-lite.php
r2902297 r3017234 1 1 <?php 2 2 /** 3 * Plugin Name: UM Custom Tab Builder Lite3 * Plugin Name: Custom Tab Builder for Ultimate Member 4 4 * Plugin URI: https://suiteplugins.com/downloads/um-custom-tab-builder/ 5 5 * Description: Adds an option to build tabs for Ultimate Member via admin. 6 * Version: 1.0.4. 16 * Version: 1.0.4.2 7 7 * Author: SuitePlugins 8 8 * Author URI: https://suiteplugins.com … … 80 80 * @since 1.0.0 81 81 */ 82 const VERSION = '1.0.4. 1';82 const VERSION = '1.0.4.2'; 83 83 84 84 /** -
um-custom-tab-builder-lite/trunk/vendor/autoload.php
r2871810 r3017234 4 4 5 5 if (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 ); 8 21 } 9 22 -
um-custom-tab-builder-lite/trunk/vendor/composer/ClassLoader.php
r2871810 r3017234 43 43 class ClassLoader 44 44 { 45 /** @var ?string */ 45 /** @var \Closure(string):void */ 46 private static $includeFile; 47 48 /** @var string|null */ 46 49 private $vendorDir; 47 50 48 51 // PSR-4 49 52 /** 50 * @var array[] 51 * @psalm-var array<string, array<string, int>> 53 * @var array<string, array<string, int>> 52 54 */ 53 55 private $prefixLengthsPsr4 = array(); 54 56 /** 55 * @var array[] 56 * @psalm-var array<string, array<int, string>> 57 * @var array<string, list<string>> 57 58 */ 58 59 private $prefixDirsPsr4 = array(); 59 60 /** 60 * @var array[] 61 * @psalm-var array<string, string> 61 * @var list<string> 62 62 */ 63 63 private $fallbackDirsPsr4 = array(); … … 65 65 // PSR-0 66 66 /** 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>>> 69 72 */ 70 73 private $prefixesPsr0 = array(); 71 74 /** 72 * @var array[] 73 * @psalm-var array<string, string> 75 * @var list<string> 74 76 */ 75 77 private $fallbackDirsPsr0 = array(); … … 79 81 80 82 /** 81 * @var string[] 82 * @psalm-var array<string, string> 83 * @var array<string, string> 83 84 */ 84 85 private $classMap = array(); … … 88 89 89 90 /** 90 * @var bool[] 91 * @psalm-var array<string, bool> 91 * @var array<string, bool> 92 92 */ 93 93 private $missingClasses = array(); 94 94 95 /** @var ?string*/95 /** @var string|null */ 96 96 private $apcuPrefix; 97 97 98 98 /** 99 * @var self[]99 * @var array<string, self> 100 100 */ 101 101 private static $registeredLoaders = array(); 102 102 103 103 /** 104 * @param ?string$vendorDir104 * @param string|null $vendorDir 105 105 */ 106 106 public function __construct($vendorDir = null) 107 107 { 108 108 $this->vendorDir = $vendorDir; 109 } 110 111 /** 112 * @return string[] 109 self::initializeIncludeClosure(); 110 } 111 112 /** 113 * @return array<string, list<string>> 113 114 */ 114 115 public function getPrefixes() … … 122 123 123 124 /** 124 * @return array[] 125 * @psalm-return array<string, array<int, string>> 125 * @return array<string, list<string>> 126 126 */ 127 127 public function getPrefixesPsr4() … … 131 131 132 132 /** 133 * @return array[] 134 * @psalm-return array<string, string> 133 * @return list<string> 135 134 */ 136 135 public function getFallbackDirs() … … 140 139 141 140 /** 142 * @return array[] 143 * @psalm-return array<string, string> 141 * @return list<string> 144 142 */ 145 143 public function getFallbackDirsPsr4() … … 149 147 150 148 /** 151 * @return string[] Array of classname => path 152 * @psalm-return array<string, string> 149 * @return array<string, string> Array of classname => path 153 150 */ 154 151 public function getClassMap() … … 158 155 159 156 /** 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 162 158 * 163 159 * @return void … … 176 172 * appending or prepending to the ones previously set for this prefix. 177 173 * 178 * @param string $prefix The prefix179 * @param string[]|string $paths The PSR-0 root directories180 * @param bool $prepend Whether to prepend the directories174 * @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 181 177 * 182 178 * @return void … … 184 180 public function add($prefix, $paths, $prepend = false) 185 181 { 182 $paths = (array) $paths; 186 183 if (!$prefix) { 187 184 if ($prepend) { 188 185 $this->fallbackDirsPsr0 = array_merge( 189 (array)$paths,186 $paths, 190 187 $this->fallbackDirsPsr0 191 188 ); … … 193 190 $this->fallbackDirsPsr0 = array_merge( 194 191 $this->fallbackDirsPsr0, 195 (array)$paths192 $paths 196 193 ); 197 194 } … … 202 199 $first = $prefix[0]; 203 200 if (!isset($this->prefixesPsr0[$first][$prefix])) { 204 $this->prefixesPsr0[$first][$prefix] = (array)$paths;201 $this->prefixesPsr0[$first][$prefix] = $paths; 205 202 206 203 return; … … 208 205 if ($prepend) { 209 206 $this->prefixesPsr0[$first][$prefix] = array_merge( 210 (array)$paths,207 $paths, 211 208 $this->prefixesPsr0[$first][$prefix] 212 209 ); … … 214 211 $this->prefixesPsr0[$first][$prefix] = array_merge( 215 212 $this->prefixesPsr0[$first][$prefix], 216 (array)$paths213 $paths 217 214 ); 218 215 } … … 223 220 * appending or prepending to the ones previously set for this namespace. 224 221 * 225 * @param string $prefix The prefix/namespace, with trailing '\\'226 * @param string[]|string $paths The PSR-4 base directories227 * @param bool $prepend Whether to prepend the directories222 * @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 228 225 * 229 226 * @throws \InvalidArgumentException … … 233 230 public function addPsr4($prefix, $paths, $prepend = false) 234 231 { 232 $paths = (array) $paths; 235 233 if (!$prefix) { 236 234 // Register directories for the root namespace. 237 235 if ($prepend) { 238 236 $this->fallbackDirsPsr4 = array_merge( 239 (array)$paths,237 $paths, 240 238 $this->fallbackDirsPsr4 241 239 ); … … 243 241 $this->fallbackDirsPsr4 = array_merge( 244 242 $this->fallbackDirsPsr4, 245 (array)$paths243 $paths 246 244 ); 247 245 } … … 253 251 } 254 252 $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; 255 $this->prefixDirsPsr4[$prefix] = (array)$paths;253 $this->prefixDirsPsr4[$prefix] = $paths; 256 254 } elseif ($prepend) { 257 255 // Prepend directories for an already registered namespace. 258 256 $this->prefixDirsPsr4[$prefix] = array_merge( 259 (array)$paths,257 $paths, 260 258 $this->prefixDirsPsr4[$prefix] 261 259 ); … … 264 262 $this->prefixDirsPsr4[$prefix] = array_merge( 265 263 $this->prefixDirsPsr4[$prefix], 266 (array)$paths264 $paths 267 265 ); 268 266 } … … 273 271 * replacing any others previously set for this prefix. 274 272 * 275 * @param string $prefix The prefix276 * @param string[]|string $paths The PSR-0 base directories273 * @param string $prefix The prefix 274 * @param list<string>|string $paths The PSR-0 base directories 277 275 * 278 276 * @return void … … 291 289 * replacing any others previously set for this namespace. 292 290 * 293 * @param string $prefix The prefix/namespace, with trailing '\\'294 * @param string[]|string $paths The PSR-4 base directories291 * @param string $prefix The prefix/namespace, with trailing '\\' 292 * @param list<string>|string $paths The PSR-4 base directories 295 293 * 296 294 * @throws \InvalidArgumentException … … 426 424 { 427 425 if ($file = $this->findFile($class)) { 428 includeFile($file); 426 $includeFile = self::$includeFile; 427 $includeFile($file); 429 428 430 429 return true; … … 477 476 478 477 /** 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> 482 481 */ 483 482 public static function getRegisteredLoaders() … … 556 555 return false; 557 556 } 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 } 558 579 } 559 560 /**561 * Scope isolated include.562 *563 * Prevents access to $this/self from included files.564 *565 * @param string $file566 * @return void567 * @private568 */569 function includeFile($file)570 {571 include $file;572 } -
um-custom-tab-builder-lite/trunk/vendor/composer/InstalledVersions.php
r2871810 r3017234 99 99 foreach (self::getInstalled() as $installed) { 100 100 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; 102 102 } 103 103 } … … 120 120 public static function satisfies(VersionParser $parser, $packageName, $constraint) 121 121 { 122 $constraint = $parser->parseConstraints( $constraint);122 $constraint = $parser->parseConstraints((string) $constraint); 123 123 $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); 124 124 … … 329 329 $installed[] = self::$installedByVendor[$vendorDir]; 330 330 } 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; 332 334 if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { 333 335 self::$installed = $installed[count($installed) - 1]; … … 341 343 // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 342 344 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; 344 348 } else { 345 349 self::$installed = array(); 346 350 } 347 351 } 348 $installed[] = self::$installed; 352 353 if (self::$installed !== array()) { 354 $installed[] = self::$installed; 355 } 349 356 350 357 return $installed; -
um-custom-tab-builder-lite/trunk/vendor/composer/installed.php
r2871810 r3017234 4 4 'pretty_version' => 'dev-master', 5 5 'version' => 'dev-master', 6 'reference' => ' 28991c0f3a0e2f3e6632b159cf7b8448542ded39',6 'reference' => '8889d524945ff4d6d591d8301e1750cd9542cce4', 7 7 'type' => 'library', 8 8 'install_path' => __DIR__ . '/../../', … … 14 14 'pretty_version' => 'dev-master', 15 15 'version' => 'dev-master', 16 'reference' => ' 28991c0f3a0e2f3e6632b159cf7b8448542ded39',16 'reference' => '8889d524945ff4d6d591d8301e1750cd9542cce4', 17 17 'type' => 'library', 18 18 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.