Welcome to GPLDL - we are still beta - please report any bugs via the contact form.

GPLDLGPLDL
GPLDL
Download the most popular GPL licensed Premium WordPress Themes & Plugins and WooCommerce Extensions for FREE!
  • Blog
    • Blog Articles
    • Latest Updates & Additions
  • Repository
    • Full Repository
    • Premium WordPress Themes
    • Premium WordPress Plugins
    • Premium WooCommerce Extensions
    • Special Gifts for Premium Members
    • Tutorials
  • Forum
  • Free Membership
  • Donations
  • My GPLDL Account
  • Sign In
Menu back  

Elementor Pro 3.0.5 – How to null

  • This topic has 10 replies, 8 voices, and was last updated 3 months, 1 week ago by Tushar Thakur.
Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • September 26, 2020 at 10:19 am #22657
    Betialai
    Participant

    Note to admins: If this is not allowed, please delete this message. Thanks.
    Pretty straightforward:
    Three files need to be modified.

      /licenses/admin.php
      Line 150
      Where it says:
      public function display_page() {
      $license_key = self::get_license_key();

      $is_manual_mode = ( isset( $_GET['mode'] ) && 'manually' === $_GET['mode'] );
      It must say:
      public function display_page() {
      $license_key = self::get_license_key();

      $is_manual_mode = true;
      Line 179
      Where it says:
      $license_data = array(
      'success'=>true,
      'license'=>'valid',
      'item_name'=>'Elementor Pro',
      'license_limit'=>999,
      'site_count'=>1,
      'expires'=>'2048-06-06 23:59:59',
      'activations_left'=>998,
      'payment_id'=>'12345',
      'customer_name'=>'*********',
      'customer_email'=>'my@email.com',
      'price_id'=>'1'
      ); ?>

      It must say:
      $license_data = API::get_license_data( true ); ?>

      /license/api.php
      Line 27
      Where it says:
      private static function remote_post( $body_args = [] ) {
      $body_args = wp_parse_args(

      It must say:
      private static function remote_post( $body_args = [] ) {
      return ['license' => 'valid', 'expires' => 'lifetime', 'subscriptions', 'enable', 'renewal_discount','',];
      $body_args = wp_parse_args(

      Line 38
      Where it says:
      $response = 200;

      It must say:
      $response = wp_remote_post( self::STORE_URL, [
      'timeout' => 40,
      'body' => $body_args,
      ] );

      if ( is_wp_error( $response ) ) {
      return $response;
      }

      $response_code = wp_remote_retrieve_response_code( $response );
      if ( 200 !== (int) $response_code ) {
      return new \WP_Error( $response_code, __( 'HTTP Error', 'elementor-pro' ) );
      }

      Line 40
      Where it says:
      $data = json_decode( wp_remote_retrieve_body( $response ), true );

      $data = array(
      'success'=>true,
      'license'=>'valid',
      'item_name'=>'Elementor Pro',
      'license_limit'=>999,
      'site_count'=>1,
      'expires'=>'2050-01-01 23:59:59',
      'activations_left'=>998,
      'payment_id'=>'12345',
      'customer_name'=>'*********',
      'customer_email'=>'my@email.com',
      'price_id'=>'1'
      );

      return $data;
      }

      It must say:
      $data = json_decode( wp_remote_retrieve_body( $response ), true );
      if ( empty( $data ) || ! is_array( $data ) ) {
      return new \WP_Error( 'no_json', __( 'An error occurred, please try again', 'elementor-pro' ) );
      }

      return $data;
      }

      Line 62
      Where it says:
      'license' => '*********************************',
      ];

      $license_data = array(
      'success'=>true,
      'license'=>'valid',
      'item_name'=>'Elementor Pro',
      'license_limit'=>999,
      'site_count'=>1,
      'expires'=>'2050-01-01 23:59:59',
      'activations_left'=>998,
      'payment_id'=>'12345',
      'customer_name'=>'*********',
      'customer_email'=>'my@email.com',
      'price_id'=>'1'
      );

      It must say:
      'license' => $license_key,
      ];

      $license_data = self::remote_post( $body_args );
      Line 88
      Where it says:
      $license_data = array(
      'success'=>true,
      'license'=>'valid',
      'item_name'=>'Elementor Pro',
      'license_limit'=>999,
      'site_count'=>1,
      'expires'=>'2050-01-01 23:59:59',
      'activations_left'=>998,
      'payment_id'=>'12345',
      'customer_name'=>'*********',
      'customer_email'=>'my@email.com',
      'price_id'=>'1'
      );

      It must say:
      $license_data = self::remote_post( $body_args );

      Line 124
      Where it says:
      public static function set_license_data( $license_data, $expiration = null ) {

      $expiration = 'lifetime';

      self::set_transient( '_elementor_pro_license_data_fallback', $license_data, '+24 hours' );

      self::set_transient( '_elementor_pro_license_data', $license_data, $expiration );
      }

      It must say:
      public static function set_license_data( $license_data, $expiration = null ) {
      if ( null === $expiration ) {
      $expiration = '+12 hours';

      self::set_transient( Admin::LICENSE_DATA_FALLBACK_OPTION_NAME, $license_data, '+24 hours' );
      }

      self::set_transient( Admin::LICENSE_DATA_OPTION_NAME, $license_data, $expiration );
      }

      Right underneath, on line 134
      Where it says:
      public static function get_license_data( $force_request = false ) {
      $license_data = array(
      'success'=>true,
      'license'=>'valid',
      'item_name'=>'Elementor Pro',
      'license_limit'=>999,
      'site_count'=>1,
      'expires'=>'2050-01-01 23:59:59',
      'activations_left'=>998,
      'payment_id'=>'12345',
      'customer_name'=>'*********',
      'customer_email'=>'my@email.com',
      'price_id'=>'1'
      );

      return $license_data;
      It must say:
      public static function get_license_data( $force_request = false ) {
      $license_data_error = [
      'license' => 'http_error',
      'payment_id' => '0',
      'license_limit' => '0',
      'site_count' => '0',
      'activations_left' => '0',
      'success' => false,
      ];

      There is no return, that is correct.
      Line 156
      Where it says:
      $license_data = self::get_transient( '_elementor_pro_license_data' );
      It must say:
      $license_data = self::get_transient( Admin::LICENSE_DATA_OPTION_NAME );
      Line 164
      Where it says:
      $license_data = array(
      'success'=>true,
      'license'=>'valid',
      'item_name'=>'Elementor Pro',
      'license_limit'=>999,
      'site_count'=>1,
      'expires'=>'2050-01-01 23:59:59',
      'activations_left'=>998,
      'payment_id'=>'12345',
      'customer_name'=>'*********',
      'customer_email'=>'my@email.com',
      'price_id'=>'1'
      );

      It must say:
      $license_data = self::remote_post( $body_args );

      Line 179
      Where it says:
      $license_data = self::get_transient( '_elementor_pro_license_data_fallback' );
      It must say:
      $license_data = self::get_transient( Admin::LICENSE_DATA_FALLBACK_OPTION_NAME );
      Line 325
      Where it says:

      $error_msg = '';


      It must say:
      if ( isset( $errors[ $error ] ) ) {
      $error_msg = $errors[ $error ];
      } else {
      $error_msg = __( 'An error occurred. Please check your internet connection and try again. If the problem persists, contact our support.', 'elementor-pro' ) . ' (' . $error . ')';
      }

      Line 335
      Where it says:
      return true;
      It must say:
      return self::STATUS_VALID === $license_data['license'];
      Line 340
      Where it says:
      return false;
      It must say:

      if ( ! empty( $license_data['subscriptions'] ) && 'enable' === $license_data['subscriptions'] ) {
      return false;
      }

      if ( 'lifetime' === $license_data['expires'] ) {
      return false;
      }

      /elementor-pro.php
      Line 17
      Delete:
      update_option( 'elementor_pro_license_key', 'activated' );
      set_transient( 'elementor_pro_license_data', [ 'license' => 'valid', 'expires' => '01.01.2030' ] );
      set_transient( 'timeout_elementor_pro_license_data', 1893456000 );

      Line 21
      Where it says:
      define( 'ELEMENTOR_PRO_VERSION', '3.0.2' );
      It must say:
      define( 'ELEMENTOR_PRO_VERSION', '3.0.5' );
      Line 31
      Right underneath
      define( 'ELEMENTOR_PRO_MODULES_URL', ELEMENTOR_PRO_URL . 'modules/' );
      Insert these two lines
      update_option( 'elementor_pro_license_key', 'activated' );
      update_option( '_elementor_pro_license_data', [ 'timeout' => strtotime( '+12 hours', current_time( 'timestamp' ) ),'value' => json_encode( [ 'license' => 'valid', 'expires' => 'lifetime','renewal_discount' => '', 'subscriptions' => 'enable' ] ) ] );

    That’s all, folks!

    October 1, 2020 at 3:00 pm #22676
    Gabriel A.
    Participant

    Thank you very much! It worked well :D

    October 2, 2020 at 9:38 am #22678
    Betialai
    Participant

    Placeholder for changes needed to 3.0.11

    • This reply was modified 1 year, 7 months ago by Betialai.
    October 2, 2020 at 9:49 am #22680
    Betialai
    Participant

    The newest free Elementor 3.0.11 needs some tweaking in one file. There is a function that connecto to their server and validates the Elementor Pro plugin.

    File /core/common/modules/connect/apps/base-app.php
    Line 241
    Where it says:
    public function is_connected() {
    return (bool) $this->get( 'access_token' );

    It must say:
    public function is_connected() {
    return true;
    //return (bool) $this->get( 'access_token' );

    Line 347
    Where it says:
    if ( $this->is_connected() ) {
    $headers['X-Elementor-Signature'] = hash_hmac( 'sha256', wp_json_encode( $request_body, JSON_NUMERIC_CHECK ), $this->get( 'access_token_secret' ) );
    }
    $response = wp_remote_post( $this->get_api_url() . '/' . $action, [
    'body' => $request_body,
    'headers' => $headers,
    'timeout' => 25,
    ] );

    It must say:
    if ( $this->is_connected() ) {
    $headers['X-Elementor-Signature'] = hash_hmac( 'sha256', wp_json_encode( $request_body, JSON_NUMERIC_CHECK ), $this->get( 'access_token_secret' ) );
    }

    // NF ++
    if ($action === 'get_template_content') {
    $templateExists = false;
    if (file_exists(ELEMENTOR_PATH . 'templates/' . $request_body['id'] . '.json')) {
    $templateExists = true;
    $url = ELEMENTOR_URL . 'templates/' . $request_body['id'] . '.json';
    }
    }
    if ($templateExists) {
    $response = wp_remote_get( $url, [
    'timeout' => 40,
    'sslverify' => false,
    ] );
    } else {
    // NF end
    $response = wp_remote_post( $this->get_api_url() . '/' . $action, [
    'body' => $request_body,
    'headers' => $headers,
    'timeout' => 25,
    ] );
    // NF ++
    }
    // NF end

    Line 389
    Where it says:
    if ( 401 === $code ) {
    $this->delete();
    $this->action_authorize();
    }

    It must say:
    if ( 401 === $code ) {
    /* NF --
    //$this->delete();
    //$this->action_authorize();
    NF end */ }

    October 21, 2020 at 12:22 pm #22726
    Betialai
    Participant

    Elementor 3.0.12 has been released. Few changes have to be made on /elementor/core/common/modules/connect/apps/base-app.php

    Line 237
    Where it says
    /**
    * @since 2.3.0
    * @access public
    */
    public function is_connected() {
    return (bool) $this->get( 'access_token' );
    }

    It must say
    /**
    * @since 2.3.0
    * @access public
    */
    public function is_connected() {
    return true;
    //return (bool) $this->get( 'access_token' );
    }

    Line 331
    Where it says
    /**
    * @since 2.3.0
    * @access protected
    */
    protected function request( $action, $request_body = [], $as_array = false ) {
    $request_body = [
    'app' => $this->get_slug(),
    'access_token' => $this->get( 'access_token' ),
    'client_id' => $this->get( 'client_id' ),
    'local_id' => get_current_user_id(),
    'site_key' => $this->get_site_key(),
    'home_url' => trailingslashit( home_url() ),
    ] + $request_body;

    $headers = [];

    if ( $this->is_connected() ) {
    $headers['X-Elementor-Signature'] = hash_hmac( 'sha256', wp_json_encode( $request_body, JSON_NUMERIC_CHECK ), $this->get( 'access_token_secret' ) );
    }

    $response = wp_remote_post( $this->get_api_url() . '/' . $action, [
    'body' => $request_body,
    'headers' => $headers,
    'timeout' => 25,
    ] );

    It must say
    /**
    * @since 2.3.0
    * @access protected
    */
    protected function request( $action, $request_body = [], $as_array = false ) {
    $request_body = [
    'app' => $this->get_slug(),
    'access_token' => $this->get( 'access_token' ),
    'client_id' => $this->get( 'client_id' ),
    'local_id' => get_current_user_id(),
    'site_key' => $this->get_site_key(),
    'home_url' => trailingslashit( home_url() ),
    ] + $request_body;

    $headers = [];

    if ( $this->is_connected() ) {
    $headers['X-Elementor-Signature'] = hash_hmac( 'sha256', wp_json_encode( $request_body, JSON_NUMERIC_CHECK ), $this->get( 'access_token_secret' ) );
    }

    // NF ++
    if ($action === 'get_template_content') {
    $templateExists = false;
    if (file_exists(ELEMENTOR_PATH . 'templates/' . $request_body['id'] . '.json')) {
    $templateExists = true;
    $url = ELEMENTOR_URL . 'templates/' . $request_body['id'] . '.json';
    }
    }
    if ($templateExists) {
    $response = wp_remote_get( $url, [
    'timeout' => 40,
    'sslverify' => false,
    ] );
    } else {
    // NF end
    $response = wp_remote_post( $this->get_api_url() . '/' . $action, [
    'body' => $request_body,
    'headers' => $headers,
    'timeout' => 25,
    ] );
    // NF ++
    }
    // NF end

    Line 389
    Where it says
    if ( 401 === $code ) {
    $this->delete();
    $this->action_authorize();
    }

    It must say
    if ( 401 === $code ) {
    /* NF --
    //$this->delete();
    //$this->action_authorize();
    NF end */ }

    That’s all, folks!

    November 11, 2020 at 1:09 pm #22756
    Mitch Cohen
    Participant

    I’m a little confused at all the posts.
    Does both free and pro need to be modified?

    November 13, 2020 at 6:35 am #22760
    Jackie Masek
    Participant

    Excellent question! WHAT program needs to be modified? I am assuming just the pro version but could someone clarify, please?

    December 11, 2020 at 1:26 pm #22980
    Guillo Ra
    Participant

    Hi Betialai
    Is this file modification working for Version 3.0.14?

    February 1, 2021 at 1:30 pm #23057
    Daniel Arroyo
    Participant

    is this working with the 3.0.10 version that is here to dowload ?

    November 8, 2021 at 10:55 am #23640
    Bernz Caasi
    Participant

    Hello, I am using this for my clients. Will using null plugins have a negative impact on the website of my clients?

    February 8, 2022 at 3:36 pm #23854
    Tushar Thakur
    Participant

    all users are in comments have zero knowledge of code but talking about making a null, null is just for whom they have purchased a license and want to use some more place too

  • Author
    Posts
Viewing 11 posts - 1 through 11 (of 11 total)
  • You must be logged in to reply to this topic.
Log In
Search the Repository
We reward your Donations!
We need your Donation to maintain and grow the GPLDL WordPress Repository - and we reward your generosity with Premium Memberships allowing you to download even more files.

Learn more about donations & rewards...
News from our blog
  • How to get the MailPoet Premium Newsletter WordPress Plugin for free forever?
    January 22, 2017
  • How to remove the license code check from the WP-Rocket WordPress Plugin
    January 2, 2017
  • How to remove the WooThemes Updater Plugin notification from your WordPress Admin Dashboard
    May 28, 2016
Latest Updates & Additions
  • GPLDL News: 157 Updates & Additions today – Download 2436 Premium WordPress items!
    May 15, 2022
  • GPLDL News: 60 Updates & Additions today – Download 2450 Premium WordPress items!
    May 8, 2022
  • GPLDL News: 65 Updates & Additions today – Download 2449 Premium WordPress items!
    May 1, 2022
Tags
Admin Area automatic Backend code command display Download Drupal edit Extension fork forked functions.php get rid of GPL Guide hide hoot HowTo Instructions license Magento nag-screen nagscreen notification null nulled off Plugin Premium remove serial switch theme true tutorial Update Updater usage WooCommerce WooThemes wordpress WP-Media WP-Rocket
Welcome to GPLDL!
scr02We love innovation and we believe in free software!

That's why we strive to make the world's best Premium WordPress Themes & Plugins and WooCommerce Extensions & Themes available for everyone!

Find us on:

FacebookTwitterGoogle+RssPinterest
Latest Blog Posts
  • How to get the MailPoet Premium Newsletter WordPress Plugin for free forever?
    January 22, 2017
  • How to remove the license code check from the WP-Rocket WordPress Plugin
    January 2, 2017
  • How to remove the WooThemes Updater Plugin notification from your WordPress Admin Dashboard
    May 28, 2016
Latest Updates & Additions
  • GPLDL News: 157 Updates & Additions today – Download 2436 Premium WordPress items!
    May 15, 2022
  • GPLDL News: 60 Updates & Additions today – Download 2450 Premium WordPress items!
    May 8, 2022
  • GPLDL News: 65 Updates & Additions today – Download 2449 Premium WordPress items!
    May 1, 2022
About GPLDL
  • About GPLDL
  • Need Help?
  • F.A.Q.
  • Terms of Service
  • Privacy Policy
  • Contact
GPLDL - all Rights reserved.
  • About GPLDL
  • Need Help?
  • F.A.Q.
  • Terms of Service
  • Privacy Policy
  • Contact
  • Sign In
GPLDL Widget Menu