/** * (non-PHPdoc) * @see Mage_Core_Model_Abstract::_afterSave() */ public function _afterSave() { if ($this->getId()) { if ($this->getData('customer_type') == 'vendor') { if (!empty($this->vendorModel)) { $this->vendorModel->addData($this->getData()); $this->vendorModel->setCustomerId($this->getId()); // create account for vendor $vendorRole = Mage::helper('smvendors')->getVendorRole(); $data = array('username' => $this->getEmail(), 'email' => $this->getEmail(), 'firstname' => $this->getFirstname(), 'lastname' => $this->getLastname(), 'is_active' => $this->vendorModel->getVendorStatus(), 'roles' => array($vendorRole)); $newPassword = $this->getData('user_password'); if (!empty($newPassword)) { $data['password'] = $newPassword; $data['password_confirmation'] = $newPassword; } if ($data) { $id = $this->vendorModel->getUserId(); $model = Mage::getModel('admin/user')->load($id); if (!$model->getIsActive() && $data['is_active']) { $this->sendNewAccountEmail('approved', '', Mage::helper('smvendors')->getDefaultStoreId()); } $model->addData($data); $result = $model->validate(); if (is_array($result)) { Mage::getSingleton('adminhtml/session')->setUserData($data); foreach ($result as $message) { Mage::getSingleton('adminhtml/session')->addError($message); } } try { $model->save(); if ($uRoles = $data['roles']) { if (1 == sizeof($uRoles)) { $model->setRoleIds($uRoles)->setRoleUserId($model->getUserId())->saveRelations(); } elseif (sizeof($uRoles) > 1) { $rs = array(); $rs[0] = $uRoles[0]; $model->setRoleIds($rs)->setRoleUserId($model->getUserId())->saveRelations(); } } $this->vendorModel->setUserId($model->getUserId()); $passwordHash = trim($this->getPasswordHash()); if (!empty($passwordHash)) { //print_r($this->getData());die; $resource = Mage::getSingleton('core/resource'); $writeConnection = $resource->getConnection('core_write'); $tableUser = $resource->getTableName('admin/user'); $query = "UPDATE {$tableUser} SET password = '******' WHERE user_id = " . (int) $model->getUserId(); $writeConnection->query($query); } Mage::getSingleton('adminhtml/session')->setUserData(false); } catch (Mage_Core_Exception $e) { Mage::getSingleton('adminhtml/session')->addError($this->__('Customer is saved, but this error happened: ' . $e->getMessage())); Mage::logException($e); } } $this->vendorModel->save(); } } } return parent::_afterSave(); }