2012-03-19 5 views
0

J'ai rencontré un problème avec l'événement de connexion client. J'ai une application (application flexible) en dehors de magento et il y a un formulaire pour la connexion du client. J'utilise ce code pour identifier les clients:.Événement Magento 'customer_login' non intercepté

require_once '../../app/Mage.php'; 
umask(0); 
Mage::app(); 

Mage::getSingleton('core/session', array('name'=>'frontend')); 
$session = Mage::getSingleton('customer/session'); 

try { 
    $session->login ($_REQUEST['username'], $_REQUEST['password']); 
    $return .= '<userid>'.$session->getCustomer()->getId().'</userid>'; 

} catch (Exception $e) { 
    $return .= '<error>'.$e->getMessage().'</error>'; 
} 

Tout fonctionne bien et le client est connecté Le problème est que l'événement est distribué, mais Mage :: Visiteur et Mage :: Rapports does't attraper l'événement et si je reviens de la page d'affichage flex vers produit, il obtient des erreurs MySQL dans la table "report_viewed_product_index". Quelqu'un peut-il aider avec cela.

Merci!

Répondre

0

résolu mon problème de lecture How do I create a Magento session outside of Magento?

Voici ce que je l'ai fait

require_once '../../app/Mage.php'; 
    umask(0); 
    Mage::app($_REQUEST['store_id'])->init(); 

    $core_session = Mage::getSingleton('core/session', array('name'=>'frontend')); 
    $session = Mage::getSingleton('customer/session'); 

    $return = '<user>'; 

     $write = Mage::getSingleton ('core/resource')->getConnection ('core_write'); 
     $url = Mage::getUrl ('*/*/*', array ('_current' => true)); 
     Mage::getSingleton ('core/session')->setLastUrl ($url); 
     $visitor_id = $_SESSION ['core'] ['visitor_data'] ['visitor_id']; 

     if (! empty ($visitor_id)) { 
      Mage::getSingleton ('log/visitor')->setId ($visitor_id); 
     } else { 
      Mage::getSingleton ('customer/session')->setWishlistItemCount (0); 
      Mage::getSingleton ('catalog/session')->setCatalogCompareItemsCount (0); 

      $write->query ("INSERT INTO log_url_info (url, referer) VALUES (?, ?)", array ($url, Mage::helper ('core/http')->getHttpReferer (true))); 
      $url_id = $write->lastInsertId(); 
      $log_visitor = Mage::getSingleton ('log/visitor')->initServerData()->setFirstVisitAt (now())->setIsNewVisitor (true)->setLastVisitAt (now())->setLastUrlId ($url_id)->save(); 
      $write->query ("INSERT INTO log_url (url_id, visitor_id, visit_time) VALUES (?, ?, ?)", array ($url_id, $log_visitor->getId(), now())); 
      $core_session->setVisitorData ($log_visitor->getData()); 

      $visitor_id = $log_visitor->getId(); 
     } 

     try { 
      $session->login ($_REQUEST['username_cl_mag'], $_REQUEST['password_cl_mag']); 
      //$session->setCustomerAsLoggedIn($session->getCustomer()); 
      //$customer = Mage::getModel('customer/customer')->setWebsiteId(Mage::app()->getStore()->getWebsiteId()); 

      $customerId = $session->getCustomerId(); 
      $eventModel = Mage::getModel('reports/event'); 
      $eventModel->updateCustomerType($visitor_id, $customerId); 

      Mage::getModel('reports/product_index_compared') 
       ->updateCustomerFromVisitor() 
       ->calculate(); 
      Mage::getModel('reports/product_index_viewed') 
       ->updateCustomerFromVisitor() 
       ->calculate(); 

      $return .= '<userid>'.$session->getCustomerId().'</userid>'; 

     } catch (Exception $e) { 
      $return .= '<error>'.$e->getMessage().'</error>'; 
     } 

    print $return .= "</user>"; 
Questions connexes