From 0955b0c0cc76dab9a9f7702a539bddd508128096 Mon Sep 17 00:00:00 2001 From: eldov Date: Sun, 30 Aug 2026 05:16:58 +0200 Subject: [PATCH] feat: initial import of the23 theme for lamp-link --- the23/auth/2fa.php | 65 +++ the23/auth/email2fa.php | 73 +++ the23/auth/forgot.php | 44 ++ the23/auth/invite.php | 74 +++ the23/auth/login.php | 113 +++++ the23/auth/register.php | 110 +++++ the23/auth/reset.php | 49 ++ the23/blog/author.php | 85 ++++ the23/blog/categories.php | 43 ++ the23/blog/index.php | 57 +++ the23/blog/menu.php | 55 +++ the23/blog/partial.php | 24 + the23/blog/search.php | 51 +++ the23/blog/single.php | 116 +++++ the23/class/themeSettings.php | 672 +++++++++++++++++++++++++++ the23/config.json | 15 + the23/email.php | 138 ++++++ the23/errors/404.php | 63 +++ the23/errors/disabled.php | 61 +++ the23/errors/expired.php | 60 +++ the23/functions.php | 28 ++ the23/gates/custom.php | 25 + the23/gates/domain.php | 21 + the23/gates/frame.php | 20 + the23/gates/list.php | 35 ++ the23/gates/media.php | 46 ++ the23/gates/password.php | 32 ++ the23/gates/splash.php | 39 ++ the23/help/category.php | 46 ++ the23/help/index.php | 55 +++ the23/help/search.php | 36 ++ the23/help/single.php | 39 ++ the23/help/top.php | 18 + the23/index.php | 828 ++++++++++++++++++++++++++++++++++ the23/layouts/api.php | 61 +++ the23/layouts/auth.php | 55 +++ the23/layouts/main.php | 65 +++ the23/layouts/stats.php | 68 +++ the23/maintenance.php | 28 ++ the23/pages/affiliate.php | 50 ++ the23/pages/api.php | 415 +++++++++++++++++ the23/pages/bio.php | 200 ++++++++ the23/pages/consent.php | 21 + the23/pages/contact.php | 73 +++ the23/pages/index.php | 14 + the23/pages/link.php | 548 ++++++++++++++++++++++ the23/pages/main.php | 14 + the23/pages/qr.php | 487 ++++++++++++++++++++ the23/pages/report.php | 42 ++ the23/partials/footer.php | 127 ++++++ the23/partials/languagejs.php | 44 ++ the23/partials/main_menu.php | 239 ++++++++++ the23/partials/stats_nav.php | 25 + the23/pricing/categorized.php | 186 ++++++++ the23/pricing/checkout.php | 231 ++++++++++ the23/pricing/index.php | 83 ++++ the23/pricing/list.php | 70 +++ the23/pricing/table.php | 143 ++++++ the23/private.php | 18 + the23/screenshot.png | Bin 0 -> 16748 bytes 60 files changed, 6543 insertions(+) create mode 100644 the23/auth/2fa.php create mode 100644 the23/auth/email2fa.php create mode 100644 the23/auth/forgot.php create mode 100644 the23/auth/invite.php create mode 100644 the23/auth/login.php create mode 100644 the23/auth/register.php create mode 100644 the23/auth/reset.php create mode 100644 the23/blog/author.php create mode 100644 the23/blog/categories.php create mode 100644 the23/blog/index.php create mode 100644 the23/blog/menu.php create mode 100644 the23/blog/partial.php create mode 100644 the23/blog/search.php create mode 100644 the23/blog/single.php create mode 100644 the23/class/themeSettings.php create mode 100644 the23/config.json create mode 100644 the23/email.php create mode 100644 the23/errors/404.php create mode 100644 the23/errors/disabled.php create mode 100644 the23/errors/expired.php create mode 100644 the23/functions.php create mode 100644 the23/gates/custom.php create mode 100644 the23/gates/domain.php create mode 100644 the23/gates/frame.php create mode 100644 the23/gates/list.php create mode 100644 the23/gates/media.php create mode 100644 the23/gates/password.php create mode 100644 the23/gates/splash.php create mode 100644 the23/help/category.php create mode 100644 the23/help/index.php create mode 100644 the23/help/search.php create mode 100644 the23/help/single.php create mode 100644 the23/help/top.php create mode 100644 the23/index.php create mode 100644 the23/layouts/api.php create mode 100644 the23/layouts/auth.php create mode 100644 the23/layouts/main.php create mode 100644 the23/layouts/stats.php create mode 100644 the23/maintenance.php create mode 100644 the23/pages/affiliate.php create mode 100644 the23/pages/api.php create mode 100644 the23/pages/bio.php create mode 100644 the23/pages/consent.php create mode 100644 the23/pages/contact.php create mode 100644 the23/pages/index.php create mode 100644 the23/pages/link.php create mode 100644 the23/pages/main.php create mode 100644 the23/pages/qr.php create mode 100644 the23/pages/report.php create mode 100644 the23/partials/footer.php create mode 100644 the23/partials/languagejs.php create mode 100644 the23/partials/main_menu.php create mode 100644 the23/partials/stats_nav.php create mode 100644 the23/pricing/categorized.php create mode 100644 the23/pricing/checkout.php create mode 100644 the23/pricing/index.php create mode 100644 the23/pricing/list.php create mode 100644 the23/pricing/table.php create mode 100644 the23/private.php create mode 100644 the23/screenshot.png diff --git a/the23/auth/2fa.php b/the23/auth/2fa.php new file mode 100644 index 0000000..275d447 --- /dev/null +++ b/the23/auth/2fa.php @@ -0,0 +1,65 @@ +
+
+
+
+
+ + + + +

+ +
+
+
+
+

+
+ +
+
+
+ + +
+ +
+
+ +
+ +
+
+
+
+
© .

+
+
+
+
+
+ \ No newline at end of file diff --git a/the23/auth/email2fa.php b/the23/auth/email2fa.php new file mode 100644 index 0000000..a21e762 --- /dev/null +++ b/the23/auth/email2fa.php @@ -0,0 +1,73 @@ +
+
+
+
+
+ + + + +

+ +
+
+
+
+

+
+ +
+
+
+ + +
+
+ +
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
© .

+
+
+
+
+
+ \ No newline at end of file diff --git a/the23/auth/forgot.php b/the23/auth/forgot.php new file mode 100644 index 0000000..0d1e16b --- /dev/null +++ b/the23/auth/forgot.php @@ -0,0 +1,44 @@ +
+
+ +
\ No newline at end of file diff --git a/the23/auth/invite.php b/the23/auth/invite.php new file mode 100644 index 0000000..dec43ea --- /dev/null +++ b/the23/auth/invite.php @@ -0,0 +1,74 @@ +
+
+
+
+
+ + + cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '')): ?> + + + + + +

+ +
+
+
+

+

+
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+ + + + + + +
+
+ + +
+ +
+
+

+ +

+
+
+
© .

+
+
+
+
+
\ No newline at end of file diff --git a/the23/auth/login.php b/the23/auth/login.php new file mode 100644 index 0000000..2e560f7 --- /dev/null +++ b/the23/auth/login.php @@ -0,0 +1,113 @@ + + + cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '')): ?> + + + + + +

+ +
+
+
+
+
+
+
+
+

+
+ + + +
+ +
+ +
+ +
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+
+ + +
+
+
+ +
+
+
+ +
+ + +
+
+ + +
+ +
+
+
+
+
+
+
© .

+
+
+
+
+
+
+
+

+ +

+ + + +
+
+
+
\ No newline at end of file diff --git a/the23/auth/register.php b/the23/auth/register.php new file mode 100644 index 0000000..b76f3f7 --- /dev/null +++ b/the23/auth/register.php @@ -0,0 +1,110 @@ +
+
+
+
+
+ + + cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '')): ?> + + + + + +

+ +
+
+
+

+
+ + +
+ +
+ +
+ +
+ + + + +
+ bioalias): ?> +
+
+ + +
+
+ +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+ + + + + + +
+
+ + +
+ +
+
+

+ +

+
+ +
+
© .

+
+
+
+
+
\ No newline at end of file diff --git a/the23/auth/reset.php b/the23/auth/reset.php new file mode 100644 index 0000000..73f72fd --- /dev/null +++ b/the23/auth/reset.php @@ -0,0 +1,49 @@ +
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/the23/blog/author.php b/the23/blog/author.php new file mode 100644 index 0000000..bec0ea1 --- /dev/null +++ b/the23/blog/author.php @@ -0,0 +1,85 @@ +
+
+
+
+
+ +

$authorName]) ?>

+
+
+ <?php echo htmlspecialchars($authorName) ?> +
+

+ +
+ +
+
+
+
+
+
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+
+ + + + + + +
+ + +
+
+
+
diff --git a/the23/blog/categories.php b/the23/blog/categories.php new file mode 100644 index 0000000..2ac030c --- /dev/null +++ b/the23/blog/categories.php @@ -0,0 +1,43 @@ +
+
+
+

+

name ?>

+ description): ?> +

description ?>

+ +
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+ + + + +
+
+ +
+ + title ?> + + +
+ +
+
+
+
\ No newline at end of file diff --git a/the23/blog/index.php b/the23/blog/index.php new file mode 100644 index 0000000..1f30a14 --- /dev/null +++ b/the23/blog/index.php @@ -0,0 +1,57 @@ +
+
+
+

+ +

+
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+ + + + +
+ + +
+
+
+
\ No newline at end of file diff --git a/the23/blog/menu.php b/the23/blog/menu.php new file mode 100644 index 0000000..9dc852a --- /dev/null +++ b/the23/blog/menu.php @@ -0,0 +1,55 @@ +
+
+
+ +
+
+
+
+ + + + + + + +
+
+
+
+
\ No newline at end of file diff --git a/the23/blog/partial.php b/the23/blog/partial.php new file mode 100644 index 0000000..2085197 --- /dev/null +++ b/the23/blog/partial.php @@ -0,0 +1,24 @@ +
+ image): ?> +
+ + <?php echo $post->title ?> + +
+ +
+ title ?> +
+ avatar): ?> + <?php echo $post->title ?> + + author ?> + categoryid): ?> + categoryid]->name ?> + + date ?> +
+
content ?>
+ +
+
\ No newline at end of file diff --git a/the23/blog/search.php b/the23/blog/search.php new file mode 100644 index 0000000..2d7af9a --- /dev/null +++ b/the23/blog/search.php @@ -0,0 +1,51 @@ +
+
+
+

+ +

+
+ +
+
+ +
+

$q]) ?>

+ +
+ +
+ +
+ +
+ + + + +
+ +
+

$q]) ?>

+ + + + + + + + +
+
+ +
+ + title ?> + + +
+ +
+
+
+
\ No newline at end of file diff --git a/the23/blog/single.php b/the23/blog/single.php new file mode 100644 index 0000000..e9257e3 --- /dev/null +++ b/the23/blog/single.php @@ -0,0 +1,116 @@ +
+
+
+
+
+ + + +

+ title ?> +

+
+ <?php echo $post->author ?> +
+
author) ?>author) ?>
+
+
+ • + date ?> +
+
+ • + content); echo ee('{c} mins read', null, ['c' => $count]) ?> +
+
+
+ <?php echo $post->author ?> +
+
author) ?>author) ?>
+
+
+
+
+
+
+
+
+
+
+ image): ?> + + <?php echo $post->title ?> + + + content ?> +
+
+
+
+
+

+
+ <?php echo htmlspecialchars($post->author) ?> +
+
author) ?>author) ?>
+ +
+ +
+
+
+
+
+ +
+ +
+ +
+
+

+

+
+
+ +
+
+
+ +
+ content = \Core\Helper::truncate($post->content, 150); view('blog.partial',['post' => $post]); ?> +
+ +
+
+ +
+
\ No newline at end of file diff --git a/the23/class/themeSettings.php b/the23/class/themeSettings.php new file mode 100644 index 0000000..fe94cbe --- /dev/null +++ b/the23/class/themeSettings.php @@ -0,0 +1,672 @@ + + * @version 6.0 + * @return void + */ + public static function menu(){ + + $option = config("theme_config"); + + if(!isset($option->homelinks)) return null; + $menu = []; + foreach(explode("\n", $option->homelinks) as $list){ + if(empty($list)) continue; + [$title, $link] = array_map('trim', explode("|", $list)); + + $menu[] = ['link' => $link, 'title' => $title]; + } + return $menu; + } + /** + * Theme Settings + * + * @author GemPixel + * @version 6.0 + * @return void + */ + public static function settings(){ + + if(!$option = config("theme_config")){ + $option = new \stdClass; + } + + if(!isset($option->hero)) $option->hero = ""; + if(!isset($option->siteimage)) $option->siteimage = ""; + if(!isset($option->homeheader)) $option->homeheader = ""; + if(!isset($option->homedescription)) $option->homedescription = ""; + if(!isset($option->customfooter)) $option->customfooter = ""; + if(!isset($option->homelinks)) $option->homelinks = ""; + if(!isset($option->homestyle)) $option->homestyle = "default"; + if(!isset($option->pricing)) $option->pricing = "list"; + if(!isset($option->blog)) $option->blog = "list"; + if(!isset($option->languageselector)) $option->languageselector = "bottom"; + if(!isset($option->menutype)) $option->menutype = "hybrid"; + if(!isset($option->colors)) { + $option->colors = new \stdClass; + $option->colors->primary = '#0088ff'; + $option->colors->primaryalt = '#0065bd'; + $option->colors->secondary = '#22cfff'; + $option->colors->primarybg = '#f7f9fc'; + $option->colors->darkbg = '#030122'; + $option->colors->scrollbar = '#0088ff'; + } + if(!isset($option->colors->body)) $option->colors->body = '#ffffff'; + if(!isset($option->colors->bodycolor)) $option->colors->bodycolor = '#343f52'; + if(!isset($option->homepage)) $option->homepage = 'default'; + + CDN::load('coloris'); + View::push("", 'custom')->toFooter(); + + View::push("", 'custom')->toHeader(); + + CDN::load('simpleeditor'); + + \Core\View::push("", "custom")->toFooter(); + + $content = '
+
+
+
+
+
+ + + + + +
+
'.e('Pre-defined Colors').'
+

'.e('You can choose from pre-defined colors to quickly apply to your theme.').'

+
+
+
+
+
+
+
+
+
+
+ '.e('Ocean Blue').' + '.e('Default').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Coral Sunset').' + '.e('Warm').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Royal Purple').' + '.e('Elegant').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Forest Green').' + '.e('Natural').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Midnight Dark').' + '.e('Dark').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Vibrant Pink').' + '.e('Bold').' +
+
+
+
+
+ +
'.e('Theme Colors').'
+

'.e('You can customize colors for front pages (home, pricing, blog etc). Some colors are already preset. You can either use colors from the palette (example #1 with #1 in all options) or mix and match. You can also use your own colors. After saving settings, if you do not see changes, you need to release browser cache. If you are using Cloudflare, you will need to purge cache as well.').'

+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+ +
+
+
+
+
+
+ + + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+ +
+
+
+
+
+
+
+ +
+
+ '.(!empty($option->hero) ? '

':"").' +
+
+ '.(!empty($option->hero) ? '' : '').' + +

'.e('This will replace the default hero image that comes shipped with the script. JPG or PNG. 500 kb max. Recommended size: 560x710').'

+
+
+ + +

'.e('This will replace the home main header right before the shortener form. If you leave it empty, the site title will be shown.').'

+
+
+ + +

'.e('This will replace the home main description right before the shortener form. If you leave it empty, the site description will be shown.').'

+
+
+ + +

'.e('Choose which page to display when visitors go to your site root (homepage).').'

+
+
+
+
+ +
+
+ '.(!empty($option->siteimage) ? '

'.e('Remove').'

':"").' +
+
+ '.(!empty($option->siteimage) ? '' : '').' + +

'.e('This will be used as default OG image unless override by pages.').'

+
+
+ + +

'.e('You can add custom links to the menu using the following format (one per line): TITLE|LINK').'

+
+
+ + +

'.e('You can add custom footer to the page. This will be shown at the bottom of the page.').'

+
+ '.csrf().' + + +
+
+
+
+
+
Help
+
+

HTML Usage

+

You can use the following HTML elements: '.htmlentities("


").'

+ +

Translating Strings

+

If you add a new title or a new description, you can still translate them to any language by simply adding it via the language manager.

+ +

Auto Mode

+

If you choose the Auto Mode, the color scheme will change based on the user browser or device preference. + +

Home Header

+

You can add your custom header and description for the homepage. To use the typing animation use the following format:

+ <span class="gradient-primary clip-text" data-toggle="typed" data-list="Links,Bio Pages, QR Codes"></span> +
+
+
+
Menu Link
+
+

You can add custom links to the menu using the following format (one per line): TITLE|LINK

+ +

Example

+
Support|https://support.gempixel.com
Blog|https://gempixel.com/blog
+ +

You can add as much as you want however you need to make sure it does not break the template

+
+
+
+
'; + return $content; + } + /** + * Update + * + * @author GemPixel + * @version 6.0 + * @return void + */ + public function update(){ + + \Gem::addMiddleware('DemoProtect'); + + $option = config("theme_config"); + + $request = new \Core\Request; + + $data = []; + + $data['hero'] = $option->hero ?? ''; + $data['siteimage'] = $option->siteimage ?? ''; + $data['homeheader'] = Helper::clean($request->homeheader); + $data['homedescription'] = $request->homedescription; + $data['customfooter'] = $request->customfooter; + $data['homestyle'] = Helper::clean($request->homestyle, 3); + $data['homepage'] = Helper::clean($request->homepage, 20); + if(!in_array($data['homepage'], ['default', 'bio', 'link', 'qr'])) $data['homepage'] = 'default'; + $data['homelinks'] = Helper::clean($request->homelinks, 3); + $data['homecolor'] = Helper::clean($request->homecolor, 3); + $data['pricing'] = Helper::clean($request->pricing, 3); + $data['languageselector'] = Helper::clean($request->languageselector, 3); + $data['menutype'] = Helper::clean($request->menutype, 3); + $data['blog'] = Helper::clean($request->blog, 3); + + $data['colors'] = [ + 'body' => '#ffffff', + 'body-color' => '#343f52', + 'primary' => '#0088ff', + 'primaryalt' => '#0065bd', + 'secondary' => '#22cfff', + 'primarybg' => '#f7f9fc', + 'darkbg' => '#030122', + 'scrollbar' => '#0088ff' + ]; + + $data['cssname'] = strtolower(Helper::rand(12)); + + foreach($request->colors as $name => $color){ + if(strlen(trim($color)) == 7) $data['colors'][$name] = trim(clean($color)); + } + + if($request->remove_logo){ + if(isset($option->hero) && !empty($option->hero) && file_exists(appConfig('app.storage')['uploads']['path'].'/'.$option->hero)){ + unlink(appConfig('app.storage')['uploads']['path'].'/'.$option->hero); + } + $data['hero'] = null; + } + + if($image = $request->file('hero')){ + + if(!$image->mimematch || !in_array($image->ext, ['jpg', 'png'])) return Helper::redirect()->back()->with('danger', e('The custom image is not valid. Only a JPG or PNG are accepted.')); + + if($image->sizekb > 500) return Helper::redirect()->back()->with('danger', e('Custom image must be either a PNG or a JPEG (Max 500kb).')); + + $filename = Helper::rand(6)."_hero_".$image->name; + + if(isset($option->hero) && !empty($option->hero) && file_exists(appConfig('app.storage')['uploads']['path'].'/'.$option->hero)){ + unlink(appConfig('app.storage')['uploads']['path'].'/'.$option->hero); + } + + $request->move($image, appConfig('app.storage')['uploads']['path'], $filename); + $data['hero'] = $filename; + + } + + if($request->remove_siteimage){ + if(isset($option->siteimage) && !empty($option->siteimage) && file_exists(appConfig('app.storage')['uploads']['path'].'/'.$option->siteimage)){ + unlink(appConfig('app.storage')['uploads']['path'].'/'.$option->siteimage); + } + $data['siteimage'] = null; + } + + if($image = $request->file('siteimage')){ + + if(!$image->mimematch || !in_array($image->ext, ['jpg', 'png'])) return Helper::redirect()->back()->with('danger', e('The custom image is not valid. Only a JPG or PNG are accepted.')); + + if($image->sizekb > 500) return Helper::redirect()->back()->with('danger', e('Custom image must be either a PNG or a JPEG (Max 500kb).')); + + $filename = Helper::rand(6)."_siteimage_".$image->name; + + if(isset($option->siteimage) && !empty($option->siteimage) && file_exists(appConfig('app.storage')['uploads']['path'].'/'.$option->siteimage)){ + unlink(appConfig('app.storage')['uploads']['path'].'/'.$option->siteimage); + } + + $request->move($image, appConfig('app.storage')['uploads']['path'], $filename); + $data['siteimage'] = $filename; + + } + + if($request->homestyle == "darkmode"){ + $request->cookie('darkmode', 1); + } else { + $request->cookie('darkmode', 1, -3600); + } + + $setting = DB::settings()->where('config', 'theme_config')->first(); + + $setting->var = json_encode($data); + $setting->save(); + + self::cssVariables($data['colors'], $data['cssname']); + + return Helper::redirect()->back()->with('success', e('Settings are successfully saved.')); + } + /** + * Generate CSS variables + * + * @author GemPixel + * @version 7.0 + * @param array $variables + * @return void + */ + private static function cssVariables(array $variables, string $cssname){ + + $variables['primarybgrgb'] = implode(', ', sscanf($variables['primarybg'], "#%02x%02x%02x")); + $variables['darkbgrgb'] = implode(', ', sscanf($variables['darkbg'], "#%02x%02x%02x")); + $variables['liquidrgb'] = implode(', ', array_merge(sscanf($variables['body'], "#%02x%02x%02x"), [0.8])); + $variables['darkbg'] = implode(', ', sscanf($variables['darkbg'], "#%02x%02x%02x")); + + $data = ":root{--body: {$variables['body']};--body-color: {$variables['body-color']};--hamburger-color: {$variables['body-color']};--bs-primary: {$variables['primary']};--bs-primary-alt: {$variables['primaryalt']};--bs-secondary: {$variables['secondary']};--bg-primary: {$variables['primarybg']};--bg-secondary: {$variables['secondary']};--bs-primary-rgb: {$variables['primarybgrgb']};--scrollbar-color: {$variables['scrollbar']};--bg-header: rgba({$variables['liquidrgb']});--bs-link-color: var(--bs-primary);--bs-link-hover-color: var(--bs-primary-alt);--bs-dark-rgb:{$variables['darkbgrgb']};--bg-liquid: rgba({$variables['liquidrgb']});--bs-dark-rgb: {$variables['darkbg']};}"; + + $config = config("theme_config"); + if(isset($config->cssname) && $config->cssname != $cssname){ + if(file_exists(PUB.'/content/'.$config->cssname.'.css')){ + unlink(PUB.'/content/'.$config->cssname.'.css'); + } + } + if($css = fopen(PUB.'/content/'.$cssname.'.css', 'w')){ + fwrite($css, $data); + fclose($css); + } + } + /** + * Theme Config + * + * @author GemPixel + * @version 6.3 + * @param string $name + * @return void + */ + public static function config(string $name, $is = null, $set = null, $default = null){ + + $config = config("theme_config"); + + if($name == 'title'){ + return (isset($config->homeheader) && $config->homeheader ? e($config->homeheader) : config('title')); + } + + if($name == 'description'){ + return (isset($config->homedescription) && $config->homedescription ? e($config->homedescription) : e(config('description'))); + } + + if($name == 'homecolor'){ + if(isset($config->homecolor) && $config->homecolor->type == 'custom' && $config->homestyle != 'darkmode' && !request()->cookie('darkmode')){ + return 'style="background: linear-gradient(220.55deg, '.$config->homecolor->c2.' 0%, '.$config->homecolor->c1.' 100%) !important;"'; + } + return null; + } + + if($name == "homestyle") { + + if(!isset($config->homestyle)) return $default; + + if( $config->homestyle == $is && !request()->cookie('darkmode') && $set) return $set; + + if( $config->homestyle == $is) return true; + + return $default; + } + + if($name == "pricing") { + if(isset($config->pricing)){ + if($config->pricing == $is) return $set; + return $config->pricing; + } + return 'list'; + } + + if($is) return isset($config->{$name}) && $config->{$name} == $is; + + return $config->{$name} ?? null; + } + /** + * Is Dark Mode or Dark Theme + * + * @author GemPixel + * @version 6.6 + * @param [type] $return + * @return boolean + */ + public static function isDark($return = null){ + + $config = config("theme_config"); + + $isdark = request()->cookie('darkmode') || (isset($config->homestyle) && $config->homestyle == 'darkmode'); + + return $return && $isdark ? $return : $isdark; + } +} \ No newline at end of file diff --git a/the23/config.json b/the23/config.json new file mode 100644 index 0000000..77a5c0a --- /dev/null +++ b/the23/config.json @@ -0,0 +1,15 @@ +{ + "name": "The23", + "version": "1.0", + "author": "GemPixel", + "link": "https://gempixel.com", + "date": "01/06/2023", + "settings": true, + "child": false, + "thumbnail": "screenshot.png", + "include":[ + "class/themeSettings.php", + "functions.php" + ], + "assets":[] +} \ No newline at end of file diff --git a/the23/email.php b/the23/email.php new file mode 100644 index 0000000..b621488 --- /dev/null +++ b/the23/email.php @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/the23/errors/404.php b/the23/errors/404.php new file mode 100644 index 0000000..02a1257 --- /dev/null +++ b/the23/errors/404.php @@ -0,0 +1,63 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + +
+
+
+ + + + +

+ +
+ +
404
+

+ +

+ + + + + + +
+
+
+ + + + + + + \ No newline at end of file diff --git a/the23/errors/disabled.php b/the23/errors/disabled.php new file mode 100644 index 0000000..f595052 --- /dev/null +++ b/the23/errors/disabled.php @@ -0,0 +1,61 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + +
+
+
+ + + + +

+ +
+ +
+

+ +

+ + + + +
+
+
+ + + + + + + \ No newline at end of file diff --git a/the23/errors/expired.php b/the23/errors/expired.php new file mode 100644 index 0000000..39825f1 --- /dev/null +++ b/the23/errors/expired.php @@ -0,0 +1,60 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + +
+
+
+ + + + +

+ +
+ +
+

+ +

+ + + +
+
+
+ + + + + + + \ No newline at end of file diff --git a/the23/functions.php b/the23/functions.php new file mode 100644 index 0000000..4f3eb6f --- /dev/null +++ b/the23/functions.php @@ -0,0 +1,28 @@ +name('admin.themes.update')->middleware('Auth@admin'); + +Plugin::register('admin.theme.getoptions', [themeSettings::class, 'settings']); + +Plugin::register('homemenu', [themeSettings::class, 'menu']); + +if(isset(config('theme_config')->siteimage) && config('theme_config')->siteimage){ + \Core\View::set('image', uploads(config('theme_config')->siteimage)); +} \ No newline at end of file diff --git a/the23/gates/custom.php b/the23/gates/custom.php new file mode 100644 index 0000000..75c05cd --- /dev/null +++ b/the23/gates/custom.php @@ -0,0 +1,25 @@ +
+
+
+ +
+
+
+ +
+
+ data->title ?> +

data->message ?>

+

+
+
+

0

+
+
+
+
+ has('poweredby')): ?> + + +
+
\ No newline at end of file diff --git a/the23/gates/domain.php b/the23/gates/domain.php new file mode 100644 index 0000000..022c4ae --- /dev/null +++ b/the23/gates/domain.php @@ -0,0 +1,21 @@ +
+
+
+
+ Great! +
+
+
+

domain name is now successfully pointed to our server. You can now start using it from the platform and shorten branded links with your own domain name.") ?>

+

+

+
+

+ " class="btn btn-secondary btn-round"> +    + " class="btn btn-primary btn-round"> +

+
+
+
+
\ No newline at end of file diff --git a/the23/gates/frame.php b/the23/gates/frame.php new file mode 100644 index 0000000..5c8ddf4 --- /dev/null +++ b/the23/gates/frame.php @@ -0,0 +1,20 @@ +
+
+ + +
+ +
+
+
+ \ No newline at end of file diff --git a/the23/gates/list.php b/the23/gates/list.php new file mode 100644 index 0000000..83f45cd --- /dev/null +++ b/the23/gates/list.php @@ -0,0 +1,35 @@ +
+
+
+ + + + + +

name ?>

+
+ $value): ?> + + + +
+ +
+
+ +
\ No newline at end of file diff --git a/the23/gates/media.php b/the23/gates/media.php new file mode 100644 index 0000000..9ccfa7e --- /dev/null +++ b/the23/gates/media.php @@ -0,0 +1,46 @@ +
+
+
+
+
+
+ embed ?> +
+
+
+
meta_title ?>
+
+
+ click+1 ?> + +
+
+

+ meta_description ?> +

+
+ +
+ +
+
+
\ No newline at end of file diff --git a/the23/gates/password.php b/the23/gates/password.php new file mode 100644 index 0000000..e213437 --- /dev/null +++ b/the23/gates/password.php @@ -0,0 +1,32 @@ +
+
+
+
+
+
+
+
+
+

+
+ + +
+ +
+
+ + +
+
+
+ +
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/the23/gates/splash.php b/the23/gates/splash.php new file mode 100644 index 0000000..92cd782 --- /dev/null +++ b/the23/gates/splash.php @@ -0,0 +1,39 @@ +
+
+ +
+
+
+ +
+
+

+ meta_title)): ?> + meta_title ?> + + + +

+

+ meta_description)): ?> + meta_description ?> + +

+
+
+
+ +
+
+ +
+
+
+

+ +

+
+
+
+
+
\ No newline at end of file diff --git a/the23/help/category.php b/the23/help/category.php new file mode 100644 index 0000000..11b6564 --- /dev/null +++ b/the23/help/category.php @@ -0,0 +1,46 @@ +
+
+ + +
+ icon) && $category->icon): ?> +
+ iconstyle) && $category->iconstyle == 'emoji'): ?> + icon ?> + + + +
+ +
+

title ?>

+
+

description ?>

+
+
+
+
+ +
+
+
+ +
+
+ answer), 100) ?> +
+ \Core\Helper::timeago($article->created_at)]) ?> +
+
+ +
+ +
+
\ No newline at end of file diff --git a/the23/help/index.php b/the23/help/index.php new file mode 100644 index 0000000..c03aec5 --- /dev/null +++ b/the23/help/index.php @@ -0,0 +1,55 @@ +
+
+ +
+

+
+ + +
+

+
+
+ +
+
+
+ +
+
+ answer), 100) ?> +
+ \Core\Helper::timeago($article->created_at)]) ?> +
+
+ +
+
+
\ No newline at end of file diff --git a/the23/help/search.php b/the23/help/search.php new file mode 100644 index 0000000..4a32e92 --- /dev/null +++ b/the23/help/search.php @@ -0,0 +1,36 @@ +
+
+ $q]) ?> + +
+

"{$q}"]) ?>

+
+ +
+ +
+
+
+ +
+
+ answer), 100) ?> +
+ \Core\Helper::timeago($article->created_at)]) ?> +
+
+ +
+ + + + +
+
\ No newline at end of file diff --git a/the23/help/single.php b/the23/help/single.php new file mode 100644 index 0000000..9a32665 --- /dev/null +++ b/the23/help/single.php @@ -0,0 +1,39 @@ +
+
+ +
+
+ +
+
+

question ?>

+ \Core\Helper::dtime($article->created_at, 'F d, Y')]) ?> +
+ answer ?> +
+
+ +
+
+ +
+ +
+
+
+
+ + question ?> + + + +
+
+
+
\ No newline at end of file diff --git a/the23/help/top.php b/the23/help/top.php new file mode 100644 index 0000000..ffd4989 --- /dev/null +++ b/the23/help/top.php @@ -0,0 +1,18 @@ +
+
+
+

+
+
+ + + + + + + +
+
+
+
+
\ No newline at end of file diff --git a/the23/index.php b/the23/index.php new file mode 100644 index 0000000..c2c2068 --- /dev/null +++ b/the23/index.php @@ -0,0 +1,828 @@ +
+
+ +
+
+ users) && $count->users): ?> + + users > 100): ?> + ''.$count->users.' '.e('customers').'']) ?> + + ''.e('thousands of users').'']) ?> + + + +

+ homeheader) && !empty(config('theme_config')->homeheader) ? config('theme_config')->homeheader : ee('Intuitive, Secure
& Dynamic').'
' ?>
+

+

+ homedescription) && !empty(config('theme_config')->homedescription) ? config('theme_config')->homedescription : e('Boost your campaigns by creating dynamic Links, QR codes and Bio Pages and get instant analytics.') ?> +

+ +
+
+ " name="url" id="url"> +
+ + + + + +
+
+ + +
+
+
+ + " autocomplete="off"> +
+
+
+
+ + " autocomplete="off"> +
+
+
+ + +
+
+
+
+
+

+ +
+
+
+ where('free', '1')->where('status', '1')->first()): ?> + +

+

    +
  • +
  • +
  • +
+

+ + whereNotEqual('trial_days', '0')->first()): ?> + +

+

    +
  • +
  • +
  • +
+

+ + + + +
+
+
+ hero) && !empty($themeconfig->hero)): ?> + <?php echo config(" class="img-fluid mw-lg-120 rounded-top zindex-100"> + + +
+
+
+
+
+
+ +
+
+ +
+
+ M +
+
+
+
+
+
+

+ +% +

+ M +
+ K +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

Supercharge your productivity') ?>

+ +
+
+
+
+
+
+ +
+ + +
+
+

+

+ +

+ +
+
+
+
+
+
+ +
+
+ + +
+ +
+
+

+

+ +

+ +
+
+
+
+
+
+
+
+ module('circle')->eye('circle', 'rounded')->color('rgb(0,0,0)', 'rgb(255,255,255)','rgb(255,255,0)', 'rgb(255,0,255)')->format('svg')->string() ?> +
+ +
+
+
+

+

+ +

+ +
+
+
+
+
+
+
+
+
+
+
+ + + +

+ +

+

+ +

+
    +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
+ +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+
+
+ + + + +
+
+
+
+
+ + + + +
+
+
+
+
+ + + + +
+
+
+
+
+
+
+
+
+
+
+ + + +

+ +

+

+ +

+ +
+
+
+
smart
+ +
+

+
+ +
+ <?php echo $item['title'] ?> +

+
+ +
+
+
+
+
+
+
+

you'll ever need") ?>

+

+
+ +
+
+
+
+
+
+
+ <?php ee('New York, United States') ?> +
+
+
+ +
+
+
+ $numbers[0]]) ?> +
+
+
+
+
+ <?php ee('New York, United States') ?> +
+
+
+ +
+
+
+ $numbers[1]]) ?> +
+
+
+
+
+ <?php ee('New York, United States') ?> +
+
+
+ +
+
+
+ $numbers[2]]) ?> +
+
+
+
+
+ + + +

+ +

+

+ +

+ +
+
+
+
+
+
+
+ +
(3/5)
+
+ <?php ee('Invite your teammates & work together') ?> +
+
+
+ jane.doe@ +
+
+
+
+ <?php ee('Invite your teammates & work together') ?> +
+
+
+ barry.tone@ +
+
+
+ +
+
+
+ <?php ee('Invite your teammates & work together') ?> +
+
+
+ john.doe@ +
+
+
+
+
+
+
+ + + +

+ +

+

+ +

+ +
+
+
+
+
+
+
+
+
+
+ Slack" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Slack

+
+
+ Zapier" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Zapier

+
+
+ Google Tag Manager" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Google Tag Manager

+
+
+ Facebook Pixels" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Facebook

+
+
+
+
+ Bing" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

WordPress

+
+
+ Bing" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Shortcuts

+
+
+ +

X

+
+
+ Snapchat" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Snapchat

+
+
+
+
+
+
+

+

+ +
+
+
+
+
+
+ Bing" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Bing

+
+
+ Reddit" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Reddit

+
+
+ Google Analytics" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Google Analytics

+
+
+ LinkedIn" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

LinkedIn

+
+
+
+
+ Pinterest" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Pinterest

+
+
+ Quora" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Quora

+
+
+ TikTok" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

TikTok

+
+
+ Adroll" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Adroll

+
+
+
+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+
+
+
+ +
+
+
+
+

+

+
+
+
+ +
+ +
+
+

testimonial ?>

+
+
+ avatar) && file_exists(appConfig('app')['storage']['avatar']['path'].'/'.$testimonial->avatar)) $testimonial->avatar = uploads($testimonial->avatar, 'avatar');else{if($testimonial->email){$testimonial->avatar = 'https://www.gravatar.com/avatar/'.md5(trim($testimonial->email)).'?s=64&d=identicon';}} ?> + avatar ? ''.$testimonial->name.'': '' ?> +
+
+ name ?> job ? ''.$testimonial->job.'' : '' ?> +
+
+
+
+ +
+ +
+
+
+ + +
+
+
+
+

the numbers
do the talking") ?>.

+
+
+
+
+
+

+
+ links ?> + + +
+

+
+
+
+
+

+
+ clicks ?> + + +
+

+
+
+
+
+
+
+

+
+ users ?> + + +
+

+
+
+ +
+
+
+
+
+ +
+
+
+
+
+

+

+
+
+ +
+
+
+
+
+ + + \ No newline at end of file diff --git a/the23/layouts/api.php b/the23/layouts/api.php new file mode 100644 index 0000000..161f641 --- /dev/null +++ b/the23/layouts/api.php @@ -0,0 +1,61 @@ + + cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark" class="c_darkmode"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + + + + + + + + + + + 'full']) ?> + + + + + + + + + enabled): ?> + + + + + + + + async src='https://www.googletagmanager.com/gtag/js?id='> + >window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', ''); + + enabled): ?> + > + $('head').append('').append(''); + + + + \ No newline at end of file diff --git a/the23/layouts/auth.php b/the23/layouts/auth.php new file mode 100644 index 0000000..74a9324 --- /dev/null +++ b/the23/layouts/auth.php @@ -0,0 +1,55 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark" class="c_darkmode"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + > + + + enabled): ?> + + + + + + + + + + + async src='https://www.googletagmanager.com/gtag/js?id='> + >window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', ''); + + enabled): ?> + > + $('head').append('').append(''); + + + + diff --git a/the23/layouts/main.php b/the23/layouts/main.php new file mode 100644 index 0000000..91fe3e1 --- /dev/null +++ b/the23/layouts/main.php @@ -0,0 +1,65 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark" class="c_darkmode"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + + + + + + + + + + + + + + + enabled): ?> + + + + + + + + + async src='https://www.googletagmanager.com/gtag/js?id='> + >window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', ''); + + enabled): ?> + > + $('head').append('').append(''); + + + + + \ No newline at end of file diff --git a/the23/layouts/stats.php b/the23/layouts/stats.php new file mode 100644 index 0000000..d8adb04 --- /dev/null +++ b/the23/layouts/stats.php @@ -0,0 +1,68 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark" class="c_darkmode"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + + +
+
+ +
+
+ + + + + + + + + + + enabled): ?> + + + + + + + + + async src='https://www.googletagmanager.com/gtag/js?id='> + >window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', ''); + + enabled): ?> + > + $('head').append('').append(''); + + + + + \ No newline at end of file diff --git a/the23/maintenance.php b/the23/maintenance.php new file mode 100644 index 0000000..a99fd06 --- /dev/null +++ b/the23/maintenance.php @@ -0,0 +1,28 @@ +
+
+
+ + + + +

+ +
+ +
+

+ +

+ + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/the23/pages/affiliate.php b/the23/pages/affiliate.php new file mode 100644 index 0000000..6b6dc43 --- /dev/null +++ b/the23/pages/affiliate.php @@ -0,0 +1,50 @@ +
+ +
+ +
+

"".(isset($affiliate->type) && $affiliate->type == 'fixed' ? '$'.$affiliate->rate : $affiliate->rate.'%').""]) ?>

+

(isset($affiliate->type) && $affiliate->type == 'fixed' ? '$'.$affiliate->rate : $affiliate->rate.'%')]) ?>

+ + + + + +
+
+
+
+
+
+ where('category', 'affiliate')->find()): ?> +
+

+

terms ?>

+ +
+
+
+ $faq): ?> + +
+
+ +
+
+ +
+
+ answer)) ?> +
+
+
+
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/the23/pages/api.php b/the23/pages/api.php new file mode 100644 index 0000000..f12a554 --- /dev/null +++ b/the23/pages/api.php @@ -0,0 +1,415 @@ +
+
+
+
+
+ + + + + + + admin): ?> + + Admin + + + + + + + + + $el): ?> +
+ + + + '.e('Admin').'' : '' ?> + +
+
+ $title): ?> + + + + +
+ +
+
+
+
+
+
+

+
+
+
+
+

+
+
+
+ has('api') && \Core\Auth::user()->teamPermission('api.create')): ?> + + +
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+ cURL + PHP + Node.js + Python + C# +
+ +
+
+
+
+
+
 "'.route('api.account.get').'",
+                                        CURLOPT_RETURNTRANSFER => true,
+                                        CURLOPT_MAXREDIRS => 2,
+                                        CURLOPT_TIMEOUT => 10,
+                                        CURLOPT_FOLLOWLOCATION => true,
+                                        CURLOPT_CUSTOMREQUEST => "POST",
+                                        CURLOPT_HTTPHEADER => [
+                                            "Authorization: Bearer '.$token.'",
+                                            "Content-Type: application/json",
+                                        ],
+                                    ));
+
+                                    $response = curl_exec($curl);') ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ admin): ?> +
+
+
+
+
+
+
+
+

+
    +
  1. +
  2. +
  3. +
+
+ +
+
+

+
    +
  • +
  • +
+
+ +
+
+ +
+
+

+ +
GET ?clientid=YOUR_CLIENT_ID&redirect=YOUR_REDIRECT_URI
+ +

+
    +
  • clientid:
  • +
  • redirect:
  • +
+
+ +
+
+

+ +
YOUR_REDIRECT_URI?code=AUTHORIZATION_CODE
+
+ +
+
+

+ +
POST 
Content-Type: application/json
{
"code": "AUTHORIZATION_CODE",
"secret": "YOUR_CLIENT_SECRET"
}
+ +

+
{
"error": false,
"access_token": "YOUR_ACCESS_TOKEN",
"expires_at": 1234567890
}
+
+ +
+
+

+ +
GET 
Authorization: Bearer YOUR_ACCESS_TOKEN
+ +
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+
+

$rate[0], 'y' => $rate[1]]) ?>

+ +

+
+
+
+
+
X-RateLimit-Limit: 
X-RateLimit-Remaining:
X-RateLimit-Reset: TIMESTAMP
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+ $el): ?> +
+

+ + + +

+

+ $data): ?> +
+
+
+
+
+
+
+ +
+

+ +
+ + + + $desc): ?> + + + + + + +
+
+ +
+
+
+
+
+
+ cURL + PHP + Node.js + Python + C# +
+ +
+
+
+
+
+
 "'.$data['route'].'",
+                                                CURLOPT_RETURNTRANSFER => true,
+                                                CURLOPT_MAXREDIRS => 2,
+                                                CURLOPT_TIMEOUT => 10,
+                                                CURLOPT_FOLLOWLOCATION => true,
+                                                CURLOPT_CUSTOMREQUEST => "'.$data['method'].'",
+                                                CURLOPT_HTTPHEADER => [
+                                                    "Authorization: Bearer '.$token.'",
+                                                    "Content-Type: application/json",
+                                                ],
+                                                '.(
+                                                    $data['code'] ? 'CURLOPT_POSTFIELDS => 
+                                                    \''.str_replace("\n","\n\t", json_encode($data['code'], JSON_PRETTY_PRINT)).'\',' : ''
+                                                ).'
+                                            ));
+
+                                            $response = curl_exec($curl);
+
+                                            curl_close($curl);
+                                            echo $response;') ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/the23/pages/bio.php b/the23/pages/bio.php new file mode 100644 index 0000000..68c4649 --- /dev/null +++ b/the23/pages/bio.php @@ -0,0 +1,200 @@ +
+ +
+
+
+

+ +

+

+ +

+
+
+ + + +
+
+
+

+ + +

+
+
+
+
+ +
+
+ +

Madison

+
+ + +
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
.
+

+ +

+
    +
  • +
    +
    + + + +
    +
    + count($widgets)]) ?> +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
+ +
+
+
+
+ +

Laura

+
+ + +
+
+
+ +
+
+
+
+ +

Sam

+
+ + +
+
+
+ +
+
+
+
+ +

Steve

+
+ + +
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+
.
+

+ +

+ +
+
+ <?php ee('Trackable to the dot') ?> +
+
+
+
+
+
+
+
+

audience") ?>

+

+ +
+
+ + +
+ + +
+ +
+
+
+
+
+
+
+
+
+

+

+
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/consent.php b/the23/pages/consent.php new file mode 100644 index 0000000..d26f78f --- /dev/null +++ b/the23/pages/consent.php @@ -0,0 +1,21 @@ +
+
+
+

+ +

+

+ message) ? e(config('cookieconsent')->message) : e("This website uses cookies to ensure you get the best experience on our website. You can learn more by visiting our cookie policy. Meanwhile if you agree, please click the button below to proceed to your destination.") ?> +

+
+
+
+ +
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/contact.php b/the23/pages/contact.php new file mode 100644 index 0000000..0c2a4f2 --- /dev/null +++ b/the23/pages/contact.php @@ -0,0 +1,73 @@ +
+
+
+
+

+

+ +
+
+
+
+
+
+
+
+ + " id="contact-name" name="name" value="username : '' ?>" min="2" data-error="" required> +
+
+
+
+ + " name="email" id="contact-email" value="email : '' ?>" data-error="" required> +
+
+
+
+ + +
+ +
+ +
+ +
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/index.php b/the23/pages/index.php new file mode 100644 index 0000000..28186bb --- /dev/null +++ b/the23/pages/index.php @@ -0,0 +1,14 @@ +
+
+
+
+
+

name ?>

+
+ content ?> +
+
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/link.php b/the23/pages/link.php new file mode 100644 index 0000000..06eeb78 --- /dev/null +++ b/the23/pages/link.php @@ -0,0 +1,548 @@ +
+
+
+
+

+ +

+

+ +

+
+ +
+ " name="url" id="url"> +
+ + + + + +
+
+ + +
+
+
+ + " autocomplete="off"> +
+
+
+
+ + " autocomplete="off"> +
+
+
+ + +
+
+
+
+
+

+ +
+
+
+

+ + +

+
+
+
+ hero) && !empty($themeconfig->hero)): ?> + <?php echo config(" class="img-fluid mw-lg-120 rounded-top zindex-100"> + + +
+
+
+
+
+
+ +
+
+ +
+
+ M +
+
+
+
+
+
+

+ +% +

+ M +
+ K +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
.
+

+ +

+
    +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
+ +
+
+
+
+
+
+
+ +
+
+
short
+ +
+
+
+ +
+
+
+
+ + K +
+
+
+
+
+ +% + +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+ % +
+
+
+
+
+
+
+
+ + +
+ % +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+

K

+ + +% +
+
+
+
+
+
+

K

+ + +% +
+
+
+
+
+ + + +
+
+
+ + +
+ % +
+
+
+
+
+
+ x + h +
+
+
+
+
+
+
+
+
+
.
+

+ +

+ +
+
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ 'us.svg', 'name' => e('United States of America'), 'percent' => rand(50, 70)], + ['flag' => 'gb.svg', 'name' => e('United Kingdom'), 'percent' => rand(15, 25)], + ['flag' => 'ca.svg', 'name' => e('Canada'), 'percent' => rand(8, 15)], + ['flag' => 'jp.svg', 'name' => e('Japan'), 'percent' => rand(3, 8)] + ]; + foreach($countries as $index => $country): + ?> +
+
+ + + + +
+
+
+ +
+ % + + + % + + +
+
+
+
+
+ +
+ + + + + + +
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

supercharge your links") ?>

+

+ +
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+
+
+
+
+
+
+

+

+
+
+ +
+
+
+
+
+ + + diff --git a/the23/pages/main.php b/the23/pages/main.php new file mode 100644 index 0000000..3f9cf9b --- /dev/null +++ b/the23/pages/main.php @@ -0,0 +1,14 @@ +
+
+

+ name ?> +

+
+
+
+
+
+ content ?> +
+
+
diff --git a/the23/pages/qr.php b/the23/pages/qr.php new file mode 100644 index 0000000..a4242e2 --- /dev/null +++ b/the23/pages/qr.php @@ -0,0 +1,487 @@ +
+ +
+ +
+
+

+ for {t}', null, ['t' => ''.e('Free').'']) ?> +

+
+
+
+ +
+
+
+ + + + + - + +
+
+ + + + + + + + +
+
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ + + + + +
+
+
+ + +
+
+
+ + +
+
+
+
+
+ +
+
+ + + +
+

+ +
+
+
+
+ +
+
+

+ +

+

+ +

+

+ + +

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
.
+

+ +

+
    +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
+ +
+
+
+
+ + + + + + +
+
+
+
+
+
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ +
+
+
+
+
+
+
+
+
.
+

+ +

+ +
+
+ <?php ee('Trackable to the dot') ?> +
+
+
+
+
+

+

+
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/report.php b/the23/pages/report.php new file mode 100644 index 0000000..17900c5 --- /dev/null +++ b/the23/pages/report.php @@ -0,0 +1,42 @@ +
+
+
+
+

+

+
+
+
+
+
+
+ + " name="email" id="contact-email" value="email : '' ?>" data-error="" required> +
+
+ + " id="contact-link" name="link" value="" data-error="" min="10" required> +
+
+ + +
+ +
+ +
+ +
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/the23/partials/footer.php b/the23/partials/footer.php new file mode 100644 index 0000000..7d8cc36 --- /dev/null +++ b/the23/partials/footer.php @@ -0,0 +1,127 @@ + diff --git a/the23/partials/languagejs.php b/the23/partials/languagejs.php new file mode 100644 index 0000000..510a09b --- /dev/null +++ b/the23/partials/languagejs.php @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/the23/partials/main_menu.php b/the23/partials/main_menu.php new file mode 100644 index 0000000..48b5aa3 --- /dev/null +++ b/the23/partials/main_menu.php @@ -0,0 +1,239 @@ +
+
+ +
+
\ No newline at end of file diff --git a/the23/partials/stats_nav.php b/the23/partials/stats_nav.php new file mode 100644 index 0000000..2d084d4 --- /dev/null +++ b/the23/partials/stats_nav.php @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/the23/pricing/categorized.php b/the23/pricing/categorized.php new file mode 100644 index 0000000..042fd61 --- /dev/null +++ b/the23/pricing/categorized.php @@ -0,0 +1,186 @@ +
+
+
+
+
+
+
+
+
+ +
+
+ +
+ + + + " data-pricing-yearly="" data-pricing-lifetime="">'.$term.'' ?> + +
+
+ + + + + +
+ +
+
+
+
+
+ $title): ?> +
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+ ' : number_format($plan["urls"]).($plan['ismonthly'] ? '/'.e('mo') : '') ?> +
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+ ' : number_format($plan["clicks"]).'/'.e('mo') ?> +
+ +
+
+
+
+ + $feature): ?> + + +
+
+
+
+ +
+
+
+
+ +
+ {$slug}) && $plan["permission"]->{$slug}->enabled): ?> + + + + apirate->count == '0' ? '' : ee('{x}/min', null, ['x' => $plan["permission"]->apirate->count]) ?> + + + + qr->count == '0' ? '' : $plan["permission"]->qr->count.($plan['isqrmonthly'] ? '/'.e('mo') : '') ?> + + + + {$slug}->count == '0' ? '' : $plan["permission"]->{$slug}->count ?> + + + + + bioblocks->custom) ? count(explode(',', $plan["permission"]->bioblocks->custom)).' '.e('Widgets') : count(\Helpers\BioWidgets::widgets()).' '. e('Widgets') ?> + + + + + + + +
+ +
+
+
+
+ + +
+
+ \ No newline at end of file diff --git a/the23/pricing/checkout.php b/the23/pricing/checkout.php new file mode 100644 index 0000000..62cee02 --- /dev/null +++ b/the23/pricing/checkout.php @@ -0,0 +1,231 @@ +
+
+

+ +
+ +
+
+
+
+
+
+ $processor): ?> + enabled) continue ?> + + +
+ $processor): ?> + enabled) continue ?> + +
+ + +
+
+
+
+
+ +
+ + +
+
+
+
+
+ + "> +
+
+
+
+ + "> +
+
+
+
+
+ + +
+
+ + "> +
+
+
+
+ + "> +
+
+
+
+ + "> +
+
+
+
+
+
+ + +
+
+
+
+ + "> +
+
+
+
+
+
+
+
+
+
+ price_lifetime && $plan->price_lifetime != "0.00"): ?> + + + + + price_monthly && $plan->price_monthly != "0.00"): ?> + + + + + price_yearly && $plan->price_yearly != "0.00"): ?> + + + + +
+
+
+ icon): ?> + + + + + name ?> +
+
+ price) ?> +
+
+
+
+
+ +
+
+ price) ?> +
+
+
+ +
+ + + + +
+ +
+ +
+
+
+ +
+
+
+
+
+ +
+
+
+ name} ({$tax->rate}%)" ?> +
+
+ price); $plan->price = $plan->price + $tax->price;?> +
+
+
+ +
+
+
+
+ +
+
+ price) ?> +

+
+
+
+ +
+
+
+ +
+ +
+ +
+ config('currency')]) ?> +
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/the23/pricing/index.php b/the23/pricing/index.php new file mode 100644 index 0000000..3236b8c --- /dev/null +++ b/the23/pricing/index.php @@ -0,0 +1,83 @@ +
+
+
+
+

+ +

+

that works for you') ?>

+

+ +

+
+
+
+ +
+
+
+ + + + + + + + + +
+
+ + + + + + + +
+ +
+
+
+

+

+
+
+ +
+
+
+ +
+
+
+
+

+

+ +
+
+ $faq): ?> +
+
+ +
+
+ answer) ?> +
+
+
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/the23/pricing/list.php b/the23/pricing/list.php new file mode 100644 index 0000000..aa15dad --- /dev/null +++ b/the23/pricing/list.php @@ -0,0 +1,70 @@ +
+ $plan): ?> +
+
+
+ + + + + + + + $plan['discount'] ]) ?> + + +
+
+ + + + +
" data-pricing-yearly="" data-pricing-lifetime="">'.$term.'' ?>
+ '.e($plan['description']).'': '' ?> + + + + + +
+
+
    +
  • ' : number_format($plan["urls"]).($plan['ismonthly'] ? '/'.e('mo') : '') ?>
  • +
  • ' : number_format($plan["clicks"]).'/'.e('mo') ?>
  • +
  • ' : $plan["retention"].' '.e('days') ?>
  • + + $feature): ?> + {$slug}) && $plan["permission"]->{$slug}->enabled): ?> + +
  • + + + apirate->count == '0'): ?> + + + $plan["permission"]->apirate->count]) ?> + + + {$slug}->count == '0' ? e('Unlimited') : $plan["permission"]->{$slug}->count ?> + +
  • + +
  • + bioblocks->custom) ? count(explode(',', $plan["permission"]->bioblocks->custom)).' '.e('Widgets') : count(\Helpers\BioWidgets::widgets()).' '. e('Widgets') ?> +
  • + +
  • + + +
  • + + + +
  • ">' : '' ?>
  • + custom ? '
  • '.$plan["permission"]->custom.'
  • ' : '' ?> +
+
+
+
+ +
\ No newline at end of file diff --git a/the23/pricing/table.php b/the23/pricing/table.php new file mode 100644 index 0000000..d5c56f9 --- /dev/null +++ b/the23/pricing/table.php @@ -0,0 +1,143 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $feature): ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + + $plan['discount'] ]) ?> + + + + + + +
" data-pricing-yearly="" data-pricing-lifetime="">'.$term.'' ?>
+ '.e($plan['description']).'': '' ?> + + + + + +
+ ' : number_format($plan['urls']).($plan['ismonthly'] ? ' / '.e('month') : '') ?> +
+ ' : number_format($plan['clicks']).' / '.e('month') ?> +
+ +
+ + + + {$slug}) && $plan["permission"]->{$slug}->enabled; + if(!$featureEnabled): ?> + + {$slug}->count; + if($slug === 'apirate'): ?> + + ' : ee('{x}/min', null, ['x' => $count]); ?> + + + + + + + + / + + + + + + bioblocks->custom) + ? count(explode(',', $plan["permission"]->bioblocks->custom)) + : count(\Helpers\BioWidgets::widgets()); + echo $blockCount . ' ' . e('Widgets'); + ?> + + + + + +
+ ' : '' ?> +
  + custom)): ?> + custom ?> + +
  + + + + + +
+
\ No newline at end of file diff --git a/the23/private.php b/the23/private.php new file mode 100644 index 0000000..87a7377 --- /dev/null +++ b/the23/private.php @@ -0,0 +1,18 @@ +
+
+
+ + + + +

+ +
+ +
+

+ +

+
+
+
\ No newline at end of file diff --git a/the23/screenshot.png b/the23/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..077173d269a7e6c5ef1d9cfa39a144e20a653742 GIT binary patch literal 16748 zcmchB(LoX1%=W7-yM3`@uwLS)FjXi4mY0X=Ab|Nil81%8Es7)}PX)%6 zltk_{-GixGPK~k~S7=)B)wUl05cae**G{z?=X56s6j=yI#uNmJtp9t|L9JjIGwwZb={<4lJ$DAu(7^F!p&K`GWHj?#NvT8O znG>qcBF(#Np@t=p^K*!jgg0n2v$Xm8%xr7`sgHw|E}sa=i9$!hk$~av;VAiqXi}+5 zP)UC(L;Azj;G8G;Atm2PTO*7Y#?cH}Z9dJyQW7p`*(v#m#}mUrc8E;2E~G;N^4) zR8_GjF8_M8@AE&T`=iOqneuMFyOry?705?7XI+iaQuLm@zD17-mCWN48nP76e%I#0}*b@^!vT{EZPsNtY8xhnohd zJVHU)UYB*4I>lpj-uev_<1U>7<2<$$;Hk^plmab1_U=x<=~vP9o4j^JljcmU^xGW#X+;`G4efW4$ zGY=SgJ{#sWmwSGJCnae!)C8&)Hlg9xsM!U4Zu||s__^U<*+mytZ5)Z4tNXV$4P%p^ zv?|sbWMbWU`VQv!+*@bnm&0cVWo}mf0sur2D)6md2ltp9I!&MDL4DfvlRZtp^tHZq zkz3}8jj!%q6<5Q)j+?Z88gT^BYWkS+&#WBiW8h3GU8F~ z{)^4xBf2-S9ZE|z0)4_Kro|l}mzNDNz$h#{ANiv6={wTV&jk3z%}{nR#A6SbZ6w@Zy$ij!?I_=9I{J3dC_hTqlChs(3xRudiFlmFH+o{gR)B!B`wGsKUI=U|ekgUdqrrq(C zG#hDKEYcM-vT_##II#LMMu1E^u;Y~OqB&JD$98D=F&L7aTE!g_5^^0h3cZ=@kj7v8`hl++um7brhA?ysz*QVP(Yw~kECrr~ zjLLWXk2EV8m1K70|99*ET3o>tvYNV*L6lKVeygc!MA5Gzr;!<;W)wl-G*&@cfL;%S zX9^l~Sih-OQ;d|)=&Nu?;cGaTR?tK(wA-;dKY?px=M=#=-K_&Ko+kImNEww7Xfn@m zZoz6+HcE0zhsY9MXC?B$$kd)VMOey5MQdJ@ApC@4Dvcj+m4d5TBtdH-7CkOcTwtpw zyi}eOp%a8R9%bZR*p&mKE9ThPLIzOaH$sp_8rIs>$nJI+%`Trww*}=~M z0~_^OEjCX)GMcg@3mN>0n(Tv{88O4g?J=DmnH+?HwJDvXY18o9wyDb%fD5gJx;U_6V_9MC($hZ5CPy!PgXZOv~9!aKbKTVE|QgR z0jaa_W2M4?3A~mlQ2N`%B{aa`5sG&1xF#7bTgayukiHYbAHzF`v%BWN;INTI>f@?7 z!o)tu`lgZ`6tu(6EO89i&hLw*Lg+HWS@GZL{As*~6;>TrW`*K^zb5$qdS$G)AMH;l zomVD?R1ru<5XFkR!DYs)=@NXD1RpdR8ox3Oq!C^4kyU|#bq^Zro!f+NXn>xqt}XY11jtqYO@sfu?TkN2aY&hE~U=wVK7!Qc2F2fmi-tBl9QR1CH4} z1ahsVkOKv_V!2RCZYEr96)LU}YN^yYpi}}W;Co9A)`&QGjOWbS{zq9AfU5kngkDAC zpFqgi$^8R)O&)uzv}B8adX(=9_r+1n5a9n{e?c)T4L1)BHw(R&uLWV1plKDjwQdJI z;uziX<#S*bSZ3201_i?BKqkT^{ptEI+pCLzS_XSmGnJZj)$ks2--)v+I^rtE&LpP?lpDtET6b*sv`Zmqd$_}8uY#e)m`=+XzHi< z&JxVi?zkfr6BqVTp6Hs6>y=$%`%H7!Esmc5U`Wf~n`$lFP9FZ|-5Wft~*_7Qd-e^DV{_&C%^7Yjf`-{2Z+6PjO^9@1baR+e^%LdiB=N%7ZpNb z)~uE@F(Kueo2&6rfOm1_sx{R_cX)Y!OXo3W>2h8eBowxwS*%zCyR}O3HaA6nZ8nbX z$hF(l33+(HNRA;3Y5ONzv85bQJOGy*O>P`(PWdFZwD}5L_djZOntd+Ia=%B9k^ij7 zbxW3`@1l2#g>TUhcBVzbMCCs1eA%*#ZLe^{^*H+}`&CzXC@oetESzU!KfF)`ShM!q zBjdUCmVjiZd97&jk*G-?9%!yoVt*R!O9q5K7NJqW;Aq9q%yN{(#l z-GYP!?e}-~#d*`5KcihU92_5`Fe(4_^H6o*HE`W&t<%cdUMd<%;!{8@vg76Z3Gk^O z2b0)Xc(2bfb0$gBvlowlZ^|(cr@G@>j8DTs#>GW_??{s9pbw_R|PE4HTyo1+FsS5Wm zS$mFC5$^1XNG%~dIVgv^i+}yy5E~^deL6iM_d9*yts2X#onV05R)2U*M8dtpMC%zd zotR#167RubVWln~d&!zjN8*h;aV!Tfc|E zfZ&dGmecTLb`k^WR>!9FnWonUf#iXe4kc2`^TME$>gI6RnMVaX&n0JEaX`MDswCT;G$0w zc=ELLw7V(YV!>;U|Ad;NP>Xv+u1Az6Ts{4d5MEWlMu9U8qL1@ZyXl2atE0m^F=@G+ zQ`5ud1UWIe|?)dpR3TVv%`BoIyp*6 zOA7gT-D7kGrRh19Ha7PPnm$}V?N@f^H#L!?iW>$~YJq zoE?0}&S!QCZiMqW*zpPcP9uAc$r$qCIJmhd)u{)xpQXuL8=w1>#U3y}pVX{7G&eS6 zVX5WsY=|{%*}BwmJJo@c*}LD#-yi;vqea~Ms$6=8^{zxD_L#^V&D2e)KcDDV&;i)K|?_{3o> z&B4a1-zU|7IprPRtYBiK@$MbLB|~9I>)BNx(-ZhLO{nwG&<X=r!2sqz>gz+9Gy5awP@>I6mJmPl2W=i8aDPWhmBdV za}?b=o{HZ~XRE9k(R*`K)83Cbf^EkSpZ?Vs2fs)ARC86H=T=1#hfIKKWRuIj(J$0N zdKF2{$Z6#QS87mRf$eX6l~o@N5&Y@c{(7~u7JoAui;_?x=v5kwYeQk5t0Z3i7B3ay zq0X)E-F3MU_Cw(O&)014WcA5&TOneT#t(G~_712Cu5geZH*ev?B#7p}A<&3~A_O-CkRnSji zopr5~WfQe2KL1r3K(-_x-wx1{LY*ANVXjIvw&c(Qb~fd3){6i%qf-Yxx319Hhbkt( zG}>yi8U*Z#0;3s6BV>^bz2E%R1YQ4~?NtCR-^)m16j;-{t;zw7si_`%?8ELC8TFhV zck*h_*S|V0l9a^dej+WQtxQJ@lbMbo8m7(o-mju0M-y2O*qJ{I`Egyk?j37+yWB*~ z#gLdCpos@o2*_xRT|Ga_Fl;>=Re=Z4(}h~mGHx~)XataCHCD|``qTw(wtM50=~Gy&yHGi`S!k+rq4`V~xz{V8AS8ZBvKSFGi~dk) zZ4pb&to}4o)27l?gjDB|CJ5ft>%$UZ?;E`t^LNfdx;4d?eGz5~3X`|@hgD5VdSD7v z{~jeb@NJ{D4rgg!ZaWT}4+AgtT$F{nMVvvt!pe9&&MZQ|UIw>bhDPB%_i`3{+-!wI zY+YA)d0avmPN&OPx~fV3<{ZN!f+yInpiMbPtmQ1o3}k0xg>g3)*=XEuei zvqT3R<{ebQP(axDz}UY=fTpiakwhc;`Ekfaa1K0$Ex*Tf!e*Y!yM)$!aN=KA(jU{; ztXomiYurjJ zh9=_HKp{grJ!!*fG}OngNd~j)=WMML@z04e=Zn7)jwbg^oHRn0mBfcH;p4-G@v)7K zjXQZe-qGUH@FHMMdc@sm3-npD!|#vA2S=bdc!+rsJ9 z>y}|-?g|ba&9vC#X}bFZDR++RD0<6d@K(Obo`r1`5Hap~sy)zpm5ezU+IAt&=PzT& z+r#GQp0LLmhl!?vfkP!xx~`lw@u#9El@SJIlGTlL`l^dO>gYH}x9!avHofi&*dunU z;aZBu!Y6&l+^vOOa(}9G_9bDbVS=1eO(Ku#dymGs1{{mum>MEaXof$)eTdiy6s%fo zL`YBfDs|_l9q?bT#4$hk9Xg$3Ka-OqwN*_`vCUaL#Aa0wl@R2buR+%(Ia?!4cmuhVn5LEZ9ktU8h2 z$$31=EZ$#p_$Op?=FxF8&ggHka|@(a*Sfzbirkh3roZ{OS!J9!1)YbT zfL4%u@0avKcLC2&2S6oLX=8G>?k7^al_uE0=i%RU{M9v-i2NgbXDt$fZFlIw-4Bh` zM8RJb6^E8HfmZqhZ4eFZ+N%^czv3cRc zUyQzU;)JZAokv(2K#e#3_Rt{V^t+FFj4|r`H-y;vQhIA<39I*UoD|sSOEJZt!_o2f zF7kTX=$SzO5~xk?_|p3}GCs;vsT}Y!K%sEjf_cO?5c$nEhGWZVO;n3%S|L{}a%jk6 z4-4<3ptg1v+!_)R5*`=Fp8~9aD_~!4b){cjT~$_BH`Ale+uJLUFqC#3cz?P%-{kAG zOM@u3dCAf{qn~HJyk*hwvvH#ocIiBG_Uz}{cka9<(%jh<;(9+o(L;fwO@8QWu+#EQ z#?qjlplJG%->;vP!Fci`^ZoIc_L_GMY?^XjwW-5m8I51?M1}&icWz72h!(f zZs}De%X}VwD}-~39`BZ4V@OOLnZb>I;;&QaEzkd$6=+e{{{ArzxPRpal_BABHW5^< z*KOD-RkiL)u3yEB1DMuo1xb7}8Ci*}No@_6vtw8#9XgF;tyNsMHkwIPG+)DX9Xs*7 zy}f-w)8Zc;jN`1VtQ)7TnVH0=DRKyTTKEw?lOT+K&H8=?@4YwEB2XK;u!NSADk)#M zR^78+zc+FzH(1GHaF;>@5ou!hMfMZi)D+UN89+~{fe=}ZG1V~CfJ<9Q`AQes?6|e9 zqpzXY{KqLJLUQBe!88wEH@B6_utzV zD9`_FGt$ZM%r`EFRL}hx-eSY(%HIpR<6$w(>&$an+cr!wLqN&H>)+|{2j%yFU+0dD zzJATRuh_-(JJsFlqxg6l7A;Lu5?k3veBUML?r{vbB@y{|T;#PIL4UQj^}Yxm?GKi3 zy*ZixvS*i`gCEN50=(MTm4EGao-L(C&AL@#VV;hbs|0Tg%do6`h8?_lHa+vwYHC*- zxEbp}ntNuxCC~WVKc99Pck_WyDfZfi4L(6WTQEOuA}hUxe%NZZc%xIR|7w|*k!#a* z3TS@1IlX+0G;veMrAv=o|iQ_I`AHeB75&mTUBol$-fI zV_1<(G4&vf7n_{m&~mSMFYequb8NQAk#?jc%^)(0tqqCWVxmX%alKxXoN}6M%hBU! z3S~c0UOe3ViUKqm0?q3^Nch=gdhK$$agm{S;wUe0>U04Jb9{1f@nB|V=2g}CpmVz( z!@qfqjEVWk!^`W9&!%_${5&0aVQp{Et7c(QDyLVpqKNDVL$4(+y?p-$?0(`@6tymG zlvU{nUp8KAvWGo{_HcLKIVsB<8i>GgUbQYOC@`LmWTSODb{3xfGiOZhZ>4KQ%b?xq z!#fm55l7DQ;(9 z2?rxAL{d}W9#%fl5CS$)*W=?VN`hQMZG(Al>~^l>0$)w#8*hQK(LLfH&q_&zm2e0U zg`MS>ZdmlOw3!^esjr;qUsBfe1fii1_!_D8za%L=ZL*a7_yUe_@h0E6?Cny8TiL0R zjXn2!8r&#-;wO^N&wJX11>RwlQ<1V$2Q7pblU|HVIyCM1oyIq|c%!DJ?+D5f z5a`&Z6rnTEgu>W{xjVh|d^c(SWsMrE#4O|W6FsNO0T{lAgZicm)!YnI)(vN84?9HT zP0_!8R6 z4A6u-!B(kv@j=JVy1Msn9{avR;;N*u z&Ys|Kv4Zc&)Buzz9k}z(9Hfu^ud80BZ{E*HFVa*07r09^4xWjIbb}^|lYq-T3dxyJ zERyzw0%p4MP+tPB5hSg=PHo61sNHv>2Veoz-ijf7*@~}uQrKp`4Uz?LU@*9rhaWz9 z2A5OFBTbwxVfSF3?%z{S(MJ?zGp$W0U1g)Mch_R4*Gcp_d2fU;Kj6+8{qS}rt75~k zv9sF<(a*V|WgJr}6kz*W^_)P6muE_Tf)KHVLh0LO-jcam?RiZD`1JQneK_uYI5qdR z4CR|3pt?C&d!^?fwf=T?NXKzSz%)ovi`?*%b?fDh2k-^iQFG)Kh43%^9wBfQ1^ZdRz@=q5f=!FkTS199Q@MVCP1- z%?L9}+S(-dKDv;UY`6cs6dN2T_NoDOz9V4~jg%O!YzS;DBoD_8)5M}jrRG2jHWY$= z>Q3r7oyOL*ygY)E8)?F=R_g2|xtF}Iu!40t@RuFsD>5HTxePsRip+|R_s`3wD`Xya z0VQ@wJj}9~=&eqm(Kp! z57%-NAp7}u=2dX;15*0-3E`WSU{WKk-sB}G2YGuwzJxy?xnmnd_TPSUQC=RC&Spz; zPm6)OFvPICSX%e+VdD7Qcf3^ve}U)hQ-$5~wW<9P6}cKG*nW3YEbTN2=V+KV+&mVK zfC=W|mq70qKtDXSmtVCspkKuMGJ!fXE)Axe3EBaBr)XIrVX2dYyyaVJAbYhg`%Bxm zb(*6eF`U>opfAM15u-Atue7|0o-8ug?5}P3=@{n)B|Syd>Mb$yNmuf3a?P9Vo} z1wlwn0xc!n3}VP>OIk2CvaX@Pf({X7jV7T-nEOA7x|vFHsAZcX5!`Ra$IENHRHa{P zY1P)$MLm4b)+W@@+)Pr&ufEK_GfWX^$I2)d8H6pN%3NR<39jzd>;L8FU7_1N<(AUu zeS2u|*yOw?tFEb;RdsW6*A@LWbmO9azKFF?6io}7A&c}*I26_45Js|-ny^Q{7| z)fRA=qX72ac`t@Pb4M(tR|P_y#9rSYyNBJE^etJ@(IZLP7ftAYot&J=E~B8J_|UhB zwADdu1HkWHe1o{nQ&WobOG_k=hpxGP#W)AjJ9|(H>mD^A#9&pqlt*4Op21K*#Y zdNBixM1P}!A?)sMXTx)AkjOIInDrcaBSUGOfg{@wBerPFITuC_U{Z!GrWG)9^C?zr z7zI1ex2WfNAhv*6YS~{u);|Zhm32A(xGx=iV5+K`2rxc(f9?4Xl!-Y}-u

`=zPp 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

+ $plan): ?> +
+ + + + + +
+
+ + + +

+

'.e($plan['description']).'': '' ?>

+
+ +
" data-pricing-yearly="" data-pricing-lifetime="">'.$term.'' ?>
+
+
+ + $plan['discount'] ]) ?> + +
    +
  • + + ' : number_format($plan["urls"]).($plan['ismonthly'] ? '/'.e('mo') : '') ?> +
  • +
  • + + ' : number_format($plan["clicks"]).'/'.e('mo') ?> +
  • +
  • + + qr) && $plan["permission"]->qr->enabled) ? ($plan["permission"]->qr->count == '0' ? '' : $plan["permission"]->qr->count).($plan['isqrmonthly'] ? '/'.e('mo') : '') : '' ?> +
  • +
  • + + bio) && $plan["permission"]->bio->enabled) ? ($plan["permission"]->bio->count == '0' ? '' : $plan["permission"]->bio->count) : '' ?> +
  • +
  • + + ' : $plan["retention"].' '.e('days') ?> +
  • + custom ? '
  • '.$plan["permission"]->custom.'
  • ' : '' ?> +
+ + + + + +
+
+
+ +