I have a Marketplace Module
I want to send a mail after save Product
Controller.php
public function newpostAction()
{
/**
* Check license key
*/
Mage::helper('marketplace')->checkMarketplaceKey();
/**
* Initilize customer and seller group id
*/
$customerGroupId = $sellerGroupId = $customerStatus = '';
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$customerGroupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
$sellerGroupId = Mage::helper('marketplace')->getGroupId();
$customerStatus = Mage::getSingleton('customer/session')->getCustomer()->getCustomerstatus();
if (!$this->_getSession()->isLoggedIn() && $customerGroupId != $sellerGroupId) {
Mage::getSingleton('core/session')->addError($this->__('You must have a Seller Account to access this page'));
$this->_redirect('marketplace/seller/login');
return;
}
/**
* Checking whether customer approved or not
*/
if ($customerStatus != 1) {
Mage::getSingleton('core/session')->addError($this->__('Admin Approval is required. Please wait until admin confirms your Seller Account'));
$this->_redirect('marketplace/seller/login');
return;
}
/**
* Initializing variables
*/
$productNameTrim = $set = $setbase = $type = $store = $sellerId = '';
/**
* Getting product values
*/
$type = $this->getRequest()->getPost('type');
/**
* Attribute set
*/
$set = $this->getRequest()->getPost('set');
$setbase = $this->getRequest()->getPost('setbase');
$store = $this->getRequest()->getPost('store');
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
$sellerId = Mage::getSingleton('customer/session')->getCustomer()->getId();
}
/**
* Getting group id
*/
$groupId = Mage::helper('marketplace')->getGroupId();
/**
* Getting product data from product array
*/
$productData = $this->getRequest()->getPost('product');
$silkType = $productData['silktype'];
/**
* Getting product categories from category_ids array
*/
$categoryIds = $this->getRequest()->getPost('category_ids');
if (!empty($productData['name']) && !empty($productData['description']) && isset($productData['price']) && isset($productData['stock_data']['qty']) && !empty($type)) {
/**
* Initilize product weight
*/
if ($type == 'simple') {
if (!isset($productData['weight'])) {
$productData['weight'] = 0;
}
}
/**
* Assing product short description
*/
if (!empty($productData['short_description'])) {
$productData['short_description'] = $productData['short_description'];
}
/**
* Assign create at time
*/
$createdAt = Mage::getModel('core/date')->gmtDate();
/**
* Getting instance for catalog product collection
*/
$product = Mage::getModel('catalog/product');
/**
* Initialize product sku
*/
if (isset($productData['sku'])) {
$skuProductId = Mage::getModel('catalog/product')
->getIdBySku(trim($productData['sku']));
if (!empty($skuProductId)) {
/**
* Error message redirect to create new product page
*/
Mage::getSingleton('core/session')->addError($this->__('SKU Not Available'));
$this->_redirect('marketplace/product/new/');
return;
}
}
/**
* Initialize product attribute set id
*/
if (!empty($set)) {
$product->setAttributeSetId($set);
} else {
$sDefaultAttributeSetId = Mage::getSingleton('eav/config')
->getEntityType(Mage_Catalog_Model_Product::ENTITY)
->getDefaultAttributeSetId();
$product->setAttributeSetId($sDefaultAttributeSetId);
}
/**
* Initialize product type
*/
if (isset($type)) {
$product->setTypeId($type);
}
/**
* Initialize product categories
*/
if (isset($categoryIds)) {
$product->setCategoryIds($categoryIds);
}
$product->setSilktype($silkType);
/**
* Storing product data's to all store view
*/
$product->setStoreId(0);
/**
* Initialize product create at time
*/
if (isset($createdAt)) {
$product->setCreatedAt($createdAt);
}
/**
* Initialize seller id
*/
if (isset($sellerId)) {
$product->setSellerId($sellerId);
}
/**
* Initialize group id
*/
if (isset($groupId)) {
$product->setGroupId($groupId);
}
/**
* Set is assign product
*/
$product->setIsAssignProduct(0);
$uploadsData = new Zend_File_Transfer_Adapter_Http();
$filesDataArray = $uploadsData->getFileInfo();
/**
* Checking whether image exist or not
*/
if (!empty($filesDataArray)) {
foreach ($filesDataArray as $key => $value) {
/**
* Initilize file name
*/
$filename = $key;
if (substr($key, 0, 5) == 'image') {
if (isset($filesDataArray[$filename]['name']) && (file_exists($filesDataArray[$filename]['tmp_name']))) {
try {
$imagesPath[] = Mage::helper('marketplace/marketplace')->uploadImage($filename, $filesDataArray);
} catch (Exception $e) {
/**
* Display error message for images upload
*/
Mage::getSingleton('core/session')->addError($this->__($e->getMessage()));
}
}
}
}
}
/**
* Adding Product images
*/
if (!empty($imagesPath)) {
$product->setMediaGallery(array('images' => array(), 'values' => array()));
foreach ($imagesPath as $value) {
$product->addImageToMediaGallery($value, array('image', 'small_image', 'thumbnail'), false, false);
}
}
/**
* Initialize dispatch event for product prepare
*/
Mage::dispatchEvent(
'catalog_product_prepare_save', array('product' => $product, 'request' => $this->getRequest())
);
/**
* Assign configurable product data
*/
if ($type == 'configurable') {
$attributeIds = $this->getRequest()->getPost('attributes');
$isInStock = 1;
if (isset($productData['stock_data']['is_in_stock'])) {
$isInStock = $productData['stock_data']['is_in_stock'];
}
$productData['stock_data'] = array();
if (count($attributeIds) >= 1) {
$attributeIds = array_unique($attributeIds);
$product->getTypeInstance()->setUsedProductAttributeIds($attributeIds);
$configurableAttributesData = $product->getTypeInstance()->getConfigurableAttributesAsArray();
$product->setCanSaveConfigurableAttributes(true);
$product->setConfigurableAttributesData($configurableAttributesData);
$product->setConfigurableProductsData(array());
}
}
/**
* Adding data to product instanse
*/
if (!empty($productData)) {
$product->addData($productData);
}
/**
* Saving new product
*/
try {
$product->save();
if ($type == 'configurable') {
$stockItem = Mage::getModel('cataloginventory/stock_item');
$stockItem->assignProduct($product);
$stockItem->setData('stock_id', 1);
if (isset($productData['stock_data']['qty'])) {
$stockItem->setData('qty', $productData['stock_data']['qty']);
} else {
$stockItem->setData('qty', 0);
}
$stockItem->setData('use_config_min_qty', 1);
$stockItem->setData('use_config_backorders', 1);
$stockItem->setData('min_sale_qty', 1);
$stockItem->setData('use_config_min_sale_qty', 1);
$stockItem->setData('use_config_max_sale_qty', 1);
$stockItem->setData('is_in_stock', $isInStock);
$stockItem->setData('use_config_notify_stock_qty', 1);
$stockItem->setData('manage_stock', 1);
$stockItem->save();
//This section is what was required.
$stockStatus = Mage::getModel('cataloginventory/stock_status');
$stockStatus->assignProduct($product);
$stockStatus->saveProductStatus($product->getId(), 1);
}
$productId = $product->getId();
/**
* Load the product
*/
$product = Mage::getModel('catalog/product')->load($productId);
/**
* Get all images
*/
$mediaGallery = $product->getMediaGallery();
/**
* If there are images
*/
if (isset($mediaGallery['images']) && !empty($store)) {
/**
* Loop through the images
*/
$increment = 0;
foreach ($mediaGallery['images'] as $image) {
/**
* Set the first image as the base image
*/
if ($increment == $setbase) {
$product->setStoreId($store)
->setImage($image['file'])
->setSmallImage($image['file'])
->setThumbnail($image['file']);
$product->save();
}
$increment++;
/**
* Stop
*/
}
}
/**
* Initialize product options
*/
if (!empty($productData['options'])) {
$product->setProductOptions($productData['options']);
$product->setCanSaveCustomOptions(1);
$product->save();
}
/**
* Checking whether image or not
*/
if (!empty($imagesPath)) {
foreach ($imagesPath as $deleteImage) {
/**
* Checking whether image exist or not
*/
if (file_exists($deleteImage)) {
/**
* Delete images from temporary folder
*/
unlink($deleteImage);
}
}
}
/**
* Function for adding downloadable product sample and link data
*/
$downloadProductId = $product->getId();
if ($type == 'downloadable' && isset($downloadProductId) && isset($store)) {
$this->addDownloadableProductData($downloadProductId, $store);
}
/**
* Success message redirect to manage product page
*/
if (Mage::helper('marketplace')->getProductApproval() == 1) {
Mage::getSingleton('core/session')->addSuccess($this->__('Your product is added successfully'));
$mail = Mage::getModel('core/email');
/*$mail = Mage::getModel('core/email');
$mail->setToName('User');
$mail->setToEmail('[email protected]');
$mail->setBody('Send Test mail to you.....');
$mail->setSubject('Test Mail');
$mail->setFromEmail('[email protected]');
$mail->setFromName("Send Test mail to you.....");
$mail->setType('html');// YOu can use Html or text as Mail format
$mail->send(); */
$sellerData = Mage::getSingleton('customer/session')->getCustomer();
$sellerIdss = $sellerData->getId();
$seller_mail = $sellerData->getEmail();
$collectionss = Mage::getModel('followup/followup')->getCollection()
->addFieldToFilter('seller_id', $sellerIdss)
->addFieldToFilter('seller_email', $seller_mail);
foreach ($collectionss as $item) {
$mycustomer_email = $item->getCustomerEmail();
$mycustomer_name = $item->getCustomerName();
$template_id = 'customer_update';
$email_to = $mycustomer_email;
$customer_name = $cus_name;
$email_template = Mage::getModel('core/email_template')->loadDefault($template_id);
$custom_variable = $mycustomer_name;
//$custom_variable1 = $cus_email;
$custom_variable1 = $this->getRequest()->getPost('store_name');
$email_template_variables = array(
'custom_variable' => $custom_variable,
'custom_variable1' => $custom_variable1);
//'custom_variable2' => $custom_variable2);
$sender_name = Mage::getStoreConfig(Mage_Core_Model_Store::XML_PATH_STORE_STORE_NAME);
$sender_email = Mage::getStoreConfig('trans_email/ident_general/email');
$email_template->setSenderName($sender_name);
$email_template->setSenderEmail($sender_email);
$email_template->send($email_to, $customer_name, $email_template_variables);
}
if (Mage::getStoreConfig('marketplace/product/addproductemailnotification') == 1) {
/**
* Sending email for added new product
*/
$templateId = (int)Mage::getStoreConfig('marketplace/product/addproductemailnotificationtemplate');
$adminEmailId = Mage::getStoreConfig('marketplace/marketplace/admin_email_id');
$toMailId = Mage::getStoreConfig("trans_email/ident_$adminEmailId/email");
$toName = Mage::getStoreConfig("trans_email/ident_$adminEmailId/name");
/**
* Selecting template id
*/
if ($templateId) {
$emailTemplate = Mage::getModel('core/email_template')->load($templateId);
} else {
$emailTemplate = Mage::getModel('core/email_template')
->loadDefault('marketplace_product_addproductemailnotificationtemplate');
}
$customer = Mage::getModel('customer/customer')->load($sellerId);
$selleremail = $customer->getEmail();
$recipient = $toMailId;
$sellername = $customer->getName();
$productname = $product->getName();
$producturl = $product->getProductUrl();
$emailTemplate->setSenderName($sellername);
$emailTemplate->setSenderEmail($selleremail);
$emailTemplateVariables = (array('ownername' => $toName, 'sellername' => $sellername, 'selleremail' => $selleremail, 'productname' => $productname, 'producturl' => $producturl));
$emailTemplate->setDesignConfig(array('area' => 'frontend'));
$processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables);
$emailTemplate->send($recipient, $sellername, $emailTemplateVariables);
}
} else {
Mage::getSingleton('core/session')->addSuccess($this->__('Your product is awaiting moderation'));
/*$mail = Mage::getModel('core/email');
$mail->setToName('User');
$mail->setToEmail('[email protected]');
$mail->setBody('Send Test mail to you.....');
$mail->setSubject('Test Mail');
$mail->setFromEmail('[email protected]');
$mail->setFromName("Send Test mail to you.....");
$mail->setType('html');// YOu can use Html or text as Mail format
$mail->send(); */
foreach ($collectionss as $item) {
$mycustomer_email = $item->getCustomerEmail();
$mycustomer_name = $item->getCustomerName();
$template_id = 'customer_update';
$email_to = $mycustomer_email;
$customer_name = $cus_name;
$email_template = Mage::getModel('core/email_template')->loadDefault($template_id);
$custom_variable = $mycustomer_name;
//$custom_variable1 = $cus_email;
$custom_variable1 = $this->getRequest()->getPost('store_name');
$email_template_variables = array(
'custom_variable' => $custom_variable,
'custom_variable1' => $custom_variable1);
//'custom_variable2' => $custom_variable2);
$sender_name = Mage::getStoreConfig(Mage_Core_Model_Store::XML_PATH_STORE_STORE_NAME);
$sender_email = Mage::getStoreConfig('trans_email/ident_general/email');
$email_template->setSenderName($sender_name);
$email_template->setSenderEmail($sender_email);
$email_template->send($email_to, $customer_name, $email_template_variables);
}
if (Mage::getStoreConfig('marketplace/product/addproductemailnotification') == 1) {
/**
* Sending email for added new product
*/
$templateId = (int)Mage::getStoreConfig('marketplace/product/addproductapprovalemailnotificationtemplate');
$adminEmailId = Mage::getStoreConfig('marketplace/marketplace/admin_email_id');
$toMailId = Mage::getStoreConfig("trans_email/ident_$adminEmailId/email");
$toName = Mage::getStoreConfig("trans_email/ident_$adminEmailId/name");
if ($templateId) {
$emailTemplate = Mage::getModel('core/email_template')->load($templateId);
} else {
$emailTemplate = Mage::getModel('core/email_template')
->loadDefault('marketplace_product_addproductapprovalemailnotificationtemplate');
}
$customer = Mage::getModel('customer/customer')->load($sellerId);
$selleremail = $customer->getEmail();
$recipient = $toMailId;
$sellername = $customer->getName();
$productname = $product->getName();
$producturl = Mage::helper('adminhtml')->getUrl('adminhtml/catalog_product/edit', array('id' => $product->getId()));
$emailTemplate->setSenderName($sellername);
$emailTemplate->setSenderEmail($selleremail);
$emailTemplateVariables = (array('ownername' => $toName, 'sellername' => $sellername, 'selleremail' => $selleremail, 'productname' => $productname, 'producturl' => $producturl));
$emailTemplate->setDesignConfig(array('area' => 'frontend'));
$processedTemplate = $emailTemplate->getProcessedTemplate($emailTemplateVariables);
$emailTemplate->send($recipient, $sellername, $emailTemplateVariables);
}
}
if ($type == 'configurable') {
$this->_redirect('marketplace/product/configurable/', array('id' => $productId, 'set' => $set));
return;
}
$this->_redirect('marketplace/product/manage/');
} catch (Mage_Core_Exception $e) {
/**
* Error message redirect to create new product page
*/
Mage::getSingleton('core/session')->addError($this->__($e->getMessage()));
$this->_redirect('marketplace/product/create/');
} catch (Exception $e) {
/**
* Error message redirect to create new product page
*/
Mage::getSingleton('core/session')->addError($this->__($e->getMessage()));
$this->_redirect('marketplace/product/create/');
}
} else {
Mage::getSingleton('core/session')->addError($this->__('Please enter all required fields'));
if ($type == 'configurable') {
$this->_redirect('marketplace/product/selectattributes/', array('set' => $set));
return;
}
$this->_redirect('marketplace/product/new');
}
}
config.xml
<catalog_product_save_after>
<observers>
<marketplace>
<class>marketplace/observer</class>
<method>sendme</method>
</marketplace>
</observers>
</catalog_product_save_after>
Observer.php
public function sendme($observer)
{
$mail = Mage::getModel('core/email');
$mail->setToName('User');
$mail->setToEmail('[email protected]');
$mail->setBody('Send Test mail to you.....');
$mail->setSubject('Test Mail');
$mail->setFromEmail('[email protected]');
$mail->setFromName("Send Test mail to you.....");
$mail->setType('html');// YOu can use Html or text as Mail format
$mail->send();
}
Error
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '16958-1' for key 'UNQ_CATALOGINVENTORY_STOCK_ITEM_PRODUCT_ID_STOCK_ID', query was: INSERT INTO
cataloginventory_stock_item
(product_id
,stock_id
,qty
,is_in_stock
,low_stock_date
,stock_status_changed_auto
) VALUES (?, ?, ?, ?, ?, ?)
is it right or Suggest me