view release on metacpan or search on metacpan
die Carp::longmess("Usage: insertValueForCurrentTransaction(ctrl, schema, qualifier, ...)\n")
if(!defined($q));
die Carp::longmess("Usage: insertValueForCurrentTransaction(ctrl, schema, qualifier, ...)\nEven number of arguments must follow 'qualifier'\n")
if($#_ % 2 == 1);
#foreach (field, value) pair {
# look up field
# if field = text then wrap value in double quotes
# if field = numeric then no quotes
# search thru qual and change field ref to value
#}
# compile new qual
# pass to Expand2
if(ref($q) eq "ARQualifierStructPtr") {
$q = ars_perl_qualifier($c, $q);
die Carp::longmess("ars_perl_qualifier failed: $ARS::ars_errstr")
unless defined($q);
}
if(0) {
#if AR_EXPORT_VERSION >= 4
ret = ARTermination(ctrl, &status);
#else
ret = ARTermination(&status);
#endif
(void) ARError( ret, status);
/*AP_FREE(ctrl); let DESTROY free it*/
}
void
ars_GetListField(control,schema,changedsince=0,fieldType=AR_FIELD_TYPE_ALL)
ARControlStruct * control
char * schema
unsigned long changedsince
unsigned long fieldType
PPCODE:
{
ARInternalIdList idlist;
ARStatusList status;
int ret = 0;
unsigned int i = 0;
(void) ARError_reset();
Zero(&idlist, 1, ARInternalIdList);
Zero(&status, 1, ARStatusList);
#if AR_EXPORT_VERSION >= 3
ret = ARGetListField(control,schema,
fieldType,
changedsince,
#if AR_CURRENT_API_VERSION >= 17
NULL, /* &objPropList (undocumented by BMC) */
#endif
&idlist,
&status);
#else
ret = ARGetListField(control,schema,changedsince,&idlist,&status);
#endif
#ifdef PROFILE
((ars_ctrl *)control)->queries++;
#endif
if (!ARError( ret,status)) {
for (i=0; i<idlist.numItems; i++)
XPUSHs(sv_2mortal(newSViv(idlist.internalIdList[i])));
FreeARInternalIdList(&idlist,FALSE);
}
}
XPUSHs(sv_2mortal(newSVpv(entryList.entryList[i].entryId, 0)));
#endif
XPUSHs(sv_2mortal(newSVpv(entryList.entryList[i].shortDesc, 0)));
}
getlistentry_end:;
FreeARSortList(&sortList, FALSE);
FreeAREntryListList(&entryList,FALSE);
}
void
ars_GetListSchema(ctrl,changedsince=0,schemaType=AR_LIST_SCHEMA_ALL,fieldPropList=NULL,name=NULL,fieldIdList=NULL)
ARControlStruct * ctrl
unsigned int changedsince
unsigned int schemaType
char * name
AV * fieldIdList
ARPropList * fieldPropList
PPCODE:
{
ARNameList nameList;
ARStatusList status;
unsigned int i = 0;
int ret = 0;
SV **array_entry;
if ((array_entry = av_fetch(fieldIdList, i, 0)) &&
SvROK(*array_entry) &&
(SvTYPE(*array_entry) == SVt_PVIV) ) {
idList.internalIdList[i] = (unsigned long) (SvIV(*array_entry));
}
}
}
#endif
#if AR_EXPORT_VERSION >= 3
ret = ARGetListSchema(ctrl, changedsince, schemaType, name,
# if AR_EXPORT_VERSION >= 8L
&idList, &propList,
# elif AR_EXPORT_VERSION >= 6 && AR_EXPORT_VERSION < 8L
&idList,
# endif
&nameList, &status);
#else
ret = ARGetListSchema(ctrl, changedsince,
&nameList, &status);
#endif
#ifdef PROFILE
((ars_ctrl *)ctrl)->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_GetListContainer(ctrl,changedSince=0,attributes=0,...)
ARControlStruct * ctrl
ARTimestamp changedSince
unsigned int attributes
PPCODE:
{
ARStatusList status;
int i, ret, rv = 0;
(void) ARError_reset();
Zero(&status, 1, ARStatusList);
if(items < 1 || items > 200){ /* don't overflow clist[] */
}
}
for(i = 4 ; i < items ; ++i){
clist[count++] = SvIV(ST(i));
}
containerTypes.numItems = count;
containerTypes.type = clist;
if( rv == 0 ){
ret = ARGetListContainer(ctrl, changedSince,
&containerTypes,
attributes,
&ownerObjList,
# if AR_EXPORT_VERSION >= 8L
&propList,
# endif
&conList, &status);
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
ARInternalIdList adminGroupList;
ARContainerOwnerObjList ownerObjList;
char *label = CPNULL;
char *description = CPNULL;
unsigned int type;
ARReferenceList references;
char *helpText = CPNULL;
ARAccessNameType owner;
ARTimestamp timestamp;
ARAccessNameType lastChanged;
char *changeDiary = CPNULL;
ARPropList objPropList;
int tlist[] = {ARREF_ALL};
/* int i; */
ARDiaryList diaryList;
(void) ARError_reset();
Zero(&status, 1, ARStatusList);
Zero(&refTypes, 1, ARReferenceTypeList);
Zero(&assignedGroupList, 1, ARPermissionList);
Zero(&groupList, 1, ARPermissionList);
ret = ARGetContainer(control, name,
&refTypes,
#if AR_CURRENT_API_VERSION >= 17
&assignedGroupList,
#endif
&groupList, &adminGroupList,
&ownerObjList,
&label, &description,
&type, &references, &helpText,
owner, ×tamp, lastChanged, &changeDiary,
&objPropList,
&status);
#ifdef PROFILE
((ars_ctrl *)control)->queries++;
#endif
RETVAL = newHV();
sv_2mortal( (SV*) RETVAL );
if (!ARError( ret,status)) {
AV *rtypeList = newAV(), *rnameList = newAV();
if (helpText)
hv_store(RETVAL, "helpText", strlen("helpText") , newSVpv(helpText, 0), 0);
hv_store(RETVAL, "timestamp", strlen("timestamp") , newSViv(timestamp), 0);
hv_store(RETVAL, "type", strlen("type") ,
newSVpv( ContainerTypeMap[type].name, strlen(ContainerTypeMap[type].name) ) ,
0);
hv_store(RETVAL, "name", strlen("name") , newSVpv(name, 0), 0);
hv_store(RETVAL, "owner", strlen("owner") , newSVpv(owner, 0), 0);
hv_store(RETVAL, "lastChanged", strlen("lastChanged") ,
newSVpv(lastChanged, 0), 0);
if (changeDiary) {
ret = ARDecodeDiary(control, changeDiary, &diaryList, &status);
if (!ARError(ret, status)) {
hv_store(RETVAL, "changeDiary", strlen("changeDiary") ,
perl_ARList(control, (ARList *)&diaryList,
(ARS_fn)perl_diary,
sizeof(ARDiaryStruct)), 0);
FreeARDiaryList(&diaryList, FALSE);
}
}
hv_store(RETVAL, "referenceList", strlen("referenceList") ,
perl_ARReferenceList(control, &references), 0);
if (label)
hv_store(RETVAL, "label", strlen("label") , newSVpv(label, 0), 0);
hv_store(RETVAL, "description", strlen("description") , newSVpv(description, 0), 0);
hv_store(RETVAL, "numReferences", strlen("numReferences") , newSViv(references.numItems), 0);
FreeARPermissionList(&groupList,FALSE);
FreeARInternalIdList(&adminGroupList,FALSE);
FreeARContainerOwnerObjList(&ownerObjList,FALSE);
FreeARReferenceList(&references,FALSE);
FreeARPropList(&objPropList, FALSE);
if(helpText)
arsperl_FreeARTextString(helpText);
if(changeDiary)
arsperl_FreeARTextString(changeDiary);
if(label)
arsperl_FreeARTextString(label);
if(description)
arsperl_FreeARTextString(description);
}
}
OUTPUT:
RETVAL
void
ARInternalId focusField;
unsigned int enable = 0;
ARActiveLinkActionList actionList;
ARActiveLinkActionList elseList;
ARWorkflowConnectStruct schemaList;
ARPropList objPropList;
char *helpText = CPNULL;
ARTimestamp timestamp;
ARAccessNameType owner;
ARAccessNameType lastChanged;
char *changeDiary = CPNULL;
ARStatusList status;
SV *ref;
ARQualifierStruct *query;
ARDiaryList diaryList;
AMALLOCNN(query,1,ARQualifierStruct);
(void) ARError_reset();
Zero(&assignedGroupList, 1, ARInternalIdList);
Zero(&groupList, 1, ARInternalIdList);
Zero(&objPropList, 1, ARPropList);
ret = ARGetActiveLink(ctrl, name, &order,
&schemaList, /* new in 4.5 */
#if AR_CURRENT_API_VERSION >= 17
&assignedGroupList,
#endif
&groupList,
&executeMask, &controlField, &focusField,
&enable, query, &actionList, &elseList, &helpText,
×tamp, owner, lastChanged, &changeDiary,
&objPropList, /* new in 4.5 */
#if AR_CURRENT_API_VERSION >= 14
NULL, /* errorActlinkOptions, reserved for future use */
NULL, /* errorActlinkName, reserved for future use */
#endif
&status);
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
hv_store(RETVAL, "elseList", strlen("elseList") ,
perl_ARList(ctrl,
(ARList *)&elseList,
(ARS_fn)perl_ARActiveLinkActionStruct,
sizeof(ARActiveLinkActionStruct)), 0);
if (helpText)
hv_store(RETVAL, "helpText", strlen("helpText") , newSVpv(helpText,0), 0);
hv_store(RETVAL, "timestamp", strlen("timestamp") , newSViv(timestamp), 0);
hv_store(RETVAL, "owner", strlen("owner") , newSVpv(owner,0), 0);
hv_store(RETVAL, "lastChanged", strlen("lastChanged") , newSVpv(lastChanged,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);
}
}
FreeARInternalIdList(&groupList,FALSE);
FreeARActiveLinkActionList(&actionList,FALSE);
FreeARActiveLinkActionList(&elseList,FALSE);
FreeARWorkflowConnectStruct(&schemaList, FALSE);
FreeARPropList(&objPropList, FALSE);
if(helpText) arsperl_FreeARTextString(helpText);
if(changeDiary) arsperl_FreeARTextString(changeDiary);
}else{
XSRETURN_UNDEF;
}
}
OUTPUT:
RETVAL
ars_GetFilter(ctrl,name)
ARControlStruct * ctrl
char * name
CODE:
{
int ret;
unsigned int order;
unsigned int opSet;
unsigned int enable;
char *helpText = CPNULL;
char *changeDiary = CPNULL;
ARFilterActionList actionList;
ARFilterActionList elseList;
ARTimestamp timestamp;
ARAccessNameType owner;
ARAccessNameType lastChanged;
ARStatusList status;
SV *ref;
ARQualifierStruct *query;
ARDiaryList diaryList;
ARWorkflowConnectStruct schemaList;
Zero(&status, 1,ARStatusList);
Zero(&schemaList, 1, ARWorkflowConnectStruct);
Zero(&objPropList, 1, ARPropList);
#if AR_CURRENT_API_VERSION >= 13
Zero(&errorFilterName, 1,ARNameType);
#endif
ret = ARGetFilter(ctrl, name, &order,
&schemaList,
&opSet, &enable,
query, &actionList, &elseList, &helpText,
×tamp, owner, lastChanged, &changeDiary,
&objPropList,
#if AR_CURRENT_API_VERSION >= 13
&errorFilterOptions,
errorFilterName,
#endif
&status);
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
if (!ARError( ret,status)) {
hv_store(RETVAL, "elseList", strlen("elseList") ,
perl_ARList(ctrl,
(ARList *)&elseList,
(ARS_fn)perl_ARFilterActionStruct,
sizeof(ARFilterActionStruct)), 0);
if(helpText)
hv_store(RETVAL, "helpText", strlen("helpText") , newSVpv(helpText, 0), 0);
hv_store(RETVAL, "timestamp", strlen("timestamp") , newSViv(timestamp), 0);
hv_store(RETVAL, "owner", strlen("owner") , newSVpv(owner, 0), 0);
hv_store(RETVAL, "lastChanged", strlen("lastChanged") , newSVpv(lastChanged, 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);
}
}
#if AR_CURRENT_API_VERSION >= 13
hv_store(RETVAL, "errorFilterOptions", strlen("errorFilterOptions") , newSViv(errorFilterOptions), 0);
hv_store(RETVAL, "errorFilterName", strlen("errorFilterName") , newSVpv(errorFilterName, 0), 0);
#endif
FreeARFilterActionList(&actionList,FALSE);
FreeARFilterActionList(&elseList,FALSE);
FreeARWorkflowConnectStruct(&schemaList, FALSE);
FreeARPropList(&objPropList, FALSE);
if(helpText) {
AP_FREE(helpText);
}
if(changeDiary) {
AP_FREE(changeDiary);
}
}else{
XSRETURN_UNDEF;
}
}
OUTPUT:
RETVAL
void
ars_GetServerStatistics(ctrl,...)
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);
hv_store(RETVAL, "timestamp", strlen("timestamp") , newSViv(timestamp), 0);
hv_store(RETVAL, "owner", strlen("owner") , newSVpv(owner, 0), 0);
hv_store(RETVAL, "lastChanged", strlen("lastChanged") , newSVpv(lastChanged, 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;
}
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)
#if AR_EXPORT_VERSION >= 9L
ARAuditInfoStruct auditInfo;
#endif
ARInternalIdList adminGroupList;
AREntryListFieldList getListFields;
ARIndexList indexList;
char *helpText = CPNULL;
ARTimestamp timestamp;
ARAccessNameType owner;
ARAccessNameType lastChanged;
char *changeDiary = CPNULL;
ARDiaryList diaryList;
ARCompoundSchema schema;
ARSortList sortList;
ARPropList objPropList;
ARNameType defaultVui;
(void) ARError_reset();
Zero(&status, 1, ARStatusList);
Zero(&assignedGroupList, 1, ARPermissionList);
Zero(&groupList, 1, ARPermissionList);
&groupList, &adminGroupList, &getListFields,
&sortList, &indexList,
#if AR_EXPORT_VERSION >= 8L
&infoStruct,
#endif
#if AR_EXPORT_VERSION >= 9L
&auditInfo,
#endif
defaultVui,
&helpText, ×tamp, owner,
lastChanged, &changeDiary,
&objPropList,
&status);
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
if (!ARError( ret,status)) {
#if AR_EXPORT_VERSION >= 5
hv_store(RETVAL, "objPropList", strlen("objPropList") ,
perl_ARPropList(ctrl, &objPropList), 0);
#endif
perl_ARList(ctrl, (ARList *)&indexList,
(ARS_fn)perl_ARIndexStruct,
sizeof(ARIndexStruct)), 0);
if (helpText)
hv_store(RETVAL, "helpText", strlen("helpText") , newSVpv(helpText, 0), 0);
hv_store(RETVAL, "timestamp", strlen("timestamp") , newSViv(timestamp), 0);
hv_store(RETVAL, "owner", strlen("owner") , newSVpv(owner, 0), 0);
hv_store(RETVAL, "lastChanged", strlen("lastChanged") ,
newSVpv(lastChanged, 0), 0);
hv_store(RETVAL, "name", strlen("name") , newSVpv(name, 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);
}
}
hv_store(RETVAL, "schema", strlen("schema") ,
perl_ARCompoundSchema(ctrl, &schema), 0);
hv_store(RETVAL, "sortList", strlen("sortList") ,
hv_store(RETVAL, "auditInfo", strlen("auditInfo") ,
perl_ARAuditInfoStruct(ctrl, &auditInfo), 0);
#endif
FreeARPermissionList(&groupList,FALSE);
FreeARInternalIdList(&adminGroupList,FALSE);
FreeAREntryListFieldList(&getListFields,FALSE);
FreeARIndexList(&indexList,FALSE);
if(helpText) {
AP_FREE(helpText);
}
if(changeDiary) {
AP_FREE(changeDiary);
}
FreeARCompoundSchema(&schema,FALSE);
FreeARSortList(&sortList,FALSE);
}
}
OUTPUT:
RETVAL
void
ars_GetListActiveLink(ctrl,schema=NULL,changedSince=0)
ARControlStruct * ctrl
char * schema
int changedSince
PPCODE:
{
ARNameList nameList;
ARStatusList status;
ARPropList propList;
int ret = 0;
unsigned int i = 0;
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(&nameList, 1, ARNameList);
Zero(&propList, 1, ARPropList);
#if AR_EXPORT_VERSION >= 8L
Zero(&propList, 1, ARPropList);
#endif
ret=ARGetListActiveLink(ctrl,schema,changedSince,
#if AR_EXPORT_VERSION >= 8L
&propList,
#endif
&nameList,&status);
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
if (! ARError( ret,status)) {
for (i=0; i<nameList.numItems; i++)
XPUSHs(sv_2mortal(newSVpv(nameList.nameList[i],0)));
ARPermissionList assignedGroupList;
ARPermissionList permissions;
ARFieldLimitStruct limit;
ARNameType fieldName;
ARFieldMappingStruct fieldMap;
ARDisplayInstanceList displayList;
char *helpText = CPNULL;
ARTimestamp timestamp;
ARAccessNameType owner;
ARAccessNameType lastChanged;
char *changeDiary = CPNULL;
ARDiaryList diaryList;
ARPropList objPropList;
(void) ARError_reset();
Zero(&Status, 1, ARStatusList);
Zero(&defaultVal, 1, ARValueStruct);
Zero(&assignedGroupList, 1, ARPermissionList);
Zero(&permissions, 1, ARPermissionList);
Zero(&limit, 1, ARFieldLimitStruct);
Zero(fieldName, 1, ARNameType);
Zero(&fieldMap, 1, ARFieldMappingStruct);
Zero(&displayList, 1, ARDisplayInstanceList);
Zero(×tamp, 1, ARTimestamp);
Zero(owner, 1, ARAccessNameType);
Zero(lastChanged, 1, ARAccessNameType);
Zero(&diaryList, 1, ARDiaryList);
Zero(&objPropList, 1, ARPropList);
#if AR_CURRENT_API_VERSION >= 17
ret = ARGetFieldCached(ctrl, schema, id, fieldName, &fieldMap, &dataType, &option, &createMode, &fieldOption, &defaultVal, &assignedGroupList, &permissions, &limit, &displayList, &helpText, ×tamp, owner, lastChanged, &changeDiary, &objPropLis...
#elif AR_CURRENT_API_VERSION >= 12
ret = ARGetFieldCached(ctrl, schema, id, fieldName, &fieldMap, &dataType, &option, &createMode, &fieldOption, &defaultVal, &permissions, &limit, &displayList, &helpText, ×tamp, owner, lastChanged, &changeDiary, &Status);
#else
ret = ARGetFieldCached(ctrl, schema, id, fieldName, &fieldMap, &dataType, &option, &createMode, &defaultVal, &permissions, &limit, &displayList, &helpText, ×tamp, owner, lastChanged, &changeDiary, &Status);
#endif
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
if (! ARError( ret, Status)) {
RETVAL = newHV();
sv_2mortal( (SV*) RETVAL );
/* store field id for convenience */
hv_store(RETVAL, "fieldId", strlen("fieldId") , newSViv(id), 0);
if (createMode == AR_FIELD_OPEN_AT_CREATE)
perl_ARDisplayInstanceList(ctrl, &displayList), 0);
if (helpText)
hv_store(RETVAL, "helpText", strlen("helpText") ,
newSVpv(helpText, 0), 0);
hv_store(RETVAL, "timestamp", strlen("timestamp") ,
newSViv(timestamp), 0);
hv_store(RETVAL, "owner", strlen("owner") ,
newSVpv(owner, 0), 0);
hv_store(RETVAL, "lastChanged", strlen("lastChanged") ,
newSVpv(lastChanged, 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);
}
}
FreeARFieldLimitStruct(&limit,FALSE);
FreeARDisplayInstanceList(&displayList,FALSE);
if(helpText) {
/* AP_FREE(helpText); */ /* TS 20060207 disabled bc of memory errors with 5.8.8 */
}
if(changeDiary) {
AP_FREE(changeDiary);
}
}else{
XSRETURN_UNDEF;
}
}
OUTPUT:
RETVAL
HV*
#if AR_CURRENT_API_VERSION >= 14
unsigned int enable = 0;
ARImageDataStruct content;
char *imageType;
ARTimestamp timestamp;
char *checkSum = CPNULL;
char *description = CPNULL;
char *helpText = CPNULL;
ARAccessNameType owner;
ARAccessNameType lastChanged;
char *changeDiary = CPNULL;
ARPropList objPropList;
ARDiaryList diaryList;
int ret;
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(&content, 1, ARImageDataStruct);
Zero(×tamp, 1, ARTimestamp);
Zero(owner, 1, ARAccessNameType);
Zero(&objPropList, 1, ARPropList);
ret = ARGetImage(ctrl, name,
&content,
&imageType,
×tamp,
&checkSum,
&description,
&helpText,
owner,
lastChanged,
&changeDiary,
&objPropList,
&status );
if(!ARError( ret, status)) {
RETVAL = newHV();
sv_2mortal( (SV*) RETVAL );
hv_store(RETVAL, "name", strlen("name"), newSVpv(name, 0), 0);
hv_store(RETVAL, "imageData", strlen("imageData"),
perl_ARImageDataStruct(ctrl, &content), 0);
hv_store(RETVAL, "imageType", strlen("imageType"), newSVpv(imageType, 0), 0);
hv_store(RETVAL, "timestamp", strlen("timestamp") , newSViv(timestamp), 0);
hv_store(RETVAL, "checkSum", strlen("checkSum") , newSVpv(checkSum, 0), 0);
if( description ){
hv_store(RETVAL, "description", strlen("description") , newSVpv(description, 0), 0);
}
if( helpText ){
hv_store(RETVAL, "helpText", strlen("helpText") , newSVpv(helpText, 0), 0);
}
hv_store(RETVAL, "owner", strlen("owner") , newSVpv(owner, 0), 0);
hv_store(RETVAL, "lastChanged", strlen("lastChanged") , newSVpv(lastChanged, 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);
}
}
if(helpText) { AP_FREE(helpText); }
if(changeDiary) { AP_FREE(changeDiary); }
if(imageType) { AP_FREE(imageType); }
if(checkSum) { AP_FREE(checkSum); }
if(description) { AP_FREE(description); }
FreeARImageDataStruct(&content, FALSE);
FreeARPropList(&objPropList, FALSE);
}else{
XSRETURN_UNDEF;
}
#else /* prior to ARS 7.5 */
(void) ARError_reset();
if (structItems != NULL)
{
AP_FREE(structItems->structItemList);
AP_FREE(structItems);
}
}
OUTPUT:
RETVAL
void
ars_GetListFilter(control,schema=NULL,changedsince=0)
ARControlStruct * control
char * schema
unsigned long changedsince
PPCODE:
{
ARNameList nameList;
ARStatusList status;
#if AR_EXPORT_VERSION >= 8L
ARPropList propList;
#endif
int ret = 0;
unsigned int i = 0;
(void) ARError_reset();
#if AR_EXPORT_VERSION >= 8L
Zero(&propList, 1, ARPropList);
#endif
Zero(&nameList, 1, ARNameList);
Zero(&status, 1,ARStatusList);
ret = ARGetListFilter(control,schema,changedsince,
#if AR_EXPORT_VERSION >= 8L
&propList,
#endif
&nameList,&status);
#ifdef PROFILE
((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_GetListEscalation(control,schema=NULL,changedsince=0)
ARControlStruct * control
char * schema
unsigned long changedsince
PPCODE:
{
ARNameList nameList;
ARStatusList status;
ARPropList propList;
int ret = 0;
unsigned int i = 0;
(void) ARError_reset();
#if AR_EXPORT_VERSION >= 8L
Zero(&propList, 1,ARPropList);
#endif
Zero(&nameList, 1, ARNameList);
Zero(&status, 1,ARStatusList);
ret = ARGetListEscalation(control,schema,changedsince,
#if AR_EXPORT_VERSION >= 8L
&propList,
#endif
&nameList,&status);
#ifdef PROFILE
((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;
ARNameList actLinkNameList;
int ret = 0;
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++)
XPUSHs(sv_2mortal(newSVpv(nameList.nameList[i], 0)));
FreeARNameList(&nameList,FALSE);
}
}
void
ars_GetListImage(ctrl,schema=NULL,changedSince=0,imageType=NULL)
ARControlStruct * ctrl
SV * schema
ARTimestamp changedSince
char * imageType
PPCODE:
{
ARStatusList status;
#if AR_CURRENT_API_VERSION >= 14
ARNameList schemaList;
ARNameList *schemaListPtr = NULL;
ARNameList nameList;
ARPropList propList;
int ret = 0, rv = 0;
schemaList.numItems = 1;
schemaList.nameList = (ARNameType*) MALLOCNN(sizeof(ARNameType) * 1);
strncpy( schemaList.nameList[0], str, AR_MAX_NAME_SIZE );
}
schemaListPtr = &schemaList;
}
if( rv == 0 ){
ret = ARGetListImage( ctrl,
schemaListPtr,
changedSince,
imageType,
#if AR_CURRENT_API_VERSION >= 19
&propList, // at the moment we don't want to search for specific properties
#endif
&nameList,
&status );
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
{
ARStatusList status;
AREscalationTmStruct escalationTm;
unsigned int enable = 0;
ARFilterActionList actionList;
ARFilterActionList elseList;
char *helpText = CPNULL;
ARTimestamp timestamp;
ARAccessNameType owner;
ARAccessNameType lastChanged;
char *changeDiary = CPNULL;
SV *ref;
int ret;
ARQualifierStruct *query = MALLOCNN(sizeof(ARQualifierStruct));
ARDiaryList diaryList;
ARWorkflowConnectStruct schemaList;
ARPropList objPropList;
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(×tamp, 1, ARTimestamp);
Zero(owner, 1, ARAccessNameType);
Zero(lastChanged, 1, ARAccessNameType);
Zero(&diaryList, 1, ARDiaryList);
Zero(&elseList, 1,ARFilterActionList);
Zero(&schemaList, 1, ARWorkflowConnectStruct);
Zero(&objPropList, 1, ARPropList);
ret = ARGetEscalation(ctrl, name, &escalationTm, &schemaList, &enable,
query, &actionList, &elseList, &helpText, ×tamp,
owner, lastChanged, &changeDiary, &objPropList, &status);
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
if(!ARError( ret, status)) {
RETVAL = newHV();
sv_2mortal( (SV*) RETVAL );
hv_store(RETVAL, "name", strlen("name") , newSVpv(name, 0), 0);
hv_store(RETVAL, "schemaList", strlen("schemaList") , /* WorkflowConnectStruct */
perl_ARNameList(ctrl, schemaList.u.schemaList), 0);
hv_store(RETVAL, "objPropList", strlen("objPropList") ,
perl_ARPropList(ctrl, &objPropList), 0);
hv_store(RETVAL, "enable", strlen("enable") , newSViv(enable), 0);
hv_store(RETVAL, "timestamp", strlen("timestamp") , newSViv(timestamp), 0);
if(helpText)
hv_store(RETVAL, "helpText", strlen("helpText") , newSVpv(helpText, 0), 0);
hv_store(RETVAL, "owner", strlen("owner") , newSVpv(owner, 0), 0);
hv_store(RETVAL, "lastChanged", strlen("lastChanged") , newSVpv(lastChanged, 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);
}
}
ref = newSViv(0);
sv_setref_pv(ref, "ARQualifierStructPtr", (void *)query);
hv_store(RETVAL, "query", strlen("query") , ref, 0);
newSViv(escalationTm.u.date.minute), 0);
break;
}
FreeARFilterActionList(&actionList, FALSE);
FreeARFilterActionList(&elseList, FALSE);
FreeARWorkflowConnectStruct(&schemaList, FALSE);
FreeARPropList(&objPropList, FALSE);
if(helpText) {
arsperl_FreeARTextString(helpText);
}
if(changeDiary) {
arsperl_FreeARTextString(changeDiary);
}
}else{
XSRETURN_UNDEF;
}
}
OUTPUT:
RETVAL
HV *
ars_GetFullTextInfo(ctrl)
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED, "Not available in pre-2.1 ARS");
#endif
if(RETVAL != NULL) {
XPUSHs(sv_2mortal(newRV_noinc((SV *)RETVAL)));
} else {
XPUSHs(sv_2mortal(newSViv(0)));
}
}
void
ars_GetListUser(ctrl, userListType=AR_USER_LIST_MYSELF,changedSince=0)
ARControlStruct * ctrl
unsigned int userListType
ARTimestamp changedSince
PPCODE:
{
ARStatusList status;
ARUserInfoList userList;
int ret = 0;
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(&userList, 1, ARUserInfoList);
ret = ARGetListUser(ctrl, userListType,
#if AR_EXPORT_VERSION >= 6
changedSince,
#endif
&userList, &status);
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
if(!ARError( ret, status)) {
unsigned int i, j;
for(i = 0; i < userList.numItems; i++) {
HV *userInfo = newHV();
AV *licenseTag = newAV(),
hv_store(userInfo, "licenseTag", strlen("licenseTag") , newRV_noinc((SV *)licenseTag), 0);
hv_store(userInfo, "licenseType", strlen("licenseType") , newRV_noinc((SV *)licenseType), 0);
hv_store(userInfo, "currentLicenseType", strlen("currentLicenseType") , newRV_noinc((SV *)currentLicenseType), 0);
XPUSHs(sv_2mortal(newRV_noinc((SV *)userInfo)));
}
FreeARUserInfoList(&userList, FALSE);
}
}
void
ars_GetListVUI(ctrl, schema, changedSince=0)
ARControlStruct * ctrl
char * schema
unsigned int changedSince
PPCODE:
{
#if AR_EXPORT_VERSION >= 3
ARStatusList status;
ARInternalIdList idList;
int ret = 0;
unsigned int i = 0;
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(&idList, 1, ARInternalIdList);
ret = ARGetListVUI(ctrl, schema,
changedSince,
#if AR_CURRENT_API_VERSION >= 17
NULL, /* &objPropList (undocumented by BMC) */
#endif
&idList,
&status);
#ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
#endif
if(!ARError( ret, status)) {
for(i = 0 ; i < idList.numItems ; i++) {
CODE:
{
#if AR_EXPORT_VERSION >= 3
ARStatusList status;
ARNameType vuiName;
ARPropList dPropList;
char *helpText = CPNULL;
ARTimestamp timestamp;
ARAccessNameType owner;
ARAccessNameType lastChanged;
char *changeDiary = CPNULL;
int ret = 0;
ARDiaryList diaryList;
ARPropList objPropList;
# if AR_EXPORT_VERSION >= 6
unsigned int vuiType = 0;
ARLocaleType locale;
Zero(locale, 1, ARLocaleType);
# endif
RETVAL = newHV();
sv_2mortal( (SV*) RETVAL );
Zero(&dPropList, 1, ARPropList);
Zero(&objPropList, 1, ARPropList);
Zero(×tamp, 1, ARTimestamp);
Zero(owner, 1, ARAccessNameType);
Zero(lastChanged, 1, ARAccessNameType);
ret = ARGetVUI(ctrl, schema, vuiId, vuiName,
# if AR_EXPORT_VERSION >= 6
locale, &vuiType,
# endif
&dPropList, &helpText,
×tamp, owner, lastChanged, &changeDiary,
#if AR_CURRENT_API_VERSION >= 17
&objPropList,
#endif
&status);
# ifdef PROFILE
((ars_ctrl *)ctrl)->queries++;
# endif
if(!ARError( ret, status)) {
# if AR_EXPORT_VERSION >= 6
hv_store(RETVAL, "locale", strlen("locale"), newSVpv(locale, 0), 0);
hv_store(RETVAL, "vuiType", strlen("vuiType"), newSViv(vuiType), 0);
# endif
hv_store(RETVAL, "schema", strlen("schema") , newSVpv(schema, 0), 0);
hv_store(RETVAL, "vuiId", strlen("vuiId") , newSViv(vuiId), 0);
hv_store(RETVAL, "vuiName", strlen("vuiName") , newSVpv(vuiName, 0), 0);
hv_store(RETVAL, "owner", strlen("owner") , newSVpv(owner, 0), 0);
if(helpText)
hv_store(RETVAL, "helpText", strlen("helpText") , newSVpv(helpText, 0), 0);
hv_store(RETVAL, "lastChanged", strlen("lastChanged") , newSVpv(lastChanged, 0), 0);
if (changeDiary) {
#if AR_EXPORT_VERSION >= 4
ret = ARDecodeDiary(ctrl, changeDiary, &diaryList, &status);
#else
ret = ARDecodeDiary(changeDiary, &diaryList, &status);
#endif
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);
}
}
hv_store(RETVAL, "timestamp", strlen("timestamp") , newSViv(timestamp), 0);
hv_store(RETVAL, "props", strlen("props") ,
perl_ARList( ctrl,
perl_ARList( ctrl,
(ARList *)&objPropList,
(ARS_fn)perl_ARPropStruct,
sizeof(ARPropStruct)), 0);
}
FreeARPropList(&dPropList, FALSE);
FreeARPropList(&objPropList, FALSE);
if(helpText) {
AP_FREE(helpText);
}
if(changeDiary) {
AP_FREE(changeDiary);
}
#else /* ars 2.x */
(void) ARError_reset();
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED, "Not available in 2.x");
RETVAL = newHV();
#endif
}
OUTPUT:
RETVAL
{
#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);
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += rev_ARPropList( ctrl, menuDef, "objPropList", &objPropList );
}
if( hv_exists(menuDef,"helpText",8) ){
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;
}else{
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
}
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);
objPropList = (ARPropList*) MALLOCNN( sizeof(ARPropList) );
rv += rev_ARPropList( ctrl, menuDef, "objPropList", objPropList );
}
if( hv_exists(menuDef,"helpText",8) ){
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;
}else{
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,
unsigned int createMode = AR_FIELD_PROTECTED_AT_CREATE;
#if AR_EXPORT_VERSION >= 9L
unsigned int fieldOption;
#endif
ARValueStruct *defaultVal = NULL;
ARPermissionList permissions;
ARFieldLimitStruct *limit = NULL;
ARDisplayInstanceList dInstanceList;
char *helpText = NULL;
ARAccessNameType owner;
char *changeDiary = NULL;
ARPropList *objPropList = NULL;
ARStatusList status;
HV *fieldDef = NULL;
SV **pSvTemp;
char strTemp[STR_TEMP_SIZE+1];
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(owner, 1,ARAccessNameType);
Zero(fieldName, 1,ARNameType);
#endif
rv += rev_ARDisplayInstanceList( ctrl, fieldDef, "displayInstanceList", &dInstanceList );
if( hv_exists(fieldDef,"helpText",8) ){
rv += strmakHVal( fieldDef, "helpText", &helpText );
}
if( hv_exists(fieldDef,"owner",5) ){
rv += strcpyHVal( fieldDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
}
if( hv_exists(fieldDef,"changeDiary",11) ){
rv += strmakHVal( fieldDef, "changeDiary", &changeDiary );
}
if( rv == 0 ){
ret = ARCreateField( ctrl,
schema,
&fieldId,
reservedIdOK,
fieldName,
&fieldMap,
dataType,
createMode,
#if AR_EXPORT_VERSION >= 9L
fieldOption,
#endif
defaultVal,
&permissions,
limit,
&dInstanceList,
helpText,
owner,
changeDiary,
#if AR_CURRENT_API_VERSION >= 17
objPropList,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : fieldId;
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
RETVAL = 0;
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
if( defaultVal != NULL ){
FreeARValueStruct( defaultVal, TRUE );
}
FreeARPermissionList( &permissions, FALSE );
if( limit != NULL ){
FreeARFieldLimitStruct( limit, TRUE );
}
FreeARDisplayInstanceList( &dInstanceList, FALSE );
/*
ARValueStruct *defaultVal = NULL;
ARPermissionList *permissions = NULL;
ARFieldLimitStruct *limit = NULL;
ARDisplayInstanceList *dInstanceList = NULL;
char *helpText = NULL;
ARAccessNameType owner;
char *ownerPtr = NULL;
#if AR_EXPORT_VERSION >= 9L
unsigned int setFieldOptions = 0;
#endif
char *changeDiary = NULL;
ARPropList *objPropList = NULL;
ARStatusList status;
HV *fieldDef = NULL;
SV **pSvTemp;
char strTemp[STR_TEMP_SIZE+1];
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(fieldName, 1,ARNameType);
Zero(owner, 1,ARAccessNameType);
if( hv_exists(fieldDef,"owner",5) ){
rv += strcpyHVal( fieldDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
ownerPtr = owner;
}
#if AR_EXPORT_VERSION >= 9L
pSvTemp = hv_fetch( fieldDef, "setFieldOptions", strlen("setFieldOptions") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
rv += uintcpyHVal( fieldDef, "setFieldOptions", &setFieldOptions );
}
#endif
if( hv_exists(fieldDef,"changeDiary",11) ){
rv += strmakHVal( fieldDef, "changeDiary", &changeDiary );
}
if( rv == 0 ){
ret = ARSetField( ctrl,
schema,
fieldId,
fieldNamePtr,
fieldMap,
option,
createMode,
#if AR_EXPORT_VERSION >= 9L
fieldOption,
#endif
defaultVal,
permissions,
limit,
dInstanceList,
helpText,
ownerPtr,
changeDiary,
#if AR_EXPORT_VERSION >= 9L
setFieldOptions,
#endif
#if AR_CURRENT_API_VERSION >= 17
objPropList,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : fieldId;
}else{
if( createMode != NULL ){
AP_FREE( createMode );
}
if( option != NULL ){
AP_FREE( option );
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
if( defaultVal != NULL ){
FreeARValueStruct( defaultVal, TRUE );
}
if( permissions != NULL ){
FreeARPermissionList( permissions, TRUE );
}
if( limit != NULL ){
FreeARFieldLimitStruct( limit, TRUE );
}
ARIndexList indexList;
#if AR_EXPORT_VERSION >= 8L
ARArchiveInfoStruct *archiveInfo = NULL;
#endif
#if AR_EXPORT_VERSION >= 9L
ARAuditInfoStruct *auditInfo = NULL;
#endif
ARNameType defaultVui;
char *helpText = NULL;
ARAccessNameType owner;
char *changeDiary = NULL;
ARPropList *objPropList = NULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
HV *schemaDef = NULL;
SV **pSvTemp;
/* char strTemp[STR_TEMP_SIZE+1]; */
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(name, 1,ARNameType);
}
#endif
rv += strcpyHVal( schemaDef, "defaultVui", defaultVui, AR_MAX_NAME_SIZE );
if( hv_exists(schemaDef,"helpText",8) ){
rv += strmakHVal( schemaDef, "helpText", &helpText );
}
if( hv_exists(schemaDef,"owner",5) ){
rv += strcpyHVal( schemaDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
}
if( hv_exists(schemaDef,"changeDiary",11) ){
rv += strmakHVal( schemaDef, "changeDiary", &changeDiary );
}
pSvTemp = hv_fetch( schemaDef, "objPropList", strlen("objPropList") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
objPropList = (ARPropList*) MALLOCNN( sizeof(ARPropList) );
rv += rev_ARPropList( ctrl, schemaDef, "objPropList", objPropList );
}
if( rv == 0 ){
ret = ARCreateSchema( ctrl,
&indexList,
#if AR_EXPORT_VERSION >= 8L
archiveInfo,
#endif
#if AR_EXPORT_VERSION >= 9L
auditInfo,
#endif
defaultVui,
helpText,
owner,
changeDiary,
objPropList,
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : 1;
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
RETVAL = 0;
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
FreeARCompoundSchema( &compoundSchema, FALSE ); // TODO: we need our own free routine
AP_FREE(groupList.permissionList);
AP_FREE(admingrpList.internalIdList);
AP_FREE(getListFields.fieldsList);
AP_FREE(sortList.sortList);
AP_FREE(indexList.indexList);
#if AR_EXPORT_VERSION >= 8L
if( archiveInfo != NULL ){
FreeARArchiveInfoStruct( archiveInfo, TRUE ); // TODO: we need our own free routine
ARArchiveInfoStruct *archiveInfo = NULL;
#endif
#if AR_EXPORT_VERSION >= 9L
ARAuditInfoStruct *auditInfo = NULL;
#endif
ARNameType defaultVui;
char *defaultVuiPtr = NULL;
char *helpText = NULL;
ARAccessNameType owner;
char *ownerPtr = NULL;
char *changeDiary = NULL;
ARPropList *objPropList = NULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
HV *schemaDef = NULL;
SV **pSvTemp;
/* char strTemp[STR_TEMP_SIZE+1]; */
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(newName, 1,ARNameType);
defaultVuiPtr = defaultVui;
}
if( hv_exists(schemaDef,"helpText",8) ){
rv += strmakHVal( schemaDef, "helpText", &helpText );
}
if( hv_exists(schemaDef,"owner",5) ){
rv += strcpyHVal( schemaDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
ownerPtr = owner;
}
if( hv_exists(schemaDef,"changeDiary",11) ){
rv += strmakHVal( schemaDef, "changeDiary", &changeDiary );
}
pSvTemp = hv_fetch( schemaDef, "objPropList", strlen("objPropList") , 0 );
if( pSvTemp && *pSvTemp && SvTYPE(*pSvTemp) != SVt_NULL ){
objPropList = (ARPropList*) MALLOCNN( sizeof(ARPropList) );
rv += rev_ARPropList( ctrl, schemaDef, "objPropList", objPropList );
}
if( rv == 0 ){
indexList,
#if AR_EXPORT_VERSION >= 8L
archiveInfo,
#endif
#if AR_EXPORT_VERSION >= 9L
auditInfo,
#endif
defaultVuiPtr,
helpText,
ownerPtr,
changeDiary,
objPropList,
#if AR_EXPORT_VERSION >= 8L
0, /* setOption, reserved for future use */
#endif
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : 1;
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
RETVAL = 0;
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
if( compoundSchema != NULL ){
FreeARCompoundSchema( compoundSchema, TRUE );
}
if( groupList != NULL ){
FreeARPermissionList( groupList, TRUE );
}
if( admingrpList != NULL ){
FreeARInternalIdList( admingrpList, TRUE );
}
{
#if AR_EXPORT_VERSION >= 6L
int ret = 0, rv = 0;
ARInternalId vuiId = 0;
ARNameType vuiName;
ARLocaleType locale;
unsigned int vuiType;
ARPropList dPropList;
char *helpText = NULL;
ARAccessNameType owner;
char *changeDiary = NULL;
ARPropList objPropList;
ARStatusList status;
HV *vuiDef = NULL;
SV **pSvTemp;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(vuiName, 1,ARNameType);
Zero(locale, 1,ARLocaleType);
Zero(&dPropList, 1,ARPropList);
/* objPropList.props = (ARPropStruct*) MALLOCNN( sizeof(ARPropStruct) ); */
rv += rev_ARPropList( ctrl, vuiDef, "objPropList", &objPropList );
}
#endif
if( hv_exists(vuiDef,"helpText",8) ){
rv += strmakHVal( vuiDef, "helpText", &helpText );
}
if( hv_exists(vuiDef,"owner",5) ){
rv += strcpyHVal( vuiDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
}
if( hv_exists(vuiDef,"changeDiary",11) ){
rv += strmakHVal( vuiDef, "changeDiary", &changeDiary );
}
if( rv == 0 ){
ret = ARCreateVUI( ctrl,
schemaName,
&vuiId,
vuiName,
locale,
vuiType,
&dPropList,
helpText,
owner,
changeDiary,
#if AR_CURRENT_API_VERSION >= 17
&objPropList,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : 1;
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
RETVAL = 0;
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
FreeARPropList( &dPropList, FALSE );
FreeARPropList( &objPropList, FALSE );
#else /* < 5.0 */
XPUSHs(sv_2mortal(newSViv(0))); /* ERR */
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED,
"ARSperl supports CreateVUI() only for ARSystem >= 5.0");
RETVAL = AR_RETURN_ERROR;
#endif
}
ARNameType vuiName;
char *vuiNamePtr = NULL;
ARLocaleType locale;
char *localePtr = NULL;
unsigned int vuiType;
unsigned int *vuiTypePtr = NULL;
ARPropList *dPropList = NULL;
char *helpText = NULL;
ARAccessNameType owner;
char *ownerPtr = NULL;
char *changeDiary = NULL;
ARPropList *objPropList = NULL;
ARStatusList status;
HV *vuiDef = NULL;
SV **pSvTemp;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(vuiName, 1,ARNameType);
Zero(locale, 1,ARLocaleType);
Zero(owner, 1,ARAccessNameType);
}
#endif
if( hv_exists(vuiDef,"helpText",8) ){
rv += strmakHVal( vuiDef, "helpText", &helpText );
}
if( hv_exists(vuiDef,"owner",5) ){
rv += strcpyHVal( vuiDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
ownerPtr = owner;
}
if( hv_exists(vuiDef,"changeDiary",11) ){
rv += strmakHVal( vuiDef, "changeDiary", &changeDiary );
}
if( rv == 0 ){
ret = ARSetVUI( ctrl,
schemaName,
vuiId,
vuiNamePtr,
localePtr,
vuiTypePtr,
dPropList,
helpText,
owner,
changeDiary,
#if AR_CURRENT_API_VERSION >= 17
objPropList,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : 1;
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
RETVAL = 0;
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
FreeARPropList( dPropList, TRUE );
FreeARPropList( objPropList, TRUE );
#else /* < 5.0 */
XPUSHs(sv_2mortal(newSViv(0))); /* ERR */
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED,
"ARSperl supports SetVUI() only for ARSystem >= 5.0");
RETVAL = AR_RETURN_ERROR;
#endif
}
ARPermissionList groupList;
ARInternalIdList admingrpList;
ARContainerOwnerObjList ownerObjList;
char *label = NULL;
char *description = NULL;
char *typeStr = NULL;
unsigned int type;
ARReferenceList references;
char *helpText = NULL;
ARAccessNameType owner;
char *changeDiary = NULL;
ARPropList objPropList;
char *objectModificationLogLabel = NULL;
ARStatusList status;
HV *containerDef = NULL;
SV **pSvTemp;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(name, 1,ARNameType);
}
if( hv_exists(containerDef,"description",11) ){
rv += strmakHVal( containerDef, "description", &description );
}
if( hv_exists(containerDef,"helpText",8) ){
rv += strmakHVal( containerDef, "helpText", &helpText );
}
if( hv_exists(containerDef,"owner",5) ){
rv += strcpyHVal( containerDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
}
if( hv_exists(containerDef,"changeDiary",11) ){
rv += strmakHVal( containerDef, "changeDiary", &changeDiary );
}
if( rv == 0 ){
ret = ARCreateContainer( ctrl,
name,
&groupList,
&admingrpList,
&ownerObjList,
label,
description,
type,
&references,
removeFlag,
helpText,
owner,
changeDiary,
&objPropList,
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : 1;
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
RETVAL = 0;
if( label != NULL ){
AP_FREE( label );
}
if( description != NULL ){
AP_FREE( description );
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
FreeARPermissionList( &groupList, FALSE );
FreeARInternalIdList( &admingrpList, FALSE );
FreeARContainerOwnerObjList( &ownerObjList, FALSE );
FreeARReferenceList( &references, FALSE );
FreeARPropList( &objPropList, FALSE );
#else /* < 5.0 */
XPUSHs(sv_2mortal(newSViv(0))); /* ERR */
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED,
"ARSperl supports CreateContainer() only for ARSystem >= 5.0");
ARInternalIdList *admingrpList = NULL;
ARContainerOwnerObjList *ownerObjList = NULL;
char *label = NULL;
char *description = NULL;
char *typeStr = NULL;
unsigned int type;
unsigned int *typePtr = NULL;
ARReferenceList *references = NULL;
char *helpText = NULL;
ARAccessNameType owner;
char *changeDiary = NULL;
ARPropList *objPropList = NULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
HV *containerDef = NULL;
SV **pSvTemp;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(newName, 1,ARNameType);
}
if( hv_exists(containerDef,"description",11) ){
rv += strmakHVal( containerDef, "description", &description );
}
if( hv_exists(containerDef,"helpText",8) ){
rv += strmakHVal( containerDef, "helpText", &helpText );
}
if( hv_exists(containerDef,"owner",5) ){
rv += strcpyHVal( containerDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE );
}
if( hv_exists(containerDef,"changeDiary",11) ){
rv += strmakHVal( containerDef, "changeDiary", &changeDiary );
}
if( rv == 0 ){
ret = ARSetContainer( ctrl,
name,
newNamePtr,
groupList,
admingrpList,
ownerObjList,
label,
description,
typePtr,
references,
removeFlag,
helpText,
owner,
changeDiary,
objPropList,
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status );
RETVAL = ARError(ret,status) ? 0 : 1;
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
RETVAL = 0;
if( label != NULL ){
AP_FREE( label );
}
if( description != NULL ){
AP_FREE( description );
}
if( helpText != NULL ){
AP_FREE( helpText );
}
if( changeDiary != NULL ){
AP_FREE( changeDiary );
}
if( groupList != NULL ){
FreeARPermissionList( groupList, TRUE );
}
if( admingrpList != NULL ){
FreeARInternalIdList( admingrpList, TRUE );
}
if( ownerObjList != NULL ){
FreeARContainerOwnerObjList( ownerObjList, TRUE );
}
ARDisplayList displayList;
#endif
unsigned int enable = 0;
ARQualifierStruct *query;
ARActiveLinkActionList actionList;
#if AR_EXPORT_VERSION >= 3
ARActiveLinkActionList elseList;
#endif
char *helpText = CPNULL;
ARAccessNameType owner;
char *changeDiary = CPNULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
#if AR_EXPORT_VERSION >= 5
ARNameList schemaNameList;
ARWorkflowConnectStruct schemaList;
ARPropList objPropList;
#endif
RETVAL = 0; /* assume error */
(void) ARError_reset();
if(hv_exists(alDef, "owner", strlen("owner") ))
rv += strcpyHVal( alDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE);
else
strncpy(owner, ctrl->user, sizeof(ARAccessNameType));
/* these two are optional, so if the calls return warnings
* it probably indicates that the hash keys don't exist and
* we'll ignore it unless an actual failure code is returned.
*/
if(hv_exists(alDef, "changeDiary", strlen("changeDiary") ))
rv += strmakHVal( alDef, "changeDiary", &changeDiary);
if(hv_exists(alDef, "helpText", strlen("helpText") ))
rv += strmakHVal( alDef, "helpText", &helpText);
/* now handle the action & else (3.x) lists */
rv += rev_ARActiveLinkActionList(ctrl, alDef, "actionList",
&actionList);
#if AR_EXPORT_VERSION >= 3
rv += rev_ARActiveLinkActionList(ctrl, alDef, "elseList",
&elseList);
* built. we can call the api routine to create the
* active link.
*/
if(rv == 0) {
#if AR_EXPORT_VERSION >= 5
ret = ARCreateActiveLink(ctrl, name, order, &schemaList,
&groupList, executeMask,
&controlField, &focusField,
enable, query,
&actionList, &elseList,
helpText, owner, changeDiary,
&objPropList,
#if AR_CURRENT_API_VERSION >= 14
0, /* errorActlinkOptions, reserved for future use */
NULL, /* errorActlinkName, reserved for future use */
#endif
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status);
#elif AR_EXPORT_VERSION >= 3
ret = ARCreateActiveLink(ctrl, name, order, schema,
&groupList, executeMask,
&controlField, &focusField,
enable, query,
&actionList, &elseList,
helpText, owner, changeDiary,
&status);
#else /* 2.x */
#endif
if(!ARError( ret, status))
RETVAL = 1;
} else
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
if (helpText) {
AP_FREE(helpText);
}
if (changeDiary) {
AP_FREE(changeDiary);
}
FreeARInternalIdList(&groupList, FALSE);
FreeARActiveLinkActionList(&actionList, FALSE);
#if AR_EXPORT_VERSION >= 3
FreeARActiveLinkActionList(&elseList, FALSE);
#else /* 2.x */
FreeARDisplayList(&displayList, FALSE);
#endif
#if AR_EXPORT_VERSION >= 5
FreeARPropList(&objPropList, FALSE);
unsigned int *order = NULL;
ARInternalId *controlField = NULL;
ARInternalId *focusField = NULL;
unsigned int *enable = NULL;
ARQualifierStruct *query = NULL;
ARActiveLinkActionList *actionList = NULL;
ARActiveLinkActionList *elseList = NULL;
char *helpText = CPNULL;
ARAccessNameType owner;
char *ownerPtr = NULL;
char *changeDiary = CPNULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
ARWorkflowConnectStruct *schemaList = NULL;
ARPropList *objPropList = NULL;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(newName, 1, ARNameType);
Zero(owner, 1, ARAccessNameType);
if(hv_exists(objDef, "owner", strlen("owner") )){
rv += strcpyHVal( objDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE);
ownerPtr = owner;
}
/* these two are optional, so if the calls return warnings
* it probably indicates that the hash keys don't exist and
* we'll ignore it unless an actual failure code is returned.
*/
if(hv_exists(objDef, "changeDiary", strlen("changeDiary") ))
rv += strmakHVal( objDef, "changeDiary", &changeDiary);
if(hv_exists(objDef, "helpText", strlen("helpText") ))
rv += strmakHVal( objDef, "helpText", &helpText);
/* now handle the action & else (3.x) lists */
if(hv_exists(objDef, "actionList", strlen("actionList") )){
actionList = (ARActiveLinkActionList*) MALLOCNN(sizeof(ARActiveLinkActionList));
rv += rev_ARActiveLinkActionList(ctrl, objDef, "actionList", actionList);
}
/* at this point all datastructures (hopefully) are
* built. we can call the api routine to modify the workflow object
*/
if(rv == 0) {
ret = ARSetActiveLink(ctrl, name, newNamePtr, order, schemaList,
groupList, executeMask,
controlField, focusField,
enable, query,
actionList, elseList,
helpText, ownerPtr, changeDiary,
objPropList,
#if AR_CURRENT_API_VERSION >= 14
NULL, /* errorActlinkOptions, reserved for future use */
NULL, /* errorActlinkName, reserved for future use */
#endif
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status);
if(!ARError( ret, status))
RETVAL = 1;
} else
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
if (helpText) {
AP_FREE(helpText);
}
if (changeDiary) {
AP_FREE(changeDiary);
}
if( order != NULL ) { AP_FREE(order); }
if( executeMask != NULL ) { AP_FREE(executeMask); }
if( enable != NULL ) { AP_FREE(enable); }
if( focusField != NULL ) { AP_FREE(focusField); }
if( controlField != NULL ) { AP_FREE(controlField); }
/* if( query != NULL ) { FreeARARQualifierStruct( query, TRUE ); } */
if( schemaList != NULL ) { FreeARWorkflowConnectStruct( schemaList, TRUE ); }
#if AR_EXPORT_VERSION >= 5
int ret = 0, rv = 0;
ARNameType schema, name;
unsigned int opSet, order;
unsigned int enable = 0;
ARQualifierStruct *query;
ARFilterActionList actionList;
ARFilterActionList elseList;
char *helpText = CPNULL;
ARAccessNameType owner;
char *changeDiary = CPNULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
ARNameList schemaNameList;
ARWorkflowConnectStruct schemaList;
ARPropList objPropList;
#if AR_CURRENT_API_VERSION >= 13
unsigned int errorFilterOptions = 0;
ARNameType errorFilterName;
#endif
if(hv_exists(objDef, "owner", strlen("owner") ))
rv += strcpyHVal( objDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE);
else
strncpy(owner, ctrl->user, sizeof(ARAccessNameType));
/* these two are optional, so if the calls return warnings
* it probably indicates that the hash keys don't exist and
* we'll ignore it unless an actual failure code is returned.
*/
if(hv_exists(objDef, "changeDiary", strlen("changeDiary") ))
rv += strmakHVal( objDef, "changeDiary", &changeDiary);
if(hv_exists(objDef, "helpText", strlen("helpText") ))
rv += strmakHVal( objDef, "helpText", &helpText);
/* now handle the action & else (3.x) lists */
rv += rev_ARFilterActionList(ctrl, objDef, "actionList",
&actionList);
rv += rev_ARFilterActionList(ctrl, objDef, "elseList",
&elseList);
/* at this point all datastructures (hopefully) are
* built. we can call the api routine to create the
* filter.
*/
if(rv == 0) {
ret = ARCreateFilter(ctrl, name, order, &schemaList,
opSet,
enable, query,
&actionList, &elseList,
helpText, owner, changeDiary,
&objPropList,
#if AR_CURRENT_API_VERSION >= 13
errorFilterOptions,
errorFilterName,
#endif
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status);
if(!ARError( ret, status))
RETVAL = 1;
} else
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
if (helpText) {
AP_FREE(helpText);
}
if (changeDiary) {
AP_FREE(changeDiary);
}
FreeARFilterActionList(&actionList, FALSE);
FreeARFilterActionList(&elseList, FALSE);
FreeARPropList(&objPropList, FALSE);
FreeARNameList(&schemaNameList, FALSE);
#else /* < 5.0 */
XPUSHs(sv_2mortal(newSViv(0))); /* ERR */
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED,
"ARSperl supports CreateContainer() only for ARSystem >= 5.0");
RETVAL = AR_RETURN_ERROR;
char *newNamePtr = NULL;
unsigned int *opSet = NULL;
unsigned int *order = NULL;
unsigned int *enable = NULL;
ARQualifierStruct *query = NULL;
ARFilterActionList *actionList = NULL;
ARFilterActionList *elseList = NULL;
char *helpText = CPNULL;
ARAccessNameType owner;
char *ownerPtr = NULL;
char *changeDiary = CPNULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
ARWorkflowConnectStruct *schemaList = NULL;
ARPropList *objPropList = NULL;
#if AR_CURRENT_API_VERSION >= 13
unsigned int *errorFilterOptions = NULL;
ARNameType errorFilterName;
char *errorFilterNamePtr = NULL;
#endif
if(hv_exists(objDef, "owner", strlen("owner") )){
rv += strcpyHVal( objDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE);
ownerPtr = owner;
}
/* these two are optional, so if the calls return warnings
* it probably indicates that the hash keys don't exist and
* we'll ignore it unless an actual failure code is returned.
*/
if(hv_exists(objDef, "changeDiary", strlen("changeDiary") ))
rv += strmakHVal( objDef, "changeDiary", &changeDiary);
if(hv_exists(objDef, "helpText", strlen("helpText") ))
rv += strmakHVal( objDef, "helpText", &helpText);
/* now handle the action & else (3.x) lists */
if(hv_exists(objDef, "actionList", strlen("actionList") )){
actionList = (ARFilterActionList*) MALLOCNN(sizeof(ARFilterActionList));
rv += rev_ARFilterActionList(ctrl, objDef, "actionList", actionList);
}
#endif
/* at this point all datastructures (hopefully) are
* built. we can call the api routine to modify the workflow object
*/
if(rv == 0) {
ret = ARSetFilter(ctrl, name, newNamePtr, order, schemaList,
opSet,
enable, query,
actionList, elseList,
helpText, ownerPtr, changeDiary,
objPropList,
#if AR_CURRENT_API_VERSION >= 13
errorFilterOptions,
errorFilterNamePtr,
#endif
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status);
if(!ARError( ret, status))
RETVAL = 1;
} else
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
if (helpText) {
AP_FREE(helpText);
}
if (changeDiary) {
AP_FREE(changeDiary);
}
if( order != NULL ) { AP_FREE(order); }
if( enable != NULL ) { AP_FREE(enable); }
/* if( query != NULL ) { FreeARARQualifierStruct( query, TRUE ); } */
if( schemaList != NULL ) { FreeARWorkflowConnectStruct( schemaList, TRUE ); }
if( actionList != NULL ) { FreeARFilterActionList( actionList, TRUE ); }
if( elseList != NULL ) { FreeARFilterActionList( elseList, TRUE ); }
if( objPropList != NULL ) { FreeARPropList( objPropList, TRUE ); }
#if AR_EXPORT_VERSION >= 5
int ret = 0, rv = 0;
ARNameType name;
unsigned int enable = 0;
AREscalationTmStruct escalationTm;
ARQualifierStruct *query;
ARFilterActionList actionList;
ARFilterActionList elseList;
char *helpText = CPNULL;
ARAccessNameType owner;
char *changeDiary = CPNULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
ARNameList schemaNameList;
ARWorkflowConnectStruct schemaList;
ARPropList objPropList;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(name, 1, ARNameType);
if(hv_exists(objDef, "owner", strlen("owner") ))
rv += strcpyHVal( objDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE);
else
strncpy(owner, ctrl->user, sizeof(ARAccessNameType));
/* these two are optional, so if the calls return warnings
* it probably indicates that the hash keys don't exist and
* we'll ignore it unless an actual failure code is returned.
*/
if(hv_exists(objDef, "changeDiary", strlen("changeDiary") ))
rv += strmakHVal( objDef, "changeDiary", &changeDiary);
if(hv_exists(objDef, "helpText", strlen("helpText") ))
rv += strmakHVal( objDef, "helpText", &helpText);
/* now handle the action & else (3.x) lists */
rv += rev_ARFilterActionList(ctrl, objDef, "actionList",
&actionList);
rv += rev_ARFilterActionList(ctrl, objDef, "elseList",
&elseList);
/* at this point all datastructures (hopefully) are
* built. we can call the api routine to create the
* escalation.
*/
if(rv == 0) {
ret = ARCreateEscalation(ctrl, name,
&escalationTm,
&schemaList,
enable, query,
&actionList, &elseList,
helpText, owner, changeDiary,
&objPropList,
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status);
if(!ARError( ret, status))
RETVAL = 1;
} else
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
if (helpText) {
AP_FREE(helpText);
}
if (changeDiary) {
AP_FREE(changeDiary);
}
FreeARFilterActionList(&actionList, FALSE);
FreeARFilterActionList(&elseList, FALSE);
FreeARPropList(&objPropList, FALSE);
FreeARNameList(&schemaNameList, FALSE);
#else /* < 5.0 */
XPUSHs(sv_2mortal(newSViv(0))); /* ERR */
(void) ARError_add( AR_RETURN_ERROR, AP_ERR_DEPRECATED,
"ARSperl supports CreateContainer() only for ARSystem >= 5.0");
RETVAL = AR_RETURN_ERROR;
ARNameType newName;
char *newNamePtr = NULL;
AREscalationTmStruct *escalationTm = NULL;
unsigned int *enable = NULL;
ARQualifierStruct *query = NULL;
ARFilterActionList *actionList = NULL;
ARFilterActionList *elseList = NULL;
char *helpText = CPNULL;
ARAccessNameType owner;
char *ownerPtr = NULL;
char *changeDiary = CPNULL;
char *objectModificationLogLabel = NULL;
ARStatusList status;
ARWorkflowConnectStruct *schemaList = NULL;
ARPropList *objPropList = NULL;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(newName, 1, ARNameType);
Zero(owner, 1, ARAccessNameType);
if(hv_exists(objDef, "owner", strlen("owner") )){
rv += strcpyHVal( objDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE);
ownerPtr = owner;
}
/* these two are optional, so if the calls return warnings
* it probably indicates that the hash keys don't exist and
* we'll ignore it unless an actual failure code is returned.
*/
if(hv_exists(objDef, "changeDiary", strlen("changeDiary") ))
rv += strmakHVal( objDef, "changeDiary", &changeDiary);
if(hv_exists(objDef, "helpText", strlen("helpText") ))
rv += strmakHVal( objDef, "helpText", &helpText);
/* now handle the action & else (3.x) lists */
if(hv_exists(objDef, "actionList", strlen("actionList") )){
actionList = (ARFilterActionList*) MALLOCNN(sizeof(ARFilterActionList));
rv += rev_ARFilterActionList(ctrl, objDef, "actionList", actionList);
}
/* at this point all datastructures (hopefully) are
* built. we can call the api routine to modify the workflow object
*/
if(rv == 0) {
ret = ARSetEscalation(ctrl, name, newNamePtr,
escalationTm,
schemaList,
enable, query,
actionList, elseList,
helpText, ownerPtr, changeDiary,
objPropList,
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status);
if(!ARError( ret, status))
RETVAL = 1;
} else
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
if (helpText) {
AP_FREE(helpText);
}
if (changeDiary) {
AP_FREE(changeDiary);
}
if( enable != NULL ) { AP_FREE(enable); }
/* if( query != NULL ) { FreeARARQualifierStruct( query, TRUE ); } */
if( schemaList != NULL ) { FreeARWorkflowConnectStruct( schemaList, TRUE ); }
if( actionList != NULL ) { FreeARFilterActionList( actionList, TRUE ); }
if( elseList != NULL ) { FreeARFilterActionList( elseList, TRUE ); }
if( objPropList != NULL ) { FreeARPropList( objPropList, TRUE ); }
#else /* < 5.0 */
{
ARStatusList status;
#if AR_CURRENT_API_VERSION >= 14
int ret = 0, rv = 0;
ARNameType name;
ARImageDataStruct imageBuf;
char *imageType = CPNULL;
char *description = CPNULL;
char *helpText = CPNULL;
ARAccessNameType owner;
char *changeDiary = CPNULL;
ARPropList objPropList;
char *objectModificationLogLabel = NULL;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(name, 1, ARNameType);
Zero(&imageBuf, 1,ARImageDataStruct);
Zero(owner, 1, ARAccessNameType);
Zero(&objPropList, 1, ARPropList);
if(hv_exists(objDef, "owner", strlen("owner") ))
rv += strcpyHVal( objDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE);
else
strncpy(owner, ctrl->user, sizeof(ARAccessNameType));
/* these two are optional, so if the calls return warnings
* it probably indicates that the hash keys don't exist and
* we'll ignore it unless an actual failure code is returned.
*/
if(hv_exists(objDef, "changeDiary", strlen("changeDiary") ))
rv += strmakHVal( objDef, "changeDiary", &changeDiary);
if(hv_exists(objDef, "helpText", strlen("helpText") ))
rv += strmakHVal( objDef, "helpText", &helpText);
if(hv_exists(objDef, "objPropList", strlen("objPropList") ))
rv += rev_ARPropList(ctrl, objDef, "objPropList",
&objPropList);
/* at this point all datastructures (hopefully) are
* built. we can call the api routine to create the
* image.
*/
if( rv == 0 ){
ret = ARCreateImage( ctrl, name,
&imageBuf,
imageType,
description,
helpText, owner, changeDiary,
&objPropList,
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status);
if(!ARError( ret, status))
RETVAL = 1;
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
}
if (helpText) {
AP_FREE(helpText);
}
if (changeDiary) {
AP_FREE(changeDiary);
}
if (description) {
AP_FREE(description);
}
if (imageType) {
AP_FREE(description);
}
FreeARImageDataStruct(&imageBuf, FALSE);
FreeARPropList(&objPropList, FALSE);
#else /* prior to ARS 7.5 */
#if AR_CURRENT_API_VERSION >= 14
int ret = 0, rv = 0;
ARNameType newName;
char *newNamePtr = NULL;
ARImageDataStruct *imageBuf = NULL;
char *imageType = CPNULL;
char *description = CPNULL;
char *helpText = CPNULL;
ARAccessNameType owner;
char *ownerPtr = NULL;
char *changeDiary = CPNULL;
ARPropList *objPropList = NULL;
char *objectModificationLogLabel = NULL;
RETVAL = 0; /* assume error */
(void) ARError_reset();
Zero(&status, 1,ARStatusList);
Zero(newName, 1, ARNameType);
Zero(owner, 1, ARAccessNameType);
if(SvTYPE((SV *)SvRV(objDefRef)) != SVt_PVHV) {
rv = 0;
if( hv_exists(objDef,"name",4) ){
rv += strcpyHVal( objDef, "name", newName, AR_MAX_NAME_SIZE );
newNamePtr = newName;
}
if(hv_exists(objDef, "owner", strlen("owner") )){
rv += strcpyHVal( objDef, "owner", owner, AR_MAX_ACCESS_NAME_SIZE);
ownerPtr = owner;
}
if(hv_exists(objDef, "changeDiary", strlen("changeDiary") ))
rv += strmakHVal( objDef, "changeDiary", &changeDiary);
if(hv_exists(objDef, "helpText", strlen("helpText") ))
rv += strmakHVal( objDef, "helpText", &helpText);
if(hv_exists(objDef, "imageType", strlen("imageType") ))
rv += strmakHVal( objDef, "imageType", &imageType);
if(hv_exists(objDef, "imageData", strlen("imageData") )){
imageBuf = (ARImageDataStruct*) MALLOCNN(sizeof(ARImageDataStruct));
rv += rev_ARImageDataStruct(ctrl, objDef, "imageData", imageBuf);
}
/* at this point all datastructures (hopefully) are
* built. we can call the api routine to create the
* image.
*/
if( rv == 0 ){
ret = ARSetImage( ctrl, name,
newNamePtr,
imageBuf,
imageType,
description,
helpText, owner, changeDiary,
objPropList,
#if AR_CURRENT_API_VERSION >= 17
objectModificationLogLabel,
#endif
&status);
if(!ARError( ret, status))
RETVAL = 1;
}else{
ARError_add( AR_RETURN_ERROR, AP_ERR_PREREVFAIL);
}
}
if (helpText) {
AP_FREE(helpText);
}
if (changeDiary) {
AP_FREE(changeDiary);
}
if (description) {
AP_FREE(description);
}
if (imageType) {
AP_FREE(description);
}
if( imageBuf != NULL ) { FreeARImageDataStruct(imageBuf, TRUE); }
if( objPropList != NULL ) { FreeARPropList(objPropList, TRUE); }
#else /* prior to ARS 7.5 */
ARS/OOsup.pm view on Meta::CPAN
print "\tcacheId = $cacheId\n";
print "\toperationTime = ".localtime($operationTime)."\n";
print "\tuser = $user\n";
print "\tpassword = $password\n";
print "\tserver = $server\n";
print "\tlang = $lang\n";
}
sub availableSchemas {
my $this = shift;
my ($changedSince, $schemaType, $name) =
rearrange([CHANGEDSINCE,SCHEMATYPE,NAME],@_);
$changedSince = 0 unless defined($changedSince);
$schemaType = ARS::AR_LIST_SCHEMA_ALL unless defined($schemaType);
$name = "" unless defined($name);
return ars_GetListSchema($this->{'ctrl'},
$changedSince,
$schemaType, undef,
$name);
}
sub openForm {
my $this = shift;
my($form, $vui) = rearrange([FORM,VUI], @_);
$this->pushMessage(&ARS::AR_RETURN_ERROR,
81000,
1. You may make and give away verbatim copies of the source form of the
Standard Version of this Package without restriction, provided that you
duplicate all of the original copyright notices and associated disclaimers.
2. You may apply bug fixes, portability fixes and other modifications
derived from the Public Domain or from the Copyright Holder. A Package
modified in such a way shall still be considered the Standard Version.
3. You may otherwise modify your copy of this Package in any way, provided
that you insert a prominent notice in each changed file stating how and
when you changed that file, and provided that you do at least ONE of the
following:
a) place your modifications in the Public Domain or otherwise make them
Freely Available, such as by posting said modifications to Usenet or
an equivalent medium, or placing the modifications on a major archive
site such as uunet.uu.net, or by allowing the Copyright Holder to include
your modifications in the Standard Version of the Package.
b) use the modified Package only within your corporation or organization.
neither be construed as a distribution of this Package nor shall it
fall under the restrictions of Paragraphs 3 and 4, provided that you do
not represent such an executable image as a Standard Version of this
Package.
7. C subroutines (or comparably compiled subroutines in other
languages) supplied by you and linked into this Package in order to
emulate subroutines and variables of the language defined by this
Package shall not be considered part of this Package, but are the
equivalent of input as in Paragraph 6, provided these subroutines do
not change the language in any way that would cause it to fail the
regression tests for the language.
8. Aggregation of this Package with a commercial distribution is always
permitted provided that the use of this Package is embedded; that is,
when no overt attempt is made to make this Package's interfaces visible
to the end user of the commercial distribution. Such use shall not be
construed as a distribution of this Package.
9. The name of the Copyright Holder may not be used to endorse or promote
products derived from this software without specific prior written permission.
Revision history for ARSperl.
BM = Bill Middleton <wjm at metronet.com>
GDF = G. David Frye <gdf at uiuc.edu>
JCM = Jeff Murphy <jcmurphy at buffalo.edu>
JWM = Joel Murphy <jmurphy at buffalo.edu>
TS = Thilo Stapff <tstapff at sourceforge.net>
CL = Chris Leach <Chris.Leach at kaz-group.com>
JL = John Luthgers <jls17 at gmx.net>
Note: items preceeded by a '!' denoted changes that are incompatible with
previous versions of arsperl and may require altering of some arsperl
scripts.
Released: 05/27/2015 Version: 2.00
(JL) Linux 64-bit is working using GCC
(JL) Compiling using ARAPI 8.0 / 8.1 possible
ars_GetServerCharSet, ars_GetClientCharSet
(TS) fixed actionList/elseList bug in ars_SetActiveLink
(TS) added AR_DATA_TYPE_VIEW handling to perl_ARValueStruct_Assign,rev_ARActiveLinkActionList
(TS) modified Makefile.PL for easier automated testing (handling of ARSPERLTEST_PARAM)
(TS) added ars_GetListRole, ars_Signal, ars_GetTextForErrorMessage
(TS) ! changed return struct of ars_GetListGroup
(TS) fixed IVLD macro in support-h.template
Released: 05/06/2008 Version: 1.91
(TS) fixed ars_padEntryid to work correctly if entry ID prefix is defined
(TS) replaced malloc-on-windows patch by UNDEF_PERL_MALLOC compilation option in Makefile.PL
(TS) fixed pointer initialization error in ars_SetVUI
(TS) modified ars_Create/Get/SetFilter for API 7.1
(TS) fixed ars_GetAlertCount
(MB) removed legacy ars_NT Notifier and ars_AdminExtension calls
(MB) ! added ars_VerifyUser implementation by Thilo Stapff
(MB) ! changed ars_APIVersion to use AR_CURRENT_API_VERSION rather than AR_EXPORT_VERSION
(MB) fixed ars_GetActiveLink, ars_GetFilter, ars_GetEscalation, ars_GetField so they
return undef on failure.
(JCM) buffer overflow in perl_BuildEntryList
(JCM) malloc-on-windows patch by John Unsworth
(TS) fixed memory leak in ars_Get... functions (added "sv_2mortal( (SV*) RETVAL )")
(TS) bugfix in dup_Value (support.c) for API version <= 5.0.1
(TS) changed enum limits processing in perl_ARFieldLimitStruct for API version <= 5.0.1
(TS) updated MANIFEST file
(TS) replaced strdup() by arsperl_strdup() for win32 to fix problems with VisualStudio8
(TS) changed type of "owner" attribute: ARNameType -> ARAccessNameType
(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"
(TS) added ars_CreateContainer, ars_SetContainer
(TS) added ars_CreateFilter, ars_SetFilter, ars_CreateEscalation, ars_SetEscalation,
ars_SetActiveLink
(TS) added declaration of boolcpyHVal(...) to supportrev.h
(TS) added declaration of revTypeName(...) to supportrev.h
(TS) added "rev_ARReferenceStruct" to supportrev.c
(TS) changed perl_ARReferenceStruct (added "value_dataType" key, necessary for
ars_CreateContainer)
(TS) changed ars_CreateActiveLink to read "schemaList" from alDef struct
(TS) bugfix in rev_ARMessageStruct
( hv_exists(h,"messageType"... -> hv_exists(a,"messageType"... )
(TS) moved declaration of rev_ARMessageStruct from supportrev.c to supportrev.h
(TS) bugfix in rev_ARAssignFieldStruct_helper: hv_exists needs key length
(TS) bugfix in rev_ARAssignFieldStruct_helper: hv_exists needs key length
(dup_qualifier2(...) != NULL ... return ...)
(TS) added case: AR_COND_OP_FROM_FIELD to dup_qualifier2
(TS) added functions perl_ARSetFieldsActionStruct, perl_ARPushFieldsActionStruct;
changed perl_ARFilterActionStruct accordingly.
(TS) bugfix in rev_ARFunctionAssignStruct (parameterList[i] -> parameterList[i-1])
(TS) bugfix in rev_ARArithOpAssignStruct_helper (AR_ARITH_OP_NEGATE uses operandRight,
not operandLeft), fixed condition for AR_ARITH_OP_NEGATE.
(TS) bugfix in rev_ARAssignSQLStruct
(strcpyHVal(hr,"sqlCommand"...) -> strmakHVal(hr, "sqlCommand"...))
(TS) bugfix in rev_ARActiveLinkMacroParmList (... == SVt_PVAV -> ... == SVt_PVHV)
(TS) bugfix in rev_ARActiveLinkMacroParmList (copymem -> strdup)
(TS) changed rev_ARValueStructDiary to support non-hashref diary values
(necessary in ARAssignStruct context)
(TS) added ars_CreateSchema, ars_SetSchema, ars_CreateField, ars_SetField,
ars_CreateVUI, ars_SetVUI
(TS) added scripts (StructDef.pl, rev_AR_template.pl) for automatic generation of
conversion code (perl data structures -> AR API structs)
(TS) added module (ARS/CodeTemplate.pm) for code generation
(TS) change in perl_ARFieldValueOrArithStruct; if tag == AR_VALUE, put dataType into hash
(TS) added check for h != NULL to strcpyHVal
(TS) added "case AR_COND_OP_FROM_FIELD" to perl_qualifier()
(TS) changed handling of qualifier structs in perl_ARFieldLimitStruct, perl_ARJoinSchema,
perl_ARArchiveInfoStruct; those functions now return the converted perl structure
instead of the pointer to a C structure.
(TS) fixed Makefile.PL to work with $ARSAPI containing spaces on Windows
(TS) added ars_DeleteContainer (changes to ARS.xs, ARS.pm)
(TS) fixed Makefile.PL to use $ra_arlibs for Version <= 5.0 on Windows
(TS) fixed rev_ARValueStructStr2Type: use strcasecmp instead of strncasecmp
(failure to differentiate between string and substring)
(TS) added "case AR_DATA_TYPE_CURRENCY" to perl_ARValueStruct
(TS) moved existing code for AR_DATA_TYPE_CURRENCY from sv_to_ARValueStruct
to new function sv_to_ARCurrencyStruct, completed ARCurrencyStruct handling
(TS) added conversion functions rev_ARDisplayInstanceList,
rev_ARDisplayInstanceStruct and rev_ARPermissionList
(TS) fixed DESTROY(ctrl) (use safefree if allocated with safemalloc)
(TS) minor fix in in rev_ARValueStructKW2KN (*keyword == '\0')
(TS) minor fix in rev_ARCoordList_helper ( if (hv_exists("x"... )
(TS) changed handling of keyword values in rev_ARValueStruct
(assume "keyword" if first character == '\0' and length > 0)
(JCM) minor update to example scripts Dump_User*.pl
Released: 09/20/2005 Version: 1.85
(TS) added binmode-statements in t/10entry.t (test failed on win32)
(TS) warning cleanup in test files (t/02export.t, t/13join.t)
(TS) added ars_SetLogging (changes to ARS.xs, ARS.pm, support.c, support-h.template,
html/manual/toc.html; new files: html/manual/ars_SetLogging.html, t/21setlogging.t)
(TS) fixed pointer dereferencing error in supportrev.c:strmakHval
(TS) fixed supportrev.c:strcasecmp, strncasecmp; failure to differentiate between
string and substring (e.g. "page_holder" and "page")
(TS) fixed support.c:perl_ARByteList (Bug ID 1213180)
(David Lindes {lindes at users.sourceforge.net})
(JCM) variable initialization
(JG) doc updates
Released: 09/20/2004 Version: 1.82
(QGM) AR 6.x compatibility, AR encryption compatibility
(JMc) Makefile.PL changes, code cleanup for Windows build
Released: 08/09/2003 Version: 1.81
(JCM) memory/multithreaded issue with errhash fixed { steve.drew at hp.com }
(JCM) uninitialized variable issue fixed { steve.drew at hp.com }
(JCM) memory free'ing on win32 issues fixed { steve.drew at hp.com }
(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
functions that no longer are available or always
return errors indicating they are no longer implemented:
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
(JCM) disabled t/11entry.t
(JCM) minor Makefile.PL tweak
(JCM) bug fix in perl_ARStatusStruct that caused segv with api >= 4.0
Released: 10/24/2001 Version: 1.72
(JCM) modified Makefile.PL to handle changes to _SERVER_INFO definitions
in 4.5.x
(JCM) memory leak fixes
(JCM) duplicate free badness in ars_Login() fixed
(JCM) updated doc for ars_MergeEntry
(JCM) added form->merge() call to OO layer
(JCM) modifications to example/ars_GetListEntry.pl to make
it function with different revisions of the User form.
(JCM) arsperl now requires at minimum perl 5.004.
(JCM) converted "na" "sv_unref" to PL_ namespace.
added perl-version checking so it will still compile
against 5.004.
(JCM) ! ars4.5 compatibility changes. the following functions
have altered return values which will break scripts that
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) makefile now automatically converts C header files into
perl files so that all constants (C 'defines') are
available.
Released: 01/04/99 Version: 1.63
(JCM) fixed some missing conditional compilation #if's in code
(JCM) changes "require Config" to "use Config" in Makefile.PL
at the request of activestate
(JCM) added MANIFEST file to distribution
Released: 12/28/98 Version: 1.62
(JCM) added extra decoding code to GetFilter.pl example script
(JCM) if compiled against API >= 4.0 then __ars_init __ars_term
no longer do anything (but are still there). the functionality
of each of these have been rolled into ars_Login and ars_Logoff
respectively.
(JCM) added ars_APIVersion()
(JCM) GetActiveLink, when compiled against 4.0 returns ARMessageStruct
(JCM) applied some changes contributed by Murray Nesbitt
{murray at ActiveState.com} so that it will compile against the
active state version of perl more easily.
(JCM) changed licensing to match that of perl itself.
Released: 09/16/98 Version: 1.61
(JCM) new utility: example/AddUsersToGroup.pl - bulk add a bunch
of users to a specified group
(JCM) new utility: example/DelUsersFromGroup.pl - bulk delete a bunch
of users from a specified group
(JCM) fixed uninitialized variable warnings
(JCM) fixed various problems with join schema entry-id handling
(JCM) fixed bug in indexList returned by ars_GetSchema()
(JCM) ! updated all Get<object> functions so that changeDiary
is fully decoded.
(JCM) ! changed return value of ars_DeleteEntry() so that
ars_DeleteEntry() || die() will work as expected.
(JCM) fixed problem in example/Show_ALink.pl
(JCM) added/updated helper func: ars_decodeStatusHistory()
(JCM) added example/ars_decodeStatusHistory.pl
(JCM) fixed ars_GetSchema typo/bug w/regards to adminGroupList
(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
INSTALLATION view on Meta::CPAN
o WindowsNT, 2000, XP (But NOT win95)
o Linux (RHEL through v7)
Users of other OS's might encounted problems with compiling. We'd be
interested in hearing about your experiences and if you got it working
under a new OS.
BUILDING
To build the extension, change into the root directory of the distribution
and edit the Makefile.PL file. Change the following lines in it to point to
the location of your ARS API directory (e.g. /u/remedy/api/lib)
$ARSAPI = "/opt/remedy/api764sp5linux";
$ARCHITECTURE = "lx64"; # Linux 64-bit
Under Sunos 4.1.x, you will also need to add -lntc to $ARS_LIBS.
Under Irix 6.2, you will need to remove the -lnsl option from $ARS_LIBS.
Under HP-UX, you will need to build it statically into Perl.
Under WindowsNT you will need to insert the appropriate libraries
INSTALLATION view on Meta::CPAN
(https://rrr.se/cgi/index?pg=arapi)
4) Edit Makefile.PL, and update $ARSAPI to indicate where ARS API files have
been unpacked
5) If compiling for 64-bit, the following lines need updating in Makefile.PL
as well:
$ARS_LIBS = join(' ', map { "$ARSAPI/lib/" . $_ } @{$ra_arlibs});
change to:
$ARS_LIBS = join(' ', map { "$ARSAPI/lib64/" . $_ } @{$ra_arlibs});
$ARS_LDPATH = qq{-L"$ARSAPI/lib"};
change to:
$ARS_LDPATH = qq{-L"$ARSAPI/lib64"};
my $ar_lib_dir = join('/', $path_to_api_dir, 'lib');
change to:
my $ar_lib_dir = join('/', $path_to_api_dir, 'lib64');
6) cd to ARSPerl directory and run perl Makefile.PL
7) dmake
8) If desired (and able!), run dmake test
9) dmake install
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
t/31createschema.t
t/35setactlink.t
t/aptest.def
.#Makefile.PL.1.85
support.c
Makefile.old
serverTypeInfoHints.h
INSTALLATION
ARS.pm
infra/c4asp.sh
infra/exsi.pl
infra/pcpp.pl
infra/h2ph
infra/mkchanges.pl
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/del_all.pl
example/PrintQual.pl
example/ChangePassword.pl
example/Get_Diary.pl
example/GetServerStatistics.pl
example/ars_GetListUser.pl
rev_AR_template.pl
StructDef.pl
pm_to_blib
README
changes.dat
META.yml
RELNOTES
typemap
Makefile.PL
support.h
ARS/ar-h.pm
ARS/_h2ph_pre.ph
ARS/CodeTemplate.pm
ARS/arerrno-h.pm
ARS/OOform.pm
Makefile.PL view on Meta::CPAN
$code =~ /^AR_SERVER_STAT_(\w+)/;
print FD " { $code, \t\t\"\L$1\E\" },\n";
}
}
elsif(/SCHEMAPERMISSIONTYPEMAP/) {
print "\tProcessing AR_PERMISSIONS (Schema) codes..\n";
my($code, $line);
foreach $line (grep (/^\#define\s+AR_PERMISSIONS.*/, @arh)) {
$code = (split(/\s/, $line))[1];
# _view & _change are field permissions
# it would be nice if AR_PERM.. differentiated between
# schema and field.
if($code !~ /_VIEW|_CHANGE/) {
print "\t\t$code\n" if $debug;
$code =~ /^AR_PERMISSIONS_(\w+)/;
print FD " { $code, \t\t\"\L$1\E\" },\n";
}
}
}
Makefile.PL view on Meta::CPAN
return $api_version;
}
#
# given an API version from above, return the minimum server version
# that supports it.
# That is, if an API version is supported by multiple releases of the
# AR System Server, we return the chronologically first version
# since compiling against that version will have been the first
# time we have arsperl will have to change to support the API change.
#
# this whole strategy of deriving the server version from the api version
# presumes that we won't have to distinguish between releases of the
# same api version, which may or may not be correct.
#
# the api version can be the main variable arsperl uses to adjust
# itself however.
#
sub serverReleaseFromAPIVersion {
Home Page: http://www.arsperl.org
---------------------------------------------------------------------------
1.80 Notes
----------
The 1.80 release includes ARS 5.x integration. When compiling against
ARS 5.x APIs, the ars_NT* functions (notifier library) will no longer
work. The notifier system has completely changed in release 5.0 of
ARsystem.
Regardless of what version of API you compile against, the following
functions have had their parameters altered which means that scripts
will need to be editted (unless you are using the OO layer).
Function What's Changed
--------------------------------------------------------------
ars_GetListEntry additional required parameter
ars_GetListEntryWithFields additional required parameter
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
existing scripts. You might need to update those scripts when recompiling
ARSperl against the 4.5 (or later) libraries.
Data Structure Used/Returned By
--------------------------------------------------------------
Active Link Hash ars_GetActiveLink()
Active Link Hash ars_CreateActiveLink()
Filter Hash ars_GetFilter()
Escalation Hash ars_GetEscalation()
The majority of users should be unaffected by this since most probably
don't retrieve the actual definitions of these objects in their
scripts.
In addition, ars_Import() has changed. It now has a different
parameter list. This means that existing scripts will need to
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 1.62 release includes ARS 4.0 integration. There are a few things
that have changed regardless of what version of ARS you compile against
and there are things that have changed only if you are compiling against
v4.0 (or greater).
First, regardless of what version of ARS you are compiling this against,
ars_perl_qualifier now takes a control struct (in addition to the
encoded qualifier). When compiled against pre-4.0 APIs, the control struct
parameter is still required, but is ignored. IF YOU USE THIS ROUTINE IN
EXISTING SCRIPTS, THEY WILL NEED TO BE CHANGED.
Previously, when perl executed "use ARS;" it would automatically trigger a
call to ARS::__ars_init(). This routine was im`ortant for setting up
a list of remaining functions.
1.4 Notes
---------
The notifier functions have been added to the main package. This allows
a script to connect and register itself as a user and then receive
notifications (examples are included). You can also send notifications from
a script.
Joel made all the changes to get it to compile and work against ARS3.0
So the current distribution will compile against 2.0, 2.1 and 3.0 libraries.
Everything basically remains the same so you don't need to modify your
scripts. The only things that change are the NT (notification) routines
to a certain extent. However, since NT (notification) support is new to
this release, this shouldn't be a problem.
The doc has been reorganized as well.
1.3 Notes
---------
We've added some features for performance analysis. In particular,
we've added the "profiling" feature to ARSperl. Now, when you call
changes.dat view on Meta::CPAN
TS implemented ars_qualifier_ptr function (inverse of ars_perl_qualifier)
TS added ownerObjList parameter to ars_GetListContainer
TS fixed AR_SERVER_INFO type identification in infra/exsi.pl
TS updated version numbers in INSTALLATION
TS added ars_DateToJulianDate, ars_GetListLicense, ars_ValidateMultipleLicenses,
ars_GetServerCharSet, ars_GetClientCharSet
TS fixed actionList/elseList bug in ars_SetActiveLink
TS added AR_DATA_TYPE_VIEW handling to perl_ARValueStruct_Assign,rev_ARActiveLinkActionList
TS modified Makefile.PL for easier automated testing (handling of ARSPERLTEST_PARAM)
TS added ars_GetListRole, ars_Signal, ars_GetTextForErrorMessage
!TS changed return struct of ars_GetListGroup
TS fixed IVLD macro in support-h.template
released=05/06/2008 version=1.91
TS fixed ars_padEntryid to work correctly if entry ID prefix is defined
TS replaced malloc-on-windows patch by UNDEF_PERL_MALLOC compilation option in Makefile.PL
TS fixed pointer initialization error in ars_SetVUI
TS modified ars_Create/Get/SetFilter for API 7.1
TS fixed ars_GetAlertCount
MB removed legacy ars_NT Notifier and ars_AdminExtension calls
!MB added ars_VerifyUser implementation by Thilo Stapff
!MB changed ars_APIVersion to use AR_CURRENT_API_VERSION rather than AR_EXPORT_VERSION
MB fixed ars_GetActiveLink, ars_GetFilter, ars_GetEscalation, ars_GetField so they
return undef on failure.
JCM buffer overflow in perl_BuildEntryList
JCM malloc-on-windows patch by John Unsworth
TS fixed memory leak in ars_Get... functions (added "sv_2mortal( (SV*) RETVAL )")
TS bugfix in dup_Value (support.c) for API version <= 5.0.1
TS changed enum limits processing in perl_ARFieldLimitStruct for API version <= 5.0.1
TS updated MANIFEST file
TS replaced strdup() by arsperl_strdup() for win32 to fix problems with VisualStudio8
TS changed type of "owner" attribute: ARNameType -> ARAccessNameType
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"
TS added ars_CreateContainer, ars_SetContainer
TS added ars_CreateFilter, ars_SetFilter, ars_CreateEscalation, ars_SetEscalation,
ars_SetActiveLink
TS added declaration of boolcpyHVal(...) to supportrev.h
TS added declaration of revTypeName(...) to supportrev.h
TS added "rev_ARReferenceStruct" to supportrev.c
TS changed perl_ARReferenceStruct (added "value_dataType" key, necessary for
ars_CreateContainer)
TS changed ars_CreateActiveLink to read "schemaList" from alDef struct
TS bugfix in rev_ARMessageStruct
( hv_exists(h,"messageType"... -> hv_exists(a,"messageType"... )
TS moved declaration of rev_ARMessageStruct from supportrev.c to supportrev.h
TS bugfix in rev_ARAssignFieldStruct_helper: hv_exists needs key length
TS bugfix in rev_ARAssignFieldStruct_helper: hv_exists needs key length
(dup_qualifier2(...) != NULL ... return ...)
TS added case: AR_COND_OP_FROM_FIELD to dup_qualifier2
TS added functions perl_ARSetFieldsActionStruct, perl_ARPushFieldsActionStruct;
changed perl_ARFilterActionStruct accordingly.
TS bugfix in rev_ARFunctionAssignStruct (parameterList[i] -> parameterList[i-1])
TS bugfix in rev_ARArithOpAssignStruct_helper (AR_ARITH_OP_NEGATE uses operandRight,
not operandLeft), fixed condition for AR_ARITH_OP_NEGATE.
TS bugfix in rev_ARAssignSQLStruct
(strcpyHVal(hr,"sqlCommand"...) -> strmakHVal(hr, "sqlCommand"...))
TS bugfix in rev_ARActiveLinkMacroParmList (... == SVt_PVAV -> ... == SVt_PVHV)
TS bugfix in rev_ARActiveLinkMacroParmList (copymem -> strdup)
TS changed rev_ARValueStructDiary to support non-hashref diary values
(necessary in ARAssignStruct context)
TS added ars_CreateSchema, ars_SetSchema, ars_CreateField, ars_SetField,
ars_CreateVUI, ars_SetVUI
TS added scripts (StructDef.pl, rev_AR_template.pl) for automatic generation of
conversion code (perl data structures -> AR API structs)
TS added module (ARS/CodeTemplate.pm) for code generation
TS change in perl_ARFieldValueOrArithStruct; if tag == AR_VALUE, put dataType into hash
TS added check for h != NULL to strcpyHVal
TS added "case AR_COND_OP_FROM_FIELD" to perl_qualifier()
TS changed handling of qualifier structs in perl_ARFieldLimitStruct, perl_ARJoinSchema,
perl_ARArchiveInfoStruct; those functions now return the converted perl structure
instead of the pointer to a C structure.
TS fixed Makefile.PL to work with $ARSAPI containing spaces on Windows
TS added ars_DeleteContainer (changes to ARS.xs, ARS.pm)
TS fixed Makefile.PL to use $ra_arlibs for Version <= 5.0 on Windows
TS fixed rev_ARValueStructStr2Type: use strcasecmp instead of strncasecmp
(failure to differentiate between string and substring)
TS added "case AR_DATA_TYPE_CURRENCY" to perl_ARValueStruct
TS moved existing code for AR_DATA_TYPE_CURRENCY from sv_to_ARValueStruct
to new function sv_to_ARCurrencyStruct, completed ARCurrencyStruct handling
TS added handling of AR_DATA_TYPE_DATE, AR_DATA_TYPE_TIME_OF_DAY,
to rev_ARValueStruct, sv_to_ARValueStruct
TS added conversion functions rev_ARDisplayInstanceList,
rev_ARDisplayInstanceStruct and rev_ARPermissionList
TS fixed DESTROY(ctrl) (use safefree if allocated with safemalloc)
TS minor fix in in rev_ARValueStructKW2KN (*keyword == '\0')
TS minor fix in rev_ARCoordList_helper ( if (hv_exists("x"... )
TS changed handling of keyword values in rev_ARValueStruct
(assume "keyword" if first character == '\0' and length > 0)
JCM minor update to example scripts Dump_User*.pl
released=09/20/2005 version=1.85
TS added binmode-statements in t/10entry.t (test failed on win32)
TS warning cleanup in test files (t/02export.t, t/13join.t)
TS added ars_SetLogging (changes to ARS.xs, ARS.pm, support.c, support-h.template,
html/manual/toc.html; new files: html/manual/ars_SetLogging.html, t/21setlogging.t)
TS fixed pointer dereferencing error in supportrev.c:strmakHval
TS fixed supportrev.c:strcasecmp, strncasecmp; failure to differentiate between
string and substring (e.g. "page_holder" and "page")
TS fixed support.c:perl_ARByteList (Bug ID 1213180)
(David Lindes {lindes at users.sourceforge.net})
TS added support for DATA_TYPE_CURRENCY to perl_ARFieldLimitStruct
TS added function perl_ARCurrencyDetailList
TS fixed support.c:my_strtok, perl_BuildEntryList
(ars_GetEntry crashed when retrieving join form entries)
changes.dat view on Meta::CPAN
JCM fixed 'autosplit' issue in Makefile.PL
IT Updates by Ian Trimnell for ars_GetListContainer and ars_GetContainer
released=03/14/2005 version=1.83
JCM fixed "lang" compilation error for API 6.3
JCM variable initialization
JG doc updates
released=09/20/2004 version=1.82
QGM AR 6.x compatibility, AR encryption compatibility
JMc Makefile.PL changes, code cleanup for Windows build
released=08/09/2003 version=1.81
JCM memory/multithreaded issue with errhash fixed { steve.drew at hp.com }
JCM uninitialized variable issue fixed { steve.drew at hp.com }
JCM memory free'ing on win32 issues fixed { steve.drew at hp.com }
JCM minor fix to OO->query (forgot the new firstretrieve param)
released=04/16/2003 version=1.8001
JCM memory leak fixed in ars_CreateEntry
JCM memory leak fixed in ars_SetEntry
changes.dat view on Meta::CPAN
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
compilation warnings on windows
JCM disabled t/11entry.t
JCM minor Makefile.PL tweak
JCM bug fix in perl_ARStatusStruct that caused segv with api >= 4.0
released=10/24/2001 version=1.72
JCM modified Makefile.PL to handle changes to _SERVER_INFO definitions
in 4.5.x
JCM memory leak fixes
JCM duplicate free badness in ars_Login() fixed
JCM updated doc for ars_MergeEntry
JCM added form->merge() call to OO layer
JCM fixed 4.5.2 induced warning (now there's a FilterActionStruct)
modified Makefile.PL so you can specify ARVERSION=4.52
released=10/30/2000 version=1.71
JCM modified support-h.template to compile against api3.0
changes.dat view on Meta::CPAN
JCM typo fix in ARS.xs for perl5.6 compatibility
JCM documenation update (ars_Import)
released=7/4/2000 version=1.68
JCM modifications to example/ars_GetListEntry.pl to make
it function with different revisions of the User form.
JCM arsperl now requires at minimum perl 5.004.
JCM converted "na" "sv_unref" to PL_ namespace.
added perl-version checking so it will still compile
against 5.004.
!JCM 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 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 basic OO layer
JCM added small test suite
JCM fixed some broken 4.0 related conditional compilation
stuff
JCM makefile now automatically converts C header files into
perl files so that all constants (C 'defines') are
available.
released=01/04/99 version=1.63
JCM fixed some missing conditional compilation #if's in code
JCM changes "require Config" to "use Config" in Makefile.PL
at the request of activestate
JCM added MANIFEST file to distribution
released=12/28/98 version=1.62
JCM added extra decoding code to GetFilter.pl example script
JCM syntax errors fixed in some example scripts
JCM added bug fix to NTRegisterServer from G David Frye {gdf at uiuc.edu}
!JCM ars4.0 integration (see RELNOTES for important compatibility
information)
!JCM perl_qualifier() now takes a control struct
JCM if compiled against API >= 4.0 then __ars_init __ars_term
no longer do anything (but are still there). the functionality
of each of these have been rolled into ars_Login and ars_Logoff
respectively.
JCM added ars_APIVersion()
JCM GetActiveLink, when compiled against 4.0 returns ARMessageStruct
JCM applied some changes contributed by Murray Nesbitt
{murray at ActiveState.com} so that it will compile against the
active state version of perl more easily.
JCM changed licensing to match that of perl itself.
released=09/16/98 version=1.61
JCM new utility: example/AddUsersToGroup.pl - bulk add a bunch
of users to a specified group
JCM new utility: example/DelUsersFromGroup.pl - bulk delete a bunch
of users from a specified group
JCM fixed uninitialized variable warnings
JCM fixed various problems with join schema entry-id handling
JCM fixed bug in indexList returned by ars_GetSchema()
!JCM updated all Get<object> functions so that changeDiary
is fully decoded.
!JCM changed return value of ars_DeleteEntry() so that
ars_DeleteEntry() || die() will work as expected.
JCM fixed problem in example/Show_ALink.pl
JCM added/updated helper func: ars_decodeStatusHistory()
JCM added example/ars_decodeStatusHistory.pl
JCM fixed ars_GetSchema typo/bug w/regards to adminGroupList
JCM fixed GetField.pl example so that it decodes everything
JCM patch for bug in ars_GetServerInfo()
JCM updated Makefile.PL to dynamically generate the support.h
file based on the ar.h file specified.
changes.dat view on Meta::CPAN
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
JCM beginnings of a WinNT port (not completed yet)
example/AddUsersToGroup.pl view on Meta::CPAN
# Verified and updated examples.
# Removed ars_GetFullTextInfo.pl because ars_GetFullTextInfo is obsolete since ARS > 6.01
#
# Revision 1.4 2007/08/04 15:20:04 mbeijen
# Adjusted the code for current ARSperl version, added use strict; and added comments.
#
# Revision 1.3 2003/03/28 05:51:56 jcmurphy
# more 5.x editsgv
#
# Revision 1.2 1998/09/14 20:48:59 jcmurphy
# changed usage, comments. fixed bug.
#
#
use ARS;
use strict;
use warnings;
die "usage: AddUserToGroup server username password group user1 [user2] ...\n"
if ( $#ARGV < 4 );
example/ChangePassword.pl view on Meta::CPAN
#!/usr/bin/perl
#
# NAME
# ChangePassword.pl server username password newpassword
#
# DESCRIPTION
# This script allows a user to change his password. Since user accounts are just
# plain records in a form we use the common getlistentry and setentry calls to
# fetch the user's record and update the password field.
# Note that on some systems permissions are set strangely and depending on
# the type of license you have you might not be able to update your password
# (Think Read Restricted licenses...)
# Also on some systems the User form is renamed to something other than "User".
#
# AUTHOR
# Michiel Beijen, Mansolutions, 2007.
#
example/ChangePassword.pl view on Meta::CPAN
|| die "ars_LoadQualifier(User): $ars_errstr";
# fetch the Entry ID for this user by using GetListEntry with the qualifier we
# just specified, otherwise die.
my @userentry = ars_GetListEntry( $ctrl, "User", $userqualifier, 0, 0 );
die "No such user $user? ($ars_errstr)\n" if ( $#userentry == -1 );
# Change the password for this user by setting field 102 (the password field) with the new value
ars_SetEntry( $ctrl, "User", $userentry[0], 0, 102, $newpassword )
|| die "Error updating password: $ars_errstr";
print "Password changed for user $user on server $server\n";
example/Dump_Users.pl view on Meta::CPAN
#
# $Log: Dump_Users.pl,v $
# Revision 1.8 2009/03/31 13:34:32 mbeijen
# Verified and updated examples.
# Removed ars_GetFullTextInfo.pl because ars_GetFullTextInfo is obsolete since ARS > 6.01
#
# Revision 1.7 2007/03/13 13:20:32 jeffmurphy
# minor update to example scripts
#
# Revision 1.6 2003/03/27 17:58:42 jcmurphy
# 5.0 changes, bug fixes
#
# Revision 1.5 1999/05/05 19:57:59 rgc
# DumpUsers.
#
# Revision 1.4 1998/12/28 15:23:29 jcmurphy
# fixed up "Login name" query for ARS4.0 ("Login Name")
#
# Revision 1.3 1997/09/30 04:49:13 jcmurphy
# added some error output
# /
example/Dump_Users_OO.pl view on Meta::CPAN
# Example of Object Oriented programming layered on top of ARSperl
#
# AUTHOR
# Jeff Murphy
#
# $Log: Dump_Users_OO.pl,v $
# Revision 1.3 2007/03/13 13:20:32 jeffmurphy
# minor update to example scripts
#
# Revision 1.2 1999/05/26 03:42:46 jcmurphy
# minor change to exception handler
#
# Revision 1.1 1999/05/05 19:57:40 rgc
# Initial revision
#
use strict;
use ARS;
require Carp;
sub mycatch {
example/GetCharMenu.pl view on Meta::CPAN
# 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
# fixed syntax error
#
# Revision 1.4 1998/09/16 14:38:31 jcmurphy
# updated changeDiary code
#
# Revision 1.3 1998/02/25 19:21:32 jcmurphy
# updated to printout query if query style menu
#
# Revision 1.2 1997/11/10 23:36:52 jcmurphy
# added refreshCode to the output
#
# Revision 1.1 1996/11/21 20:13:51 jcmurphy
# Initial revision
#
example/GetCharMenu.pl view on Meta::CPAN
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";
print "\tWHAT: $_->{'value'}\n";
}
print "refreshCode : ".$finfo->{"refreshCode"}."\n";
print "menuType : ".$finfo->{"menuType"}."\n";
if($finfo->{menuType} eq "query") {
example/GetFilter.pl view on Meta::CPAN
# Revision 1.8 2000/06/01 16:54:03 jcmurphy
# *** empty log message ***
#
# Revision 1.7 1998/10/14 15:06:10 jcmurphy
# added some extra decoding for set fields actions.
#
# Revision 1.6 1998/10/14 13:54:53 jcmurphy
# fixed syntax error
#
# Revision 1.5 1998/09/16 14:38:31 jcmurphy
# updated changeDiary code
#
# Revision 1.4 1998/04/22 17:25:46 jcmurphy
# added example code to show decoding of SQL/SetFields actions.
#
# Revision 1.3 1998/03/12 20:44:57 jcmurphy
# minor changes to allow specification of a server
#
# Revision 1.2 1997/02/20 19:33:15 jcmurphy
# *** empty log message ***
#
# Revision 1.1 1996/11/21 20:13:52 jcmurphy
# Initial revision
#
#
use ARS;
example/GetFilter.pl view on Meta::CPAN
}
print "actionList : \n";
ProcessActions(@{$finfo->{actionList}});
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";
print "\tWHAT: $_->{'value'}\n";
}
ars_Logoff($ctrl);
exit 0;
# Most of these subroutines were taken directly from Show_ALink.pl
example/Show_ALink.pl view on Meta::CPAN
# Revision 1.6 2000/06/01 16:54:03 jcmurphy
# *** empty log message ***
#
# Revision 1.5 1998/09/14 17:41:05 jcmurphy
# added ChangeDiary decoding lines
#
# Revision 1.4 1998/09/11 17:49:47 jcmurphy
# updated EXECUTE_ON definitions
#
# Revision 1.3 1998/09/11 17:22:13 jcmurphy
# changed macroParms from array to hash since it is
# a hashref.
#
# Revision 1.2 1997/11/11 15:04:47 jcmurphy
# added qual decoding
#
# Revision 1.1 1996/11/21 20:13:55 jcmurphy
# Initial revision
#
#
example/Show_ALink.pl view on Meta::CPAN
} else {
print " Qual Text: [none defined]\n";
}
print "Actions:\n";
ProcessActions(@{$a->{actionList}});
print "Help Text: ".$a->{helpText}."\n";
print "Owner: ".$a->{owner}."\n";
print "Last changed by: ".$a->{lastChanged}."\n";
print "Last Modified: ".localtime($a->{timestamp})."\n";
print "Change Diary: $a->{changeDiary}\n";
foreach (@{$a->{changeDiary}}) {
print "\tTIME: ".localtime($_->{timestamp})."\n";
print "\tUSER: $_->{user}\n";
print "\tWHAT: $_->{value}\n";
}
# Log out of the server.
ars_Logoff($ctrl);
exit 0;
example/ars_CopyActiveLink.pl view on Meta::CPAN
# ars_CopyActiveLink.pl [server] [username] [password] [active link]
#
# DESCRIPTION
# copies the given active link to "Copy of ..."
#
# AUTHOR
# Jeff murphy
#
# $Log: ars_CopyActiveLink.pl,v $
# Revision 1.2 1998/09/14 17:38:47 jcmurphy
# changed #!perl path
#
# Revision 1.1 1997/09/04 00:16:00 jcmurphy
# Initial revision
#
#
use ARS;
($c = ars_Login(shift, shift, shift)) ||
die "login: $ars_errstr";
example/ars_MergeEntry.pl view on Meta::CPAN
#
# $Header: /cvsroot/arsperl/ARSperl/example/ars_MergeEntry.pl,v 1.2 2007/07/20 19:57:59 jeffmurphy Exp $
#
# NAME
# ars_MergeEntry.pl [server] [user] [password] [schema] [diaryfieldname]
# [entryid]
#
# DESCRIPTION
# open the named schema and retrieve the contents of the diary field
# for the specified entryid. if the diary field contains entries,
# change the first entry and merge it back into the record.
#
# AUTHOR
# jeff murphy
#
# $Log: ars_MergeEntry.pl,v $
# Revision 1.2 2007/07/20 19:57:59 jeffmurphy
# minor doc edits
#
# Revision 1.1 1998/02/09 17:57:04 jcmurphy
# Initial revision
example/ars_decodeStatusHistory.pl view on Meta::CPAN
# history values.
#
# AUTHOR
# Jeff murphy
#
# $Log: ars_decodeStatusHistory.pl,v $
# Revision 1.3 2007/08/02 14:48:21 mbeijen
# modified examples for ExecuteProcess and decodeStatusHistory
#
# Revision 1.2 1998/09/14 17:39:20 jcmurphy
# changed #!perl path
#
# Revision 1.1 1998/09/11 15:51:42 jcmurphy
# Initial revision
#
#
#
use ARS;
use warnings;
use strict;
html/DumpSetup.html view on Meta::CPAN
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>DumpSetup.pl</H2>
<H3> Purpose </H3>
This utility helps you maintain backup copies of your ARS definitions
(but not table data). It accomplishes this by exporting all of the
definitions to text files and then "checking them in" to an RCS system.
In this fashion, no additional diskspace is used for maintaining backup
copies unless there is a change to the definition file.
<H3> Ancillary Utilities </H3>
RCS. See GNU FTP Site <A HREF="ftp://prep.ai.mit.edu/pub/gnu/">prep.ai.mit.edu</A>
<H3> Author </H3>
Joel Murphy<BR>
<A HREF="mailto:jmurphy@acsu.buffalo.edu">jmurphy@acsu.buffalo.edu</A>
<H3> Usage </H3>
html/changes.html view on Meta::CPAN
<table border='0'>
<tr><td>BM</td><td>=</td><td>Bill Middleton {wjm at metronet.com}</td></tr>
<tr><td>GDF</td><td>=</td><td>G. David Frye {gdf at uiuc.edu}</td></tr>
<tr><td>JCM</td><td>=</td><td>Jeff Murphy {jeffmurphy at sourceforge.net}</td></tr>
<tr><td>JWM</td><td>=</td><td>Joel Murphy {jmurphy at buffalo.edu}</td></tr>
<tr><td>TS</td><td>=</td><td>Thilo Stapff {tstapff at sourceforge.net}</td></tr>
<tr><td>CL</td><td>=</td><td>Chris Leach {Chris.Leach at kaz-group.com}</td></tr>
<tr><td>JL</td><td>=</td><td>John Luthgers {jls17 at gmx.net}</td></tr>
</table>
<P>
The following lists the changes that have been made
for each release of ARSperl.
<P>
Items in <font color='red'>red</font>
denote changes that are incompatible with
previous versions of ARSperl and may require altering of some ARSperl
scripts.<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
BORDER='0'
BGCOLOR='black'>
<TR>
<TD width='100%'>
html/changes.html view on Meta::CPAN
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_DateToJulianDate, ars_GetListLicense, ars_ValidateMultipleLicenses,
ars_GetServerCharSet, ars_GetClientCharSet </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed actionList/elseList bug in ars_SetActiveLink
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added AR_DATA_TYPE_VIEW handling to perl_ARValueStruct_Assign,rev_ARActiveLinkActionList
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>modified Makefile.PL for easier automated testing (handling of ARSPERLTEST_PARAM)
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_GetListRole, ars_Signal, ars_GetTextForErrorMessage
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='red'>changed return struct of ars_GetListGroup
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed IVLD macro in support-h.template
</table></td></tr></table>
<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
html/changes.html view on Meta::CPAN
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed pointer initialization error in ars_SetVUI
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>modified ars_Create/Get/SetFilter for API 7.1
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed ars_GetAlertCount
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(MB)</td><td width='90%'><font color='black'>removed legacy ars_NT Notifier and ars_AdminExtension calls
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(MB)</td><td width='90%'><font color='red'>added ars_VerifyUser implementation by Thilo Stapff
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(MB)</td><td width='90%'><font color='red'>changed ars_APIVersion to use AR_CURRENT_API_VERSION rather than AR_EXPORT_VERSION
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(MB)</td><td width='90%'><font color='black'>fixed ars_GetActiveLink, ars_GetFilter, ars_GetEscalation, ars_GetField so they
return undef on failure. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>buffer overflow in perl_BuildEntryList
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>malloc-on-windows patch by John Unsworth
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed memory leak in ars_Get... functions (added "sv_2mortal( (SV*) RETVAL )")
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in dup_Value (support.c) for API version <= 5.0.1
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed enum limits processing in perl_ARFieldLimitStruct for API version <= 5.0.1
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>updated MANIFEST file
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>replaced strdup() by arsperl_strdup() for win32 to fix problems with VisualStudio8
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed type of "owner" attribute: ARNameType -> ARAccessNameType
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>corrected function signature for ars_SetVUI, ars_CreateSchema
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed memory leak in sv_to_ARValue (support.c)
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed memory leak in ars_GetMultipleEntries, ars_GetListEntryWithFields
XPUSHs(newRV_noinc(...)) -> XPUSHs(sv_2mortal(newRV_noinc(...))) </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added "name" value to schemaHash returned by ars_GetSchema
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed rev_ARArchiveInfo Struct, moved function from supportrev_generated.c to supportrev.c
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed $ARS_LIBS variable for 7.0 Unix API in Makefile.pl (-licuuc -> -licuucbmc)
</table></td></tr></table>
<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
BORDER='0'
BGCOLOR='black'>
html/changes.html view on Meta::CPAN
<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)
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_SetSessionConfiguration
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>completed sv_to_ARCurrencyStruct (support.c)
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>ARS.pm: set $ARS::logging_file_ptr = 0 to avoid "uninitialized" warning
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed t/01import.t to import form "ARSperl Test3"
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_CreateContainer, ars_SetContainer
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_CreateFilter, ars_SetFilter, ars_CreateEscalation, ars_SetEscalation,
ars_SetActiveLink </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added declaration of boolcpyHVal(...) to supportrev.h
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added declaration of revTypeName(...) to supportrev.h
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added "rev_ARReferenceStruct" to supportrev.c
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed perl_ARReferenceStruct (added "value_dataType" key, necessary for
ars_CreateContainer) </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed ars_CreateActiveLink to read "schemaList" from alDef struct
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARMessageStruct
( hv_exists(h,"messageType"... -> hv_exists(a,"messageType"... ) </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>moved declaration of rev_ARMessageStruct from supportrev.c to supportrev.h
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARAssignFieldStruct_helper: hv_exists needs key length
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARAssignFieldStruct_helper: hv_exists needs key length
(dup_qualifier2(...) != NULL ... return ...) </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added case: AR_COND_OP_FROM_FIELD to dup_qualifier2
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added functions perl_ARSetFieldsActionStruct, perl_ARPushFieldsActionStruct;
changed perl_ARFilterActionStruct accordingly. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARFunctionAssignStruct (parameterList[i] -> parameterList[i-1])
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARArithOpAssignStruct_helper (AR_ARITH_OP_NEGATE uses operandRight,
not operandLeft), fixed condition for AR_ARITH_OP_NEGATE. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARAssignSQLStruct
(strcpyHVal(hr,"sqlCommand"...) -> strmakHVal(hr, "sqlCommand"...)) </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARActiveLinkMacroParmList (... == SVt_PVAV -> ... == SVt_PVHV)
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>bugfix in rev_ARActiveLinkMacroParmList (copymem -> strdup)
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed rev_ARValueStructDiary to support non-hashref diary values
(necessary in ARAssignStruct context) </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_CreateSchema, ars_SetSchema, ars_CreateField, ars_SetField,
ars_CreateVUI, ars_SetVUI </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added scripts (StructDef.pl, rev_AR_template.pl) for automatic generation of
conversion code (perl data structures -> AR API structs) </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added module (ARS/CodeTemplate.pm) for code generation
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>change in perl_ARFieldValueOrArithStruct; if tag == AR_VALUE, put dataType into hash
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added check for h != NULL to strcpyHVal
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added "case AR_COND_OP_FROM_FIELD" to perl_qualifier()
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed handling of qualifier structs in perl_ARFieldLimitStruct, perl_ARJoinSchema,
perl_ARArchiveInfoStruct; those functions now return the converted perl structure instead of the pointer to a C structure. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed Makefile.PL to work with $ARSAPI containing spaces on Windows
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_DeleteContainer (changes to ARS.xs, ARS.pm)
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed Makefile.PL to use $ra_arlibs for Version <= 5.0 on Windows
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed rev_ARValueStructStr2Type: use strcasecmp instead of strncasecmp
(failure to differentiate between string and substring) </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added "case AR_DATA_TYPE_CURRENCY" to perl_ARValueStruct
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>moved existing code for AR_DATA_TYPE_CURRENCY from sv_to_ARValueStruct
to new function sv_to_ARCurrencyStruct, completed ARCurrencyStruct handling </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added handling of AR_DATA_TYPE_DATE, AR_DATA_TYPE_TIME_OF_DAY,
to rev_ARValueStruct, sv_to_ARValueStruct </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added conversion functions rev_ARDisplayInstanceList,
rev_ARDisplayInstanceStruct and rev_ARPermissionList </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed DESTROY(ctrl) (use safefree if allocated with safemalloc)
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>minor fix in in rev_ARValueStructKW2KN (*keyword == '\0')
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>minor fix in rev_ARCoordList_helper ( if (hv_exists("x"... )
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>changed handling of keyword values in rev_ARValueStruct
(assume "keyword" if first character == '\0' and length > 0) </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>minor update to example scripts Dump_User*.pl
</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>09/20/2005</B></td>
<td width='50%'>Version: <B>1.85
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added binmode-statements in t/10entry.t (test failed on win32)
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>warning cleanup in test files (t/02export.t, t/13join.t)
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added ars_SetLogging (changes to ARS.xs, ARS.pm, support.c, support-h.template,
html/manual/toc.html; new files: html/manual/ars_SetLogging.html, t/21setlogging.t) </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed pointer dereferencing error in supportrev.c:strmakHval
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed supportrev.c:strcasecmp, strncasecmp; failure to differentiate between
string and substring (e.g. "page_holder" and "page") </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>fixed support.c:perl_ARByteList (Bug ID 1213180)
(David Lindes {lindes at users.sourceforge.net}) </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added support for DATA_TYPE_CURRENCY to perl_ARFieldLimitStruct
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(TS)</td><td width='90%'><font color='black'>added function perl_ARCurrencyDetailList
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>09/20/2004</B></td>
<td width='50%'>Version: <B>1.82
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(QGM)</td><td width='90%'><font color='black'>AR 6.x compatibility, AR encryption compatibility
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JMc)</td><td width='90%'><font color='black'>Makefile.PL changes, code cleanup for Windows build
</table></td></tr></table>
<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
BORDER='0'
BGCOLOR='black'>
html/changes.html view on Meta::CPAN
</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
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>10/24/2001</B></td>
<td width='50%'>Version: <B>1.72
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>modified Makefile.PL to handle changes to _SERVER_INFO definitions
in 4.5.x </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>memory leak fixes
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>duplicate free badness in ars_Login() fixed
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>updated doc for ars_MergeEntry
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added form->merge() call to OO layer
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed 4.5.2 induced warning (now there's a FilterActionStruct)
html/changes.html view on Meta::CPAN
<table width='100%' border='0'><tr>
<td width='50%'>Released: <B>7/4/2000</B></td>
<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
<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>01/04/99</B></td>
<td width='50%'>Version: <B>1.63
</B></td>
</tr></table></td>
</tr><tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed some missing conditional compilation #if's in code
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>changes "require Config" to "use Config" in Makefile.PL
at the request of activestate </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added MANIFEST file to distribution
</table></td></tr></table>
<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
html/changes.html view on Meta::CPAN
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='red'>ars4.0 integration (see RELNOTES for important compatibility
information) </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='red'>perl_qualifier() now takes a control struct
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>if compiled against API >= 4.0 then __ars_init __ars_term
no longer do anything (but are still there). the functionality of each of these have been rolled into ars_Login and ars_Logoff respectively. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added ars_APIVersion()
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>GetActiveLink, when compiled against 4.0 returns ARMessageStruct
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>applied some changes contributed by Murray Nesbitt
{murray at ActiveState.com} so that it will compile against the active state version of perl more easily. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>changed licensing to match that of perl itself.
</table></td></tr></table>
<P>
<TABLE CELLSPACING='0'
CELLPADDING='2'
WIDTH='100%'
BORDER='0'
BGCOLOR='black'>
html/changes.html view on Meta::CPAN
</tr><tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>new utility: example/AddUsersToGroup.pl - bulk add a bunch
of users to a specified group </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>new utility: example/DelUsersFromGroup.pl - bulk delete a bunch
of users from a specified group </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed uninitialized variable warnings
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed various problems with join schema entry-id handling
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed bug in indexList returned by ars_GetSchema()
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='red'>updated all Get<object> functions so that changeDiary
is fully decoded. </font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='red'>changed return value of ars_DeleteEntry() so that
ars_DeleteEntry() || die() will work as expected. </font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed problem in example/Show_ALink.pl
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added/updated helper func: ars_decodeStatusHistory()
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>added example/ars_decodeStatusHistory.pl
</font></td></tr>
<tr bgcolor='#eeeeee'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed ars_GetSchema typo/bug w/regards to adminGroupList
</font></td></tr>
<tr bgcolor='#dddddd'><td width='10%'>(JCM)</td><td width='90%'><font color='black'>fixed GetField.pl example so that it decodes everything
html/changes.html view on Meta::CPAN
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%'
BORDER='0'
BGCOLOR='black'>
html/copying.html view on Meta::CPAN
675 Mass Ave, Cambridge, MA 02139, USA<p>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.<p>
<hr>
<center><h2 align=center>Preamble</h2></center>
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.<p>
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.<p>
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.<p>
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
html/copying.html view on Meta::CPAN
<dt>1.
<dd>You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.<p>
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.<p>
<dt>2.
<dd>You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:<p>
<dl compact>
<dt>a)
<dd>You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.<p>
<dt>b)
<dd>You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.<p>
<dt>c)
<dd>If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
html/copying.html view on Meta::CPAN
<dt>3.
<dd>You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:<p>
<dl compact>
<dt>a)
<dd>Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,<p>
<dt>b)
<dd>Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,<p>
<dt>c)
<dd>Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)<p>
</dl>
The source code for a work means the preferred form of the work for
html/copying.html view on Meta::CPAN
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.<p>
</dl>
<center><p align=center>END OF TERMS AND CONDITIONS</p></center>
<hr>
<center><h2 align=center>Appendix: How to Apply These Terms to Your New Programs</h2></center>
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.<p>
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.<p>
<dl>
<dd><one line to give the program's name and a brief idea of what it does.><br>
Copyright (C) 19yy <name of author><p>
html/index.html view on Meta::CPAN
terms of Perl itself</a>.
<p> We hope that other ARS fans find the kit useful. </p>
<h2> Version </h2>
The current release is version 1.91 and has support for the AR 5.0
through 7.1
API.
<p> </p>
<h2> <a href="changes.html">Release Notes</a>
</h2>
<h2> Support OS's </h2>
The perl extension has been tested on the following OS's:
<ul>
<li> Solaris 2.x </li>
<li> SunOS 4.x </li>
html/manual/AR_DAY.html view on Meta::CPAN
</PRE>
<I>ARS::AR_DAY 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>
</BODY>
</HTML>
html/manual/AR_HOUR.html view on Meta::CPAN
</PRE>
<I>ARS::AR_HOUR 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>
</BODY>
</HTML>
html/manual/OO/connection.html view on Meta::CPAN
<PRE>
$c->print();
</PRE>
This method prints out the connection object in a readable format.
<P>
<DT><A NAME="availableSchemas"><B>availableSchemas()</B></A><DD>
<PRE>
@s = $c->availableSchemas(-changedsince => scalar timestamp,
-schematype => scalar,
-name => scalar string);
</PRE>
This method returns a list of available schemas that the
current user connection has access to. It is more or less the same as
the ars_GetListSchema() call. <P>
The <code>schematype</code> parameter is one of:
html/manual/ars_APIVersion.html view on Meta::CPAN
<p>
Example:
</p>
<pre>
$v = ars_APIVersion();<br /> print "This installation of ARSperl was compiled against ARS API version $v\n";<br />
</pre><i>ars_APIVersion was introduced in version 1.62 of ARSperl</i>
<p>
<a href="toc.html">Back to Table of Contents</a>
</p>
<address>
Last changes to this page 24 July 2007 by michiel.beijen@mansolutions.nl<br />
© J.C.Murphy, J.W.Murphy 1995-2007 arsperl@arsperl.org
</address>
</body>
</html>
html/manual/ars_BeginBulkEntryTransaction.html view on Meta::CPAN
<P>
<I>ars_BeginBulkEntryTransaction was introduced in version 1.90 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 22th February 2007 by tstapff@users.sourceforge.net<BR>
© J.C.Murphy, J.W.Murphy, T.Stapff 2007 arsperl@arsperl.org
</address>
</BODY>
</HTML>
html/manual/ars_CreateActiveLink.html view on Meta::CPAN
a new name. </I></BLOCKQUOTE>
<PRE>
($al = ars_GetActiveLink($c, "AL-foobar")) ||
die $ars_errstr;
$al->{name} = "Copy of ".$al->{name};
ars_CreateActiveLink($c, $al) || 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.50 of ARSperl</I>
<P>
<A HREF="toc.html"><IMG ALT="<--" SRC="arrow.gif" ALIGN=CENTER> Back to Table of Contents </A>
</BODY>
</HTML>