/**
* @service channel write
*
* @param $fields
* @return Gpf_Rpc_Action
*/
public function saveFields(Gpf_Rpc_Params $params) {
$action = new Gpf_Rpc_Action($params);
$action->setErrorMessage($this->_('Failed to save %s field(s)'));
$action->setInfoMessage($this->_('%s field(s) successfully saved'));
$fields = new Gpf_Data_RecordSet();
$fields->loadFromArray($action->getParam("fields"));
$channels = Pap_Db_Table_Channels::getUserChannels(Gpf_Session::getAuthUser()->getPapUserId());
foreach ($fields as $field) {
$isUnique = true;
foreach ($channels as $channel) {
if ($field->get('value') == $channel->get(Pap_Db_Table_Channels::VALUE)) {
$isUnique = false;
break;
}
}
if ($isUnique) {
$this->saveField($field);
} else {
$action->setErrorMessage($this->_("Failed to save %s field(s). Data with value '".$field->get('value').
"' already exist. Data must be unique."));
$action->addError();
return $action;
}
}
$action->addOk();
return $action;
}