/**
  * Validate Db_Row
  *
  * @param Gpf_DbEngine_Row $row
  * @throws Gpf_DbEngine_Row_ConstraintException
  */
 public function validate(Gpf_DbEngine_Row $row)
 {
     $role = new Gpf_Db_Role();
     $role->setId($row->getRoleId());
     $role->load();
     $select = new Gpf_SqlBuilder_SelectBuilder();
     $select->select->add('r.' . Gpf_Db_Table_Roles::TYPE);
     $select->from->add(Gpf_Db_Table_Users::getName(), 'u');
     $select->from->addInnerJoin(Gpf_Db_Table_Roles::getName(), 'r', 'u.' . Gpf_Db_Table_Users::ROLEID . '=r.' . Gpf_Db_Table_Roles::ID);
     $select->where->add('u.' . Gpf_Db_Table_Users::AUTHID, '=', $row->getAuthId());
     $select->where->add('u.' . Gpf_Db_Table_Users::ACCOUNTID, '=', $row->getAccountId());
     $select->where->add('r.' . Gpf_Db_Table_Roles::TYPE, '=', $role->getRoleType());
     $select->where->add('u.' . Gpf_Db_Table_Users::ID, '<>', $row->getPrimaryKeyValue());
     try {
         $select->getOneRow();
     } catch (Gpf_DbEngine_NoRowException $e) {
         return;
     } catch (Gpf_DbEngine_TooManyRowsException $e) {
     }
     throw new Gpf_DbEngine_Row_ConstraintException('username', $this->_('Selected username already exists'));
 }
 public function execute(Gpf_DbEngine_Row $dbRow) {
     $menu = Gpf_Settings::get(Pap_Settings::AFFILIATE_MENU);
     if (strpos($menu, $dbRow->getPrimaryKeyValue()) !== false) {
         throw new Gpf_Exception($this->_("Screen %s is in menu and thus can not be deleted",
                                          $dbRow->get(Pap_Db_Table_AffiliateScreens::TITLE)));
     }
 }
 private function loadRow(Gpf_DbEngine_Row $row, $rowName) {
     try {
         $row->load();
     } catch (Gpf_DbEngine_NoRowException $e) {
         throw new Gpf_Exception($this->_('%s with id %s not exist', $rowName, $row->getPrimaryKeyValue()));
     }
 }