/** * Prepare form * * @param DataForm $form * @param ModelCode|null $experimentCodeModel * @param string $formName * @return void */ public function addGoogleoptimizerFields(DataForm $form, ModelCode $experimentCodeModel = null, $formName = '') { $fieldset = $form->addFieldset('googleoptimizer_fields', ['legend' => __('Google Analytics Content Experiments Code')]); $fieldset->addField('experiment_script', 'textarea', ['name' => 'experiment_script', 'label' => __('Experiment Code'), 'value' => $experimentCodeModel ? $experimentCodeModel->getExperimentScript() : '', 'class' => 'textarea googleoptimizer', 'required' => false, 'note' => __('Experiment code should be added to the original page only.'), 'data-form-part' => $formName]); $fieldset->addField('code_id', 'hidden', ['name' => 'code_id', 'value' => $experimentCodeModel ? $experimentCodeModel->getCodeId() : '', 'required' => false, 'data-form-part' => $formName]); $form->setFieldNameSuffix('google_experiment'); }
/** * Delete Product scripts after deleting product * * @param \Magento\Framework\Event\Observer $observer * @return $this */ public function execute(\Magento\Framework\Event\Observer $observer) { /** @var $product \Magento\Catalog\Model\Product */ $product = $observer->getEvent()->getProduct(); $this->_modelCode->loadByEntityIdAndType($product->getId(), \Magento\GoogleOptimizer\Model\Code::ENTITY_TYPE_PRODUCT, $product->getStoreId()); if ($this->_modelCode->getId()) { $this->_modelCode->delete(); } return $this; }
/** * Returns Code Model * * @return GoogleOptimizerCode|null * @throws NoSuchEntityException */ public function getCode() { $code = null; $entity = $this->getEntity(); if ($entity->getId()) { $this->codeModel->loadByEntityIdAndType($entity->getId(), GoogleOptimizerCode::ENTITY_TYPE_PAGE); $code = $this->codeModel; } return $code; }
/** * Delete Product scripts after deleting product * * @param \Magento\Framework\Object $observer * @return $this */ public function deleteCmsGoogleExperimentScript($observer) { /** @var $cmsPage \Magento\Cms\Model\Page */ $cmsPage = $observer->getEvent()->getObject(); $this->_modelCode->loadByEntityIdAndType($cmsPage->getId(), \Magento\GoogleOptimizer\Model\Code::ENTITY_TYPE_PAGE); if ($this->_modelCode->getId()) { $this->_modelCode->delete(); } return $this; }
/** * Delete Product scripts after deleting product * * @param \Magento\Framework\Object $observer * @return $this */ public function deleteCategoryGoogleExperimentScript($observer) { /** @var $category \Magento\Catalog\Model\Category */ $category = $observer->getEvent()->getCategory(); $this->_modelCode->loadByEntityIdAndType($category->getId(), \Magento\GoogleOptimizer\Model\Code::ENTITY_TYPE_CATEGORY, $category->getStoreId()); if ($this->_modelCode->getId()) { $this->_modelCode->delete(); } return $this; }
/** * Delete Product scripts after deleting product * * @param \Magento\Framework\Event\Observer $observer * @return $this */ public function execute(\Magento\Framework\Event\Observer $observer) { /** @var $cmsPage \Magento\Cms\Model\Page */ $cmsPage = $observer->getEvent()->getObject(); $this->_modelCode->loadByEntityIdAndType($cmsPage->getId(), \Magento\GoogleOptimizer\Model\Code::ENTITY_TYPE_PAGE); if ($this->_modelCode->getId()) { $this->_modelCode->delete(); } return $this; }
/** * Load scripts by entity and store * * @param \Magento\GoogleOptimizer\Model\Code $object * @param int $entityId * @param string $entityType * @param int $storeId * @return $this */ public function loadByEntityType($object, $entityId, $entityType, $storeId) { $connection = $this->getConnection(); $select = $connection->select()->from(['t_def' => $this->getMainTable()], ['entity_id', 'entity_type', 'experiment_script', 'code_id'])->where('t_def.entity_id=?', $entityId)->where('t_def.entity_type=?', $entityType)->where('t_def.store_id IN (0, ?)', $storeId)->order('t_def.store_id DESC')->limit(1); $data = $connection->fetchRow($select); if ($data) { $object->setData($data); } $this->_afterLoad($object); return $this; }
/** * Get loaded Code object by Entity * * @param \Magento\Framework\Model\AbstractModel $entity * @return \Magento\GoogleOptimizer\Model\Code */ public function getCodeObjectByEntity(\Magento\Framework\Model\AbstractModel $entity) { $this->_entity = $entity; $this->_checkEntityIsEmpty(); if ($entity instanceof \Magento\Cms\Model\Page) { $this->_codeModel->loadByEntityIdAndType($entity->getId(), $this->_getEntityType()); } else { $this->_codeModel->loadByEntityIdAndType($entity->getId(), $this->_getEntityType(), $entity->getStoreId()); } return $this->_codeModel; }
/** * Delete model code * * @return void * @throws \InvalidArgumentException */ protected function _deleteCode() { $this->_modelCode->delete(); }