public function getRowsByParentRow(Kwf_Model_Row_Interface $parentRow, $select = array()) { if (!isset($this->_data[$parentRow->getInternalId()])) { $this->_data[$parentRow->getInternalId()] = array(); $fields = $parentRow->getModel()->getDb()->fetchAssoc("SHOW FIELDS FROM {$parentRow->table}"); foreach ($fields as $i) { $this->_data[$parentRow->getInternalId()][] = array('field' => $i['Field'], 'type' => $i['Type'], 'null' => $i['Null'] == 'YES' ? 1 : 0, 'key' => $i['Key'], 'default' => $i['Default'], 'extra' => $i['Extra']); } } if (!is_object($select)) { $select = $this->select($select); } return new $this->_rowsetClass(array('model' => $this, 'dataKeys' => $this->_selectDataKeys($select, $this->_data[$parentRow->getInternalId()]), 'parentRow' => $parentRow)); }
public function getRowsByParentRow(Kwf_Model_Row_Interface $parentRow, $select = array()) { $this->_data[$parentRow->getInternalId()] = array(); $v = $parentRow->{$this->_fieldName}; if ($v) { if (!is_array($v)) { throw new Kwf_Exception("value is not an array but a " . gettype($v)); } //TODO: _data nicht duplizieren, sondern in getRowByDataKey erst machen (performance) $i = 0; foreach (array_keys($v) as $k) { $v[$k]['intern_id'] = ++$i; //TODO ist das eindeutig genug (ist nur eindeutig PRO parentRow) // aber nachdem man hierher eh nur per getRowsByParentRow kommt müsste es passen } $this->_data[$parentRow->getInternalId()] = $v; } else { $this->_data[$parentRow->getInternalId()] = array(); } if (!is_object($select)) { $select = $this->select($select); } return new $this->_rowsetClass(array('model' => $this, 'dataKeys' => $this->_selectDataKeys($select, $this->_data[$parentRow->getInternalId()]), 'parentRow' => $parentRow)); }
public function getRowsByParentRow(Kwf_Model_Row_Interface $parentRow, $select = array()) { if (!is_object($select)) { $select = $this->select($select); } if ($select->getParts()) { throw new Kwf_Exception_NotYetImplemented('Custom select is not yet implemented'); } if (!$parentRow instanceof Kwf_Util_Model_Amazon_Products_Row) { throw new Kwf_Exception('Only possible with amazon product row'); } $pId = $parentRow->getInternalId(); $item = $parentRow->getItem(); $this->_data[$pId] = array(); foreach ($item->BrowseNodes as $n) { $this->_data[$pId][] = array('node_id' => $n); } return new $this->_rowsetClass(array('model' => $this, 'dataKeys' => array_keys($this->_data[$pId]), 'parentRow' => $parentRow)); }
public function getRowsByParentRow(Kwf_Model_Row_Interface $parentRow, $select = array()) { $this->_data[$parentRow->getInternalId()] = array(); $v = $parentRow->{$this->_fieldName}; if (substr($v, 0, 13) == 'kwfSerialized') { $v = substr($v, 13); } $v = unserialize($v); if ($v) { $this->_autoId[$parentRow->getInternalId()] = $v['autoId']; foreach ($v['data'] as $i) { $this->_data[$parentRow->getInternalId()][] = $i; } } else { $this->_autoId[$parentRow->getInternalId()] = 0; } if (!is_object($select)) { $select = $this->select($select); } return new $this->_rowsetClass(array('model' => $this, 'dataKeys' => $this->_selectDataKeys($select, $this->_data[$parentRow->getInternalId()]), 'parentRow' => $parentRow)); }