PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i5h-3LL

HOME


5h-3LL 1.0
DIR: /srv/http/vyvoj.adent.cz/egroupware/pfi/setup/doc
/srv/http/vyvoj.adent.cz/egroupware/pfi/setup/doc/
Upload File:
Current File : /srv/http/vyvoj.adent.cz/egroupware/pfi/setup/doc/setup3.ps
%!PS-Adobe-2.0
%%Creator: dvipsk 5.86 p1.5d Copyright 1996-2001 ASCII Corp.(www-ptex@ascii.co.jp)
%%based on dvipsk 5.86 Copyright 1999 Radical Eye Software (www.radicaleye.com)
%%Title: setup3.dvi
%%Pages: 18
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: Helvetica-Bold Times-Roman Times-Italic Courier
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -t letter -o setup3.ps setup3.dvi
%DVIPSParameters: dpi=600, compressed
%DVIPSSource:  TeX output 2001.08.13:1248
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end

%%EndProcSet
%%BeginProcSet: 8r.enc
% @@psencodingfile@{
%   author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry",
%   version = "0.6",
%   date = "1 July 1998",
%   filename = "8r.enc",
%   email = "tex-fonts@@tug.org",
%   docstring = "Encoding for TrueType or Type 1 fonts
%                to be used with TeX."
% @}
% 
% Idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard Encoding + ISO Latin 1 + extra characters from Lucida.
% 
% Character code assignments were made as follows:
% 
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
% 
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
% 
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
% 
% (4) Remaining positions left undefined are for use in (hopefully)
% upward-compatible revisions, if someday more characters are generally
% available.
% 
% (5) hyphen appears twice for compatibility with both 
% ASCII and Windows.
% 
/TeXBase1Encoding [
% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
  /.notdef /dotaccent /fi /fl
  /fraction /hungarumlaut /Lslash /lslash
  /ogonek /ring /.notdef
  /breve /minus /.notdef 
% These are the only two remaining unencoded characters, so may as
% well include them.
  /Zcaron /zcaron 
% 0x10
 /caron /dotlessi 
% (unusual TeX characters available in, e.g., Lucida Bright)
 /dotlessj /ff /ffi /ffl 
 /.notdef /.notdef /.notdef /.notdef
 /.notdef /.notdef /.notdef /.notdef
 % very contentious; it's so painful not having quoteleft and quoteright
 % at 96 and 145 that we move the things normally found there to here.
 /grave /quotesingle 
% 0x20 (ASCII begins)
 /space /exclam /quotedbl /numbersign
 /dollar /percent /ampersand /quoteright
 /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
% 0x30
 /zero /one /two /three /four /five /six /seven
 /eight /nine /colon /semicolon /less /equal /greater /question
% 0x40
 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
% 0x50
 /P /Q /R /S /T /U /V /W
 /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
% 0x60
 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
% 0x70
 /p /q /r /s /t /u /v /w
 /x /y /z /braceleft /bar /braceright /asciitilde
 /.notdef % rubout; ASCII ends
% 0x80
 /.notdef /.notdef /quotesinglbase /florin
 /quotedblbase /ellipsis /dagger /daggerdbl
 /circumflex /perthousand /Scaron /guilsinglleft
 /OE /.notdef /.notdef /.notdef
% 0x90
 /.notdef /.notdef /.notdef /quotedblleft
 /quotedblright /bullet /endash /emdash
 /tilde /trademark /scaron /guilsinglright
 /oe /.notdef /.notdef /Ydieresis
% 0xA0
 /.notdef % nobreakspace
 /exclamdown /cent /sterling
 /currency /yen /brokenbar /section
 /dieresis /copyright /ordfeminine /guillemotleft
 /logicalnot
 /hyphen % Y&Y (also at 45); Windows' softhyphen
 /registered
 /macron
% 0xD0
 /degree /plusminus /twosuperior /threesuperior
 /acute /mu /paragraph /periodcentered
 /cedilla /onesuperior /ordmasculine /guillemotright
 /onequarter /onehalf /threequarters /questiondown
% 0xC0
 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
 /Egrave /Eacute /Ecircumflex /Edieresis
 /Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
 /Eth /Ntilde /Ograve /Oacute
 /Ocircumflex /Otilde /Odieresis /multiply
 /Oslash /Ugrave /Uacute /Ucircumflex
 /Udieresis /Yacute /Thorn /germandbls
% 0xE0
 /agrave /aacute /acircumflex /atilde
 /adieresis /aring /ae /ccedilla
 /egrave /eacute /ecircumflex /edieresis
 /igrave /iacute /icircumflex /idieresis
% 0xF0
 /eth /ntilde /ograve /oacute
 /ocircumflex /otilde /odieresis /divide
 /oslash /ugrave /uacute /ucircumflex
 /udieresis /yacute /thorn /ydieresis
] def

%%EndProcSet
%%BeginProcSet: texps.pro
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics
exch def dict begin 0 1 255{exch dup type/integertype ne{pop pop 1 sub
dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}
ifelse}for Metrics/Metrics currentdict end def[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end

%%EndProcSet
%%BeginProcSet: special.pro
%!
TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
{userdict/md get type/dicttype eq{userdict begin md length 10 add md
maxlength ge{/md md dup length 20 add dict copy def}if end md begin
/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
save N userdict maxlength dict begin/magscale true def normalscale
currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict
begin/SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{
CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N
/@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end}
repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N
/@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX
currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY
moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X
/yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0
1 startangle endangle arc savematrix setmatrix}N end

%%EndProcSet
%%BeginProcSet: color.pro
%!
TeXDict begin/setcmykcolor where{pop}{/setcmykcolor{dup 10 eq{pop
setrgbcolor}{1 sub 4 1 roll 3{3 index add neg dup 0 lt{pop 0}if 3 1 roll
}repeat setrgbcolor pop}ifelse}B}ifelse/TeXcolorcmyk{setcmykcolor}def
/TeXcolorrgb{setrgbcolor}def/TeXcolorgrey{setgray}def/TeXcolorgray{
setgray}def/TeXcolorhsb{sethsbcolor}def/currentcmykcolor where{pop}{
/currentcmykcolor{currentrgbcolor 10}B}ifelse/DC{exch dup userdict exch
known{pop pop}{X}ifelse}B/GreenYellow{0.15 0 0.69 0 setcmykcolor}DC
/Yellow{0 0 1 0 setcmykcolor}DC/Goldenrod{0 0.10 0.84 0 setcmykcolor}DC
/Dandelion{0 0.29 0.84 0 setcmykcolor}DC/Apricot{0 0.32 0.52 0
setcmykcolor}DC/Peach{0 0.50 0.70 0 setcmykcolor}DC/Melon{0 0.46 0.50 0
setcmykcolor}DC/YellowOrange{0 0.42 1 0 setcmykcolor}DC/Orange{0 0.61
0.87 0 setcmykcolor}DC/BurntOrange{0 0.51 1 0 setcmykcolor}DC
/Bittersweet{0 0.75 1 0.24 setcmykcolor}DC/RedOrange{0 0.77 0.87 0
setcmykcolor}DC/Mahogany{0 0.85 0.87 0.35 setcmykcolor}DC/Maroon{0 0.87
0.68 0.32 setcmykcolor}DC/BrickRed{0 0.89 0.94 0.28 setcmykcolor}DC/Red{
0 1 1 0 setcmykcolor}DC/OrangeRed{0 1 0.50 0 setcmykcolor}DC/RubineRed{
0 1 0.13 0 setcmykcolor}DC/WildStrawberry{0 0.96 0.39 0 setcmykcolor}DC
/Salmon{0 0.53 0.38 0 setcmykcolor}DC/CarnationPink{0 0.63 0 0
setcmykcolor}DC/Magenta{0 1 0 0 setcmykcolor}DC/VioletRed{0 0.81 0 0
setcmykcolor}DC/Rhodamine{0 0.82 0 0 setcmykcolor}DC/Mulberry{0.34 0.90
0 0.02 setcmykcolor}DC/RedViolet{0.07 0.90 0 0.34 setcmykcolor}DC
/Fuchsia{0.47 0.91 0 0.08 setcmykcolor}DC/Lavender{0 0.48 0 0
setcmykcolor}DC/Thistle{0.12 0.59 0 0 setcmykcolor}DC/Orchid{0.32 0.64 0
0 setcmykcolor}DC/DarkOrchid{0.40 0.80 0.20 0 setcmykcolor}DC/Purple{
0.45 0.86 0 0 setcmykcolor}DC/Plum{0.50 1 0 0 setcmykcolor}DC/Violet{
0.79 0.88 0 0 setcmykcolor}DC/RoyalPurple{0.75 0.90 0 0 setcmykcolor}DC
/BlueViolet{0.86 0.91 0 0.04 setcmykcolor}DC/Periwinkle{0.57 0.55 0 0
setcmykcolor}DC/CadetBlue{0.62 0.57 0.23 0 setcmykcolor}DC
/CornflowerBlue{0.65 0.13 0 0 setcmykcolor}DC/MidnightBlue{0.98 0.13 0
0.43 setcmykcolor}DC/NavyBlue{0.94 0.54 0 0 setcmykcolor}DC/RoyalBlue{1
0.50 0 0 setcmykcolor}DC/Blue{1 1 0 0 setcmykcolor}DC/Cerulean{0.94 0.11
0 0 setcmykcolor}DC/Cyan{1 0 0 0 setcmykcolor}DC/ProcessBlue{0.96 0 0 0
setcmykcolor}DC/SkyBlue{0.62 0 0.12 0 setcmykcolor}DC/Turquoise{0.85 0
0.20 0 setcmykcolor}DC/TealBlue{0.86 0 0.34 0.02 setcmykcolor}DC
/Aquamarine{0.82 0 0.30 0 setcmykcolor}DC/BlueGreen{0.85 0 0.33 0
setcmykcolor}DC/Emerald{1 0 0.50 0 setcmykcolor}DC/JungleGreen{0.99 0
0.52 0 setcmykcolor}DC/SeaGreen{0.69 0 0.50 0 setcmykcolor}DC/Green{1 0
1 0 setcmykcolor}DC/ForestGreen{0.91 0 0.88 0.12 setcmykcolor}DC
/PineGreen{0.92 0 0.59 0.25 setcmykcolor}DC/LimeGreen{0.50 0 1 0
setcmykcolor}DC/YellowGreen{0.44 0 0.74 0 setcmykcolor}DC/SpringGreen{
0.26 0 0.76 0 setcmykcolor}DC/OliveGreen{0.64 0 0.95 0.40 setcmykcolor}
DC/RawSienna{0 0.72 1 0.45 setcmykcolor}DC/Sepia{0 0.83 1 0.70
setcmykcolor}DC/Brown{0 0.81 1 0.60 setcmykcolor}DC/Tan{0.14 0.42 0.56 0
setcmykcolor}DC/Gray{0 0 0 0.50 setcmykcolor}DC/Black{0 0 0 1
setcmykcolor}DC/White{0 0 0 0 setcmykcolor}DC end

%%EndProcSet
TeXDict begin 40258431 52099146 1000 600 600 (setup3.dvi)
@start /Fa 106[ 23 149[{ TeXBase1Encoding ReEncodeFont} 1
66.4176 /Times-Roman rf /Fb 134[ 46 1[ 65 46 51 28 46
32 1[ 51 51 51 74 23 2[ 23 51 2[ 46 51 46 51 46 13[ 55
3[ 65 13[ 60 12[ 46 46 46 46 2[ 23 46[{ TeXBase1Encoding ReEncodeFont}
27 83.022 /Helvetica-Bold rf /Fc 130[ 45 1[ 45 1[ 45
45 45 45 45 45 45 45 45 45 45 45 45 45 45 1[ 45 45 45
45 45 45 45 45 45 1[ 45 1[ 45 1[ 45 3[ 45 45 45 45 45
45 45 45 45 45 45 45 2[ 45 45 45 45 45 45 45 45 45 2[ 45
45 1[ 45 45 45 3[ 45 45 45 45 45 45 1[ 45 45 45 1[ 45
45 45 45 1[ 45 45 1[ 45 34[{ TeXBase1Encoding ReEncodeFont} 71
74.7198 /Courier rf /Fd 134[ 55 1[ 78 55 61 33 55 39
61 61 61 61 89 28 55 1[ 28 61 61 33 55 61 55 61 55 1[ 55
9[ 72 61 66 72 8[ 28 72 2[ 66 72 1[ 72 72 9[ 55 55 55
55 55 55 55 55 1[ 28 1[ 28 2[ 33 33 28 36[ 61 2[{
TeXBase1Encoding ReEncodeFont} 48 99.6264 /Helvetica-Bold
rf /Fe 138[ 42 23 1[ 32 1[ 42 42 6[ 42 2[ 37 3[ 42 9[ 69
3[ 42 9[ 28 1[ 60 13[ 42 42 42 42 42 42 42 42 42 42 48[{
TeXBase1Encoding ReEncodeFont} 22 83.022 /Times-Italic
rf /Ff 134[ 66 1[ 93 66 73 40 66 47 73 73 73 73 106 33
2[ 33 73 73 40 66 73 66 73 66 1[ 66 7[ 113 1[ 86 2[ 86
2[ 93 86 100 21[ 66 66 66 66 66 66 66 1[ 33 33 4[ 40
40 37[ 73 2[{ TeXBase1Encoding ReEncodeFont} 41 119.552
/Helvetica-Bold rf /Fg 107[ 37 37 24[ 37 42 42 60 42
42 23 32 28 42 42 42 42 65 23 42 23 23 42 42 28 37 42
37 42 37 1[ 42 5[ 60 60 78 60 60 51 46 55 60 46 60 60
74 51 60 32 28 60 60 46 51 60 55 55 60 1[ 37 47 47 47
1[ 23 2[ 42 42 42 42 42 42 42 42 23 21 28 21 2[ 28 28
28 2[ 42 2[ 28 29[ 46 46 2[{ TeXBase1Encoding ReEncodeFont} 78
83.022 /Times-Roman rf /Fh 137[ 80 88 48 80 56 1[ 88
88 88 1[ 40 2[ 40 88 88 1[ 80 88 80 1[ 80 12[ 88 6[ 120
88 2[ 40 4[ 104 104 1[ 104 11[ 80 80 80 80 80 1[ 40 40
43[ 88 2[{ TeXBase1Encoding ReEncodeFont} 31 143.462
/Helvetica-Bold rf /Fi 138[ 126 69 1[ 80 1[ 126 126 6[ 126
2[ 115 3[ 115 9[ 195 3[ 138 9[ 57 1[ 161 71[{
TeXBase1Encoding ReEncodeFont} 12 206.584 /Helvetica-Bold
rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%BeginPaperSize: Letter
letter
%%EndPaperSize

%%EndSetup
%%Page: 1 1
1 0 bop Black 0 TeXcolorgray Black Black Fi 964 647 a(phpGr) l(oupW) -8
b(are) 58 b(Setup) g(III) p Fh 1805 923 a(Miles) 39 b(Lott) p
Fg 695 1155 a(A) 21 b(de) n(v) o(e) n(loper) f(intro) n(duction) f(to) i
(using) e(the) h(ne) o(xt) g(gener) n(ation) g(setup) g(application) f
(for) 695 1263 y(phpg) n(roup) n(w) o(are.) p Fh -2 1981
a(1.) 39 b(Intr) m(odu) n(ction) p Ff -2 2309 a(1.1.) 34
b(W) l(elcom) r(e) p Fg 396 2476 a(Thank) n(s) 21 b(for) f(taking) f
(the) i(time) f(to) g(look) g(o) o(v) m(er) g(this) h(docu) n(ment.) f
(If) g(you) f(are) i(a) f(de) n(v) o(elo) n(per) g(who) g(is) h(ne) n
(w) f(to) 396 2584 y(phpg) n(roup) n(w) o(are,) g(this) h(docum) n(ent)
f(will) h(be) f(in) m(v) n(alua) n(ble) h(to) f(your) f(success) i(dur)
n(ing) f(the) g(life) h(of) f(you) n(r) h(applica) n(tion.) f(This) 396
2692 y(is) h(in) g(additio) n(n) g(to) f(the) g(other) g(\002ne) g
(docu) n(mentation) f(a) n(v) n(ailable) h(in) g(the) g(phpg) n(w) o
(api/doc) g(directo) n(ry) g(in) g(your) f(install.) 396
2800 y(Ev) o(en) g(long-tim) n(e) i(phpg) n(w) g(de) n(v) o(e) n
(lopers) f(should) f(bene\002t) h(this) g(docum) n(ent.) g(Herein,) g
(I) g(will) h(attempt) f(to) g(outline) g(the) 396 2908
y(critical) h(steps) f(require) n(d) h(in) f(order) f(to) h(get) h
(along) e(with) h(setup3,) f(setup-TNG,) g(or) h(whate) n(v) o(er) f
(we) i(end) e(up) h(calling) g(it) 396 3016 y(\(He) o(y) -5
b(,) 19 b(ho) n(w) h(abou) n(t) h(') -5 b(setup'?\)) p
Ff -2 3386 a(1.2.) 34 b(Over) q(v) r(ie) n(w) p Fg 396
3553 a(W) m(ith) 21 b(setup3) n(,) g(we) f(introd) n(uce) g(se) n(v) o
(eral) g(ne) n(w) f(capabilities) h(and) g(techno) n(logies) g(for) f
(the) h(de) n(v) o(elo) n(per) g(and) f(end) h(user) g(alik) o(e.) 396
3661 y(Michael) g(Dean) g(w) o(as) h(kind) e(enoug) n(h) i(to) f(of) n
(fer) f(up) h(schema_) n(proc) f(to) i(form) e(the) h(core) g(of) g(an)
g(abstracted) f(and) 396 3769 y(database-in) n(depend) n(ent) h(upgr) n
(ade) g(process.) g(This) g(enables) g(de) n(v) o(elo) n(pers) g(to) h
(write) f(a) g(single) h(set) g(of) e(upgrad) n(es) i(and) 396
3877 y(table) f(de\002nitions,) g(which) f(should) g(then) h(w) o(ork) g
(on) f(MySQL) h(and) g(PostgreSQL,) f(or) h(an) o(y) g(other) f
(database) h(type) f(we) 396 3985 y(might) h(add) f(in) i(the) f(futur)
n(e.) 396 4135 y(Adding) f(to) h(this) h(to) f(control) f(the) i(pro) n
(cess) g(w) o(as) g(a) g(good) e(chun) n(k) h(of) g(the) h(old) e
(setup) h(progr) n(am,) g(written) g(by) g(Dan) 396 4243
y(K) o(uyk) m(endall) g(\(Seek3r\)) n(.) h(Dan) f(had) f(e) n(v) o(ery)
n(thing) h(to) g(do) g(with) g(the) h(ne) n(w) f(dep) n(endencies) g
(supp) n(ort) g(and) g(with) g(the) h(for) n(mat) 396
4350 y(of) f(the) g($setup_in) n(fo) g(array) f(in) i(setup3.) 396
4500 y(Setup3) f(adds) g(multi-lan) n(guag) n(e) h(suppo) n(rt) g(for) e
(the) i(setup) f(applica) n(tion,) g(a) h(long) e(missed) h(feature,) f
(I) i(w) o(ould) e(imagine.) 396 4649 y(Setup3) h(gi) n(v) o(e) n(s) h
(each) f(application) f(de) n(v) o(e) n(loper) h(contr) n(ol) h(o) o(v)
m(er) f(their) g(application) f(install) i(and) e(upgra) n(de) i(pro) n
(cesses,) 396 4757 y(while) f(gi) n(ving) f(them) h(access) h(to) f(w) o
(ork) g(within) g(a) g(realm) g(forme) n(rly) g(o) n(wned) f(by) h
(only) g(the) g(form) n(er) g(core) g(phpg) n(roup) n(w) o(are) p
Black Fe 3842 5348 a(1) p Black 90 rotate dyy eop
%%Page: 2 2
2 1 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fg 396 579 a(application) n(s.) i
(Y) -8 b(es,) 20 b(this) h(is) g(e) o(xtra) f(w) o(ork) f(for) h(the) g
(de) n(v) o(e) n(loper) -5 b(.) 20 b(But) h(it) g(is) g(hop) n(ed) f
(that) h(setup3) e(is) i(also) g(vie) n(wed) e(as) i(a) g(tool) 396
687 y(that) g(can) f(truly) f(enhan) n(ce) i(the) f(de) n(v) o(e) n
(lopment) f(process.) 396 836 y(OK.) i(Let') -5 b(s) 20
b(di) n(v) o(e) g(right) f(in...) p Fh -2 1338 a(2.) 39
b(Applica) n(tion) g(setup) g(\002les) p Fg 396 1518
a(The) 20 b(\002les) h(in) g(this) f(section) g(are) g(contained) f
(within) h(each) g(applicatio) n(n/setup) g(directo) n(ry) -5
b(.) 20 b(Ev) o(e) n(ry) g(app) g(will) h(some) f(of) 396
1626 y(these) h(\002les) g(in) f(order) f(to) h(operate) f(with) i
(setup3.) p Ff -2 1954 a(2.1.) 34 b(setup.i) r(nc.php) g(\(Required\)) p
Fd 396 2241 a(2.1.1.) 28 b(Basic) h(inf) n(ormation) p
Fg 396 2399 a(The) 20 b(v) n(alues) g(in) g(this) h(section) f(must) g
(be) g(used) g(by) g(all) h(applicatio) n(ns.) 396 2548
y(The) f(\002rst) h(section) e(of) h(setup.inc.) n(php) f(de\002nes) h
(the) g(v) o(ery) f(basic) h(and) g(yet) g(critical) g(infor) n(mation)
f(about) g(the) h(application) n(.) 396 2656 y(T) -7
b(ak) o(e) 21 b(a) f(look) f(at) i(the) f(follo) n(wing) f(section:) p
Fc 396 2836 a($setup_info) n(['addressboo) n(k']['name']) 43
b(=) i('addressbo) n(ok';) 396 2933 y($setup_info) n(['addressboo) n
(k']['title']) e(=) i('Addressb) n(ook';) 396 3030 y($setup_info) n
(['addressboo) n(k']['version) n(']) g(=) g('0.9.13) n(.002';) 396
3128 y($setup_info) n(['addressboo) n(k']['app_ord) n(er']) g(=) f(4;)
396 3225 y($setup_info) n(['addressboo) n(k']['enable') n(]) h(=) g(1;)
p Fg 396 3513 a('name') 19 b(is) i(used) f(throu) n(ghout) f(phpg) n
(roupw) m(are,) i(typica) n(lly) g(in) f($php) n(gw_inf) n(o) h
(\003ags) f(such) g(as) h('curr) n(entapp') e(or) h(as) h(the) 396
3621 y('app_) n(name') f(almost) g(e) n(v) o(er) n(ywhere) f(else.) 396
3770 y(') o(title') h(w) o(ould) f(be) i(used) f(in) g(the) g(na) n
(vbar) -5 b(,) 21 b(adm) n(in,) g(pref) n(erences,) f(as) h(well) f(as)
h(in) g(the) f(applicatio) n(n) g(itself.) 396 3920 y(The) g(') l(v) o
(er) n(sion') g(string) g(de\002nes) g(the) g(v) o(ersion) f(of) h(the)
g(application) f(and) h(table) g(code) n(.) h(This) f(w) o(ould) g(be) g
(increme) n(nted) 396 4028 y(whene) n(v) m(er) g(you) g(create) g(a) g
(ne) n(w) g(upgr) n(ade) g(function) n(,) h(and) e(typically) h(only) f
(for) h(table) g(mod) n(i\002cations.) g(If) g(the) g(change) f(is) 396
4135 y(signi\002cant) h(from) f(the) h(last) h(code) f(upd) n(ate,) g
(you) g(could) f(increm) n(ent) i(this) f(here) g(also.) g(Increm) n
(enting) g(this) g(v) o(ersion) f(string) 396 4243 y(is) i(not) f(tri) n
(vial,) g(so) h(please) f(do) g(read) f(the) h(rest) h(of) f(this) h
(docu) n(ment) f(for) f(more) h(infor) n(mation) g(abo) n(ut) h(that.)
396 4393 y('app_) n(order) n(') g(determ) n(ines) g(the) f(order) f(of)
h(applicatio) n(ns) h(in) f(the) h(na) n(vb) n(ar) -5
b(.) 21 b(If) f(the) g(numb) n(er) g(you) g(set) h(here) e(is) i(the) g
(same) f(as) 396 4501 y(is) h(set) g(for) f(anoth) n(er) h(app,) e(the)
h(app) g(whose) g('nam) n(e') h(is) g(\002rst) g(in) f(the) g(English) g
(alphab) n(et) h(w) o(ould) e(appear) g(\002rst.) i(Smaller) 396
4609 y(numb) n(ers) g(sho) n(w) f(closer) g(to) g(the) g(top) g(or) g
(left) h(end) e(of) h(the) g(na) n(vbar) m(,) f(depen) n(ding) g(upon) g
(the) h(layout.) 396 4758 y(The) g('enable) n(') h(string) f(is) h
(used) f(by) g(the) g(php) n(grou) n(pw) o(are) g(API) h(to) f
(determin) n(e) h(whether) e(an) h(application) f(is) i(disabled,) 396
4866 y(enabled) n(,) g(or) f(enabled) f(b) n(ut) h(hidden) f(from) g
(the) h(na) n(vbar) -7 b(.) 21 b(Most) g(applicatio) n(ns) g(will) g(w)
o(ant) f(this) h(set) g(to) f(a) h(v) n(alue) e(of) h(1) p
Black Fe 3842 5278 a(2) p Black 90 rotate dyy eop
%%Page: 3 3
3 2 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fg 396 579 a(\(enabled) n(\).) h
(The) g(notify) n(windo) n(w) g(app) f(sets) j(this) e(to) h(2,) f
(which) f(k) o(eeps) h(it) h(of) n(f) f(the) g(na) n(vba) n(r) -5
b(.) 21 b(An) f(enable) g(of) g(0) g(w) o(ould) 396 687
y(disable) g(the) g(app) g(by) g(def) o(au) n(lt.) h(There) e(is) j
(one) d(other) h(special) g(case,) g(3,) g(which) g(is) h(used) f
(primar) n(ily) h(by) f(the) g(API) g(itself.) 396 795
y(From) g(the) g(perspecti) n(v) m(e) h(of) f(setup3) n(,) h(the) f
(API) h(is) g(an) f(applicatio) n(n) h(just) f(lik) o(e) h(an) o(y) e
(other) g(application) n(.) i(By) g(setting) f(the) 396
903 y('enable') f(\003ag) h(to) h(3,) f(the) g(API) g(is) h(still) h
(enabled) n(,) f(b) n(ut) f(will) h(not) f(be) g(assignable) f(to) i(a)
f(user) g(as) h(a) g(real) f(applicatio) n(n.) h(It) f(will) 396
1011 y(thereby) f(be) h(hidden) f(from) g(the) h(admin) g(for) f
(application) g(and) g(user/gro) n(up) h(editing.) p
Fd 396 1348 a(2.1.2.) 28 b(T) -8 b(ab) o(le) 28 b(inf) n(o) p
Fb 396 1601 a(2.1.2.1.) c(Onl) o(y) f(applications) f(with) g(database)
h(tab) o(les) g(will) g(use) h(entries) f(in) g(this) f(section.) p
Fg 396 1750 a(The) e(ne) o(xt) g(section) g(of) f($setup_in) n(fo) h(v)
n(alues) g(is) h(an) f(array) g(de\002nin) n(g) g(all) h(of) f(the) g
(application) n(') -5 b(s) 21 b(database) f(tables:) p
Fc 396 1931 a($setup_info) n(['addressboo) n(k']['tables') n(]) 45
b(=) g(array\() 576 2028 y('phpgw_) n(addressbook') n(,) 576
2125 y('phpgw_) n(addressbook_) n(extra') 396 2222 y(\);) p
Fg 396 2510 a(This) 21 b(is) g(a) f(simple) h(array) -7
b(,) 20 b(and) g(must) g(list) h(accurately) e(the) h(curren) n(t) h
(table) f(names) g(you) g(are) g(using) f(in) i(you) n(r) g(applica) n
(tion.) 396 2618 y(This) g(list) g(will) g(match) f(a) g(much) f(more) h
(comp) n(le) o(x) g(array) f(of) h(table) g(speci\002cations,) g(as) h
(you) e(will) i(see) g(belo) n(w) -5 b(.) p Fd 396 3038
a(2.1.3.) 28 b(Hooks) p Fb 396 3291 a(2.1.3.1.) c(Some) f(applications)
g(will) g(use) g(this) g(section.) p Fg 396 3441 a(The) d(hook) n(s) h
(array) e(part) h(of) g($setup_in) n(fo) g(contain) n(s) i(a) e(simple)
g(list) i(of) d(hooks) h(the) g(applicatio) n(n) g(will) h(use:) p
Fc 396 3621 a($setup_info) n(['addressboo) n(k']['hooks']) n([]) 45
b(=) g('prefer) n(ences';) 396 3718 y($setup_info) n(['addressboo) n
(k']['hooks']) n([]) g(=) g('admin') n(;) p Fg 396 4006
a(Here) 20 b(we) g(also) g(note) f(a) h(dif) n(fer) n(ent) g(method) e
(of) i(') -5 b(stuf) n(\002ng) 19 b(the) g(array) -5
b(.) d(') 20 b(In) g(an) o(y) f(case,) h(this) g(list) h(of) e(hoo) n
(ks) i(will) f(be) g(requ) n(ired) 396 4114 y(soon) g(in) g(order) f
(for) g(your) g(hook) n(_admin) n(.inc.ph) n(p) i(and) e(other) g
(\002les) i(to) g(w) o(ork.) e(This) h(is) h(being) e(done) h(to) g
(cut) g(do) n(wn) f(on) h(the) 396 4222 y(manual) f(directory) g
(listing) h(and) g(\002le_e) o(xists) g(loops) g(don) n(e) h(curren) n
(tly) f(to) h(disco) o(v) m(er) f(hook) f(\002les.) i(Other) f(than) 396
4330 y('prefe) n(rences') g(and) g('adm) n(in',) g('hom) n(e',) g
('manu) n(al',) g('after_n) n(a) n(vbar') f(and) h('na) n(vb) n(ar_end)
n(') h(are) f(all) g(v) n(alid) g(hook) f(entries.) p
Black Fe 3842 5278 a(3) p Black 90 rotate dyy eop
%%Page: 4 4
4 3 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fd 396 579 a(2.1.4.) 28
b(Dependencies) p Fb 396 832 a(2.1.4.1.) c(All) f(applications) g(will)
g(ha) o(ve) g(at) g(least) g(one) g(entr) q(y) g(here) r(.) p
Fg 396 982 a(The) d(\002nal) g(section,) g(or) g(array) f(of) h(data,) g
(is) h(a) g(listing) f(of) g(the) g(other) g(applicatio) n(ns) h(you) n
(r) g(applica) n(tion) f(require) n(s) i(in) e(orde) n(r) 396
1089 y(to) h(fun) n(ction:) p Fc 396 1270 a($setup_info) n
(['addressboo) n(k']['depends) n('][]) 45 b(=) f(array\() 576
1367 y('appnam) n(e') h(=>) f('phpgwapi',) 576 1464 y('versio) n(ns') h
(=>) f(Array\() 755 1561 y('0.9.10',) 755 1658 y('0.9.11',) 755
1755 y('0.9.12',) 755 1852 y('0.9.13') 576 1950 y(\)) 396
2047 y(\);) p Fg 396 2335 a(This) 21 b(is) g(the) f(standard) f(depen) n
(denc) o(y) g(array) g(for) h(all) h(php) n(grou) n(pw) o(are) f
(application) n(s.) h(It) f(states) i(that) e(this) h(app) n(lication)
396 2443 y(require) n(s) g(the) g(php) n(gw) o(api,) f(and) f(lists) j
(the) e(v) o(ersion) n(s) h(with) g(which) e(v) o(ersions) h(this) g
(app) g(is) h(compa) n(tible.) g(This) f(list) h(w) o(ould) 396
2551 y(need) f(to) g(be) g(appen) n(ded) g(upon) f(each) h(ne) n(w) g
(API) g(release,) g(assuming) g(you) n(r) h(app) n(lication) f(is) h
(compatib) n(le) g(with) f(this) h(ne) n(w) 396 2659
y(API) g(v) o(ersio) n(n.) f(Y) -9 b(ou) 20 b(may) g(list) h(other) e
(application) n(s) i(here,) f(e.g.) f(your) g(app) h(might) g(dep) n
(end) g(upon) f('email') g(in) i(ord) n(er) g(to) 396
2767 y(w) o(ork) f(pro) n(perly) -5 b(.) 396 2916 y(Do) 20
b(NO) m(T) h(list) g(applicatio) n(ns) g(here) e(without) h(consider) n
(ing) g(this:) h(If) f(you) f(do) h(list) h(an) f(application) f(here,)
g(and) h(your) f(app) 396 3024 y(does) h(not) g(really) g(requ) n(ire) h
(it,) f(your) f(application) g(will) i(not) f(install) h(unless) f
(that) g(other) g(app) n(lication) g(is) h(already) 396
3132 y(installed.) f(This) g(is) i(hand) n(led) e(norm) n(ally) h
(within) f(the) g(install/upgr) n(ade) g(process) g(loops,) f(which) h
(will) h(install) g(only) 396 3240 y(application) n(s) g(whose) f
(depen) n(dencies) g(are) g(satis\002ed.) h(Using) f(a) h(multip) n
(ass) h(fun) n(ction,) e(the) g(application) n(s) h(are) f(installed)
396 3348 y(in) h(the) f(corr) n(ect) h(order) e(to) h(ensure) g(that) g
(depen) n(dencies) g(are) g(resolv) o(ed) n(.) h(In) f(all) g(cases,) h
(the) f(API) h(w) o(ould) e(be) h(installed) g(\002rst) 396
3456 y(in) h(e) n(v) o(er) n(y) f(ne) n(w) g(install) h(or) f(upgr) n
(ade,) g(since) g(all) h(application) n(s) g(depen) n(d) g(on) e(the) i
(API.) p Ff -2 3991 a(2.2.) 34 b(tab) o(les) r(_base) r(line) r(.in) r
(c.php) g(\(Recomme) r(nded\)) p Fd 396 4279 a(2.2.1.) 28
b(An) n(y) g(application) g(that) g(has) g(at) h(least) f(one) g
(upgrade) g(r) n(outine) f(will) g(ha) o(ve) h(this) 396
4408 y(\002le) r(.) p Fg 396 4566 a(The) 20 b(tables_baseline) f
(\002le) i(represen) n(ts) g(the) g(earliest) f(suppo) n(rted) g(v) o
(ersion) f(of) h(an) g(application) n(') -5 b(s) 21 b(tables.) f(This) h
(\002le) g(is) 396 4674 y(used) f(only) g(in) g(the) g(upgr) n(ade) g
(process,) g(and) f(is) j(critical) e(to) g(its) h(success.) g(It) f
(contains) g(an) g(array) f(of) 396 4782 y(database-in) n(depend) n
(ent) h(table,) g(\002eld,) g(k) o(e) o(y) g(and) g(inde) o(x) f
(de\002nitio) n(ns.) p Black Fe 3842 5278 a(4) p Black
90 rotate dyy eop
%%Page: 5 5
5 4 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fg 396 579 a(This) i(array) e(is)
i(form) n(atted) g(for) e(use) i(by) e(the) i(class.schema_) n(proc_) n
(array) -5 b(.) n(inc.ph) n(p) 21 b(\002le) f(in) h(setup3.) e(See) i
(the) 396 687 y(tables_up) n(date) g(section) f(belo) l(w) h(for) f
(mor) n(e) h(detail) f(about) f(schema_p) n(roc,) h(b) n(ut) g(for) g
(no) n(w) -5 b(,) 19 b(here) g(is) j(a) e(simple) g(table) 396
795 y(de\002nition) f(in) i(this) f(format:) p Fc 396
975 a($phpgw_base) n(line) 45 b(=) f(array\() 576 1072
y('skel') f(=>) i(array\() 755 1169 y('fd') f(=>) h(array\() 934
1266 y('skel_id') f(=>) g(array\('typ) n(e') h(=>) f('auto','null) n
(able') g(=>) h(false\),) 934 1363 y('skel_owner) n(') g(=>) g
(array\(') n(type') f(=>) h('varchar') n(,'precision') e(=>) i(25\),)
934 1461 y('skel_acces) n(s') g(=>) f(array\('type') f(=>) i('varchar) n
(','precision) n(') g(=>) f(10\),) 934 1558 y('skel_cat') f(=>) i
(array\('ty) n(pe') g(=>) f('int','prec) n(ision') g(=>) h(4\),) 934
1655 y('skel_des') e(=>) i(array\('ty) n(pe') g(=>) f('text'\),) 934
1752 y('skel_pri') f(=>) i(array\('ty) n(pe') g(=>) f('int','prec) n
(ision') g(=>) h(4\)) 755 1849 y(\),) 755 1946 y('pk') f(=>) h
(array\(') n(skel_id'\),) 755 2043 y('fk') f(=>) h(array\(\)) n(,) 755
2141 y('ix') f(=>) h(array\(\)) n(,) 755 2238 y('uc') f(=>) h
(array\(\)) 576 2335 y(\)) 396 2432 y(\);) p Fg 396 2720
a(This) 21 b(multi-d) n(imensiona) n(l) g(array) f(con) n(tains) h(1) f
(subarray) f(with) h(5) h(subs) f(of) g(its) h(o) n(wn.) e(The) h
(\002rst) h(array) e(\(') -5 b(sk) o(el') 21 b(abo) m(v) o(e\)) 396
2828 y(de\002nes) f(the) g(table) h(name) n(.) g(Belo) n(w) f(that) h
(are) f(5) g(sections,) g('fd') f(for) h(\002eld) g(de\002nition) n(s,)
h('pk') e(to) i(de\002ne) e(primary) g(k) o(e) o(ys,) 396
2936 y('fk') g(to) i(de\002ne) e(foreign) g(k) o(e) o(ys,) h('ix') f
(to) i(de\002ne) e(inde) o(x) m(ed) h(\002elds,) h(and) e('uc') h(to) g
(de\002ne) g(colum) n(ns) h(that) f(requir) n(e) h(uniqu) n(e) 396
3044 y(v) n(alues.) f(In) g(the) g(abo) o(v) m(e) g(e) o(xample) n(,) h
(the) f(table) g(') -5 b(sk) o(el') 21 b(has) f(6) g(\002elds) h(\(sk) o
(el_id,) e(sk) o(el_o) n(wne) n(r) m(,) h(sk) o(el_access,) g(sk) o
(el_cat,) 396 3152 y(sk) o(el_des,) g(sk) o(el_pr) n(i\),) h(and) e(')
-5 b(sk) o(el_id') 20 b(is) h(de\002ned) e(also) i(as) g(the) f(prima) n
(ry) g(k) o(e) o(y) g(for) f(this) i(table.) f(More) g(info) n(rmation)
f(on) 396 3260 y(this) i(array) e(is) i(belo) n(w) -5
b(.) 19 b(But,) i(this) g(for) n(mat) g(w) o(as) g(chosen) e(as) i(an) f
(a) n(v) n(ailable) g(solution) f(for) h(de\002nin) n(g) h(tables) f
(and) g(\002elds) 396 3368 y(without) g(ha) n(ving) f(to) h(maintain) f
(seperate) h(\002les) h(for) f(dif) n(fer) n(ent) g(databases.) p
Ff -2 3820 a(2.3.) 34 b(tab) o(les) r(_current.inc.php) h(\(Recomme) r
(nded\)) p Fd 396 4108 a(2.3.1.) 28 b(All) f(applications) h(with) f
(tab) o(les) i(will) d(need) i(this) g(\002le) r(.) p
Fg 396 4265 a(The) 20 b(tables_cur) n(rent) g(\002le) h(de\002nes) f
(the) g(curren) n(t) h(table) f(de\002nition) f(that) i(match) n(es) g
(the) g(') l(v) o(e) n(rsion') f(string) g(in) g($setup_) n(info) 396
4373 y(as) h(well) g(as) f(the) g(curren) n(t) h(code.) e(This) h
(\002le) h(is) g(used) f(only) f(for) g(ne) n(w) h(installs,) h(or) f
(when) n(e) n(v) o(er) g(the) g(applica) n(tion) g(is) h(remo) o(v) m
(ed) 396 4481 y(and) f(reinstalled.) f(The) h(forma) n(t) h(and) f
(name) f(of) h(the) h(array) e(in) h(this) h(\002le) g(is) g(the) f
(same) g(as) h(for) f(the) g(tables_baseline) f(\002le) 396
4589 y(listed) i(abo) o(v) m(e.) f(In) g(f) o(act,) g(whene) n(v) m(er)
g(it) h(is) g(required) e(to) h(chang) n(e) h(your) e(table) h
(de\002nition) n(s,) h(you) f(w) o(ould) f(start) i(by) e(cop) o(ying)
396 4697 y(the) h(current) f(\002le) i(o) o(v) o(er) e(to) h(become) f
(the) h(tables_baseline) g(\002le.) g(After) g(ha) n(ving) f(created) h
(you) n(r) h(upg) n(rade) f(rou) n(tines,) h(you) 396
4805 y(w) o(ould) f(then) f(recreate) h(the) g(curren) n(t) h(\002le) g
(to) f(match) g(the) g(ne) n(w) g(table) g(de\002nition) n(s.) p
Black Fe 3842 5278 a(5) p Black 90 rotate dyy eop
%%Page: 6 6
6 5 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Ff -2 583 a(2.4.) 34
b(tab) o(les) r(_update) r(.) r(inc.php) g(\(Recomm) r(ended\)) p
Fd 396 870 a(2.4.1.) 28 b(An) n(y) g(application) g(whic) o(h) f
(requires) h(an) g(upgrade) f(to) h(a) g(pre) o(vious) g(ver) o(sion')
-6 b(s) 396 1000 y(tab) o(les) 29 b(will) d(need) i(this) g(\002le) r
(.) p Fg 396 1158 a(This) 21 b(\002le) f(will) h(be) g(the) f(most) g
(comp) n(le) o(x) g(of) g(all) h(setup-or) n(iented) f(\002les) h(with)
f(which) g(you) f(will) i(be) f(w) o(orking) n(.) h(It) f(will) 396
1266 y(contain) f(all) i(upgr) n(ade) f(function) n(s) h(capable) e(of)
h(upgra) n(ding) g(an) o(y) f(possible) h(v) o(ersion) f(of) h(you) n
(r) h(php) n(group) n(w) o(are) f(app.) 396 1373 y(These) g(upgr) n
(ade) g(routines) g(rou) n(ghly) g(match) f(the) i(old) e(setup) h
(progr) n(am') -5 b(s) 21 b(upg) n(rade) f(functio) n(ns,) h(b) n(ut) f
(the) g(use) g(of) g(objects) 396 1481 y(and) g(the) g(method) n(s) h
(ha) n(v) o(e) f(chang) n(ed) g(dramatically) -7 b(.) 20
b(The) g(simplest) h(v) o(ersio) n(n) g(upg) n(rade) f(rou) n(tine) h
(w) o(ould) e(look) h(lik) o(e:) p Fc 396 1662 a($test[]) 44
b(=) h("0.9.3p) n(re10";) 396 1759 y(function) f(addressb) n
(ook_upgrade0) n(_9_3pre10\(\)) 396 1856 y({) 576 1953
y(global) f($setup_info;) 576 2050 y($setup_) n(info['addres) n
(sbook']['cur) n(rentver']) h(=) g('0.9.3';) 576 2147
y(return) f($setup_info[) n('addressbook) n(']['currentv) n(er'];) 396
2244 y(}) p Fg 396 2532 a(This) 21 b(upg) n(rade) f(fun) n(ction) g
(merely) g(upd) n(ates) h(the) f(curren) n(t) h(v) o(ersion) e(numb) n
(er) -5 b(.) 21 b(Note) f(that) g(there) g(is) h(not) f(only) f(an) h
(upgr) n(ade) 396 2640 y(functio) n(n,) g(b) n(ut) g(also) g(the) g
(setting) g(of) f(a) i(v) n(alue) e(in) h(the) g($test) g(array) -5
b(.) 18 b(The) i(name) f(') o(test') h(is) g(a) h(hold) n(o) o(v) o(er)
e(from) g(the) g(old) h(setup) 396 2748 y(prog) n(ram,) g(and) g(is) h
(an) f(arbitrar) n(y) h(cho) n(ice.) g(Ho) n(we) n(v) m(er) m(,) f
(this) h(nam) n(e) g(must) f(be) g(used) g(for) g(the) g(upgr) n(ade) g
(process) g(to) g(w) o(ork.) 396 2856 y(Prior) g(to) g(each) g(of) g
(your) f(upgr) n(ade) h(functio) n(ns,) h(add) e(the) i(v) n(alue) e
(of) h(the) g(pre) n(vio) n(us) h(v) o(ersion) e(to) h($test.) 396
3006 y(No) n(w) g(look) g(at) g(the) h(fun) n(ction) f(name.) f(The) h
(name) g(is) h(impor) n(tant) g(and) e(should) g(be) i(structur) n(ed) f
(as) h(the) f(application) f(name) 396 3114 y(and) h(the) g(v) o
(ersion) f(from) g(which) h(you) f(are) h(intendin) n(g) h(to) f(upgr) n
(ade.) g(The) g('.) -6 b(') h(s) 21 b(in) f(the) g(v) o(ersion) f
(string) h(are) g(replaced) f(with) 396 3222 y('_'.) 396
3371 y(Inside) h(the) g(functio) n(n,) g(we) h(globa) n(l) g(the) f
($setup_in) n(fo) g(array) -5 b(.) 19 b(Ne) o(xt,) h(we) g(alter) g
(the) h(v) o(er) n(sion) f(numbe) n(r) h(in) f(that) g(array) -5
b(,) 19 b(for) 396 3479 y(our) h(applica) n(tion.) g(Please) h(be) f
(careful) f(to) i(specify) e(Y) n(OUR) i(applica) n(tion) f(name) g
(here.) f(The) h(v) o(ery) f(last) i(thing) f(we) g(do) g(is) 396
3587 y(to) h(retur) n(n) g(this) f(ne) n(w) g(v) o(ersion) f(to) i(the)
f(calling) g(fun) n(ction.) g(The) g(upg) n(rade) g(pro) n(cess) i
(relies) e(on) g(the) g(v) n(alue) g(retur) n(ned,) g(since) 396
3695 y(it) h(uses) g(this) g(directly) e(to) h(determin) n(e) h(the) f
(ne) n(w) g(v) o(ersion) n(.) h(This) f(may) g(appear) f(illogical) h
(on) g(some) g(le) n(v) o(el,) f(b) n(ut) i(it) f(does) 396
3803 y(w) o(ork.) g(The) f(reason) h(for) f(returnin) n(g) i(this) f(v)
n(alue) g(instead) g(of) g(a) g(T) m(rue) g(or) g(1,) g(etc.) g(has) g
(to) h(do) f(with) g(v) n(ariab) n(le) h(scope) f(and) 396
3911 y(lifetime.) g(In) g(this) h(w) o(ay) -5 b(,) 19
b(e) n(v) o(en) g(the) i(glob) n(aling) f(of) g($setup_) n(info) g
(inside) g(the) g(functio) n(n) h(may) e(ha) n(v) o(e) h(little) h(ef) n
(fect) e(on) h(the) 396 4019 y(upgr) n(ade) g(process.) g(But,) g
(there) g(may) g(be) g(v) n(alues) g(in) g(this) h(array) e(you) g(w) o
(ould) h(w) o(ant) g(to) h(use) f(within) g(the) g(functio) n(n.) g
(More) 396 4126 y(on) g(that) g(later) -5 b(.) 396 4276
y(There) 20 b(is) h(one) e(other) h(v) n(ariab) n(le) h(you) e(w) o
(ould) h(need) f(if) i(doin) n(g) f(an) o(y) g(database) f(operation) n
(s) i(here.) e(If) i(you) e(glob) n(al) 396 4384 y($php) n(gw_setup,) g
(you) g(will) i(then) f(ha) n(v) o(e) g(access) g(to) h(db) e(and) h
(schema_p) n(roc) g(objects) g(and) f(function) n(s.) i(The) f(objects)
g(of) 396 4492 y(interest) g(here) g(are:) p Black Fa
396 4724 a(\225) p Black Fg 81 w($php) n(gw_setup) n(->oProc) p
Black Fa 396 4874 a(\225) p Black Fg 81 w($php) n(gw_setup) n(->db) m
(.) p Black Fe 3840 5278 a(6) p Black 90 rotate dyy eop
%%Page: 7 7
7 6 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fg 396 579 a(F) o(or) h(most) g
(database) g(w) o(ork) f(you) h(should) f(use) h(the) h(oPro) n(c) g
(object.) e(This) i(also) f(has) h(a) f(db) g(object) g(that) g(should)
f(be) h(used) 396 687 y(for) g(most) g(standard) f(phpg) n(w) i(API) f
(db) g(class) h(functio) n(ns,) g(includ) n(ing) f($db-) n(>query) -7
b(,) 20 b(ne) o(xt_r) n(ecord,) f(num_) n(ro) n(ws,) h(and) g(f.) 396
795 y(The) g(use) f(of) h(these) f(for) g(standard) g(db) g(opera) n
(tions) h(is) h(critical) e(to) h(the) g(upg) n(rade) f(process.) g
(Schema_) n(proc) g(has) h(a) g(\003ag) g(that) 396 903
y(can) g(be) g(set) h(to) g(determ) n(ine) f(what) h(mod) n(e) g(of) f
(upg) n(rade) g(we) g(are) h(in.) f(This) g(\003ag) g(is) h(set) g(in) g
(the) f(setup) g(class) h(durin) n(g) g(the) 396 1011
y(upgr) n(ade) f(process,) g(and) g(shou) n(ld) h(not) f(be) g(altered)
f(locally) -5 b(.) 396 1160 y(This) 21 b(\003ag) f(is) h(a) g(decision)
e(on) h(whether) f(to) h(alter) h(the) f(database) g(or) f(the) i
(schema_) n(proc) e(array) -5 b(.) 19 b(The) h(tables_ba) n(seline) h
(\002le) 396 1268 y(abo) o(v) m(e) g(is) g(loaded) e(by) h(setup) g
(prior) f(to) h(runn) n(ing) g(your) f(upgr) n(ade) h(routines.) f(If) h
(the) h(curr) n(ent) g(installed) f(v) o(er) n(sion) h(is) g(greater)
396 1376 y(than) f(the) g(curren) n(t) h(upgr) n(ade) f(routine) n(,) h
(we) f(don') o(t) f(need) h(to) g(alter) g(the) g(database) g(yet.) g
(But) h(schema_) n(proc) e(instead) h(alters) 396 1484
y(the) g($phpg) n(w_baseline) f(array) h(in) g(memo) n(ry) -5
b(.) 20 b(The) g(mainten) n(ance) g(of) g(this) h(array) e(is) i(done) e
(e) n(v) o(en) g(when) h(we) g(do) g(alter) h(the) 396
1592 y(database.) f(Once) g(our) f(v) o(ersion) g(numb) n(er) h(in) h
(the) f(test) h(array) e(matches) h(the) g(curren) n(tly) h(installed) f
(v) o(ersio) n(n) h(of) f(an) 396 1700 y(application) n(,) h(real) f(w)
o(ork) f(on) h(the) g(tables) h(be) o(gin) n(s.) 396
1849 y('Why) f(both) n(er) h(mod) n(ifying) e(this) i(array) e(at) i
(all',) f(you) f(may) h(ask.) g(The) g(array) f(must) i(be) f(maintain)
n(ed) g(in) h(ord) n(er) g(to) f(k) o(eep) 396 1957 y(curren) n(t) h
(table) f(de\002nition) f(status.) i(This) f(is) h(used) f(in) h(some) f
(schema_) n(proc) g(fun) n(ctions) g(when) g(altering) f(column) n(s) i
(and) 396 2065 y(tables.) f(This) h(is) g(especially) f(critical) g
(for) g(pgsq) n(l) h(schema_p) n(roc) f(functio) n(ns.) 396
2214 y(By) h(using) f(the) g($ph) n(pgw_setup) n(->oPro) n(c) h(object)
f(for) f(basic) i(inserts) f(and) g(quer) n(ies,) h(we) g(achei) n(v) m
(e) g(the) f(ability) g(to) g(run) f(all) 396 2322 y(upgr) n(ade) h
(fun) n(ctions) g(in) f(e) n(v) o(ery) g(upg) n(rade) g(c) o(ycle) g
(without) g(actually) g(altering) f(the) i(databa) n(se) h(until) e(we)
h(reach) f(the) g(curren) n(t) 396 2430 y(v) o(ersion) g(we) i
(actually) e(w) o(ant) i(to) f(upgr) n(ade.) g(F) o(or) g(e) o(xam) n
(ple:) p Fc 396 2610 a($sql) 44 b(=) h("SELECT) f(*) g(FROM) h(phpgw_a)
n(ddressbook_e) n(xtra) g(WHERE) f(contact) n(_name='note) n(s'";) 396
2708 y($phpgw_setu) n(p->oProc->qu) n(ery\($sql,__L) n(INE__,__FILE) n
(__\);) 396 2805 y(while\($phpg) n(w_setup->oPr) n(oc->next_rec) n
(ord\(\)\)) g({) p Fg 396 3093 a(W) -7 b(e) 22 b(cou) n(ld) f(ha) n(v) o
(e) e(used) h($php) n(gw_setup-) n(>db) g(or) g(e) n(v) o(en) f(a) i
(cop) m(y) g(for) e(the) i(abo) o(v) m(e) f(acti) n(vity) -5
b(.) 19 b(Ho) n(we) n(v) o(er) -5 b(,) 20 b(using) g(the) g(abo) o(v) m
(e) 396 3201 y(method) f(ensures) h(that) g(an) g(array) g(only) f(upg)
n(rade) h(does) g(just) h(that.) f(If) g(the) g(\003ag) g(w) o(as) h
(set) g(in) g(setup) f(telling) g(schema_) n(proc) 396
3309 y(to) h(alter) f(the) g(array) f(only) -5 b(,) 19
b(we) i(do) e(not) h(w) o(ant) h(to) f(touch) f(the) h(tables) h(for) e
(inserts) i(or) f(selects) h(yet.) f(In) g(this) h(case,) 396
3417 y($php) n(gw_setup-) n(>oProc-) n(>ne) o(xt_) n(record) n(\(\)) f
(retur) n(ns) g(F) o(alse,) g(and) f(the) g(loop) g(is) h(skipped.) e
(The) i($ph) n(pgw_b) n(aseline) g(array) 396 3525 y(does) g(not) g
(kno) n(w) f(about) g(table) i(con) n(tent,) g(only) e(table) h(and) g
(\002eld) g(de\002nition) n(s.) 396 3674 y(If) g(the) h(upg) n(rade) f
(fun) n(ction) g(containin) n(g) g(this) h(method) e(is) i(actually) f
(w) o(ork) n(ing) g(on) g(the) g(tables) h(\(cur) n(rentv) o(er) e(<=) h
(the) 396 3782 y(upgr) n(ade) g(function) n(\),) g(then) g(ne) o(xt_) n
(record) n(\(\)) g(is) h(returned) e(as) i(the) f(e) o(xpe) n(cted) h
(action) e(of) h(pulling) f(the) h(ne) o(xt) g(ro) n(w) g(of) g(data.)
396 3890 y(Inside) g(of) g(this) h(while) f(loop) n(,) h(you) e(can) h
(safely) g(use) h($ph) n(pgw_setu) n(p->db) n(,) g(or) f(pref) n
(erably) g(a) g(cop) o(y) -5 b(,) 19 b(to) h(do) g(the) 396
3998 y(insert/delete,) g(etc) g(you) f(w) o(ant) i(to) f(ha) n(v) o(e) g
(happ) n(en) g(here.) p Fc 576 4178 a($cid) 44 b(=) g($phpgw_setup) n
(->oProc->f\(') n(contact_id'\)) n(;) 576 4275 y($cvalu) f(=) i
($phpgw_set) n(up->oProc->f) n(\('contact_va) n(lue'\);) 576
4372 y($update) e(=) i("UPDATE) f(phpgw_a) n(ddressbook) g(set) g
(note='") g(.) g($cvalu) g(.) h("') f(WHERE) g(id=") g(.) h($cid;) 576
4469 y($db1->q) n(uery\($update) n(\);) 576 4566 y($delete) e(=) i
("DELETE) f(FROM) g(phpgw_ad) n(dressbook_ex) n(tra) h(WHERE) f
(contact_) n(id=") g(.) h($cid) f(.) h(") g(AND) f(contact_n) n
(ame='notes'") n(;) 576 4664 y($db1->q) n(uery\($delete) n(\);) 396
4761 y(}) p Black Fe 3839 5278 a(7) p Black 90 rotate
dyy eop
%%Page: 8 8
8 7 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fg 396 579 a($db1) g(is) i(a) g
(cop) o(y) e(of) h($php) n(gw_setup) n(->db,) f(to) i(a) n(v) n(oid) f
(poten) n(tial) h(con\003icts) f(with) g(the) h(rest) f(of) g(setup') -5
b(s) 21 b(db) e(acti) n(vities.) 396 728 y(In) h(addition) f(to) h(the)
h(basic) f(API) g(db) g(class) h(function) n(s,) g(schema_) n(proc) f
(introd) n(uces) g(the) h(follo) l(wing) f(special) g(function) n(s:) p
Fc 396 909 a(function) 44 b(DropTabl) n(e\($sTableNam) n(e\)) 396
1006 y(function) g(DropColu) n(mn\($sTableNa) n(me,) h($aTableD) n(ef,)
g($sColumn) n(Name\)) 396 1103 y(function) f(RenameTa) n(ble\($sOldTab)
n(leName,) g($sNewTable) n(Name\)) 396 1200 y(function) g(RenameCo) n
(lumn\($sTable) n(Name,) g($sOldColumnN) n(ame,) h($sNewCo) n
(lumnName\)) 396 1297 y(function) f(AlterCol) n(umn\($sTableN) n(ame,) h
($sColum) n(nName,) f($aColumnDef) n(\)) 396 1394 y(function) g
(AddColum) n(n\($sTableNam) n(e,) h($sColumnN) n(ame,) g($aColum) n
(nDef\)) 396 1491 y(function) f(CreateTa) n(ble\($sTableN) n(ame,) h
($aTable) n(Def\)) p Fg 396 1779 a(Please) 21 b(use) g(these) f(func) n
(tions) h(where) e(appro) n(priate) h(in) g(place) g(of) g(standard) f
(SQL) i(CREA) -9 b(TE,) 20 b(DR) m(OP) -9 b(,) 20 b(and) g(AL) -8
b(TER) 396 1887 y(T) g(ABLE) 21 b(comm) n(ands.) f(This) g(will) h
(ensure) f(that) g(your) f(upgr) n(ade) h(script) g(w) o(orks) g(for) g
(all) h(supp) n(orted) f(databa) n(ses.) 396 2037 y(Of) h(these) f
(func) n(tions,) g(DropT) -7 b(able) n(,) 21 b(RenameT) -7
b(able) n(,) 21 b(and) f(RenameColu) n(mn) g(are) g(pretty) g
(straightf) n(orw) o(ard.) f(P) o(ass) i(these) 396 2145
y(the) f(table) h(name) n(s) g(you) f(wish) g(to) h(Drop) n(/Rename,) f
(and) g(schema_) n(proc) f(will) i(handle) e(the) i(rest,) f(includin) n
(g) g(inde) o(x) o(e) n(s) h(and) 396 2253 y(sequences,) e(where) h
(applicab) n(le.) 396 2402 y(The) g(remainin) n(g) h(fun) n(ctions) f
(require) f(some) h(e) o(xplan) n(ation:) p Black Fa
396 2635 a(\225) p Black Fg 81 w(CreateT) -7 b(able:) p
Fc 396 2815 a($phpgw_setu) n(p->oProc->Cr) n(eateTable\() 576
2912 y('catego) n(ries',) 44 b(array\() 755 3009 y('fd') g(=>) h
(array\() 934 3106 y('cat_id') f(=>) g(array\('type) n(') h(=>) g
('auto',) n('nullable') f(=>) g(false\),) 934 3203 y('account_id) n(') h
(=>) g(array\(') n(type') f(=>) h('int','pr) n(ecision') f(=>) g
(4,'nullable) n(') h(=>) g(false,) e('de-) 396 3300 y(fault') h(=>) h
(0\),) 934 3398 y('app_name') e(=>) i(array\('ty) n(pe') g(=>) f
('varchar',') n(precision') g(=>) g(25,'nulla) n(ble') h(=>) f
(false\),) 934 3495 y('cat_name') f(=>) i(array\('ty) n(pe') g(=>) f
('varchar',) f('precision') g(=>) i(150,) f('nul-) 396
3592 y(lable') g(=>) h(false\),) 934 3689 y('cat_descri) n(ption') f
(=>) h(array\('t) n(ype') g(=>) f('text',) g('nullabl) n(e') h(=>) f
(false\)) 755 3786 y(\),) 755 3883 y('pk') g(=>) h(array\(') n
(cat_id'\),) 755 3980 y('ix') f(=>) h(array\(\)) n(,) 755
4077 y('fk') f(=>) h(array\(\)) n(,) 755 4175 y('uc') f(=>) h
(array\(\)) 576 4272 y(\)) 396 4369 y(\);) p Fg 396 4657
a(Does) 20 b(this) g(look) f(f) o(amiliar?) g(The) h(array) f(passed) g
(to) h(CreateT) -7 b(able) 20 b(is) g(in) g(the) g(form) n(at) g(used) g
(also) g(in) g(tables_b) n(aseline) g(and) 396 4765 y(tables_cur) n
(rent.) g(Note) g(a) h(slight) f(dif) n(fer) n(ence) g(where) g(the) g
(table) g(name) g(is) h(being) e(passed) h(as) h(a) g(seperate) f(ar) o
(g) n(ument.) f(The) 396 4873 y(second) h(ar) o(g) n(ument) f(to) i
(the) f(func) n(tion) g(is) i(the) e(table) g(de\002nition) f(array) -7
b(,) 21 b(starting) e(with) i('fd') n(.) p Black Fe 3842
5278 a(8) p Black 90 rotate dyy eop
%%Page: 9 9
9 8 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Black Fa 396 579
a(\225) p Black Fg 81 w(AddColu) n(mn:) p Fc 396 759
a($phpgw_setu) n(p->oProc->Ad) n(dColumn\('php) n(gw_categorie) n
(s','cat_acce) n(ss',array\(') n(type') 44 b(=>) h('var-) 396
856 y(char',) f('precision) n(') h(=>) g(25\)\);) p Fg
396 1144 a(Here) 20 b(we) h(pass) g(the) f(table) g(name) g(of) f(an) i
(e) o(xisting) e(table,) h(the) g(ne) n(w) g(column) f(name,) g(and) h
(a) h(\002eld) f(de\002nition) n(.) h(This) 396 1252
y(de\002nition) e(is) i(merely) f(a) g(slice) h(of) f(the) g(table) h
(array) n(s) g(foun) n(d) g(earlier) e(in) i(this) f(docum) n(ent.) p
Black Fa 396 1485 a(\225) p Black Fg 81 w(AlterColumn) n(:) p
Fc 396 1665 a($phpgw_setu) n(p->oProc->Al) n(terColumn\('p) n
(hpgw_session) n(s','session_) n(action',arr) n(ay\('type') 44
b(=>) g('var-) 396 1762 y(char',) g('precision) n(') h(=>) g('255'\)\))
n(;) p Fg 396 2050 a(The) 20 b(forma) n(t) h(of) f(this) h(func) n
(tion) f(matches) g(AddColum) n(n.) g(It) h(is) g(also) f(a) h(simple) f
(case) h(of) f(passing) f(the) i(table) f(name,) f(\002eld) 396
2158 y(name,) h(and) f(\002eld) i(de\002nitio) n(n.) p
Black Fa 396 2390 a(\225) p Black Fg 81 w(DropColu) n(mn:) p
Fc 396 2571 a($newtbldef) 43 b(=) i(array\() 576 2668
y("fd") f(=>) g(array\() 755 2765 y('acl_appn) n(ame') h(=>) f
(array\('typ) n(e') h(=>) f('varchar',) g('precis) n(ion') h(=>) f
(50\),) 755 2862 y('acl_loca) n(tion') g(=>) h(array\('ty) n(pe') g(=>)
f('varchar',) f('precision') g(=>) i(255\),) 755 2959
y('acl_acco) n(unt') g(=>) f(array\('typ) n(e') h(=>) f('int',) g
('precision') f(=>) i(4\),) 755 3056 y('acl_righ) n(ts') g(=>) f
(array\('type) n(') h(=>) g('int',) e('precision') g(=>) i(4\)) 576
3153 y(\),) 576 3251 y('pk') f(=>) g(array\(\),) 576
3348 y('ix') g(=>) g(array\(\),) 576 3445 y('fk') g(=>) g(array\(\),)
576 3542 y('uc') g(=>) g(array\(\)) 396 3639 y(\);) 396
3736 y($phpgw_setu) n(p->oProc->Dr) n(opColumn\('ph) n(pgw_acl',$ne) n
(wtbldef,'acl) n(_account_ty) n(pe'\);) p Fg 396 4024
a(This) 21 b(is) g(the) f(most) g(complicate) n(d) h(fun) n(ction) f
(in) h(schema_) n(proc,) e(from) g(the) h(user') -5 b(s) 21
b(perspec) n(ti) n(v) o(e.) f(Its) h(comp) n(le) o(xity) f(is) 396
4132 y(necessitated) g(by) g(the) g(requir) n(ement) g(of) g(some) g
(databases) g(to) g(recreate) g(a) g(table) g(in) h(the) f(case) h(of) f
(dro) n(pping) f(a) i(colum) n(n.) 396 4240 y(Note) f(that) h(the) f
(table) g(de\002nition) f(array) g(is) j(bein) n(g) f(used) f(yet) g
(again) n(.) h(The) f(array) f(de\002ned) g(here) h(should) f(match) h
(the) g(table) 396 4348 y(de\002nition) f(you) h(w) o(ant) g(after) g
(this) g(function) f(has) h(completed) n(.) h(Here,) f(we) g(are) g
(drop) n(ping) g(the) g(column) 396 4456 y('acl_acco) n(unt_typ) n(e') g
(from) f(the) i(table) f('ph) n(pgw_acl') n(,) h(and) f(the) g(table) g
(de\002nition) f(does) h(not) g(ha) n(v) o(e) f(this) i(column) 396
4564 y(de\002ned.) e(Y) -9 b(ou) 20 b(could) f(cop) o(y) g(inform) n
(ation) h(from) f(your) g(tables_cur) n(rent) h(\002le) h(here) f(and) f
(edit) i(it) g(to) f(match) g(the) g(desired) 396 4672
y(ne) n(w) g(table) g(spec,) g(less) i(the) e(colum) n(n) h(you) e
(wish) i(to) f(drop) n(.) p Black Fe 3842 5278 a(9) p
Black 90 rotate dyy eop
%%Page: 10 10
10 9 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fg 396 579 a(There) h(are) g
(additio) n(nal) h(fun) n(ctions) f(within) g(schema_p) n(roc,) g(the) g
(majority) f(of) h(which) g(are) g(not) g(to) g(be) g(called) g
(directly) -5 b(.) 396 687 y(The) o(y) 19 b(are) i(used) e(internally)
-5 b(.) 19 b(If) h(you) f(do) h(wish) g(to) h(in) m(v) o(e) n(stigate) f
(further) -5 b(,) 20 b(use) h(class.schema_) n(proc.in) n(c.php) e(as) i
(your) 396 795 y(guide.) e(This) i(master) f(\002le) h(includ) n(es) g
(the) f(class.schema_p) n(roc_DBMS.inc) n(.php) f(and) 396
903 y(class.schema_p) n(roc_ar) n(ray) -5 b(.in) n(c.php) 19
b(\002les.) i(The) f(DBMS) h(\002les) g(should) e(not) h(be) g(used) g
(as) h(a) g(guide) n(,) g(since) f(their) 396 1011 y(functio) n(ns) h
(are) f(called) g(from) f(the) i(master) f(class,) h(and) e(the) h
(parameter) n(s) h(are) f(dif) n(feren) n(t) h(from) e(what) h(you) g
(migh) n(t) h(e) o(xpec) n(t) 396 1119 y(relati) n(v) o(e) f(to) g(the)
g(master) -5 b(.) 396 1268 y(PLEASE,) 20 b(DO) h(NO) m(T) f(WRITE) h(T)
o(O) e(OR) j(AL) -8 b(TER) 20 b(ANO) m(THER) g(APPLICA) -9
b(TION'S) 20 b(T) -8 b(ABLES) 20 b(OR) h(THE) g(API) 396
1376 y(T) -8 b(ABLES) 21 b(IN) f(Y) n(OUR) h(APPLICA) -9
b(TION) 20 b(UPGRADE) g(FUNCTIONS!) p Ff -2 1829 a(2.5.) 34
b(default_) r(recor) n(ds.inc.php) g(\(Optional\)) p
Fd 396 2116 a(2.5.1.) 27 b(An) n(y) h(application) e(with) h(tab) o
(les) h(that) f(wants) g(to) g(load) g(some) g(default) h(data) g(wil) n
(l) 396 2245 y(need) g(this) g(\002le) r(.) p Fg 396
2403 a(The) 20 b(def) o(ault_) n(record) n(s) h(\002le) g(consists) g
(of) f(a) h(list) g(of) f(SQL) g(INSER) -5 b(Ts) 21 b(using) f(the) g
($oPro) n(c) h(object) e(directly:) p Fc 396 2583 a($oProc->que) n
(ry\("INSERT) 44 b(INTO) g(phpgw_in) n(v_statuslist) f(\(status_nam) n
(e\)) i(VALUES) f(\('avail) n(able'\)"\);) 396 2680 y($oProc->que) n
(ry\("INSERT) g(INTO) g(phpgw_in) n(v_statuslist) f(\(status_nam) n
(e\)) i(VALUES) f(\('no) g(longer) g(availab) n(le'\)"\);) 396
2778 y($oProc->que) n(ry\("INSERT) g(INTO) g(phpgw_in) n(v_statuslist) f
(\(status_nam) n(e\)) i(VALUES) f(\('back) f(order'\)"\);) p
Fg 396 3066 a(In) 20 b(this) h(case,) f(the) g(de) n(v) o(elop) n(er) g
(w) o(anted) g(to) g(insert) h(some) f(status) g(inform) n(ation,) g
(which) g(w) o(as) h(then) e(used) h(in) h(a) f(select) h(box) 396
3174 y(on) f(an) g(html) g(form.) f(Using) h(the) g(def) o(ault_r) n
(ecords) g(\002le,) g(e) n(v) o(ery) f(ne) n(w) h(install) h(will) g
(ha) n(v) o(e) e(this) i(data) f(included) n(.) h(This) f(\002le) 396
3281 y(should) f(consist) i(of) f(quer) n(ies) h(applicable) e(to) i
(the) f(tables) g(de\002ned) f(in) i(setup.in) n(c.php) e(and) h
(tables_cu) n(rrent.inc) n(.php.) p Ff -2 3734 a(2.6.) 34
b(test_da) r(ta.inc.ph) r(p) f(\(Optional\)) p Fd 396
4021 a(2.6.1.) 28 b(An) n(y) g(de) o(veloper) g(wanting) f(to) h(test) h
(the) f(full) f(list) h(of) f(upgrade) h(r) n(outines) g(can) 396
4151 y(use) h(this) e(\002le) r(.) p Fg 396 4309 a(test_data.inc.) n
(php) 20 b(is) h(similar) f(to) h(def) o(au) n(lt_recor) n(ds) g(abo) o
(v) m(e.) f(It) h(is) g(called) f(only) f(by) h(schemato) m(y) -5
b(.php) 19 b(and) g(is) j(ne) n(v) m(er) 396 4417 y(installed) e(with) h
(a) f(ne) n(w) g(install) h(or) f(upgr) n(ade.) g(This) g(is) h(a) g
(de) n(v) o(e) n(loper) n(-on) n(ly) f(\002le.) h(The) f(INSER) -5
b(Ts) 21 b(here) e(should) g(be) 396 4524 y(applicable) g(to) i(the) f
(tables_b) n(aseline) h(table) f(de\002nition) n(s.) p
Black Fe 3800 5278 a(10) p Black 90 rotate dyy eop
%%Page: 11 11
11 10 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Ff -2 583 a(2.7.) 34
b(langua) q(g) q(e) f(\002les) i(\(Required\)) p Fd 396
870 a(2.7.1.) 28 b(All) f(applications) h(should) g(ha) o(ve) g(at) g
(least) h(a) f(\002le) g(of) f(English) h(translations,) 396
1000 y(used) g(f) n(or) g(their) g(application) f(lang\(\)) h(calls.) p
Black Fa 396 1257 a(\225) p Black Fg 81 w(F) o(ormat) 19
b(of) h(a) h(lang) f(\002le:) p Fc 396 1437 a({phrase}{TA) n
(B}{appname}{) n(TAB}{LANG_CO) n(DE}{TAB}{tra) n(nslation}) 576
1535 y(e.g:) 396 1632 y(first) 44 b(name) 179 b(common) f(en) h(First)
44 b(Name) 396 1729 y(first) g(name) 179 b(common) f(de) h(Vorname) p
Black Fa 396 2183 a(\225) p Black Fg 81 w(Filenames:) p
Fc 396 2363 a(phpgw_{LANG) n(_CODE}.lang) 486 2460 y(e.g.) 396
2557 y(English:) 44 b(phpgw_en) n(.lang) 396 2655 y(German:) g
(phpgw_de.) n(lang) p Fg 396 2943 a(Please) 21 b(see) g(the) f(conten) n
(ts) i(of) d(the) i(API) f(') o(langu) n(ages') g(table) h(for) e(the) h
(correct) g(setting) g(of) g(the) g(LANG_CODE.) p Fh
-2 3527 a(3.) 39 b(De) n(velop) n(er) h(T) -11 b(o) n(ols) p
Ff -2 3855 a(3.1.) 34 b(sqltoarra) n(y) -10 b(.) r(php) p
Fd 396 4143 a(3.1.1.) 28 b(Displa) n(ys) h(the) f(current) g(sc) o
(hema_pr) n(oc) h(arra) n(y) f(de\002ning) f(an) h(application') -6
b(s) 396 4272 y(tab) o(les.) p Fg 396 4430 a(This) 21
b(web) f(applica) n(tion) g(reads) g(the) h(curr) n(ent) f(table) h
(status) f(li) n(v) o(e) g(from) g(the) g(databa) n(se.) h(It) g(then) e
(parses) i(this) f(inform) n(ation) 396 4538 y(into) g(a) h(hop) n
(efully) f(corr) n(ect) h(table) f(de\002nition) f(array) h(for) f
(schema_p) n(roc.) h(Upon) f(visiting) h(this) g(app,) g(you) f(are) h
(sho) n(wn) g(a) 396 4646 y(list) i(of) d(currently) g(installed) h
(applicatio) n(ns) h(with) f(de\002ned) g(tables.) g(Y) -9
b(ou) 19 b(may) h(then) g(select) h(one) e(app) h(or) g(all) h(app) n
(s,) g(and) 396 4754 y(then) f(submit) g(the) g(form) n(.) h(From) f
(this) g(form) f(you) h(may) f(then) h(do) n(wnlo) n(ad) g(a) h
(tables_cu) n(rrent) f(\002le,) h(suitable) f(for) 396
4862 y(commission) f(to) i(cvs.) f(Please) h(do) f(check) f(the) h
(form) n(at) h(to) g(mak) m(e) g(sure) f(the) h(de\002nitio) n(ns) g
(are) f(correc) n(t.) p Black Fe 3800 5278 a(11) p Black
90 rotate dyy eop
%%Page: 12 12
12 11 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Ff -2 581 a(3.2.) 34
b(sc) o(he) r(mato) n(y) -10 b(.php) p Fd 396 868 a(3.2.1.) 28
b(Runs) g(the) g(full) f(c) o(yc) n(le) i(of) f(upgrades,) g(inc) n
(luding) e(optional) h(test) r(_data.) p Fg 396 1026
a(This) 21 b(app) e(is) i(not) f(beautifu) n(l,) h(may) f(bom) n(b) h
(on) e(you,) g(and) h(will) h(de\002nitely) e(drop) g(your) g
(application) n(') -5 b(s) 21 b(tables.) f(The) 396 1133
y(display) g(is) h(similar) f(to) h(the) f(user/adm) n(in) h(tool,) e
(application) n(s.php.) g(Y) -9 b(ou) 20 b(are) g(sho) n(wn) g(a) g
(list) h(of) f(apps) g(with) h(tables.) 396 1241 y(Select) g(one) f
(app) n(,) h(and) f(enter) f(a) i(tar) o(ge) n(t) g(v) o(ersion) n(.) g
(Upon) e(submission) h(of) f(the) i(for) n(m:) p Black
Fa 396 1474 a(\225) p Black Fg 81 w(All) g(applicatio) n(n) g(tables) f
(are) g(drop) n(ped.) p Black Fa 396 1623 a(\225) p Black
Fg 81 w(tables_baselin) n(e.inc.ph) n(p) h(is) g(loaded) n(.) p
Black Fa 396 1773 a(\225) p Black Fg 81 w(test_data.inc) n(.php) e(is) j
(loade) n(d) p Black Fa 396 1922 a(\225) p Black Fg 81
w(tables_up) n(date.inc.p) n(hp) e(is) h(loaded) n(.) p
Black Fa 396 2072 a(\225) p Black Fg 81 w(a) g(full) f(applica) n(tion)
g(upgra) n(de) h(test) g(be) o(g) n(ins.) 396 2221 y(This) g(will) g
(gi) n(v) o(e) e(a) i(LO) m(T) e(of) h(deb) n(ugg) n(ing) g(outpu) n
(t.) h(Depen) n(ding) f(on) f(your) g(database,) h(the) g(proce) n(ss) i
(may) d(tak) o(e) i(quite) 396 2329 y(a) o(while.) f(This) g(tool) g
(should) f(be) h(considered) f(as) i(a) f(destructi) n(v) o(e) f(test) i
(of) f(the) g(full) g(upgra) n(de) h(c) o(ycle) n(.) g(If) f(the) g
(upgr) n(ade) 396 2437 y(process) g(is) h(successful,) f(you) f(can) h
(then) g(check) f(the) h(loaded) g(test_data) f(to) i(see) g(that) f
(it) h(is) g(still) g(in) g(place) e(as) i(e) o(xpected) 396
2545 y(after) f(all) h(the) f(table) g(modi\002catio) n(ns,) h(etc.) f
(If) g(not,) g(it) h(should) e(be) h(clear) g(where) g(the) g(error) f
(has) h(occurr) n(ed.) g(Look) f(for) h(the) 396 2653
y(usual) g(INV) -11 b(ALID) 20 b(SQL) g(w) o(arning) n(s,) h(among) e
(others.) p Ff -2 3105 a(3.3.) 34 b(tools) g(subdirec) r(tor) q(y) p
Fd 396 3393 a(3.3.1.) 28 b(some) g(utilities) g(f) n(or) f(sql) h
(\002le) f(con) l(ver) o(sion,) h(etc.) p Fg 396 3550
a(In) 20 b(the) g(tools) h(directo) n(ry) f(unde) n(r) h(setup3,) e
(there) h(should) f(be) h(at) h(least) g(a) f(couple) g(of) f(hopef) n
(ully) h(handy) f(perl) h(or) g(shell) 396 3658 y(scripts.) h(These) f
(are) g(for) f(runn) n(ing) h(on) g(the) g(comman) n(dline) g(only) -5
b(,) 19 b(and) g(might) h(apply) f(to) h(con) m(v) o(e) n(rting) g(SQL)
g(\002les) h(into) 396 3766 y(lang) f(\002les,) g(etc.) g(The) o(y) f
(are) h(not) g(e) o(xp) n(ected) g(to) g(be) g(perfec) n(t,) h(b) n(ut)
f(migh) n(t) h(of) n(fer) e(some) h(assistance) g(or) g(ideas) g(for) f
(addition) n(al) 396 3874 y(utilities.) i(Use) g(these) f(at) h(you) n
(r) g(o) n(wn) e(risk) i(or) f(ben) n(e\002t.) p Black
Fe 3800 5278 a(12) p Black 90 rotate dyy eop
%%Page: 13 13
13 12 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fh -2 601 a(4.) 39
b(The) g(install/u) n(pgrade) g(pr) m(oce) n(ss) p Ff
-2 929 a(4.1.) 34 b(Over) q(v) r(ie) n(w) p Fd 396 1216
a(4.1.1.) 28 b(Setup) h(internal) e(upgrade) h(functions) p
Fg 396 1374 a(Setup) 20 b(uses) h(a) f(common) f(set) i(of) f(fun) n
(ctions) g(for) g(ne) n(w) g(installs) h(and) f(upg) n(rades.) g(These)
g(are) g(implemen) n(ted) g(as) 396 1482 y(multi-pass) g(loops.) f(F) o
(or) h(a) h(single) f(applicatio) n(n) h(install) f(or) g(upgr) n(ade,)
g(a) h(single) f(pass) h(is) g(don) n(e.) g(F) o(or) e(multiple) 396
1590 y(application) g(installs) i(or) f(upg) n(rades,) g(multiple) g
(passes) h(are) f(don) n(e) h(autom) n(atically) -5 b(.) 20
b(The) g(ord) n(er) h(of) f(install) g(in) h(a) f(mass) 396
1697 y(install) h(or) f(upg) n(rade) f(is) i(determine) n(d) f(by) g
(applicatio) n(n) h(dep) n(endencie) n(s.) g(The) f(other) f(determ) n
(ining) h(f) o(actor) f(is) i(the) f(orde) n(r) h(in) 396
1805 y(which) f(the) g(application) f(directo) n(ries) i(and) f
(setup.in) n(c.php) f(\002les) i(are) f(read) g(from) f(the) h
(\002lesystem.) p Ff -2 2258 a(4.2.) 34 b(Ne) n(w) h(installs) p
Fd 396 2545 a(4.2.1.) 28 b(Detect) r(ion) p Fg 396 2703
a(Each) 20 b(run) f(of) h(inde) o(x.) n(php) g(or) g(app) n
(lications.php) f(in) h(setup3) g(\002rst) h(run) n(s) g(a) g(set) g
(of) f(detection) f(routin) n(es.) i(These) f(read) g(the) 396
2811 y(data) g(from) f(each) h(setup.inc.p) n(hp) g(\002le,) g(and) g
(from) f(the) h('application) n(s') h(or) f('ph) n(pgw_ap) n
(plications') f(table) i(as) 396 2919 y(appro) n(priate,) f(and) f
(only) h(if) g(one) g(of) g(these) g(tables) h(e) o(xists.) f(This) g
(data) h(is) g(parsed) e(into) h(the) g($setup_in) n(fo) g(array) -5
b(.) 19 b(In) h(this) 396 3027 y(case,) h(this) f(array) g(conta) n
(ins) h(inform) n(ation) f(abou) n(t) h(all) g(applicatio) n(ns.) g
(Based) f(on) g(the) g(inform) n(ation) g(gathe) n(red,) g(a) h(status)
396 3135 y(\003ag) g(is) g(set) g(to) f(one) g(of) g(the) g(follo) n(w)
n(ing) g(v) n(alues:) p Black Fa 396 3367 a(\225) p Black
Fg 81 w(U) h(-) f(Upgrad) n(e) h(requ) n(ired/a) n(v) n(ailab) n(le) p
Black Fa 396 3517 a(\225) p Black Fg 81 w(R) g(-) g(upg) n(rade) f(in) g
(pRogress) p Black Fa 396 3666 a(\225) p Black Fg 81
w(C) h(-) g(upg) n(rade) f(Completed) f(successfully) p
Black Fa 396 3815 a(\225) p Black Fg 81 w(D) i(-) f(Depend) n(enc) o(y)
g(f) o(ailure) p Black Fa 396 3965 a(\225) p Black Fg
81 w(F) h(-) f(upgra) n(de) h(F) o(ailed) p Black Fa
396 4114 a(\225) p Black Fg 81 w(V) g(-) f(V) -9 b(ersion) 20
b(mismatch) f(at) i(end) e(of) h(upgra) n(de) p Black
Fa 396 4264 a(\225) p Black Fg 81 w(M) h(-) f(Missing) g(\002les) h(at)
g(start) g(of) f(upg) n(rade) g(\(Not) g(used,) g(pro) n(posed) g(only)
n(\)) 396 4413 y(Using) g(this) h(infor) n(mation,) f(the) g(setup) g
(logic) g(in) g(inde) o(x) n(.php) f(determin) n(es) i(what) f(mode) g
(we) g(are) g(in.) g(inde) o(x.) n(php) g(is) h(not) 396
4521 y(capable) f(of) f(being) h(selecti) n(v) o(e) g(abou) n(t) h
(which) f(app) n(lication) g(it) h(foun) n(d) g(as) f(being) g(out) g
(of) f(sync.) h(It) h(is) g(designe) n(d) g(only) e(for) 396
4629 y('Simple) h(Applicatio) n(n) h(Manag) n(ement',) e(which) h(is) h
(Step) f(1) h(of) f(the) g(setup) g(proc) n(ess.) h(F) o(or) f(more) g
(selecti) n(v) o(e) f(application) 396 4737 y(manipu) n(lation,) h(use)
g(application) n(s.php.) f(inde) o(x.) n(php) h(then) f(tells) j(the) e
(user) g(that) g(1\)) g(their) g(applicatio) n(ns) h(are) f(curren) n
(t) h(2\)) 396 4845 y(some) f(of) g(their) g(application) n(s) h(are) f
(out) g(of) g(sync) g(3\)) g(no) g(db) f(e) o(xists,) i(etc.) f(F) o
(or) g(a) h(ne) n(w) f(install,) g(all) h(applicatio) n(ns) g(will) g
(be) p Black Fe 3800 5278 a(13) p Black 90 rotate dyy
eop
%%Page: 14 14
14 13 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fg 396 579 a(out) h(of) g(sync,) g
(since) g(there) g(is) h(not) f(e) n(v) o(en) f(an) h('php) n(gw_app) n
(lications') g(table) g(in) g(the) h(datab) n(ase) g(to) g(tell) f
(setup) g(what) h(the) 396 687 y(status) g(is) g(for) f(an) o(y) f
(application) n(.) p Fd 396 1024 a(4.2.2.) 28 b(Selec) r(tion) p
Fg 396 1182 a(There) 20 b(is) h(no) f(selection) f(for) h(applicatio) n
(n) h(installs) g(in) f('ne) n(w) g(install') g(mode.) f(All) i(phy) n
(sically) g(presen) n(t) g(application) n(s) 396 1290
y(will) g(be) f(installed,) g(or) g(at) h(least) g(attempted) n(.) p
Fd 396 1627 a(4.2.3.) 28 b(Installation) p Fg 396 1784
a(Once) 20 b(the) g(setup) g(user) g(clicks) h(the) f(magic) g(b) n
(utton) f(to) h(install) h(all) g(applicatio) n(ns,) g(the) f(follo) n
(win) n(g) g(occurs:) p Black Fa 396 2017 a(\225) p Black
Fg 81 w(The) g(setup_in) n(fo) g(array) f(is) j(passed) e(to) g(the) g
(process_p) n(ass\(\)) h(fun) n(ction,) f(using) g(a) g(method) n(='ne)
n(w') p Black Fa 396 2166 a(\225) p Black Fg 81 w(Application) n(s) h
(whose) f(status) h(\003ag='U') e(\(API) h(on) g(\002rst) h(pass\)) f
(are) h(then) e(handed) g(of) n(f) g(to) i(the) f(proc) n(ess_curren) n
(t\(\)) 479 2274 y(functio) n(n.) h(This) f(hand) n(les) h(inclusion) e
(and) h(installation) g(of) g(the) g(applicatio) n(n') -5
b(s) 21 b(tables_cur) n(rent.inc.) n(php) f(\002le.) p
Black Fa 396 2424 a(\225) p Black Fg 81 w(The) g(applicatio) n(n) h(is)
g(re) o(g) n(istered) g(as) f(a) h(ne) n(w) f(application) f(in) h(the)
g('phpg) n(w_app) n(lications') g(table.) g(If) g(for) g(some) 479
2532 y(reason) f(there) h(is) h(old) e(data) h(in) g(this) g(table) g
(for) f(this) i(app) n(lication,) f(it) g(will) h(be) f(upd) n(ated) g
(instead.) f(Its) i(hoo) n(ks,) f(if) g(an) o(y) -5 b(,) 19
b(are) 479 2640 y(re) o(gistered) g(in) h(the) h('ph) n(pgw_h) n(ooks')
f(table.) p Black Fa 396 2789 a(\225) p Black Fg 81 w(Ne) o(xt,) g
(this) g(array) g(is) h(passed) f(to) g(the) g(process_d) n(ef) o
(ault_reco) n(rds\(\)) g(fun) n(ction.) g(If) g(this) h(\002le) f(is) i
(presen) n(t) f(in) f(the) h(curr) n(ent) 479 2897 y(application) n(')
-5 b(s) 21 b(setup) f(directory) -7 b(,) 20 b(the) g(queries) g(here) g
(are) g(run) f(to) h(install) h(the) f(data) g(to) h(the) f(applicatio)
n(n') -5 b(s) 21 b(table\(s\).) p Black Fa 396 3046 a(\225) p
Black Fg 81 w(The) f(abo) o(v) m(e) g(is) i(repe) n(ated) e(until) h
(all) f(application) f(status) i(\003ags) f(equal) g('C'.) g(Ho) n(we) n
(v) o(e) n(r) m(,) g(if) h(an) f(applicatio) n(n) h(install) 479
3154 y(f) o(ailed) e(for) f(some) h(reason) n(,) h(it) f(will) h(then) e
(be) h(skipped) e(on) i(the) g(ne) o(x) n(t) h(pass.) f(This) g(k) o
(eeps) f(the) h(loop) f(from) g(runn) n(ing) h(a) o(w) o(ay) -5
b(.) p Ff -2 3607 a(4.3.) 34 b(Upgrades) p Fd 396 3894
a(4.3.1.) 28 b(Detect) r(ion) p Fg 396 4052 a(Only) 20
b(an) g(API) h(v) o(er) n(sion) g(mismatch) e(will) i(trigger) e(an) h
(automated) f(reque) n(st) j(for) d(the) h(user) g(to) h(upg) n(rade) f
(their) g(install.) 396 4160 y(Once) g(the) g(api) h(is) g(curr) n
(ent,) f(the) o(y) g(can) g(mo) o(v) m(e) h(on) e(to) i(applica) n
(tions.php) e(for) h(mor) n(e) h('Adv) n(a) n(nced) f(Applicatio) n(n)
396 4268 y(Managem) n(ent',) g(which) g(is) h(Step) f(4) g(of) g(the) g
(setup) g(process.) g(Ho) n(we) n(v) o(e) n(r) m(,) g(if) g(the) h(API)
f(is) h(out) f(of) g(sync,) g(clicking) 396 4376 y('Upgra) n(de') g(in)
h(inde) m(x.php) e(will) i(also) f(attempt) g(to) g(upgra) n(de) h
(other) e(applicatio) n(ns) i(which) f(may) f(be) h(out) g(of) g(sync,)
g(as) 396 4484 y(well.) h(As) g(the) f(php) n(gw) o(api) g(continu) n
(es) h(to) g(stabilize,) f(it) h(is) g(felt) f(that) h(this) f(method) f
(of) h(upgr) n(ading) f(will) i(become) e(less) j(and) 396
4592 y(less) g(comm) n(on.) p Black Fe 3800 5278 a(14) p
Black 90 rotate dyy eop
%%Page: 15 15
15 14 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fd 396 579 a(4.3.2.) 28
b(Selec) r(tion) p Fg 396 737 a(W) m(ithin) 20 b(application) n(s.php,)
f(a) i(color) n(-c) n(oded) f(matrix) f(of) h(applicatio) n(n) h
(status) g(and) e(actions) h(is) h(displayed.) e(Depend) n(ing) 396
845 y(on) h(the) g(status) h(\003ag) f(of) g(each) g(application) n(,) h
(certain) e(actions) h(will) h(be) f(either) g(enabled) f(or) h
(disabled.) f(These) h(actions) 396 953 y(include) f('install',) h
('upg) n(rade',) f(') l(remo) o(v) m(e'.) h(If) g(someth) n(ing) g(is) h
(v) o(ery) f(wron) n(g) g(with) h(pre) n(v) n(ious) f(attempts) g(to) h
(install) g(or) 396 1060 y(upgr) n(ade) f(an) h(app) n(lication,) f
(anoth) n(er) h(colum) n(n) g(called) f(') l(reso) n(lution') g(will) g
(then) g(display) g(a) g(link.) g(This) g(link) g(will) h(display) 396
1168 y(addition) n(al) f(inform) n(ation) f(which) g(w) o(ould) g(be) g
(helpfu) n(l) h(for) f(determ) n(ining) g(ho) n(w) g(to) g(resolv) o(e)
g(the) g(prob) n(lem.) h(Assuming) e(all) 396 1276 y(is) j(well,) g
(the) f(user) g(can) g(select) h(applicatio) n(ns) g(requ) n(iring) f
(upgr) n(ade) g(from) f(this) i(list.) g(Once) f(selected,) g(the) o(y)
f(submit) h(the) 396 1384 y(form.) f(This) i(run) n(s) g(the) f(follo) n
(w) g(three) g(rou) n(tines) h(in) f(order) n(:) p Black
Fa 396 1617 a(\225) p Black Fg 81 w(remo) o(v) m(e) p
Black Fa 396 1766 a(\225) p Black Fg 81 w(install) p
Black Fa 396 1916 a(\225) p Black Fg 81 w(upgr) n(ade) p
Fd 396 2253 a(4.3.3.) 28 b(Upgrade) p Fg 396 2410 a(The) 20
b(idea) g(here) g(is) h(that) f(multiple) g(actions) g(can) g(be) g
(selected) g(and) g(run) f(in) h(order) f(in) i(one) e(click.) h(In) g
(an) o(y) g(case,) g(once) f(the) o(y) 396 2518 y(select) i(an) f
(application) f(for) g(upgra) n(de,) h(the) h(follo) l(wing) f(occurs:)
p Black Fa 396 2751 a(\225) p Black Fg 81 w(A) h(stripped) e(do) n(wn) g
(v) o(ersion) g(of) h(the) g(setup_inf) n(o) g(array) g(is) h(passed) f
(to) g(the) h(pro) n(cess_upgr) n(ade\(\)) e(function) n(.) i(This) 479
2859 y(array) f(con) n(tains) h(only) e(the) i(info) n(rmation) e(for) h
(the) g(selected) g(application) p Black Fa 396 3008
a(\225) p Black Fg 81 w(W) m(ithin) g(proce) n(ss_upgrad) n(e\(\),) g
(the) g(tables_baselin) n(e.inc.ph) n(p) h(\002le) f(for) g(the) g
(application) f(is) i(loaded) n(.) p Black Fa 396 3158
a(\225) p Black Fg 81 w(The) f(tables_up) n(date.inc.) n(php) g(\002le)
h(for) e(the) h(application) f(is) i(loaded) p Black
Fa 396 3307 a(\225) p Black Fg 81 w(The) f(conten) n(ts) h(of) f(the) g
(test) i(array) d(is) i(used) f(to) g(loop) g(thro) n(ugh) g(the) g
(entire) g(list) h(of) f(upg) n(rade) g(functio) n(ns) h(for) e(the) 479
3415 y(application) n(.) i(The) f(app) n(lication') -5
b(s) 21 b(uniq) n(ue) f(function) f(names) h(are) g(reb) n(uilt,) f
(then) h(run.) p Black Fa 396 3564 a(\225) p Black Fg
81 w(When) g(the) g(curren) n(tv) o(er) g(\(installed\)) f(matches) h
(the) g(v) o(ersion) f(\(a) n(v) n(ailable\),) g(proce) n(ss_upgrad) n
(e\(\)) h(e) o(xits,) g(setting) g(the) 479 3672 y(status) h(\003ag) f
(for) g(the) g(app) g(to) g('C'.) p Black Fa 396 3822
a(\225) p Black Fg 81 w(Just) h(prior) e(to) h(e) o(xiting,) f(the) i
(app) n(lication) f(and) g(its) h(hook) n(s) g(are) f(updated) f(into) h
(the) g('php) n(gw_app) n(lications') g(and) 479 3930
y('php) n(gw_ho) n(oks') g(tables.) p Ff -2 4382 a(4.4.) 34
b(Unins) r(tallation/Re) r(mo) n(v) n(al) p Fd 396 4670
a(4.4.1.) 28 b(Selec) r(tion) p Fg 396 4827 a(Selecti) n(v) o(e) 20
b(remo) m(v) n(al) f(of) h(an) f(application) g(is) h(done) f(via) g
(application) n(s.php,) g(in) h(a) g(mann) n(er) g(similar) g(to) g
(the) f(method) f(abo) o(v) o(e) p Black Fe 3800 5278
a(15) p Black 90 rotate dyy eop
%%Page: 16 16
16 15 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fg 396 579 a(for) h(upg) n
(rades.) p Fd 396 916 a(4.4.2.) 28 b(Uninstallation) p
Fg 396 1074 a(Once) 20 b(an) g(application) f(is) i(selected) f(for) g
(remo) m(v) n(al:) p Black Fa 396 1306 a(\225) p Black
Fg 81 w(A) h(stripped) e(do) n(wn) g(v) o(ersion) g(of) h(the) g
(setup_inf) n(o) g(array) g(is) h(passed) f(to) g(the) h(pro) n
(cess_drop) n(tables\(\)) f(func) n(tion.) g(This) 479
1414 y(functio) n(n) h(remo) m(v) o(es) f(all) h(of) f(the) g
(application) n(') -5 b(s) 21 b(de\002ned) e(tables,) i(b) n(ut) f
(only) f(after) h(\002rst) h(checkin) n(g) f(to) h(see) g(if) f(the) g
(tables) 479 1522 y(are) g(there.) g(In) g(this) h(w) o(ay) -5
b(,) 19 b(we) i(attempt) e(to) i(cut) f(do) n(wn) f(on) h(the) g(numb) n
(er) h(of) e(errors) h(sent) g(to) h(the) f(bro) n(w) n(ser) -5
b(.) p Black Fa 396 1671 a(\225) p Black Fg 81 w(The) 20
b(applicatio) n(n') -5 b(s) 21 b(hook) n(s) g(are) f(dere) o(g) n
(istered) g(\(remo) o(v) m(ed) g(from) f('php) n(gw_ho) n(oks'\).) p
Black Fa 396 1821 a(\225) p Black Fg 81 w(The) h(applicatio) n(n) h
(itself) f(is) i(dere) m(gistered) e(\(rem) n(o) o(v) o(ed) f(from) g
('php) n(gw_app) n(lications'\).) p Fh -2 2406 a(5.) 39
b(Ca) n(veats) p Ff -2 2734 a(5.1.) 34 b(Must) g(see) g(inf) n(o) p
Fd 396 3021 a(5.1.1.) 28 b(A) m(uto) g(\002elds) p Fg
396 3179 a(F) o(or) 20 b(auto) g(type) g(\002elds,) g(schema_) n(proc) g
(creates) g(a) h(sequen) n(ce) g(autom) n(atically) f(based) g(on) g
(the) g(table) g(name) g(for) 396 3287 y(databases) g(that) f(require) g
(sequen) n(ces.) h(In) f(the) h(case) g(of) f(postgresql,) g(the) g
(limit) h(for) f(this) i(name) e(based) g(on) g(our) g(tests) i(is) f
(31) 396 3395 y(character) n(s.) h(The) f(schema_p) n(roc) g(form) n
(at) h(is:) p Fc 396 3575 a($sSequenceS) n(QL) 45 b(=) g(sprintf) n
(\("CREATE) f(SEQUENCE) f(seq_\045s",) h($sTableNa) n(me\);) p
Fg 396 3863 a(This) 21 b(limits) g(the) f(maxim) n(um) g(length) g(for)
f(a) i(tablenam) n(e) g(to) f(27) g(charac) n(ters.) h(Based) g(on) e
(the) h(tablename) f(standard) h(in) 396 3971 y(phpg) n(w) h(of) f
('php) n(gw_table) n(name',) f(you) h(are) g(furth) n(er) h(limited) f
(to) g(21) g(chara) n(cters) h(in) f(which) g(to) g(describe) g(you) n
(r) h(table.) 396 4079 y(Y) -9 b(ou) 20 b(will) h(need) e(to) i(be) f
(less) h(descripti) n(v) m(e) g(in) f(some) g(cases,) h(e.g.) e(use) i
('php) n(gw_widg) n(et_cats') f(instead) g(of) 396 4187
y('php) n(gw_widg) n(et_info_) n(cate) o(gor) n(ies'.) 396
4336 y(T) -7 b(o) 21 b(maintain) e(comp) n(atibility) i(with) f(MySQL) g
(3.22) n(.X,) g(please) h(al) o(w) o(ays) f(add) g(\223'nu) n(llable') g
(=>) h(F) o(alse\224) f(to) h(you) n(r) g(\002eld) 396
4444 y(spec) g(for) e(an) h(auto) g(\002eld.) g(This) g(and) g(prob) n
(ably) g(older) f(v) o(ersions) h(of) f(MySQL) h(require) f(that) i
(speci\002cation) e(within) h(the) 396 4552 y(SQL) h(for) e(a) i
(\002eld) f(that) h(will) g(also) f(be) g(an) g(inde) o(x) f(or) h
(uniqu) n(e) h(\002eld,) f(which) g(for) f(our) h(uses) g(should) g
(typically) f(be) h(true) g(for) 396 4660 y(an) g(auto) g(\002eld.) g
(MySQL) g(3.23) n(.X) h(and) f(PostgreSQL) f(do) h(not) g(ha) n(v) o(e)
f(this) i(issue.) p Black Fe 3798 5278 a(16) p Black
90 rotate dyy eop
%%Page: 17 17
17 16 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Fd 396 579 a(5.1.2.) 28
b(Default) h(0) p Fg 396 737 a(F) o(or) 20 b(int) h(\002elds,) f(a) h
(def) o(au) n(lt) g(of) f(0) g(is) h(not) f(assumed.) g(Only) f(some) h
(databases) g(will) h(set) g(this) g(def) o(ault) e(for) h(you,) f
(MySQL) 396 845 y(being) g(one.) h(Y) -9 b(ou) 19 b(will) i(need) f(to)
g(e) o(xplicitly) f(de\002ne) h(this) h(def) o(au) n(lt) g(in) g(the) f
(table) g(de\002nition) n(.) h(Also,) f(for) g(auto) f(\002elds,) i(do)
396 953 y(not) f(enter) g(a) g(def) o(ault,) g(since) g(the) g
(resulting) g(SQL) g(query) f(w) o(ould) g(f) o(ail) i(on) f(man) o(y) f
(RDBMS.) p Black Fe 3797 5278 a(17) p Black 90 rotate
dyy eop
%%Page: 18 18
18 17 bop Black 0 TeXcolorgray Black Fe 3063 67 a(phpGr) l(ou) n(pW) -8
b(ar) m(e) 21 b(Setup) e(III) p Black Black 3800 5278
a(18) p Black 90 rotate dyy eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF