/** * 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; }
/** * 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; }