public function save(Default_Model_AccessTokenNetfilter $value) { global $application; $data = array(); if (!isnull($value->getNetfilter())) { $data['netfilter'] = $value->getNetfilter(); } if (!isnull($value->getTokenID())) { $data['tokenid'] = $value->getTokenID(); } $q1 = array('tokenid = ?', 'netfilter = ?'); $q2 = array($value->tokenid, $value->netfilter); $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); } }
public static function addNetfilter($user, $token, $netfilter) { //Find current user $user = self::getUser($user); if ($user === null) { return "User not found"; } //Find given token $token = self::getAccessToken($token); if ($token === null) { return "Invalid token given"; } //Check if the access token is added by the current user if ($token->addedbyid !== $user->id) { return "Only user " . $user->firstname . " " . $user->lastname . " can modify netfilters for this token"; } //Check if maximum number of netfilters is reached $maxfilters = self::getMaximumAccessTokens(); $currentfilters = $token->getNetfilters(); if (count($currentfilters) >= $maxfilters) { if ($maxfilters == 1) { return "A netfilter already exists for the current access token"; } else { return "Having more than " . $maxfilters . " netfilters per access token is not allowed."; } } //Check validity of netfilter $validfilters = self::validNetFilters(array($netfilter)); if ($validfilters !== true) { return $validfilters; } //Save netfilters try { $nfilter = new Default_Model_AccessTokenNetfilter(); $nfilter->tokenid = $token->id; $nfilter->netfilter = $netfilter; $nfilter->save(); } catch (Exception $ex) { return $ex->getMessage(); } return true; }