Beispiel #1
0
 /**
  * Handle the event that is generated after a customer is saved in Magento (JSON-RPC)
  *
  * @param array $arguments
  *
  * @return int
  */
 public function mageCustomerSaveAfter($arguments = array())
 {
     // Check if this call is valid
     if (!isset($arguments['customer'])) {
         return false;
     }
     if (!isset($arguments['customer']['email'])) {
         return false;
     }
     // Fetch the right variables
     $customer = $arguments['customer'];
     if (isset($customer['addresses'][0][0])) {
         $address = $customer['addresses'][0][0];
         unset($customer['addresses']);
     } else {
         $address = array();
     }
     // Try to load the user through the Joomla! ID stored in Magento
     if (isset($customer['joomla_id'])) {
         $user = JFactory::getUser();
         $user->load($customer['joomla_id']);
     }
     // Try to load the user through its email-address
     if (!isset($user) || !isset($user->id) || !$user->id > 0) {
         $user = $this->getUser()->loadByEmail($customer['email']);
     }
     // Encrypt the user-password before continuing
     if (isset($customer['password'])) {
         $customer['password'] = MageBridge::decrypt($customer['password']);
     }
     // Start building the data-input for creating the Joomla! user
     if (!empty($customer['name']) && !empty($customer['email'])) {
         $data = array();
         // Include the received email
         if (!empty($customer['email'])) {
             $data['email'] = $customer['email'];
         }
         // Include the real name
         $data['name'] = $this->getRealname($user, $customer);
         // Include the username
         $data['username'] = $this->getUsername($user, $customer);
         // Set the firstname and lastname
         $data['magebridgefirstlast'] = array('firstname' => $customer['firstname'], 'lastname' => $customer['lastname']);
         // Include the password
         if (!empty($customer['password'])) {
             $data['password'] = $customer['password'];
             $data['password2'] = $customer['password'];
         }
         // Activate this account, if it's also activated in Magento
         if (isset($customer['is_active'])) {
             if ($customer['is_active'] == 1) {
                 $data['activation'] = '';
                 $data['block'] = 0;
             } else {
                 $data['block'] = 1;
             }
         }
         // Add the usergroup ID to this user (based upon groups configured in #__magebridge_usergroups)
         $usergroups = is_array($user->groups) ? $user->groups : array();
         $customer['usergroup'] = MageBridgeUserHelper::getJoomlaGroupIds($customer, $usergroups);
         //MageBridgeModelDebug::getInstance()->trace("Customer group", $customer['usergroup']);
         if (!empty($customer['usergroup'])) {
             $user->groups = $customer['usergroup'];
         }
         // If this user did not exist yet, create it
         if ($this->params->get('autocreate', 1) == 1 && ($user == false || $user->id == 0)) {
             $user = $this->getUser()->create($data, true);
             if (is_object($user) && $user->id > 0) {
                 // Save the user through the Profile Connectors
                 $profile = new MageBridgeConnectorProfile();
                 $profile->onSave($user, $customer, $address);
                 // Return the new user-ID
                 return $user->id;
             } else {
                 return 3;
             }
         }
         // Bind the data to the current user
         if ($user->bind($data) == false) {
             return false;
         }
         // Save the user
         if ($user->save() == false) {
             return false;
         }
         // Save the user through the Profile Connectors
         $profile = new MageBridgeConnectorProfile();
         $profile->onSave($user, $customer, $address);
         // Run the newsletter plugins
         if (isset($customer['is_subscribed'])) {
             JPluginHelper::importPlugin('magebridgenewsletter');
             JFactory::getApplication()->triggerEvent('onNewsletterSubscribe', array($user, (bool) $customer['is_subscribed']));
         }
         // Return the user ID for convenience
         return $user->id;
     }
     return false;
 }