/**
     * The default action - show the home page
     */
    public function indexAction()
    {
        $form = Model_Static_Loader::loadForm("basket");
        $session = new Zend_Session_Namespace("basket");
        $model = new Model_DbTable_Products();
        $items = array();
        foreach ($session->items as $item_id => $count) {
            $items[$item_id] = (object) array("item" => $model->find($item_id)->current(), "count" => $count);
        }
        if ($this->getRequest()->isPost() && $form->isValid($_POST) && $items) {
            $data = $form->getValues();
            $orderItems = $this->getRequest()->getParam("items");
            /* ******************************************
             * EMAIL MESSAGE
             * ******************************************/
            ob_start();
            ?>
Новый заказ на сайте альфа гидро:
			<ul><?php 
            foreach ($orderItems as $item => $count) {
                $item = $items[$item]->item;
                ?>
<li><?php 
                echo $item->sku;
                ?>
, кол-во: <?php 
                echo $count;
                ?>
шт.</li>
			<?php 
            }
            ?>
</ul>
			
			Имя: <?php 
            echo $data['name'];
            ?>
<br/>
			Email: <?php 
            echo $data['email'];
            ?>
<br/>
			Телефон: <?php 
            echo $data['phone'];
            ?>
<br/>
			Примечание:<br/><pre><?php 
            echo strip_tags($data['content']);
            ?>
</pre><br/>
			
			<?php 
            $messageHtml = ob_get_clean();
            /* ************************************************
             * MESSAGE END
             * ************************************************/
            $message = new Zend_Mail("UTF-8");
            $message->setFrom("*****@*****.**", "Альфа-Гидро");
            $message->setSubject("Новый заказ на сайта Альфа-Гидро");
            $message->setBodyHtml($messageHtml, "utf8", "UTF-8");
            $users = new Zend_Config_Xml(APPLICATION_PATH . "/config/admins.xml");
            $users = $users->toArray();
            $message->addTo("*****@*****.**", "Альфа-Гидро");
            $message->addTo("*****@*****.**", "Быков Дмитрий Владимирович");
            foreach ($users as $user) {
                if ($user["role"] == "administrator") {
                    $message->addTo($user['email'], $user['name']);
                }
            }
            $message->send();
            $session->items = array();
            $this->_helper->viewRenderer("index-success");
        }
        $this->view->items = $items;
        $this->_helper->layout()->setLayout("basket");
    }
 public function ajaxAction()
 {
     $product_id = $this->getRequest()->getParam('id');
     $productsModel = new Model_DbTable_Products();
     $product = $productsModel->find($product_id)->current();
     $subproductsModel = new Model_DbTable_Subproducts();
     $select = $subproductsModel->select()->order('order ASC');
     $subProducts = $product->findDependentRowset("Model_DbTable_Subproducts", 'SubproductsRel', $select);
     if (!empty($subProducts)) {
         $this->view->modifications = $subProducts;
         $subProductParams = $product->getSubParams();
         if (!empty($subProductParams)) {
             $headTable = array();
             $headTable[] = 'Название';
             foreach ($subProductParams as $subProductParam) {
                 $headTable[] = $subProductParam->name;
             }
             $this->view->tableHead = $headTable;
         }
         $tableBody = array();
         foreach ($subProducts as $modification) {
             $tableBody[] = $modification->sku;
             $paramsVavues = $modification->getParamsValues();
             foreach ($paramsVavues as $values) {
                 $tableBody['params'][] = $values->value;
             }
         }
     }
     $this->view->product = $product;
 }
 public function saveNewParams($newParams)
 {
     $oldParams = $this->getParamsValues();
     $db = $this->getTable()->getAdapter();
     // проходим по массиву новых параметров, апдейтим существующие, с нулевым param_id - добавляем.
     for ($i = 0; $i < count($newParams); $i++) {
         if ($newParams[$i]["param_id"] != "") {
             // апдейт значения параметра
             // для начала надо проверить существование значения параметра (может быть это новый подпродукт)
             // если можно, заменить это на более зендовое
             $result = $db->fetchRow("SELECT * FROM subproduct_params_values WHERE param_id = " . $newParams[$i]["param_id"] . " AND subproduct_id = " . $this->id);
             if ($result) {
                 $data = array('value' => $newParams[$i]["value"]);
                 $where = array();
                 $where[] = "param_id = " . $newParams[$i]["param_id"];
                 $where[] = "subproduct_id = " . $this->id;
                 $db->update("subproduct_params_values", $data, $where);
             } else {
                 // параметр для нового подпродукта
                 $data = array('subproduct_id' => $this->id, 'param_id' => $newParams[$i]["param_id"], 'value' => $newParams[$i]["value"]);
                 $db->insert("subproduct_params_values", $data);
             }
             // апдейт параметра (наименование и порядок)
             $data = array('name' => $newParams[$i]["name"], 'order' => $newParams[$i]["order"]);
             $where = array();
             $where[] = "id = " . $newParams[$i]["param_id"];
             $db->update("subproduct_params", $data, $where);
         } else {
             if ($this->parent_id) {
                 // новый параметр
                 $data = array('product_id' => $this->parent_id, 'name' => $newParams[$i]["name"], 'order' => $newParams[$i]["order"]);
                 $db->insert("subproduct_params", $data);
                 $newid = $db->lastInsertId();
                 if ($newid) {
                     // запилить этот параметр для всех подпродуктов товара
                     $productsModel = new Model_DbTable_Products();
                     $parentProduct = $productsModel->find($this->parent_id)->current();
                     if ($parentProduct) {
                         $select = $productsModel->select()->order('order ASC');
                         $allSubproducts = $parentProduct->findDependentRowset("Model_DbTable_Subproducts", 'SubproductsRel', $select);
                         foreach ($allSubproducts as $currentSubproduct) {
                             $data = array('subproduct_id' => $currentSubproduct->id, 'param_id' => $newid, 'value' => $this->id == $currentSubproduct->id ? $newParams[$i]["value"] : 0);
                             $db->insert("subproduct_params_values", $data);
                         }
                     }
                 }
             }
         }
     }
     // теперь проходим по массиву старых параметров и смотрим какие надо удалить
     for ($i = 0; $i < count($oldParams); $i++) {
         $found = false;
         for ($j = 0; $j < count($newParams); $j++) {
             if ($oldParams[$i]->param_id == $newParams[$j]["param_id"]) {
                 $found = true;
             }
         }
         if (!$found) {
             // удалить параметр с индексом $i
             $where = array();
             $where[] = "param_id = " . $oldParams[$i]->param_id;
             $db->delete("subproduct_params_values", $where);
             $where = array();
             $where[] = "id = " . $oldParams[$i]->param_id;
             $db->delete("subproduct_params", $where);
         }
     }
 }