Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
formlayer-pro
:
functions.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /* * FormLayer Pro * https://formlayer.net * (c) FormLayer Team */ // Are we being accessed directly ? if(!defined('ABSPATH')){ exit('Hacking Attempt !'); } // Add our license key if ANY function formlayer_pro_updater_filter_args($queryArgs){ global $formlayer; if (!empty($formlayer->license['license'])){ $queryArgs['license'] = $formlayer->license['license']; } $queryArgs['url'] = rawurlencode(site_url()); return $queryArgs; } // Handle the Check for update link and ask to install license key function formlayer_pro_updater_check_link($final_link){ global $formlayer; if(empty($formlayer->license['license'])){ return '<a href="'.admin_url('admin.php?page=formlayer-license').'">Install FormLayer Pro License Key</a>'; } return $final_link; } // Prevent update of formlayer free function formlayer_pro_file_get_free_version_num(){ if(defined('FORMLAYER_VERSION')){ return FORMLAYER_VERSION; } // In case of FormLayer deactive return formlayer_pro_file_get_version_num('formlayer/formlayer.php'); } // Prevent update of FormLayer free function formlayer_pro_file_get_version_num($plugin){ // In case of FormLayer deactive include_once(ABSPATH . 'wp-admin/includes/plugin.php'); $plugin_data = get_plugin_data(WP_PLUGIN_DIR . '/'.$plugin); if(empty($plugin_data)){ return false; } return $plugin_data['Version']; } // Prevent update of formlayer free function formlayer_pro_disable_manual_update_for_plugin($transient){ $plugin = 'formlayer/formlayer.php'; $pro_plugin = 'formlayer-pro/formlayer-pro.php'; // Is update available? if(!isset($transient->response) || (!isset($transient->response[$plugin]) && !isset($transient->response[$pro_plugin]))){ return $transient; } $free_version = formlayer_pro_file_get_free_version_num(); $pro_version = FORMLAYER_PRO_VERSION; // If no free update is available, do not show a Pro update either. // The free version is the source of truth on wp.org and is subject to a // 24-hour review delay; the Pro update must not be offered ahead of it. // https://wordpress.org/news/2026/06/pts/ if(!isset($transient->response[$plugin]) && isset($transient->response[$pro_plugin])){ unset($transient->response[$pro_plugin]); return $transient; } // Reset if we find a mismatch if(isset($transient->response[$plugin]) && isset($transient->response[$pro_plugin])){ $free_update_ver = !empty($transient->response[$plugin]->new_version) ? $transient->response[$plugin]->new_version : false; $pro_update_ver = !empty($transient->response[$pro_plugin]->new_version) ? $transient->response[$pro_plugin]->new_version : false; if(!empty($free_update_ver) && !empty($pro_update_ver) && version_compare($free_update_ver, $pro_update_ver, '!=')){ unset($transient->response[$plugin]); unset($transient->response[$pro_plugin]); return $transient; } } if(!empty($GLOBALS['formlayer_pro_is_upgraded'])){ $pro_version = formlayer_pro_file_get_version_num($pro_plugin); } // Update the FormLayer version to the equivalent of Pro version if(!empty($pro_version) && version_compare($free_version, $pro_version, '<')){ $transient->response[$plugin]->new_version = $pro_version; $transient->response[$plugin]->package = 'https://downloads.wordpress.org/plugin/formlayer.'.$pro_version.'.zip'; }else{ unset($transient->response[$plugin]); } return $transient; } // Auto update free version after update pro version function formlayer_pro_update_free_after_pro($upgrader_object, $options){ // Check if the action is an update for the plugins if($options['action'] != 'update' || $options['type'] != 'plugin'){ return; } // Define the slugs for the free and pro plugins $free_slug = 'formlayer/formlayer.php'; $pro_slug = 'formlayer-pro/formlayer-pro.php'; // Check if the pro plugin is in the list of updated plugins if( (isset($options['plugins']) && in_array($pro_slug, $options['plugins']) && !in_array($free_slug, $options['plugins'])) || (isset($options['plugin']) && $pro_slug == $options['plugin']) ){ // Trigger the update for the free plugin $current_version = formlayer_pro_file_get_free_version_num(); if(empty($current_version)){ return; } $GLOBALS['formlayer_pro_is_upgraded'] = true; // This will set the 'update_plugins' transient again wp_update_plugins(); // Check for updates for the free plugin $update_plugins = get_site_transient('update_plugins'); if(empty($update_plugins) || !isset($update_plugins->response[$free_slug]) || version_compare($update_plugins->response[$free_slug]->new_version, $current_version, '<=')){ return; } require_once(ABSPATH . 'wp-admin/includes/plugin.php'); require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'); $skin = wp_doing_ajax()? new WP_Ajax_Upgrader_Skin() : null; $upgrader = new Plugin_Upgrader($skin); $upgraded = $upgrader->upgrade($free_slug); if(!is_wp_error($upgraded) && $upgraded){ // Re-active free plugins if( file_exists( WP_PLUGIN_DIR . '/'. $free_slug ) && is_plugin_inactive($free_slug) ){ activate_plugin($free_slug); // TODO for network } // Re-active pro plugins if( file_exists( WP_PLUGIN_DIR . '/'. $pro_slug ) && is_plugin_inactive($pro_slug) ){ activate_plugin($pro_slug); // TODO for network } } } } // Load license data function formlayer_pro_load_license($parent = 0){ global $formlayer, $lic_resp, $sitepad; $license_field = 'formlayer_license'; $license_api_url = FORMLAYER_API; // Save license if(!empty($parent) && is_string($parent) && strlen($parent) > 5){ $lic['license'] = $parent; // Load license of Soft Pro }elseif(!empty($parent)){ $license_field = 'softaculous_pro_license'; $lic = get_option('softaculous_pro_license', []); // My license }else{ $lic = get_option($license_field, []); } // Loaded license is a Soft Pro if(!empty($lic['license']) && preg_match('/^softwp/is', $lic['license'])){ $license_field = 'softaculous_pro_license'; $license_api_url = 'https://a.softaculous.com/softwp/'; $prods = apply_filters('softaculous_pro_products', []); }else{ $prods = []; } if(empty($lic['last_update'])){ $lic['last_update'] = time() - 86600; } // Update license details as well if(!empty($lic) && !empty($lic['license']) && (time() - @$lic['last_update']) >= 86400){ $url = $license_api_url.'/license.php?license='.$lic['license'].'&prods='.implode(',', $prods).'&url='.rawurlencode(site_url()); $resp = wp_remote_get($url); $lic_resp = $resp; //Did we get a response ? if(is_array($resp)){ $tosave = json_decode($resp['body'], true); //Is it the license ? if(!empty($tosave['license'])){ $tosave['last_update'] = time(); update_option($license_field, $tosave); $lic = $tosave; } } } // If the license is Free or Expired check for Softaculous Pro license if(empty($lic) || empty($lic['active'])){ if(function_exists('softaculous_pro_load_license')){ $softaculous_license = softaculous_pro_load_license(); if(!empty($softaculous_license['license']) && (!empty($softaculous_license['active']) || empty($lic['license'])) ){ $lic = $softaculous_license; } }elseif(empty($parent)){ $lic = get_option('softaculous_pro_license', []); if(!empty($lic)){ return formlayer_pro_load_license(1); } } } if(!empty($lic['license'])){ $formlayer->license = $lic; } if(defined('SITEPAD') && empty($formlayer->license)){ $license = (!empty($sitepad['license']) ? $sitepad['license']: (isset($sitepad['server_license']) ? $sitepad['server_license'] : [])); $license['active'] = isset($license['active']) ? $license['active'] : (isset($license['status']) ? $license['status'] : ''); $formlayer->license = $license; } } add_filter('softaculous_pro_products', 'formlayer_softaculous_pro_products', 10, 1); function formlayer_softaculous_pro_products($r = []){ $r['formlayer'] = 'formlayer'; return $r; } function formlayer_pro_api_url($main_server = 0, $suffix = 'formlayer'){ global $formlayer; $r = array( 'https://s0.softaculous.com/a/softwp/', 'https://s1.softaculous.com/a/softwp/', 'https://s2.softaculous.com/a/softwp/', 'https://s3.softaculous.com/a/softwp/', 'https://s4.softaculous.com/a/softwp/', 'https://s5.softaculous.com/a/softwp/', 'https://s7.softaculous.com/a/softwp/', 'https://s8.softaculous.com/a/softwp/' ); $mirror = $r[array_rand($r)]; // If the license is newly issued, we need to fetch from API only if(!empty($main_server) || empty($formlayer->license['last_edit']) || (!empty($formlayer->license['last_edit']) && (time() - 3600) < $formlayer->license['last_edit']) ){ $mirror = FORMLAYER_API; } if(!empty($suffix)){ $mirror = str_replace('/softwp', '/'.$suffix, $mirror); } return $mirror; } function formlayer_pro_plugin_update_notice_filter($plugins = []){ $plugins['formlayer-pro/formlayer-pro.php'] = 'FormLayer Pro'; return $plugins; } function formlayer_pro_is_network_active($pluign){ $is_network_wide = false; // Handling network site if(!is_multisite()){ return $is_network_wide; } $_tmp_plugins = get_site_option('active_sitewide_plugins'); if(!empty($_tmp_plugins) && preg_grep('/.*\/'.$pluign.'\.php$/', array_keys($_tmp_plugins))){ $is_network_wide = true; } return $is_network_wide; }