| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/boutiques/app/code/core/Mage/Adminhtml/controllers/ |
Upload File : |
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Adminhtml
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Customer admin controller
*
* @category Mage
* @package Mage_Adminhtml
* @author Magento Core Team <core@magentocommerce.com>
*/
class Mage_Adminhtml_CustomerController extends Mage_Adminhtml_Controller_Action
{
protected function _initCustomer($idFieldName = 'id')
{
$this->_title($this->__('Customers'))->_title($this->__('Manage Customers'));
$customerId = (int) $this->getRequest()->getParam($idFieldName);
$customer = Mage::getModel('customer/customer');
if ($customerId) {
$customer->load($customerId);
}
Mage::register('current_customer', $customer);
return $this;
}
/**
* Customers list action
*/
public function indexAction()
{
$this->_title($this->__('Customers'))->_title($this->__('Manage Customers'));
if ($this->getRequest()->getQuery('ajax')) {
$this->_forward('grid');
return;
}
$this->loadLayout();
/**
* Set active menu item
*/
$this->_setActiveMenu('customer/manage');
/**
* Append customers block to content
*/
$this->_addContent(
$this->getLayout()->createBlock('adminhtml/customer', 'customer')
);
/**
* Add breadcrumb item
*/
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Customers'), Mage::helper('adminhtml')->__('Customers'));
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('Manage Customers'), Mage::helper('adminhtml')->__('Manage Customers'));
$this->renderLayout();
}
public function gridAction()
{
$this->loadLayout();
$this->getResponse()->setBody($this->getLayout()->createBlock('adminhtml/customer_grid')->toHtml());
}
/**
* Customer edit action
*/
public function editAction()
{
$this->_initCustomer();
$this->loadLayout();
$customer = Mage::registry('current_customer');
// set entered data if was error when we do save
$data = Mage::getSingleton('adminhtml/session')->getCustomerData(true);
if (isset($data['account'])) {
$customer->addData($data['account']);
}
if (isset($data['address']) && is_array($data['address'])) {
foreach ($data['address'] as $addressId => $address) {
$addressModel = Mage::getModel('customer/address')->setData($address)
->setId($addressId);
$customer->addAddress($addressModel);
}
}
$this->_title($customer->getId() ? $customer->getName() : $this->__('New Customer'));
/**
* Set active menu item
*/
$this->_setActiveMenu('customer/new');
$this->renderLayout();
}
/**
* Create new customer action
*/
public function newAction()
{
$this->_forward('edit');
}
/**
* Delete customer action
*/
public function deleteAction()
{
$this->_initCustomer();
$customer = Mage::registry('current_customer');
if ($customer->getId()) {
try {
$customer->load($customer->getId());
$customer->delete();
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('The customer has been deleted.'));
}
catch (Exception $e){
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/customer');
}
/**
* Save customer action
*/
public function saveAction()
{
if ($data = $this->getRequest()->getPost()) {
$data = $this->_filterPostData($data);
$redirectBack = $this->getRequest()->getParam('back', false);
$this->_initCustomer('customer_id');
/** @var Mage_Customer_Model_Customer */
$customer = Mage::registry('current_customer');
// Prepare customer saving data
if (isset($data['account'])) {
if (isset($data['account']['email'])) {
$data['account']['email'] = trim($data['account']['email']);
}
$customer->addData($data['account']);
}
// unset template data
if (isset($data['address']['_template_'])) {
unset($data['address']['_template_']);
}
$modifiedAddresses = array();
if (! empty($data['address'])) {
foreach ($data['address'] as $index => $addressData) {
if (($address = $customer->getAddressItemById($index))) {
$addressId = $index;
$modifiedAddresses[] = $index;
} else {
$address = Mage::getModel('customer/address');
$addressId = null;
$customer->addAddress($address);
}
$address->setData($addressData)
->setId($addressId)
->setPostIndex($index); // We need set post_index for detect default addresses
}
}
// not modified customer addresses mark for delete
foreach ($customer->getAddressesCollection() as $customerAddress) {
if ($customerAddress->getId() && ! in_array($customerAddress->getId(), $modifiedAddresses)) {
$customerAddress->setData('_deleted', true);
}
}
if(isset($data['subscription'])) {
$customer->setIsSubscribed(true);
} else {
$customer->setIsSubscribed(false);
}
$isNewCustomer = !$customer->getId();
try {
if ($customer->getPassword() == 'auto') {
$sendPassToEmail = true;
$customer->setPassword($customer->generatePassword());
}
// force new customer active
if ($isNewCustomer) {
$customer->setForceConfirmed(true);
}
Mage::dispatchEvent('adminhtml_customer_prepare_save',
array('customer' => $customer, 'request' => $this->getRequest())
);
$customer->save();
// send welcome email
if ($customer->getWebsiteId() && ($customer->hasData('sendemail') || isset($sendPassToEmail))) {
$storeId = $customer->getSendemailStoreId();
if ($isNewCustomer) {
$customer->sendNewAccountEmail('registered', '', $storeId);
}
// confirm not confirmed customer
elseif ((!$customer->getConfirmation())) {
$customer->sendNewAccountEmail('confirmed', '', $storeId);
}
}
// TODO? Send confirmation link, if deactivating account
if ($newPassword = $customer->getNewPassword()) {
if ($newPassword == 'auto') {
$newPassword = $customer->generatePassword();
}
$customer->changePassword($newPassword);
$customer->sendPasswordReminderEmail();
}
Mage::getSingleton('adminhtml/session')->addSuccess(Mage::helper('adminhtml')->__('The customer has been saved.'));
Mage::dispatchEvent('adminhtml_customer_save_after',
array('customer' => $customer, 'request' => $this->getRequest())
);
if ($redirectBack) {
$this->_redirect('*/*/edit', array(
'id' => $customer->getId(),
'_current'=>true
));
return;
}
}
catch (Exception $e){
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
Mage::getSingleton('adminhtml/session')->setCustomerData($data);
$this->getResponse()->setRedirect($this->getUrl('*/customer/edit', array('id'=>$customer->getId())));
return;
}
}
$this->getResponse()->setRedirect($this->getUrl('*/customer'));
}
/**
* Export customer grid to CSV format
*/
public function exportCsvAction()
{
$fileName = 'customers.csv';
$content = $this->getLayout()->createBlock('adminhtml/customer_grid')
->getCsvFile();
$this->_prepareDownloadResponse($fileName, $content);
}
/**
* Export customer grid to XML format
*/
public function exportXmlAction()
{
$fileName = 'customers.xml';
$content = $this->getLayout()->createBlock('adminhtml/customer_grid')
->getExcelFile();
$this->_prepareDownloadResponse($fileName, $content);
}
/**
* Prepare file download response
*
* @todo remove in 1.3
* @deprecated please use $this->_prepareDownloadResponse()
* @see Mage_Adminhtml_Controller_Action::_prepareDownloadResponse()
* @param string $fileName
* @param string $content
* @param string $contentType
*/
protected function _sendUploadResponse($fileName, $content, $contentType='application/octet-stream')
{
$this->_prepareDownloadResponse($fileName, $content, $contentType);
}
/**
* Customer orders grid
*
*/
public function ordersAction() {
$this->_initCustomer();
$this->getResponse()->setBody($this->getLayout()->createBlock('adminhtml/customer_edit_tab_orders')->toHtml());
}
/**
* Customer last orders grid for ajax
*
*/
public function lastOrdersAction() {
$this->_initCustomer();
$this->getResponse()->setBody($this->getLayout()->createBlock('adminhtml/customer_edit_tab_view_orders')->toHtml());
}
/**
* Customer newsletter grid
*
*/
public function newsletterAction()
{
$this->_initCustomer();
$subscriber = Mage::getModel('newsletter/subscriber')
->loadByCustomer(Mage::registry('current_customer'));
Mage::register('subscriber', $subscriber);
$this->getResponse()->setBody($this->getLayout()->createBlock('adminhtml/customer_edit_tab_newsletter_grid')->toHtml());
}
public function wishlistAction()
{
$this->_initCustomer();
$customer = Mage::registry('current_customer');
if ($customer->getId()) {
if($itemId = (int) $this->getRequest()->getParam('delete')) {
try {
Mage::getModel('wishlist/item')->load($itemId)
->delete();
}
catch (Exception $e) {
Mage::logException($e);
}
}
}
$this->getResponse()->setBody($this->getLayout()->createBlock('adminhtml/customer_edit_tab_wishlist')->toHtml());
}
/**
* Customer last view wishlist for ajax
*
*/
public function viewWishlistAction()
{
$this->_initCustomer();
$this->getResponse()->setBody($this->getLayout()->createBlock('adminhtml/customer_edit_tab_view_wishlist')->toHtml());
}
/**
* [Handle and then] get a cart grid contents
*
* @return string
*/
public function cartAction()
{
$this->_initCustomer();
$websiteId = $this->getRequest()->getParam('website_id');
// delete an item from cart
if ($deleteItemId = $this->getRequest()->getPost('delete')) {
$quote = Mage::getModel('sales/quote')
->setWebsite(Mage::app()->getWebsite($websiteId))
->loadByCustomer(Mage::registry('current_customer'));
$item = $quote->getItemById($deleteItemId);
if ($item->getId()) {
$quote->removeItem($deleteItemId);
$quote->collectTotals()->save();
}
}
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/customer_edit_tab_cart', '', array('website_id'=>$websiteId))
->toHtml()
);
}
/**
* Get shopping cart to view only
*
*/
public function viewCartAction()
{
$this->_initCustomer();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/customer_edit_tab_view_cart')
->setWebsiteId($this->getRequest()->getParam('website_id'))
->toHtml()
);
}
/**
* Get shopping carts from all websites for specified client
*
* @return string
*/
public function cartsAction()
{
$this->_initCustomer();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/customer_edit_tab_carts')->toHtml()
);
}
public function productReviewsAction()
{
$this->_initCustomer();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/customer_edit_tab_reviews', 'admin.customer.reviews')
->setCustomerId(Mage::registry('current_customer')->getId())
->setUseAjax(true)
->toHtml()
);
}
public function productTagsAction()
{
$this->_initCustomer();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/customer_edit_tab_tag', 'admin.customer.tags')
->setCustomerId(Mage::registry('current_customer')->getId())
->setUseAjax(true)
->toHtml()
);
}
public function tagGridAction()
{
$this->_initCustomer();
$this->getResponse()->setBody(
$this->getLayout()->createBlock('adminhtml/customer_edit_tab_tag', 'admin.customer.tags')
->setCustomerId(Mage::registry('current_customer'))
->toHtml()
);
}
public function validateAction()
{
$response = new Varien_Object();
$response->setError(0);
$websiteId = Mage::app()->getStore()->getWebsiteId();
$accountData = $this->getRequest()->getPost('account');
$customer = Mage::getModel('customer/customer');
if ($id = $this->getRequest()->getParam('id')) {
$customer->load($id);
$websiteId = $customer->getWebsiteId();
}
if (isset($accountData['website_id'])) {
$websiteId = $accountData['website_id'];
}
# Checking if we received email. If not - ERROR
if( !($accountData['email']) ) {
$response->setError(1);
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__("Please fill in 'email' field."));
$this->_initLayoutMessages('adminhtml/session');
$response->setMessage($this->getLayout()->getMessagesBlock()->getGroupedHtml());
} else {
# Trying to load customer with the same email and return error message
# if customer with the same email address exisits
$checkCustomer = Mage::getModel('customer/customer')
->setWebsiteId($websiteId);
$checkCustomer->loadByEmail($accountData['email']);
if( $checkCustomer->getId() && ($checkCustomer->getId() != $customer->getId()) ) {
$response->setError(1);
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Customer with the same email already exists.'));
$this->_initLayoutMessages('adminhtml/session');
$response->setMessage($this->getLayout()->getMessagesBlock()->getGroupedHtml());
}
}
$this->getResponse()->setBody($response->toJson());
}
public function massSubscribeAction()
{
$customersIds = $this->getRequest()->getParam('customer');
if(!is_array($customersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select customer(s).'));
} else {
try {
foreach ($customersIds as $customerId) {
$customer = Mage::getModel('customer/customer')->load($customerId);
$customer->setIsSubscribed(true);
$customer->save();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__(
'Total of %d record(s) were updated.', count($customersIds)
)
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
public function massUnsubscribeAction()
{
$customersIds = $this->getRequest()->getParam('customer');
if(!is_array($customersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select customer(s).'));
} else {
try {
foreach ($customersIds as $customerId) {
$customer = Mage::getModel('customer/customer')->load($customerId);
$customer->setIsSubscribed(false);
$customer->save();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__(
'Total of %d record(s) were updated.', count($customersIds)
)
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
public function massDeleteAction()
{
$customersIds = $this->getRequest()->getParam('customer');
if(!is_array($customersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select customer(s).'));
} else {
try {
$customer = Mage::getModel('customer/customer');
foreach ($customersIds as $customerId) {
$customer->reset()
->load($customerId)
->delete();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__(
'Total of %d record(s) were deleted.', count($customersIds)
)
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
public function massAssignGroupAction()
{
$customersIds = $this->getRequest()->getParam('customer');
if(!is_array($customersIds)) {
Mage::getSingleton('adminhtml/session')->addError(Mage::helper('adminhtml')->__('Please select customer(s).'));
} else {
try {
foreach ($customersIds as $customerId) {
$customer = Mage::getModel('customer/customer')->load($customerId);
$customer->setGroupId($this->getRequest()->getParam('group'));
$customer->save();
}
Mage::getSingleton('adminhtml/session')->addSuccess(
Mage::helper('adminhtml')->__(
'Total of %d record(s) were updated.', count($customersIds)
)
);
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
}
}
$this->_redirect('*/*/index');
}
protected function _isAllowed()
{
return Mage::getSingleton('admin/session')->isAllowed('customer/manage');
}
/**
* Filtering posted data. Converting localized data if needed
*
* @param array
* @return array
*/
protected function _filterPostData($data)
{
$data['account'] = $this->_filterDates($data['account'], array('dob'));
return $data;
}
}