%!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