__CREATE_QUERY("INSERT INTO co_%s_%s (deleted) VALUES (0)",
par_area, par_class)
__SQL_EXEC
__SQL_GET_INTEGER(new_id, "SELECT last_value FROM co_%s_%s_sqid", par_area, par_class)
puta_classes[0] = (char *) par_class;
puta_ids[0] = new_id;
cou_queueActionX( cnx, par_class, (const char **) puta_classes, puta_ids, CO_OP_CREATE, NULL);
// getting current values
__CREATE_QUERY("SELECT * FROM co_%s_%s WHERE id = %d",
par_area, par_class, new_id)
__SQL_GET_RESULT
puta_classes[0] = (char *) par_class;
puta_ids[0] = new_id;
nFields = cor_GetFieldCount(cnx, corec);
props = ap_palloc(p, 2 * nFields * sizeof(char*) + 1);
for (i = 0; i < nFields; i++)
{
props[2*i] = ap_pstrdup(p, cor_GetFieldName(cnx, corec, i));
props[2*i+1] = ap_pstrdup(p, cor_GetValue(cnx, corec, 0, i));
}
props[2*i]=NULL;
//cou_sendMessage(cnx, "we have props");
__CLEAR_RESULT
cou_queueActionXX( cnx, par_class, (const char **) puta_classes, puta_ids, CO_OP_UPDATE, (const char **) props);
cou_setReturnValue(cnx, &new_id, CO_INTEGER);
//setting ACL for current role
if(!dont_set_acl)
{
id_role = cnx->id_role;
check_security = cnx->check_security;
cnx->check_security = 0;
send_data = cnx->send_data;
cnx->send_data=0;
@co_call(par_area,par_class,"permissionOn", par_area=>par_area,par_class=>par_class,par_id=>new_id, id_permission=>6,id_role=>id_role);
cnx->send_data = send_data;
cnx->check_security = check_security;
}