Exemple #1
0
 /**
  * Method to synchronize the user account with Magento
  *
  * @param array $user
  * @return array $data Data as returned by Magento
  */
 public function synchronize($user)
 {
     // Disable at user events
     if (isset($user['disable_events']) && $user['disable_events'] == 1) {
         return null;
     }
     MageBridgeModelDebug::getInstance()->notice("MageBridgeModelUser::synchronize() on user " . $user['email']);
     // Use the email if no username is set
     if (empty($user['username'])) {
         $user['username'] = $user['email'];
     }
     // Check on the users email
     if ($this->isValidEmail($user['email']) == false) {
         return false;
     }
     // Set the right ID
     $user['joomla_id'] = isset($user['id']) ? $user['id'] : 0;
     // Find some logic to divide the "name" into a "firstname" and "lastname"
     $user = MageBridgeUserHelper::convert($user);
     // Only set the password, when the password does not appear to be the encrypted version
     if (empty($user['password_clear'])) {
         if (isset($user['password']) && !preg_match('/^\\$/', $user['password']) && !preg_match('/^\\{SHA256\\}/', $user['password']) && !preg_match('/([a-z0-9]{32}):([a-zA-Z0-9]+)/', $user['password'])) {
             $user['password_clear'] = $user['password'];
         }
     }
     // Try to detect the password in this POST
     if (empty($user['password_clear'])) {
         $fields = array('password_clear', 'password', 'passwd');
         $jform = JFactory::getApplication()->input->get('jform', array(), 'post');
         foreach ($fields as $field) {
             $password = JFactory::getApplication()->input->getString($field, '', 'post');
             if (empty($password) && is_array($jform) && !empty($jform[$field])) {
                 $password = $jform[$field];
             }
             if (!empty($password)) {
                 $user['password_clear'] = $password;
                 break;
             }
         }
     }
     // Delete unusable fields
     unset($user['id']);
     unset($user['password']);
     unset($user['params']);
     unset($user['userType']);
     unset($user['sendEmail']);
     unset($user['option']);
     unset($user['task']);
     // Delete unusable empty fields
     foreach ($user as $name => $value) {
         if (empty($value)) {
             unset($user[$name]);
         }
     }
     // Encrypt the user-password for transfer through the MageBridge API
     if (isset($user['password_clear'])) {
         if (empty($user['password_clear']) || !is_string($user['password_clear'])) {
             unset($user['password_clear']);
         } else {
             $user['password_clear'] = MageBridgeEncryptionHelper::encrypt($user['password_clear']);
         }
     }
     // Add the Website ID to this user
     $user['website_id'] = MagebridgeModelConfig::load('website');
     // Add the default customer-group ID to this user (in case we need to create a new user)
     $user['default_customer_group'] = MagebridgeModelConfig::load('customer_group');
     // Add the customer-group ID to this user (based upon groups configured in #__magebridge_usergroups)
     $user['customer_group'] = MageBridgeUserHelper::getMagentoGroupId($user);
     // Make sure events are disabled on the Magento side
     $user['disable_events'] = 1;
     // Add the profile-connector data to this user
     $user = MageBridgeConnectorProfile::getInstance()->modifyUserFields($user);
     // Initalize the needed objects
     $bridge = MageBridgeModelBridge::getInstance();
     $register = MageBridgeModelRegister::getInstance();
     // Build the bridge and fetch the result
     $id = $register->add('api', 'magebridge_user.save', $user);
     $bridge->build();
     $data = $register->getDataById($id);
     return $data;
 }
Exemple #2
0
 /**
  * Method to get all CSV output
  *
  * @param null
  * @return null
  */
 private function getOutput($users, $website_id, $group_id)
 {
     $output = '"group_id","website","firstname","lastname","email"' . "\n";
     foreach ($users as $user) {
         $user = MageBridgeUserHelper::convert($user);
         $values = array();
         $values[] = $group_id;
         $values[] = $website_id;
         $values[] = $user->firstname;
         $values[] = $user->lastname;
         $values[] = $user->email;
         foreach ($values as $index => $value) {
             $value = '"' . str_replace('"', '\\"', trim($value)) . '"';
             $values[$index] = $value;
         }
         $output .= implode(',', $values) . "\n";
     }
     return $output;
 }