view release on metacpan or search on metacpan
use Config;
require 'ARS/ar-h.pm';
require 'ARS/arerrno-h.pm';
require 'ARS/nparm.pm';
@ARS::ISA = qw(Exporter DynaLoader);
@ARS::EXPORT = qw(isa_int isa_float isa_string ars_LoadQualifier ars_Login
ars_Logoff ars_GetListField ars_GetFieldByName ars_GetFieldTable
ars_DeleteEntry ars_GetEntry ars_GetListEntry ars_GetListSchema
ars_GetListServer ars_GetActiveLink ars_GetCharMenuItems ars_GetSchema
ars_ExpandCharMenu
ars_GetField ars_simpleMenu ars_GetListActiveLink ars_SetEntry
ars_perl_qualifier ars_qualifier_ptr ars_Export ars_GetListFilter ars_GetListEscalation
ars_GetListCharMenu ars_padEntryid
ars_GetFilter ars_SetFilter
ars_GetListEntryWithFields ars_GetMultipleEntries
ars_GetProfileInfo ars_Import ars_GetCharMenu ars_GetServerStatistics
ars_GetCurrentServer ars_EncodeDiary
ars_CreateEntry ars_MergeEntry ars_DeleteFilter
ars_DeleteMultipleFields ars_DeleteActiveLink
ars_DeleteCharMenu
ars_DeleteEscalation ars_DeleteField ars_DeleteSchema
ars_DeleteVUI ars_ExecuteProcess
ars_GetEscalation ars_GetFullTextInfo
ars_GetListGroup ars_GetListSQL ars_GetListUser ars_GetListRole
ars_GetListVUI
ars_GetServerInfo ars_SetServerInfo
ars_GetEntryBLOB
ars_CreateActiveLink
ars_GetControlStructFields ars_GetVUI
ars_GetListContainer ars_GetContainer ars_DeleteContainer ars_SetServerPort
ars_SetLogging ars_SetSessionConfiguration ars_SetImpersonatedUser
ars_CreateField ars_SetField ars_CreateSchema ars_SetSchema ars_CreateVUI ars_SetVUI
ars_CreateContainer ars_SetContainer ars_CreateCharMenu ars_SetCharMenu
ars_SetActiveLink ars_CreateFilter ars_CreateEscalation ars_SetEscalation
$ars_errstr %ARServerStats %ars_errhash
ars_decodeStatusHistory ars_APIVersion ars_encodeStatusHistory
ars_BeginBulkEntryTransaction ars_EndBulkEntryTransaction
ars_Signal ars_GetTextForErrorMessage ars_DateToJulianDate
ars_GetListLicense ars_ValidateMultipleLicenses
ars_GetServerCharSet ars_GetClientCharSet
ars_GetAlertCount ars_RegisterForAlerts ars_DeregisterForAlerts ars_GetListAlertUser
ars_DecodeAlertMessage ars_CreateAlertEvent ars_VerifyUser
ars_GetListImage ars_GetImage ars_CreateImage ars_SetImage ars_DeleteImage
sub new {
require 'ARS/OOform.pm';
require 'ARS/OOmsgs.pm';
require 'ARS/OOsup.pm';
return newObject( @_ );
}
# ROUTINE
# ars_simpleMenu(menuItems, prepend)
#
# DESCRIPTION
# merges all sub-menus into a single level menu. good for web
# interfaces.
#
# RETURNS
# array of menu items.
sub ars_simpleMenu {
my($m) = shift;
my($prepend) = shift;
my(@m) = @$m;
my(@ret, @submenu);
my($name, $val);
while (($name, $val, @m) = @m) {
if (ref($val)) {
@submenu = ars_simpleMenu($val, $name);
@ret = (@ret, @submenu);
} else {
if ($prepend) {
@ret = (@ret, "$prepend/$name", $val);
} else {
@ret = (@ret, $name, $val);
}
}
}
@ret;
sub dumpHash {
my $h = shift;
foreach (keys %$h) {
print "key: ", $_,"\n";
print "val: ", $h->{$_},"\n";
dumpHash($h->{$_}) if(ref($h->{$_}) eq "HASH");
}
}
# ars_GetCharMenuItems(ctrl, menuName, qualifier)
# qual is optional.
# if it's specified:
# menuType must be "query"
# qualifier must compile against the form that the menu
# is written for.
sub ars_GetCharMenuItems {
my ($ctrl, $menuName, $qual) = (shift, shift, shift);
if(defined($qual)) {
my $menu = ars_GetCharMenu($ctrl, $menuName);
die "ars_GetCharMenuItems failed: $ARS::ars_errstr"
unless defined($menu);
die "ars_GetCharMenuItems failed: qualifier was specified, but menu is not a 'query' menu"
if($menu->{'menuType'} ne "query");
if(ref($qual) ne "ARQualifierStruct") {
$qual = ars_LoadQualifier($ctrl, $menu->{'menuQuery'}{'schema'}, $qual);
}
return ars_ExpandCharMenu2($ctrl, $menuName, $qual);
}
return ars_ExpandCharMenu2($ctrl, $menuName);
}
sub ars_ExpandCharMenu {
return ars_ExpandCharMenu2(@_);
}
# encodes status history from the same format
# as returned by ars_decodeStatusHistory()
sub ars_encodeStatusHistory {
my @sh = ();
while(my $hr = shift) {
push @sh, $hr->{USER} ? "$hr->{TIME}\cD$hr->{USER}" : "";
}
FreeARServerInfoList(&serverInfo, FALSE);
FreeARServerInfoRequestList(&requestList, FALSE);
} else {
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_MALLOC);
}
}
}
HV *
ars_GetCharMenu(ctrl,name)
ARControlStruct * ctrl
char * name
CODE:
{
unsigned int refreshCode = 0;
ARCharMenuStruct menuDefn;
char *helpText = CPNULL;
ARTimestamp timestamp;
ARAccessNameType owner;
ARAccessNameType lastChanged;
char *changeDiary = CPNULL;
ARStatusList status;
int ret = 0, i = 0;
HV *menuDef = newHV();
/* SV *ref; */
ARDiaryList diaryList;
ARPropList objPropList;
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(&objPropList, 1, ARPropList);
Zero(&menuDefn, 1, ARCharMenuStruct);
Zero(×tamp, 1, ARTimestamp);
Zero(owner, 1, ARAccessNameType);
Zero(lastChanged, 1, ARAccessNameType);
Zero(&diaryList, 1, ARDiaryList);
RETVAL = newHV();
sv_2mortal( (SV*) RETVAL );
ret = ARGetCharMenu(ctrl, name, &refreshCode, &menuDefn, &helpText,
×tamp, owner, lastChanged, &changeDiary,
&objPropList,
&status);
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
if(!ARError( ret, status)) {
hv_store(RETVAL, "name", strlen("name") , newSVpv(name, 0), 0);
if(helpText)
hv_store(RETVAL, "helpText", strlen("helpText") , newSVpv(helpText,0), 0);
if (changeDiary) {
ret = ARDecodeDiary(ctrl, changeDiary, &diaryList, &status);
if (!ARError(ret, status)) {
hv_store(RETVAL, "changeDiary", strlen("changeDiary") ,
perl_ARList(ctrl, (ARList *)&diaryList,
(ARS_fn)perl_diary,
sizeof(ARDiaryStruct)), 0);
FreeARDiaryList(&diaryList, FALSE);
}
}
for(i = 0; CharMenuTypeMap[i].number != TYPEMAP_LAST; i++) {
if (CharMenuTypeMap[i].number == menuDefn.menuType)
break;
}
hv_store(RETVAL, "menuType", strlen("menuType") ,
/* PRE-1.68: newSViv(menuDefn.menuType) */
newSVpv( CharMenuTypeMap[i].name, strlen(CharMenuTypeMap[i].name) )
, 0);
hv_store(RETVAL, "refreshCode", strlen("refreshCode") ,
perl_MenuRefreshCode2Str(ctrl, refreshCode), 0);
switch(menuDefn.menuType) {
case AR_CHAR_MENU_LIST:
/* hv_store(menuDef, "charMenuList", strlen("charMenuList") ,
perl_ARCharMenuList(ctrl,&(menuDefn.u.menuList)), 0 );
hv_store(RETVAL, "menuList", strlen("menuList") ,
newRV_noinc((SV *)menuDef), 0); */
hv_store(RETVAL, "menuList", strlen("menuList") ,
perl_ARCharMenuList(ctrl,&(menuDefn.u.menuList)), 0);
break;
case AR_CHAR_MENU_QUERY:
hv_store(menuDef, "schema", strlen("schema") ,
newSVpv(menuDefn.u.menuQuery.schema, 0), 0);
hv_store(menuDef, "server", strlen("server") ,
newSVpv(menuDefn.u.menuQuery.server, 0), 0);
#if AR_EXPORT_VERSION >= 6
{
int lfn = 0;
AV *a = newAV();
newSVpv(menuDefn.u.menuDD.u.fieldDefn.schema, 0), 0);
break;
}
hv_store(RETVAL, "menuDD", strlen("menuDD") ,
newRV_noinc((SV *)menuDef), 0);
break;
# endif
#endif
}
FreeARPropList(&objPropList, FALSE);
FreeARCharMenuStruct(&menuDefn, FALSE);
if (helpText) {
AP_FREE(helpText);
}
if (changeDiary) {
AP_FREE(changeDiary);
}
}else{
XSRETURN_UNDEF;
}
}
OUTPUT:
RETVAL
SV *
ars_ExpandCharMenu2(ctrl,name,qual=NULL)
ARControlStruct * ctrl
char * name
ARQualifierStruct * qual
CODE:
{
ARCharMenuStruct menuDefn;
ARStatusList status;
int ret;
RETVAL = &PL_sv_undef;
(void) ARError_reset();
Zero(&menuDefn, 1, ARCharMenuStruct);
Zero(&status, 1,ARStatusList);
DBG( ("-> ARGetCharMenu\n") );
ret = ARGetCharMenu(ctrl, name, NULL, &menuDefn,
NULL, NULL, NULL, NULL, NULL,
#if AR_EXPORT_VERSION >= 5
NULL,
#endif
&status);
DBG( ("<- ARGetCharMenu\n") );
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
if (! ARError(ret, status)) {
DBG( ("-> perl_expandARCharMenuStruct\n") );
RETVAL = perl_expandARCharMenuStruct(ctrl,
&menuDefn);
DBG( ("<- perl_expandARCharMenuStruct\n") );
FreeARCharMenuStruct(&menuDefn, FALSE);
DBG( ("after Free\n") );
}
}
OUTPUT:
RETVAL
HV *
ars_GetSchema(ctrl,name)
ARControlStruct * ctrl
char * name
((ars_ctrl *)control)->queries++;
#endif
if (!ARError( ret,status)) {
for (i=0; i<nameList.numItems; i++)
XPUSHs(sv_2mortal(newSVpv(nameList.nameList[i], 0)));
FreeARNameList(&nameList,FALSE);
}
}
void
ars_GetListCharMenu(control,changedsince=0)
ARControlStruct * control
unsigned long changedsince
PPCODE:
{
ARNameList nameList;
ARStatusList status;
#if AR_EXPORT_VERSION >= 8L
ARPropList propList;
#endif
ARNameList schemaNameList;
unsigned int i = 0;
(void) ARError_reset();
#if AR_EXPORT_VERSION >= 8L
Zero(&propList, 1, ARPropList);
#endif
Zero(&status, 1, ARStatusList);
Zero(&schemaNameList, 1, ARNameList);
Zero(&actLinkNameList, 1, ARNameList);
Zero(&nameList, 1, ARNameList);
ret = ARGetListCharMenu(control,changedsince,
#if AR_EXPORT_VERSION >= 8L
&schemaNameList, &actLinkNameList, &propList,
#endif
&nameList,&status);
#ifdef PROFILE
((ars_ctrl *)control)->queries++;
#endif
if (!ARError( ret,status)) {
for (i=0; i<nameList.numItems; i++)
}
#else /* 2.x */
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED, "DeleteVUI() is only available in ARS3.x");
#endif
}
OUTPUT:
RETVAL
int
ars_DeleteCharMenu(ctrl, name)
ARControlStruct * ctrl
char * name
CODE:
{
char *objectModificationLogLabel = NULL;
ARStatusList status;
int ret = 0;
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
RETVAL = 0;
if(ctrl && name && *name) {
ret = ARDeleteCharMenu(ctrl, name,
#if AR_EXPORT_VERSION >= 8L
0,
#endif
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status);
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
RETVAL = newHV();
#endif
}
OUTPUT:
RETVAL
int
ars_CreateCharMenu( ctrl, menuDefRef, removeFlag=TRUE )
ARControlStruct * ctrl
SV * menuDefRef
ARBoolean removeFlag;
CODE:
{
#if AR_EXPORT_VERSION >= 6L
ARNameType name;
int ret = 0, rv = 0;
unsigned int refreshCode;
char *refreshCodeStr = NULL;
char *menuTypeStr = NULL;
ARCharMenuStruct arMenuDef;
char *helpText = NULL;
ARAccessNameType owner;
char *changeDiary = NULL;
ARPropList objPropList;
char *objectModificationLogLabel = NULL;
ARStatusList status;
HV *menuDef = NULL;
SV **pSvTemp;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(&arMenuDef, 1,ARCharMenuStruct);
Zero(owner, 1,ARAccessNameType);
Zero(&objPropList, 1,ARPropList);
Zero(&status, 1,ARStatusList);
if( SvROK(menuDefRef) && SvTYPE(SvRV(menuDefRef)) == SVt_PVHV ){
menuDef = (HV*) SvRV(menuDefRef);
}else{
croak("usage: ars_CreateCharMenu(...)");
}
rv += strcpyHVal( menuDef, "name", name, AR_MAX_NAME_SIZE );
/* rv += uintcpyHVal( menuDef, "refreshCode", &type ); */
rv += strmakHVal( menuDef, "refreshCode", &refreshCodeStr );
refreshCode = revTypeName( (TypeMapStruct*)CharMenuRefreshCodeTypeMap, refreshCodeStr );
if( refreshCode == TYPEMAP_LAST ){
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"ars_CreateCharMenu: refreshCode key invalid. key follows:");
ARError_add(AR_RETURN_WARNING, AP_ERR_CONTINUE,
refreshCodeStr ? refreshCodeStr : "[key null]" );
}
if( refreshCodeStr != NULL ){ AP_FREE(refreshCodeStr); }
rv += strmakHVal( menuDef, "menuType", &menuTypeStr );
arMenuDef.menuType = revTypeName( (TypeMapStruct*)CharMenuTypeMap, menuTypeStr );
if( arMenuDef.menuType == TYPEMAP_LAST ){
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"ars_CreateCharMenu: menuType key invalid. key follows:");
ARError_add(AR_RETURN_WARNING, AP_ERR_CONTINUE,
menuTypeStr ? menuTypeStr : "[key null]" );
}
if( menuTypeStr != NULL ){ AP_FREE(menuTypeStr); }
switch( arMenuDef.menuType ){
case AR_CHAR_MENU_LIST:
pSvTemp = hv_fetch( menuDef, "menuList", strlen("menuList") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuList( ctrl, menuDef, "menuList", &(arMenuDef.u.menuList) );
}
break;
case AR_CHAR_MENU_QUERY:
pSvTemp = hv_fetch( menuDef, "menuQuery", strlen("menuQuery") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuQueryStruct( ctrl, menuDef, "menuQuery", &(arMenuDef.u.menuQuery) );
}
break;
case AR_CHAR_MENU_FILE:
pSvTemp = hv_fetch( menuDef, "menuFile", strlen("menuFile") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuFileStruct( ctrl, menuDef, "menuFile", &(arMenuDef.u.menuFile) );
}
break;
case AR_CHAR_MENU_SQL:
pSvTemp = hv_fetch( menuDef, "menuSQL", strlen("menuSQL") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuSQLStruct( ctrl, menuDef, "menuSQL", &(arMenuDef.u.menuSQL) );
}
break;
case AR_CHAR_MENU_SS:
pSvTemp = hv_fetch( menuDef, "menuSS", strlen("menuSS") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuSSStruct( ctrl, menuDef, "menuSS", &(arMenuDef.u.menuSS) );
}
break;
case AR_CHAR_MENU_DATA_DICTIONARY:
pSvTemp = hv_fetch( menuDef, "menuDD", strlen("menuDD") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuDDStruct( ctrl, menuDef, "menuDD", &(arMenuDef.u.menuDD) );
}
break;
}
objPropList.numItems = 0;
objPropList.props = NULL;
pSvTemp = hv_fetch( menuDef, "objPropList", strlen("objPropList") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARPropList( ctrl, menuDef, "objPropList", &objPropList );
}
rv += strmakHVal( menuDef, "helpText", &helpText );
}
if( hv_exists(menuDef,"owner",5) ){
rv += strcpyHVal( menuDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
}
if( hv_exists(menuDef,"changeDiary",11) ){
rv += strmakHVal( menuDef, "changeDiary", &changeDiary );
}
if( rv == 0 ){
ret = ARCreateCharMenu( ctrl,
name,
refreshCode,
&arMenuDef,
helpText,
owner,
changeDiary,
&objPropList,
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : 1;
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
RETVAL = 0;
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
FreeARCharMenuStruct( &arMenuDef, FALSE );
FreeARPropList( &objPropList, FALSE );
#else /* < 5.0 */
XPUSHs(sv_2mortal(newSViv(0))); /* ERR */
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED,
"ARSperl supports CreateCharMenu() only for ARSystem >= 5.0");
RETVAL = AR_RETURN_ERROR;
#endif
}
OUTPUT:
RETVAL
int
ars_SetCharMenu( ctrl, name, menuDefRef, removeFlag=TRUE )
ARControlStruct * ctrl
ARNameType name
SV * menuDefRef
ARBoolean removeFlag;
CODE:
{
#if AR_EXPORT_VERSION >= 6L
int ret = 0, rv = 0;
ARNameType newName;
char *newNamePtr = NULL;
unsigned int refreshCode;
unsigned int *refreshCodePtr = NULL;
char *refreshCodeStr = NULL;
char *menuTypeStr = NULL;
ARCharMenuStruct *arMenuDef = NULL;
char *helpText = NULL;
ARAccessNameType owner;
char *changeDiary = NULL;
ARPropList *objPropList = NULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
HV *menuDef = NULL;
SV **pSvTemp;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(owner, 1,ARAccessNameType);
Zero(&status, 1,ARStatusList);
if( SvROK(menuDefRef) && SvTYPE(SvRV(menuDefRef)) == SVt_PVHV ){
menuDef = (HV*) SvRV(menuDefRef);
}else{
croak("usage: ars_SetCharMenu(...)");
}
if( hv_exists(menuDef,"name",4) ){
rv += strcpyHVal( menuDef, "name", newName, AR_MAX_NAME_SIZE );
newNamePtr = newName;
}
if( hv_exists(menuDef,"refreshCode",4) ){
/* rv += uintcpyHVal( menuDef, "refreshCode", &refreshCode ); */
rv += strmakHVal( menuDef, "refreshCode", &refreshCodeStr );
refreshCode = revTypeName( (TypeMapStruct*)CharMenuRefreshCodeTypeMap, refreshCodeStr );
if( refreshCode == TYPEMAP_LAST ){
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"ars_CreateCharMenu: refreshCode key invalid. key follows:");
ARError_add(AR_RETURN_WARNING, AP_ERR_CONTINUE,
refreshCodeStr ? refreshCodeStr : "[key null]" );
}
if( refreshCodeStr != NULL ){ AP_FREE(refreshCodeStr); }
refreshCodePtr = &refreshCode;
}
if( hv_exists(menuDef,"menuType",4) ){
/* rv += uintcpyHVal( menuDef, "menuType", &menuType ); */
arMenuDef = (ARCharMenuStruct*) MALLOCNN( sizeof(ARCharMenuStruct) );
rv += strmakHVal( menuDef, "menuType", &menuTypeStr );
arMenuDef->menuType = revTypeName( (TypeMapStruct*)CharMenuTypeMap, menuTypeStr );
if( arMenuDef->menuType == TYPEMAP_LAST ){
ARError_add(AR_RETURN_ERROR, AP_ERR_GENERAL,
"ars_CreateCharMenu: menuType key invalid. key follows:");
ARError_add(AR_RETURN_WARNING, AP_ERR_CONTINUE,
menuTypeStr ? menuTypeStr : "[key null]" );
}
if( menuTypeStr != NULL ){ AP_FREE(menuTypeStr); }
switch( arMenuDef->menuType ){
case AR_CHAR_MENU_LIST:
pSvTemp = hv_fetch( menuDef, "menuList", strlen("menuList") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuList( ctrl, menuDef, "menuList", &(arMenuDef->u.menuList) );
}
break;
case AR_CHAR_MENU_QUERY:
pSvTemp = hv_fetch( menuDef, "menuQuery", strlen("menuQuery") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuQueryStruct( ctrl, menuDef, "menuQuery", &(arMenuDef->u.menuQuery) );
}
break;
case AR_CHAR_MENU_FILE:
pSvTemp = hv_fetch( menuDef, "menuFile", strlen("menuFile") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuFileStruct( ctrl, menuDef, "menuFile", &(arMenuDef->u.menuFile) );
}
break;
case AR_CHAR_MENU_SQL:
pSvTemp = hv_fetch( menuDef, "menuSQL", strlen("menuSQL") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuSQLStruct( ctrl, menuDef, "menuSQL", &(arMenuDef->u.menuSQL) );
}
break;
case AR_CHAR_MENU_SS:
pSvTemp = hv_fetch( menuDef, "menuSS", strlen("menuSS") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuSSStruct( ctrl, menuDef, "menuSS", &(arMenuDef->u.menuSS) );
}
break;
case AR_CHAR_MENU_DATA_DICTIONARY:
pSvTemp = hv_fetch( menuDef, "menuDD", strlen("menuDD") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARCharMenuDDStruct( ctrl, menuDef, "menuDD", &(arMenuDef->u.menuDD) );
}
break;
}
}
pSvTemp = hv_fetch( menuDef, "objPropList", strlen("objPropList") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
objPropList = (ARPropList*) MALLOCNN( sizeof(ARPropList) );
rv += rev_ARPropList( ctrl, menuDef, "objPropList", objPropList );
}
rv += strmakHVal( menuDef, "helpText", &helpText );
}
if( hv_exists(menuDef,"owner",5) ){
rv += strcpyHVal( menuDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
}
if( hv_exists(menuDef,"changeDiary",11) ){
rv += strmakHVal( menuDef, "changeDiary", &changeDiary );
}
if( rv == 0 ){
ret = ARSetCharMenu( ctrl,
name,
newNamePtr,
refreshCodePtr,
arMenuDef,
helpText,
owner,
changeDiary,
objPropList,
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : 1;
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
RETVAL = 0;
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
if( arMenuDef != NULL ){
FreeARCharMenuStruct( arMenuDef, TRUE );
}
if( objPropList != NULL ){
FreeARPropList( objPropList, TRUE );
}
#else /* < 5.0 */
XPUSHs(sv_2mortal(newSViv(0))); /* ERR */
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED,
"ARSperl supports SetCharMenu() only for ARSystem >= 5.0");
RETVAL = AR_RETURN_ERROR;
#endif
}
OUTPUT:
RETVAL
#define STR_TEMP_SIZE 30
int
(TS) fixed rev_ARArchiveInfo Struct, moved function from supportrev_generated.c to supportrev.c
(TS) changed $ARS_LIBS variable for 7.0 Unix API in Makefile.pl (-licuuc -> -licuucbmc)
Released: 03/12/2007 Version: 1.90
(TS) added missing ARError_reset() to ars_GetListVUI
(TS) added ars_CreateCharMenu, ars_SetCharMenu
(TS) added handling of case AR_CHAR_MENU_LIST in ars_GetCharMenu
(TS) changed handling of qualifier struct in ars_GetCharMenu, case AR_CHAR_MENU_QUERY
(TS) corrected function signature for ars_SetField, ars_CreateContainer
(TS) bugfix in ars_GetCharMenu (incorrect array length for "labelFields", "labelIndex")
(TS) added ars_SetImpersonatedUser
(TS) bugfix in ARError (support.c, memory violation if appendedText == NULL)
(TS) ars_SetLogging: changed declaration "int len" to "STRLEN len" because of
compilation problems on Solaris
(TS) added ars_BeginBulkEntryTransaction, ars_EndBulkEntryTransaction
(JCM) memory leak fixed in ars_Export
(JCM) memory leak fixed in ars_GetListEntry wrt to join forms
(JCM) memory leak fixed in QualifierStructPtr destructor
(JCM) memory leak fixed in ControlStruct destructor
(JCM) various other memory related cleanups
(JCM) bad/NULL ref fixed in ExpandCharMenu
(JCM) added new params to ars_Login: lang, authString, tcpport, rpcnumber
(JCM) added new rv's to ars_GetControlStructFields: lang, authString
(JCM) updated example and test scripts
(JCM) added Alert functions (replaces NT/Notifier functions)
(JCM) ! 5.x (5.0.1, 5.1, 5.1.1) integration
ars_NT*() [notifier functions]
functions whose parameters have changed:
ars_GetListEntry()
ars_GetListEntryWithFields()
functions whose return values have changed:
ars_GetCharMenu()
Released: 11/13/2002 Version: 1.74
(GDF) added ars_GetMultipleEntries, ars_GetListEntryWithFields
(GDF) remove unused num_entries parameter from ARGetListEntry
use them _if you compile against 4.5 or later libraries_
ars_GetActiveLink
ars_GetFilter
ars_GetEscalation
ars_CreateActiveLink
see the documentation on the return values of these functions
for details on what has changed.
(JCM) ! changed ars_GetCharMenu so that {'menuType'} is returned
as a string (decoded) instead of an integer.
(JCM) ! added a parameter to ars_Import which will require that existing
scripts be updated. see documentation for details.
(JCM) added patch submitted by Geoff Endresen which enabled decoding
of push fields actions in GetFilter()
(JCM) enhanced Makefile.PL to be more intelligent when h2ph fails or
doesnt exist
(JCM) fixed bug in macroParm decoding. {D.J.Adams at soton.ac.uk}
(JCM) fixed bug when decoding results of GetFilter/GetActiveLink
in regards to set fields actions: values assigned to
diary fields were not being interpretted correctly.
{D.J.Adams at soton.ac.uk}
(JCM) patched perl_BuildEntryIdList to make it more robust
(Ulrich Pfeifer {pfeifer at wait.de})
(JCM) patched ars_GetCharMenu for bug "GetCharMenu doesn't
return a qualifier for query menus" {D.J.Adams at soton.ac.uk}
(JCM) fixed dup_FieldValueOrArith to support decoding of
query style menus.
Released: 02/09/98 Version: 1.54
(JCM) fixed bug in ars_EncodeDiary()
(JCM) fixed some minor errors in doc
Released: 11/19/97 Version: 1.5206
(JCM) added ars_GetVUI to the ARS.pm exports line.
(JCM) added refreshCode to GetCharMenu hash
(JCM) fixed bug in groupList value change in 1.5205
Released: 11/04/97 Version: 1.5205
(JCM) updated the groupList value returned by GetSchema()
so that it contains the correct key words.
Released: 10/06/97 Version: 1.50
(JCM) removed ars_errstr from C code. replaced with ars_errhash.
modified ARS.pm to refer to hash when $ars_errstr is
accessed. $ars_errstr no longer tie'd to main:: package.
(JCM) bug fix (Sid Van den Heede) "affecting getting of
displayInstanceList"
(JCM) bug fix (James LewisMoss) for ars_GetCharMenu()
(JCM) bug fix (Ian Flanigan) for perl_ARIndexStruct()
(JCM) modified GetListEntry(), GetEntry(), SetEntry() and
DeleteEntry() to make operations on join schemas
transparent.
(JCM) added a ARVerifyUser call to ars_Login so that
ars_Login() || die() will work as one would expect it to.
Released: 02/10/97 Version: 1.32beta
(JWM) 3.0 integration
Released: 11/11/96 Version: 1.31
(JCM) minor stuff: added an ifndef in the GetCharMenu routine
for ars 2.0 users. 2.0 doesnt support SQL menu constructions.
Released: 11/11/96 Version: 1.3
(JWM) undef works in setEntry now.
(JWM) added ars_Import to complement ars_Export
(JCM) Profiling code added to keep track of number of
queries made.
(JWM) Field caching code added to make some of the functions
more efficient.
(JCM) New functions: ars_GetFilter(), ars_GetCharMenu(),
ars_GetServerStatistics
(JWM) Internal GetField call now caches results to minimize
number of queries made.
(JCM) Examples of new functions.
(JCM) "WhoUsesIt.pl" utility
html/WhoUsesIt.html
html/DelUsersFromGroup.html
html/index.html
html/AddUsersToGroup.html
html/copying.html
html/arsperl-logo.gif
html/install.html
html/manual/ds_getvui_hash.html
html/manual/ars_encodeStatusHistory.html
html/manual/ars_GetListCharMenu.html
html/manual/ds_charmenu_file_hash.html
html/manual/OO/index.html
html/manual/OO/form.html
html/manual/OO/connection.html
html/manual/skel.html
html/manual/ars_SetImpersonatedUser.html
html/manual/ars_GetControlStructFields.html
html/manual/ds_al.html
html/manual/ars_GetListEscalation.html
html/manual/ars_MergeEntry.html
html/manual/ars_CreateFilter.html
html/manual/ds_ars_err_hash.html
html/manual/ds_getfilter_hash.html
html/manual/ars_GetFieldByName.html
html/manual/ars_GetContainer.html
html/manual/ars_DeleteImage.html
html/manual/ars_GetServerCharSet.html
html/manual/ars_GetListGroup.html
html/manual/ars_CreateCharMenu.html
html/manual/ars_DecodeAlertMessage.html
html/manual/ds_enumitemstruct.html
html/manual/ars_GetCharMenu.html
html/manual/ars_GetEntry.html
html/manual/ds_schematype.html
html/manual/ars_simpleMenu.html
html/manual/ars_CreateSchema.html
html/manual/ars_SetServerInfo.html
html/manual/ars_GetServerInfo.html
html/manual/ds_getcharmenu_hash.html
html/manual/ds_charmenu_sql_hash.html
html/manual/ars_CreateEntry.html
html/manual/ds_bytelist_hash.html
html/manual/ars_GetMultipleEntries.html
html/manual/ars_ExecuteProcess.html
html/manual/ds_msgstruct_hash.html
html/manual/ars_SetEscalation.html
html/manual/AR_HOUR.html
html/manual/ars_GetListServer.html
html/manual/ars_GetField.html
html/manual/ds_mps.html
html/manual/ars_Export.html
html/manual/ds_charmenu_query_hash.html
html/manual/ars_DeleteActiveLink.html
html/manual/ars_DeleteVUI.html
html/manual/ars_GetEntryBLOB.html
html/manual/ars_SetCharMenu.html
html/manual/ds_vs.html
html/manual/ars_SetSchema.html
html/manual/ars_DeleteContainer.html
html/manual/ds_ds.html
html/manual/ds_enumquerystruct.html
html/manual/ars_SetEntry.html
html/manual/ars_GetFieldTable.html
html/manual/ds_getescalation_hash.html
html/manual/ars_CreateActiveLink.html
html/manual/ars_SetField.html
html/manual/ars_SetSessionConfiguration.html
html/manual/ars_perl_qualifier.html
html/manual/ds_elfs.html
html/manual/ars_APIVersion.html
html/manual/ds_container_info.html
html/manual/ars_CreateContainer.html
html/manual/ars_GetFilter.html
html/manual/ds_is.html
html/manual/ds_field_hash.html
html/manual/variables.html
html/manual/ars_GetCharMenuItems.html
html/manual/ds_diaryentry_hash.html
html/manual/ds_getlistcontainer_hash.html
html/manual/ars_Logoff.html
html/manual/ds_fls.html
html/manual/ars_GetServerStatistics.html
html/manual/ars_CreateEscalation.html
html/manual/ars_GetEscalation.html
html/manual/ars_EncodeDiary.html
html/manual/ds_fncas.html
html/manual/ars_EndBulkEntryTransaction.html
html/manual/ars_Login.html
html/manual/ds_alms.html
html/manual/ars_GetImage.html
html/manual/ds_as.html
html/manual/ars_GetListFilter.html
html/manual/ars_GetClientCharSet.html
html/manual/ars_GetListActiveLink.html
html/manual/ars_GetListUser.html
html/manual/ds_prop_hash.html
html/manual/ars_decodeStatusHistory.html
html/manual/ars_DeleteCharMenu.html
html/manual/ars_Import.html
html/manual/ars_RegisterForAlerts.html
html/changes.html
html/debug.html
html/DumpSetup.html
Makefile
t/33setcontainer.t
t/40createcharmenu.t
t/01import.t
t/20merge.t
infra/c4asp.bat
Artistic
example/ars_GetServerInfo.pl
example/ars_QualDecode.pl
example/ars_MergeEntry.pl
example/ars_ExecuteProcess.pl
example/Dump_Users_OO.pl
example/Dump_Users.pl
example/DelUsersFromGroup.pl
example/getCharSets.pl
example/GetCharMenu.pl
example/ars_CopyActiveLink.pl
example/ars_GetEntryBLOB.pl
example/ars_GetListEntry.pl
example/getAttachment-OO.pl
example/00-ReadMe
example/ars_GetListContainer.pl
example/Show_ALink.pl
example/ars_GetListEntryWithMultiSchemaFields.pl
example/GetFilter.pl
example/Show_Menu.pl
example/Dump_Setup.pl
example/ars_GetListGroup.pl
example/attachTest.pl
example/ars_GetControlStructFields.pl
example/ars_decodeStatusHistory.pl
example/ars_GetListSQL.pl
example/ars_DateToJulianDate.pl
example/ars_SetServerInfo.pl
example/AddUsersToGroup.pl
example/WhoUsesIt.pl
Function What's Changed
--------------------------------------------------------------
ars_GetListEntry additional required parameter
ars_GetListEntryWithFields additional required parameter
The following functions have altered return values.
Function What's Changed
--------------------------------------------------------------
ars_GetCharMenu for query menus, the
labelField is no longer
a scalar. it's now an
array ref.
1.68 Notes
----------
The 1.68 release includes ARS 4.5 integration. When compiling against ARS
4.5 APIs, the following data structures will change which _might_ break
be updated. See the documentation on this function for details.
When compiling against an API revision prior to ARS4.5, the hashes returned
by the above functions include a "schema" key which denotes which schema
the object is "attached" to. As of 4.5, it is possible to attach an object
to multiple schemas. The hash key has changed from a scalar (string) to an
array of (one or more) scalars and the name of the key has changed to
"schemaList".
On an unrelated note, the ars_GetCharMenu() call now decodes the "menuType"
hash key. Previously it was returned as a number (a raw enumeration value)
and you had to figure out on your own what that number meant. Now we decode
it so you get a string telling you what sort of menu it is. This change was
made to bring this function inline with how the other ARSperl functions
operate. Again, you might need to update some of your scripts. This change
is true regardless of what revision of the ARS API you compile against.
1.62 Notes
----------
the number of queries your script makes against the server. You
can then access this information using the ars_GetProfileInfo() call.
We send this information to syslog() automatically at the end of
each script and then process the syslog file later on to keep stats
on our API scripts. In this fashion, we can quickly determine which
scripts are triggered the most, and which make the most queries. We
can then concentrate out optimization efforts on those particular
API scripts.
In addition, a few new functions were added (GetFilter, GetCharMenu and
GetServerStatistics, ars_Export). The first two are used by the WhoUsesIt.pl
utility. This utility (found in the "examples" directory) is handy for
locating which filter or menu is referencing a particular file, or
seeing exactly what filters a particular schema uses.. etc. This
cuts down the amount of time it takes to figure out a poorly documented
system (what? poor documentation? not us!! :)
The GetServerStatistics function was added to provide a simpler method
for checking server health. I might provide a server analysis tool
built around this function in a future release.
StructDef.pl view on Meta::CPAN
},
match => {
_type => 'unsigned int',
_data => 'p->qbeMatchOperation',
_map => {
AR_QBE_MATCH_ANYWHERE => 'anywhere',
AR_QBE_MATCH_LEADING => 'leading',
AR_QBE_MATCH_EQUAL => 'equal',
},
},
charMenu => {
_type => 'ARNameType',
_data => 'p->charMenu',
},
pattern => {
_type => 'char*',
_data => 'p->pattern',
},
fullTextOptions => {
_type => 'unsigned int',
_data => 'p->fullTextOptions',
_map => {
AR_FULLTEXT_OPTIONS_NONE => 'none',
StructDef.pl view on Meta::CPAN
_data => 'p->status',
},
},
ARStatusList => {
_num => 'p->numItems',
_list => 'p->statusList',
_type => 'ARStatusStruct',
},
ARCharMenuList => {
_num => 'p->numItems',
_list => 'p->charMenuList',
_type => 'ARCharMenuItemStruct',
},
ARCharMenuQueryStruct => {
schema => {
_type => 'ARNameType',
_data => 'p->schema',
},
server => {
_type => 'char[AR_MAX_SERVER_SIZE+1]',
_data => 'p->server',
},
labelField => {
_type => 'ARInternalId[AR_MAX_LEVELS_DYNAMIC_MENU]',
StructDef.pl view on Meta::CPAN
},
sortOnLabel => {
_type => 'ARBoolean',
_data => 'p->sortOnLabel',
},
qualifier => {
_type => 'ARQualifierStruct',
_data => 'p->qualifier',
},
},
ARCharMenuFileStruct => {
fileLocation => {
_type => 'unsigned int',
_data => 'p->fileLocation',
},
filename => {
_type => 'char *',
_data => 'p->filename',
},
},
ARCharMenuSQLStruct => {
server => {
_type => 'char[AR_MAX_SERVER_SIZE+1]',
_data => 'p->server',
},
labelIndex => {
_type => 'int[AR_MAX_LEVELS_DYNAMIC_MENU]',
_data => 'p->labelIndex',
},
valueIndex => {
_type => 'int',
_data => 'p->valueIndex',
},
sqlCommand => {
_type => 'char *',
_data => 'p->sqlCommand',
},
},
ARCharMenuSSStruct => {
menuName => {
_type => 'ARNameType',
_data => 'p->menuName',
},
keywordList => {
_type => 'ARFieldValueList',
_data => 'p->keywordList',
},
parameterList => {
_type => 'ARFieldValueList',
StructDef.pl view on Meta::CPAN
},
server => {
_type => 'char *',
_data => 'p->server',
},
schema => {
_type => 'char *',
_data => 'p->schema',
},
},
ARCharMenuDDStruct => {
server => {
_type => 'char[AR_MAX_SERVER_SIZE+1]',
_data => 'p->server',
},
nameType => {
_type => 'unsigned int',
_data => 'p->nameType',
},
valueFormat => {
_type => 'unsigned int',
_data => 'p->valueFormat',
},
structType => {
_type => 'unsigned int',
_data => 'p->structType',
},
_switch => 'p->structType',
_map => 'structType',
_case => {
AR_CHAR_MENU_DD_FORM => {
_type => 'ARCharMenuDDFormStruct',
_data => 'p->u.formDefn',
},
AR_CHAR_MENU_DD_FIELD => {
_type => 'ARCharMenuDDFieldStruct',
_data => 'p->u.fieldDefn',
},
},
},
ARCharMenuDDFormStruct => {
schemaType => {
_type => 'unsigned int',
_data => 'p->schemaType',
},
includeHidden => {
_type => 'ARBoolean',
_data => 'p->includeHidden',
_map => {
FALSE => 'false',
TRUE => 'true',
},
},
},
ARCharMenuDDFieldStruct => {
fieldType => {
_type => 'unsigned int',
_data => 'p->fieldType',
},
schema => {
_type => 'ARNameType',
_data => 'p->schema',
},
},
ARQualifierList => {
StructDef.pl view on Meta::CPAN
#
# query => {
# _type => 'ARQualifierStruct',
# _data => 'p->query',
# },
# archiveFrom => {
# _type => 'ARNameType',
# _data => 'p->archiveFrom',
# },
#},
#ARCharMenuItemStruct => {
# menuLabel => {
# _type => 'ARNameType',
# _data => 'p->menuLabel',
# },
# _switch => 'p->menuType',
# _map => {
# AR_MENU_TYPE_VALUE => 'menuValue',
# AR_MENU_TYPE_MENU => 'childMenu',
# },
# _case => {
# AR_MENU_TYPE_VALUE => {
# menuValue => {
# _type => 'char *',
# _data => 'p->u.menuValue',
# },
# },
# AR_MENU_TYPE_MENU => {
# childMenu => {
## _type => 'ARCharMenuStruct*',
## _data => 'p->u.childMenu',
# _type => 'ARCharMenuList',
# _data => 'p->u.childMenu->u.menuList',
# },
# },
# },
#},
#ARCharMenuStruct => {
# _switch => 'p->menuType',
# _map => 'CharMenuTypeMap',
# _case => {
# AR_CHAR_MENU_LIST => {
# _type => 'ARCharMenuList',
# _data => 'p->u.menuList',
# },
# AR_CHAR_MENU_QUERY => {
# _type => 'ARCharMenuQueryStruct',
# _data => 'p->u.menuQuery',
# },
# AR_CHAR_MENU_FILE => {
# _type => 'ARCharMenuFileStruct',
# _data => 'p->u.menuFile',
# },
# AR_CHAR_MENU_SQL => {
# _type => 'ARCharMenuSQLStruct',
# _data => 'p->u.menuSQL',
# },
# AR_CHAR_MENU_SS => {
# _type => 'ARCharMenuSSStruct',
# _data => 'p->u.menuSS',
# },
# AR_CHAR_MENU_DATA_DICTIONARY => {
# _type => 'ARCharMenuDDStruct',
# _data => 'p->u.menuDD',
# },
# },
#},
#ARInternalIdList => {
# _num => 'p->numItems',
# _list => 'p->internalIdList',
# _type => 'ARInternalId',
Container Calls
-----------------------------------------------
o active link decoding
decode DDE
-----------------------------------------------
o implement remaining functions:
ars_GetListContainer
ARCreateCharMenu
ARCreateEscalation
ARCreateField
ARCreateFilter
ARCreateSchema
ARCreateVUI
ARGetEntryStatistics
ARSetActiveLink
ARSetAdminExtension
ARSetCharMenu
ARSetEscalation
ARSetField
ARSetFilter
ARSetFullTextInfo
ARSetSchema
ARSetServerInfo
ARSetVUI
-----------------------------------------------
o clean up verbose warning output (mostly
changes.dat view on Meta::CPAN
TS corrected function signature for ars_SetVUI, ars_CreateSchema
TS fixed memory leak in sv_to_ARValue (support.c)
TS fixed memory leak in ars_GetMultipleEntries, ars_GetListEntryWithFields
XPUSHs(newRV_noinc(...)) -> XPUSHs(sv_2mortal(newRV_noinc(...)))
TS added "name" value to schemaHash returned by ars_GetSchema
TS fixed rev_ARArchiveInfo Struct, moved function from supportrev_generated.c to supportrev.c
TS changed $ARS_LIBS variable for 7.0 Unix API in Makefile.pl (-licuuc -> -licuucbmc)
released=03/12/2007 version=1.90
TS added missing ARError_reset() to ars_GetListVUI
TS added ars_CreateCharMenu, ars_SetCharMenu
TS added handling of case AR_CHAR_MENU_LIST in ars_GetCharMenu
TS changed handling of qualifier struct in ars_GetCharMenu, case AR_CHAR_MENU_QUERY
TS corrected function signature for ars_SetField, ars_CreateContainer
TS bugfix in ars_GetCharMenu (incorrect array length for "labelFields", "labelIndex")
TS added ars_SetImpersonatedUser
TS bugfix in ARError (support.c, memory violation if appendedText == NULL)
TS ars_SetLogging: changed declaration "int len" to "STRLEN len" because of
compilation problems on Solaris
TS added ars_BeginBulkEntryTransaction, ars_EndBulkEntryTransaction
TS added AR_FIELD_OFFSET handling in perl_ARFieldValueOrArithStruct (support.c)
TS added ars_SetSessionConfiguration
TS completed sv_to_ARCurrencyStruct (support.c)
TS ARS.pm: set $ARS::logging_file_ptr = 0 to avoid "uninitialized" warning
TS changed t/01import.t to import form "ARSperl Test3"
changes.dat view on Meta::CPAN
released=04/16/2003 version=1.8001
JCM memory leak fixed in ars_CreateEntry
JCM memory leak fixed in ars_SetEntry
JCM memory leak fixed in ars_MergeEntry
JCM memory leak fixed in ars_Export
JCM memory leak fixed in ars_GetListEntry wrt to join forms
JCM memory leak fixed in QualifierStructPtr destructor
JCM memory leak fixed in ControlStruct destructor
JCM various other memory related cleanups
JCM bad/NULL ref fixed in ExpandCharMenu
JCM added new params to ars_Login: lang, authString, tcpport, rpcnumber
JCM added new rv's to ars_GetControlStructFields: lang, authString
JCM updated example and test scripts
JCM added Alert functions (replaces NT/Notifier functions)
!JCM 5.x (5.0.1, 5.1, 5.1.1) integration<BR>
functions that no longer are available or always
return errors indicating they are no longer implemented:
<blockquote>
ars_NT*() [notifier functions]
</blockquote>
functions whose parameters have changed:
<blockquote>
ars_GetListEntry()<BR>
ars_GetListEntryWithFields()
</blockquote>
functions whose return values have changed:
<blockquote>
ars_GetCharMenu()
</blockquote>
released=11/13/2002 version=1.74
GDF added ars_GetMultipleEntries, ars_GetListEntryWithFields
GDF remove unused num_entries parameter from ARGetListEntry
JCM added ARTermination calls to ars_Login
released=11/13/2001 version=1.73
JCM fixed windows cpp error in support.c
JCM fixed a leftover fprintf warning in support.c that was causing
changes.dat view on Meta::CPAN
have altered return values which will break scripts that
use them <U>if you compile against 4.5 or later libraries</U>
<blockquote>
ars_GetActiveLink<BR>
ars_GetFilter<BR>
ars_GetEscalation<BR>
ars_CreateActiveLink<BR>
</blockquote>
see the documentation on the return values of these functions
for details on what has changed.
!JCM changed ars_GetCharMenu so that {'menuType'} is returned
as a string (decoded) instead of an integer.
!JCM added a parameter to ars_Import which will require that existing
scripts be updated. see documentation for details.
JCM added patch submitted by Geoff Endresen which enabled decoding
of push fields actions in GetFilter()
JCM enhanced Makefile.PL to be more intelligent when h2ph fails or
doesnt exist
JCM added/decoded schemaType (within GetSchema()/CompoundSchema structure)
JCM documentation updates
changes.dat view on Meta::CPAN
JCM added ars_GetListEntry.pl example to show how to use
custom query-list fields.
JCM numerous documentation updates by {D.J.Adams at soton.ac.uk}
JCM fixed bug in macroParm decoding. {D.J.Adams at soton.ac.uk}
JCM fixed bug when decoding results of GetFilter/GetActiveLink
in regards to set fields actions: values assigned to
diary fields were not being interpretted correctly.
{D.J.Adams at soton.ac.uk}
JCM patched perl_BuildEntryIdList to make it more robust
(Ulrich Pfeifer {pfeifer at wait.de})
JCM patched ars_GetCharMenu for bug "GetCharMenu doesn't
return a qualifier for query menus" {D.J.Adams at soton.ac.uk}
JCM fixed dup_FieldValueOrArith to support decoding of
query style menus.
released=02/09/98 version=1.54
JCM fixed bug in ars_EncodeDiary()
JCM added ars_MergeEntry.pl example script
released=12/15/97 version=1.53
JCM fixed some minor errors in doc
released=11/19/97 version=1.5206
JCM added ars_GetVUI to the ARS.pm exports line.
JCM added refreshCode to GetCharMenu hash
JCM fixed bug in groupList value change in 1.5205
released=11/04/97 version=1.5205
JCM updated the groupList value returned by GetSchema()
so that it contains the correct key words.
released=10/29/97 version=1.5204
JCM added ars_GetControlStructFields()
released=10/20/97 version=1.5203
changes.dat view on Meta::CPAN
released=10/07/97 version=1.51
JCM fixed some typos/symbol errors. added a missing routine.
released=10/06/97 version=1.50
JCM removed ars_errstr from C code. replaced with ars_errhash.
modified ARS.pm to refer to hash when $ars_errstr is
accessed. $ars_errstr no longer tie'd to main:: package.
JCM bug fix (Sid Van den Heede) "affecting getting of
displayInstanceList"
JCM bug fix (James LewisMoss) for ars_GetCharMenu()
JCM bug fix (Ian Flanigan) for perl_ARIndexStruct()
JCM modified GetListEntry(), GetEntry(), SetEntry() and
DeleteEntry() to make operations on join schemas
transparent.
JCM added a ARVerifyUser call to ars_Login so that
ars_Login() || die() will work as one would expect it to.
JCM added $VERSION to the perl module file.
JCM added "log to file" action to GetFilter action hash
(requested by {D.J.Adams at soton.ac.uk})
JCM added updated doc tree to main distribution (contributed by
changes.dat view on Meta::CPAN
released=02/13/97 version=1.4
JCM re-organized documentation and web pages
JCM added NT (notifier) functions
JWM bug fixes for 1.32beta
released=02/10/97 version=1.32beta
JWM 3.0 integration
released=11/11/96 version=1.31
JCM minor stuff: added an ifndef in the GetCharMenu routine
for ars 2.0 users. 2.0 doesnt support SQL menu constructions.
released=11/11/96 version=1.3
JWM undef works in setEntry now.
JWM added ars_Import to complement ars_Export
JCM Profiling code added to keep track of number of
queries made.
JWM Field caching code added to make some of the functions
more efficient.
JCM New functions: ars_GetFilter(), ars_GetCharMenu(),
ars_GetServerStatistics
JWM Internal GetField call now caches results to minimize
number of queries made.
JCM Examples of new functions.
JCM "WhoUsesIt.pl" utility
released=01/12/96 version=1.0beta
JWM First release
JCM Installation, history, and Gnu documentation added.
Removed -lars from makefile (internal C library that wasn't
example/Dump_Setup.pl view on Meta::CPAN
($ACCOUNT, $PASSWORD, $path) = @ARGV;
chomp($path = `pwd`) if (!$path);
$c = ars_Login("localhost",$ACCOUNT,$PASSWORD);
die "login error: $ars_errstr\n" unless defined($c);
@schema = ars_GetListSchema($c, 0, 1024);
@active = ars_GetListActiveLink($c);
@filter = ars_GetListFilter($c);
@escal = ars_GetListEscalation($c);
@menu = ars_GetListCharMenu($c);
@admin_ext = ars_GetListAdminExtension($c);
# Warning! this might make several names map to the same file
sub name_to_path {
my $name = shift;
$name =~ s/ /_/g;
$name =~ s/\//:/g;
return $name;
}
example/Dump_Setup.pl view on Meta::CPAN
close DUMP;
$name =~ s/'/'\\''/;
system("$ci -l -q '$path/$name'");
}
}
dump_type("$path/schema", "Schema", \@schema);
dump_type("$path/active", "Active_Link", \@active);
dump_type("$path/filter", "Filter", \@filter);
dump_type("$path/escalation", "Escalation", \@escal);
dump_type("$path/menu", "Char_Menu", \@menu);
dump_type("$path/admin_ext", "Admin_Ext", \@admin_ext);
example/GetCharMenu.pl view on Meta::CPAN
#!/usr/local/bin/perl
#
# $Header: /cvsroot/arsperl/ARSperl/example/GetCharMenu.pl,v 1.8 2003/03/28 05:51:56 jcmurphy Exp $
#
# NAME
# GetCharMenu.pl
#
# USAGE
# GetCharMenu.pl [server] [username] [password] [menuname]
#
# DESCRIPTION
# Retrieve and print information about the named menu.
#
# AUTHOR
# Jeff Murphy
# jcmurphy@acsu.buffalo.edu
#
# $Log: GetCharMenu.pl,v $
# Revision 1.8 2003/03/28 05:51:56 jcmurphy
# more 5.x edits
#
# Revision 1.7 2001/10/24 14:21:27 jcmurphy
# MergeEntry doc update, minor test/example tweaks
#
# Revision 1.6 2000/05/24 18:05:26 jcmurphy
# primary ars4.5 integration in this checkpoint.
#
# Revision 1.5 1998/10/14 13:55:34 jcmurphy
example/GetCharMenu.pl view on Meta::CPAN
}
($server, $username, $password, $name) = @ARGV;
if(!defined($name)) {
print "Usage: $0 [server] [username] [password] [menuname]\n";
exit 0;
}
$ctrl = ars_Login($server, $username, $password);
print "Calling ars_GetCharMenu($ctrl, $name)..\n";
($finfo = ars_GetCharMenu($ctrl, $name)) ||
die "error in GetCharMenu: $ars_errstr";
# 10005
print "Calling ars_GetCharMenuItems($ctrl, $name)..\n";
my ($menuItems) = ars_GetCharMenuItems($ctrl, $name);
die "$ars_errstr\n" unless defined($menuItems);
print "menuItems=<<$menuItems>> (should be an array ref)\n";
die "hmm. that wasnt an array ref." unless ref ($menuItems) eq "ARRAY";
print "** Menu Info:\n";
print "Name : \"".$finfo->{"name"}."\"\n";
print "helpText : ".$finfo->{"helpText"}."\n";
print "timestamp : ".localtime($finfo->{"timestamp"})."\n";
print "owner : ".$finfo->{"owner"}."\n";
print "lastChanged : ".$finfo->{"lastChanged"}."\n";
print "changeDiary : ".$finfo->{"changeDiary"}."\n";
foreach (@{$finfo->{"changeDiary"}}) {
print "\tTIME: ".localtime($_->{"timestamp"})."\n";
print "\tUSER: $_->{'user'}\n";
example/GetCharMenu.pl view on Meta::CPAN
}
elsif($finfo->{menuType} eq "sql") {
print "menuSQL definitions:\n";
print "\tserver : ".$finfo->{menuSQL}{server}."\n";
print "\tsqlCommand : ".$finfo->{menuSQL}{sqlCommand}."\n";
print "\tlabelIndex : ".$finfo->{menuSQL}{labelIndex}."\n";
print "\tvalueIndex : ".$finfo->{menuSQL}{valueIndex}."\n";
}
print "Menu Items :\n";
printMenuItems(1, $menuItems);
print "Simple Menu : (with 'prepend' = false)\n";
print "\t", join("\n\t", ars_simpleMenu($menuItems, 0)), "\n";
print "Simple Menu : (with 'prepend' = true)\n";
print "\t", join("\n\t", ars_simpleMenu($menuItems, 1)), "\n";
ars_Logoff($ctrl);
exit 0;
sub printMenuItems {
my ($l, $m) = (shift, shift);
my ($i) = 0;
for ($i = 0 ; $i <= $#$m ; $i += 2) {
printl($l, $m->[$i]);
if(ref($m->[$i+1]) eq "ARRAY") {
print "\n";
printMenuItems($l+1, $m->[$i+1]);
} else {
print " -> ".$m->[$i+1]."\n";
}
}
}
example/Show_ALink.pl view on Meta::CPAN
$AR_EXECUTE_ON_AFTER_SUBMIT = 4096;
$AR_EXECUTE_ON_GAIN_FOCUS = 8192;
$AR_EXECUTE_ON_WINDOW_OPEN = 16384;
$AR_EXECUTE_ON_WINDOW_CLOSE = 32768;
%ars_ExecuteOn = ($AR_EXECUTE_ON_BUTTON, "Button",
$AR_EXECUTE_ON_RETURN, "Return",
$AR_EXECUTE_ON_SUBMIT, "Submit",
$AR_EXECUTE_ON_MODIFY, "Modify",
$AR_EXECUTE_ON_DISPLAY, "Display",
$AR_EXECUTE_ON_MENU, "Menu",
$AR_EXECUTE_ON_MENU_CHOICE, "Menu_Choice",
$AR_EXECUTE_ON_LOOSE_FOCUS, "Loose_Focus",
$AR_EXECUTE_ON_SET_DEFAULT, "Set_Default",
$AR_EXECUTE_ON_QUERY, "Query",
$AR_EXECUTE_ON_AFTER_MODIFY, "After_Modify",
$AR_EXECUTE_ON_AFTER_SUBMIT, "After_Submit",
$AR_EXECUTE_ON_GAIN_FOCUS, "Gain_Focus",
$AR_EXECUTE_ON_WINDOW_OPEN, "Window_Open",
$AR_EXECUTE_ON_WINDOW_CLOSE, "Window_Close"
);
example/Show_Menu.pl view on Meta::CPAN
#!/usr/local/bin/perl
#
# $Header: /cvsroot/arsperl/ARSperl/example/Show_Menu.pl,v 1.1 1996/11/21 20:13:56 jcmurphy Exp $
#
# EXAMPLE
# Show_Menu.pl
#
# DESCRIPTION
# Use ars_GetCharMenuItems to obtain information about a menu.
#
# AUTHOR
# jeff murphy
#
# 01/12/96
#
# $Log: Show_Menu.pl,v $
# Revision 1.1 1996/11/21 20:13:56 jcmurphy
# Initial revision
#
#
use ARS;
# Parse command line parameters
($server, $username, $password, $menu_name) = @ARGV;
example/Show_Menu.pl view on Meta::CPAN
my $i;
if(defined($s)) {
for($i = 0; $i < $ind; $i++) {
print "\t";
}
print $s;
}
}
# SUBROUTINE
# DumpMenu(arraypointer, indentation count)
#
# DESCRIP
# Recursive subroutine to dump menu and sub menu items
sub DumpMenu {
my $m = shift;
my $i = shift;
my @m = @$m;
my $name, $val;
$i = 0 unless $i;
while (($name, $val, @m) = @m) {
if (ref($val)) {
IndPrint($i, "SubMenu: $name\n");
DumpMenu($val, $i+1);
} else {
IndPrint($i, "Name: $name\t Value: $val\n");
}
}
}
# Retrieve info about menu.
DumpMenu(ars_GetCharMenuItems($ctrl, $menu_name));
# Log out of the server.
ars_Logoff($ctrl);
example/WhoUsesIt.pl view on Meta::CPAN
($ctrl = ars_Login($server, $username, $password)) ||
die "couldn't allocate control structure";
(@schemas = ars_GetListSchema($ctrl)) ||
die "can't read schema list: $ars_errstr";
if($opt_M) {
# fine any menu that uses this file as it's
# source of menu items.
print "Menus that use the file \"$opt_M\"... (this may take a minute or so to do)\n";
@menus = ars_GetListCharMenu($ctrl, 0);
if($#menus != -1) {
foreach $menu (@menus) {
print "Searching: $menu\n" if $debug;
($menuDef = ars_GetCharMenu($ctrl, $menu)) ||
die "ars_GetCharMenu: $ars_errstr";
#next unless ($menu eq "PT-Assignees");
#use Data::Dumper; print Dumper($menuDef); exit 0;
# 3 is legacy.
if( ($menuDef->{menuType} == 3) || ($menuDef->{menuType} =~ /format_quotes/i) ) {
print "\tIs type File (points to ".qq{"$menuDef->{menuFile}{filename}"}.")\n" if $debug;
if ($menuDef->{menuFile}{filename} =~ /$opt_M/) {
$users{$menu} = $1;
}
}
}
example/WhoUsesIt.pl view on Meta::CPAN
}
}
} elsif($opt_m) {
# find any schema that uses this menu.
# this particular routine will take longer, because we
# need to open each schema, and then retrieve all field
# definitions and finally flip thru each field and see
# what menus (if any) are attached.
print "Searching for Menu \"$opt_m\" in schema \"$opt_s\"...\n";
print "(this may take some time)\n";
foreach $schema (@schemas) {
if($schema =~ /$SCHEMA/) {
print "Searching schema: $opt_s\n" if $debug;
@fields = ars_GetListField($ctrl, $schema);
foreach $field (@fields) {
$finfo = ars_GetField($ctrl, $schema, $field);
if(($finfo->{dataType} eq "char") &&
defined($finfo->{limit})) {
if(($finfo->{limit}{charMenu} ne "") &&
($finfo->{limit}{charMenu} =~ /$opt_m/)) {
$users{$schema} .= "$finfo->{limit}{charMenu},";
}
}
}
}
}
foreach $schema (sort keys %users) {
print "\t$schema\n";
foreach $menu (split(/,/, substr($users{$schema}, 0, length($users{$schema})-1))) {
print "\t\t$menu\n";
example/del_all.pl view on Meta::CPAN
print "Fetching..\n";
print "\tActiveLinks .. ";
@al = ars_GetListActiveLink($c);
print $#al." found.\n";
print "\tAdminExtensions .. ";
@ae = ars_GetListAdminExtension($c);
print $#ae." found.\n";
print "\tCharMenus .. ";
@cm = ars_GetListCharMenu($c);
print $#cm." found.\n";
print "\tEscalations .. ";
@es = ars_GetListEscalation($c);
print $#es." found.\n";
print "\tFilters .. ";
@fi = ars_GetListFilter($c);
print $#fi." found.\n";
example/del_all.pl view on Meta::CPAN
print "\nDeleting AdminExtensions:\n";
foreach (@ae) {
if($_ =~ /$pat/) {
print "\t$_\n";
ars_DeleteAdminExtension($c, $_) || die "$ars_errstr";
}
}
print "\nDeleting CharMenus:\n";
foreach (@cm) {
if($_ =~ /$pat/) {
print "\t$_\n";
ars_DeleteCharMenu($c, $_) || die "$ars_errstr";
}
}
print "\nDeleting Escalations:\n";
foreach (@es) {
if($_ =~ /$pat/) {
print "\t$_\n";
ars_DeleteEscalation($c, $_) || die "$ars_errstr";
}
html/changes.html view on Meta::CPAN
<TD width='100%'>
<TABLE CELLSPACING='0' CELLPADDING='3' WIDTH='100%' BORDER='0'
BGCOLOR='lightblue'>
<tr><td colspan='2'>
<table width='100%' border='0'><tr>
<td width='50%'>Released: <B>03/12/2007</B></td>
<td width='50%'>Version: <B>1.90
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added missing ARError_reset() to ars_GetListVUI
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_CreateCharMenu, ars_SetCharMenu
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added handling of case AR_CHAR_MENU_LIST in ars_GetCharMenu
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed handling of qualifier struct in ars_GetCharMenu, case AR_CHAR_MENU_QUERY
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>corrected function signature for ars_SetField, ars_CreateContainer
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in ars_GetCharMenu (incorrect array length for "labelFields", "labelIndex")
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_SetImpersonatedUser
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in ARError (support.c, memory violation if appendedText == NULL)
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>ars_SetLogging: changed declaration "int len" to "STRLEN len" because of
compilation problems on Solaris </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_BeginBulkEntryTransaction, ars_EndBulkEntryTransaction
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added AR_FIELD_OFFSET handling in perl_ARFieldValueOrArithStruct (support.c)
html/changes.html view on Meta::CPAN
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>memory leak fixed in ars_Export
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>memory leak fixed in ars_GetListEntry wrt to join forms
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>memory leak fixed in QualifierStructPtr destructor
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>memory leak fixed in ControlStruct destructor
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>various other memory related cleanups
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>bad/NULL ref fixed in ExpandCharMenu
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added new params to ars_Login: lang, authString, tcpport, rpcnumber
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added new rv's to ars_GetControlStructFields: lang, authString
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>updated example and test scripts
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added Alert functions (replaces NT/Notifier functions)
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='red'>5.x (5.0.1, 5.1, 5.1.1) integration<BR>
functions that no longer are available or always return errors indicating they are no longer implemented: <blockquote> ars_NT*() [notifier functions] </blockquote> functions whose parameters have changed: <blockquote> ars_GetListEntry()<BR> ars_Get...
<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
BORDER='0'
BGCOLOR='black'>
<TR>
html/changes.html view on Meta::CPAN
<td width='50%'>Version: <B>1.68
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>modifications to example/ars_GetListEntry.pl to make
it function with different revisions of the User form. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>arsperl now requires at minimum perl 5.004.
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>converted "na" "sv_unref" to PL_ namespace.
added perl-version checking so it will still compile against 5.004. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='red'>ars4.5 compatibility changes. the following functions
have altered return values which will break scripts that use them <U>if you compile against 4.5 or later libraries</U> <blockquote> ars_GetActiveLink<BR> ars_GetFilter<BR> ars_GetEscalation<BR> ars_CreateActiveLink<BR> </blockquote> see the documenta...
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='red'>changed ars_GetCharMenu so that {'menuType'} is returned
as a string (decoded) instead of an integer. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='red'>added a parameter to ars_Import which will require that existing
scripts be updated. see documentation for details. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added patch submitted by Geoff Endresen which enabled decoding
of push fields actions in GetFilter() </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>enhanced Makefile.PL to be more intelligent when h2ph fails or
doesnt exist </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added/decoded schemaType (within GetSchema()/CompoundSchema structure)
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>documentation updates
html/changes.html view on Meta::CPAN
</tr><tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added ars_GetListEntry.pl example to show how to use
custom query-list fields. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>numerous documentation updates by {D.J.Adams at soton.ac.uk}
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed bug in macroParm decoding. {D.J.Adams at soton.ac.uk}
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed bug when decoding results of GetFilter/GetActiveLink
in regards to set fields actions: values assigned to diary fields were not being interpretted correctly. {D.J.Adams at soton.ac.uk} </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>patched perl_BuildEntryIdList to make it more robust
(Ulrich Pfeifer {pfeifer at wait.de}) </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>patched ars_GetCharMenu for bug "GetCharMenu doesn't
return a qualifier for query menus" {D.J.Adams at soton.ac.uk} </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed dup_FieldValueOrArith to support decoding of
query style menus. </table></td></tr></table>
<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
html/changes.html view on Meta::CPAN
<TD width='100%'>
<TABLE CELLSPACING='0' CELLPADDING='3' WIDTH='100%' BORDER='0'
BGCOLOR='lightblue'>
<tr><td colspan='2'>
<table width='100%' border='0'><tr>
<td width='50%'>Released: <B>11/19/97</B></td>
<td width='50%'>Version: <B>1.5206
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added ars_GetVUI to the ARS.pm exports line.
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added refreshCode to GetCharMenu hash
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed bug in groupList value change in 1.5205
</table></td></tr></table>
<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
html/changes.html view on Meta::CPAN
BGCOLOR='lightblue'>
<tr><td colspan='2'>
<table width='100%' border='0'><tr>
<td width='50%'>Released: <B>10/06/97</B></td>
<td width='50%'>Version: <B>1.50
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>removed ars_errstr from C code. replaced with ars_errhash.
modified ARS.pm to refer to hash when $ars_errstr is accessed. $ars_errstr no longer tie'd to main:: package. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>bug fix (Sid Van den Heede) "affecting getting of
displayInstanceList" </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>bug fix (James LewisMoss) for ars_GetCharMenu()
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>bug fix (Ian Flanigan) for perl_ARIndexStruct()
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>modified GetListEntry(), GetEntry(), SetEntry() and
DeleteEntry() to make operations on join schemas transparent. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added a ARVerifyUser call to ars_Login so that
ars_Login() || die() will work as one would expect it to. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added $VERSION to the perl module file.
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added "log to file" action to GetFilter action hash
html/changes.html view on Meta::CPAN
BGCOLOR='black'>
<TR>
<TD width='100%'>
<TABLE CELLSPACING='0' CELLPADDING='3' WIDTH='100%' BORDER='0'
BGCOLOR='lightblue'>
<tr><td colspan='2'>
<table width='100%' border='0'><tr>
<td width='50%'>Released: <B>11/11/96</B></td>
<td width='50%'>Version: <B>1.31
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>minor stuff: added an ifndef in the GetCharMenu routine
for ars 2.0 users. 2.0 doesnt support SQL menu constructions. </table></td></tr></table>
<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
BORDER='0'
BGCOLOR='black'>
html/changes.html view on Meta::CPAN
<td width='50%'>Version: <B>1.3
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(JWM)</td><td width='90%'><font color='black'>undef works in setEntry now.
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JWM)</td><td width='90%'><font color='black'>added ars_Import to complement ars_Export
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>Profiling code added to keep track of number of
queries made. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JWM)</td><td width='90%'><font color='black'>Field caching code added to make some of the functions
more efficient. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>New functions: ars_GetFilter(), ars_GetCharMenu(),
ars_GetServerStatistics </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JWM)</td><td width='90%'><font color='black'>Internal GetField call now caches results to minimize
number of queries made. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>Examples of new functions.
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>"WhoUsesIt.pl" utility
</table></td></tr></table>
<P>
html/manual/ars_CreateCharMenu.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Programmer's Manual - ars_CreateCharMenu</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2><CODE>ars_CreateCharMenu(ctrl, menuHash)</CODE></H2>
This function creates a new menu. You must first
populate the <CODE>menuHash</CODE> before calling this routine.
<P>
<DL>
<DT><B>On success</B><DD>
Returns 1
<DT><B>On failure</B><DD>
html/manual/ars_CreateCharMenu.html view on Meta::CPAN
</DL>
<P>Example:
<P><BLOCKQUOTE>
<I> This example copies an existing menu to a new
active link. I.e. it simply re-saves the menu under
a new name. </I></BLOCKQUOTE>
<PRE>
($m = ars_GetCharMenu($c, "C-foobar")) ||
die $ars_errstr;
$m->{name} = "Copy of ".$m->{name};
ars_CreateCharMenu($c, $m) || die $ars_errstr;
</PRE>
<B>Notes</B>: Hash keys <CODE>helpText, owner</CODE> and
<CODE>changeDiary</CODE> are optional when calling this routine.
<P>
<I>This function was introduced in version 1.90 of ARSperl</I>
<P>
<A HREF="toc.html"><IMG ALT="<--" SRC="arrow.gif" ALIGN=CENTER> Back to Table of Contents </A>
</BODY>
html/manual/ars_DeleteCharMenu.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Manual - ars_DeleteCharMenu</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2><CODE>ars_DeleteCharMenu(ctrl, name)</CODE></H2>
Delete the named Menu from the server connected to in
the given control structure. <FONT COLOR="#FF0000">Requires Administrator privs to use.</FONT> <P>
<DL>
<DT><B>On success</B><DD>
Returns 1.
<DT><B>On failure</B><DD>
Returns 0.
</DL>
<P>Example:
<PRE>
ars_DeleteCharMenu($ctrl, "CM-FooBar") || die "$ars_errstr";
</PRE>
<I>ars_DeleteCharMenu was introduced in version 1.5 of ARSperl</I>
<P>
<HR WIDTH="30%">
<P>
<A HREF="toc.html"><IMG ALT="<--" SRC="arrow.gif" ALIGN=CENTER> Table of Contents </A>
<p>
<address>
Last changes to this page 21st July 1997 by jcmurphy@arsperl.org<BR>
© J.C.Murphy, J.W.Murphy 1997 arsperl@arsperl.org
</address>
html/manual/ars_GetCharMenu.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Manual - ars_GetCharMenu</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2><CODE>ars_GetCharMenu(ctrl, name)</CODE></H2>
Returns a
<A HREF="ds_getcharmenu_hash.html">HASH</a>
consisting of menu attributes. <br>
<CODE>name</CODE>
is the actual menu name as shown in the ARAdmin tool.
<P>
<DL>
<DT><B>On success</B><DD>
returns a HASH
<DT><B>On failure</B><DD>
returns undef
</DL>
<P>
<em>ars_GetCharMenu was introduced in version 1.3 of ARSperl.</em>
<P>
<HR WIDTH="30%">
<P>
<A HREF="toc.html"><IMG ALT="<--" SRC="arrow.gif" ALIGN=CENTER> Table of Contents </A>
<p>
<address>
Last changes to this page 11th July 1997 by d.j.adams@soton.ac.uk<br>
© J.C.Murphy, J.W.Murphy 1997 arsperl@arsperl.org
</address>
html/manual/ars_GetCharMenuItems.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Manual - ars_GetCharMenuItem</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2><CODE>ars_GetCharMenuItems(ctrl,name)</CODE></H2>
This function builds a "linked list" of menu items. It returns an
array pointer to the top level menu that is made up of
<I>(name, value)</I> pairs. If the <I>value</I> is, in turn, another
array pointer, then it points to a submenu structure. <P>
<B>Illustration</B>
<PRE>
@menu_struct
($name = "Item1" , $value = "This is item1")
.
.
.
($name = "Sub Menu", $value = array reference)
+------> @sub_menu_struct
($name = "SubItem1", $value = ...)
.
.
.
</PRE>
See <I>Show_Menu.pl</I> for a demonstration of using this function
and its output.<P>
<DL>
<DT><B>On success</B><DD>
A reference to an array.
<DT><B>On failure</B><DD>
<CODE>undef</CODE>.
</DL>
<P>Example:
<PRE>
$m = ars_GetCharMenuItems($ctrl, $menu_name));
@menu_struct = @$m;
</PRE>
<P>
<HR WIDTH="30%">
<P>
<A HREF="toc.html"><IMG ALT="<--" SRC="arrow.gif" ALIGN=CENTER> Table of Contents </A>
<p>
<address>
Last changes to this page 26th June 1997 by d.j.adams@soton.ac.uk<br>
html/manual/ars_GetListCharMenu.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Programmer's Manual</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2><CODE>ars_GetListCharMenu(ctrl,changedsince=0)</CODE></H2>
Returns an array of all available Menu names or a subset based
upon the given timestamp.
<P>
<DL>
<DT><B>On success</B><DD>
returns an array of strings
<DT><B>On failure</B><DD>
returns undef
</DL>
<P>
html/manual/ars_SetCharMenu.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Programmer's Manual - ars_SetCharMenu</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2><CODE>ars_SetCharMenu(ctrl, name, menuHash)</CODE></H2>
This function modifies an existing menu. You must first
populate the <CODE>menuHash</CODE> before calling this routine.
<P>
<DL>
<DT><B>On success</B><DD>
Returns 1
<DT><B>On failure</B><DD>
Returns 0
</DL>
<P>Example:
<P><BLOCKQUOTE>
<I> This example changes the name and the refresh code of the menu "TEST:CharMenu".
</I></BLOCKQUOTE>
<PRE>
ars_SetCharMenu( $c, "TEST:CharMenu, {
name => "TEST:CharMenu2",
refreshCode => "open",
} ) || die $ars_errstr;
</PRE>
<P>
<I>This function was introduced in version 1.90 of ARSperl</I>
<P>
<A HREF="toc.html"><IMG ALT="<--" SRC="arrow.gif" ALIGN=CENTER> Back to Table of Contents </A>
</BODY>
html/manual/ars_simpleMenu.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Programmer's Manual</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2><CODE>ars_simpleMenu(menu)</CODE></H2>
This is a perl routine in the ARS.pm perl module. It is primarily
intended to make life a little easier for the Web client demo script.
It converts a menu returned by ars_GetCharMenuItems to a single level
menu seperating labels with '/'. This was added because of
limitations in HTML.<P>
<DL>
<DT><B>On success</B><DD>
An array of menu items.
<DT><B>On failure</B><DD>
<CODE>undef</CODE>
</DL>
<P>Example:
<PRE>
@sm = ars_simpleMenu(ars_GetCharMenuItems($ctrl, $menu_name));
</PRE>
<P>
<A HREF="toc.html"><IMG ALT="<--" SRC="arrow.gif" ALIGN=CENTER> Back to Table of Contents </A>
</BODY>
</HTML>
html/manual/ds_charmenu_file_hash.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Manual - GetCharMenu File Hash</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>GetCharMenu File Hash</H2>
<PRE>
{
"fileLocation" => integer enumeration,
"filename" => string
}
</PRE>
<P>
<HR WIDTH="30%">
html/manual/ds_charmenu_query_hash.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Manual - GetCharMenu Query Hash</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>GetCharMenu Query Hash</H2>
<PRE>
{
"schema" => string,
"server" => string,
"labelField" => ref to array of integers,
"valueField" => integer,
"sortOnLabel" => integer boolean,
"qualifier" => internal pointer
}
html/manual/ds_charmenu_sql_hash.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Manual - GetCharMenu SQL Hash</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>GetCharMenu SQL Hash</H2>
<PRE>
{
"server" => string,
"sqlCommand" => string,
"labelIndex" => integer,
"valueIndex" => integer,
}
</PRE>
html/manual/ds_fc.html view on Meta::CPAN
<H2>Field Characteristics Structure</H2>
A reference to this structure is returned by the
<A href="ds_alas.html">Active Link Action Structure</a>
when the action is the change in field characteristics.
<PRE>
{
"accessOption" => integer,
"charMenu" => string,
"fieldId" => integer,
"focus" => integer,
"display" => reference to <A HREF="ds_ds.html">Display Structure</A>, <B>(2.x only)</B>
"props" => reference to <A HREF="ds_prop_hash.html">Props Structure</A>, <B>(3.x only)</B>
}
</PRE>
<P>
<HR WIDTH="30%">
<P>
html/manual/ds_fls.html view on Meta::CPAN
"min" => float,
"max" => float,
"precision" => integer
}
<i>or</i>
<b>; char</b>
{
"maxLength" => integer,
"menuStyle" => "append" <i>or</i> "overwrite",<br> "match" => "anywhere" <i>or</i> "leading" <i>or</i> "equal",<br> "charMenu" => string,<br> "pattern" => string,<br> "fullTextOptions" => "none" <i>or</i...
<b>; diary</b>
{
"fullTextOptions" => "none" <i>or</i> "indexed"}<br> <i>or</i>
<b>; enum and bitmask</b>
array of strings
<i>or</i>
<b>; enum</b>
html/manual/ds_getcharmenu_hash.html view on Meta::CPAN
<HTML>
<HEAD>
<TITLE>ARSperl Manual - GetCharMenu Hash</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>GetCharMenu Hash</H2>
<PRE>
{
"changeDiary" => <i>list</I> of references to <a href="ds_diaryentry_hash.html">Diary Entry Structures</a>,
"helpText" => string,
"lastChanged" => string,
"menuType" => string, (<code>list, query, file, </code> or <code>sql</code>)
"name" => string,
"owner" => string,
"timestamp" => integer,
<i>either (if menuType is Query)</i>
"menuQuery" => reference to <A HREF="ds_charmenu_query_hash.html">CharMenu Query Hash</A>
<i>or (if menuType is SQL)</i>
"menuSQL" => reference to <A HREF="ds_charmenu_sql_hash.html">CharMenu SQL Hash</A>
<i>or (if menuType is File)</i>
"menuFile" => reference to <A HREF="ds_charmenu_file_hash.html">CharMenu File Hash</A>
<i>or none (if menuType is Character)</i>
"refreshCode" => one of: <CODE>connect, open</CODE> or <CODE>interval</CODE>
<font color='red'>"objPropList" => <I>list</I> of references to <a
href="ds_prop_hash.html">Property Hash</a></font> <B>(>= 4.5)</B>
}
</PRE>
<P>
<HR WIDTH="30%">
<P>
html/manual/toc.html view on Meta::CPAN
<li>
<a href="ars_BeginBulkEntryTransaction.html">ars_BeginBulkEntryTransaction</a>
</li>
<li>
<a href="ars_CreateActiveLink.html">ars_CreateActiveLink</a>
</li>
<li>
<a href="ars_CreateAlertEvent.html">ars_CreateAlertEvent</a>
</li>
<li>
<a href="ars_CreateCharMenu.html">ars_CreateCharMenu</a>
</li>
<li>
<a href="ars_CreateContainer.html">ars_CreateContainer</a>
</li>
<li>
<a href="ars_CreateEntry.html">ars_CreateEntry</a>
</li>
<li>
<a href="ars_CreateEscalation.html">ars_CreateEscalation</a>
</li>
html/manual/toc.html view on Meta::CPAN
<li>
<a href="ars_DateToJulianDate.html">ars_DateToJulianDate</a>
</li>
<li>
<a href="ars_DecodeAlertMessage.html">ars_DecodeAlertMessage</a>
</li>
<li>
<a href="ars_DeleteActiveLink.html">ars_DeleteActiveLink</a>
</li>
<li>
<a href="ars_DeleteCharMenu.html">ars_DeleteCharMenu</a>
</li>
<li>
<a href="ars_DeleteContainer.html">ars_DeleteContainer</a>
</li>
<li>
<a href="ars_DeleteEntry.html">ars_DeleteEntry</a>
</li>
<li>
<a href="ars_DeleteEscalation.html">ars_DeleteEscalation</a>
</li>
html/manual/toc.html view on Meta::CPAN
<li>
<a href="ars_Export.html">ars_Export</a>
</li>
<li>
<a href="ars_GetActiveLink.html">ars_GetActiveLink</a>
</li>
<li>
<a href="ars_GetAlertCount.html">ars_GetAlertCount</a>
</li>
<li>
<a href="ars_GetCharMenu.html">ars_GetCharMenu</a>
</li>
<li>
<a href="ars_GetClientCharSet.html">ars_GetClientCharSet</a>
</li>
<li>
<a href="ars_GetContainer.html">ars_GetContainer</a>
</li>
<li>
<a href="ars_GetCharMenuItems.html">ars_GetCharMenuItems</a>
</li>
<li>
<a href="ars_GetEntry.html">ars_GetEntry</a>
</li>
<li>
<a href="ars_GetEntryBLOB.html">ars_GetEntryBLOB</a>
</li>
<li>
<a href="ars_GetEscalation.html">ars_GetEscalation</a>
</li>
html/manual/toc.html view on Meta::CPAN
<li>
<a href="ars_GetImage.html">ars_GetImage</a>
</li>
<li>
<a href="ars_GetListActiveLink.html">ars_GetListActiveLink</a>
</li>
<li>
<a href="ars_GetListAlertUser.html">ars_GetListAlertUser</a>
</li>
<li>
<a href="ars_GetListCharMenu.html">ars_GetListCharMenu</a>
</li>
<li>
<a href="ars_GetListContainer.html">ars_GetListContainer</a>
</li>
<li>
<a href="ars_GetListEntry.html">ars_GetListEntry</a>
</li>
<li>
<a href="ars_GetListEntryWithFields.html">ars_GetListEntryWithFields</a>
</li>
html/manual/toc.html view on Meta::CPAN
<li>
<a href="ars_MergeEntry.html">ars_MergeEntry</a>
</li>
<li>
<a href="ars_RegisterForAlerts.html">ars_RegisterForAlerts</a>
</li>
<li>
<a href="ars_SetActiveLink.html">ars_SetActiveLink</a>
</li>
<li>
<a href="ars_SetCharMenu.html">ars_SetCharMenu</a>
</li>
<li>
<a href="ars_SetContainer.html">ars_SetContainer</a>
</li>
<li>
<a href="ars_SetEntry.html">ars_SetEntry</a>
</li>
<li>
<a href="ars_SetEscalation.html">ars_SetEscalation</a>
</li>
html/manual/toc.html view on Meta::CPAN
<li>
<a href="ars_GetProfileInfo.html">ars_GetProfileInfo</a>
</li>
<li>
<a href="ars_padEntryid.html">ars_padEntryid</a>
</li>
<li>
<a href="ars_perl_qualifier.html">ars_perl_qualifier</a>
</li>
<li>
<a href="ars_simpleMenu.html">ars_simpleMenu</a>
</li>
</ul>
</dd>
<dt class="c1">
Data structures
</dt>
<dd>
<ul>
<li>
<a href="ds_al.html">Active Link Attributes Structure</a>
html/manual/toc.html view on Meta::CPAN
</li>
<li>
<a href="ds_fncas.html">Function Assign Structure</a>
</li>
<li>
<a href="ds_vs.html">Value Structure</a>
</li>
</ul>
</li>
<li>
<a href="ds_getcharmenu_hash.html">Character Menu Structure</a>
<ul>
<li>
<a href="ds_charmenu_query_hash.html">Query Hash</a>
</li>
<li>
<a href="ds_charmenu_sql_hash.html">SQL Hash</a>
</li>
<li>
<a href="ds_charmenu_file_hash.html">File Hash</a>
</li>
support-h.template view on Meta::CPAN
unsigned int number;
char *name;
} OpenWindowModeMap[] = {
/*OPENWINDOWMODEMAP*/
{ TYPEMAP_LAST, "" }
};
static struct {
unsigned int number;
char *name;
} CharMenuDDTypeMap[] = {
/*CHARMENUDDTYPEMAP*/
{ TYPEMAP_LAST, "" }
};
static struct {
unsigned int number;
char *name;
} CharMenuDDNameMap[] = {
/*CHARMENUDDNAMEMAP*/
{ TYPEMAP_LAST, "" }
};
static struct {
unsigned int number;
char *name;
} CharMenuDDValueMap[] = {
/*CHARMENUDDVALUEMAP*/
{ TYPEMAP_LAST, "" }
};
static struct {
unsigned int number;
char *name;
} CharMenuTypeMap[] = {
/*CHARMENUTYPEMAP*/
{ TYPEMAP_LAST, "" }
};
static struct {
unsigned int number;
char *name;
} FilterActionTypeMap[] = {
/*FILTERACTIONTYPEMAP*/
{ TYPEMAP_LAST, "" }
};
static struct {
unsigned int number;
char *name;
} CharMenuRefreshCodeTypeMap[] = {
/*CHARMENUREFRESHCODETYPEMAP*/
{ TYPEMAP_LAST, "" }
};
#define PERMTYPE_SCHEMA 0
#define PERMTYPE_FIELD 1
static struct {
unsigned int number;
char *name;
support-h.template view on Meta::CPAN
EXTERN char *strappend(char *b, char *a);
EXTERN int ARError_reset();
EXTERN int ARError_add( int type, long num, char *text);
EXTERN int ARError( int returncode, ARStatusList status);
#if AR_EXPORT_VERSION < 6
EXTERN int NTError( int returncode, NTStatusList status);
#endif
EXTERN SV *perl_diary(ARControlStruct *ctrl, ARDiaryStruct *in);
EXTERN SV *perl_MenuRefreshCode2Str(ARControlStruct *ctrl, unsigned int rc);
EXTERN SV *perl_ARPermissionList(ARControlStruct *ctrl, ARPermissionList *in, int);
#ifdef ARS452
EXTERN SV *perl_ARFilterStatusStruct(ARControlStruct *ctrl, ARFilterStatusStruct *);
#endif
EXTERN SV *perl_ARStatusStruct(ARControlStruct *ctrl, ARStatusStruct *);
#if AR_EXPORT_VERSION >= 4
EXTERN SV *perl_ARMessageStruct(ARControlStruct *ctrl, ARMessageStruct *);
#endif
#if AR_EXPORT_VERSION >= 5
EXTERN SV *perl_ARWorkflowConnectStruct(ARControlStruct * ctrl, ARWorkflowConnectStruct * in);
support-h.template view on Meta::CPAN
EXTERN SV *perl_ARSetFieldsActionStruct( ARControlStruct *ctrl, ARSetFieldsActionStruct *p );
EXTERN SV *perl_ARPushFieldsActionStruct( ARControlStruct *ctrl, ARPushFieldsActionStruct *p );
#endif
EXTERN SV *perl_ARFilterActionStruct(ARControlStruct *ctrl, ARFilterActionStruct *);
EXTERN SV *perl_AROwnerObj(ARControlStruct *ctrl, ARContainerOwnerObj *);
#if AR_EXPORT_VERSION >= 6L
EXTERN SV *perl_AROwnerObjList(ARControlStruct *ctrl, ARContainerOwnerObjList *);
#endif
EXTERN SV *perl_ARReferenceStruct(ARControlStruct *ctrl, ARReferenceStruct *);
EXTERN SV *perl_ARReferenceList(ARControlStruct *ctrl, ARReferenceList *);
EXTERN SV *perl_expandARCharMenuStruct( ARControlStruct *, ARCharMenuStruct *);
EXTERN SV *perl_AREntryListFieldStruct(ARControlStruct *ctrl,
AREntryListFieldStruct *);
EXTERN SV *perl_ARIndexStruct(ARControlStruct *ctrl, ARIndexStruct *);
EXTERN SV *perl_ARFieldLimitStruct(ARControlStruct *ctrl, ARFieldLimitStruct *);
EXTERN SV *perl_ARFunctionAssignStruct(ARControlStruct *ctrl,
ARFunctionAssignStruct *);
EXTERN SV *perl_ARArithOpAssignStruct(ARControlStruct *ctrl, ARArithOpAssignStruct *);
EXTERN void dup_Value(ARControlStruct *ctrl, ARValueStruct *, ARValueStruct *);
EXTERN ARArithOpStruct *dup_ArithOp(ARControlStruct *ctrl, ARArithOpStruct *);
EXTERN void dup_ValueList(ARControlStruct *ctrl, ARValueList *, ARValueList *);
support-h.template view on Meta::CPAN
EXTERN SV *perl_AREntryReturn( ARControlStruct *ctrl, AREntryReturn *);
EXTERN SV *perl_ARXMLEntryReturn( ARControlStruct *ctrl, ARXMLEntryReturn *);
EXTERN SV *perl_ARStatusList( ARControlStruct *ctrl, ARStatusList *);
#endif
EXTERN SV *perl_AREntryListFieldList( ARControlStruct *ctrl, AREntryListFieldList *p );
EXTERN SV *perl_ARInternalIdList( ARControlStruct *ctrl, ARInternalIdList *p );
EXTERN SV *perl_ARFieldValueList( ARControlStruct *ctrl, ARFieldValueList *p );
EXTERN SV *perl_ARFieldValueStruct( ARControlStruct *ctrl, ARFieldValueStruct *p );
EXTERN SV *perl_ARCharMenuList( ARControlStruct *ctrl, ARCharMenuList *p );
EXTERN SV *perl_ARCharMenuItemStruct( ARControlStruct *ctrl, ARCharMenuItemStruct *p );
EXTERN SV *perl_ARCharMenuStruct( ARControlStruct *ctrl, ARCharMenuStruct *p );
#if AR_CURRENT_API_VERSION >= 13
EXTERN SV *perl_ARActiveLinkSvcActionStruct( ARControlStruct *ctrl, ARActiveLinkSvcActionStruct *p );
#endif
EXTERN SV *perl_ARLicenseDateStruct( ARControlStruct *ctrl, ARLicenseDateStruct *p );
EXTERN SV *perl_ARLicenseValidStruct( ARControlStruct *ctrl, ARLicenseValidStruct *p );
#ifndef BSD