[613] | 1 | TIUSRVT3 ; SLC/PKS Remove a user's non-shared Templates. ; [6/26/01 9:17am]
|
---|
| 2 | ;;1.0;TEXT INTEGRATION UTILITIES;**110**;Jun 20, 1997
|
---|
| 3 | ;
|
---|
| 4 | ; Variables used herein:
|
---|
| 5 | ;
|
---|
| 6 | ; DIR = FM call varible.
|
---|
| 7 | ; TIUARY = Array holder.
|
---|
| 8 | ; TIUCNT = Returned array counter.
|
---|
| 9 | ; TIUGET = Holder for returned array $O command.
|
---|
| 10 | ; TIUIDX = X-ref holder.
|
---|
| 11 | ; TIUIEN = Template IEN holder.
|
---|
| 12 | ; TIUNM = Holder variable for name of user.
|
---|
| 13 | ; TIUNUM = Loop counter from this routine.
|
---|
| 14 | ; TIUPAR = Current setting of auto-cleanup parameter.
|
---|
| 15 | ; TIURARY = Returned array; zero node will contain user's DUZ and
|
---|
| 16 | ; AROOT IEN (if any) or error message (RPC use only).
|
---|
| 17 | ; TIUSR = DUZ of user to process.
|
---|
| 18 | ; TIUTMP = Call return array values holder.
|
---|
| 19 | ; TIUTPLT = Template IEN.
|
---|
| 20 | ; X,Y = Variables for FM call.
|
---|
| 21 | ;
|
---|
| 22 | Q
|
---|
| 23 | ;
|
---|
| 24 | SELUSR ; Call here for manual selection of TIUSR from NEW PERSON file.
|
---|
| 25 | ;
|
---|
| 26 | N DIR,TIUCNT,TIUGET,TIUIDX,TIUNM,TIUNUM,TIUTPLT,TIURARY,TIUSR,X,Y
|
---|
| 27 | ;
|
---|
| 28 | ; Get input for user:
|
---|
| 29 | S TIUSR="" ; Default.
|
---|
| 30 | S DIR(0)="PAO^200,:AEMNQ"
|
---|
| 31 | S DIR("A")=" Enter/select user for whom templates will be deleted: "
|
---|
| 32 | S DIR("?")="Specify user for template cleanup."
|
---|
| 33 | D ^DIR
|
---|
| 34 | S TIUSR=Y
|
---|
| 35 | K DIR,X,Y ; Clean up from FM call.
|
---|
| 36 | I TIUSR<1 S TIUSR="" Q ; No acceptable entry.
|
---|
| 37 | S TIUSR=+TIUSR ; Selected user's DUZ.
|
---|
| 38 | I TIUSR="" Q ; Punt here if there's a problem.
|
---|
| 39 | ;
|
---|
| 40 | ; Confirm before deletion:
|
---|
| 41 | S TIUNM=$P($G(^VA(200,TIUSR,0)),U,1)
|
---|
| 42 | S DIR("T")=120 ; Two minute maximum timeout for response.
|
---|
| 43 | S DIR("A")=" Delete all non-shared templates for user "_TIUNM_" (Y/N)"
|
---|
| 44 | S DIR("?")=" Non-shared templates for this user will be permanently lost..."
|
---|
| 45 | S DIR("B")="NO" ; Default.
|
---|
| 46 | ;
|
---|
| 47 | ; Define DIR input requirements:
|
---|
| 48 | S DIR(0)="YO^1:2:0"
|
---|
| 49 | ;
|
---|
| 50 | ; Call DIR for user choice:
|
---|
| 51 | W !! ; Spacing for screen display.
|
---|
| 52 | D ^DIR
|
---|
| 53 | ;
|
---|
| 54 | ; Check user response:
|
---|
| 55 | I '$L($G(Y)) Q ; Skip if Y isn't assigned.
|
---|
| 56 | I Y="" Q ; Skip if Y is null.
|
---|
| 57 | I Y="^" Q ; Skip if Y is "^" character.
|
---|
| 58 | I Y<1 Q ; Skip if Y is less than one.
|
---|
| 59 | I Y>2 Q ; "No" choice.
|
---|
| 60 | K DIR,X,Y ; Clean up from FM call.
|
---|
| 61 | ;
|
---|
| 62 | ; Proceed with clean up:
|
---|
| 63 | D CTRL
|
---|
| 64 | K TIURARY ; Array not returned under manual functionality.
|
---|
| 65 | ;
|
---|
| 66 | Q
|
---|
| 67 | ;
|
---|
| 68 | KUSER ; Get USER from Kernel - called by option: TIU TEMPLATE USER DELETE.
|
---|
| 69 | ;
|
---|
| 70 | ; See if this function is "active" by checking Parameter:
|
---|
| 71 | ;
|
---|
| 72 | N TIUCNT,TIUGET,TIUIDX,TIUNUM,TIUTPLT,TIUPAR,TIURARY,TIUSR
|
---|
| 73 | S TIUPAR=$$GET^XPAR("DIV^SYS^PKG","TIU TEMPLATE USER AUTO DELETE",1,"E")
|
---|
| 74 | I TIUPAR'="YES" Q
|
---|
| 75 | I TIUPAR="" Q
|
---|
| 76 | ;
|
---|
| 77 | ; Parameter set to activate auto-cleanup - proceed:
|
---|
| 78 | S TIUSR=$GET(XUIFN) ; Assign TIUSR variable.
|
---|
| 79 | I TIUSR="" Q ; Punt here if there's a problem.
|
---|
| 80 | D CTRL
|
---|
| 81 | K TIURARY ; Array not returned when triggered by Kernel.
|
---|
| 82 | ;
|
---|
| 83 | Q
|
---|
| 84 | ;
|
---|
| 85 | CLEAN(TIUSR,TIURARY) ; Call here as an RPC: Dump templates for one user.
|
---|
| 86 | ;
|
---|
| 87 | N TIUCNT,TIUGET,TIUIDX,TIUNUM,TIUTPLT
|
---|
| 88 | I 'TIUSR>0 S TIURARY(0)="No user DUZ passed." Q
|
---|
| 89 | ;
|
---|
| 90 | CTRL ; Main control code for actual cleanup process.
|
---|
| 91 | ;
|
---|
| 92 | S TIUCNT=0
|
---|
| 93 | ;
|
---|
| 94 | ; See if there is an AROOT x-ref entry for this user:
|
---|
| 95 | I '$D(^TIU(8927,"AROOT",TIUSR)) S TIURARY(0)="No AROOT record." Q
|
---|
| 96 | ;
|
---|
| 97 | ; Get parent record for user's templates:
|
---|
| 98 | S TIUTPLT=0
|
---|
| 99 | F D Q:'TIUTPLT
|
---|
| 100 | .S TIUTPLT=$O(^TIU(8927,"AROOT",TIUSR,TIUTPLT))
|
---|
| 101 | .I 'TIUTPLT Q
|
---|
| 102 | .;
|
---|
| 103 | .; Compile an array of applicable templates:
|
---|
| 104 | .D DEL(TIUTPLT)
|
---|
| 105 | ;
|
---|
| 106 | Q
|
---|
| 107 | ;
|
---|
| 108 | DEL(TIUIEN) ; Pass root node of AROOT x-ref of <^TIU(8927,> file.
|
---|
| 109 | ;
|
---|
| 110 | N TIUARY,TIUTMP
|
---|
| 111 | ;
|
---|
| 112 | S TIURARY(TIUCNT)=TIUSR_U_TIUIEN ; 0-node: "UserDUZ^ARootIEN" format.
|
---|
| 113 | D BLD(TIUIEN,.TIUARY) ; Recursive array builder.
|
---|
| 114 | ;
|
---|
| 115 | ; Create or add to return array:
|
---|
| 116 | S (TIUGET,TIUNUM)=0
|
---|
| 117 | F D Q:'TIUGET
|
---|
| 118 | .S TIUNUM=TIUNUM+1
|
---|
| 119 | .S TIUGET=$G(TIUARY(TIUNUM))
|
---|
| 120 | .I 'TIUGET Q
|
---|
| 121 | .S TIUCNT=TIUCNT+1
|
---|
| 122 | .S TIURARY(TIUCNT)=TIUGET
|
---|
| 123 | ;
|
---|
| 124 | ; Using the array of templates, make call that kills only orphans:
|
---|
| 125 | D DELETE^TIUSRVT(.TIUTMP,.TIUARY)
|
---|
| 126 | ;
|
---|
| 127 | Q
|
---|
| 128 | ;
|
---|
| 129 | BLD(TIUIEN,TIUARY) ; Recursively build an array of templates.
|
---|
| 130 | ;
|
---|
| 131 | N TIUIDX
|
---|
| 132 | ;
|
---|
| 133 | S TIUIDX=$O(TIUARY(" "),-1)+1
|
---|
| 134 | S TIUARY(TIUIDX)=TIUIEN
|
---|
| 135 | S TIUIDX=0
|
---|
| 136 | F S TIUIDX=$O(^TIU(8927,TIUIEN,10,TIUIDX)) Q:'TIUIDX D
|
---|
| 137 | .D BLD($P(^TIU(8927,TIUIEN,10,TIUIDX,0),U,2),.TIUARY)
|
---|
| 138 | ;
|
---|
| 139 | Q
|
---|
| 140 | ;
|
---|