protected function _formatSelectId(Kwf_Component_Select $select) { if ($select->hasPart(Kwf_Model_Select::WHERE_ID)) { $id = $select->getPart(Kwf_Model_Select::WHERE_ID); $select->unsetPart(Kwf_Model_Select::WHERE_ID); if (substr($id, 0, 2) == '-l') { $select->whereEquals('component', 'link'); } else { if (substr($id, 0, 2) == '-d') { $select->whereEquals('component', 'download'); } else { if (substr($id, 0, 2) == '-i') { $select->whereEquals('component', 'image'); } else { return null; } } } $select->whereEquals('nr', substr($id, 2)); } if ($p = $select->getPart(Kwf_Component_Select::WHERE_CHILD_OF)) { $select->where(new Kwf_Model_Select_Expr_Or(array(new Kwf_Model_Select_Expr_StartsWith('component_id', $p->dbId . '-'), new Kwf_Model_Select_Expr_Equal('component_id', $p->dbId)))); } return $select; }
public function getTemplateVars(Kwf_Component_Renderer_Abstract $renderer) { $ret = parent::getTemplateVars($renderer); $ret['product'] = $this->getData()->row; $ret['item'] = $ret['product']->getItem(); $ret['similarProducts'] = array(); if ($ret['item']->SimilarProducts) { foreach ($ret['item']->SimilarProducts as $p) { $p = $ret['product']->getModel()->getRow($p->ASIN); foreach ($p->getChildRows('ProductsToNodes') as $n) { $s = new Kwf_Component_Select(); $s->whereEquals('node_id', $n->node_id); $s->whereGenerator('detail'); if ($this->getData()->parent->parent->countChildComponents($s)) { $ret['similarProducts'][] = $this->getData()->parent->getChildComponent('_' . $p->asin); break; } } } } $ret['nodes'] = array(); $nodes = $ret['product']->getChildRows('ProductsToNodes'); foreach ($nodes as $node) { $s = new Kwf_Component_Select(); $s->whereEquals('node_id', $node->node_id); $s->whereGenerator('detail'); $node = $this->getData()->parent->parent->getChildComponent($s); if ($node) { $ret['nodes'][] = $node; } } return $ret; }
protected function _formatSelectFilename(Kwf_Component_Select $select) { if ($select->hasPart(Kwf_Component_Select::WHERE_FILENAME)) { $filename = $select->getPart(Kwf_Component_Select::WHERE_FILENAME); if ($this->_settings['uniqueFilename']) { $select->whereEquals($this->_settings['filenameColumn'], $filename); } else { if ($this->_hasNumericIds) { $pattern = '#^([0-9]+)-#'; } else { $pattern = '#^([^-]+)-#'; } if (!preg_match($pattern, $filename, $m)) { return null; } $select->whereEquals($this->_idColumn, $m[1]); } } return $select; }
protected function _formatSelectId(Kwf_Component_Select $select) { if ($select->hasPart(Kwf_Model_Select::WHERE_ID)) { $id = $select->getPart(Kwf_Model_Select::WHERE_ID); $separator = substr($id, 0, 1); if (in_array($separator, array('_', '-'))) { $id = substr($id, 1); if ($separator != $this->_idSeparator || $this->_hasNumericIds && !is_numeric($id)) { return null; } $select->whereEquals($this->_idColumn, $id); $select->unsetPart(Kwf_Model_Select::WHERE_ID); } } return $select; }