public function getAction() { $ns = new Zend_Session_Namespace(); $product = array(); $uri = $this->getRequest()->getParam('q'); if (!empty($uri)) { $fields = "p.*,pd.productdata_id as productdata_id, \n pd.name as name, \n pd.shortdescription as shortdescription,\n pd.description as description,\n pd.metakeywords as metakeywords,\n pd.metadescription as metadescription,\n pai.*"; $data = Products::getProductbyUriID($uri, $fields, $ns->langid); if (!empty($data) && $data['enabled']) { if (!empty($data['blocks'])) { $this->getHelper('layout')->setLayout('2columns-right'); } $this->view->group = Products::GetAttributeGroupByProductID($data['product_id']); if (!empty($ns->cart)) { $ns->lastproduct = $uri; } $refund = false; if (is_array($ns->upgrade)) { //Check if the product is OK for upgrade and if OK take refund foreach ($ns->upgrade as $orderid => $upgradeProduct) { if (in_array($data['product_id'], $upgradeProduct)) { $refundInfo = OrdersItems::getRefundInfo($orderid); $refund = $refundInfo['refund']; break; } } } $form = $this->CreateProductForm(); $items = ProductsTranches::getList($data['product_id'], $refund); // Check the default quantity value $term = ProductsTranches::getDefaultItem($data['product_id']); if (!empty($term)) { $data['term'] = $term; } // Check if there are custom terms / billing cycles options if (count($items) > 0) { $form->addElement('select', 'term', array('label' => $this->translator->translate('Term'), 'required' => true, 'multiOptions' => $items, 'decorators' => array('Bootstrap'), 'class' => 'form-control input-sm select-billing-cycle')); $form->addElement('hidden', 'quantity', array('value' => '1', 'decorators' => array('ViewHelper'))); } else { $form->addElement('text', 'quantity', array('label' => $this->translator->translate('Quantity'), 'required' => true, 'value' => '1', 'decorators' => array('Bootstrap'), 'class' => 'form-control input-sm')); $form->addElement('hidden', 'term', array('decorators' => array('ViewHelper'))); } // Adding the product attributes $attributes = ProductsAttributesIndexes::getAttributebyProductID($data['product_id'], $ns->langid); if (count($attributes) > 0) { $this->view->placeholder("features")->append($this->view->partial('partials/attributes.phtml', array('attributes' => $attributes))); } $layout = $this->getHelper('layout')->getLayout(); // Adding the related products $related = ProductsRelated::get_products($data['product_id'], $ns->langid); if (count($related) > 0) { if ($layout == "1column") { $placeholder = $this->view->placeholder("right"); $this->getHelper('layout')->setLayout('2columns-right'); } else { list($columns, $sidebar) = explode("-", $layout); $placeholder = $this->view->placeholder($sidebar); } $placeholder->append($this->view->partial('products/related.phtml', array('products' => $related))); } // Attaching the WIKI Pages $wikipages = Wikilinks::getWikiPages($data['product_id'], "products", $ns->langid); if (count($wikipages) > 0) { if ($layout == "1column") { $placeholder = $this->view->placeholder("right"); $this->getHelper('layout')->setLayout('2columns-right'); } else { list($columns, $sidebar) = explode("-", $layout); $placeholder = $this->view->placeholder($sidebar); } $placeholder->append($this->view->partial('products/wikipages.phtml', array('wikipages' => $wikipages))); } $this->view->reviewsdata = Reviews::getbyProductId($data['product_id']); // Set the Metatag information $this->view->headTitle()->prepend($data['name']); if (!empty($data['metakeywords'])) { $this->view->headMeta()->setName('keywords', $data['metakeywords']); } if (!empty($data['metadescription'])) { $this->view->headMeta()->setName('description', $data['metadescription']); } // Send the variables to the view $this->view->headertitle = $data['name']; $this->view->product = $data; $this->view->prices = Products::getPrices($data['product_id'], $refund); $this->view->form = $form; $form->populate($data); } else { // Check if there is an url rewrite redirection $newuri = UrlRewrite::getTarget($uri); if ($newuri) { header("HTTP/1.1 301 Moved Permanently"); header("Location: {$newuri}"); die; } else { return $this->_helper->redirector('index', 'notfound', 'default', array('uri' => $uri)); } } } else { return $this->_helper->redirector('index', 'index', 'default', array('mex' => 'The request is not correct.', 'status' => 'danger')); } $this->_helper->viewRenderer('details'); }
/** * Delete a product * * @param integer $id * @return boolean */ public static function del($id) { // Check if the product has been already attached to one or more orders if (0 < OrdersItems::CheckIfProductExist($id)) { // If the product is locked by an order disable it $product = Doctrine::getTable('Products')->find($id); if ($product->isp_id == Isp::getCurrentId()) { $product->enabled = 0; $product->save(); } return false; } // Delete the images of the product selected ProductsMedia::getMediabyProductId($id); // Delete the relationship between the products ProductsRelated::delItemsbyProductID($id); // Delete the product record self::find($id)->delete(); return true; }
/** * Get a record and populate the application form * @return unknown_type */ public function editAction() { $form = $this->getForm('/admin/products/process'); $id = $this->getRequest()->getParam('id'); $orders = ""; // Create the buttons in the edit form $this->view->buttons = array(array("url" => "#", "label" => $this->translator->translate('Save'), "params" => array('css' => null, 'id' => 'submit')), array("url" => "/admin/products/list", "label" => $this->translator->translate('List'), "params" => array('css' => null, 'id' => 'submit')), array("url" => "/admin/products/new/", "label" => $this->translator->translate('New'), "params" => array('css' => null))); if (!empty($id) && is_numeric($id)) { $this->session->productid = $id; $rs = $this->products->getAllInfo($id, $this->session->langid); if (!empty($rs)) { // Join the translated data information to populate the form $data = !empty($rs['ProductsData'][0]) ? $rs['ProductsData'][0] : array(); $rs = array_merge($rs, $data); $form = $this->createAttributesElements($form, $rs['group_id']); $this->view->isrecurring = $rs['ProductsAttributesGroups']['isrecurring']; $rs['language_id'] = $this->session->langid; // added to the form the language id selected $rs['related'] = ProductsRelated::getItemsbyProductID($rs['product_id']); //add panel for select upgrade $rs['upgrade'] = ProductsUpgrades::getItemsbyProductID($rs['product_id']); // Get the wiki pages attached to the product selected $rs['wikipages'] = Wikilinks::getWikiPagesList($rs['product_id'], "products", $this->session->langid); $form->populate($rs); $categories = explode("/", $rs['categories']); $this->view->categories = json_encode($this->createCategoryTree(0, $categories)); $this->view->title = !empty($rs['name']) ? $rs['name'] : ""; $this->view->icon = "fa fa-barcode"; $this->view->titlelink = !empty($rs['uri']) ? "/" . $rs['uri'] . ".html" : ""; $media = ProductsMedia::getMediabyProductId($id, "pm.media_id, pm.filename, pm.path"); if (isset($media[0])) { $this->view->media = array('records' => $media, 'delete' => array('controller' => 'products', 'action' => 'delmedia')); } $tranches = ProductsTranches::getTranches($id, "tranche_id, quantity, measurement, setupfee, price, bc.name as billingcycle, selected"); if (isset($tranches[0])) { $onclick = array(); foreach ($tranches as &$tranche) { $trancheid = $tranche['tranche_id']; $include = ProductsTranchesIncludes::getIncludeForTrancheId($trancheid); $textInclude = array(); if (array_key_exists('domains', $include)) { $textInclude[] = "Domains: " . implode(", ", $include['domains']); } $tranche['include'] = implode("<br/>", $textInclude); } $this->view->tranches = array('records' => $tranches, 'actions' => array('/admin/products/setdefaultrance/id/' => 'Set as default'), 'delete' => array('controller' => 'products', 'action' => 'deltranche')); } } $orders = array('records' => OrdersItems::ProductsInOrdersItems($id), 'edit' => array('controller' => 'ordersitems', 'action' => 'edit')); $this->view->buttons[] = array("url" => "/admin/products/confirm/id/{$id}", "label" => $this->translator->translate('Delete'), "params" => array('css' => null)); } $this->view->description = $this->translator->translate("Here you can edit the product details"); $this->view->mex = $this->getRequest()->getParam('mex'); $this->view->mexstatus = $this->getRequest()->getParam('status'); $this->view->orders = $orders; $this->view->isSold = (bool) OrdersItems::CheckIfProductExist($id); $this->view->form = $form; $this->render('applicantform'); }