first commit

This commit is contained in:
User A0264400
2026-04-01 23:20:16 +03:00
commit a766acdc90
23071 changed files with 4933189 additions and 0 deletions

View File

@@ -0,0 +1,892 @@
<?php
/**
* Templateberg Connect
*
* @since 1.0.0
*/
if (! class_exists('Templateberg_Connect')) {
/**
* Class Templateberg_Connect.
*/
class Templateberg_Connect
{
private static $page_slug = 'templateberg';
private static $id = 'templateberg-connect';
private static $disconnect_id = 'templateberg-disconnect';
private static $purchase_id = 'templateberg-payments';
private static $purchase_templates = 'templateberg-purchase-templates';
const ACCOUNT_URL = 'https://templateberg.com/wp-login.php';
/*Editor Gutenberg Templates*/
const TEMPLATE_URL = 'https://templateberg.com/wp-json/connect/v1/get_templates/';
/*Editor Gutenberg Purchase Templates*/
const PURCHASE_URL = 'https://templateberg.com/wp-json/connect/v1/purchase/';
/*Editor Get Template data to import*/
const TEMPLATE_DATA_URL = 'https://templateberg.com/wp-json/connect/v1/get_template_data/';
/*Admin Page Templates*/
private static $current_theme_purchase_id = 'templateberg-current-theme-payments';
private static $current_theme_purchase_templates = 'templateberg-current-theme-purchase-templates';
const GUTENBERG_TEMPLATES_URL = 'https://templateberg.com/wp-json/connect/v1/gutenberg_templates/';
const THEME_TEMPLATES_URL = 'https://templateberg.com/wp-json/connect/v1/theme_templates/';
const CURRENT_THEME_TEMPLATES_URL = 'https://templateberg.com/wp-json/connect/v1/current_theme_templates/';
const CURRENT_THEME_PURCHASE_URL = 'https://templateberg.com/wp-json/connect/v1/purchase_current_theme_demos/';
const THEME_TEMPLATE_DATA_URL = 'https://templateberg.com/wp-json/connect/v1/get_theme_template_data/';
/**
* Main Templateberg_Connect Instance
* Initialize the class and set its properties.
*
* @since 1.0.0
* @return object $instance Templateberg_Connect Instance
*/
public static function instance()
{
// Store the instance locally to avoid private static replication
static $instance = null;
// Only run these methods if they haven't been ran previously
if (null === $instance) {
$instance = new Templateberg_Connect();
}
// Always return the instance
return $instance;
}
/**
* Create nonce
*
* @since 1.0.0
*/
private function create_nonce()
{
return wp_create_nonce(self::$id);
}
/**
* Check if user has account
*
* @since 1.0.0
*/
public function has_account()
{
if (!get_user_meta(get_current_user_id(), self::$id, true)) {
return false;
}
if (!is_array(maybe_unserialize(get_user_meta(get_current_user_id(), self::$id, true)))) {
return false;
}
return true;
}
/**
* Get Account
*
* @since 1.0.0
*/
public function get_account($add_additional = true)
{
$account_info = maybe_unserialize(get_user_meta(get_current_user_id(), self::$id, true));
if (!$add_additional) {
return $account_info;
}
if (!$account_info) {
return $account_info;
}
$user = wp_get_current_user();
$additional_info = array(
'redirect_url' => $this->get_redirect_url(),
'site_url' => get_site_url(),
'home_url' => get_home_url(),
'local-user-id' => absint($user->ID),/*int*/
'local-user-email' => sanitize_email($user->user_email),/*text*/
);
return array_merge(
$account_info,
$additional_info
);
}
/**
* Get Purchase
*
* @since 1.0.0
*/
public function get_purchase()
{
return maybe_unserialize(get_user_meta(get_current_user_id(), self::$purchase_id, true));
}
/**
* Set Purchase
*
* @since 1.0.0
*/
public function set_purchase($prepare_data)
{
update_user_meta(get_current_user_id(), self::$purchase_id, $prepare_data);
if (empty($prepare_data)) {
$this->set_purchase_templates('');
}
}
/**
* Set Purchase templates
*
* @since 1.0.0
*/
public function set_purchase_templates($templates_list)
{
if (is_array($templates_list)) {
update_user_meta(get_current_user_id(), self::$purchase_templates, $templates_list);
} else {
update_user_meta(get_current_user_id(), self::$purchase_templates, '');
}
}
/**
* Get Purchase Templates ids
*
* @since 1.0.0
*/
public function get_purchase_templates_id()
{
$templates_list = $this->get_purchase_templates();
$all_ids = array();
if (is_array($templates_list)) {
foreach ($templates_list as $template) {
$all_ids[] = $template['id'];
}
}
return $all_ids;
}
/**
* Get Purchase templates
*
* @since 1.0.0
*/
public function get_purchase_templates()
{
return maybe_unserialize(get_user_meta(get_current_user_id(), self::$purchase_templates, true));
}
/**
* Get Free Templates
*
* @since 1.0.0
*/
public function get_free_templates()
{
return array(
array(
'title' => __('Agency', 'templateberg'),
'screenshot_url' => TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-10-home-01.jpg',
),
array(
'title' => __('Business', 'templateberg'),
'screenshot_url' => TEMPLATEBERG_URL . 'assets/img/medical-template.jpg',
),
array(
'title' => __('Agency', 'templateberg'),
'screenshot_url' => TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-03-home.jpg',
),
array(
'title' => __('Business', 'templateberg'),
'screenshot_url' => TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-13-home.jpg',
),
array(
'title' => __('Agency', 'templateberg'),
'screenshot_url' => TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-12-home.jpg',
),
array(
'title' => __('Business', 'templateberg'),
'screenshot_url' => TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-13-home.jpg',
),
array(
'title' => __('Agency', 'templateberg'),
'screenshot_url' => TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-10-home-01.jpg',
),
array(
'title' => __('Business', 'templateberg'),
'screenshot_url' => TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-02-home-01.jpg',
),
);
}
/**
* Set Free templates
*
* @since 1.0.0
*/
public function set_free_templates($prepare_data)
{
$templates = array();
if (is_array($prepare_data)) {
foreach ($prepare_data as $data) {
array_push($templates, array(
'title' => $data['title'],
'screenshot_url' => $data['screenshot_url'],
));
}
}
set_transient('templateberg_edt_free', $templates);
}
/**
* Get Slug
*
* @since 1.0.4
*/
public function get_slug()
{
return self::$page_slug;
}
/**
* Check if current screen
*
* @since 1.0.0
*/
public function is_current_screen()
{
if (get_current_screen() ->base === 'toplevel_page_'.self::$page_slug ||
get_current_screen() ->base === 'templateberg_page_'.templateberg_gutenberg_templates()->get_slug() ||
get_current_screen() ->base === 'templateberg_page_'.templateberg_theme_templates()->get_slug()
) {
return true;
}
return false;
}
/**
* Get Redirect Url
*
* @since 1.0.0
*/
public function get_redirect_url()
{
return add_query_arg(array(
'_wpnonce' => $this->create_nonce(),
), get_admin_url());
}
/**
* Get Connect Url
*
* @since 1.0.0
*/
public function get_remote_connect_url($is_reset = false)
{
$user = wp_get_current_user();
return add_query_arg(array(
'redirect_url' => $this->get_redirect_url(),
'site_url' => get_site_url(),
'home_url' => get_home_url(),
'email' => $user->user_email,
'from' => isset($_GET['page']) && 'templateberg' === $_GET['page']?'tb-dashboard':'wp-dashboard',
'reset' =>$is_reset
), self::ACCOUNT_URL);
}
/**
* Get Disconnect Url
*
* @since 1.0.0
*/
public function get_remote_disconnect_url()
{
return add_query_arg(array(
'_wpnonce' => $this->create_nonce(),
self::$disconnect_id => 'templateberg.com',
'user-id' => get_current_user_id(),
), get_admin_url());
}
/**
* Get Templates Url
*
* @since 1.0.0
*/
public function get_template_url($paged = 1)
{
if (!templateberg_connect()->has_account()) {
return false;
}
return add_query_arg(array(
'account'=>templateberg_connect()->get_account(),
'paged'=>$paged
), self::TEMPLATE_URL);
}
/**
* Get Purchase Url
*
* @since 1.0.0
*/
public function get_purchase_url()
{
if (!templateberg_connect()->has_account()) {
return false;
}
$args = templateberg_gutentor_connect()->add_args(array(
'account'=>templateberg_connect()->get_account(),
'theme'=>templateberg_get_current_theme_info(),
));
return add_query_arg($args, self::PURCHASE_URL);
}
/**
* Get Template Data Url
*
* @since 1.0.0
*/
public function get_template_data_url($template)
{
if (!templateberg_connect()->has_account()) {
return false;
}
$args = templateberg_gutentor_connect()->add_args(array(
'account' =>templateberg_connect()->get_account(),
'template' =>$template
));
return add_query_arg($args, self::TEMPLATE_DATA_URL);
}
/**
* Get Gutenberg Templates Url
*
* @since 1.0.4
*/
public function get_gutenberg_tempaltes_url($paged = 1)
{
if (!templateberg_connect()->has_account()) {
return add_query_arg(
array(
'paged'=>$paged
),
self::GUTENBERG_TEMPLATES_URL
);
}
return add_query_arg(
array(
'paged'=>$paged,
'account'=>templateberg_connect()->get_account(),
),
self::GUTENBERG_TEMPLATES_URL
);
}
/**
* Get Themes Templates Url
*
* @since 1.0.4
*/
public function get_theme_tempaltes_url($paged = 1)
{
if (!templateberg_connect()->has_account()) {
return add_query_arg(
array(
'paged'=>$paged
),
self::THEME_TEMPLATES_URL
);
}
return add_query_arg(
array(
'paged'=>$paged,
'account'=>templateberg_connect()->get_account()
),
self::THEME_TEMPLATES_URL
);
}
/**
* Get Themes Templates Url
*
* @since 1.0.4
*/
public function get_current_theme_tempaltes_url($paged = 1, $theme = [])
{
if (!templateberg_connect()->has_account()) {
return add_query_arg(
array(
'paged'=>$paged,
'theme'=>!empty($theme)?$theme:templateberg_get_current_theme_info(),
),
self::CURRENT_THEME_TEMPLATES_URL
);
}
return add_query_arg(
array(
'paged'=>$paged,
'account'=>templateberg_connect()->get_account(),
'theme'=>!empty($theme)?$theme:templateberg_get_current_theme_info(),
),
self::CURRENT_THEME_TEMPLATES_URL
);
}
/**
* Get Purchase Url
*
* @since 1.0.4
*/
public function get_current_theme_purchase_url()
{
if (!templateberg_connect()->has_account()) {
return false;
}
return add_query_arg(
array(
'account'=>templateberg_connect()->get_account(),
'theme'=>templateberg_get_current_theme_info(),
),
self::CURRENT_THEME_PURCHASE_URL
);
}
/**
* Set Purchase
*
* @since 1.0.4
*/
public function set_current_theme_purchase($prepare_data)
{
update_user_meta(get_current_user_id(), self::$current_theme_purchase_id, $prepare_data);
if (empty($prepare_data)) {
$this->set_current_theme_purchase_templates('');
}
}
/**
* Set Purchase templates
*
* @since 1.0.4
*/
public function set_current_theme_purchase_templates($templates_list)
{
if (is_array($templates_list)) {
update_user_meta(get_current_user_id(), self::$current_theme_purchase_templates, $templates_list);
} else {
update_user_meta(get_current_user_id(), self::$current_theme_purchase_templates, '');
}
}
/**
* Get Purchase Templates ids
*
* @since 1.0.4
*/
public function get_current_theme_purchase_templates_id()
{
$templates_list = $this->get_current_theme_purchase_templates();
$all_ids = array();
if (is_array($templates_list)) {
foreach ($templates_list as $template) {
$all_ids[] = absint($template['id']);
}
}
return $all_ids;
}
/**
* Get Purchase templates
*
* @since 1.0.4
*/
public function get_current_theme_purchase_templates()
{
return maybe_unserialize(
get_user_meta(
get_current_user_id(),
self::$current_theme_purchase_templates,
true
)
);
}
/**
* Get Template Data Url
*
* @since 1.0.4
*/
public function get_theme_template_data_url($template)
{
if (!templateberg_connect()->has_account()) {
return false;
}
return add_query_arg(array(
'account' =>templateberg_connect()->get_account(),
'template' =>$template
), self::THEME_TEMPLATE_DATA_URL);
}
/**
* Run the method
*
* @since 1.0.0
*/
public function run()
{
add_action('admin_init', array( __CLASS__, 'connect' ), -1);
add_action('admin_init', array( __CLASS__, 'disconnect' ), -1);
add_action('admin_menu', array( __CLASS__, 'admin_pages' ));
add_action('admin_init', array( __CLASS__, 'redirect' ));
add_action('wp_ajax_templateberg_gutentor', array( $this, 'install_gutentor' ));
add_action('wp_ajax_templateberg_advanced_import', array( $this, 'advanced_import' ));
}
/**
* Admin Page Menu and submenu page
*
* @since 1.0.0
*/
public static function admin_pages()
{
add_menu_page(
esc_html__('Templateberg', 'templateberg'),
esc_html__('Templateberg', 'templateberg'),
'manage_options',
self::$page_slug,
array( __CLASS__, 'account' ),
'data:image/svg+xml;base64,' . base64_encode(
'<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 35.81 42.76"><defs><style>.cls-1{fill:#fff;}</style></defs><title>Untitled-1</title><g id="Logo_1" data-name="Logo 1"><path class="cls-1" d="M36.6,4.31A62.21,62.21,0,0,0,26,3.05C25.11,3,24.24,3,23.34,3H22A64,64,0,0,0,11.4,4a45.7,45.7,0,0,0-5.31,1.3v12.4H11.4V9.62a61.72,61.72,0,0,1,9.28-1.19V32L24,33.16,27.32,32V8.37a63,63,0,0,1,9.28,1v8.4h5.31v-12A42.36,42.36,0,0,0,36.6,4.31Z" transform="translate(-6.09 -3)"/><polygon class="cls-1" points="30.5 23.53 30.5 27.49 19.89 34.76 17.91 36.13 15.92 34.76 5.3 27.49 5.3 23.53 0 23.53 0 30.48 5.3 34.13 15.92 41.39 17.91 42.76 19.89 41.39 30.5 34.13 35.81 30.48 35.81 23.53 30.5 23.53"/></g></svg>'
),
110
);
}
/**
* Get Admin URl
*
* @since 1.0.0
*/
public function get_admin_url()
{
return menu_page_url(self::$page_slug, false);
}
/**
* Redirect to plugin page when plugin activated
*
* @since 1.0.0
*/
public static function redirect()
{
if (get_option('__templateberg_do_redirect')) {
update_option('__templateberg_do_redirect', false);
if (! is_multisite()) {
exit(wp_redirect(templateberg_connect()->get_admin_url()));
}
}
}
/**
* Load account templates
*
* @since 1.0.0
*/
public static function account()
{
if (isset($_GET['connecting'])) {
require_once TEMPLATEBERG_PATH . 'includes/admin/templates/connecting.php';
} else {
if (templateberg_connect()->has_account()) {
require_once TEMPLATEBERG_PATH . 'includes/admin/templates/account.php';
} else {
require_once TEMPLATEBERG_PATH . 'includes/admin/templates/getting-started.php';
}
}
}
/**
* Connect
*
* @since 1.0.0
*/
public static function connect()
{
if (isset($_GET[self::$id]) && $_GET[self::$id] == 'templateberg.com') {
if (!isset($_GET['_wpnonce']) ||
!isset($_GET['key']) ||
!isset($_GET['token']) ||
!isset($_GET['email']) ||
!isset($_GET['user-name']) ||
!isset($_GET['user-id']) ||
!isset($_GET['site-id']) ||
! wp_verify_nonce($_GET['_wpnonce'], self::$id)
) {
$invalid = esc_html__('Sorry, we could not connect. Please try again.', 'templateberg');
wp_die($invalid, $invalid, [
'link_url' => admin_url(),
'link_text' => esc_html__('Back to Admin', 'templateberg'),
]);
}
$prepare_data = array(
'key' => sanitize_text_field($_GET['key']),/*text*/
'token' => sanitize_text_field($_GET['token']),/*text*/
'email' => sanitize_email($_GET['email']),/*email*/
'user-name' => sanitize_text_field($_GET['user-name']),/*text*/
'user-id' => sanitize_text_field($_GET['user-id']),/*text*/
'site-id' => sanitize_text_field($_GET['site-id']),/*text*/
);
update_user_meta(get_current_user_id(), self::$id, $prepare_data);
$connect_url = templateberg_connect()->get_admin_url().'&connecting=true';
if (isset($_GET['isPopup'])) {
$connect_url .= '&isPopup=true';
}
wp_redirect($connect_url);
exit;
}
}
/**
* Disconnect
*
* @since 1.0.0
*/
public static function disconnect()
{
if (isset($_GET[self::$disconnect_id]) && $_GET[self::$disconnect_id] == 'templateberg.com') {
if (!isset($_GET['_wpnonce']) ||
!isset($_GET['user-id']) ||
get_current_user_id() != $_GET['user-id'] ||
! wp_verify_nonce($_GET['_wpnonce'], self::$id)
) {
$invalid = esc_html__('Sorry, we could not disconnect. Please try again.', 'templateberg');
wp_die($invalid, $invalid, [
'link_url' => admin_url(),
'link_text' => esc_html__('Back to Admin', 'templateberg'),
]);
}
delete_user_meta(get_current_user_id(), self::$id);
wp_redirect(templateberg_connect()->get_admin_url());
exit;
}
}
/**
* FAQ Array
* @access Private
* @return array
*/
public function faq()
{
return array(
array(
'q' => esc_html__('What is Templateberg?', 'templateberg'),
'a' => esc_html__('A collection of pre-designed template and template kits library for WordPress. Templateberg includes a variety of templates for all kinds of websites from any niche to multipurpose including blog, magazine, eCommerce, travel, business, medical, construction, photography, education, fitness, automotive, portfolio, restaurant, multipurpose and much more. Templateberg facilitates to import of pre-designed template with starter content on the user website so that user can quickly build a beautiful website with WordPress.', 'templateberg'),
),
array(
'q' => esc_html__('What is a Gutenberg block?', 'templateberg'),
'a' => esc_html__('A section of a website page created with Gutenberg or Gutenberg Addons plugin. It is the most modern way to design a website. The possibility is endless to create any page design by importing and combing the block section.', 'templateberg'),
),
array(
'q' => esc_html__('What is a Gutenberg template?', 'templateberg'),
'a' => esc_html__('A full-page pre-designed of a single page of a website with starter content created with Gutenberg block. It can be a home page, about, service, contact, pop-ups, products, pricing or any landing pages.', 'templateberg'),
),
array(
'q' => esc_html__('What is a Gutenberg template kit?', 'templateberg'),
'a' => esc_html__('A collection of cohesive pre-designed Gutenberg templates with all pages for a niche/multipurpose website focusing on a similar design concept.', 'templateberg'),
),
array(
'q' => esc_html__('What is Gutentor?', 'templateberg'),
'a' => sprintf(esc_html__('Gutentor is a WordPress plugin based on WordPress Block (Gutenberg) Editor, modern drag & drop WordPress page builder Know more about it on %1$sGutentor official website%2$s.', 'templateberg'), "<a href='https://www.gutentor.com/' target='_blank'>", '</a>'),
),
array(
'q' => esc_html__('What is a WordPress Theme Template Kit?', 'templateberg'),
'a' => esc_html__('A pre-designed starter content for a specific theme that you can simply import on your site with a click. In other words, it can be called Demo Content for the theme.', 'templateberg'),
),
array(
'q' => esc_html__('How Gutenberg Template Kit is different from Theme Template Kit?', 'templateberg'),
'a' => esc_html__('Gutenberg Template Kit is designed on WordPress Gutenberg Block Editor whereas Theme Template Kit is designed for the specific theme. Templates from Gutenberg Template Kits can be imported individually on a single page/post but when you import Theme Template Kit all content and pages import at once. Gutenberg Template Kit will work on any Theme but Theme Template Kit will work on a single theme it is created from.', 'templateberg'),
),
);
}
private function install_plugin($plugin_info)
{
$plugin = $plugin_info['plugin'];
$slug = $plugin_info['slug'];
$status = array(
'install' => 'plugin',
'slug' => sanitize_key(wp_unslash($slug)),
);
if (is_plugin_active_for_network($plugin) || is_plugin_active($plugin)) {
// Plugin is activated
wp_send_json_success($status);
}
if (! current_user_can('install_plugins')) {
$status['errorMessage'] = __('Sorry, you are not allowed to install plugins on this site.', 'templateberg');
wp_send_json_error($status);
}
include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
// Looks like a plugin is installed, but not active.
if (file_exists(WP_PLUGIN_DIR . '/' . $slug)) {
$plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin);
$status['plugin'] = $plugin;
$status['pluginName'] = $plugin_data['Name'];
if (current_user_can('activate_plugin', $plugin) && is_plugin_inactive($plugin)) {
$result = activate_plugin($plugin);
if (is_wp_error($result)) {
$status['errorCode'] = $result->get_error_code();
$status['errorMessage'] = $result->get_error_message();
wp_send_json_error($status);
}
wp_send_json_success($status);
}
}
$api = plugins_api(
'plugin_information',
array(
'slug' => sanitize_key(wp_unslash($slug)),
'fields' => array(
'sections' => false,
),
)
);
if (is_wp_error($api)) {
$status['errorMessage'] = $api->get_error_message();
wp_send_json_error($status);
}
$status['pluginName'] = $api->name;
$skin = new WP_Ajax_Upgrader_Skin();
$upgrader = new Plugin_Upgrader($skin);
$result = $upgrader->install($api->download_link);
if (defined('WP_DEBUG') && WP_DEBUG) {
$status['debug'] = $skin->get_upgrade_messages();
}
if (is_wp_error($result)) {
$status['errorCode'] = $result->get_error_code();
$status['errorMessage'] = $result->get_error_message();
wp_send_json_error($status);
} elseif (is_wp_error($skin->result)) {
$status['errorCode'] = $skin->result->get_error_code();
$status['errorMessage'] = $skin->result->get_error_message();
wp_send_json_error($status);
} elseif ($skin->get_errors()->get_error_code()) {
$status['errorMessage'] = $skin->get_error_messages();
wp_send_json_error($status);
} elseif (is_null($result)) {
require_once(ABSPATH . 'wp-admin/includes/file.php');
WP_Filesystem();
global $wp_filesystem;
$status['errorCode'] = 'unable_to_connect_to_filesystem';
$status['errorMessage'] = __('Unable to connect to the filesystem. Please confirm your credentials.', 'templateberg');
// Pass through the error from WP_Filesystem if one was raised.
if ($wp_filesystem instanceof WP_Filesystem_Base && is_wp_error($wp_filesystem->errors) && $wp_filesystem->errors->get_error_code()) {
$status['errorMessage'] = esc_html($wp_filesystem->errors->get_error_message());
}
wp_send_json_error($status);
}
$install_status = install_plugin_install_status($api);
if (current_user_can('activate_plugin', $install_status['file']) && is_plugin_inactive($install_status['file'])) {
$result = activate_plugin($install_status['file']);
if (is_wp_error($result)) {
$status['errorCode'] = $result->get_error_code();
$status['errorMessage'] = $result->get_error_message();
wp_send_json_error($status);
}
}
wp_send_json_success($status);
}
/**
* Get Started Notice
* Active callback of wp_ajax
* return void
*/
public function install_gutentor()
{
check_ajax_referer('templateberg_nonce', 'security');
$slug = 'gutentor';
$plugin = 'gutentor/gutentor.php';
/*prevent gutentor to redirect*/
update_option('__gutentor_do_redirect', false);
$this->install_plugin(
array(
'slug'=>$slug,
'plugin'=>$plugin,
)
);
}
/**
* Install Advanced Import
* Active callback of wp_ajax
* return void
*/
public function advanced_import()
{
check_ajax_referer('templateberg_nonce', 'security');
$slug = 'advanced-import';
$plugin = 'advanced-import/advanced-import.php';
/*prevent gutentor to redirect*/
update_option('__gutentor_do_redirect', false);
$this->install_plugin(
array(
'slug'=>$slug,
'plugin'=>$plugin,
)
);
}
}
}
/**
* Begins execution of the hooks.
*
* @since 1.0.0
*/
function templateberg_connect()
{
return Templateberg_Connect::instance();
}
templateberg_connect()->run();

View File

@@ -0,0 +1,178 @@
<?php
/**
* Templateberg Connect to Gutentor
*
* @since 1.0.0
*/
if ( ! class_exists( 'Templateberg_Gutentor_Connect' ) ) {
/**
* Class Templateberg_Gutentor_Connect.
*/
class Templateberg_Gutentor_Connect {
/**
* Main Templateberg_Gutentor_Connect Instance
* Initialize the class and set its properties.
*
* @since 1.0.0
* @return object $instance Templateberg_Gutentor_Connect Instance
*/
public static function instance() {
// Store the instance locally to avoid private static replication
static $instance = null;
// Only run these methods if they haven't been ran previously
if ( null === $instance ) {
$instance = new Templateberg_Gutentor_Connect();
}
// Always return the instance
return $instance;
}
/**
* Add Gutentor args
*
* @since 1.1.4
*/
public function add_args( $args ) {
if ( $this->has_valid_license() ) {
$args['gutentor'] = array(
'license' => gutentor_pro_license_init()->get_license_key(),
'url' => home_url(),
'environment' => function_exists( 'wp_get_environment_type' ) ?
wp_get_environment_type() : 'production',
);
}
return $args;
}
/**
* If gutentor pro license is valid
*
* @since 1.1.4
*
* return bool
*/
public function has_valid_license() {
$license_data = templateberg_gutentor_connect()->get_license_info();
if ( ! $license_data || ! isset( $license_data->license ) || 'valid' !== $license_data->license ) {
return false;
}
return true;
}
/**
* If gutentor pro license info
*
* @since 1.1.4
*
* return bool||object
*/
public static function get_license_info() {
// Store the $license_data locally
static $license_data = null;
// Only set the license they haven't been set previously
if ( null === $license_data ) {
if ( ! function_exists( 'gutentor_pro_license_init' ) ||
! function_exists( 'gutentor_pro_edd_plugin_installer' ) ) {
$license_data = false;
} else {
if ( ! gutentor_pro_license_init()->menu_slug ) {
gutentor_pro_license_init()->run();
}
$license_data = gutentor_pro_edd_plugin_installer()->check_license();
}
}
// Always return the $license_data
return $license_data;
}
/**
* Get Gutentor Remaining Template Kits
*
* @since 1.1.4
*/
public function get_total_template_kits() {
$license_data = templateberg_gutentor_connect()->get_license_info();
if ( ! $license_data || ! isset( $license_data->license ) || 'valid' !== $license_data->license ) {
return false;
}
if ( 1 === absint( $license_data->license_limit ) ) {
return 12;
} elseif ( 5 === absint( $license_data->license_limit ) ) {
return 33;
} elseif ( 25 === absint( $license_data->license_limit ) ) {
return 55;
} else {
return -1;
}
}
/**
* Get Gutentor Remaining Template Kits
*
* @since 1.1.4
*/
public function get_imported_template_kits() {
if ( ! metadata_exists( 'user', get_current_user_id(), 'templateberg-gutentor-imd-tmls' ) ) {
return array();
}
$imported = get_user_meta( get_current_user_id(), 'templateberg-gutentor-imd-tmls', true );
$imported = json_decode( $imported, true );
return array_unique( $imported );
}
/**
* Set Gutentor Imported Template Kits
*
* @since 1.1.4
*/
public function add_imported_template_kits( $gutentor_info ) {
if ( ! isset( $gutentor_info['template_kits_used'] ) ||
! is_array( $gutentor_info['template_kits_used'] ) ||
empty( $gutentor_info['template_kits_used'] )
) {
return;
}
update_user_meta(
get_current_user_id(),
'templateberg-gutentor-imd-tmls',
wp_json_encode( array_unique( $gutentor_info ) )
);
}
/**
* Get remaining tempalte kits.
*
* @since 1.1.4
*/
function get_remaining_template_kits() {
$total_num = templateberg_gutentor_connect()->get_total_template_kits();
$used_template_kits = templateberg_gutentor_connect()->get_imported_template_kits();
$used_num = count( $used_template_kits );
return $total_num - $used_num;
}
}
}
/**
* Begins execution of the hooks.
*
* @since 1.0.0
*/
function templateberg_gutentor_connect() {
return Templateberg_Gutentor_Connect::instance();
}

View File

@@ -0,0 +1,264 @@
<div class="tb-all_content_wrap">
<?php
$account_info = templateberg_connect()->get_account();
require_once TEMPLATEBERG_PATH . 'includes/admin/templates/header.php';
?>
<div class="tb-account">
<div class="tb-account__content">
<div class="tb-container">
<div class="tb-row">
<div class="tb-col-3">
<div class="tb-account__details">
<div class="tb-account__profile tb-text__center">
<div class="tb-account__pic">
<?php echo get_avatar($account_info['email'], 100); ?>
</div>
<div class="tb-account__info">
<h5>
<a href="https://templateberg.com/dashboard/">
<?php echo esc_html($account_info['user-name']); ?>
</a>
</h5>
</div>
</div>
</div>
<div class="tb-account__details">
<h6> <?php esc_html_e('Contact Information', 'templateberg'); ?></h6>
<ul>
<li>
<span class="dashicons dashicons-email"></span>
<strong>
<?php esc_html_e('Support:', 'templateberg'); ?>
</strong>
<a href="https://templateberg.com/contact/">
<?php esc_html_e('Create A Ticket', 'templateberg'); ?>
</a>
</li>
<li>
<span class="dashicons dashicons-email"></span>
<strong>
<?php esc_html_e('Email:', 'templateberg'); ?>
</strong>
<a href="mailto:support@templateberg.com">
<?php esc_html_e('support@templateberg.com', 'templateberg'); ?>
</a>
</li>
</ul>
<h6><?php esc_html_e('Social Network', 'templateberg'); ?></h6>
<ul class="tb-social__links">
<li>
<a href="https://www.facebook.com/templateberg">
<span class="dashicons dashicons-facebook-alt"></span>
</a>
</li>
<li>
<a href="https://twitter.com/templateberg">
<span class="dashicons dashicons-twitter"></span>
</a>
</li>
<li>
<a href="https://www.linkedin.com/in/templateberg/">
<span class="dashicons dashicons-linkedin"></span>
</a>
</li>
</ul>
</div>
</div>
<div class="tb-col-9">
<div class="tb-account__connection">
<div class="tb-row">
<div class="tb-col-12">
<h3 class="tb-account__heading">
<?php esc_html_e('Connections', 'templateberg'); ?>
</h3>
</div>
<div class="tb-col-6">
<div class="tb-account__details">
<h6><?php esc_html_e('Site Connection', 'templateberg'); ?></h6>
<div class="tb-connection__wrap">
<div class="tb-connection__pic">
<?php
$site_icon = admin_url('images/w-logo-blue.png');
if (get_site_icon_url()) {
$site_icon = get_site_icon_url();
} elseif (get_theme_mod('custom_logo')) {
$custom_logo_id = get_theme_mod('custom_logo');
$image = wp_get_attachment_image_src($custom_logo_id, 'full');
$site_icon = $image[0];
}
?>
<img
src="<?php echo esc_url($site_icon)?>"
alt="<?php echo esc_url(get_bloginfo('name')); ?>"
width="80"
height="80"
/>
</div>
<div class="tb-connection__desc">
<p>
<?php esc_html_e(
'Your Site is connected to Templateberg.com',
'templateberg'
);
?>
<span>
<?php esc_html_e(
'Enjoy Templateberg.',
'templateberg'
);
?>
</span>
</p>
<a id="tb-open-manage-connection"
href="#"
class="tb-btn tb-btn__primary">
<?php esc_html_e('Manage Connection', 'templateberg'); ?>
</a>
</div>
</div>
</div>
</div>
<div class="tb-col-6">
<div class="tb-account__details">
<h6><?php esc_html_e('Account Connection', 'templateberg'); ?></h6>
<div class="tb-connection__wrap">
<div class="tb-connection__pic">
<?php echo get_avatar($account_info['email'], 80)?>
</div>
<div class="tb-connection__desc">
<p>
<?php esc_html_e('Connected as', 'templateberg'); ?>
<strong>
<?php
echo esc_html($account_info['user-name']);
?>
</strong>
<span><?php echo esc_html($account_info['email']);?></span>
</p>
<a href="https://templateberg.com/dashboard/"
target="_blank"
class="tb-btn tb-btn__primary">
<?php esc_html_e('Manage Account', 'templateberg'); ?>
</a>
</div>
</div>
</div>
</div>
</div>
<div class="tb-purchase__info">
<div class="tb-row">
<div class="tb-col-12">
<h3 class="tb-global__heading tb-account__heading">
<?php esc_html_e('Purchase Information', 'templateberg'); ?>
<a href="#" class="tb-data__sync tb-data__purchase_sync">
<i class="dashicons dashicons-image-rotate"></i>
<?php esc_html_e('Sync', 'templateberg'); ?>
</a>
</h3>
</div>
<div class="tb-col-12 tb-purchase__data">
<?php
templateberg_get_payment_info_html()
?>
</div>
</div>
</div>
<div class="tb-templates">
<div class="tb-row">
<div class="tb-col-12">
<h3 class="tb-account__heading">
<?php esc_html_e('Available Templates', 'templateberg'); ?>
</h3>
<a href="https://templateberg.com/wordpress-themes-template-kits/" class="tb-btn tb-btn__primary" target="_blank">
<?php esc_html_e('Themes Template Kits', 'templateberg'); ?>
</a>
<a href="https://templateberg.com/gutenberg-templates/" class="tb-btn tb-btn__primary" target="_blank">
<?php esc_html_e('Gutenberg Templates', 'templateberg'); ?>
</a>
</div>
</div>
<div class="tb-templates__wrap">
<div class="tb-templates__list">
<?php
templateberg_get_free_templates_html()
?>
</div>
</div>
</div>
<?php
require_once TEMPLATEBERG_PATH . 'includes/admin/templates/faq.php';
?>
</div>
</div>
</div>
</div>
</div>
<!-- The modal / dialog box, hidden somewhere near the footer -->
<div id="tb-manage-connection" class="hidden">
<div class="tb-manage-connection-wrap">
<div class="tb-manage__body">
<p class="tb-manage__info">
<?php esc_html_e('Templateberg power you to create site quickly and easily.', 'templateberg'); ?>
<?php esc_html_e("You don't have to spend hours trying to create a template and block design.", 'templateberg'); ?>
<?php esc_html_e("With a click the block and template will import on your site and you can change text, image and customize it for your needs.", 'templateberg'); ?>
<?php esc_html_e("Once you disconnect Templateberg, these features will no longer be available and you may no longer create design faster.", 'templateberg'); ?>
</p>
<h4 class="tb-manage__title"><?php esc_html_e('Templateberg power you to create any of the following websites.', 'templateberg'); ?></h4>
<ul class="tb-manage__tempList">
<li><?php esc_html_e('Blog', 'templateberg'); ?></li>
<li><?php esc_html_e('News & Magazine', 'templateberg'); ?></li>
<li><?php esc_html_e('Multipurpose', 'templateberg'); ?></li>
<li><?php esc_html_e('Ecommerce/WooCommerce', 'templateberg'); ?></li>
<li><?php esc_html_e('Easy Digital Downloads', 'templateberg'); ?></li>
<li><?php esc_html_e('Business', 'templateberg'); ?></li>
<li><?php esc_html_e('Finance', 'templateberg'); ?></li>
<li><?php esc_html_e('Automotive', 'templateberg'); ?></li>
<li><?php esc_html_e('Consultant', 'templateberg'); ?></li>
<li><?php esc_html_e('Medical', 'templateberg'); ?></li>
<li><?php esc_html_e('Education', 'templateberg'); ?></li>
<li><?php esc_html_e('Photography', 'templateberg'); ?></li>
<li><?php esc_html_e('Construction', 'templateberg'); ?></li>
<li><?php esc_html_e('Travel', 'templateberg'); ?></li>
<li><?php esc_html_e('Fitness', 'templateberg'); ?></li>
<li><?php esc_html_e('Restaurant', 'templateberg'); ?></li>
<li><?php esc_html_e('Lawyer', 'templateberg'); ?></li>
<li><?php esc_html_e('Charity', 'templateberg'); ?></li>
<li><?php esc_html_e('Portfolio', 'templateberg'); ?></li>
<li><?php esc_html_e('Beauty', 'templateberg'); ?></li>
<li><?php esc_html_e('And many more....', 'templateberg'); ?></li>
</ul>
<div class="tb-info__box">
<div class="tb-manage__help tb-text__center">
<p><?php esc_html_e('Have a question? Wed love to help! Send a question to the Templateberg support team.', 'templateberg'); ?></p>
<a id="tb-send-question-btn" class="tb-manage-help__link tb-btn tb-btn__primary tb-btn__lg" href="https://templateberg.com/contact/" rel="noopener noreferrer" target="_blank">
<?php esc_html_e('Send a question', 'templateberg'); ?>
</a>
</div>
</div>
</div>
<div class="tb-manage__footer">
<p><?php esc_html_e('Are you sure you want to disconnect?', 'templateberg'); ?></p>
<div class="tb-manage__button-row">
<a id="tb-cancel-btn" type="button" class="tb-btn tb-btn__primary">
<?php esc_html_e('Cancel', 'templateberg'); ?>
</a>
<a id="tb-reset-btn" href="<?php echo esc_url(templateberg_connect()->get_remote_connect_url(true))?>" target="_blank" type="button" class="tb-btn tb-btn__sucess tb-btn__reset">
<?php esc_html_e('Reset Connect', 'templateberg'); ?>
</a>
<a type="button" href="<?php echo esc_url(templateberg_connect()->get_remote_disconnect_url())?>" class="tb-btn tb-btn__default">
<?php esc_html_e('Disconnect', 'templateberg'); ?>
</a>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,7 @@
<div class="tb-connecting">
<div class="tb-connecting__loaders">
<div class="tb-connecting__lines"></div>
<div class="tb-connecting__lines"></div>
<div class="tb-connecting__lines"></div>
</div>
</div>

View File

@@ -0,0 +1,28 @@
<div class="tb-accordion__wrap">
<h3>
<?php
esc_attr_e('Frequently Asked Questions', 'templateberg');
?>
</h3>
<?php
$faq = templateberg_connect()->faq();
foreach ($faq as $key => $setting) {
echo "<div class='tb-accordion'>";
echo "<div class='tb-accordion__header'>";
echo "<h4 class='tb-accordion__heading'>";
echo "<a data-toggle='collapse' href='#tb-faq__" . esc_attr($key) . "'>";
echo '<span>';
echo esc_html($setting['q']);
echo '</span>';
echo '</a>';
echo '</h4>';
echo '</div>';
echo "<div id='tb-faq__" . esc_attr($key) . "' class='hidden tb-accordion__bodywrap'>";
echo "<div class='tb-accordion__body'>";
echo wp_kses_post($setting['a']);
echo '</div>';
echo '</div>';
echo '</div>';
}
?>
</div>

View File

@@ -0,0 +1,92 @@
<div class="tb-all_content_wrap">
<div class="tb-getting_started">
<div class="tb-global__header">
<div class="tb-container">
<div class="tb-row">
<div class="tb-col-7">
<div class="tb-global__caption">
<h2 class="tb-global__htitle">
<?php echo esc_html__('Welcome to Templateberg', 'templateberg'); ?>
</h2>
</div>
</div>
</div>
</div>
</div>
<div class="tb-container">
<div class="tb-row">
<div class="tb-col-6">
<div class="tb-connect__notice tb-text__center">
<div class="tb-connect__icon">
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/logo-48x48.png');?>" alt="<?php esc_attr_e('Templateberg', 'templateberg');?>">
</div>
<h4 class="tb-connect__title">
<?php echo esc_html__('Get access to hundreds of free WordPress templates by creating free account.', 'templateberg'); ?>
</h4>
<p class="tb-connect__desc">
<?php echo esc_html__("Templateberg power you to create site quickly and easily. You don't have to spend hours trying to create a template and block design. With a click your favourite template design will import on your site and you can change text, image and customize it for your needs.", 'templateberg'); ?>
<?php echo esc_html__("Clicking the button below will also install and activate the Gutentor Plugin since most of the templates are built with it.", 'templateberg'); ?>
</p>
<p class="tb-connect__gutentor">
</p>
<a id="tb-connect-btn" href="<?php echo esc_url(templateberg_connect()->get_remote_connect_url())?>" target="_blank" class="tb-btn tb-btn__primary tb-btn__lg"><?php echo esc_html__('Get Started With Templateberg', 'templateberg'); ?></a>
</div>
</div>
<div class="tb-col-6">
<div class="tb-templates tb-template__landing">
<div class="tb-templates__wrap">
<div class="tb-templates__list">
<div class="tb-row tb-template__heading_wrap">
<div class="tb-col-12">
<h3 class="tb-account__heading">
<?php echo esc_html__('Free Templates', 'templateberg'); ?>
</h3>
</div>
</div>
<div class="tb-row">
<div class="tb-col-3">
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-10-home-01.jpg')?>" />
</div>
<div class="tb-col-3">
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/medical-template.jpg')?>" />
</div>
<div class="tb-col-3">
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-03-home.jpg')?>" />
</div>
<div class="tb-col-3">
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-13-home.jpg')?>" />
</div>
<div class="tb-col-3">
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-12-home.jpg')?>" />
</div>
<div class="tb-col-3">
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-13-home.jpg')?>" />
</div>
<div class="tb-col-3">
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-13-home.jpg')?>" />
</div>
<div class="tb-col-3">
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/cosmoswp_demo-02-home-01.jpg')?>" />
</div>
<div class="tb-col-12 tb-text__center">
<a href="https://templateberg.com/gutenberg-templates/" class="tb-btn tb-btn__primary" target="_blank">
<?php echo esc_html__('Gutenberg Templates', 'templateberg'); ?>
</a>
<a href="https://templateberg.com/wordpress-themes-template-kits/" class="tb-btn tb-btn__primary" target="_blank">
<?php echo esc_html__('Theme Template Kits', 'templateberg'); ?>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,16 @@
<div class="tb-global__header">
<div class="tb-container">
<div class="tb-global__caption">
<h2 class="tb-global__htitle">
<?php echo esc_html__('Welcome to Templateberg', 'templateberg'); ?>
</h2>
<p class="tb-global__desc">
<?php echo esc_html__("Templateberg power you to create site quickly and easily. You don't have to spend hours trying to create a template and block design. With a click your favourite template design will import on your site and you can change text, image and customize it for your needs.", 'templateberg'); ?>
</p>
<a href="<?php echo esc_url(admin_url('post-new.php?post_type=page')); ?>" target="_blank" class="tb-btn tb-btn__primary tb-btn__lg">
<?php echo esc_html__('Get Started With New Page', 'templateberg'); ?>
</a>
</div>
<img src="<?php echo esc_url(TEMPLATEBERG_URL . 'assets/img/prospective-image-640x214.png')?>" alt="<?php esc_attr_e('Template Kits', 'templateberg'); ?>"/>
</div>
</div>