protected function _afterSave() { parent::_afterSave(); if ($this->_action == 'update') { $_where = new ZendT_Db_Where(); $_where->addFilter($this->getModel()->getName() . '.hierarquia', $this->_oldHierarquia, '?%'); $_where->addFilter($this->getModel()->getName() . '.id', $this->getId(), '!='); $_mapper = new Auth_DataView_Conta_MapperView(); $_mapper->findAll($_where, '*'); while ($_mapper->fetch()) { $_mapper->update(); } $idPai = $this->getIdPapelPai(true)->toPhp(); if ($this->_idPaiOld && $this->_idPaiOld != $idPai) { $_relation = new Auth_Model_ContaRel_Mapper(); $_relation->setIdPapel($this->getId())->setIdPapelRel($this->_idPaiOld)->retrieve(); if ($idPai) { $_relation->setIdPapelRel($idPai)->update(); } else { $_relation->delete(); } } } elseif ($this->_action == 'insert') { $_relation = new Auth_Model_ContaRel_Mapper(); $_relation->setIdPapel($this->getId())->setIdPapelRel($this->getId())->setStatus('A')->insert(); if ($this->getIdPapelPai(true)->toPhp()) { $_relation->newRow()->setIdPapel($this->getId())->setIdPapelRel($this->getIdPapelPai())->setStatus('A')->insert(); } } }
public function getWhereSeekerSearch($value, $field = '') { $where = new ZendT_Db_Where('AND'); $result = array(); $result['column'] = ''; $result['operation'] = ''; $result['mapper'] = $this->getMapperName(); if (count($this->_primary) == 1) { if (is_numeric($value)) { $result['column'] = $this->_name . "." . $this->_primary[0]; $result['operation'] = '='; } } if ($field == 'id') { $result['column'] = $this->_name . ".id"; $result['operation'] = '='; } if ($result['column'] == '') { $_usuario = new Auth_DataView_Conta_MapperView(); $where = new ZendT_Db_Where('AND'); $where->addFilter('papel.descricao', $value, '?%', 'Auth_Model_Conta_Mapper'); $data = $_usuario->getDataGrid($where, array()); $row = $data->getRow(); if ($row) { $result['column'] = $this->_name . ".descricao"; $result['operation'] = '?%'; } else { $result['column'] = $this->_name . "." . $this->_search; $result['operation'] = '?%'; } } if ($value) { $where = new ZendT_Db_Where('AND'); $where->addFilter($result['column'], $value, $result['operation'], $result['mapper']); } return $where; }