Server IP : 63.250.38.98 / Your IP : 216.73.216.80 Web Server : LiteSpeed System : Linux premium291.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64 User : samejjip ( 1289) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/samejjip/www/wp-content/plugins/elementor-pro/modules/forms/classes/ |
Upload File : |
<?php namespace ElementorPro\Modules\Forms\Classes; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Convertkit_Handler { /* * @var Rest_Client */ private $rest_client = null; private $api_key = ''; /** * Convertkit_Handler constructor. * * @param $api_key * * @throws \Exception */ public function __construct( $api_key ) { if ( empty( $api_key ) ) { throw new \Exception( 'Invalid API Key' ); } $this->init_rest_client( $api_key ); if ( ! $this->is_valid_api_key() ) { throw new \Exception( 'Invalid API Key' ); } } private function init_rest_client( $api_key ) { $this->api_key = $api_key; $this->rest_client = new Rest_Client( 'https://api.convertkit.com/v3/' ); } /** * validate api key * * @return bool * @throws \Exception */ private function is_valid_api_key() { $forms = $this->get_forms(); if ( ! empty( $forms ) ) { return true; } $this->api_key = ''; return false; } public function get_forms_and_tags() { $forms = $this->get_forms(); $tags = $this->get_tags(); return [ 'data' => [ 'forms' => $forms['forms'], 'tags' => $tags['tags'], ], ]; } /** * get GetResponse lists associated with API key * @return array * @throws \Exception */ public function get_forms() { $results = $this->rest_client->get( 'forms/?api_key=' . $this->api_key ); $forms = [ '' => esc_html__( 'Select...', 'elementor-pro' ), ]; if ( ! empty( $results['body']['forms'] ) ) { foreach ( $results['body']['forms'] as $index => $form ) { if ( ! is_array( $form ) ) { continue; } $forms[ $form['id'] ] = $form['name']; } } $return_array = [ 'forms' => $forms, ]; return $return_array; } public function get_tags() { $results = $this->rest_client->get( 'tags/?api_key=' . $this->api_key ); $tags = [ '' => esc_html__( 'Select...', 'elementor-pro' ), ]; if ( ! empty( $results['body']['tags'] ) ) { foreach ( $results['body']['tags'] as $index => $tag ) { if ( ! is_array( $tag ) ) { continue; } $tags[ $tag['id'] ] = $tag['name']; } } $return_array = [ 'tags' => $tags, ]; return $return_array; } /** * create contact at ConvertKit via api * * @param array $subscriber_data * * @return array|mixed * @throws \Exception */ public function create_subscriber( $form_id, $subscriber_data = [] ) { $endpoint = sprintf( 'forms/' . $form_id . '/subscribe?api_key=%s', $this->api_key ); $this->rest_client->add_headers( 'Content-Type', 'application/json' ); return $this->rest_client->post( $endpoint, $subscriber_data ); } }