--- /dev/null
+CREATE OR REPLACE FUNCTION unapi.mra ( obj_id BIGINT, format TEXT, ename TEXT, includes TEXT[], org TEXT, depth INT DEFAULT NULL, slimit HSTORE DEFAULT NULL, soffset HSTORE DEFAULT NULL, include_xmlns BOOL DEFAULT TRUE ) RETURNS XML AS $F$
+ SELECT XMLELEMENT(
+ name attributes,
+ XMLATTRIBUTES(
+ CASE WHEN $9 THEN 'http://open-ils.org/spec/indexing/v1' ELSE NULL END AS xmlns,
+ 'tag:open-ils.org:U2@mra/' || mra.id AS id,
+ 'tag:open-ils.org:U2@bre/' || mra.id AS record
+ ),
+ (SELECT XMLAGG(foo.y)
+ FROM (SELECT XMLELEMENT(
+ name field,
+ XMLATTRIBUTES(
+ key AS name,
+ cvm.value AS "coded-value",
+ cvm.id AS "cvmid",
+ rad.filter,
+ rad.sorter
+ ),
+ x.value
+ )
+ FROM EACH(mra.attrs) AS x
+ JOIN config.record_attr_definition rad ON (x.key = rad.name)
+ LEFT JOIN config.coded_value_map cvm ON (cvm.ctype = x.key AND code = x.value)
+ )foo(y)
+ )
+ )
+ FROM metabib.record_attr mra
+ WHERE mra.id = $1;
+$F$ LANGUAGE SQL STABLE;
END;
END;
+ # Get CCVM labels
+ BLOCK get_ccvm_label;
+ IF !ctx.ccvm_cache.$id;
+ fetch_ccvm = ctx.search_ccvm('id', id);
+ IF fetch_ccvm;
+ ctx.ccvm_cache.$id = fetch_ccvm.0;
+ END;
+ END;
+ IF search_label and ctx.ccvm_cache.$id.search_label;
+ ctx.ccvm_cache.$id.search_label;
+ ELSE;
+ ctx.ccvm_cache.$id.value;
+ END;
+ END;
+
# Extract MARC fields from XML
# get_marc_attrs( { marc_xml => doc } )
BLOCK get_marc_attrs;
'//*[local-name()="attributes"]/*[local-name()="field"][@name="' _ icon_style _ '"]');
IF node AND node.textContent;
type = node.textContent;
- args.format_label = node.getAttribute('coded-value')
+ args.format_label = PROCESS get_ccvm_label id=node.getAttribute('cvmid') search_label=1;
+ IF !args.format_label;
+ args.format_label = node.getAttribute('coded-value');
+ END;
args.schema.itemtype = schema_typemap.$type || 'CreativeWork';
args.format_icon = ctx.media_prefix _ '/images/format_icons/' _ icon_style _ '/' _ type _ '.png';
LAST;