PHP-библиотека Magento Mixpanel

Как добавить новую библиотеку PHP из Mixpanel Analytics в Magento.

Вот фактическая ссылка на библиотеку:
https://mixpanel.com/help/reference/php

Внутри файла github, который я скачал, есть папка lib, которую я переименовал в Mixpanel и поместил в папку / lib в Magento — но Magento автоматически загрузит это или мне нужно добавить строку кода, такую ​​как:

require_once(Mage::getBaseDir('lib') . '/Mixpanel/MixpanelBase.php');

Часть II

Теперь мне нужно импортировать данные из базы данных для каждого события, которое у меня есть. Смотрите ДЕМО: http://mpdocs.s3.amazonaws.com/import-old-signup-events-demo.php

В моем файле я получил следующее:

class Mixpanel_Model_Observer extends Mage_Core_Model_Abstract
{
public $token;
public $api_key;
public $host = 'http://api.mixpanel.com/';

public function __construct($token_string,$api_key) {
$this->token = Mage::getStoreConfig('mixpanel_options/settings/mixpanel_token');
$this->api_key = Mage::getStoreConfig('mixpanel_options/settings/mixpanel_api_key');
}

public function track($event, $properties = array()) {

$params = array(
'event' => $event,
'properties' => $properties
);
if (!isset($params['properties']['token'])){
$params['properties']['token'] = $this->token;
}
$url = $this->host . 'import/?data=' . base64_encode(json_encode($params)) . "&api_key=$this->api_key";
exec("curl '" . $url . "' >/dev/null 2>&1 &");
}
}

Теперь я не уверен, как использовать этот код, чтобы он работал с тем, что у меня уже есть, и может ли этот код выполняться для всех событий или мне нужно будет создать его для всех отдельных функций (вместо дня рождения я хочу получить данные для входа в систему ):

$metrics = new EventImporter("TOKEN_HERE","API_KEY_HERE");

foreach($users as $id=>$birthdate){
$props = array();
$props['distinct_id'] = $id; //distinct_id should be your identifier
$props['time'] = strtotime($birthdate); //time should be their $birthdate
$event = '$signup'; //you are sending the $signup event. You could also put $born here.
echo "\nSending $event event for ".$props['distinct_id']." at $birthdate (".$props['time'].")\n";

$metrics->track($event, $props);
}

У меня есть функция для отслеживания входа в систему:

public function trackCustomerLogin($observer) {

$this->track('customer_action', array('action'          => 'login',
'distinct_id'     => $this->getCustomerIdentity()));
}

0

Решение

Автозагрузчик Magento заменит символы подчеркивания косыми чертами и добавит .php к концу. т.е .:

  • new Some_Class_Name -> require_once 'lib/Some/Class/Name.php'

Если вы извлечете файлы непосредственно в папку lib, вы сможете автоматически загружать классы Mixpanel, например, эти файлы должны быть в

  • /magento/lib/MixpanelBase.php
  • /magento/lib/Base/MixpanelBase.php

и т. д. Тогда вы сможете использовать $var = new MixpanelBase(); в Magento без использования include операторов.

0

Другие решения

Если вы переименовали папку lib в Mixpanel, вы должны добавить это к именам классов в качестве префикса:
Пример:

class Base_MixpanelBase

станет:


class Mixpanel_Base_MixpanelBase

Затем удалите все вызовы require_once (), комментируя их, и не забудьте изменить все имена классов, добавив префикс: Mixpanel_ к их именам, но не изменяйте имена файлов.
Таким образом, вы будете следовать тому, как пишутся библиотеки Varien и Zend, и вы можете вызывать классы напрямую следующим образом:

$mixPanelBase = new Mixpanel_Base_MixpanelBase($options);

без вызовов require_once. Magento позаботится об автозагрузке.

0

По вопросам рекламы [email protected]