public function save(Default_Model_VOMS $value) { global $application; $data = array(); if (!isnull($value->getVoID())) { $data['void'] = $value->getVoID(); } if (!isnull($value->getHostname())) { $data['hostname'] = $value->getHostname(); } if (!isnull($value->getHttpsPort())) { $data['https_port'] = $value->getHttpsPort(); } if (!isnull($value->getVomsesPort())) { $data['vomses_port'] = $value->getVomsesPort(); } if (!isnull($value->getIsAdmin())) { $data['is_admin'] = $this->pgBool($value->getIsAdmin()); } if (!isnull($value->getMemberListUrl())) { $data['member_list_url'] = $value->getMemberListUrl(); } $q1 = array('void = ?', 'hostname = ?'); $q2 = array($value->void, $value->hostname); $select = $this->getDbTable()->select(); for ($i = 0; $i < count($q1); $i++) { $select->where($q1[$i], $q2[$i]); } $new_entry = count($this->getDbTable()->fetchAll($select)) == 0; if ($new_entry) { $this->getDbTable()->insert($data); } else { $s = array(); for ($i = 0; $i < count($q1); $i++) { $s[] = $this->getDbTable()->getAdapter()->quoteInto($q1[$i], $q2[$i]); } $this->getDbTable()->update($data, $s); } }