Пример #1
0
	/**
	* Find and return information about a subscriber for a list
	*
	* @param string $listId
	* @param Interspire_EmailIntegration_Subscription $subscriber
	* @return Interspire_EmailIntegration_Subscription_Existing or false if the subscriber was not found
	*/
	public function findListSubscriber ($listId, Interspire_EmailIntegration_Subscription $subscription)
	{
		/** @var mysqldb */
		$db = $GLOBALS['ISC_CLASS_DB'];
		$result = $db->FetchOne("SELECT * FROM `[|PREFIX|]subscribers` WHERE subemail = '" . $db->Quote($insert['subemail']) . "'");
		if (!$result) {
			return false;
		}

		$return = new Interspire_EmailIntegration_Subscription_Existing;
		$return->setSubscriptionEmail($result['subemail']);
		$return->setSubscriptionData($result);

		return $return;
	}
Пример #2
0
	/**
	* Find and return information about a subscriber for a list
	*
	* @param string $listId
	* @param Interspire_EmailIntegration_Subscription $subscriber
	* @return Interspire_EmailIntegration_Subscription_Existing or false if the subscriber was not found
	*/
	public function findListSubscriber ($listId, Interspire_EmailIntegration_Subscription $subscriber)
	{
		$api = $this->getApiInstance();

		$result = $api->listMemberInfo($listId, $subscriber->getSubscriptionEmail());
		if (!is_array($result)) {
			return false;
		}

		$return = new Interspire_EmailIntegration_Subscription_Existing;
		$return->setSubscriptionEmail($result['email']);
		if (isset($result['ip_opt']) && $result['ip_opt']) {
			$return->setSubscriptionIP($result['ip_opt']);
		} else if (isset($result['ip_signup']) && $result['ip_signup']) {
			$return->setSubscriptionIP($result['ip_signup']);
		}
		$return->setSubscriptionData($result['merges']);

		return $return;
	}
Пример #3
0
	/**
	* Find and return information about a subscriber for a list
	*
	* @param string $listId
	* @param Interspire_EmailIntegration_Subscription $subscriber
	* @return Interspire_EmailIntegration_Subscription_Existing or false if the subscriber was not found
	*/
	public function findListSubscriber ($listId, Interspire_EmailIntegration_Subscription $subscriber)
	{
		$api = $this->getApiInstance();

		/** @var ISC_LOG */
		$log = $GLOBALS['ISC_CLASS_LOG'];

		try {
			$result = $api->getSubscribers($listId, array(
				'Email' => $subscriber->getSubscriptionEmail(),
			));

			if (!$result || !$result->isSuccess()) {
				return false;
			}
		} catch (Interspire_EmailIntegration_EmailMarketer_Exception $exception) {
			$log->LogSystemError(array('emailintegration', $this->GetName()), GetLang(get_class($exception) . '_Message'));
			return false;
		}

		$result = $result->getData()->subscriberlist->children();
		if (empty($result)) {
			return false;
		}

		$result = $result[0];
		$subscriberId = (string)$result->subscriberid;

		$return = new Interspire_EmailIntegration_Subscription_Existing;
		$return->setSubscriptionEmail($result->emailaddress);

		// try and find custom field information to add to the subscription data -- as far as I can tell this is the only way of doing it with IEM
		$listFields = $this->getListFields($listId);
		$customFieldIds = array();
		foreach ($listFields as $listField) {
			$customFieldIds[] = $listField['provider_field_id'];
		}
		unset($listFields);

		$data = array();
		$result = $api->getAllSubscriberCustomFields($listId, array(), $subscriberId, $customFieldIds);
		if ($result && $result->isSuccess()) {
			foreach ($result->getData()->item->children() as /** @var SimpleXMLElement */$field) {
				$data[(string)$field->fieldid] = (string)$field->data;
			}
		}

		$return->setSubscriptionData($data);

		return $return;
	}