diff --git a/doc/CHANGELOG b/doc/CHANGELOG deleted file mode 100755 index b589148899..0000000000 --- a/doc/CHANGELOG +++ /dev/null @@ -1,5 +0,0 @@ -12/29/2001 -added en_US directory and installed SGML versions of the documentation. -adjusted directories to conform to the new documentation standard. - --Brandon- diff --git a/doc/CREDITS b/doc/CREDITS deleted file mode 100755 index e7558e0ddc..0000000000 --- a/doc/CREDITS +++ /dev/null @@ -1 +0,0 @@ -See the CREDITS in phpgwapi/doc diff --git a/doc/README b/doc/README deleted file mode 100755 index 71c6e1fc45..0000000000 --- a/doc/README +++ /dev/null @@ -1 +0,0 @@ -PLEASE SEE THE index.html OR index.txt files. diff --git a/doc/README.DOCS b/doc/README.DOCS deleted file mode 100644 index 8aa0923f6a..0000000000 --- a/doc/README.DOCS +++ /dev/null @@ -1,6 +0,0 @@ -The documentation is writtend in DocBook SGML and converted to other formats use Jade. - -The makefile in this directory is used to generate the various other forms on the docs server, it may or may not work on your particular installation. - ---Brandon Neill - diff --git a/doc/en_US/html/dev/HellophpGroupware.html b/doc/en_US/html/dev/HellophpGroupware.html deleted file mode 100644 index f23bf7d314..0000000000 --- a/doc/en_US/html/dev/HellophpGroupware.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - - - - Hello World - phpGroupware - - - -

-Developping a Hello World application for phpGroupware

-Author : Jean-Francois Declercq  (jef@jfdeclercq.com) -
Where to find this information : http://www.jfdeclercq.com/search?query=phpgroupware -

1. Creating the basic directory structure -
2. Wrinting the application -
2.1 Writing the basic functionality -
2.2 Writing the templates -
2.3 Writing the main page -
3. Installing the hello application -
4. Conclusions -
5. What's next ? -

-1. Creating the basic directory structure

-In the phpgroupware home directory, you have to respect  a directory -structure. We will create the following. -
  - - - - -
|--hello  -
  |--inc  -
  |   |--functions.inc.php -
  |--templates  -
  |   |--default -
  |   |   |--hello_form.tpl -
  |   |   |--hello_result.tpl -
  |--index.php
- -

Create the hello, inc, templates and default directory. We will write -the files in the next section. -

-2. Writing the application

- -

-2.1 Writing the basic functionality

-First, we will create function.inc.php that contains some functions that -will be used  by the page. We will create a function hello() that -formats a string. (Note that in the philosophy of phpGroupware -we would  write a Hello class that would contain that functionality...) -
  - - - - -
<?php -
  /**************************************************************************\ -
  * functions.inc.php  -for  phpGroupWare - Hello World example -
  * http://www.phpgroupware.org -
  * This file has -been written by J-F Declercq <jef@jfdeclercq.com> -
  * http://www.jfdeclercq.com  -
  * --------------------------------------------  -
  *  This -program is free software; you can redistribute it and/or modify it -
  *  under -the terms of the GNU General Public License as published by the  -
  *  Free -Software Foundation; either version 2 of the License, or (at your  -
  *  option) -any later version.  -
  \**************************************************************************/ -

  /***************************************************************************\ -
  * Function hello  -
  * in - String -: the text to hello()  -
  * returns - the -string with 'Hello' before and ' !' after  -
  * note - Used -by the hello phpgw app -
  \***************************************************************************/ -
  function hello($string) -
  { -
    return -"Hello ".$string." !"; -
  } -
?>

- -

-2.2 Writing the templates

-Write the templates for the page. The page will not contain HTML code. -The templates allow to separate the presentation from the logic of the -page. We will insert two templates on the page : the 'hello_result' template -and the 'hello_form' template. -
  - - - - -
<!-- hello_form.tpl -template --> -
<p>Type Here your -text to hello()</p>  -
<form type="post" -action="{hello_action}">  -
   <input -type="text" name="input" value= "{hello_value}" > -
   <input -type="submit" value="OK">  -
</form>
- -

This template looks like this : - - - - -
-

Type Here your text to hello() -

- -

The hello_result.tpl template allows you to display the parameter  -and the result of the hello() function. - - - - -
<!-- hello_result.tpl ---> -
hello({hello_input})={hello_result} -
<hr>
-This template looks like this : - - - - -
hello({hello_input})={hello_result} -
- -

You have to put these .tpl files  in the /templates/default/ directory. -

-2.3 Write the main page

-Now we have to write hello/index.php : this is the main page of the hello -world application. I hope the code is clear enough so you can understand -without I have to explain. (read the comments...) - - - - -
<?php -
  /**************************************************************************\ -
  * index.php  -for  phpGroupWare - Hello World example                       -* -
  * http://www.phpgroupware.org                                              -* -
  * This file written -by J-F Declercq <jef@jfdeclercq.com>                   -* -
  * http://www.jfdeclercq.com                                                -* -
  * --------------------------------------------                             -* -
  *  This -program is free software; you can redistribute it and/or modify it * -
  *  under -the terms of the GNU General Public License as published by the   -* -
  *  Free -Software Foundation; either version 2 of the License, or (at your  -* -
  *  option) -any later version.                                              -* -
  \**************************************************************************/ -

  /***************************************************************************\ -
  * This page allows -you to call the hello() function. -
  * The default -text passed to hello() is 'World' and  -
  * hello('World')='Hello -World !'. -
  * The page uses -a form to allow you to hello() other texts. -
  * The form and -the result of the function  have been put in two different  -
  * templates (hello_result.tpl -and hello_form.tpl). -
  \***************************************************************************/ -
   //set the -phpgw flags -
   $phpgw_info['flags'] -= array('currentapp' => 'hello', -
     -'enable_nextmatchs_class' => True, -
     -'enable_categories_class' => True); -
   //include -the header -
   include('../header.inc.php'); -
   /** the -default text to hello() is 'World'*/ -
   $default="World"; -
   if ($input -== "") { $input=$default; }  -
   //Compute -hello() -
   $result -= hello($input); -
    -
   //Use templates -
   $t = CreateObject('phpgwapi.Template',PHPGW_APP_TPL); -
   //we will -use two templates -
   $t->set_file(array(  -
    'result' -=> 'hello_result.tpl', -
    'form' -=> 'hello_form.tpl') -
   ); -
    -
   //filling -the first template -
   $t->set_var('hello_input',htmlspecialchars($input)); -
   $t->set_var('hello_result',htmlspecialchars($result));    -
    -
   //filling -the second template -
   $t->set_var('hello_action','/hello/index.php'); -
   $t->set_var('hello_value',htmlspecialchars($input)); -
    -
   //parse -and write out the templates -
   //changing -the order of the two lines will change the layout of the page !! -
   //this -is the power of the templates -
   $t->pparse('out','result'); -
   $t->pparse('out','form'); -
    -
    -
   //Insert -the footer -
   $phpgw->common->phpgw_footer();  -
?>

- -

-3. Installing the hello application

-After having the correct files and folders (by creating or unzipping) in -you phpGroupware base directory, you have to register the hello application -within phpGroupware using this command - - - - -
insert into phpgw_applications (app_name, app_title, app_enabled) values -('hello', 'Hello World for phpGroupware', 1);
-After that, using the admin user, you must grant access to the application -to some user and log in as this user. -

-4. Conclusions

-Trough building this stupid hello world application we have been trough -some but not all of the requirements of phpGroupware. -

"These guidelines must be followed for any application that wants considered -for inclusion into phpGroupWare deluxe" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
It must run on PHP3 and PHP4.OK - I think it's ok (?) I'm not a king of php and I use PHP4.
SQL statements must be compatible with both MySQL and PostgreSQL. OK - No SQL statement so far
It must use our default header.inc.php include. OK - cfr index.php
It must use our $phpgw_link($url) for all links (this is for session -support). OK - cfr hello_form.tpl
It must use ``post'' for forms. OK - cfr hello_form.tpl
It must respect phpGW group rights and phpGW user permissions. KO - We didn't check that particular aspect. --> TODO
It must use our directory structure, template support and lang (multi-language) -support. KO - we didn't use the language aspects --> TODO
Where possible it should run on both Unix and NT platforms. OK ? - Only tested on NT
- -

hello isn't a phpGroupware deluxe application...  The next evolution -of hello will be to add a group right and a multi-language feature. See -what's next. -

phpGroupWare offers very interesting features for people wanting to -write 100% web-based applications : -

- -

-5. What's next

-So, other things I should cover in the next Hello World application : - - - - diff --git a/doc/en_US/ps/FAQ.ps b/doc/en_US/ps/FAQ.ps deleted file mode 100644 index 430c4485a6..0000000000 --- a/doc/en_US/ps/FAQ.ps +++ /dev/null @@ -1,463 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.86e Copyright 2001 Radical Eye Software -%%Title: /tmp/@6778.dvi -%%Pages: 3 -%%PageOrder: Ascend -%%BoundingBox: 0 0 596 842 -%%DocumentFonts: Helvetica-Bold Times-Roman Times-Italic Courier-Bold -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -o ./FAQ.ps /tmp/@6778.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2002.01.01:1106 -%%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 -/p{show}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 Encoding{exch dup type/integertype ne{pop pop 1 sub -dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} -ifelse}forall 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 39158280 55380996 1000 600 600 (/tmp/@6778.dvi) -@start /Fa 134[45 1[45 1[45 1[45 45 1[45 45 45 45 45 -45 1[45 45 45 45 45 45 45 45 15[45 26[45 6[45 45 45 45 -9[45 35[{TeXBase1Encoding ReEncodeFont}26 74.7198 /Courier-Bold -rf /Fb 134[37 37 54 37 37 21 29 25 1[37 37 37 58 21 37 -21 21 37 37 25 33 37 33 37 33 4[21 7[46 42 2[42 2[66 -46 2[25 3[46 1[50 1[54 6[21 2[37 4[37 1[37 21 19 25 19 -2[25 25 5[30 31[42 2[{TeXBase1Encoding ReEncodeFont}46 -74.7198 /Times-Roman rf /Fc 138[42 2[32 1[42 42 6[42 -2[37 3[42 9[69 5[60 9[60 51 4[51 13[42 42 42 49[{ -TeXBase1Encoding ReEncodeFont}15 83.022 /Times-Italic -rf /Fd 134[66 66 93 66 73 40 66 47 1[73 73 73 106 33 -66 1[33 73 73 40 66 73 66 73 66 9[113 2[73 3[80 2[100 -3[33 1[93 73 80 86 86 1[86 1[73 9[66 66 66 66 66 1[33 -33 1[33 4[33 4[57 31[73 2[{TeXBase1Encoding ReEncodeFont}46 -119.552 /Helvetica-Bold rf /Fe 133[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 1[78 1[60 51 46 1[60 46 60 60 74 51 1[32 -28 1[60 46 51 60 2[60 76 1[47 3[23 42 42 42 1[42 42 42 -42 42 42 23 21 28 21 2[28 28 5[34 31[46 2[{ -TeXBase1Encoding ReEncodeFont}65 83.022 /Times-Roman -rf /Ff 138[88 48 80 56 1[88 88 88 128 40 2[40 1[88 1[80 -88 80 1[80 18[104 120 3[40 2[88 96 2[104 104 11[80 80 -80 80 80 2[40 46[{TeXBase1Encoding ReEncodeFont}28 143.462 -/Helvetica-Bold rf /Fg 138[126 2[80 1[126 126 6[126 2[115 -3[115 9[195 5[161 9[161 126 4[149 65[{TeXBase1Encoding ReEncodeFont}12 -206.584 /Helvetica-Bold rf end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%PaperSize: A4 - -%%EndSetup -%%Page: 1 1 -1 0 bop Black 0 TeXcolorgray Black Black 1160 140 a Fg(phpGr)l(oupW)-8 -b(are)58 b(F)-17 b(A)-8 b(Q)1673 416 y Ff(Brandon)38 -b(Neill)695 649 y Fe(Frequently)19 b(Ask)o(ed)h(questions)f(related)h -(to)g(phpGroupW)-7 b(are)-2 1366 y Ff(1.)39 b(Installation)396 -1546 y Fe(Installation)20 b(Questions)-2 1874 y Fd(1.1.)34 -b(Will)g(phpGr)n(oupW)-5 b(are)33 b(w)n(ork)g(with)h(Windo)n(ws?)396 -2042 y Fe(Y)-8 b(es,)21 b(there)e(are)h(se)n(v)o(eral)g(people)f(who)h -(are)g(using)g(it.)-2 2543 y Ff(2.)39 b(Administration)-2 -2872 y Fd(2.1.)34 b(Deselecting)j(an)c(application)j(f)n(or)c(a)i(user) -f(doesn't)i(seem)g(to)e(restrict)-2 3027 y(thier)g(access)j(to)d(that)h -(application)396 3195 y Fe(A)21 b(user)f(gains)g(access)g(to)h(an)f -(application)f(one)g(of)h(tw)o(o)h(w)o(ays,)f(being)f(gi)n(v)o(en)g -(access)i(directly)-5 b(,)19 b(or)g(by)h(belonging)e(to)i(a)396 -3303 y(group)f(that)h(has)g(access.)h(In)f(order)f(to)h(den)o(y)f(a)i -(user)f(access)h(to)f(an)g(application,)e(it)j(must)g(be)f(remo)o(v)o -(ed)d(from)j(both)f(the)396 3410 y(users)i(account,)d(and)i(all)h(the)f -(users)g(groups.)-2 3912 y Ff(3.)39 b(Email)g(application)-2 -4240 y Fd(3.1.)34 b(The)g(mail)h(pref)o(erences)f(are)g(not)f(updated)h -(fr)n(om)f(the)g(interface)i("mail)-2 4396 y(pref)o(erences")396 -4563 y Fe(If)20 b(you)g(are)g(referring)e(to)i(setting)g(the)h(passw)o -(ord)e(when)h(using)f(custom)h(email)g(preferences,)e(this)j(is)g -(actually)f(a)396 4671 y(security)g(feature.)f(W)-7 b(e)21 -b(do)f(not)g(send)g(the)g(passw)o(ord)f(back)h(to)g(the)h(user)f(as)g -(it)h(w)o(ould)f(still)h(be)f(sent)h(back)e(in)i(plain)f(te)o(xt.)396 -4779 y(Ev)o(en)f(though)g(it)i(is)g(displayed)e(with)h(asterisks,)h(it) -g(w)o(ould)e(be)h(in)g(plain)g(te)o(xt)g(if)h(you)e(vie)n(w)h(the)g -(source)g(html)g(for)f(the)396 4887 y(page.)h(What)g(we)h(do)e(is)j -(check)d(to)h(see)h(if)g(the)f(user)g(entered)f(a)i(v)n(alue)e(in)h -(that)h(\002eld.)f(If)g(so,)g(we)h(tak)o(e)f(the)g(ne)n(w)g(passw)o -(ord)396 4995 y(the)g(user)h(enters)f(and)f(encrypt)g(it)i(and)e(sa)n -(v)o(e)i(it)g(into)f(the)g(database.)f(This)i(pro)o(vides)d(for)i -(maximum)e(security)i(of)g(user)396 5103 y(passw)o(ords.)p -Black 3842 5569 a Fc(1)p Black eop -%%Page: 2 2 -2 1 bop Black 0 TeXcolorgray Black 3207 -132 a Fc(phpGr)l(oupW)-8 -b(ar)m(e)19 b(F)-10 b(A)m(Q)p Black -2 77 a Fd(3.2.)34 -b(I'm)g(composing)h(mail,)g(what)f(do)f(I)g(put)g(in)h(the)g("T)-10 -b(o")33 b(and/or)g("CC")g(bo)l(x)o(es)396 244 y Fe(The)20 -b(easiest)h(w)o(as)g(is)g(to)g(follo)n(w)e(these)i(e)o(xamples,)d(pay)i -(close)g(attention)g(to)g(the)g(spaces,)g(do)g(not)g(add)g(spaces)g -(you)f(do)396 352 y(not)h(see)h(here:)f(johndoe@e)o(xample.com)15 -b(johndoe@e)o(xample.com,jane@e)o(x)o(amp)o(le.co)o(m,tar)o(zan@e)o(x)o -(amp)o(le.co)o(m)396 460 y("John)20 b(Doe")p 1 0 0 -TeXcolorrgb 20 w(e)o(xample.com>)d("John)i(Doe")p 1 0 0 -TeXcolorrgb 20 w(e)o(xample.com>,"Jane")p 1 0 0 TeXcolorrgb -17 w(e)o(xample.com>)396 568 y(johndoe@e)o(xample.com,"Jane")p -1 0 0 TeXcolorrgb 15 w(e)o(xample.com>,tarzan@e)o(xamp)o(le.com)p -1 0 0 TeXcolorrgb 1 0 0 TeXcolorrgb 1 0 0 TeXcolorrgb -Black -2 938 a Fd(3.3.)34 b(My)g(IMAP)f(ser)q(ver)h(logs)g(sho)n(w)g -(man)n(y)g(login)g(attempts)h(with)e(garba)o(g)q(e)-2 -1093 y(usernames,)i(wh)n(y?)396 1261 y Fe(At)21 b(this)f(time)g(we)h -(kno)n(w)e(this)h(happens)f(when)g(you)g(enter)g("localhost")g(for)h -(your)e(POP/IMAP)j(mail)f(serv)o(er)f(hostname)396 1369 -y(or)h(IP)h(address.)e(F)o(or)h(no)n(w)g(the)g(solution)f(w)o(ould)h -(be)g(to)g(try)g(the)g(actual)g(IP)h(or)f(the)g(machine)f(name)h -(\(resolv)n(able)e(via)396 1477 y(DNS,)j(hosts,)f(or)g(other)f(means\)) -h(for)f(your)g(IMAP)i(email)f(serv)o(er)-5 b(.)-2 1846 -y Fd(3.4.)34 b(Err)n(or)e(messa)o(g)q(e)j(when)f(ad)o(ding)g(lar)n(g)q -(e)h(signature)f(\002les)396 2014 y Fe(The)20 b(max)g(number)e(of)i -(characters)f(for)h(a)h(sig)f(\002le)h(is)g(8140.)e(Extremely)f(lar)o -(ge)i(sig)g(\002les)h(are)f(not)g(recommnded)396 2122 -y(an)o(yw)o(ay)-5 b(,)19 b(Usenet)h(recommends)e(sig)i(\002les)i(of)e -(1-5)f(lines)i(in)f(length,)f(3)h(being)f(preferred.)-2 -2492 y Fd(3.5.)34 b(I)g(can)g(not)f(attac)o(h)h(\002les)h(to)e(an)h -(email,)h(I)e(g)q(et)h(err)n(or)n(s)f(about)g("unlink")396 -2659 y Fe(There)20 b(are)g(tw)o(o)g(possible)g(causes)h(for)e(this)i -(problem,)d(the)i(\002rst)h(and)f(least)h(lik)o(ely)f(is)h(the)f(web)g -(serv)o(er)g(temp)f(directory)-5 b(,)396 2767 y(check)20 -b(your)f(webserv)o(er)f(con\002guration)g(for)h(this.)i(The)f(second)f -(is)i(the)f(temp)g(directory)f(which)g(phpGroupW)-7 b(are)396 -2875 y(uses.)21 b(T)-7 b(o)20 b(check)f(this,)i(follo)n(w)e(these)i -(steps:)479 3097 y Fb(-)e(go)g(to)g(http://your)l(.serv)o(er/phpgroupw) -o(are/setup)41 b(\(the)19 b(phpgroupw)o(are)i(initial)e(setup)g(page\)) -479 3194 y(-)g(login)g(to)g("Setup/Con\002g)h(Admin)f(Log")479 -3291 y(-)g(in)g("Step)g(2)g(-)f(Con\002guration")j(click)e("Edit)f -(Current)h(Con\002guration")479 3388 y(-)g(under)h("P)o(ath)f -(Information")h(see)f(the)g(box)g(labeled)h("Enter)f(full)f(path)i(for) -f(temporary)g(\002les:)f(Examples:)i(/tmp,)e(C:\\TEMP")479 -3485 y(-)c(Mak)o(e)i(sure)f(that)f(directory)h(listed)f(has)h -(permissions)g(thar)f(are)h(at)f(least)g(0700)i(and)f(the)f(o)n(wner)h -(is)f(nobody)-5 b(.nobody)19 b(\(note:)14 b(this)g(as-)479 -3583 y(sumes)20 b(your)f(webserv)o(er)h(runs)f(as)g(user)g(nobody)-5 -b(,)21 b(adjust)e(for)g(your)h(installation\))479 3680 -y(-)14 b(The)h(other)f(directory)h(to)g(check)g(is)f(the)h(temporary)g -(directory)g(that)f(your)h(web)g(serv)o(er)g(typically)f(uses,)h(b)o -(ut)f(the)h(information)g(listed)f(abo)o(v)o(e)h(is)f(by)h(f)o(ar)f -(the)h(most)g(com-)479 3777 y(mon)20 b(con\002g)f(issue)g(with)g(email) -g(attachments.)-2 4428 y Ff(4.)39 b(File)g(Mana)o(g)q(er)-2 -4756 y Fd(4.1.)34 b(File)h(Mana)o(g)q(er)e(not)h(w)n(orking)396 -4924 y Fe(T)-7 b(o)21 b(use)f(the)g(\002lemanager)f(app:)479 -5145 y Fb(\(from)g(phpgroupw)o(are)j(home\))p Black 3842 -5569 a Fc(2)p Black eop -%%Page: 3 3 -3 2 bop Black 0 TeXcolorgray Black 3207 -132 a Fc(phpGr)l(oupW)-8 -b(ar)m(e)19 b(F)-10 b(A)m(Q)p Black 479 72 a Fa(#)45 -b(mkdir)f(files)479 170 y(#)h(mkdir)f(files/groups)479 -267 y(#)h(mkdir)f(files/users)479 364 y(#)h(chown)f(-R)g(nobody.nobody) -f(files)13 b Fb(\(note:)i(this)f(assumes)h(your)h(webserv)o(er)f(runs)f -(as)h(user)g(nobody)-5 b(,)16 b(adjust)e(for)h(your)g(installation\)) -479 461 y Fa(#)45 b(chmod)f(-R)g(770)h(files)396 801 -y Fe(Mak)o(e)20 b(sure)g(you)g(ha)n(v)o(e)f(the)h(correct)g(FULL)g -(path)g(in)g(setup)g(\(ie.)g(/home/httpd/phpgroupw)o(ar)o(e/\002les\)) --2 1303 y Ff(5.)39 b(Forum)-2 1631 y Fd(5.1.)34 b(inde)n(x.php)h(not)f -(loaded)g(automaticall)n(y)j(b)n(y)c(apac)o(he)396 1799 -y Fe(Sometimes)20 b(/forum/inde)o(x.php)15 b(is)22 b(not)d(loaded)g -(automatically)g(by)h(apache,)f(this)i(appears)e(to)h(be)g(a)h(b)n(ug)f -(in)g(apache)396 1907 y(1.3.13mdk.)d(If)j(you)f(ha)n(v)o(e)h(the)g -(same)g(problem)f(just)i(add)e(/inde)o(x.php)f(in)i(lines)h(49,)e(57)h -(and)f(82)h(of)396 2015 y(preference_cate)o(gory)-5 b(.ph)o(p.)p -Black 3842 5569 a Fc(3)p Black eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/doc/en_US/sgml/FAQ/FAQ.sgml b/doc/en_US/sgml/FAQ/FAQ.sgml deleted file mode 100755 index 86465972ae..0000000000 --- a/doc/en_US/sgml/FAQ/FAQ.sgml +++ /dev/null @@ -1,182 +0,0 @@ - - -
-phpGroupWare FAQ - - - -DanKuykendall - - -BrandonNeill - - -$Revision$, $Date: 2002/01/05 - - - - -Frequently Asked questions related to phpGroupWare - - - - - - - General - -Is it phpGroupWare, PHPGroupWare, PHP Groupware, etc? - -Its phpGroupWare, not any of the others. Only the G and the W should be in caps, its also 1 word, not 2. Sometimes for short we call it phpGW, again, the G and the W are in caps. - - - -I didn't find my question here, where can I ask? - -Many of the developers are on the openprojects irc network (irc.openprojects.net) in the #phpgroupware channel. You can also check the mailing lists and archives at phpGroupware - Mailing Lists - - - -How do I add new questions to this list? - -Email me at brandonne@colorado.dyndns.org or submit them in Tracker on the phpGroupWare site and assign them to brandonne. - - - - - Installation - -Installation Questions - -Will phpGroupWare work with Windows? - - -Yes, there are several people who are using it. Thanks Vincent Larchet vinz@users.sourceforge.net for patching anything we do that breaks phpGroupWare on NT. - - - - -Will phpGroupWare work with PHP4/PHP3? - -Yes, it runs on both PHP3 and PHP4 - - - -Will phpGroupWare work with SSL - -Yes, since there are no references to http:// or https:// (unless you put them in the header) there shoudn't be any problems with it. - - - -I am having problems installing on PostgreSQL 6.x. - -phpGroupware is being developed with version 7.x. I tried installing it on 6.x and ran into several problems. Unless you plan on toying around with it, you're better of with 7.x. - - - - - Administration - -Deselecting an application for a user doesn't seem to restrict their access to that application - - -A user gains access to an application one of two ways, being given access directly, or by belonging to a group that has access. In order to deny a user access to an application, it must be removed from both the users account, and all the users groups. - - - - - Applications - Email - -The mail preferences are not updated from the interface "mail preferences" - - -If you are referring to setting the password when using custom email preferences, this is actually a security feature. We do not send the password back to the user as it would still be sent back in plain text. Even though it is displayed with asterisks, it would be in plain text if you view the source html for the page. What we do is check to see if the user entered a value in that field. If so, we take the new password the user enters and encrypt it and save it into the database. This provides for maximum security of user passwords. - - - - - -I'm composing mail, what do I put in the "To" and/or "CC" boxes - - -The easiest was is to follow these examples, pay close attention to the spaces, do not add spaces you do not see here: johndoe@example.com johndoe@example.com,jane@example.com,tarzan@example.com "John Doe" <johndoe@example.com> "John Doe" <johndoe@example.com>,"Jane" <jane@example.com> johndoe@example.com,"Jane" <jane@example.com>,tarzan@example.com - - - - -My IMAP server logs show many login attempts with garbage usernames, why? - - -At this time we know this happens when you enter "localhost" for your POP/IMAP mail server hostname or IP address. For now the solution would be to try the actual IP or the machine name (resolvable via DNS, hosts, or other means) for your IMAP email server. - - - - -Error message when adding large signature files - - -The max number of characters for a sig file is 8140. Extremely large sig files are not recommnded anyway, Usenet recommends sig files of 1-5 lines in length, 3 being preferred. - - - - -I can not attach files to an email, I get errors about "unlink" - - -There are two possible causes for this problem, the first and least likely is the web server temp directory, check your webserver configuration for this. The second is the temp directory which phpGroupWare uses. To check this, follow these steps: - -
-- go to http://your.server/phpgroupware/setup (the phpgroupware initial setup page) -- login to "Setup/Config Admin Log" -- in "Step 2 - Configuration" click "Edit Current Configuration" -- under "Path Information" see the box labeled "Enter full path for temporary files: Examples: /tmp, C:\TEMP" -- Make sure that directory listed has permissions thar are at least 0700 and the owner is nobody.nobody (note: this assumes your webserver runs as user nobody, adjust for your installation) -- The other directory to check is the temporary directory that your web server typically uses, but the information listed above is by far the most common config issue with email attachments. -
-
-
-
- File Manager - -File Manager not working - - -To use the filemanager app: - -
-(from phpgroupware home) -# mkdir files -# mkdir files/groups -# mkdir files/users -# chown -R nobody.nobody files (note: this assumes your webserver runs as user nobody, adjust for your installation) -# chmod -R 770 files -
- -Make sure you have the correct FULL path in setup (ie. /home/httpd/phpgroupware/files) - -
-
-
- - Forum - -index.php not loaded automatically by apache - - -Sometimes /forum/index.php is not loaded automatically by apache, this appears to be a bug in apache 1.3.13mdk. If you have the same problem just add /index.php in lines 49, 57 and 82 of preference_category.php. - - - - -
- Development - -Why don't you just use the session class from phplib? Why not use cookies to hold the sessionid? - -I personally don't like using cookies for something like this. However, the session management is currently being abstracted for the applications. This means that switching to cookies will be possible for those that are interested. - - - -
-
diff --git a/doc/en_US/sgml/FAQ/Makefile b/doc/en_US/sgml/FAQ/Makefile deleted file mode 100644 index 176ebc92a4..0000000000 --- a/doc/en_US/sgml/FAQ/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# Makefile for phpGroupware FAQ -# Written by Brandon Neill -# Copyright 2002 - -INSTDIR ?= ../.. - -all: html ps txt - -ps: FAQ.sgml - sgmltools -b ps FAQ.sgml - @touch ps - -txt: FAQ.sgml - sgmltools -b txt FAQ.sgml - @touch txt - -html: FAQ.sgml - sgmltools -b onehtml FAQ.sgml - @touch html - -install: - @if [ -e FAQ.txt ]; \ - then \ - echo "Moving FAQ.txt to $(INSTDIR)"; \ - mv FAQ.txt $(INSTDIR)/; \ - fi - -@if [ -e FAQ.html ]; \ - then \ - if [ ! -d $(INSTDIR)/html/FAQ ]; \ - then \ - mkdir -p $(INSTDIR)/html/FAQ; \ - fi; \ - echo "Tidying HTML files and moving them to $(INSTDIR)/html"; \ - echo "You may get an ignored error here, it's OK";\ - tidy -i -clean $(INSTDIR)/html/FAQ/FAQ.html 2> /dev/null; \ - rm FAQ.html; \ - fi - @if [ -e FAQ.ps ]; \ - then \ - echo "Moving FAQ.ps to $(INSTDIR)/ps"; \ - if [ ! -d $(INSTDIR)/ps ]; \ - then \ - mkdir $(INSTDIR)/ps; \ - fi; \ - mv FAQ.ps $(INSTDIR)/ps; \ - fi - -clean: - @if [ -e FAQ.txt ];\ - then \ - rm FAQ.txt ;\ - fi - -rm txt - @if [ -e FAQ.html ]; \ - then \ - rm FAQ.html; \ - fi - -rm html - @if [ -e FAQ.ps ]; \ - then \ - rm FAQ.ps; \ - fi - -rm ps - diff --git a/doc/en_US/sgml/Makefile b/doc/en_US/sgml/Makefile deleted file mode 100644 index d063c74a4c..0000000000 --- a/doc/en_US/sgml/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -# Makefile for phpGroupWare documentation -# Written by Brandon Neill -# Copyright 2002 - -.PHONY: admin user FAQ - -all: admin user FAQ - -admin: - $(MAKE) -C admin - -user: - $(MAKE) -C user - -FAQ: - $(MAKE) -C FAQ - -ps: - $(MAKE) -C admin ps - $(MAKE) -C user ps - $(MAKE) -C FAQ ps - -html: - $(MAKE) -C admin html - $(MAKE) -C user html - $(MAKE) -C FAQ html - -txt: - $(MAKE) -C admin txt - $(MAKE) -C user txt - $(MAKE) -C FAQ txt - -clean: - $(MAKE) -C admin clean - $(MAKE) -C user clean - $(MAKE) -C FAQ clean - -install: - $(MAKE) -C admin install - $(MAKE) -C user install - $(MAKE) -C FAQ install - diff --git a/doc/en_US/sgml/admin/Makefile b/doc/en_US/sgml/admin/Makefile deleted file mode 100644 index e9d8357bf3..0000000000 --- a/doc/en_US/sgml/admin/Makefile +++ /dev/null @@ -1,69 +0,0 @@ -# Makefile for phpGroupware phpGroupWare-Admin-Manual -# Written by Brandon Neill -# Copyright 2002 - -INSTDIR ?= ../.. - -all: html ps txt - -ps: phpGroupWare-Admin-Manual.sgml - sgmltools -b ps phpGroupWare-Admin-Manual.sgml - @touch ps - -txt: phpGroupWare-Admin-Manual.sgml - sgmltools -b txt phpGroupWare-Admin-Manual.sgml - @touch txt - -html: phpGroupWare-Admin-Manual.sgml - sgmltools -b html phpGroupWare-Admin-Manual.sgml - @touch html - -install: - @if [ -e phpGroupWare-Admin-Manual.txt ]; \ - then \ - echo "Moving phpGroupWare-Admin-Manual.txt to $(INSTDIR)"; \ - mv phpGroupWare-Admin-Manual.txt $(INSTDIR)/; \ - fi - -@if [ -e phpGroupWare-Admin-Manual ]; \ - then \ - if [ ! -d $(INSTDIR)/html/admin ]; \ - then \ - mkdir -p $(INSTDIR)/html/admin; \ - else \ - rm $(INSTDIR)/html/user/*.html; \ - fi; \ - echo "Tidying HTML files and moving them to $(INSTDIR)/html/admin"; \ - echo "You may get an ignored error here, it's OK";\ - for file in `ls -1 phpGroupWare-Admin-Manual`; \ - do \ - tidy -i -clean < phpGroupWare-Admin-Manual/$$file >$(INSTDIR)/html/admin/$$file 2> /dev/null; \ - done; \ - rm -r phpGroupWare-Admin-Manual; \ - fi - @if [ -e phpGroupWare-Admin-Manual.ps ]; \ - then \ - echo "Moving phpGroupWare-Admin-Manual.ps to $(INSTDIR)/ps"; \ - if [ ! -d $(INSTDIR)/ps ]; \ - then \ - mkdir $(INSTDIR)/ps; \ - fi; \ - mv phpGroupWare-Admin-Manual.ps $(INSTDIR)/ps; \ - fi - -clean: - @if [ -e phpGroupWare-Admin-Manual.txt ];\ - then \ - rm phpGroupWare-Admin-Manual.txt ;\ - fi - -rm txt - @if [ -e phpGroupWare-Admin-Manual ]; \ - then \ - rm -r phpGroupWare-Admin-Manual; \ - fi - -rm html - @if [ -e phpGroupWare-Admin-Manual.ps ]; \ - then \ - rm phpGroupWare-Admin-Manual.ps; \ - fi - -rm ps - diff --git a/doc/en_US/sgml/admin/addressbook.sgml b/doc/en_US/sgml/admin/addressbook.sgml deleted file mode 100755 index e3ae883432..0000000000 --- a/doc/en_US/sgml/admin/addressbook.sgml +++ /dev/null @@ -1,4 +0,0 @@ - - -Addressbook - diff --git a/doc/en_US/sgml/admin/calendar.sgml b/doc/en_US/sgml/admin/calendar.sgml deleted file mode 100755 index e4f0e50250..0000000000 --- a/doc/en_US/sgml/admin/calendar.sgml +++ /dev/null @@ -1,4 +0,0 @@ - - -Calendar - diff --git a/doc/en_US/sgml/admin/email.sgml b/doc/en_US/sgml/admin/email.sgml deleted file mode 100755 index e05b25317e..0000000000 --- a/doc/en_US/sgml/admin/email.sgml +++ /dev/null @@ -1,4 +0,0 @@ - - -Email - diff --git a/doc/en_US/sgml/admin/filemanager.sgml b/doc/en_US/sgml/admin/filemanager.sgml deleted file mode 100755 index 3e4d7f11ad..0000000000 --- a/doc/en_US/sgml/admin/filemanager.sgml +++ /dev/null @@ -1,4 +0,0 @@ - - -File Manager - diff --git a/doc/en_US/sgml/admin/general.sgml b/doc/en_US/sgml/admin/general.sgml deleted file mode 100755 index bf9f80698a..0000000000 --- a/doc/en_US/sgml/admin/general.sgml +++ /dev/null @@ -1,21 +0,0 @@ - - -General - - -Here will go an overview of categories and other overall topics. - - - -Categories - - -Themes - - -Access Control Lists - - -Translations - - diff --git a/doc/en_US/sgml/admin/installation.sgml b/doc/en_US/sgml/admin/installation.sgml deleted file mode 100755 index 46c75de2fc..0000000000 --- a/doc/en_US/sgml/admin/installation.sgml +++ /dev/null @@ -1,530 +0,0 @@ - - - -Installation - -Installation and Configuration of phpGroupWare has never -been easier. Just point and click, yeah it's very easy. - - -Since this is still a beta version we do expect some bugs. -By carefully reading this document you can easly install -phpGroupWare. - - -Requirements - -You will need PHP compiled and installed on your system. -You will also need MySQL or PostgreSQL setup. If you are -planning on using the email system, you will need to have -an IMAP server installed and IMAP support compiled into -PHP. You can have it installed as an Apache module or command -line version, the Apache module is preferred. We will assume -that you are running on a Linux or other Unix system for -these steps. Windows is supported, but there is no documentation -for it currently. - - -In order to check if you have php installed create the file -with your favorite text editor named test.php in your webserver -root directory: - - -<? phpinfo(); ?> - - -Then point your browser to http://yourserverroot/test.php. -You should get a very detailed page describing various options -in php. - - -If you need to to compile php and apache the following links -are good starting points: - - - -http://www.apachetoolbox.com - -A set of scripts to compile and install various modules with -apache. - - - -http://www.linuxhelp.net/guides/ - -The Linux Apache MySQL PHP (LAMP) Guide v2 (latest as of -this writing) - - - -http://www.devshed.com/Server_Side/PHP/SoothinglySeamless - -The Soothing Seemless Setup of Apache, SSL, MySQL, and PHP - - - - - - -Tested Systems - -On Linux 2.2.x, 2.4.x - - - - -PHP 3.0.15+ / PHP 4.0.x - - - - -Apache 1.3.x - - - - -MySQL 3.22.25 or PostgreSQL 7.0.x - - - - -Courier-IMAP 0.33+ and/or qmail 1.03 for POP3 access - - - - -We have reports of it working on Windows NT and OS/2, and using Oracle as the database. - - - -Obtaining and Installing phpgroupware - -Installing from TarBall - -Installing from a TarBall is very easy. The files should -be installed in the webserver directory. Example steps (please -adjust to your server's config): - -
-# cp phpgroupware-version.tar.gz /home/httpd/html -# cd /home/httpd/html -# tar zxf phpgroupware-version.tar.gz -
- -You may have to get required permissions to do this. Contact -your system administrator if you dont have the permission -to write to your webserver directory. - - -You can get current releases of phpGroupWare at the phpGroupware -website. - -
- -Installing from CVS - -Installing from a CVS is fairly easy. The files should be checked out in the webserver directory. -You may have to get required permissions to install from CVS. Contact your system administrator if you dont have the permission to write to your webserver directory. - - -To see a list of applications currently available via CVS, go to [http://savannah.gnu.org/cgi-bin/viewcvs/phpgroupware/] - - -Development Branch in CVS -Follow these steps (please adjust to your server's config): -
-# cd /home/httpd/html -# cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/phpgroupware co phpgroupware -# cd phpgroupware -# cvs co admin addressbook calendar email phpgwapi preferences setup todo notes infolog -
- -or if you prefer using CVSROOT: - -
-# export CVSROOT=':pserver:anoncvs@subversions.gnu.org:/cvsroot/phpgroupware' -# cvs co phpgroupware -# cd phpgroupware -# cvs co admin addressbook calendar email phpgwapi preferences setup todo notes infolog -
-
- -Stable Branch in CVS - -Follow these steps (please adjust to your server's config and the up-to-date stable Version - 0.9.14 at the moment): - -
-# cd /home/httpd/html -# cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/phpgroupware co -r Version-0_9_14-branch phpgroupware -# cd phpgroupware -# cvs co -r Version-0_9_14-branch admin addressbook calendar email phpgwapi preferences setup todo notes infolog -
- -or if you prefer using CVSROOT: - -
-# export CVSROOT=':pserver:anoncvs@subversions.gnu.org:/cvsroot/phpgroupware' -# cvs co -r Version-0_9_14-branch phpgroupware -# cd phpgroupware -# cvs co -r Version-0_9_14-branch admin addressbook calendar email phpgwapi preferences setup todo notes infolog -
-
-
- -Setting File Permissions - -There are a few directories which will need special file permissions set for phpGroupWare to work properly. - - - -Temp Directory (Required) - This can be /tmp for simplicity, but it is required for several apps to function properly. Simply make sure that the webserver can add/delete files in it. - - - -Files Directory (Required) - This can be the files dir under the phpgroupware dir. You will need to give the webserver account owndership of this directory. - -
-(from phpgroupware root) -# mkdir files -# mkdir files/groups -# mkdir files/users -# chown nobody:nobody files (note: this assumes your webserver runs as user nobody, adjust for your installation) -# chmod 700 files -
- - -Root Directory (Not recommended) - If you give the webserver account write access to the phpgroupware directory, then the setup program can create the header.inc.php for you. Otherwise you will need to use the setup program to create it, and then you can manually save it to file. - - - -If you want to do it: - -
-# chown :nobody phpgroupware -# chmod 770 phpgroupware -
- -You may have to get required permissions to do this. Contact your system administrator if you dont have the permission to write to your webserver directory. - -
- -Setup the database - -You need to create empty databases for the setup app to create the tables in. - - -MySQL - -Ensure that you have a working MySQL installation and that MySQL is running. - -
-Mandrake or Redhat: -/etc/rc.d/init.d/mysqld start -other: -/usr/local/mysql/bin/safe_mysqld & -
-Create the phpgroupware Database and give permissions to the phpgroupware user -
-# mysqladmin -u someuser -p create phpgroupware (enter password when prompted) -# mysql -u someuser -p -mysql> grant all on phpgroupware.* to phpgroupware@localhost identified by "somepassword"; -
- - -Make sure you change the password from "somepassword" to your MySQL password in the GRANT statement -For more detailed user documentation on MySQL see their website: [http://www.mysql.com] - -
- - -PostgreSQL - -Ensure that you have a working PostgreSQL installation and that PostgreSQL is running. - -
-Mandrake or Redhat : -/etc/rc.d/init.d/postgresql start -Others: - /usr/bin/postmaster -D /var/lib/pgsql/data -i or /usr/bin/pg_ctl -D /var/lib/pgsq/data start (adjust for your install dirs) -
- -Create the phpgroupware database and user - -
- # /usr/bin/createdb phpgroupware - # /usr/bin/createuser phpgroupware --pwprompt -
- -For more detailed user documentation on Postgresql see their website: [http://www.postgresql.org] - -
-
- - -Setup/Configure phpGroupWare - -configure header file - -Point your browser to http://yourserverroot/phpgroupware/setup/ which will create (or upgrade) the header.inc.php and database tables. Setup will attempt to determine what version of the phpGroupWare databases and header.inc.php you have installed, and upgrade to the most recent version. - - -Most values for the header setup can be left as the default, be sure to enter a password for header admin, and change the password for your DB, and for configuration. - - -*addme* What is mcrypt for? - - -*addme* Explain what the Domain select box is for - - -Once you have finished your configuration, you can have phpGroupWare write it directly if you changed permissions on the directory, or you can download or view it with your browser, and save it in the directory yourself. - - - -Site Configuration - -After header configuration, you will be prompted to enter your Setup/Config Login, or your Header login if you want to go back and change something. - - - -You are advised to backup your existing database before running the setup script to avoid problems! - - - - -You have to press the button, not hit enter on the setup/index.php script - - - -Your first step is to install all application databases, simply click on the Install to have phpGroupWare add all the necessary tables. - - -Next, click on Edit Current Configuration. You will be prompted with a list of configuration options. - -Edit Current Configuration - - - -Prompt -Notes - - - -full path for temporary files -usually /tmp - -full path for user and group files -directory must exist and have user and group directories underneath it. - - -location of phpGroupWare URL - -full domain name or just relative link, no trailing slash - - -hostname of machine - Fully qualified hostname - - -default ftp server - *addme* what is this for? - - -use correct mimetype for FTP - *addme* what might this affect? - - -HTTP proxy server - - -HTTP proxy port - - -Which type of Authentication - - -SQL use SQL table (default) -SQL/SSL use encrypted SQL access -LDAP use LDAP server -mail use mail server (IMAP/POP3) -HTTP use HTTP authentication (.htaccess) -PAM use PAM authentication (not currently working) - - - - -Where to store user accounts - - -SQL store in SQL table -LDAP store in LDAP server -Contacts *addme* what is this? - - - -Minimum account ID - - -Maximum account ID - - -manage homedirectory and loginshell attributes - *addme* what is this? - - -LDAP home directory prefix - - -LDAP default shell - - -Auto create account records? -*addme* what is this? - - -if no ACL records... - - -LDAP host - - -LDAP accounts context - - -LDAP root dn - - -LDAP root password - - -LDAP encryption type - - -app_session encryption -*addme* what is this? - - -title for your site - - -Show powered by logo on - - -Country Selection - - -use pure HTML - - -Use cookies - - -check for new version? -*addme* what does this check, stable version or CVS? - - -cache the phpgw_info array -*addme* what effect does this have on speed, what tradeoffs? - - - -
-
- -Next, select click here to add admin account and optionally, three demo accounts. Fill in the fields on the next screen and uncheck the box at the bottom if you don't want the demo accounts created. Click on Submit when finished. - - -Click Install Languages to add at least one language to the system. On the next screen, select all the languages you want by single clicking them, then click on Install. - - -There shouldn't be anything to do under Manage Applications at this time, this is where you will return after an upgrade to update and table differences. - - -after you're done, click on logout to complete the install and end the session. - -
- -Testing the install - -If your config is setup properly you can now login. Point your browser to the installed location and login with the new admin username and password you created. - - - - -Installing additional applications - - -Once you have the core phpGroupWare install up and running, you may want to download and install additional applications. - - - -You should consult any README or INSTALL files that come with the new application first, as most require you to create additional tables in the database, and add additional translation data to the lang table (typically a file called lang.sql) - - - -You install the new application within the phpGroupWare install tree by copying the application directory into the phpGroupWare install location, and enabling the application through the Administration page. - - - - -For example, this is the process to install the Headlines application: (see [http://apps.phpgroupware.org] for more applications) - - - -Download the .tar.gz file for the application, or check out the source with cvs with - -
-# export CVSROOT=':pserver:anonymous@subversions.gnu.org:/cvsroot/phpgroupware' -# cvs login (just hit enter if prompted for a password) -# cvs co headlines -
- -Move the headlines directory into your phpGroupWare install directory. - - - -Log into phpGroupWare as an administrative user, and go to the Administration page. - - - -In the first section, choose the Applications link. - - - -Click on add and fill in the form. - - - -Application name should be identical to the name of the directory you moved into the phpGroupWare install. In this case, use headlines. - - - -Application title is shown in the navigation bar and other places to refer to the new application. Enter Headlines for this example. - - - -Enabled can be used to disable an application for all users temporarily. You should normally check the box to enable the application. - - - -Back in the Administration page, you need to enable the application for specific users or user groups by editing them, and checking the new Headlines box that appears in the middle of the account editing page. - - - -Once you have added the Headlines app to your account, you should see a Headlines entry in the Administration and Preferences pages, and there should be an icon for the Headlines application in the navigation bar. - - - -Once you enable a few of the Headlines sites through the Administration page link, you should see headlines grabbed from the sites you selected when you click on the Headlines icon in the navigation bar. - -
-
- - -Troubleshooting - -deb package of 4.0.6 has a problem with cookies, the setup program uses cookies -See the FAQ - - -
diff --git a/doc/en_US/sgml/admin/introduction.sgml b/doc/en_US/sgml/admin/introduction.sgml deleted file mode 100755 index 2f47b363c8..0000000000 --- a/doc/en_US/sgml/admin/introduction.sgml +++ /dev/null @@ -1,25 +0,0 @@ - - - -Introduction - -What is phpGroupWare - -phpGroupWare is a multi-user web-based suite written in PHP. It contains many applications, including a Calendar, email package, contact database and project manager. It also includes an extensive API for writing new applications. - - - - -Acknowledgements - -I would like to thank the many authors of phpGroupWare and it's applications for creating such a useful and extensible product. I would also like to thank the authors of previous version of the documentation, including Dan Kuykendall, Joseph Engo and Darryl VanDorp and the authors of the LDP Author guide for teaching me how to use DocBook. - - - - -Notes - -This document is based upon the current CVS release, where possible I included notes relating to the current stable release (0.9.12). This is a work in progress, please email any corrections to phpgroupware-docteam@gnu.org. - - - diff --git a/doc/en_US/sgml/admin/notes.sgml b/doc/en_US/sgml/admin/notes.sgml deleted file mode 100755 index 4e3128e8fe..0000000000 --- a/doc/en_US/sgml/admin/notes.sgml +++ /dev/null @@ -1,4 +0,0 @@ - - -Notes - diff --git a/doc/en_US/sgml/admin/performance.sgml b/doc/en_US/sgml/admin/performance.sgml deleted file mode 100755 index b5bf1a8792..0000000000 --- a/doc/en_US/sgml/admin/performance.sgml +++ /dev/null @@ -1,28 +0,0 @@ - - -Performance Tuning - -Linux - - -Apache - - -PHP - - -Database - -When phpgroupware is used by 5+ users, the number of connections to the backend grows very fast toward it's limits. - -A patch is available for 0.9.12 to allow for non-persistent connections. This patch adds to the header managing page to allow for non-persistent connections. It's only made for mysql, postgresql and oracle, but should be portable. - - -The patch is available at [http://karlsbakk.net/dev/phpgw/persistent-connections- choice.patch] - - - - -phpGroupWare - - diff --git a/doc/en_US/sgml/admin/phpGroupWare-Admin-Manual.sgml b/doc/en_US/sgml/admin/phpGroupWare-Admin-Manual.sgml deleted file mode 100755 index d825be2441..0000000000 --- a/doc/en_US/sgml/admin/phpGroupWare-Admin-Manual.sgml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - -]> - - - - -phpGroupWare Administration Manual - - -BrandonNeill - - -Brandon Neill just wanted to figure out how to use the program and decided to write a manual as an excuse to bug the developers. - - - - - - -$Revision$, $Date$ - - -This Manual is for administrators of phpGroupware. - - - -&introduction -&installation -&upgrading -&general -&calendar -&email -&addressbook -¬es -&todo -&project -&filemanager -&security -&performance - - diff --git a/doc/en_US/sgml/admin/project.sgml b/doc/en_US/sgml/admin/project.sgml deleted file mode 100755 index 3b6ab85619..0000000000 --- a/doc/en_US/sgml/admin/project.sgml +++ /dev/null @@ -1,4 +0,0 @@ - - -Project - diff --git a/doc/en_US/sgml/admin/security.sgml b/doc/en_US/sgml/admin/security.sgml deleted file mode 100755 index d744db5868..0000000000 --- a/doc/en_US/sgml/admin/security.sgml +++ /dev/null @@ -1,4 +0,0 @@ - - -Security - diff --git a/doc/en_US/sgml/admin/todo.sgml b/doc/en_US/sgml/admin/todo.sgml deleted file mode 100755 index 13b0f722af..0000000000 --- a/doc/en_US/sgml/admin/todo.sgml +++ /dev/null @@ -1,4 +0,0 @@ - - -Todo - diff --git a/doc/en_US/sgml/admin/upgrading.sgml b/doc/en_US/sgml/admin/upgrading.sgml deleted file mode 100755 index b06e6dcf92..0000000000 --- a/doc/en_US/sgml/admin/upgrading.sgml +++ /dev/null @@ -1,17 +0,0 @@ - - -Upgrading - -Upgrading from CVS - -Follow these steps to upgrade a CVS install (please adjust to your server's config): - -
-# cd /home/httpd/html/phpgroupware -# cvs update -dP -
- -After updating from CVS, be sure to return to the configuration page [/setup] and update any necessary tables. - -
-
diff --git a/doc/en_US/sgml/user/Makefile b/doc/en_US/sgml/user/Makefile deleted file mode 100644 index dd7c3a0e78..0000000000 --- a/doc/en_US/sgml/user/Makefile +++ /dev/null @@ -1,68 +0,0 @@ -# Makefile for phpGroupware phpGroupWare-User-Manual -# Written by Brandon Neill -# Copyright 2002 -INSTDIR ?= ../.. - -all: html ps txt - -ps: phpGroupWare-User-Manual.sgml - sgmltools -b ps phpGroupWare-User-Manual.sgml - @touch ps - -txt: phpGroupWare-User-Manual.sgml - sgmltools -b txt phpGroupWare-User-Manual.sgml - @touch txt - -html: phpGroupWare-User-Manual.sgml - sgmltools -b html phpGroupWare-User-Manual.sgml - @touch html - -install: - @if [ -e phpGroupWare-User-Manual.txt ]; \ - then \ - echo "Moving phpGroupWare-User-Manual.txt to $(INSTDIR)"; \ - mv phpGroupWare-User-Manual.txt $(INSTDIR)/; \ - fi - -@if [ -e phpGroupWare-User-Manual ]; \ - then \ - if [ ! -d $(INSTDIR)/html/user ]; \ - then \ - mkdir -p $(INSTDIR)/html/user; \ - else \ - rm $(INSTDIR)/html/user/*.html; \ - fi; \ - echo "Tidying HTML files and moving them to $(INSTDIR)/html/user"; \ - echo "You may get an ignored error here, it's OK";\ - for file in `ls -1 phpGroupWare-User-Manual`; \ - do \ - tidy -i -clean < phpGroupWare-User-Manual/$$file >$(INSTDIR)/html/user/$$file 2> /dev/null; \ - done; \ - rm -r phpGroupWare-User-Manual; \ - fi - @if [ -e phpGroupWare-User-Manual.ps ]; \ - then \ - echo "Moving phpGroupWare-User-Manual.ps to $(INSTDIR)/ps"; \ - if [ ! -d $(INSTDIR)/ps ]; \ - then \ - mkdir $(INSTDIR)/ps; \ - fi; \ - mv phpGroupWare-User-Manual.ps $(INSTDIR)/ps; \ - fi - -clean: - @if [ -e phpGroupWare-User-Manual.txt ];\ - then \ - rm phpGroupWare-User-Manual.txt ;\ - fi - -rm txt - @if [ -e phpGroupWare-User-Manual ]; \ - then \ - rm -r phpGroupWare-User-Manual; \ - fi - -rm html - @if [ -e phpGroupWare-User-Manual.ps ]; \ - then \ - rm phpGroupWare-User-Manual.ps; \ - fi - -rm ps - diff --git a/doc/en_US/sgml/user/addressbook.sgml b/doc/en_US/sgml/user/addressbook.sgml deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/doc/en_US/sgml/user/calendar.sgml b/doc/en_US/sgml/user/calendar.sgml deleted file mode 100644 index 13df0e554c..0000000000 --- a/doc/en_US/sgml/user/calendar.sgml +++ /dev/null @@ -1,80 +0,0 @@ - - -Calendar - - -A searchable daily,weekly, monthly calendar/scheduling applicaiton with alerts for high priority events. - - -Viewing - -To view your calendar, click on the calendar icon in the menu. This will bring you to the default view selected in your preferences. You can click one of the six icons to change your calendar view. - - - -Day - - -Current day is displayed, broken down into time increments. Increment and working hours can be set in preferences. - - - - -Week - - -Current week is displayed. Start day of week can be set in preferences. - - - - -Month - - -Current month is displayed. - - - - -Year - - -Current year is displayed. - - - - -Planner - - -I don't know yet - - - - - Daily Matrix View - - -Displays a selection of users and their available times for a given date range - - - - - - -Adding an entry - - - - -Editing an entry - - - - -Preferences - - - - - diff --git a/doc/en_US/sgml/user/email.sgml b/doc/en_US/sgml/user/email.sgml deleted file mode 100644 index 2f540c5c0a..0000000000 --- a/doc/en_US/sgml/user/email.sgml +++ /dev/null @@ -1,7 +0,0 @@ - - -Email - - - - diff --git a/doc/en_US/sgml/user/filemanager.sgml b/doc/en_US/sgml/user/filemanager.sgml deleted file mode 100644 index 2050aa0eac..0000000000 --- a/doc/en_US/sgml/user/filemanager.sgml +++ /dev/null @@ -1,7 +0,0 @@ - - -File Manager - - - - diff --git a/doc/en_US/sgml/user/general.sgml b/doc/en_US/sgml/user/general.sgml deleted file mode 100644 index f15a45d729..0000000000 --- a/doc/en_US/sgml/user/general.sgml +++ /dev/null @@ -1,31 +0,0 @@ - - -General - - -Here will go an overview of categories and other overall topics. - - - -Categories - - - - -Templates and Themes - - - - -Access Control Lists - - - - -Translations - - - - - - diff --git a/doc/en_US/sgml/user/introduction.sgml b/doc/en_US/sgml/user/introduction.sgml deleted file mode 100644 index 7848a2c4c5..0000000000 --- a/doc/en_US/sgml/user/introduction.sgml +++ /dev/null @@ -1,33 +0,0 @@ - - -Introduction - -What is phpGroupWare - -phpGroupWare is a multi-user web-based suite written in PHP. It contains many applications, including a Calendar, email package, contact database and project manager. It also includes an extensive API for writing new applications. - - - - -About the author - - -Brandon Neill just wanted to figure out how to use the program and decided to write a manual as an excuse to bug the developers. - - - -Acknowledgements - -I would like to thank the many authors of phpGroupWare and it's applications for creating such a useful and extensible product. I would also like to thank the authors of previous version of the documentation and the authors of the LDP Author guide for teaching me how to use DocBook. - - - -Notes - -This document is based upon the current CVS release, where possible I included notes relating to the current stable release (0.9.12). This is a work in progress, please email any corrections to bneill@yahoo.com. - - - - - - diff --git a/doc/en_US/sgml/user/notes.sgml b/doc/en_US/sgml/user/notes.sgml deleted file mode 100644 index 88ff610393..0000000000 --- a/doc/en_US/sgml/user/notes.sgml +++ /dev/null @@ -1,7 +0,0 @@ - - -Notes - - - - diff --git a/doc/en_US/sgml/user/phpGroupWare-User-Manual.sgml b/doc/en_US/sgml/user/phpGroupWare-User-Manual.sgml deleted file mode 100644 index 9d53b3041a..0000000000 --- a/doc/en_US/sgml/user/phpGroupWare-User-Manual.sgml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - -]> - - - - -phpGroupWare User's Manual - -BrandonNeill - -$Revision$, $Date$ - - - -This Manual is for users of phpGroupware. - - - - -&introduction -&general -&calendar -&email -&addressbook -¬es -&todo -&project -&filemanager - - diff --git a/doc/en_US/sgml/user/project.sgml b/doc/en_US/sgml/user/project.sgml deleted file mode 100644 index 4846bb8c0e..0000000000 --- a/doc/en_US/sgml/user/project.sgml +++ /dev/null @@ -1,6 +0,0 @@ - - -Project - - - diff --git a/doc/en_US/sgml/user/todo.sgml b/doc/en_US/sgml/user/todo.sgml deleted file mode 100644 index 299baf539a..0000000000 --- a/doc/en_US/sgml/user/todo.sgml +++ /dev/null @@ -1,267 +0,0 @@ - - -Todo - -A ToDo list application featuring the ability to add project categories and sub-categories, add ToDo projects and sub-projects, and a gannt chart type matrix view for pending projects. - - -Viewing - -To view your ToDo List, click on the To Do list icon in the menu. This will bring you to the To Do list main page. From this page you can do the following: - - - -Category - - -Choose a category to view. - - - - - -Show - - -Choose to view all jobs, your jobs, or your private jobs. - - - - - -Search - - -Search jobs in the ToDo list. - - - - - -Status - - -This is the first column in the table of results. By clicking the "Status" link you can sort the ToDo list results by their completion status (ascending order). Clicking this link again will reverse the sort (descending order). - - - - - -Urgency - - -This is the second column in the table of results. By clicking the "Urgency" link you can sort the ToDo list results by their Urgency (ascending order). Clicking this link again will reverse the sort (descending order). - - - - - -Title - - -This is the third column in the table of results. By clicking the "Title" link you can sort the ToDo list results by their title (ascending order). Clicking this link again will reverse the sort (descending order). - - - - - -Start Date - - -This is the fourth column in the table of results. By clicking the "Start date" link you can sort the ToDo list results by their start date (ascending order). Clicking this link again will reverse the sort (descending order). - - - - - -End Date - - -This is the fifth column in the table of results. By clicking the "End date" link you can sort the ToDo list results by their ending date (ascending order). Clicking this link again will reverse the sort (descending order). Dates for overdue tasks will be displayed in red. - - - - - -Created By - - -This is the sixth column in the table of results. By clicking the "Created By" link you can sort the ToDo list results by task author (ascending order). Clicking this link again will reverse the sort (descending order). - - - - - -Add sub - - -This is the seventh column in the table of results. By clicking the "Add sub" link on a task or sub-task in the table of results, you can add a sub-task to that particular item. - - - - - -View - - -This is the eighth column in the table of results. By clicking the "View" link on a task or sub-task in the table of results, you can view the details of the task. - - - - - -Edit - - -This is the ninth column in the table of results. By clicking the "Edit" link on a task or sub-task in the table of results, you can edit the details of the task. - - - - - -Delete - - -This is the tenth column in the table of results. By clicking the "Delete" link on a task or sub-task in the table of results, you can delete the task. - - - - - -Add - - -Clicking the "Add" button will allow you to add a task to the ToDo list. - - - - - - View matrix of actual month - - -Clicking the "View matrix of actual month" link will display a gannt chart type matrix view of the current month's ToDo list entries. - - - - - - - -Adding - -After clicking the "Add" button on the task results page, you will be presented with the following options on the "Add Main Project" page: - - - -Title - - -Enter a title for the task to be added. - - - - - -Description - - -Enter a description for the task to be added. - - - - - -Parent Project - - -Choose a parent project for the task to be added. - - - - - -Start Date - - -Choose a starting date for the task to be added. If the starting date will be today, simply check the "select for today" checkbox. - - - - - -End Date - - -Choose a Ending Date for the task to be added. Another option is to input the number of days from the task start date in the "days from startdate" input box. - - - - - -Completed - - -Use the drop-down completed box to mark the approximate completion status for the task to be added. - - - - - - -Urgency - - -Use the drop-down Urgency box to choose between low, normal, and high urgency settings for the task to be added. - - - - - -Private - - -Check the "Private" checkbox to make this task viewable only by you. - - - - - -Category - - -Choose a category for the task to be added. - - - - - -Submit - - -Click the "Submit" button to add this task to the ToDo list. - - - - - -Clear Form - - -Click the "Clear Form" button to reset the form to its default (empty) state. - - - - - - - - -Add sub - -After clicking the "Add sub" link on the task results page, you will be presented with the following options on the "Add sub project" page: - - - - - diff --git a/phpgwapi/doc/create_ramdisk.php.txt b/phpgwapi/doc/create_ramdisk.php.txt deleted file mode 100644 index bbe0916c06..0000000000 --- a/phpgwapi/doc/create_ramdisk.php.txt +++ /dev/null @@ -1,87 +0,0 @@ - * - * -------------------------------------------- * - * This program is free software; you can redistribute it and/or modify it * - * under the terms of the GNU General Public License as published by the * - * Free Software Foundation; either version 2 of the License, or (at your * - * option) any later version. * - \**************************************************************************/ - - /* $Id$ */ - - /* !!! WARNING !!! - ** This is highley experimental! Do NOT run it unless you know what you are doing! - ** You can serious screaw things up! - ** - ** Requirements: - ** - Must be run as root - ** - You need to have RAM disk support complied into the kernel - ** - You have to have the CGI binary for PHP - ** - This ONLY works with Linux - ** - The 2.2 kernel is limited to 20 RAM disks, so you will have to cut down on what you copy over - ** - I wouldn't run this on a server with less then 196 MB of RAM. If it has less, preformance - ** will only decrease. Since proccess will need to swap out to disk. - ** - ** The phpGroupWare development team does not support this program in anyway. If it breaks - ** or messes up your system, don't email us. Don't submit bug reports. If you do find ways to make - ** it better, please submit patches directly to me. jengo@phpgroupware.org - */ - - $debug = True; - - // Locations of your perminate copy, you will need it to be setup already - define('HARD_COPY','/home/jengo/public_html'); - // Where you want your install to be - define('RAM_COPY','/var/www/html'); - - function command($command) - { - global $debug; - - if ($debug) - { - echo $command . "\n"; - } - else - { - system($command); - } - } - - command('mke2fs /dev/ram0 200'); - command('mkdir ' . RAM_COPY . '/phpgroupware'); - command('mount -t ext2 /dev/ram0 ' . RAM_COPY . '/phpgroupware'); - command('cp ' . HARD_COPY . '/phpgroupware/* ' . RAM_COPY . '/phpgroupware'); - - $ram_drive_num = 1; - $dh = opendir(HARD_COPY . '/phpgroupware/'); - while ($file = readdir($dh)) - { - // The 2.2 kernel can only have 20 ram disks - if ($ram_drive_num == 21) - { - exit; - } - - if ($file != '.' && $file != '..' && $file != 'CVS' && $file != 'phpgroupware' && is_dir($file)) - { - $_du_string = 'du -s ' . HARD_COPY . '/phpgroupware/' . $file; - $_du = `$_du_string`;; - preg_match('/(\w+)\s/',$_du,$du); - $du_size = ereg_replace(' ','',$du[0]); - - // Make it slighty larger, so the files copy correctly - $du_size = $du_size + 400; - - command('mke2fs /dev/ram' . $ram_drive_num . ' ' . $du_size); - command('mkdir ' . RAM_COPY . '/phpgroupware/' . $file); - command('mount -t ext2 /dev/ram' . $ram_drive_num . ' ' . RAM_COPY . '/phpgroupware/' . $file); - command('cp -R ' . HARD_COPY . '/phpgroupware/' . $file . ' ' . RAM_COPY . '/phpgroupware/' . $file); - - $ram_drive_num++; - echo "\n"; - } - } diff --git a/phpgwapi/doc/etiquette.txt b/phpgwapi/doc/etiquette.txt deleted file mode 100644 index 774ef46c46..0000000000 --- a/phpgwapi/doc/etiquette.txt +++ /dev/null @@ -1,70 +0,0 @@ -This is a preliminary etiquette doc for eGroupWare. Please check it from time to -time for updates: - -phpGroupWare is a large project, with possibly over 50 developers at the time -of this writing. In its current location, it is impossible to restrict access -for each developer to a particular module or application. As such, it is -important that some basic rules be followed when developing in CVS: - -1. Many of the developers frequent the IRC channel #egroupware on - irc.freenode.net. Please take the time to drop by and introduce yourself. - -2. Please see the coding_standard.txt document in this folder for some basic - guidelines for code formatting. PHP can be interpreted in many forms, - and this document outlines our preference to ensure readability and - compatibility. - -3. If you want to begin some work on an existing app please consult the - primary developer for the application first. Most of the files will - contain some type of identification and/or contact information in the - head of each file. - -4. If you are unable to contact the author, please contact at least one of the - project leads [ ralf, lars, reinerj ] or a core developer. - -5. If you have just joined the project, or have always kept to your own - application, etc., then please exercise caution when committing changes - in the phpgwapi [the API], admin, and preferences modules. These can - affect the operation of all applications. In particular, work done in - the API is typically allowed only with prior consent from one of the - project leads. In other words, work done here without some notification - and authorization is very risky to your continued involvement with this - project ;) - -6. If you are working in the API, or on some other application which could - affect the usability for users and developers, please be sure to fully - test your changes. It is recommended that you visit a large sampling of - applications to ensure that they still work as expected after your - changes. This could include the functioning of one application or the - API against mysql AND pgsql, at least. It could also affect the function - of an application that uses LDAP instead of SQL for storage and - retrieval. - -7. Do not write table update scripts that alter content or structure of the - API or of another application's tables. - -8. Before importing a new application, or adding many files | directories to - existing modules, please contact one of the project leads [ ralf, lars, - reinerj ]. - -9. Please do not import a new application that does not have some basic - functionality in place or at least a description and basic documentation. - -10. If you do not have an original icon for your app, please do not import a - copy from another application icon. The API should insert a default - until a new one is created. The size of icons should be 31x31 for all but - the idsociety template. Do not put a 31x31 color icon in the idsociety - template. - -11. Basically, all template files are located in the app_name/templates/default/ - directory. Please do only commit template files to other app_name/templates/ - _layout_/directories if they _differ_ from the default version. The same is - valid for images. All application images are located in the app_name/templates/ - default/images directory. Please do only commit images to other than the default - directory if they _differ_ from the default version. Most of the applications - do not need other templates directories than default and idsociety. The idsociety - templates directory should only contain the images dir with the navbar and - navbar_over icon for the idsociety layout. - Please avoid to have files twice in your application directory. - - Thanks diff --git a/phpgwapi/doc/index.html b/phpgwapi/doc/index.html deleted file mode 100644 index 768b679a8e..0000000000 --- a/phpgwapi/doc/index.html +++ /dev/null @@ -1,1675 +0,0 @@ - - - - - -phpGroupWare Application Development - - - - - - - - - - - - - - - -next_inactive -up -previous -
-
-
- - -

- -

- -

- -

-

eGroupWare Application Development

-

Dan Kuykendall <dan@kuykendall.org>

-

v0.9 29 September 2000

-
-This document explains eGroupWare's infrastructure and API, -along with what is required to integrate applications into it. - -
-
- -

-Contents -

- - - - - -

- -

-1 Introduction -

- -

-eGroupWare is a web based groupware application framework (API), for -writing applications. Integrated applications such as email, calendar, -todo list, address book, and file manager are included. eGroupWare -is a fork of phpGroupWare, for which the original version of this -document was written. - -

- -

-1.1 Overview of application writing -

- -

-We have attempted to make writing applications for eGroupWare as painless -as possible. We hope any pain and suffering is caused by making your -application work, but not dealing with eGroupWare itself. - -

- -

-1.2 What does the eGroupWare API provide? -

- -

-The eGroupWare API handles session management, user/group management, -has support for multiple databases, using either PHPLIB or ADODB database -abstraction methods, we support templates using the PHPLIB Templates -class, a file system interface, and even a network i/o interface. - -

-On top of these standard functions, eGroupWare provides several functions -to give you the information you need about the users environment, -and to properly plug into eGroupWare. - -

- -

-2 Guidelines -

- -

- -

-2.1 Requirements -

- -

-These guidelines must be followed for any application that wants considered -for inclusion into eGroupWare: - -

- -

- -

- -

-2.2 Writing/porting your application -

- -

- -

-Include files -

- -

-Each PHP page you write will need to include the header.inc.php along -with a few variables. -
-This is done by putting this at the top of each PHP page.

-  <?php
-
-$GLOBALS['phpgw_info']['flags']['currentapp'] = 'appname';
-
-include('../header.inc.php');
-  ?>
-
Of course change application name to fit. -
-This include will provide the following things: - -

- -

- -

- -

-3 Installing your application -

- -

- -

-3.1 Overview -

- -

-It is fairly simple to add and delete applications to/from eGroupWare. - -

- -

-3.2 Automatic features -

- -

-To make things easy for developers we go ahead and load the following -files. - -

- -

- -

- -

-3.3 Adding files, directories and icons. -

- -

-You will need to create the following directories for your code -
(replace 'appname' with your application name) -
-

-`-appname - -

-  |-inc - -

-  |   |-functions.inc.php - -

-  |  |-header.inc.php - -

-  |  |-hook_preferences.inc.php - -

-  |  |-hook_admin.inc.php - -

-  |  `-footer.inc.php - -

-  `-templates - -

-  |   `-default - -

- -

-
-

-

-
-

- -

-3.4 Making eGroupWare aware of your application -

- -

-Please see the documentation in the setup/doc directory for information -on integrating into eGroupWare. This is very important since the steps -for database table setup and modification discussed there must be -followed. - -

- -

-3.5 Hooking into Administration page -

- -

-When a user goes to the Administration page, it starts appname/inc/hook_admin.inc.php -for each application that is enabled, in alphabetical order of application -title. If the file exists, it is include()d in the hopes it will display -a selection of links to configure that application. - -

-Simple Example:

-<?php
-
-$img = '/' . $appname . '/images/navbar.gif';
-  section_start('My Application',$img);
-  echo '<a HREF="' . $GLOBALS['phpgw']->link('myAdminPage.php') . '">';
-  echo lang('Change myApp settings') . '</a>';
-  section_end();
-?>
-
Look at headlines/inc/hook_admin.inc.php and admin/inc/hook_admin.inc.php -for more examples. - -

-Things to note: - -

- -

-The standard $GLOBALS['phpgw'] and $GLOBALS['phpgw_info'] -variables are in-scope, as is $appname which corresponds to the application -name in the path. - -

-There are 2 functions to coordinate the display of each application's -links, section_start() and section_end() - -

- -

-section_start -

- -

-section_start($title,$icon_url) starts the section for your application. -$title is passed through lang() for you. $icon_url should be page-relative -to admin/index.php or an absolute URL. - -

- -

-section_end -

- -

-section_end() closes the section that was started with section_start(). - -

- -

-3.6 Hooking into Preferences page -

- -

-The mechanism to hook into the preferences page is identical to the -one used to hook into the administration page, however it looks for -appname/inc/hook_preferences.inc.php instead of appname/inc/hook_admin.inc.php. -The same functions and variables are defined. - -

- -

-4 Infrastructure -

- -

- -

-4.1 Overview -

- -

-eGroupWare attempts to provide developers with a sound directory structure -to work from. -
-The directory layout may seem complex at first, but after some use, -you will see that it is designed to accommodate a large number of -applications and functions. - -

- -

-4.2 Directory tree -

- -

-.-appname - -

-|   |-inc - -

-|   |   |-functions.inc.php - -

-|   |   |-header.inc.php - -

-|   |   |-hook_preferences.ini.php - -

-|   |   |-hook_home.inc.php - -

-|   |   `-footer.inc.php - -

-|   |-manual - -

-|   |-setup - -

-|   |   |-tables_baseline.inc.php - -

-|   |   |-tables_current.inc.php - -

-|   |   |-tables_update.inc.php - -

-|   |   |-setup.inc.php - -

-|   `-templates - -

-|   |   `-default - -

-|   |      `-images - -

-|   |        `-navbar.png - -

-|   |-preferences.php - -

-|-docs (installation docs) - -

-|-files - -

-|   |-groups - -

-|   `-users - -

-`-phpgwapi - -

-   |-cron (egroupware's optional daemons) - -

-   |-doc (developer docs) - -

-   |-inc - -

-   |   |-class.phpgw.inc.php - -

-   |   |-class.common.inc.php - -

-   |   `-etc.. - -

-   |-manual - -

-   |-setup - -

-   |   |-tables_baseline.inc.php - -

-   |   |-tables_current.inc.php - -

-   |   |-tables_update.inc.php - -

-   |   |-setup.inc.php - -

-   |-templates - -

-   |   |-default - -

-   |   |   `-images - -

-   |   |   |-home.gif - -

-   |   |   `-preferences.gif - -

-   |   `-verilak - -

-   |      `-images - -

-           |-home.gif - -

-           `-preferences.gif - -

-   `-themes - -

-      `-default.theme - -

- -

-
-

-

-
-

- -

-4.3 Translations -

- -

-The translations are now being done thru the database, and will be -configurable to use other mechanisms. - -

-The application, developer_tools, provides developers/translators -a nice GUI for building and updating translations. - -

- -

-5 The API -

- -

- -

-5.1 Introduction -

- -

-eGroupWare attempts to provide developers with a useful API to handle -common tasks. - -

-To do this we have created a multi-dimensional class $GLOBALS['phpgw']. - -

-This allows for terrific code organization, and help developers easily -identify the file that the function is in. All the files that are -part of this class are in the inc/core directory and are named to -match the sub-class. - -

-Example: $GLOBALS['phpgw']->send->msg() is in the inc/phpgwapi/phpgw_send.inc.php -file. - -

- -

-5.2 Basic functions -

- -

- -

-$GLOBALS['phpgw']->link -

- -

-$GLOBALS['phpgw']->link($url) -
-Add support for session management. ALL links must use this, that -includes href's form actions and header location's. - -

-If you are just doing a form action back to the same page, you can -use it without any parameters. - -

-This function is right at the core of the class because it is used -so often, we wanted to save developers a few keystrokes. Example: -

-<form name="copy" method="post" action="<?php echo $GLOBALS['phpgw']->link();?>">
-/* If session management is done via passing url parameters */
-/* The the result would be */
-/* <form name="copy" method="post" action="somepage.php?sessionid=87687693276?kp3=kjh98u80"> */
-
- -

- -

-5.3 Application Functions -

- -

- -

-$GLOBALS['phpgw']->common->phpgw_header(); -

- -

-$GLOBALS['phpgw']->phpgw_header() -
-Print out the start of the HTML page, including the navigation bar -and includes appname/inc/header.php - -

- -

-$GLOBALS['phpgw']->common->phpgw_footer(); -

- -

-$GLOBALS['phpgw']->phpgw_footer() -
-Prints the system footer, and includes appname/inc/footer.php - -

- -

-$GLOBALS['phpgw']->common->appsession(); -

- -

-$GLOBALS['phpgw']->common->appsession($data) -
-Store important information session information that your application -needs. -
$GLOBALS['phpgw']->appsession will return the value of your -session data is you leave the parameter empty [i.e. $GLOBALS['phpgw']->appsession(``'')], -otherwise it will store whatever data you send to it. -
-You can also store a comma delimited string and use explode() to -turn it back into an array when you receive the value back. - -

-Example:

-  $GLOBALS['phpgw']->common->appsession('/path/to/something');
-  echo "Dir: " . $GLOBALS['phpgw']->common->appsession();
-
- -

- -

-5.4 File functions -

- -

- -

-Please also see the phpgwapi/doc/vfs directory for additional VFS -class documentation -

- -

- -

-$GLOBALS['phpgw']->vfs->read_file -

- -

-$GLOBALS['phpgw']->vfs->read_file($file) -
-Returns the data from $file. -
-You must send the complete path to the file. -
-Example:

-$data = $GLOBALS['phpgw']->vfs->read_file('/some/dir/to/file.txt');
-
- -

- -

-$GLOBALS['phpgw']->vfs->write_file -

- -

-$GLOBALS['phpgw']->vfs->write_file($file, $contents) -
-Write data to $file. -
-You must send the complete path to the file. -
-Example:

-$data = $GLOBALS['phpgw']->vfs->write_file("/some/dir/to/file.txt");
-
- -

- -

-$GLOBALS['phpgw']->vfs->read_userfile -

- -

-$GLOBALS['phpgw']->vfs->read_userfile($file) -
-Returns the data from $file, which resides in the users private -dir. -
-Example:

-$data = $GLOBALS['phpgw']->vfs->read_userfile("file.txt");
-
- -

- -

-$GLOBALS['phpgw']->vfs->write_userfile -

- -

-$GLOBALS['phpgw']->write_userfile($file, $contents) -
-Writes data to $file, which resides in the users private dir. -
-Example:

-$data = $GLOBALS['phpgw']->vfs->write_userfile("file.txt");
-
- -

- -

-$GLOBALS['phpgw']->vfs->list_userfiles -

- -

-$GLOBALS['phpgw']->vfs->list_userfiles() -
-Returns an array which has the list of files in the users private -dir. -
-Example:

-$filelist = array();
-$filelist = $GLOBALS['phpgw']->vfs->list_userfiles();
-
- -

- -

-5.5 Email/NNTP Functions -

- -

- -

-$GLOBALS['phpgw']->send->msg -

- -

-$GLOBALS['phpgw']->send->msg($service, $to, $subject, $body, -$msgtype, $cc, $bcc) -
-Send a message via email or NNTP and returns any error codes. -
-Example:

-$to = "someuser@domain.com";
-$subject = "Hello buddy";
-$body = "Give me a call\n Been wondering what your up to.";
-$errors = $GLOBALS['phpgw']->send->msg("email", $to, $subject, $body);
-
- -

- -

-6 Configuration Variables -

- -

- -

-6.1 Introduction -

- -

-eGroupWare attempts to provide developers with as much information -about the user, group, server, and application configuration as possible. - -

-To do this we provide a multi-dimensional array called '$GLOBALS['phpgw_info'][]', -which includes all the information about your environment. - -

-Due to the multi-dimensional array approach. getting these values -is easy. - -

-Here are some examples:

-  <?php
-  // To do a hello username
-  echo "Hello " . $GLOBALS['phpgw_info']['user']['fullname'];
-  //If username first name is John and last name is Doe, prints: 'Hello John Doe'
-  ?>
-  <?php
-  // To find out the location of the imap server
-  echo "IMAP Server is named: " . $GLOBALS['phpgw_info']['server']['imap_server']; 
-  //If imap is running on localhost, prints: 'IMAP Server is named: localhost'
-  ?>
-
- -

- -

-6.2 User information -

- -

-$GLOBALS['phpgw_info'][``user''][``userid''] -= The user ID. -

- - -

-$GLOBALS['phpgw_info'][``user''][``sessionid''] -= The session ID -

- - -

-$GLOBALS['phpgw_info'][``user''][``theme''] -= Selected theme -

- - -

-$GLOBALS['phpgw_info'][``user''][``private_dir''] -= Users private dir. Use eGroupWare core functions for access to the -files. -

- - -

-$GLOBALS['phpgw_info'][``user''][``firstname''] -= Users first name -

- - -

-$GLOBALS['phpgw_info'][``user''][``lastname''] -= Users last name -

- - -

-$GLOBALS['phpgw_info'][``user''][``fullname''] -= Users Full Name -

- - -

-$GLOBALS['phpgw_info'][``user''][``groups''] -= Groups the user is a member of -

- - -

-$GLOBALS['phpgw_info'][``user''][``app_perms''] -= If the user has access to the current application -

- - -

-$GLOBALS['phpgw_info'][``user''][``lastlogin''] -= Last time the user logged in. -

- - -

-$GLOBALS['phpgw_info'][``user''][``lastloginfrom''] -= Where they logged in from the last time. -

- - -

-$GLOBALS['phpgw_info'][``user''][``lastpasswd_change''] -= Last time they changed their password. -

- - -

-$GLOBALS['phpgw_info'][``user''][``passwd''] -= Hashed password. -

- - -

-$GLOBALS['phpgw_info'][``user''][``status''] -= If the user is enabled. -

- - -

-$GLOBALS['phpgw_info'][``user''][``logintime''] -= Time they logged into their current session. -

- - -

-$GLOBALS['phpgw_info'][``user''][``session_dla''] -= Last time they did anything in their current session -

- - -

-$GLOBALS['phpgw_info'][``user''][``session_ip''] -= Current IP address -

- - -

- -

-6.3 Group information -

- -

-$GLOBALS['phpgw_info'][``group''][``group_names''] -= List of groups. -

- - -

- -

-6.4 Server information -

- -

-$GLOBALS['phpgw_info'][``server''][``server_root''] -= Main installation directory -

- - -

-$GLOBALS['phpgw_info'][``server''][``include_root''] -= Location of the 'inc' directory. -

- - -

-$GLOBALS['phpgw_info'][``server''][``temp_dir''] -= Directory that can be used for temporarily storing files -

- - -

-$GLOBALS['phpgw_info'][``server''][``files_dir''] -= Directory er and group files are stored -

- - -

-$GLOBALS['phpgw_info'][``server''][``common_include_dir''] -= Location of the core/shared include files. -

- - -

-$GLOBALS['phpgw_info'][``server''][``template_dir''] -= Active template files directory. This is defaulted by the server, -and changeable by the user. -

- - -

-$GLOBALS['phpgw_info'][``server''][``dir_separator''] -= Allows compatibility with WindowsNT directory format, -

- - -

-$GLOBALS['phpgw_info'][``server''][``encrpytkey''] -= Key used for encryption functions -

- - -

-$GLOBALS['phpgw_info'][``server''][``site_title''] -= Site Title will show in the title bar of each webpage. -

- - -

-$GLOBALS['phpgw_info'][``server''][``webserver_url''] -= URL to eGroupWare installation. -

- - -

-$GLOBALS['phpgw_info'][``server''][``hostname''] -= Name of the server eGroupWare is installed upon. -

- - -

-$GLOBALS['phpgw_info'][``server''][``charset''] -= default charset, default:iso-8859-1 -

- - -

-$GLOBALS['phpgw_info'][``server''][``version''] -= eGroupWare version. -

- - -

- -

-6.5 Database information -

- -

-It is unlikely you will need these, because $GLOBALS['phpgw_info']_db -will already be loaded as a database for you to use. - -

-$GLOBALS['phpgw_info'][``server''][``db_host''] -= Address of the database server. Usually this is set to localhost. -

- - -

-$GLOBALS['phpgw_info'][``server''][``db_name''] -= Database name. -

- - -

-$GLOBALS['phpgw_info'][``server''][``db_user''] -= User name. -

- - -

-$GLOBALS['phpgw_info'][``server''][``db_pass''] -= Password -

- - -

-$GLOBALS['phpgw_info'][``server''][``db_type''] -= Type of database. Currently MySQL and PostgreSQL are supported. -

- - -

- -

-6.6 Mail information -

- -

-It is unlikely you will need these, because most email needs are services -thru core eGroupWare functions. - -

-$GLOBALS['phpgw_info'][``server''][``mail_server''] -= Address of the IMAP server. Usually this is set to localhost. -

- - -

-$GLOBALS['phpgw_info'][``server''][``mail_server_type''] -= IMAP or POP3 -

- - -

-$GLOBALS['phpgw_info'][``server''][``imap_server_type''] -= Cyrus or Uwash -

- - -

-$GLOBALS['phpgw_info'][``server''][``imap_port''] -= This is usually 143, and should only be changed if there is a good -reason. -

- - -

-$GLOBALS['phpgw_info'][``server''][``mail_suffix] -= This is the domain name, used to add to email address -

- - -

-$GLOBALS['phpgw_info'][``server''][``mail_login_type''] -= This adds support for VMailMgr. Generally this should be set to -'standard'. -

- - -

-$GLOBALS['phpgw_info'][``server''][``smtp_server''] -= Address of the SMTP server. Usually this is set to localhost. -

- - -

-$GLOBALS['phpgw_info'][``server''][``smtp_port''] -= This is usually 25, and should only be changed if there is a good -reason -

- - -

- -

-6.7 NNTP information -

- -

-$GLOBALS['phpgw_info'][``server''][``nntp_server''] -= Address of the NNTP server. -

- - -

-$GLOBALS['phpgw_info'][``server''][``nntp_port''] -= This is usually XX, and should only be changed if there is a good -reason. -

- - -

-$GLOBALS['phpgw_info'][``server''][``nntp_sender''] -= Unknown -

- - -

-$GLOBALS['phpgw_info'][``server''][``nntp_organization''] -= Unknown -

- - -

-$GLOBALS['phpgw_info'][``server''][``nntp_admin''] -= Unknown -

- - -

- -

-6.8 Application information -

- -

-Each application has the following information available. - -

-$GLOBALS['phpgw_info'][``apps''][``appname''][``title''] -= The title of the application. -

- - -

-$GLOBALS['phpgw_info'][``apps''][``appname''][``enabled''] -= If the application is enabled. True or False. -

- - -

-$GLOBALS['phpgw_info'][``server''][``app_include_dir''] -= Location of the current application include files. -

- - -

-$GLOBALS['phpgw_info'][``server''][``app_template_dir''] -= Location of the current application tpl files. -

- - -

-$GLOBALS['phpgw_info'][``server''][``app_lang_dir''] -= Location of the current lang directory. -

- - -

-$GLOBALS['phpgw_info'][``server''][``app_auth''] -= If the server and current user have access to current application -

- - -

-$GLOBALS['phpgw_info'][``server''][``app_current''] -= name of the current application. -

- - -

- -

-7 Using Language Support -

- -

- -

-7.1 Overview -

- -

-eGroupWare is built using a multi-language support scheme. This means -the pages can be translated to other languages very easily. Translations -of text strings are stored in the phpGroupWare database, and can be -modified by the eGroupWare administrator. - -

-Please see the setup/doc directory for a document which contains more -complete documentation of the language system. - -

- -

-7.2 How to use lang support -

- -

-The lang() function is your application's interface to eGroupWare's -internationalization support. - -

-While developing your application, just wrap all your text output -with calls to lang(), as in the following code:

-  $x = 42;
-  echo lang("The counter is %1",$x)."<br>";
-
This will attempt to translate ``The counter is %1'', -and return a translated version based on the current application and -language in use. Note how the position that $x will end up is controlled -by the format string, not by building up the string in your -code. This allows your application to be translated to languages where -the actual number is not placed at the end of the string. - -

-When a translation is not found, the original text will be returned -with a * after the string. This makes it easy to develop your application, -then go back and add missing translations (identified by the *) -later. - -

-Without a specific translation in the lang table, the above code will -print:

-The counter is 42*<br>
-
If the current user speaks Italian, they string returned -may instead be:
-il contatore è 42<br>
-
- -

- -

-The lang function -

- -

-

-lang($key, $m1="", $m2="", $m3="", $m4="", $m5="", 
-          $m6="", $m7="", $m8="", $m9="", $m10="")
-
- -

-

-
$key 
-
  - -

-is the string to translate and may contain replacement directives -of the form %n. -
-

-

-
$m1 
-
  - -

-is the first replacement value or may be an array of replacement values -(in which case $m2 and above are ignored). - -

-

-
$m2 - $m10 
-
  - -

-the 2nd through 10th replacement values if $m1 is not an array. - -

-

-
-The database is searched for rows with a lang.message_id that matches -$key. If a translation is not found, the original $key is used. -The translation engine then replaces all tokens of the form %N with -the Nth parameter (either $m1[N] or $mN). - -

- -

-Adding translation data -

- -

-An application called Transy is being developed to make this -easier, until then you can create the translation data manually. - -

- -

-The lang table -

- -

-The translation class uses the lang table for all translations. We -are concerned with 4 of the columns to create a translation: - -

-

-
message_id 
-
  - -

-The key to identify the message (the $key passed to the lang() function). -This is written in English. - -

-

-
app_name 
-
  - -

-The application the translation applies to, or common if it is common -across multiple applications. - -

-

-
lang 
-
  - -

-The code for the language the translation is in. - -

-

-
content 
-
  - -

-The translated string. - -

-

-
- -

- -

-7.3 Common return codes -

- -

-If you browse through the eGroupWare sources, you may notice a pattern -to the return codes used in the higher-level functions. The codes -used are partially documented in the doc/developers/CODES file. - -

-Codes are used as a simple way to communicate common error and progress -conditions back to the user. They are mapped to a text string through -the check_code() function, which passes the strings through lang() -before returning. - -

-For example, calling

-echo check_code(13);
-
Would print
-Your message has been sent
-
translated into the current language. - -

- -

-8 Using Templates -

- -

- -

-8.1 Overview -

- -

-eGroupWare is built using a templates-based design. This means the -display pages, stored in tpl files, can be translated to other languages, -made to look completely different. - -

- -

-8.2 How to use templates -

- -

-Some instructions on using templates: - -

-For Further info read the PHPLIBs documentation for their template -class. http://phplib.netuse.de - -

- -

-9 About this document -

- -

- -

-9.1 New versions -

- -

-The newest version of this document can be found on our website http://www.egroupware.org -as lyx source, HTML, and text. - -

- -

-9.2 Comments -

- -

-Comments on this HOWTO should be directed to the eGroupWare developers -mailing list egroupware-developers@lists.sourceforge.net - -

-To subscribe, go to http://lists.sourceforge.net/lists/egroupware-developers - -

- -

-9.3 History -

- -

-This document was written by Dan Kuykendall. - -

-2000-09-25 documentation on lang(), codes, administration and preferences -extension added by Steve Brown. - -

-2001-01-08 fixed directory structure, minor layout changes, imported -to lyx source - Darryl VanDorp - -

-2003-12-29 adapted for eGroupWare and updated for setup and use of -GLOBALS - Miles Lott - -

- -

-9.4 Copyrights and Trademarks -

- -

-Copyright (c) Dan Kuykendall. Permission is granted to copy, distribute -and/or modify this document under the terms of the GNU Free Documentation -License, Version 1.1 or any later version published by the Free Software -Foundation. - -

-A copy of the license is available at http://www.gnu.org/copyleft/gpl.html - -

- -

-9.5 Acknowledgments and Thanks -

- -

-Thanks to Joesph Engo for starting phpGroupWare (at the time called -webdistro). Thanks to all the developers and users who contribute -to making eGroupWare and phpGroupWare such a success. - -

-About this document ... -

- eGroupWare Application Development

-This document was generated using the -LaTeX2HTML translator Version 2002 (1.62) -

-Copyright © 1993, 1994, 1995, 1996, -Nikos Drakos, -Computer Based Learning Unit, University of Leeds. -
-Copyright © 1997, 1998, 1999, -Ross Moore, -Mathematics Department, Macquarie University, Sydney. -

-The command line arguments were:
- latex2html -no_subdir -split 0 -show_section_numbers /tmp/lyx_tmpdir16754AF2VdD/lyx_tmpbuf16754yRvNsc/index.tex -

-The translation was initiated by Miles Lott on 2003-12-28


- -next_inactive -up -previous -
- -
-Miles Lott -2003-12-28 -
- - diff --git a/phpgwapi/doc/index.lyx b/phpgwapi/doc/index.lyx deleted file mode 100644 index 4d80ac843e..0000000000 --- a/phpgwapi/doc/index.lyx +++ /dev/null @@ -1,3000 +0,0 @@ -#LyX 1.1 created this file. For more info see http://www.lyx.org/ -\lyxformat 218 -\textclass article -\begin_preamble - -\usepackage{fullpage, graphicx, url} -\setlength{\parskip}{1ex} -\setlength{\parindent}{0ex} -\title{ phpGroupWare Application Development} -\end_preamble -\language english -\inputencoding default -\fontscheme default -\graphics default -\paperfontsize 10 -\spacing single -\papersize Default -\paperpackage a4 -\use_geometry 0 -\use_amsmath 0 -\paperorientation portrait -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\defskip smallskip -\quotes_language english -\quotes_times 2 -\papercolumns 1 -\papersides 1 -\paperpagestyle default - -\layout Title - -eGroupWare Application Development -\layout Author - -Dan Kuykendall -\layout Date - -v0.9 29 September 2000 -\layout Quote - - -\emph on -This document explains eGroupWare's infrastructure and API, along with what - is required to integrate applications into it. -\layout Standard - - -\begin_inset LatexCommand \tableofcontents{} - -\end_inset - - -\layout Section - -Introduction -\layout Standard - -eGroupWare is a web based groupware application framework (API), for writing - applications. - Integrated applications such as email, calendar, todo list, address book, - and file manager are included. - eGroupWare is a fork of phpGroupWare, for which the original version of - this document was written. -\layout Subsection - -Overview of application writing -\layout Standard - -We have attempted to make writing applications for eGroupWare as painless - as possible. - We hope any pain and suffering is caused by making your application work, - but not dealing with eGroupWare itself. - -\layout Subsection - -What does the eGroupWare API provide? -\layout Standard - -The eGroupWare API handles session management, user/group management, has - support for multiple databases, using either PHPLIB or ADODB database abstracti -on methods, we support templates using the PHPLIB Templates class, a file - system interface, and even a network i/o interface. - -\layout Standard - -On top of these standard functions, eGroupWare provides several functions - to give you the information you need about the users environment, and to - properly plug into eGroupWare. - -\layout Section - -Guidelines -\layout Subsection - -Requirements -\layout Standard - -These guidelines must be followed for any application that wants considered - for inclusion into eGroupWare: -\layout Itemize - -It must run on PHP4 and PHP5. - -\layout Itemize - -SQL statements must be compatible with both MySQL and PostgreSQL. - When in doubt it is best to stick with SQL92. -\layout Itemize - -It must use our default header.inc.php include. - -\layout Itemize - -It must use our $GLOBALS['phpgw']->link($url) for all links (this is for - session support). - -\layout Itemize - -It must use -\begin_inset Quotes eld -\end_inset - -post -\begin_inset Quotes erd -\end_inset - - for forms. - -\layout Itemize - -It must respect phpGW group rights and phpGW user permissions. - -\layout Itemize - -It must use our directory structure, template support and lang (multi-language) - support. - -\layout Itemize - -Where possible it should run on both Unix and NT platforms. -\layout Itemize - -For applications that do not meet these requirements, they can be made available - to users however you decide. - If you need help converting your application to templates and our lang - support, we will try to connect you with someone to help. - -\layout Subsection - -Writing/porting your application -\layout Subsubsection* - -Include files -\layout Standard - -Each PHP page you write will need to include the header.inc.php along with - a few variables. -\newline - This is done by putting this at the top of each PHP page. - -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline - -\newline - -\newline - -\backslash -end{verbatim} -\latex default -Of course change application name to fit. -\newline - This include will provide the following things: -\layout Itemize - -The phpgwAPI - The eGroupWare API will be loaded. - -\layout Itemize - -The phpGW navbar will be loaded (by default, but can be disabled until a - later point. - -\layout Itemize - -appname/inc/functions.inc.php - This file is loaded just after the phpgwAPI - and before any HTML code is generated. - This file should include all your application specific functions.. - You are welcome to include any additional files you need from within this - file. - -\layout Itemize - -appname/inc/header.inc.php - This file is loaded just after the system header/navb -ar, and allows developers to use it for whatever they need to load. - -\layout Itemize - -appname/inc/footer.inc.php - This file is loaded just before the system footer, - allowing developers to close connections and whatever else they need. - -\layout Itemize - -The phpGW footer will be loaded, which closes several connections. -\layout Section - -Installing your application -\layout Subsection - -Overview -\layout Standard - -It is fairly simple to add and delete applications to/from eGroupWare. - -\layout Subsection - -Automatic features -\layout Standard - -To make things easy for developers we go ahead and load the following files. - -\layout Itemize - -appname/inc/functions.inc.php - This file should include all your application - specific functions. - -\layout Itemize - -appname/inc/header.inc.php - This file is loaded by $GLOBALS['phpgw']->common->hea -der just after the system header/navbar, and allows developers to use it - for whatever they need to load. - -\layout Itemize - -appname/inc/footer.inc.php - This file is loaded by $GLOBALS['phpgw']->common->foo -ter just before the system footer, allowing developers to close connections - and whatever else they need. -\layout Subsection - -Adding files, directories and icons. -\layout Standard - -You will need to create the following directories for your code -\newline - (replace 'appname' with your application name) -\newline - -\layout Standard -\noindent - -\family typewriter -`--appname -\layout Standard -\noindent - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -|--inc -\layout Standard -\noindent - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |--functions.inc.php -\layout Standard -\noindent - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ - \SpecialChar ~ -|--header.inc.php -\layout Standard -\noindent - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ - \SpecialChar ~ -|--hook_preferences.inc.php -\layout Standard -\noindent - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ - \SpecialChar ~ -|--hook_admin.inc.php -\layout Standard -\noindent - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ - \SpecialChar ~ -`--footer.inc.php -\layout Standard -\noindent - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -`--templates -\layout Standard -\noindent - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - `--default -\layout LyX-Code -\noindent \bibitem {dummy} - -\layout LyX-Code -\bibitem {dummy} - -\layout LyX-Code -\bibitem {dummy} - -\layout LyX-Code -\bibitem {dummy} - -\layout LyX-Code -\bibitem {dummy} - -\layout Subsection - -Making eGroupWare aware of your application -\layout Standard - -Please see the documentation in the setup/doc directory for information - on integrating into eGroupWare. - This is very important since the steps for database table setup and modificatio -n discussed there must be followed. -\layout Subsection - -Hooking into Administration page -\layout Standard - -When a user goes to the Administration page, it starts appname/inc/hook_admin.inc. -php for each application that is enabled, in alphabetical order of application - title. - If the file exists, it is include()d in the hopes it will display a selection - of links to configure that application. -\layout Standard - -Simple Example: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -link('myAdminPage.php') . - '">'; -\newline - echo lang('Change myApp settings') . - ''; -\newline - section_end(); -\newline -?> -\newline - -\newline - -\backslash -end{verbatim} -\latex default -Look at headlines/inc/hook_admin.inc.php and admin/inc/hook_admin.inc.php for - more examples. -\layout Standard - -Things to note: -\layout Itemize - -Links are relative to the admin/index.php file, not your application's base - directory. - (so use $appname in your link() calls) -\layout Itemize - -The file is brought in with include() so be careful to not pollute the name-spac -e too much -\layout Standard - -The standard $GLOBALS['phpgw'] and $GLOBALS['phpgw_info'] variables are - in-scope, as is $appname which corresponds to the application name in the - path. -\layout Standard - -There are 2 functions to coordinate the display of each application's links, - section_start() and section_end() -\layout Subsubsection* - -section_start -\layout Standard - -section_start($title,$icon_url) starts the section for your application. - $title is passed through lang() for you. - $icon_url should be page-relative to admin/index.php or an absolute URL. - -\layout Subsubsection* - -section_end -\layout Standard - -section_end() closes the section that was started with section_start(). - -\layout Subsection - -Hooking into Preferences page -\layout Standard - -The mechanism to hook into the preferences page is identical to the one - used to hook into the administration page, however it looks for appname/inc/hoo -k_preferences.inc.php instead of appname/inc/hook_admin.inc.php. - The same functions and variables are defined. - -\layout Section - -Infrastructure -\layout Subsection - -Overview -\layout Standard - -eGroupWare attempts to provide developers with a sound directory structure - to work from. -\newline - The directory layout may seem complex at first, but after some use, you - will see that it is designed to accommodate a large number of applications - and functions. - -\layout Subsection - -Directory tree -\layout Standard - - -\family typewriter -.--appname -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |--inc -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - |--functions.inc.php -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - |--header.inc.php -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - |--hook_preferences.ini.php -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - |--hook_home.inc.php -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - `--footer.inc.php -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |--manual -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |--setup -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - |--tables_baseline.inc.php -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - |--tables_current.inc.php -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - |--tables_update.inc.php -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - |--setup.inc.php -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - `--templates -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - `--default -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ - `--images -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ - `--navbar.png -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |--preferences.php -\layout Standard - - -\family typewriter -|--docs (installation docs) -\layout Standard - - -\family typewriter -|--files -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - |--groups -\layout Standard - - -\family typewriter -|\SpecialChar ~ -\SpecialChar ~ - `--users -\layout Standard - - -\family typewriter -`--phpgwapi -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|--cron (egroupware's optional daemons) -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|--doc (developer docs) -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|--inc -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |--class.phpgw.inc.php -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |--class.common.inc.php -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - `--etc.. -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|--manual -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|--setup -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |--tables_baseline.inc.php -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |--tables_current.inc.php -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |--tables_update.inc.php -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |--setup.inc.php -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|--templates -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |--default -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - `--images -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - |--home.gif -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - |\SpecialChar ~ -\SpecialChar ~ - `--preferences.gif -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ - `--verilak -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -|\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ - `--images -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ - |--home.gif -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ - `--preferences.gif -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -`--themes -\layout Standard - - -\family typewriter -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -\SpecialChar ~ -`--default.theme -\layout LyX-Code -\bibitem {dummy} - -\layout Subsection - -Translations -\layout Standard - -The translations are now being done thru the database, and will be configurable - to use other mechanisms. - -\layout Standard - -The application, developer_tools, provides developers/translators a nice - GUI for building and updating translations. - -\layout Section - -The API -\layout Subsection - -Introduction -\layout Standard - -eGroupWare attempts to provide developers with a useful API to handle common - tasks. - -\layout Standard - -To do this we have created a multi-dimensional class $GLOBALS['phpgw']. - -\layout Standard - -This allows for terrific code organization, and help developers easily identify - the file that the function is in. - All the files that are part of this class are in the inc/core directory - and are named to match the sub-class. - -\layout Standard - -Example: $GLOBALS['phpgw']->send->msg() is in the inc/phpgwapi/phpgw_send.inc.php - file. - -\layout Subsection - -Basic functions -\layout Subsubsection* - -$GLOBALS['phpgw']->link -\layout Standard - -$GLOBALS['phpgw']->link($url) -\newline - Add support for session management. - ALL links must use this, that includes href's form actions and header location' -s. - -\layout Standard - -If you are just doing a form action back to the same page, you can use it - without any parameters. - -\layout Standard - -This function is right at the core of the class because it is used so often, - we wanted to save developers a few keystrokes. - Example: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -
-\newline -/* If session management is done via passing url parameters */ -\newline -/* The the result would be */ -\newline -/* */ -\newline - -\newline - -\backslash -end{verbatim} -\layout Subsection - -Application Functions -\layout Subsubsection* - -$GLOBALS['phpgw']->common->phpgw_header(); -\layout Standard - -$GLOBALS['phpgw']->phpgw_header() -\newline - Print out the start of the HTML page, including the navigation bar and - includes appname/inc/header.php -\layout Subsubsection* - -$GLOBALS['phpgw']->common->phpgw_footer(); -\layout Standard - -$GLOBALS['phpgw']->phpgw_footer() -\newline - Prints the system footer, and includes appname/inc/footer.php -\layout Subsubsection* - -$GLOBALS['phpgw']->common->appsession(); -\layout Standard - -$GLOBALS['phpgw']->common->appsession($data) -\newline - Store important information session information that your application needs. -\newline - $GLOBALS['phpgw']->appsession will return the value of your session data - is you leave the parameter empty [i.e. - $GLOBALS['phpgw']->appsession( -\begin_inset Quotes eld -\end_inset - - -\begin_inset Quotes erd -\end_inset - -)], otherwise it will store whatever data you send to it. -\newline - You can also store a comma delimited string and use explode() to turn it - back into an array when you receive the value back. - -\layout Standard - -Example: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline - $GLOBALS['phpgw']->common->appsession('/path/to/something'); -\newline - echo "Dir: " . - $GLOBALS['phpgw']->common->appsession(); -\newline - -\newline - -\backslash -end{verbatim} -\layout Subsection - -File functions -\layout Subsubsection* - -Please also see the phpgwapi/doc/vfs directory for additional VFS class - documentation -\layout Subsubsection* - -$GLOBALS['phpgw']->vfs->read_file -\layout Standard - -$GLOBALS['phpgw']->vfs->read_file($file) -\newline - Returns the data from $file. -\newline - You must send the complete path to the file. -\newline - Example: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -$data = $GLOBALS['phpgw']->vfs->read_file('/some/dir/to/file.txt'); -\newline - -\newline - -\backslash -end{verbatim} -\layout Subsubsection* - -$GLOBALS['phpgw']->vfs->write_file -\layout Standard - -$GLOBALS['phpgw']->vfs->write_file($file, $contents) -\newline - Write data to $file. -\newline - You must send the complete path to the file. -\newline - Example: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -$data = $GLOBALS['phpgw']->vfs->write_file("/some/dir/to/file.txt"); -\newline - -\newline - -\backslash -end{verbatim} -\layout Subsubsection* - -$GLOBALS['phpgw']->vfs->read_userfile -\layout Standard - -$GLOBALS['phpgw']->vfs->read_userfile($file) -\newline - Returns the data from $file, which resides in the users private dir. -\newline - Example: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -$data = $GLOBALS['phpgw']->vfs->read_userfile("file.txt"); -\newline - -\newline - -\backslash -end{verbatim} -\layout Subsubsection* - -$GLOBALS['phpgw']->vfs->write_userfile -\layout Standard - -$GLOBALS['phpgw']->write_userfile($file, $contents) -\newline - Writes data to $file, which resides in the users private dir. -\newline - Example: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -$data = $GLOBALS['phpgw']->vfs->write_userfile("file.txt"); -\newline - -\newline - -\backslash -end{verbatim} -\layout Subsubsection* - -$GLOBALS['phpgw']->vfs->list_userfiles -\layout Standard - -$GLOBALS['phpgw']->vfs->list_userfiles() -\newline - Returns an array which has the list of files in the users private dir. -\newline - Example: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -$filelist = array(); -\newline -$filelist = $GLOBALS['phpgw']->vfs->list_userfiles(); -\newline - -\newline - -\backslash -end{verbatim} -\layout Subsection - -Email/NNTP Functions -\layout Subsubsection* - -$GLOBALS['phpgw']->send->msg -\layout Standard - -$GLOBALS['phpgw']->send->msg($service, $to, $subject, $body, $msgtype, $cc, - $bcc) -\newline - Send a message via email or NNTP and returns any error codes. -\newline - Example: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -$to = "someuser@domain.com"; -\newline -$subject = "Hello buddy"; -\newline -$body = "Give me a call -\backslash -n Been wondering what your up to."; -\newline -$errors = $GLOBALS['phpgw']->send->msg("email", $to, $subject, $body); -\newline - -\newline - -\backslash -end{verbatim} -\layout Section - -Configuration Variables -\layout Subsection - -Introduction -\layout Standard - -eGroupWare attempts to provide developers with as much information about - the user, group, server, and application configuration as possible. - -\layout Standard - -To do this we provide a multi-dimensional array called '$GLOBALS['phpgw_info'][] -', which includes all the information about your environment. - -\layout Standard - -Due to the multi-dimensional array approach. - getting these values is easy. - -\layout Standard - -Here are some examples: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline - -\newline - -\newline - -\newline - -\newline - -\backslash -end{verbatim} -\layout Subsection - -User information -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -userid -\begin_inset Quotes erd -\end_inset - -] = The user ID. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -sessionid -\begin_inset Quotes erd -\end_inset - -] = The session ID -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -theme -\begin_inset Quotes erd -\end_inset - -] = Selected theme -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -private_dir -\begin_inset Quotes erd -\end_inset - -] = Users private dir. - Use eGroupWare core functions for access to the files. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -firstname -\begin_inset Quotes erd -\end_inset - -] = Users first name -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -lastname -\begin_inset Quotes erd -\end_inset - -] = Users last name -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -fullname -\begin_inset Quotes erd -\end_inset - -] = Users Full Name -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -groups -\begin_inset Quotes erd -\end_inset - -] = Groups the user is a member of -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -app_perms -\begin_inset Quotes erd -\end_inset - -] = If the user has access to the current application -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -lastlogin -\begin_inset Quotes erd -\end_inset - -] = Last time the user logged in. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -lastloginfrom -\begin_inset Quotes erd -\end_inset - -] = Where they logged in from the last time. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -lastpasswd_change -\begin_inset Quotes erd -\end_inset - -] = Last time they changed their password. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -passwd -\begin_inset Quotes erd -\end_inset - -] = Hashed password. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -status -\begin_inset Quotes erd -\end_inset - -] = If the user is enabled. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -logintime -\begin_inset Quotes erd -\end_inset - -] = Time they logged into their current session. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -session_dla -\begin_inset Quotes erd -\end_inset - -] = Last time they did anything in their current session -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -user -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -session_ip -\begin_inset Quotes erd -\end_inset - -] = Current IP address -\layout Subsection - -Group information -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -group -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -group_names -\begin_inset Quotes erd -\end_inset - -] = List of groups. -\layout Subsection - -Server information -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -server_root -\begin_inset Quotes erd -\end_inset - -] = Main installation directory -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -include_root -\begin_inset Quotes erd -\end_inset - -] = Location of the 'inc' directory. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -temp_dir -\begin_inset Quotes erd -\end_inset - -] = Directory that can be used for temporarily storing files -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -files_dir -\begin_inset Quotes erd -\end_inset - -] = Directory er and group files are stored -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -common_include_dir -\begin_inset Quotes erd -\end_inset - -] = Location of the core/shared include files. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -template_dir -\begin_inset Quotes erd -\end_inset - -] = Active template files directory. - This is defaulted by the server, and changeable by the user. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -dir_separator -\begin_inset Quotes erd -\end_inset - -] = Allows compatibility with WindowsNT directory format, -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -encrpytkey -\begin_inset Quotes erd -\end_inset - -] = Key used for encryption functions -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -site_title -\begin_inset Quotes erd -\end_inset - -] = Site Title will show in the title bar of each webpage. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -webserver_url -\begin_inset Quotes erd -\end_inset - -] = URL to eGroupWare installation. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -hostname -\begin_inset Quotes erd -\end_inset - -] = Name of the server eGroupWare is installed upon. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -charset -\begin_inset Quotes erd -\end_inset - -] = default charset, default:iso-8859-1 -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -version -\begin_inset Quotes erd -\end_inset - -] = eGroupWare version. -\layout Subsection - -Database information -\layout Standard - -It is unlikely you will need these, because $GLOBALS['phpgw_info']_db will - already be loaded as a database for you to use. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -db_host -\begin_inset Quotes erd -\end_inset - -] = Address of the database server. - Usually this is set to localhost. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -db_name -\begin_inset Quotes erd -\end_inset - -] = Database name. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -db_user -\begin_inset Quotes erd -\end_inset - -] = User name. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -db_pass -\begin_inset Quotes erd -\end_inset - -] = Password -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -db_type -\begin_inset Quotes erd -\end_inset - -] = Type of database. - Currently MySQL and PostgreSQL are supported. -\layout Subsection - -Mail information -\layout Standard - -It is unlikely you will need these, because most email needs are services - thru core eGroupWare functions. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -mail_server -\begin_inset Quotes erd -\end_inset - -] = Address of the IMAP server. - Usually this is set to localhost. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -mail_server_type -\begin_inset Quotes erd -\end_inset - -] = IMAP or POP3 -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -imap_server_type -\begin_inset Quotes erd -\end_inset - -] = Cyrus or Uwash -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -imap_port -\begin_inset Quotes erd -\end_inset - -] = This is usually 143, and should only be changed if there is a good reason. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -mail_suffix] = This is the domain name, used to add to email address -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -mail_login_type -\begin_inset Quotes erd -\end_inset - -] = This adds support for VMailMgr. - Generally this should be set to 'standard'. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -smtp_server -\begin_inset Quotes erd -\end_inset - -] = Address of the SMTP server. - Usually this is set to localhost. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -smtp_port -\begin_inset Quotes erd -\end_inset - -] = This is usually 25, and should only be changed if there is a good reason -\layout Subsection - -NNTP information -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -nntp_server -\begin_inset Quotes erd -\end_inset - -] = Address of the NNTP server. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -nntp_port -\begin_inset Quotes erd -\end_inset - -] = This is usually XX, and should only be changed if there is a good reason. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -nntp_sender -\begin_inset Quotes erd -\end_inset - -] = Unknown -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -nntp_organization -\begin_inset Quotes erd -\end_inset - -] = Unknown -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -nntp_admin -\begin_inset Quotes erd -\end_inset - -] = Unknown -\layout Subsection - -Application information -\layout Standard - -Each application has the following information available. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -apps -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -appname -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -title -\begin_inset Quotes erd -\end_inset - -] = The title of the application. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -apps -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -appname -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -enabled -\begin_inset Quotes erd -\end_inset - -] = If the application is enabled. - True or False. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -app_include_dir -\begin_inset Quotes erd -\end_inset - -] = Location of the current application include files. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -app_template_dir -\begin_inset Quotes erd -\end_inset - -] = Location of the current application tpl files. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -app_lang_dir -\begin_inset Quotes erd -\end_inset - -] = Location of the current lang directory. - -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -app_auth -\begin_inset Quotes erd -\end_inset - -] = If the server and current user have access to current application -\layout Standard - - -\family typewriter -\size small -$GLOBALS['phpgw_info'][ -\begin_inset Quotes eld -\end_inset - -server -\begin_inset Quotes erd -\end_inset - -][ -\begin_inset Quotes eld -\end_inset - -app_current -\begin_inset Quotes erd -\end_inset - -] = name of the current application. -\layout Section - -Using Language Support -\layout Subsection - -Overview -\layout Standard - -eGroupWare is built using a multi-language support scheme. - This means the pages can be translated to other languages very easily. - Translations of text strings are stored in the phpGroupWare database, and - can be modified by the eGroupWare administrator. -\layout Standard - -Please see the setup/doc directory for a document which contains more complete - documentation of the language system. -\layout Subsection - -How to use lang support -\layout Standard - -The lang() function is your application's interface to eGroupWare's internationa -lization support. -\layout Standard - -While developing your application, just wrap all your text output with calls - to lang(), as in the following code: -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline - $x = 42; -\newline - echo lang("The counter is %1",$x)."
"; -\newline - -\newline - -\backslash -end{verbatim} -\latex default -This will attempt to translate -\begin_inset Quotes eld -\end_inset - -The counter is %1 -\begin_inset Quotes erd -\end_inset - -, and return a translated version based on the current application and language - in use. - Note how the position that $x will end up is controlled by the format string, - -\series bold -not -\series default - by building up the string in your code. - This allows your application to be translated to languages where the actual - number is not placed at the end of the string. -\layout Standard - -When a translation is not found, the original text will be returned with - a * after the string. - This makes it easy to develop your application, then go back and add missing - translations (identified by the *) later. -\layout Standard - -Without a specific translation in the lang table, the above code will print: - -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -The counter is 42*
-\newline - -\newline - -\backslash -end{verbatim} -\latex default - If the current user speaks Italian, they string returned may instead be: - -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -il contatore è 42
-\newline - -\newline - -\backslash -end{verbatim} -\layout Subsubsection* - -The lang function -\layout Standard - - -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -lang($key, $m1="", $m2="", $m3="", $m4="", $m5="", -\newline - $m6="", $m7="", $m8="", $m9="", $m10="") -\newline - -\newline - -\backslash -end{verbatim} -\layout Description - - -\series bold -$key -\series default -\SpecialChar ~ - -\begin_deeper -\layout Standard - -is the string to translate and may contain replacement directives of the - form %n. -\newline - -\end_deeper -\layout Description - - -\series bold -$m1 -\series default -\SpecialChar ~ - -\begin_deeper -\layout Standard - -is the first replacement value or may be an array of replacement values - (in which case $m2 and above are ignored). -\end_deeper -\layout Description - - -\series bold -$m2\SpecialChar ~ --\SpecialChar ~ -$m10 -\series default -\SpecialChar ~ - -\begin_deeper -\layout Standard - -the 2nd through 10th replacement values if $m1 is not an array. -\end_deeper -\layout Standard - -The database is searched for rows with a lang.message_id that matches $key. - If a translation is not found, the original $key is used. - The translation engine then replaces all tokens of the form %N with the - Nth parameter (either $m1[N] or $mN). - -\layout Subsubsection* - -Adding translation data -\layout Standard - -An application called -\series bold -Transy -\series default - is being developed to make this easier, until then you can create the translati -on data manually. - -\layout Subsubsection* - -The lang table -\layout Standard - -The translation class uses the lang table for all translations. - We are concerned with 4 of the columns to create a translation: -\layout Description - - -\series bold -message_id -\series default -\SpecialChar ~ - -\begin_deeper -\layout Standard - -The key to identify the message (the $key passed to the lang() function). - This is written in English. -\end_deeper -\layout Description - - -\series bold -app_name -\series default -\SpecialChar ~ - -\begin_deeper -\layout Standard - -The application the translation applies to, or common if it is common across - multiple applications. -\end_deeper -\layout Description - - -\series bold -lang -\series default -\SpecialChar ~ - -\begin_deeper -\layout Standard - -The code for the language the translation is in. -\end_deeper -\layout Description - - -\series bold -content -\series default -\SpecialChar ~ - -\begin_deeper -\layout Standard - -The translated string. -\end_deeper -\layout Subsection - -Common return codes -\layout Standard - -If you browse through the eGroupWare sources, you may notice a pattern to - the return codes used in the higher-level functions. - The codes used are partially documented in the doc/developers/CODES file. -\layout Standard - -Codes are used as a simple way to communicate common error and progress - conditions back to the user. - They are mapped to a text string through the check_code() function, which - passes the strings through lang() before returning. -\layout Standard - -For example, calling -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -echo check_code(13); -\newline - -\newline - -\backslash -end{verbatim} -\latex default -Would print -\latex latex - -\backslash -begin{verbatim} -\newline - -\newline -Your message has been sent -\newline - -\newline - -\backslash -end{verbatim} -\latex default - translated into the current language. -\layout Section - -Using Templates -\layout Subsection - -Overview -\layout Standard - -eGroupWare is built using a templates-based design. - This means the display pages, stored in tpl files, can be translated to - other languages, made to look completely different. - -\layout Subsection - -How to use templates -\layout Standard - -Some instructions on using templates: -\layout Standard - -For Further info read the PHPLIBs documentation for their template class. - -\begin_inset LatexCommand \url{http://phplib.netuse.de} - -\end_inset - - -\layout Section - -About this document -\layout Subsection - -New versions -\layout Standard - -The newest version of this document can be found on our website -\latex latex - -\backslash -url{http://www.egroupware.org} -\latex default - as lyx source, HTML, and text. -\layout Subsection - -Comments -\layout Standard - -Comments on this HOWTO should be directed to the eGroupWare developers mailing - list egroupware-developers@lists.sourceforge.net -\layout Standard - -To subscribe, go to -\latex latex - -\backslash -url{http://lists.sourceforge.net/lists/egroupware-developers} -\layout Subsection - -History -\layout Standard - -This document was written by Dan Kuykendall. -\layout Standard - -2000-09-25 documentation on lang(), codes, administration and preferences - extension added by Steve Brown. - -\layout Standard - -2001-01-08 fixed directory structure, minor layout changes, imported to - lyx source - Darryl VanDorp -\layout Standard - -2003-12-29 adapted for eGroupWare and updated for setup and use of GLOBALS - - Miles Lott -\layout Subsection - -Copyrights and Trademarks -\layout Standard - -Copyright (c) Dan Kuykendall. - Permission is granted to copy, distribute and/or modify this document under - the terms of the GNU Free Documentation License, Version 1.1 or any later - version published by the Free Software Foundation. - -\layout Standard - -A copy of the license is available at -\begin_inset LatexCommand \url{http://www.gnu.org/copyleft/gpl.html} - -\end_inset - - -\layout Subsection - -Acknowledgments and Thanks -\layout Standard - -Thanks to Joesph Engo for starting phpGroupWare (at the time called webdistro). - Thanks to all the developers and users who contribute to making eGroupWare - and phpGroupWare such a success. - -\the_end diff --git a/phpgwapi/doc/index.pdf b/phpgwapi/doc/index.pdf deleted file mode 100644 index 47d612eee4..0000000000 Binary files a/phpgwapi/doc/index.pdf and /dev/null differ diff --git a/phpgwapi/doc/index.ps b/phpgwapi/doc/index.ps deleted file mode 100644 index e65f0bb9ec..0000000000 --- a/phpgwapi/doc/index.ps +++ /dev/null @@ -1,2266 +0,0 @@ -%!PS-Adobe-2.0 -%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software -%%Title: index.dvi -%%Pages: 15 -%%PageOrder: Ascend -%%BoundingBox: 0 0 612 792 -%%EndComments -%DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -t letter -o index.ps index.dvi -%DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2003.12.28:1027 -%%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 -/p{show}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 -TeXDict begin 40258431 52099146 1000 600 600 (index.dvi) -@start -%DVIPSBitmapFont: Fa ectt0900 9 66 -/Fa 66 123 df<01F014F000031403486CEB07F84848EB0FF0001F141FD83F80EB3F8090 -C71300007E147E007C147C00FC14FCB46CEBFF8001E014E0A26D14F0A2007F147FA26C48 -EB3FE0001F141FD80780EB0780251480AD27>16 D<000F140FD83FC0EB3FC06D14E0486C -EB7FF0A26D14F8A2003F143FA2000F140F000114014914F0000314034848EB07E0000F14 -0FD87FC0EB7FC049148048C7EAFF00007E147E0078147825147FAD27>I36 D<120FEA3FC013E0EA7FF0A213F8A2123FA2120F12 -00A2120113F0A2120313E01207EA0FC0123FEA7F80EAFF005A12F812700D1973AD27>39 -D<120FEA3FC013E0EA7FF0A213F8A2123FA2120F120113F01203EA07E0121FEA7FC0EAFF -8013005A12700D14738927>44 D<007FB51280B612C0A36C14801A057A9227>I<121EEA -7F80A2EAFFC0A4EA7F80A2EA1E000A0A728927>I<1538157CA215FC15F8140115F01403 -15E0140715C0A2140F1580141F15005C143E147E147C14FC5C13015C13035C13075C130F -5CA2131F91C7FC5B133E137E137C13FC5B12015B12035B12075B120F5BA2121F90C8FC5A -123E127E127C12FC5AA212701E3A7CB327>I<130E131FA25B5BA25B5A5A127FB5FCA213 -BFEA7E3F1200B3AA003FB512805A15C01580A21A2F79AE27>49 DIII<001FB512E04814F0A3 -15E090C8FCACEB1FF0EBFFFC14FF158015C09038F03FE09038C00FF0EB0007003EEB03F8 -001C1301C7FC15FC1400A3127C12FEA2140115F84813036C14F0007F130F9038801FE039 -3FE07FC06CB512806C14006C5B000113F838007FC01E2F7CAD27>I56 DI<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCAC121EEA7F80A2EAFFC0A4EA7F80A2 -EA1E000A20729F27>I<003FB512FCB7FCA4C9FCA8B7FCA4003F14FC20127D9F27>61 -D65 D<007FB5FCB612C08115F87E3907E003FCEC00FE157E157F81A615 -7EA25D1403EC0FF890B55A15C015F081819038E000FE157FED3F80151FA2ED0FC0A6151F -1680153FED7F004A5A007FB55AB65A5D15E06C1480222E7FAD27>I<903803F80E90381F -FE1F90383FFFBF90B6FC5A3803FE0F3807F803497E48487E485A49137FA248C7123FA25A -127E151E150012FE5AAA7E127EA2151E007F143F7EA26C7E157F6D137E6C6C13FE3907F0 -01FCEBF8033903FE0FF86CB512F06C14E0013F13C06D1300EB03F820307DAE27>I<387F -FFFC14FFB612C06C80813907E00FF81407EC01FC6E7EA2157E157F811680151FA316C015 -0FABED1F80A3153F1600A25D15FEA24A5A4A5A140F007FB55A5DB65A6C91C7FC14FC222E -7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED078092C7FCA4EC07804A7EA390B5 -FCA5EBE00FA36E5A91C8FCAC387FFF80B57EA36C5B222E7EAD27>70 -D<903807F03890381FFC7C90387FFFFC90B5FC5A3803FC1F3807F00F380FE007EBC00300 -1F13011380123F90C7FCA2127EA2157892C7FC5AA8EC1FFF4A1380A3007E6D1300EC00FC -A36C1301A21380121FEBC003120FEBE0073807F00F3803FC1F6CB5FC7EEB7FFE90381FFC -78D907F0C7FC21307DAE27>I<3A7FFE07FFE0B54813F0A36C486C13E03A07E0007E00AF -90B512FEA59038E0007EB03A7FFE07FFE0B54813F0A36C486C13E0242E7FAD27>I<007F -B512E0B612F0A36C14E039001F8000B3B2007FB512E0B612F0A36C14E01C2E7BAD27>I< -3A7FFC07FF8016C0486C5A6C487E16803A07C001F80014035D4A5A4A5A141F5D4AC7FC14 -7E14FE5CEBC1F8EBC3F013C75CEBCFF0EBDFF813FF8013FEEBFC7E143EEBF83F497E01E0 -7F140F01C07F1407811403816E7EA26E7E157C157E3A7FFC01FFC016E0486C5A6C487E16 -C0232E7FAD27>75 D<387FFFC080B5FC7E5CD803F0C8FCB3AAED0780ED0FC0A7007FB6FC -A2B7FC7E1680222E7FAD27>II<3A -7FF003FFE0486C4813F0A213FC007F6D13E000079038003E0013DEA313CFA3148013C714 -C0A213C314E0A213C114F0A3EBC0F8A31478147CA2143C143EA2141E141F140FA3EC07BE -A3EC03FEEA7FFCEAFFFE1401A26C486C5A242E7FAD27>II<007FB5FC -B612E081816C803907E003FEEC00FF81ED3F80151F16C0150FA6151F1680153FED7F005D -EC03FE90B55A5D5D5D92C7FC01E0C8FCADEA7FFEB5FCA36C5A222E7FAD27>II<387FFF -F0B512FE6E7E816C803907E01FF014076E7E1401811400A514015D14034A5A141F90B55A -5D5DA281EBE01F6E7E14076E7EA816F0EDF1F8A4397FFE01FBB5EBFFF08016E06C48EB7F -C0C8EA1F00252F7FAD27>I<90387FC0E03901FFF1F0000713FF5A5AEA3FE0EB801F387F -000F007E130712FE5A1403A3EC01E06C90C7FC127E127FEA3FC013F86CB47E6C13F86C13 -FE6CEBFF80C614C0010F13E0010013F0140FEC07F81403140115FC1400127812FCA46CEB -01F8A26C130390388007F09038F01FE090B5FC15C0150000F85B38701FF81E307CAE27> -I<007FB61280B712C0A439FC03F00FA60078EC0780000091C7FCB3AB90B512C04880A36C -5C222E7EAD27>I<3A7FFE01FFF8B54813FCA36C486C13F83A07E0001F80B3AB6D133F00 -031500A26D5B0001147E6D13FE6C6C485A90387F87F814FF6D5B010F13C06D5BD901FEC7 -FC262F80AD27>I<3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07E0007E00A46C6C5B -A4EBF80100015CA46C6C485AA490387E07E0A56D485AA4011F5B149FA3010F90C7FCA5EB -07FEA46D5AA26D5A242F7FAD27>II< -393FFC1FFE387FFE3F815D383FFC1F3903F00FE001F85B1201EBFC1F00005CEBFE3F017E -90C7FCEB7F7FEB3F7E14FE6D5AA26D5AA26D5AA21303130780130F80131F80EB3F7E147F -497E017E7F141F01FC7F140FD801F87F14071203496C7E120701E07F3A7FFC0FFF8000FF -15C06D5A497E007F1580222E7EAD27>I<387FFFF0B512F8A314F000FCC7FCB3B3ACB512 -F014F8A36C13F0153A71B327>91 D<387FFFF0B512F8A37EEA0001B3B3ACEA7FFFB5FCA3 -6C13F0153A7EB327>93 D<007FB512F8B612FCA46C14F81E067C7E27>95 -D<3801FFE0000713F84813FE486D7E81EBC07FEC0FE0380F8007D802007FC71203A2EB07 -FF137F0003B5FC120F5A383FFC03EA7FE0130012FE5AA46C1307007F130FEBC07F6CB612 -C06C15E07E000313F83A007FC03FC023207D9F27>97 DIIIII<153F90391FC0FF80D97FF313C048B612E05A4814EF390FF07F873A -1FC01FC3C0EDC000EB800F48486C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C485B -EB7FF0EB1FC090C9FCA27F6CB5FC15E015F84814FE4880EB8001007EC7EA3F80007C140F -00FC15C0481407A46C140F007C1580007F143F6C6CEB7F009038F807FF6CB55A000714F8 -6C5CC614C0D90FFCC7FC23337EA027>II<130F497E497EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4 -007FB512F0B6FC15F815F07E1D2F7BAE27>I107 D<387FFF80B57EA37EEA000FB3B2007FB512F8B612 -FCA36C14F81E2E7CAD27>I<397F07C01F3AFF9FF07FC09039FFF9FFE091B57E7E3A0FFC -7FF1F89038F03FC001E0138001C01300A3EB803EB03A7FF0FFC3FF486C01E3138001F913 -E701F813E36C4801C313002920819F27>I<397FE03FC039FFF1FFF001F77F90B57E6C80 -000313E0EC007F497F5B5BA25BB03A7FFF83FFF8B500C713FCA36C018313F82620809F27 ->II<397FE07F8039FFF1FF -E001F713F890B57E6C800003EBC0FF9138007F8001FCEB1FC049130F16E0491307A216F0 -1503A615076D14E0A2150F6DEB1FC06D133F6DEB7F809138C1FF00ECFFFE5D01F75B01F3 -13E0D9F07FC7FC91C8FCAC387FFF80B57EA36C5B2431809F27>I<397FFC03FC39FFFE0F -FF023F13804A13C0007F90B5FC39007FFE1F14F89138F00F809138E002004AC7FC5CA291 -C8FCA2137EAD007FB57EB67EA36C5C22207E9F27>114 D<9038FFF3800007EBFFC0121F -5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F8013FC383FFFF06C13FC000713FF0001 -1480D8000F13C09038003FE014070078EB03F000FC1301A27E14036CEB07E0EBE01F90B5 -12C01580150000FB13FC38707FF01C207B9F27>I<133C137EA8007FB512F0B612F8A36C -14F0D8007EC7FCAE1518157EA415FE6D13FC1483ECFFF86D13F06D13E0010313C0010013 -001F297EA827>I<397FE007FE486C487EA3007F7F0003EB003FB25DA24A5AEBFC076CB6 -12F86C15FCA2013F13BF90390FFC1FF82620809F27>I<3A7FFC0FFF80486C4813C0A36C -486C13803A07C000F800EBE00100035CA2EBF00300015CA2EBF80700005CA390387C0F80 -A36D48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA26D5A22207E9F27>I<3A7FFE07FFE0 -00FF15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC7C -A4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27>I< -393FFC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A017E90C7FC6D5AEB1F7E -5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F8001F87F00016D7E38 -03F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27>I<3A7FFC0FFF80486C48 -13C0A36C486C13803A07E000F800000313015D13F00001130301F85B1200A26D485A137C -A290387E0F80133EA2011F90C7FC5CA2130F149E14BE130714FC1303A25C1301A25CA213 -035CA213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B6C5AEA07C022317E9F -27>I<001FB512FE4814FFA490380001FEEC03FCEC07F8EC0FF0001EEB1FE0C7EA3FC0EC -7F80ECFF00495A495A495AEB1FE0495A495A49C7FC485A4848131E4848133F485A485A48 -5A485AB7FCA46C14FE20207E9F27>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb ectt1000 10 77 -/Fb 77 233 df<003C131E007F137F481480A66C1400A6007E7FA6003E133EA3003C131E -001C131C191977B32C>34 D -36 DI39 D<143814FC13011303EB07F8 -EB0FF0EB1FC0EB3F80EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FCA25A12 -7EA312FE5AAC7E127EA3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137FEB3F80 -EB1FC0EB0FF0EB07F8EB03FC130113001438164272B92C>I<127012FC7E7E6C7E6C7EEA -0FE06C7E6C7E6C7E6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F81301A314 -FC1300AC130114F8A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE485A48 -5A485A485AEA3FC0485A48C7FC5A5A1270164279B92C>II44 -D<007FB512F0B612F8A36C14F01D0579942C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA -3F80EA1F000B0B708A2C>I<1507ED0F80A2151F16005D153E157E157CA215FC5D14015D -14035D14075D140F5D141F92C7FC5C143EA2147E147C14FC5C13015C13035C13075C130F -5C131F91C8FC5B133EA2137E137C13FC5B12015B12035B12075B120F5B121F90C9FCA25A -123E127E127C12FC5AA2127021417BB92C>II<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE -007FB512E0B612F0A36C14E01C3477B32C>IIII<000FB512FE4880A35D0180C8FCADEB83FE90389FFF8090B512E015F8 -819038FE03FE9038F000FF01C07F49EB3F8090C7121F6C15C0C8120FA2ED07E0A4123C12 -7EB4FC150F16C0A248141F007EEC3F80007FEC7F006C6C5B6D485A391FF80FFC6CB55A6C -5C000114C06C6C90C7FCEB0FF823347CB22C>II<1278B712C016E0A316C000FCC7EA3F80ED7F0015FE00785CC712014A -5A4A5A5D140F5D4A5A143F92C7FC5C147E14FE5C13015CA2495AA213075CA3495AA4495A -A5133F91C8FCAA131E23357CB32C>III<121FEA3F80EA -7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80 -EA1F000B2470A32C>II<1502ED0F80151F157F15FF913803FE00EC -0FFCEC1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA1F -F8EA3FE0EAFF8090C9FCA27FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D7E -903800FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157F151F150FED0200212A7BAD2C ->I<007FB612F0B712F8A36C15F0CAFCA8007FB612F0B712F8A36C15F025127DA12C>I<12 -2012F87EB4FC7FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D7E903800FF80 -EC7FE0EC1FF0EC0FFCEC03FE913800FF80157FA215FF913803FE00EC0FFCEC1FF0EC7FE0 -ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA1FF8EA3FE0EAFF8090 -C9FC12FC5A1220212A7BAD2C>III<14FE497EA4497FA214EFA2130781A214C7A2 -010F7FA314C390381F83F0A590383F01F8A490387E00FCA549137E90B512FEA34880A290 -38F8003FA34848EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC497E2734 -7EB32C>I<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED07F01503A2ED01F8 -A6ED03F0A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001FE0ED07F0ED -03F81501ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612E016C0B712 -806CECFE0015F027337FB22C>I<02FF13700107EBE0F84913F9013F13FD4913FFEBFF81 -3901FE007F4848131FD807F0130F1507485A491303485A150148C7FCA25A007EEC00F016 -00A212FE5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C130716E0D8 -03FC131F6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F00100138025357DB32C ->I<007FB5FCB612C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED0FE0A21507 -16F0150316F81501A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0153FED7F80 -EDFF00EC03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007FB612F0B712F8A37E -3903F00001A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FCA5163C167E -A8007FB612FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA37ED803F0C7FCA716 -781600A515F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5FC805C7E26337EB2 -2C>I<903901FC038090390FFF87C04913EF017F13FF90B6FC4813073803FC01497E4848 -137F4848133F49131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE5AA8913803 -FFF84A13FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D137F6C7E6C -6C13FF6D5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC26357DB32C>I< -D87FFEEBFFFCB54813FEA36C486C13FCD807E0EB0FC0B190B6FCA59038E0000FB3D87FFE -EBFFFCB54813FEA36C486C13FC27337EB22C>I<007FB512F8B612FCA36C14F839000FC0 -00B3B3A5007FB512F8B612FCA36C14F81E3379B22C>I<0107B512804914C0A36D148090 -390003F000B3AF1218127EA2B4FCA24A5A48130F007F131F9038C07FC06CB55A6C91C7FC -6C5B000313F838007FC022347BB22C>I<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED -01F8A8007FB6FCB7FCA36C15F025337DB22C>76 DI79 D<007FB512C0B612F881 -15FF6C15802603F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0F -E0ED3FC015FF90B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C ->I<387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA215 -3F4BC7FCEC01FE140790B55A5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80 -A5D87FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>82 -D<90381FF80790B5EA0F804814CF000714FF5A381FF01F383FC003497E48C7FC007E147F -00FE143F5A151FA46CEC0F00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFF -C06C14F06C6C7F01077F9038007FFEEC07FF02001380153FED1FC0A2ED0FE0A200781407 -12FCA56CEC0FC0A26CEC1F806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F -13C0D8700790C7FC23357CB32C>I<007FB612FCB712FEA43AFC007E007EA70078153CC7 -1400B3AF90383FFFFCA2497F6D5BA227337EB22C>I89 D<387FFFFCB512FEA314FC00FCC7FCB3 -B3B3B512FC14FEA36C13FC17416FB92C>91 D<127012F8A27E127C127E123E123F7EA27F -120F7F12077F12037F12017F12007F137C137E133EA2133F7F80130F8013078013038013 -0180130080147C147E143EA2143F8081140F81140781140381140181140081157CA2157E -153E153F811680150FA2ED070021417BB92C>I<387FFFFCB512FEA37EC7127EB3B3B338 -7FFFFEB5FCA36C13FC17417DB92C>I<007FB6FCB71280A46C150021067B7D2C>95 -D<1338137CEA01FC1203EA07F813F0EA0FC0EA1F80A2EA3F00123E127E127CA212FC5AA3 -EAFFC013E013F013F8A2127FA2123F13F0EA1FE0EA07C00E1D72B82C>I<3801FFF00007 -13FE001F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE13 -1F90B5FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383F -E01F6CB612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>II<903803 -FFE0011F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E4848131890C9FC5A12 -7EA25AA8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A6C5C -6C6C5B011F13E0010390C7FC21247AA32C>IIIIII<1307EB1FC0A2497EA3 -6D5AA20107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14 -FC1F3479B32C>I<140EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7FCA748B512804814C0 -A37EC7120FB3B3A2141F003C1480007E133FB414005CEB01FEEBFFFC6C5B5C001F5B0007 -90C7FC1A467CB32C>II<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C15 -8022337BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF13FF91B57E3A07 -FE1FFC3E01FCEBF83F496C487E01F013E001E013C0A301C01380B33B7FFC3FF87FF0027F -13FFD8FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397FF01FE039FFF87FFC90 -38F9FFFE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5 -FCB500F11480A36C01E0140029247FA32C>II<397FF01FE039FFF8FFF801FB13FE -90B6FC6C158000019038F07FC09138801FE091380007F049EB03F85BED01FC491300A216 -FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138E07FC091B51280 -160001FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B27367FA32C>I114 -D<90387FF8700003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0007F1400 -13F0383FFFC06C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE0078147F00 -FC143F151F7EA26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8148039701FFC -0020247AA32C>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0 -A5EC800F011FEB1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7EAD2C>I< -3A7FF003FF80486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F3900FE03FF90B7 -FC6D15807F6D13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514FE148314016C -15FC3A03E0000F80A26D131F00011500A26D5B0000143EA26D137E017C137CA2017E13FC -013E5BA2EB3F01011F5BA21483010F5BA214C701075BA214EF01035BA214FF6D90C7FCA2 -6D5A147C27247EA32C>II<3A3FFF03 -FFF048018713F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC87E09038 -0FCFC0903807EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB -0FC7EC83E090381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC1483B514 -FE6C15FC140127247EA32C>I<3A7FFF01FFFCB5008113FE148314816C010113FC3A03E0 -000F806C7E151F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D5BA2EB0F -815DA2EB07C1ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143EA2147E14 -7CA214FC5CA2EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA -07E027367EA32C>I<127812FCB3B3B3A9127806416DB92C>124 D<5BEB07E014F814FE6E -7E15F001017F6D6C7E140FEC03F8140092C7FCA7EB03FE90381FFFC0017F13F048B57E48 -803907FE03FE390FF800FFD81FE0EB3F805B4848EB1FC090C7120F5A007E15E015075AB7 -FCA416C000FCC9FC7E127EA2127F6CEC03C06DEB07E06C7ED80FF0130F6C6CEB3FC001FF -13FF000190B512806C1500013F13FC010F13F00101138023367CB52C>232 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmsy10 10 1 -/Fc 1 16 df15 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd ecbx1200 12 55 -/Fd 55 122 df28 D44 D46 D<17C0EE01E01603A217 -C01607A2EE0F80A217005EA2163EA2163C167CA25EA24B5AA25E1503A24B5AA25E150FA2 -4BC7FCA2151E153EA25DA2157815F8A24A5AA25D1403A24A5AA25D140FA24AC8FCA2143E -A2143C147CA25CA25C1301A2495AA25C1307A2495AA291C9FC5BA2133EA2133C137CA25B -A25B1201A2485AA2485AA25B120FA248CAFCA2121E123EA25AA2127812F8A25A12602B64 -7ACA38>I49 DII<163FA25E5E5D5D -A25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14F8EB01 -F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E5A12FC -B91280A5C8000F90C7FCAC027FB61280A531417DC038>I<0007150301E0143F01FFEB07 -FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5FC01C714C0 -01DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F6C4815E0C8FC6F -13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC74813C0123E00 -3F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480010F01FCC7 -FC010113C02D427BC038>I<4AB47E021F13F0027F13FC49B6FC01079038807F8090390F -FC001FD93FF014C04948137F4948EBFFE048495A5A1400485A120FA248486D13C0EE7F80 -EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000FF017F13E091B512F89039F9F01F -FC9039FBC007FE9039FF8003FF17804A6C13C05B6F13E0A24915F0A317F85BA4127FA512 -3FA217F07F121FA2000F4A13E0A26C6C15C06D4913806C018014006C6D485A6C9038E01F -FC6DB55A011F5C010714C0010191C7FC9038003FF02D427BC038>I<121E121F13FC90B7 -12FEA45A17FC17F817F017E017C0A2481680007EC8EA3F00007C157E5E00785D15014B5A -00F84A5A484A5A5E151FC848C7FC157E5DA24A5A14035D14074A5AA2141F5D143FA2147F -5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F447AC238>III<903807FFC0013F13FC48B612804815E0260FF80013F0D81FC0EB3FF848C7EA1F -FC4815FE01C0130F486C14FF7FA66C485B6C4814FE000FC7FCC8EA3FFCED7FF8EDFFF04A -13E04A13801600EC07FC4A5A5D4A5A5D4A5A92C7FCA2147E147CA31478AA91C8FCA814F8 -EB03FE497E497FA2497FA56D5BA26D90C7FC6D5AEB00F828467AC535>63 -D65 DIII< -BA12F8A485D8001F90C71201EF003F180F180318011800A2197E193EA3191EA21778A285 -A405F890C7FCA316011603161F92B5FCA5ED001F160316011600A2F101E01778A2F103C0 -A494C7FC1907A21A80A2190FA2191FA2193FF17F0061601807181F4DB5FCBBFC61A44344 -7DC34A>II -III77 DI<923807FFC092B512FE0207ECFFC0021F15F091 -267FFE0013FC902601FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E49486F -7E49486F7E01FF8348496F7E48496F1380A248496F13C0A24890C96C13E0A24819F04982 -003F19F8A3007F19FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C19F0 -A26E5D6C19E0A26C6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A6D6C -4A5B6D01C001075B6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C00200 -4AC8FC030713C047467AC454>II82 DI<003FBA12E0A59026FE000FEB8003D87FE09338003FF0 -49171F90C71607A2007E1803007C1801A300781800A400F819F8481978A5C81700B3B3A2 -0107B8FCA545437CC24E>II87 D<903801FFE0011F13FE017F -6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00 -F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC01000313E0481380381FFE00485A -5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFF -F86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97 DIIIIIII<137C48B4FC4813804813C0A24813E0A56C -13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518467CC520 ->I -107 DI<90277F8007FEEC0FFC -B590263FFFC090387FFF8092B5D8F001B512E002816E4880913D87F01FFC0FE03FF8913D -8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C130F02BC5D02F86D496D7E -A24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E>I<90397F8007FEB59038 -3FFF8092B512E0028114F8913987F03FFC91388F801F000390399F000FFE6C139E14BC02 -F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>II<90397FC00FF8B590B57E02C314E002CF14F89139DFC03F -FC9139FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF -3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E4913006E495A9139DFC07F -FC02CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA536407DAC3E>II<90387F807FB53881FFE002 -8313F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED -01E092C7FCA35CB3A5B612E0A5272D7DAC2E>I<90391FFC038090B51287000314FF120F -381FF003383FC00049133F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387F -FFF014FF6C14C015F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0140000 -F0143FA26C141F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A -00FC5CD8F03F13E026E007FEC7FC232F7CAD2C>II< -D97FC049B4FCB50103B5FCA50003EC000F6C81B3A85EA25EA25E7E6E491380017FD901F7 -13FE9138F807E76DB512C7010F1407010313FE9026007FF0EBFC00372E7CAC3E>I -II121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe ecrm1000 10 81 -/Fe 81 123 df<486C1360000314E039070001C0000EEB038048EB070000181306003813 -0E0030130C0070131C00601318A200E01338481330A400CEEB338039FF803FE001C013F0 -A3007F131FA2393F800FE0390E0003801C1981B91C>16 D<001C1307007FEB1FC039FF80 -3FE0A201C013F0A3007F131F001CEB073000001300A400011470491360A2000314E090C7 -12C048130100061480000E130348EB070048130E485B006013181C1980B91C>I27 DI36 -D<017C166048B416F02607C3801401260F81C01403D900E04A5A001E01784A5A003E6D14 -1F003C013FEC7F80007C90271BE003FFC7FC0218B512BF007891381FFC3E00F8011CC75A -020C14FC5F4C5A16035F4C5A160F5F4CC8FC021C5B00780118133E007C5D16FC003C0138 -5B003E90383001F0001EEB70036C01E05B903981C007C03907C3800F2601FF005BD8007C -49C9FC90C748EB07C0033EEB1FF04BEB3C3803FCEBF81C4B497E913A01F001E006020301 -03130703E0497E912607C0071480020F15011580DA1F00018013C04A010F1300143E5C14 -FC5C495A13035C495A130F4A0107130149C701C013805B013E1603490203140001FC6F5A -49020113064848913800F00E0003705A49ED3C3849ED1FF06C48ED07C03A437BBD45>I< -121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A12 -600A1979B917>39 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA2 -12075B120F90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F -1203A26C7EA26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>I<12C0 -7E12707E7E7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7FA21480 -A3EB07C0A6EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A25BA248 -5A485AA2485A48C7FC120E5A5A5A5A5A13527CBD20>II<121C127FEAFF80A213C0A3127F121C12 -00A412011380A2120313005A1206120E5A5A5A12600A19798817>44 -DI<121C127FEAFF80A5EA7F00121C0909798817>I<1506A2150E -150CA2151C151815381530A215701560A215E015C0A214011580A2140315005C1406A214 -0E140CA2141C1418A214381430A21470146014E05CA213015CA2130391C7FCA25B1306A2 -130E130C131C1318A213381330A213701360A213E05BA212015B120390C8FCA25A1206A2 -120E120CA2121C1218A21238123012701260A212E05AA21F537BBD2A>IIIII<1538A2157815F8A2140114031407A2140F141F -141B14331473146314C313011483EB030313071306130C131C131813301370136013C012 -01EA038013005A120E120C5A123812305A12E0B712F8A3C73803F800AA4A7E0103B512F8 -A325387EB72A>I<0006140CD80780133C9038F003F890B5FC5D5D158092C7FC14FC3806 -7FE090C9FCAAEB07F8EB1FFE9038780F809038E007E03907C003F0496C7E130000066D7E -81C8FC8181A21680A4121C127F5A7FA390C713005D12FC00605C12704A5A6C5C6C130300 -1E495A6C6C485A3907E03F800001B5C7FC38007FFCEB1FE021397CB62A>II<12301238123E003FB612E0A316C05A168016000070C7120600 -60140E5D5D00E014304814705D5DC712014A5A4AC7FC1406140E5CA25C1478147014F05C -1301A213035C1307A2130FA3131F5CA2133FA5137FA96DC8FC131E233A7BB72A>III<121C127FEAFF80A5EA7F00121CC7FC -B2121C127FEAFF80A5EA7F00121C092479A317>I<12E01278121EEA07C0EA01F0EA003C -130FEB03C0EB00F0143C140FEC03E0EC00F8151EED0780ED01E0ED0078161EEE07C0EE01 -F0EE003C170FEF03C0A2EF0F00173CEE01F0EE07C0041EC7FC1678ED01E0ED0780031EC8 -FC15F8EC03E0020FC9FC143C14F0EB03C0010FCAFC133CEA01F0EA07C0001ECBFC127812 -E0322E79AB41>62 DII<1538A3157CA315FEA34A7EA34A6C7EA202077FEC063FA2 -020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC6003A202C07F1501A2D901 -807F81A249C77F167FA20106810107B6FCA24981010CC7121FA2496E7EA3496E7EA3496E -7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3373C7DBB3E>II<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03FC000F0FD9 -0FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F4848150FA248 -481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A3123F7F001F16 -0318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE05C6D6CEB03 -C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D7BBA3C>I< -B712C016F816FE000190398001FF806C90C7EA3FE0EE0FF0EE03F8707E707E177FA2EF3F -8018C0171F18E0170F18F0A3EF07F8A418FCAC18F8A4EF0FF0A218E0A2171F18C0EF3F80 -A2EF7F0017FE4C5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC16F816C036397DB83F>IIIIII<013FB512E0A3903900 -1FFC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B0070131F6C5C6C495A6C -49C7FC380781FC3801FFF038007F80233B7DB82B>IIIIIIIIII<003FB812E0 -A3D9C003EB001F273E0001FE130348EE01F00078160000701770A300601730A400E01738 -481718A4C71600B3B0913807FF80011FB612E0A335397DB83C>IIII89 D91 D93 -D<007FB81280B912C0A26C17803204797041>95 D97 -DIIII<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213 -FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I< -ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E0 -10000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38 -060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048 -C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB -0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A>IIIIII<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F8380 -3F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A348 -6C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F90 -39F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280 -A329257EA42E>II<3903F01FE000FFEB7FF89038F1E07E9039F3801F -803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3 -ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FF -F8EC1FC091C8FCAB487EB512C0A328357EA42E>II<3807E01F00FFEB7FC09038E1E3 -E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512 -F0A31C257EA421>II<1318A51338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215 -C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220>IIIIII<00 -3FB512FCA2EB8003D83E0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F80006013 -7F150014FE495AA2C6485A495AA2495A495A495AA290387F000613FEA2485A485A000714 -0E5B4848130C4848131CA24848133C48C7127C48EB03FC90B5FCA21F247EA325>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff ecbx1000 10 57 -/Ff 57 122 df<913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF -8049485A5A1480484A13C04A6C1380A36F1300167E93C7FCA592383FFFC0B8FCA4000390 -C7FCB3ABB5D8FC3F13FFA4303A7EB935>28 D<1478A4EB03FF013F13E090B512FC000380 -3A07FC78FF80D80FE0EB1FC0D81FC0EB07E0D83F8013030100EB01F05A007EEC0FF8151F -00FE143FA37EA2138001C0EB1FF001E0EB0FE001F890C7FC387FFFF880ECFF806C14E06C -14F815FE6C806C1580000115C07E013F14E0130F010014F08014780004EC3FF8D83F8013 -1FD87FC0130FD8FFE01307A31503A301C014F01380D878001307007C15E06C140F003F15 -C0D81F80EB1F80D80FC0137F3A07FC79FF006CB512FCC65C013F13C0D907FEC7FCEB0078 -A525437BBD30>36 D -39 D<141C143C14F8EB01F0EB03E01307EB0FC0EB1F8014005B137E13FE5B12015B1203 -A2485AA2120F5B121FA25B123FA4485AA512FFB1127FA56C7EA4121F7FA2120F7F1207A2 -6C7EA212017F12007F137E7F7F1480EB0FC0EB07E01303EB01F0EB00F8143C141C165377 -BD25>I<12E07E127C7E7E7F6C7E6C7E12037F6C7E7F12007F137E137FA2EB3F80A214C0 -131F14E0A2130F14F0A4EB07F8A514FCB114F8A5EB0FF0A414E0131FA214C0133F1480A2 -EB7F00A2137E13FE5B12015B485A5B1207485A485A90C7FC123E5A12F05A16537BBD25> -I45 D<1618163816781670A216F016E0150116C015031680A215 -0716005D150E151E151CA2153C15381578157015F05DA214015D14035D140792C7FCA25C -140E141E141C143C1438A21478147014F05CA213015C13035C130791C8FCA25B130E131E -131C133C1338A21378137013F05B12015BA212035B120790C9FC5A120EA2121E121C123C -123812781270A212F05AA225537BBD30>47 D<49B4FC011F13F0017F13FC9038FF83FE48 -48C67E4848EB7F804848EB3FC04848EB1FE0A2001F15F0A24848EB0FF8A3007F15FCA400 -FF15FEB3007F15FCA5003F15F86D131FA2001F15F0A26C6CEB3FE0000715C06C6CEB7F80 -6C6CEBFF003900FF83FE6DB45A011F13F0010190C7FC27377CB530>I<141E143E14FE13 -07137FB5FCA3138FEA000FB3B3A5007FB61280A4213679B530>III< -ED07C0150FA2151F153F157F15FF5CA25C5C5C5C143E143C5C5C1301495A5C495A495A5B -133E5B13785B485A1203485A5B48C7FC121E5A127C5AB81280A4C70001EBC000AA0103B6 -1280A429367DB530>I<001C15C0D81F80130701F8137F90B61280A216005D5D15F05D15 -804AC7FC14F090C9FCA7EB03FE90381FFFE0017F13F89038FE07FC9038F003FFD9C00113 -80496C13C090C7FC000E15E0C8127F16F0A216F8A3121FEA3FC0487E12FF7FA316F05B15 -FFD87F8014E0007EC713C0003E5B003F4913806C6C481300390FF01FFE6CB512F8000114 -E06C6C1380D90FF8C7FC25377BB530>II<123C123EEA3FE090B71280A41700485D5E5E5E5EA2007CC7EA0FC000784A5A4BC7FC -00F8147E485C5D14014A5AC7485A4A5AA24A5A143F4AC8FCA214FEA213015C1303A21307 -A2130F5CA2131FA5133FA96D5A6D5A6D5A29397BB730>I<49B47E010F13F0013F13FC90 -38FE01FF3A01F8007F804848EB3FC04848EB1FE0150F484814F01507121FA27F7F7F6D13 -0F01FF14E014C09138E01FC06CEBF83F9138FE7F806C9038FFFE005D6C14F06C14FC6C14 -FF6D14806D14C090B612E0D803FD14F02607F07F13F848487E261FC00F13FC383F800300 -7F010013FE90C7127F151F00FE140715031501A21500A216FC7E6C14016D14F86C6C1303 -6DEB07F06C6CEB0FE0D80FFEEB7FC00003B61200C614FC013F13F00103138027377CB530 ->II59 -D<124012F012FC127FEA1FC0EA07F8EA01FE38007F80EB0FE0EB03F8EB00FEEC3F80EC0F -E0EC03FCEC00FFED3FC0ED07F0ED01FCED007FEE1FC0EE07F0EE01FC9338007F80EF1FE0 -EF07F8EF00FEF03F80180F183FF0FE00EF07F8EF1FE0EF7F80DC01FCC7FCEE07F0EE1FC0 -047FC8FCED01FCED07F0ED3FC003FFC9FCEC03FCEC0FE0EC3F8002FECAFCEB03F8EB0FE0 -EB7F80D801FECBFCEA07F8EA1FC0007FCCFC12FC12F01240393778AF4A>62 -D65 DII70 DI -73 D76 D79 DI83 D<003FB91280A4D9F800EBF003D87FC09238007F -C049161F007EC7150FA2007C1707A200781703A400F818E0481701A4C892C7FCB3AE010F -B7FCA43B387DB742>III91 D93 -D<007FB9FCBA1280A36C18003905786A4A>95 D97 D<13FFB5FCA412077EAF -4AB47E020F13F0023F13FC9138FE03FFDAF00013804AEB7FC00280EB3FE091C713F0EE1F -F8A217FC160FA217FEAA17FCA3EE1FF8A217F06E133F6EEB7FE06E14C0903AFDF001FF80 -903AF8FC07FE009039F03FFFF8D9E00F13E0D9C00390C7FC2F3A7EB935>I<903801FFC0 -010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF8121F13F0123F6E13804848 -EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6CEB07C06C6C14806C6C13 -1FC69038C07E006DB45A010F13F00101138023257DA42A>II<903803FF80011F13F0017F13FC3901FF -83FE3A03FE007F804848133F484814C0001FEC1FE05B003FEC0FF0A2485A16F8150712FF -A290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F000071403D801FFEB0FE0 -6C9038C07FC06DB51200010F13FC010113E025257DA42C>II<161FD907FEEBFFC090387FFFE348B6 -EAEFE02607FE07138F260FF801131F48486C138F003F15CF4990387FC7C0EEC000007F81 -A6003F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B512F86D13E0261E07FEC8FC90 -CAFCA2123E123F7F6C7E90B512F8EDFF8016E06C15F86C816C815A001F81393FC0000F48 -C8138048157F5A163FA36C157F6C16006D5C6C6C495AD81FF0EB07FCD807FEEB3FF00001 -B612C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA412077EAFED7FC0913803FFF8 -020F13FE91381F03FFDA3C01138014784A7E4A14C05CA25CA291C7FCB3A3B5D8FC3F13FF -A4303A7DB935>II<13FFB5FCA412077EAF92380FFFE0A4923803FC00 -16F0ED0FE0ED1F804BC7FC157E5DEC03F8EC07E04A5A141FEC7FE04A7E8181A2ECCFFEEC -0FFF496C7F806E7F6E7F82157F6F7E6F7E82150F82B5D8F83F13F8A42D3A7EB932>107 -D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>I<01FED97FE0EB0FFC00FF902601 -FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA3C00903887801F000749DA -CF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3A3B5D8FC1FB50083B512F0 -A44C257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91381F03FFDA3C0113800007 -13780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430257DA435>I<903801 -FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D7E48486D7EA2003F81 -491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA26C6C495A6C6C495A6C -6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>I<9039FF01FF80B500 -0F13F0023F13FC9138FE07FFDAF00113800003496C13C00280EB7FE091C713F0EE3FF8A2 -EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06EEBFFC0DAF00313809139 -FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA42F357EA435>I<9038FE -03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA29138807F80ED3F00 -150C92C7FC91C8FCB3A2B512FEA422257EA427>114 D<90383FF0383903FFFEF8000F13 -FF381FC00F383F0003007E1301007C130012FC15787E7E6D130013FCEBFFE06C13FCECFF -806C14C06C14F06C14F81203C614FC131F9038007FFE140700F0130114007E157E7E157C -6C14FC6C14F8EB80019038F007F090B512C000F8140038E01FF81F257DA426>I<130FA5 -5BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7FCB21578A815F86CEB80F014816C -EBC3E090383FFFC06D1380903803FE001D357EB425>I<01FFEC3FC0B5EB3FFFA4000714 -016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90387FFFFC011F13F0010313803025 -7DA435>III121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg ecbx1440 14.4 39 -/Fg 39 122 df28 D<151E153E15FE1403140F147FEB07FF0003B5FCB6FCA3EBF87FEAFC00 -C7FCB3B3B3A6007FB712FCA52E4E76CD42>49 D -I<913807FFC0027F13FC0103B67E010F15E090261FF80313F890267FC0007F01FEC7EA3F -FE48488148486E138013FE486C6C6D13C0804817E080A66C5B18C06C5B6C90C75AD80038 -168090C8FC4C1300A24C5A5F4C5A4B5B4B13C0030F5BDB7FFEC7FC91387FFFF816C016FC -EEFF80DA000313E09238007FF8EE3FFE707E70138018C07013E018F07013F8A218FC82A2 -18FEA3EA03C0EA0FF0EA3FFC487EA2B5FCA218FCA25E18F8A26C4816F0495C4916E0D83F -E04A13C06C485CD80FF04A1380D807FE91387FFE003B03FFE003FFFC6C90B65A6C6C15E0 -010F92C7FC010114FCD9001F1380374F7BCD42>I<17FC1601A216031607160FA2161F16 -3F167FA216FF5D5DA25D5D5D167F153E157E15FC15F8EC01F01403EC07E015C0EC0F8014 -1FEC3F00143E5C14FC495A5C495A1307495A5C49C7FC5B137E137C5B1201485A5B485A12 -0F485A90C8FC123E127E5ABA1280A5C901FCC7FCAF021FB71280A5394F7CCE42>I<486C -150601F0153E01FEEC01FED9FFF0133F91B65A5F5F5F5F5F94C7FC16FC5E16E093C8FC15 -FC01F0138091CAFCAC913807FF80023F13F891B512FE01F36E7E9026FFFC0113E09139E0 -007FF891C76C7E496E7E01F86E7E5B7013804916C0C9FC18E08218F0A418F8A31203EA0F -E0EA3FF8487EA212FF7FA218F0A25B5E6C4816E05B01C016C06CC85A18806C6C4A13007F -D80FF04A5A6C6CECFFFCD803FE4913F02701FFE00F5B6C6CB612806D92C7FC010F14F801 -0114C09026003FFCC8FC354F7ACD42>II<121F7F7FEBFF8091B8FC -A45A18FE18FC18F818F0A218E018C018804817000180C8123E007EC9127E5F007C4B5A4C -5A5F16074C5A484B5A4CC7FC167E167CC912FC4B5A4B5AA24B5A150F4B5AA24B5AA24BC8 -FC5DA25C5D1403A214075D140FA3141FA2143FA34A5AA414FFA65BAB6D5B6E5A6E5A6E5A -385279D042>I<913803FFC0023F13FC49B67E010715E090260FFC0013F8D93FE0EB1FFC -D97F80EB07FE49C76C7E496E1380484880000317C049157F120718E0173F120FA27FA27F -7F6E147F02E015C08002FC14FF6C01FF15806F481300EDE0036C9138F807FE6F485A6C91 -38FF1FF06CEDFFE017806D4AC7FC7F010F6E7E6D81010115F06D81010315FE010F81D93F -F71580D97FC115C02701FF807F14E048EB001F48486D14F04848010314F848481300496E -13FC003F151F491407007F6F13FE491400177F00FF163F49151F170F1707A21703A218FC -A27F127F6DED07F8A26C6CED0FF07F6C6CED1FE06C6CED3FC06C6CEDFF806C01C0010313 -006C01FCEB3FFE6C6CB612F8011F15E001071580010002FCC7FC020F13C0374F7BCD42> -I<913807FF80027F13F849B512FE01076E7E90261FFE0113E0903A7FF8003FF049486D7E -48496D7E48496D7E484980486F138091C7FC486F13C05A18E0485A18F0A27013F812FFA3 -18FCA618FEA35E127FA4003F5DA26C7E5E7E6C6D5B161E6C7F6C6D5B6C6C6C13F890393F -FC03F06DB55A01074A13FC01001400EC1FF891C8FCA218F85EA301FC16F0487E2607FF80 -15E05E486D15C0A24C1380A24C13005F4A131F6C4B5A49C7485A494A5A6C48495B6D0107 -5B2701FF803F90C7FC6C90B512FC013F5C6D14C0010791C8FC9038007FF0374F7BCD42> -I<173FA24D7EA34D7EA24C7FA34C7FA24C7FA34C7FA24C7FA34C7F163E83047E80EE7C3F -04FC8016F8830301814C7E03038116E0830307814C7E030F81168083031F811600834B81 -033E80037E82157C8403FC824B800201835D840203834B800207835D92B8FC4A83A34A83 -92C9FC4A83143E85027E84027C8202FC845C850101854A820103855C850107854A82A249 -4884D93FF082B600F0020FB712C0A55A547CD363>65 D<932603FFF01407047F01FF140F -0307B600E0131F033F03F8133F92B700FE137F02039126C003FF13FF020F01F8C7EA3FC1 -023F01C0EC0FE391B5C80003B5FC4901FC814949814901E082011F498249498292CA7E49 -48834948835A4A83485B4885A24849187FA2485B1B3FA2485B1B1FA25AA21B0091CDFCA2 -B5FCAE7EA280A36C1A1FA36C7FA21B3F6C7F1B3E6C7F1B7E6C6D187C6C1AFC6E18F86C19 -016D6CEF03F06D7E6FEE07E06D6DEE0FC001076DEE1F806D01F8EE3F006D6D16FE6D01FF -4B5A023F01C0EC07F8020F01FCEC3FF00203903AFFC001FFC0020091B6C7FC033F15FC03 -0715F0DB007F1480040301F0C8FC505479D25F>67 D<932603FFF01407047F01FF5C0307 -B600E05B033F03F85B92B700FE5B02039126C003FF5B020F01F8C7EA3FC1023F01C0EC0F -E391B5C80003B5FC4901FC814949814901E082011F498249498292CA7E4948834948835A -4A83485B4885A2484984A2485B87A2485B87A25AA298C8FC91CFFCA2B5FCAE7E067FB712 -8080A37E95C76C90C7FC807EA36C7FA26C7FA26C7F7E806C7F137F6D7E816D6D93B5FC01 -077F6D01F85D6D7F6D01FF5D023F01E0EC0FEF020F01FCEC3FE30203903AFFE001FF8102 -0091B6C6FC033F03FC133F030703F0130FDB007F02801303040301F8CAFC595479D267> -71 D73 -D76 -D80 -D83 -D<003FBB12FCA59126C0007FEB000301FCC7ED003FD87FF0F00FFE491807491803491801 -90C81600A2007E1A7EA3007C1A3EA500FC1A3F481A1FA6C91700B3B3AC49B912C0A55051 -7BD05B>III97 -DI<913803 -FFE0023F13FE91B67E010315E0010F9038003FF8D93FFCEB07FC4948497E4948131F4849 -497E485B485BA24890C7FC5A5B003F6F5A705A705A007F92C8FC5BA312FFAD127F7FA312 -3F7F6CEE0F80A26C6D141F18006C6D5C6C6D143E6C6D147E6C6D5C6D6C495A6DB4EB07F0 -010F9038C01FE06D90B5128001014AC7FCD9003F13F80203138031387CB63A>I<943803 -FF80040FB5FCA5EE003F170FB3A4913803FF80023F13F849B512FE0107ECFF8F011F9038 -C03FEF90273FFE0007B5FCD97FF8130149487F484980484980484980488291C8FC5A5B12 -3FA2127F5BA312FFAD127FA37F123FA3121F7F6C5E6C6D5C5F6C6D91B5FC6C6D5B6C6D49 -14E0D97FFCD90FEFEBFF80D91FFFEB7F8F010790B5120F010114FC6D6C13E00207010049 -C7FC41547CD249>I<913807FF80027F13F849B512FE01076E7E011F010313E0903A3FFC -007FF0D97FF06D7E49486D7E4849130F48496D7E48824890C77E1880485A82003F17C0A3 -485A18E082A212FFA290B8FCA401FCCAFCA6127FA37F123FA2EF03E06C7E17076C17C06C -6D140F18806C6D141F6C6DEC3F006C6D147ED97FFC495AD91FFFEB07F86D9038E03FF001 -0390B512C001005D023F01FCC7FC020113E033387CB63C>IIII<133FEBFFC0487F487FA2487FA66C5BA26C5B -6C5B013FC7FC90C8FCAEEB1FF8B5FCA512017EB3B3A6B612F0A51C547CD324>I108 D -II<913801FFC0023F13FE91B67E010315E0010F018013F8903A3FFC001FFED9 -7FF0EB07FF49486D7F48496D7F48496D7F91C8127F4883488349153F001F83A2003F8349 -151FA2007F83A400FF1880AC007F1800A3003F5F6D153FA2001F5FA26C6C4B5AA26C6D4A -5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB1FFE6DB46CB45A010790B512F00101 -15C0D9003F49C8FC020313E039387CB642>II<90393FF001FCB590380FFF804B13E0037F13F09238 -FE1FF89138F1F83F00019138F07FFC6CEBF3E015C0ECF780A2ECFF00EE3FF84AEB1FF0EE -0FE093C7FC5CA45CB3ABB612FEA52E367DB535>114 D<903903FFC00E011FEBFC1E90B6 -127E000315FE3907FE003FD80FF0130F4848130348481301491300127F90C8127EA24815 -3EA27FA27F01F091C7FC13FCEBFF806C13FEECFFF06C14FE6F7E6C15E06C816C15FC6C81 -C681133F010F15801301D9000F14C0EC003F030713E0150100F880167F6C153FA2161F7E -A217C07E6D143F17807F6DEC7F0001F85C6DEB03FE9039FF801FFC486CB512F0D8F81F14 -C0D8F00791C7FC39E0007FF02B387CB634>I<147CA614FCA41301A31303A21307A2130F -131F133F137F13FF1203000F90B512FEB7FCA426007FFCC8FCB3A9EE0F80ABEE1F006D7E -A2011F143E806D6D5A6DEBC1F86DEBFFF001005C023F1380DA03FEC7FC294D7ECB33>I< -D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35FA25F137F5F6D6C14F7 -DC01E713F06D6CD907C7EBFFC0903A0FFF801F876D90B51207010114FC6D6C13F0020701 -C091C7FC42377CB549>I121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh ecti1000 10 29 -/Fh 29 121 df39 D44 D<120EEA3F80127F12FFA31300127E123C0909778819>46 -D65 D71 D<0103B512F8A390390007F8 -005DA2140FA25DA2141FA25DA2143FA25DA2147FA292C7FCA25CA25CA21301A25CA21303 -A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA291C8FC497EB6FCA25C25 -397CB820>73 D<0107B612F817FF1880903B000FF0003FE04BEB0FF0EF03F8141FEF01FC -5DA2023F15FEA25DA2147FEF03FC92C7FCA24A15F817074A15F0EF0FE01301EF1FC04AEC -3F80EFFE0001034A5AEE0FF091B612C04CC7FCD907F8C9FCA25CA2130FA25CA2131FA25C -A2133FA25CA2137FA291CAFCA25BA25B1201B512FCA337397BB838>80 -D<0007B812E0A25AD9F800EB001F01C049EB07C0485AD900011403121E001C5C003C1780 -1403123800785C00701607140700F01700485CA2140FC792C7FC5DA2141FA25DA2143FA2 -5DA2147FA292C9FCA25CA25CA21301A25CA21303A25CA21307A25CA2130FA25CEB3FF000 -7FB512F8B6FCA2333971B83B>84 D87 D<14F8EB07FE90381F871C90383E03FE137CEBF801120148486C5A485A12 -0FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F5D48ECC1C0A2141F15 -831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901 -F000F0222677A42A>97 D<147F903803FFC090380FC1E090381F0070017E137849133839 -01F801F83803F003120713E0120FD81FC013F091C7FC485AA2127F90C8FCA35A5AA45AA3 -153015381578007C14F0007EEB01E0003EEB03C0EC0F806CEB3E00380F81F83803FFE0C6 -90C7FC1D2677A426>99 DI<147F903803FFC090380FC1E090383F00F0017E13785B -485A485A485A120F4913F8001F14F0383F8001EC07E0EC1F80397F81FF00EBFFF8148090 -C8FC5A5AA55AA21530007C14381578007E14F0003EEB01E0EC03C06CEB0F806CEB3E0038 -0781F83803FFE0C690C7FC1D2677A426>IIIII108 -DII<147F903803FFC090380FC1F090381F00F8 -017E137C5B4848137E4848133E0007143F5B120F485AA2485A157F127F90C7FCA215FF5A -4814FEA2140115FC5AEC03F8A2EC07F015E0140F007C14C0007EEB1F80003EEB3F00147E -6C13F8380F83F03803FFC0C648C7FC202677A42A>I<9039078007C090391FE03FF09039 -3CF0787C903938F8E03E9038787FC00170497EECFF00D9F0FE148013E05CEA01E113C15C -A2D80003143FA25CA20107147FA24A1400A2010F5C5E5C4B5A131F5EEC80035E013F495A -6E485A5E6E48C7FC017F133EEC70FC90387E3FF0EC0F8001FEC9FCA25BA21201A25BA212 -03A25B1207B512C0A3293580A42A>II<39 -03C003F0390FF01FFC391E783C0F381C7C703A3C3EE03F8038383FC0EB7F800078150000 -701300151CD8F07E90C7FCEAE0FE5BA2120012015BA312035BA312075BA3120F5BA3121F -5BA3123F90C9FC120E212679A423>I<14FE903807FF8090380F83C090383E00E04913F0 -0178137001F813F00001130313F0A215E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F -6D13807F010F13C01300143F141F140F123E127E00FE1480A348EB1F0012E06C133E0070 -5B6C5B381E03E06CB45AD801FEC7FC1C267AA422>II<13F8D803FEEB01C0D8078FEB03E0390E0F8007121E121C00 -38140F131F007815C01270013F131F00F0130000E015805BD8007E133FA201FE14005B5D -120149137EA215FE120349EBFC0EA20201131E161C15F813E0163CD9F003133814070001 -ECF07091381EF8F03A00F83C78E090393FF03FC090390FC00F00272679A42D>I<01F015 -07D803FC903903801F80D8071E903907C03FC0D80E1F130F121C123C0038021F131F49EC -800F00701607A249133FD8F07E168000E0ED000313FEC64849130718000001147E5B03FE -5B0003160E495BA2171E00070101141C01E05B173C1738A217781770020314F05F000301 -0713016D486C485A000190391E7C07802800FC3C3E0FC7FC90393FF81FFE90390FE003F0 -322679A437>119 D<903907E007C090391FF81FF89039787C383C9038F03E703A01E01E -E0FE3803C01F018013C0D8070014FC481480000E1570023F1300001E91C7FC121CA2C75A -A2147EA214FEA25CA21301A24A1370A2010314F016E0001C5B007E1401010714C000FEEC -0380010F1307010EEB0F0039781CF81E9038387C3C393FF03FF03907C00FC027267CA427 ->I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi ecrm1200 12 26 -/Fi 26 122 df<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A78891B>46 -D<14FF010713E090381F81F890383E007C01FC133F4848EB1F8049130F4848EB07C04848 -EB03E0A2000F15F0491301001F15F8A2003F15FCA390C8FC4815FEA54815FFB3A46C15FE -A56D1301003F15FCA3001F15F8A26C6CEB03F0A36C6CEB07E0000315C06D130F6C6CEB1F -806C6CEB3F00013E137C90381F81F8903807FFE0010090C7FC28447CC131>48 -D50 D<14FF010713E0011F13F890387F -80FC9038FC007E48487F4848EB1F804848EB0FC0000FEC07E0485AED03F0485A16F8007F -140190C713FCA25AA216FE1500A516FFA46C5CA36C7E5D121F7F000F5C6C6C1306150E6C -6C5B6C6C5BD8007C5B90383F01E090390FFF80FE903801FE0090C8FC150116FCA4ED03F8 -A216F0D80F801307486C14E0486C130F16C0ED1F80A249EB3F0049137E001EC75A001C49 -5A000F495A3907E01FE06CB51280C649C7FCEB1FF028447CC131>57 -D<1960F001E0F00780F03E0018F8EF03C0050FC7FC173CEE01F0EE07C0041EC8FC1678ED -01E0ED0F80033EC9FC15F0EC03C0020FCAFC147CEB01F0EB0780011ECBFC1378EA03E0EA -0F80003CCCFC12F0A2123CEA0F80EA03E0EA0078131EEB0780EB01F0EB007C140FEC03C0 -EC00F0153EED0F80ED01E0ED0078161EEE07C0EE01F0EE003C170FEF03C0EF00F8183EF0 -0780F001E0F000603B3678B34C>60 D<12C012F0123CEA0F80EA03E0EA0078131EEB0780 -EB01F0EB007C140FEC03C0EC00F0153EED0F80ED01E0ED0078161EEE07C0EE01F0EE003C -170FEF03C0EF00F8183EF00780F001E0A2F00780F03E0018F8EF03C0050FC7FC173CEE01 -F0EE07C0041EC8FC1678ED01E0ED0F80033EC9FC15F0EC03C0020FCAFC147CEB01F0EB07 -80011ECBFC1378EA03E0EA0F80003CCCFC12F012C03B3678B34C>62 -D64 D68 D75 -D<49B41303010FEBE007013F13F89039FE00FE0FD801F8131FD807E0EB079F49EB03DF48 -486DB4FC48C8FC4881003E81127E82127C00FC81A282A37E82A27EA26C6C91C7FC7F7FEA -3FF813FE381FFFE06C13FE6CEBFFE06C14FC6C14FF6C15C0013F14F0010F80010180D900 -1F7F14019138001FFF03031380816F13C0167F163F161F17E000C0150FA31607A37EA36C -16C0160F7E17806C151F6C16006C5D6D147ED8FBC05CD8F9F0495AD8F07C495A90393FC0 -0FE0D8E00FB51280010149C7FC39C0003FF02B487BC536>83 D97 DI<167FED3FFFA315018182B3EC7F80903803FFF0 -90380FC07C90383F000E017E1307496D5AD803F87F48487F5B000F81485AA2485AA2127F -A290C8FC5AAB7E7FA2123FA26C7EA2000F5D7F6C6C5B00035C6C6C9038077F806C6C010E -13C0013F011C13FE90380FC0F8903803FFE09026007F0013002F467DC436>100 -DI103 D107 DII<3901FC01FE00FF903807FFC091381E07F091383801F800 -0701707F0003EBE0002601FDC07F5C01FF147F91C7FCA25BA35BB3A8486CECFF80B5D8F8 -3F13FEA32F2C7DAB36>II<3901FC03FC00 -FF90380FFF8091383C07E091387001F83A07FDE000FE00010180137F01FFEC3F8091C7EA -1FC04915E049140F17F0160717F8160317FCA3EE01FEABEE03FCA3EE07F8A217F0160F6D -15E0EE1FC06D143F17806EEB7E00D9FDC05B9039FCF003F891383C0FE091381FFF80DA03 -FCC7FC91C9FCAE487EB512F8A32F3F7DAB36>I<3903F803F000FFEB1FFCEC3C3EEC707F -0007EBE0FF3803F9C000015B13FBEC007E153C01FF13005BA45BB3A748B4FCB512FEA320 -2C7DAB26>114 D<1306A5130EA4131EA3133E137EA213FE12011207001FB512F0B6FCA2 -C648C7FCB3A4150CAA017E131C017F1318A26D133890381F8030ECC070903807E0E09038 -01FFC09038007F001E3E7EBC26>116 DII121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj ecrm1728 17.28 17 -/Fj 17 119 df<170FA34D7EA24D7EA34D7EA34D7EA34C7F17DFA29338039FFC178FA293 -38070FFE1707040F7FEE0E03A2041E80EE1C01A2043C80EE3800A24C80187FA24C80183F -A24B4880181F0303814C130FA203078193C71207A24B81030E80A24B8284A24B8284A24B -82197F03F0824B153FA20201834B151FA202038392B8FCA24A83A292C91207020E8385A2 -4A8485023C84023882A20278840270177FA202F0844A173FA24948841A1FA24948841A0F -A249CB7F1A074985865B496C85497E48486C4D7F000F01F8051F13F0B60407B612F0A45C -657CE465>65 D68 D71 D87 -D97 D<4AB47E020F13F8023F13FE -9139FF007F80D903FCEB07E0D907F0EB01F0D91FE0EB007849488049488049C87E48485D -4915FF00034B138048485CA2485AA2485AA2003F6F130049EC007C94C7FC127FA35B12FF -AD127F7FA4123F7FA2001FEE01C07F000F16036D168012076C6C15076D160000015E6C6C -151E6D6C5C6D6C5C6D6C5CD90FF8495AD903FCEB07C0903A00FF803F8091263FFFFEC7FC -020F13F80201138032417BBF3C>99 D101 D<1378EA01FE487E487FA66C90C7FC6C5AEA007890C8FCB3 -A2EB0780EA0FFFB5FCA41203C6FCA2137FB3B3AC497E487FB61280A4195F7BDE25>105 -D -108 DII<4A -B47E020F13F0027F13FE4AC67ED903F8EB1FC0D907E0EB07E0D91FC0EB03F849486D7E49 -C87E01FE157F49814848ED1F80000317C04848ED0FE0A24848ED07F0A2001F17F8491503 -003F17FCA3007F17FE491501A400FF17FFAC007F17FEA26D1503A3003F17FCA2001F17F8 -6D1507A2000F17F06D150F000717E06C6CED1FC0A26C6CED3F806C6CED7F00017F15FE6D -6C495A6D6C495A6D6C495AD903F8EB1FC06DB4EBFF806D6CB448C7FC020F13F002011380 -38417BBF43>II<010FEB07F8D80FFFEB1FFEB590387FFF809238F81FC0913801E03F913903C07F -E00003EB0780C6EB0F00140E6D5A0218EB3FC00238EB1F800230EB0600027090C7FCA214 -6014E0A25CA55CB3B0497E4813F0B612F8A42B3F7BBE34>114 D<1470A714F0A51301A3 -1303A21307A2130FA2131F133F137F13FF1203000F90B6FCB8FCA326000FF0C8FCB3AEEE -01C0AE6D6CEB0380A316076D6C14005E6D6C130E6D6C131E6E6C5A91383FE0F86EB45A02 -0713C0020090C7FC2A597ED734>116 DII E -%EndDVIPSBitmapFont -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%BeginPaperSize: Letter -letter -%%EndPaperSize - -%%EndSetup -%%Page: 1 1 -1 0 bop 809 432 a Fj(eGroupW)-11 b(are)45 b(Application)i(Dev)l -(elopmen)l(t)1082 708 y Fi(Dan)33 b(Kuyk)m(endall)g()1442 939 y(v0.9)g(29)f(Septem)m(b)s(er)h(2000)208 -1246 y Fh(This)40 b(do)l(cument)e(explains)h(eGr)l(oupW)-6 -b(ar)l(e's)40 b(infr)l(astructur)l(e)e(and)h(API,)g(along)h(with)f -(what)h(is)f(r)l(e)l(quir)l(e)l(d)f(to)208 1345 y(inte)l(gr)l(ate)29 -b(applic)l(ations)j(into)e(it.)0 1656 y Fg(Con)l(ten)l(ts)0 -1874 y Ff(1)77 b(In)m(tro)s(duction)3201 b(2)125 2009 -y Fe(1.1)83 b(Ov)n(erview)26 b(of)i(application)f(writing)41 -b(.)g(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f -(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -134 b(2)125 2145 y(1.2)83 b(What)28 b(do)r(es)f(the)h(eGroupW)-7 -b(are)27 b(API)h(pro)n(vide?)45 b(.)d(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) -f(.)h(.)134 b(2)0 2363 y Ff(2)77 b(Guidelines)3286 b(3)125 -2499 y Fe(2.1)83 b(Requiremen)n(ts)49 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f -(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) -f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h -(.)f(.)h(.)134 b(3)125 2634 y(2.2)83 b(W)-7 b(riting/p)r(orting)27 -b(y)n(our)f(application)52 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) -f(.)h(.)f(.)h(.)f(.)h(.)134 b(3)0 2852 y Ff(3)77 b(Installing)30 -b(y)m(our)j(application)2626 b(4)125 2988 y Fe(3.1)83 -b(Ov)n(erview)75 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h -(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) -h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 -b(4)125 3123 y(3.2)83 b(Automatic)28 b(features)41 b(.)g(.)h(.)g(.)f(.) -h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) -f(.)h(.)134 b(4)125 3258 y(3.3)83 b(A)n(dding)28 b(\034les,)f -(directories)g(and)g(icons.)72 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) -f(.)h(.)f(.)h(.)f(.)h(.)134 b(4)125 3394 y(3.4)83 b(Making)27 -b(eGroupW)-7 b(are)26 b(a)n(w)n(are)g(of)h(y)n(our)g(application)65 -b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(4)125 3529 -y(3.5)83 b(Ho)r(oking)27 b(in)n(to)g(A)n(dministration)h(page)77 -b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 -b(5)125 3664 y(3.6)83 b(Ho)r(oking)27 b(in)n(to)g(Preferences)g(page)c -(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h -(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) -h(.)134 b(5)0 3883 y Ff(4)77 b(Infrastructure)3142 b(5)125 -4018 y Fe(4.1)83 b(Ov)n(erview)75 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g -(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)134 b(5)125 4154 y(4.2)83 b(Directory)27 -b(tree)35 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) -f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 -b(6)125 4289 y(4.3)83 b(T)-7 b(ranslations)33 b(.)41 -b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h -(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) -h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)0 4507 -y Ff(5)77 b(The)31 b(API)3360 b(7)125 4643 y Fe(5.1)83 -b(In)n(tro)r(duction)26 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f -(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -134 b(7)125 4778 y(5.2)83 b(Basic)27 b(functions)59 b(.)41 -b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h -(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.) -h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)125 4913 y(5.3)83 -b(Application)28 b(F)-7 b(unctions)66 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h -(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) -f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 -b(8)125 5049 y(5.4)83 b(File)28 b(functions)50 b(.)42 -b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(8)125 5184 -y(5.5)83 b(Email/NNTP)29 b(F)-7 b(unctions)57 b(.)41 -b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h -(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) -h(.)f(.)h(.)134 b(9)1929 5589 y(1)p eop -%%Page: 2 2 -2 1 bop 0 83 a Ff(6)77 b(Con\034guration)31 b(V)-8 b(ariables)2738 -b(9)125 218 y Fe(6.1)83 b(In)n(tro)r(duction)26 b(.)41 -b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h -(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) -h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(9)125 354 -y(6.2)83 b(User)27 b(information)59 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.) -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f -(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -93 b(10)125 489 y(6.3)83 b(Group)27 b(information)57 -b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(10)125 624 y(6.4)83 -b(Serv)n(er)26 b(information)62 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) -h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g -(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 -b(10)125 760 y(6.5)83 b(Database)27 b(information)81 -b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f -(.)h(.)f(.)h(.)f(.)h(.)93 b(11)125 895 y(6.6)83 b(Mail)28 -b(information)59 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) -f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 -b(11)125 1031 y(6.7)83 b(NNTP)29 b(information)47 b(.)41 -b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) -f(.)h(.)f(.)h(.)f(.)h(.)93 b(11)125 1166 y(6.8)83 b(Application)28 -b(information)60 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(12)0 1384 y -Ff(7)77 b(Using)31 b(Language)h(Supp)s(ort)2644 b(12)125 -1520 y Fe(7.1)83 b(Ov)n(erview)75 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g -(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)93 b(12)125 1655 y(7.2)83 b(Ho)n(w)27 -b(to)h(use)f(lang)g(supp)r(ort)39 b(.)i(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(12)125 -1790 y(7.3)83 b(Common)27 b(return)h(co)r(des)61 b(.)42 -b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) -f(.)h(.)f(.)h(.)93 b(14)0 2009 y Ff(8)77 b(Using)31 b(T)-8 -b(emplates)2982 b(14)125 2144 y Fe(8.1)83 b(Ov)n(erview)75 -b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.) -g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 -b(14)125 2279 y(8.2)83 b(Ho)n(w)27 b(to)h(use)f(templates)83 -b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) -g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f -(.)h(.)f(.)h(.)f(.)h(.)93 b(14)0 2498 y Ff(9)77 b(Ab)s(out)31 -b(this)g(do)s(cumen)m(t)2786 b(14)125 2633 y Fe(9.1)83 -b(New)28 b(v)n(ersions)69 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h -(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) -h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 -b(14)125 2769 y(9.2)83 b(Commen)n(ts)95 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.) -g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) -f(.)h(.)f(.)h(.)93 b(14)125 2904 y(9.3)83 b(History)f(.)42 -b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(15)125 -3039 y(9.4)83 b(Cop)n(yrigh)n(ts)26 b(and)h(T)-7 b(rademarks)110 -b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) -h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f -(.)h(.)93 b(15)125 3175 y(9.5)83 b(A)n(c)n(kno)n(wledgmen)n(ts)26 -b(and)h(Thanks)85 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) -h(.)f(.)h(.)f(.)h(.)93 b(15)0 3482 y Fg(1)131 b(In)l(tro)t(duction)0 -3699 y Fe(eGroupW)-7 b(are)32 b(is)h(a)g(w)n(eb)g(based)f(group)n(w)n -(are)f(application)h(framew)n(ork)f(\(API\),)k(for)e(writing)f -(applications.)53 b(In)n(tegrated)0 3799 y(applications)26 -b(suc)n(h)h(as)g(email,)g(calendar,)f(to)r(do)h(list,)h(address)e(b)r -(o)r(ok,)h(and)g(\034le)g(manager)f(are)g(included.)37 -b(eGroupW)-7 b(are)26 b(is)0 3898 y(a)h(fork)g(of)h(phpGroupW)-7 -b(are,)26 b(for)h(whic)n(h)h(the)g(original)e(v)n(ersion)g(of)h(this)h -(do)r(cumen)n(t)g(w)n(as)e(written.)0 4163 y Fd(1.1)112 -b(Ov)m(erview)37 b(of)h(application)d(writing)0 4352 -y Fe(W)-7 b(e)26 b(ha)n(v)n(e)f(attempted)h(to)f(mak)n(e)g(writing)g -(applications)g(for)g(eGroupW)-7 b(are)25 b(as)g(painless)g(as)g(p)r -(ossible.)36 b(W)-7 b(e)26 b(hop)r(e)f(an)n(y)g(pain)0 -4452 y(and)i(su\033ering)g(is)h(caused)f(b)n(y)g(making)g(y)n(our)f -(application)h(w)n(ork,)f(but)i(not)g(dealing)f(with)h(eGroupW)-7 -b(are)26 b(itself.)0 4717 y Fd(1.2)112 b(What)38 b(do)s(es)g(the)f -(eGroupW)-9 b(are)38 b(API)e(pro)m(vide?)0 4906 y Fe(The)42 -b(eGroupW)-7 b(are)41 b(API)j(handles)e(session)f(managemen)n(t,)k -(user/group)40 b(managemen)n(t,)45 b(has)d(supp)r(ort)g(for)g(m)n -(ultiple)0 5005 y(databases,)d(using)e(either)g(PHPLIB)h(or)f(ADODB)h -(database)e(abstraction)g(metho)r(ds,)41 b(w)n(e)c(supp)r(ort)g -(templates)g(using)0 5105 y(the)28 b(PHPLIB)g(T)-7 b(emplates)28 -b(class,)e(a)i(\034le)f(system)h(in)n(terface,)f(and)g(ev)n(en)g(a)g -(net)n(w)n(ork)f(i/o)h(in)n(terface.)0 5240 y(On)f(top)h(of)f(these)h -(standard)e(functions,)j(eGroupW)-7 b(are)25 b(pro)n(vides)g(sev)n -(eral)g(functions)h(to)h(giv)n(e)e(y)n(ou)h(the)h(information)f(y)n(ou) -0 5340 y(need)i(ab)r(out)f(the)h(users)f(en)n(vironmen)n(t,)f(and)i(to) -f(prop)r(erly)g(plug)g(in)n(to)g(eGroupW)-7 b(are.)1929 -5589 y(2)p eop -%%Page: 3 3 -3 2 bop 0 83 a Fg(2)131 b(Guidelines)0 317 y Fd(2.1)112 -b(Requiremen)m(ts)0 506 y Fe(These)26 b(guidelines)g(m)n(ust)g(b)r(e)h -(follo)n(w)n(ed)e(for)g(an)n(y)h(application)f(that)i(w)n(an)n(ts)e -(considered)g(for)h(inclusion)f(in)n(to)h(eGroupW)-7 -b(are:)125 725 y Fc(\017)41 b Fe(It)27 b(m)n(ust)h(run)g(on)f(PHP4)h -(and)g(PHP5.)125 891 y Fc(\017)41 b Fe(SQL)27 b(statemen)n(ts)g(m)n -(ust)h(b)r(e)g(compatible)g(with)g(b)r(oth)g(MySQL)f(and)h(P)n -(ostgreSQL.)e(When)i(in)g(doubt)g(it)g(is)g(b)r(est)g(to)208 -990 y(stic)n(k)f(with)h(SQL92.)125 1156 y Fc(\017)41 -b Fe(It)27 b(m)n(ust)h(use)g(our)e(default)i(header.inc.php)f(include.) -125 1322 y Fc(\017)41 b Fe(It)27 b(m)n(ust)h(use)g(our)e -($GLOBALS['phpgw']->link\($url\))g(for)h(all)g(links)h(\(this)g(is)f -(for)g(session)g(supp)r(ort\).)125 1488 y Fc(\017)41 -b Fe(It)27 b(m)n(ust)h(use)g(\020p)r(ost\021)33 b(for)27 -b(forms.)125 1654 y Fc(\017)41 b Fe(It)27 b(m)n(ust)h(resp)r(ect)f -(phpGW)i(group)d(righ)n(ts)h(and)g(phpGW)i(user)e(p)r(ermissions.)125 -1820 y Fc(\017)41 b Fe(It)27 b(m)n(ust)h(use)g(our)e(directory)h -(structure,)g(template)g(supp)r(ort)h(and)f(lang)g(\(m)n -(ulti-language\))f(supp)r(ort.)125 1986 y Fc(\017)41 -b Fe(Where)27 b(p)r(ossible)g(it)h(should)f(run)h(on)f(b)r(oth)h(Unix)g -(and)f(NT)h(platforms.)125 2153 y Fc(\017)41 b Fe(F)-7 -b(or)22 b(applications)h(that)g(do)h(not)f(meet)h(these)f(requiremen)n -(ts,)g(they)h(can)f(b)r(e)h(made)f(a)n(v)-5 b(ailable)22 -b(to)h(users)g(ho)n(w)n(ev)n(er)e(y)n(ou)208 2252 y(decide.)36 -b(If)27 b(y)n(ou)f(need)g(help)h(con)n(v)n(erting)e(y)n(our)g -(application)h(to)g(templates)h(and)f(our)g(lang)g(supp)r(ort,)g(w)n(e) -g(will)h(try)f(to)208 2352 y(connect)h(y)n(ou)g(with)h(someone)e(to)i -(help.)0 2620 y Fd(2.2)112 b(W)-9 b(riting/p)s(orting)34 -b(y)m(our)j(application)0 2809 y Ff(Include)32 b(\034les)0 -2998 y Fe(Eac)n(h)27 b(PHP)i(page)e(y)n(ou)g(write)g(will)h(need)f(to)h -(include)g(the)g(header.inc.php)f(along)f(with)i(a)g(few)f(v)-5 -b(ariables.)0 3097 y(This)28 b(is)f(done)g(b)n(y)h(putting)g(this)g(at) -f(the)h(top)f(of)h(eac)n(h)f(PHP)i(page.)87 3399 y Fb()0 4198 y Fe(Of)28 b(course)e(c)n(hange)g(application)h(name)g -(to)h(\034t.)0 4298 y(This)g(include)f(will)h(pro)n(vide)f(the)g(follo) -n(wing)g(things:)125 4516 y Fc(\017)41 b Fe(The)27 b(phpgwAPI)h(-)g -(The)f(eGroupW)-7 b(are)26 b(API)j(will)f(b)r(e)g(loaded.)125 -4682 y Fc(\017)41 b Fe(The)27 b(phpGW)i(na)n(vbar)d(will)h(b)r(e)h -(loaded)f(\(b)n(y)h(default,)g(but)g(can)f(b)r(e)h(disabled)f(un)n(til) -h(a)f(later)g(p)r(oin)n(t.)125 4848 y Fc(\017)41 b Fe -(appname/inc/functions.inc.php)31 b(-)i(This)f(\034le)h(is)g(loaded)f -(just)h(after)f(the)h(phpgwAPI)g(and)g(b)r(efore)f(an)n(y)g(HTML)208 -4948 y(co)r(de)26 b(is)g(generated.)36 b(This)26 b(\034le)h(should)f -(include)h(all)g(y)n(our)e(application)h(sp)r(eci\034c)g(functions..)37 -b(Y)-7 b(ou)27 b(are)e(w)n(elcome)h(to)208 5048 y(include)h(an)n(y)g -(additional)g(\034les)h(y)n(ou)e(need)i(from)f(within)i(this)e(\034le.) -125 5214 y Fc(\017)41 b Fe(appname/inc/header.inc.php)d(-)h(This)h -(\034le)g(is)g(loaded)g(just)g(after)g(the)g(system)g(header/na)n -(vbar,)g(and)g(allo)n(ws)208 5313 y(dev)n(elop)r(ers)26 -b(to)h(use)h(it)g(for)f(whatev)n(er)f(they)i(need)f(to)h(load.)1929 -5589 y(3)p eop -%%Page: 4 4 -4 3 bop 125 83 a Fc(\017)41 b Fe(appname/inc/fo)r(oter.inc.php)27 -b(-)i(This)h(\034le)f(is)g(loaded)g(just)h(b)r(efore)f(the)g(system)g -(fo)r(oter,)h(allo)n(wing)d(dev)n(elop)r(ers)h(to)208 -183 y(close)e(connections)h(and)g(whatev)n(er)g(else)g(they)h(need.)125 -349 y Fc(\017)41 b Fe(The)27 b(phpGW)i(fo)r(oter)e(will)g(b)r(e)h -(loaded,)f(whic)n(h)h(closes)e(sev)n(eral)g(connections.)0 -659 y Fg(3)131 b(Installing)46 b(y)l(our)e(application)0 -893 y Fd(3.1)112 b(Ov)m(erview)0 1082 y Fe(It)28 b(is)f(fairly)g -(simple)h(to)f(add)h(and)f(delete)h(applications)f(to/from)f(eGroupW)-7 -b(are.)0 1350 y Fd(3.2)112 b(Automatic)35 b(features)0 -1539 y Fe(T)-7 b(o)27 b(mak)n(e)g(things)g(easy)g(for)g(dev)n(elop)r -(ers)f(w)n(e)h(go)g(ahead)g(and)g(load)g(the)h(follo)n(wing)e(\034les.) -125 1758 y Fc(\017)41 b Fe(appname/inc/functions.inc.php)26 -b(-)i(This)f(\034le)h(should)f(include)h(all)f(y)n(our)g(application)g -(sp)r(eci\034c)g(functions.)125 1924 y Fc(\017)41 b Fe -(appname/inc/header.inc.php)e(-)i(This)h(\034le)f(is)g(loaded)g(b)n(y)g -($GLOBALS['phpgw']->common->header)d(just)208 2023 y(after)27 -b(the)h(system)f(header/na)n(vbar,)d(and)k(allo)n(ws)e(dev)n(elop)r -(ers)g(to)i(use)f(it)h(for)f(whatev)n(er)f(they)i(need)g(to)f(load.)125 -2189 y Fc(\017)41 b Fe(appname/inc/fo)r(oter.inc.php)28 -b(-)i(This)h(\034le)f(is)h(loaded)e(b)n(y)h -($GLOBALS['phpgw']->common->fo)r(oter)d(just)k(b)r(e-)208 -2289 y(fore)26 b(the)i(system)g(fo)r(oter,)f(allo)n(wing)f(dev)n(elop)r -(ers)g(to)h(close)g(connections)g(and)g(whatev)n(er)g(else)g(they)h -(need.)0 2557 y Fd(3.3)112 b(A)m(dding)37 b(\034les,)g(directories)e -(and)k(icons.)0 2746 y Fe(Y)-7 b(ou)28 b(will)f(need)h(to)g(create)e -(the)i(follo)n(wing)f(directories)f(for)h(y)n(our)f(co)r(de)0 -2846 y(\(replace)h('appname')g(with)h(y)n(our)e(application)h(name\))0 -3081 y Fb(`--appname)87 3216 y(|--inc)87 3351 y(|)130 -b(|--functions.inc.)o(ph)o(p)87 3487 y(|)g(|--header.inc.php)87 -3622 y(|)g(|--hook_preferenc)o(es)o(.in)o(c.)o(ph)o(p)87 -3757 y(|)g(|--hook_admin.inc)o(.p)o(hp)87 3893 y(|)g(`--footer.inc.php) -87 4028 y(`--templates)87 4163 y(|)g(`--default)0 4650 -y Fd(3.4)112 b(Making)38 b(eGroupW)-9 b(are)37 b(a)m(w)m(are)h(of)g(y)m -(our)f(application)0 4839 y Fe(Please)31 b(see)h(the)g(do)r(cumen)n -(tation)f(in)h(the)g(setup/do)r(c)g(directory)e(for)h(information)g(on) -h(in)n(tegrating)e(in)n(to)h(eGroupW)-7 b(are.)0 4939 -y(This)33 b(is)g(v)n(ery)g(imp)r(ortan)n(t)g(since)g(the)g(steps)h(for) -e(database)g(table)i(setup)f(and)g(mo)r(di\034cation)g(discussed)g -(there)g(m)n(ust)h(b)r(e)0 5038 y(follo)n(w)n(ed.)1929 -5589 y(4)p eop -%%Page: 5 5 -5 4 bop 0 83 a Fd(3.5)112 b(Ho)s(oking)37 b(in)m(to)f(A)m -(dministration)e(page)0 272 y Fe(When)26 b(a)g(user)f(go)r(es)g(to)g -(the)i(A)n(dministration)e(page,)g(it)h(starts)f(appname/inc/ho)r -(ok_admin.inc.php)f(for)h(eac)n(h)g(applica-)0 372 y(tion)j(that)g(is)g -(enabled,)f(in)h(alphab)r(etical)g(order)e(of)i(application)f(title.)38 -b(If)29 b(the)f(\034le)g(exists,)f(it)i(is)e(include\(\)d)i(in)f(the)g -(hop)r(es)0 471 y(it)g(will)g(displa)n(y)f(a)g(selection)g(of)g(links)h -(to)f(con\034gure)f(that)i(application.)0 607 y(Simple)g(Example:)0 -889 y Fb(li)o(nk)o(\(')o(myA)o(dm)o(inP)o(ag)o(e.)o -(php)o('\))37 b(.)43 b('">';)87 1387 y(echo)f(lang\('Change)d(myApp)i -(settings'\))e(.)k('';)87 1487 y(section_end\(\);)0 -1587 y(?>)0 1869 y Fe(Lo)r(ok)27 b(at)g(headlines/inc/ho)r -(ok_admin.inc.php)f(and)h(admin/inc/ho)r(ok_admin.inc.php)f(for)h(more) -g(examples.)0 2005 y(Things)g(to)h(note:)125 2200 y Fc(\017)41 -b Fe(Links)23 b(are)f(relativ)n(e)h(to)g(the)h(admin/index.php)g -(\034le,)h(not)e(y)n(our)f(application's)h(base)g(directory)-7 -b(.)34 b(\(so)24 b(use)f($appname)208 2299 y(in)k(y)n(our)g(link\(\))h -(calls\))125 2456 y Fc(\017)41 b Fe(The)27 b(\034le)h(is)f(brough)n(t)g -(in)h(with)g(include\(\))g(so)f(b)r(e)h(careful)f(to)h(not)f(p)r -(ollute)h(the)g(name-space)e(to)r(o)h(m)n(uc)n(h)0 2651 -y(The)k(standard)f($GLOBALS['phpgw'])h(and)f($GLOBALS['phpgw_info'])g -(v)-5 b(ariables)30 b(are)g(in-scop)r(e,)i(as)e(is)h($appname)0 -2751 y(whic)n(h)c(corresp)r(onds)f(to)i(the)f(application)g(name)h(in)f -(the)h(path.)0 2886 y(There)22 b(are)f(2)h(functions)h(to)f(co)r -(ordinate)f(the)i(displa)n(y)e(of)i(eac)n(h)e(application's)g(links,)j -(section_start\(\))d(and)h(section_end\(\))0 3134 y Ff(section_start)0 -3323 y Fe(section_start\($title,$icon_url\))32 b(starts)j(the)g -(section)g(for)f(y)n(our)g(application.)58 b($title)35 -b(is)g(passed)g(through)f(lang\(\))h(for)0 3422 y(y)n(ou.)h($icon_url) -26 b(should)h(b)r(e)h(page-relativ)n(e)d(to)j(admin/index.php)f(or)g -(an)g(absolute)g(URL.)0 3670 y Ff(section_end)0 3859 -y Fe(section_end\(\))g(closes)g(the)h(section)f(that)h(w)n(as)e -(started)h(with)h(section_start\(\).)0 4123 y Fd(3.6)112 -b(Ho)s(oking)37 b(in)m(to)f(Preferences)i(page)0 4312 -y Fe(The)23 b(mec)n(hanism)f(to)h(ho)r(ok)f(in)n(to)h(the)g -(preferences)f(page)g(is)g(iden)n(tical)h(to)g(the)g(one)f(used)h(to)g -(ho)r(ok)f(in)n(to)h(the)g(administration)0 4411 y(page,)c(ho)n(w)n(ev) -n(er)e(it)h(lo)r(oks)g(for)f(appname/inc/ho)r(ok_preferences.inc.php)e -(instead)k(of)f(appname/inc/ho)r(ok_admin.inc.php.)0 -4511 y(The)28 b(same)f(functions)g(and)h(v)-5 b(ariables)26 -b(are)h(de\034ned.)0 4817 y Fg(4)131 b(Infrastructure)0 -5051 y Fd(4.1)112 b(Ov)m(erview)0 5240 y Fe(eGroupW)-7 -b(are)26 b(attempts)i(to)g(pro)n(vide)e(dev)n(elop)r(ers)g(with)i(a)f -(sound)h(directory)e(structure)h(to)g(w)n(ork)f(from.)0 -5340 y(The)38 b(directory)e(la)n(y)n(out)g(ma)n(y)h(seem)g(complex)g -(at)g(\034rst,)j(but)e(after)f(some)g(use,)j(y)n(ou)c(will)i(see)f -(that)h(it)g(is)f(designed)g(to)1929 5589 y(5)p eop -%%Page: 6 6 -6 5 bop 0 83 a Fe(accommo)r(date)26 b(a)i(large)e(n)n(um)n(b)r(er)h(of) -g(applications)g(and)g(functions.)0 351 y Fd(4.2)112 -b(Directory)36 b(tree)0 540 y Fb(.--appname)0 675 y(|)130 -b(|--inc)0 811 y(|)g(|)h(|--functions.in)o(c.)o(php)0 -946 y(|)f(|)h(|--header.inc.p)o(hp)0 1082 y(|)f(|)h(|--hook_prefere)o -(nc)o(es.)o(in)o(i.)o(php)0 1217 y(|)f(|)h(|--hook_home.in)o(c.)o(php)0 -1352 y(|)f(|)h(`--footer.inc.p)o(hp)0 1488 y(|)f(|--manual)0 -1623 y(|)g(|--setup)0 1758 y(|)g(|)h(|--tables_basel)o(in)o(e.i)o(nc)o -(.p)o(hp)0 1894 y(|)f(|)h(|--tables_curre)o(nt)o(.in)o(c.)o(ph)o(p)0 -2029 y(|)f(|)h(|--tables_updat)o(e.)o(inc)o(.p)o(hp)0 -2164 y(|)f(|)h(|--setup.inc.ph)o(p)0 2300 y(|)f(`--templates)0 -2435 y(|)g(|)h(`--default)0 2571 y(|)f(|)261 b(`--images)0 -2706 y(|)130 b(|)348 b(`--navbar.png)0 2841 y(|)130 b -(|--preferences.ph)o(p)0 2977 y(|--docs)41 b(\(installation)d(docs\))0 -3112 y(|--files)0 3247 y(|)130 b(|--groups)0 3383 y(|)g(`--users)0 -3518 y(`--phpgwapi)131 3653 y(|--cron)40 b(\(egroupware's)e(optional)j -(daemons\))131 3789 y(|--doc)g(\(developer)e(docs\))131 -3924 y(|--inc)131 4060 y(|)130 b(|--class.phpgw.i)o(nc)o(.ph)o(p)131 -4195 y(|)g(|--class.common.)o(in)o(c.p)o(hp)131 4330 -y(|)g(`--etc..)131 4466 y(|--manual)131 4601 y(|--setup)131 -4736 y(|)g(|--tables_baseli)o(ne)o(.in)o(c.)o(ph)o(p)131 -4872 y(|)g(|--tables_curren)o(t.)o(inc)o(.p)o(hp)131 -5007 y(|)g(|--tables_update)o(.i)o(nc.)o(ph)o(p)131 5142 -y(|)g(|--setup.inc.php)131 5278 y(|--templates)1929 5589 -y Fe(6)p eop -%%Page: 7 7 -7 6 bop 131 83 a Fb(|)130 b(|--default)131 218 y(|)g(|)g(`--images)131 -354 y(|)g(|)g(|--home.gif)131 489 y(|)g(|)g(`--preferences.gi)o(f)131 -624 y(|)g(`--verilak)131 760 y(|)261 b(`--images)479 -895 y(|--home.gif)479 1031 y(`--preferences.gi)o(f)131 -1166 y(`--themes)261 1301 y(`--default.theme)0 1774 y -Fd(4.3)112 b(T)-9 b(ranslations)0 1963 y Fe(The)28 b(translations)e -(are)g(no)n(w)h(b)r(eing)h(done)f(thru)h(the)g(database,)e(and)h(will)h -(b)r(e)g(con\034gurable)e(to)i(use)f(other)g(mec)n(hanisms.)0 -2099 y(The)38 b(application,)i(dev)n(elop)r(er_to)r(ols,)f(pro)n(vides) -e(dev)n(elop)r(ers/translators)d(a)j(nice)h(GUI)h(for)f(building)g(and) -g(up)r(dating)0 2198 y(translations.)0 2507 y Fg(5)131 -b(The)44 b(API)0 2741 y Fd(5.1)112 b(In)m(tro)s(duction)0 -2930 y Fe(eGroupW)-7 b(are)26 b(attempts)i(to)g(pro)n(vide)e(dev)n -(elop)r(ers)g(with)i(a)f(useful)h(API)h(to)e(handle)h(common)f(tasks.)0 -3065 y(T)-7 b(o)27 b(do)g(this)h(w)n(e)g(ha)n(v)n(e)e(created)h(a)g(m)n -(ulti-dimensional)g(class)f($GLOBALS['phpgw'].)0 3201 -y(This)i(allo)n(ws)e(for)h(terri\034c)g(co)r(de)h(organization,)d(and)j -(help)g(dev)n(elop)r(ers)e(easily)h(iden)n(tify)h(the)g(\034le)g(that)g -(the)g(function)g(is)g(in.)0 3300 y(All)g(the)g(\034les)f(that)h(are)f -(part)g(of)g(this)h(class)f(are)f(in)i(the)g(inc/core)e(directory)g -(and)i(are)e(named)i(to)f(matc)n(h)h(the)g(sub-class.)0 -3436 y(Example:)37 b($GLOBALS['phpgw']->send->msg\(\))25 -b(is)i(in)h(the)g(inc/phpgw)n(api/phpgw_send.inc.php)e(\034le.)0 -3702 y Fd(5.2)112 b(Basic)37 b(functions)0 3891 y Ff -($GLOBALS['phpgw']->link)0 4080 y Fe($GLOBALS['phpgw']->link\($url\))0 -4179 y(A)n(dd)25 b(supp)r(ort)g(for)f(session)g(managemen)n(t.)35 -b(ALL)25 b(links)g(m)n(ust)g(use)g(this,)h(that)f(includes)g(href)6 -b('s)25 b(form)g(actions)f(and)h(header)0 4279 y(lo)r(cation's.)0 -4414 y(If)j(y)n(ou)f(are)f(just)j(doing)d(a)i(form)f(action)g(bac)n(k)g -(to)g(the)h(same)f(page,)g(y)n(ou)f(can)i(use)f(it)h(without)g(an)n(y)f -(parameters.)0 4550 y(This)f(function)h(is)f(righ)n(t)f(at)h(the)h -(core)e(of)h(the)g(class)f(b)r(ecause)h(it)g(is)g(used)h(so)e(often,)i -(w)n(e)e(w)n(an)n(ted)h(to)g(sa)n(v)n(e)e(dev)n(elop)r(ers)h(a)h(few)0 -4649 y(k)n(eystrok)n(es.)34 b(Example:)0 4941 y Fb()0 -5041 y(/*)h(If)f(session)f(management)e(is)k(done)f(via)g(passing)f -(url)h(parameters)e(*/)0 5141 y(/*)j(The)f(the)g(result)f(would)h(be)h -(*/)0 5240 y(/*)g()g(*/)1929 -5589 y Fe(7)p eop -%%Page: 8 8 -8 7 bop 0 83 a Fd(5.3)112 b(Application)35 b(F)-9 b(unctions)0 -272 y Ff($GLOBALS['phpgw']->common->phpgw_header\(\);)0 -461 y Fe($GLOBALS['phpgw']->phpgw_header\(\))0 561 y(Prin)n(t)28 -b(out)f(the)h(start)f(of)h(the)g(HTML)g(page,)e(including)i(the)g(na)n -(vigation)e(bar)h(and)g(includes)h(appname/inc/header.php)0 -812 y Ff($GLOBALS['phpgw']->common->phpgw_fo)s(oter\(\);)0 -1000 y Fe($GLOBALS['phpgw']->phpgw_fo)r(oter\(\))0 1100 -y(Prin)n(ts)g(the)f(system)h(fo)r(oter,)f(and)g(includes)h -(appname/inc/fo)r(oter.php)0 1351 y Ff -($GLOBALS['phpgw']->common->appsession\(\);)0 1540 y -Fe($GLOBALS['phpgw']->common->appsession\($data\))0 1640 -y(Store)f(imp)r(ortan)n(t)g(information)g(session)f(information)h(that) -h(y)n(our)e(application)h(needs.)0 1739 y -($GLOBALS['phpgw']->appsession)17 b(will)k(return)f(the)h(v)-5 -b(alue)20 b(of)h(y)n(our)e(session)g(data)h(is)h(y)n(ou)e(lea)n(v)n(e)g -(the)i(parameter)e(empt)n(y)0 1839 y([i.e.)37 b -($GLOBALS['phpgw']->appsession\(\020\021\)],)25 b(otherwise)h(it)i -(will)g(store)e(whatev)n(er)h(data)g(y)n(ou)g(send)g(to)h(it.)0 -1938 y(Y)-7 b(ou)22 b(can)g(also)g(store)f(a)h(comma)g(delimited)h -(string)f(and)g(use)g(explo)r(de\(\))h(to)f(turn)h(it)f(bac)n(k)g(in)n -(to)g(an)g(arra)n(y)e(when)j(y)n(ou)e(receiv)n(e)0 2038 -y(the)28 b(v)-5 b(alue)27 b(bac)n(k.)0 2173 y(Example:)87 -2472 y Fb($GLOBALS['phpgw')o(]->)o(co)o(mm)o(on-)o(>a)o(pp)o(ses)o(si)o -(on)o(\('/)o(pa)o(th)o(/to)o(/s)o(ome)o(th)o(in)o(g'\))o(;)87 -2572 y(echo)42 b("Dir:)f(")j(.)f($GLOBALS['phpgw)o(']-)o(>c)o(om)o(mon) -o(->)o(ap)o(pse)o(ss)o(ion)o(\(\))o(;)0 2939 y Fd(5.4)112 -b(File)36 b(functions)0 3128 y Ff(Please)31 b(also)g(see)g(the)h(phpgw) -m(api/do)s(c/vfs)f(directory)i(for)f(additional)f(VFS)h(class)f(do)s -(cumen)m(tation)0 3317 y($GLOBALS['phpgw']->vfs->read_\034le)0 -3506 y Fe($GLOBALS['phpgw']->vfs->read_\034le\($\034le\))0 -3605 y(Returns)c(the)h(data)f(from)h($\034le.)0 3705 -y(Y)-7 b(ou)28 b(m)n(ust)f(send)h(the)g(complete)f(path)h(to)f(the)h -(\034le.)0 3805 y(Example:)0 4103 y Fb($data)41 b(=)j($GLOBALS['phpgw)o -('])o(->v)o(fs)o(->)o(rea)o(d_)o(fi)o(le\()o('/)o(so)o(me/)o(di)o(r/t)o -(o/)o(fi)o(le.)o(tx)o(t')o(\);)0 4454 y Ff -($GLOBALS['phpgw']->vfs->write_\034le)0 4643 y Fe -($GLOBALS['phpgw']->vfs->write_\034le\($\034le,)24 b($con)n(ten)n(ts\)) -0 4742 y(W)-7 b(rite)28 b(data)f(to)g($\034le.)0 4842 -y(Y)-7 b(ou)28 b(m)n(ust)f(send)h(the)g(complete)f(path)h(to)f(the)h -(\034le.)0 4942 y(Example:)0 5240 y Fb($data)41 b(=)j($GLOBALS['phpgw)o -('])o(->v)o(fs)o(->)o(wri)o(te)o(_f)o(ile)o(\(")o(/s)o(ome)o(/d)o(ir/)o -(to)o(/f)o(ile)o(.t)o(xt)o("\);)1929 5589 y Fe(8)p eop -%%Page: 9 9 -9 8 bop 0 83 a Ff($GLOBALS['phpgw']->vfs->read_user\034le)0 -272 y Fe($GLOBALS['phpgw']->vfs->read_user\034le\($\034le\))0 -372 y(Returns)27 b(the)h(data)f(from)h($\034le,)f(whic)n(h)g(resides)g -(in)h(the)g(users)e(priv)-5 b(ate)28 b(dir.)0 471 y(Example:)0 -754 y Fb($data)41 b(=)j($GLOBALS['phpgw)o('])o(->v)o(fs)o(->)o(rea)o -(d_)o(us)o(erf)o(il)o(e\()o("fi)o(le)o(.tx)o(t")o(\);)0 -1101 y Ff($GLOBALS['phpgw']->vfs->write_user\034le)0 -1290 y Fe($GLOBALS['phpgw']->write_user\034le\($\034le,)24 -b($con)n(ten)n(ts\))0 1389 y(W)-7 b(rites)28 b(data)f(to)g($\034le,)g -(whic)n(h)h(resides)e(in)i(the)g(users)f(priv)-5 b(ate)27 -b(dir.)0 1489 y(Example:)0 1772 y Fb($data)41 b(=)j($GLOBALS['phpgw)o -('])o(->v)o(fs)o(->)o(wri)o(te)o(_u)o(ser)o(fi)o(le)o(\("f)o(il)o(e.t)o -(xt)o("\))o(;)0 2119 y Ff($GLOBALS['phpgw']->vfs->list_user\034les)0 -2308 y Fe($GLOBALS['phpgw']->vfs->list_user\034les\(\))0 -2407 y(Returns)27 b(an)h(arra)n(y)d(whic)n(h)i(has)g(the)h(list)g(of)g -(\034les)f(in)h(the)g(users)f(priv)-5 b(ate)27 b(dir.)0 -2507 y(Example:)0 2789 y Fb($filelist)40 b(=)j(array\(\);)0 -2889 y($filelist)d(=)j($GLOBALS['phpgw')o(]-)o(>v)o(fs-)o(>l)o(is)o -(t_u)o(se)o(rf)o(ile)o(s\()o(\);)0 3253 y Fd(5.5)112 -b(Email/NNTP)34 b(F)-9 b(unctions)0 3442 y Ff -($GLOBALS['phpgw']->send->msg)0 3631 y Fe -($GLOBALS['phpgw']->send->msg\($service,)23 b($to,)k($sub)5 -b(ject,)27 b($b)r(o)r(dy)-7 b(,)28 b($msgt)n(yp)r(e,)e($cc,)h($b)r -(cc\))0 3730 y(Send)h(a)f(message)f(via)h(email)h(or)e(NNTP)j(and)e -(returns)g(an)n(y)g(error)e(co)r(des.)0 3830 y(Example:)0 -4113 y Fb($to)42 b(=)h("someuser@domain.)o(co)o(m";)0 -4212 y($subject)d(=)j("Hello)e(buddy";)0 4312 y($body)g(=)j("Give)d(me) -i(a)g(call\\n)e(Been)h(wondering)e(what)h(your)h(up)h(to.";)0 -4411 y($errors)e(=)i($GLOBALS['phpgw)o(']-)o(>s)o(en)o(d->)o(ms)o(g\()o -("em)o(ai)o(l")o(,)38 b($to,)k($subject,)d($body\);)0 -4817 y Fg(6)131 b(Con\034guration)44 b(V)-11 b(ariables)0 -5051 y Fd(6.1)112 b(In)m(tro)s(duction)0 5240 y Fe(eGroupW)-7 -b(are)31 b(attempts)h(to)g(pro)n(vide)f(dev)n(elop)r(ers)f(with)j(as)e -(m)n(uc)n(h)h(information)f(ab)r(out)h(the)g(user,)h(group,)f(serv)n -(er,)f(and)0 5340 y(application)c(con\034guration)f(as)h(p)r(ossible.) -1929 5589 y(9)p eop -%%Page: 10 10 -10 9 bop 0 83 a Fe(T)-7 b(o)26 b(do)g(this)g(w)n(e)g(pro)n(vide)f(a)g -(m)n(ulti-dimensional)h(arra)n(y)e(called)h -('$GLOBALS['phpgw_info'][]',)h(whic)n(h)g(includes)g(all)g(the)0 -183 y(information)h(ab)r(out)g(y)n(our)g(en)n(vironmen)n(t.)0 -318 y(Due)h(to)g(the)f(m)n(ulti-dimensional)g(arra)n(y)f(approac)n(h.) -35 b(getting)27 b(these)g(v)-5 b(alues)28 b(is)f(easy)-7 -b(.)0 453 y(Here)27 b(are)g(some)g(examples:)87 755 y -Fb()87 1253 y()0 2119 -y Fd(6.2)112 b(User)38 b(information)0 2299 y Fa -($GLOBALS['phpgw_info'][\020user\021])q([\020use)q(rid\021)q(])45 -b(=)39 b(The)h(user)g(ID.)0 2427 y -($GLOBALS['phpgw_info'][\020user\021])q([\020ses)q(sion)q(id\021])46 -b(=)39 b(The)h(session)h(ID)0 2554 y -($GLOBALS['phpgw_info'][\020user\021])q([\020the)q(me\021])46 -b(=)39 b(Selected)i(theme)0 2681 y -($GLOBALS['phpgw_info'][\020user\021])q([\020pri)q(vate)q(_dir\021)q(]) -k(=)39 b(Users)i(private)g(dir.)79 b(Use)40 b(eGroupWare)h(core)f -(functions)h(for)0 2772 y(access)g(to)e(the)h(files.)0 -2899 y($GLOBALS['phpgw_info'][\020user\021])q([\020fir)q(stna)q -(me\021])46 b(=)39 b(Users)h(first)h(name)0 3026 y -($GLOBALS['phpgw_info'][\020user\021])q([\020las)q(tnam)q(e\021])k(=)40 -b(Users)g(last)g(name)0 3153 y($GLOBALS['phpgw_info'][\020user\021])q -([\020ful)q(lnam)q(e\021])45 b(=)40 b(Users)g(Full)g(Name)0 -3280 y($GLOBALS['phpgw_info'][\020user\021])q([\020gro)q(ups\021)q(])45 -b(=)39 b(Groups)i(the)f(user)g(is)g(a)f(member)i(of)0 -3407 y($GLOBALS['phpgw_info'][\020user\021])q([\020app)q(_per)q -(ms\021])46 b(=)39 b(If)h(the)g(user)g(has)g(access)g(to)g(the)g -(current)g(application)0 3534 y($GLOBALS['phpgw_info'][\020user\021])q -([\020las)q(tlog)q(in\021])46 b(=)39 b(Last)h(time)g(the)g(user)g -(logged)h(in.)0 3661 y($GLOBALS['phpgw_info'][\020user\021])q([\020las) -q(tlog)q(infro)q(m\021])k(=)40 b(Where)g(they)g(logged)h(in)f(from)g -(the)f(last)i(time.)0 3788 y($GLOBALS['phpgw_info'][\020user\021])q -([\020las)q(tpas)q(swd_c)q(hange)q(\021])k(=)40 b(Last)g(time)g(they)g -(changed)h(their)f(password.)0 3916 y -($GLOBALS['phpgw_info'][\020user\021])q([\020pas)q(swd\021)q(])45 -b(=)39 b(Hashed)i(password.)0 4043 y -($GLOBALS['phpgw_info'][\020user\021])q([\020sta)q(tus\021)q(])k(=)39 -b(If)h(the)g(user)g(is)g(enabled.)0 4170 y -($GLOBALS['phpgw_info'][\020user\021])q([\020log)q(inti)q(me\021])46 -b(=)39 b(Time)h(they)g(logged)h(into)f(their)g(current)h(session.)0 -4297 y($GLOBALS['phpgw_info'][\020user\021])q([\020ses)q(sion)q -(_dla\021)q(])k(=)39 b(Last)i(time)f(they)g(did)g(anything)h(in)e -(their)i(current)f(session)0 4424 y -($GLOBALS['phpgw_info'][\020user\021])q([\020ses)q(sion)q(_ip\021])46 -b(=)39 b(Current)i(IP)f(address)0 4692 y Fd(6.3)112 b(Group)38 -b(information)0 4873 y Fa($GLOBALS['phpgw_info'][\020group\021)q -(][\020gr)q(oup_)q(names)q(\021])45 b(=)40 b(List)g(of)f(groups.)0 -5141 y Fd(6.4)112 b(Serv)m(er)38 b(information)0 5321 -y Fa($GLOBALS['phpgw_info'][\020server)q(\021][\020s)q(erve)q(r_roo)q -(t\021])45 b(=)40 b(Main)g(installation)i(directory)1908 -5589 y Fe(10)p eop -%%Page: 11 11 -11 10 bop 0 83 a Fa($GLOBALS['phpgw_info'][\020server)q(\021][\020i)q -(nclu)q(de_ro)q(ot\021])46 b(=)39 b(Location)i(of)f(the)g('inc')g -(directory.)0 210 y($GLOBALS['phpgw_info'][\020server)q(\021][\020t)q -(emp_)q(dir\021])46 b(=)39 b(Directory)i(that)g(can)e(be)h(used)g(for)g -(temporarily)i(storing)e(files)0 337 y -($GLOBALS['phpgw_info'][\020server)q(\021][\020f)q(iles)q(_dir\021)q(]) -45 b(=)39 b(Directory)j(er)d(and)h(group)h(files)f(are)g(stored)0 -464 y($GLOBALS['phpgw_info'][\020server)q(\021][\020c)q(ommo)q(n_inc)q -(lude_)q(dir\021)q(])45 b(=)39 b(Location)i(of)f(the)g(core/shared)i -(include)e(files.)0 591 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020t)q(empl)q(ate_d)q(ir\021])46 b(=)39 b(Active)i(template)g -(files)f(directory.)81 b(This)40 b(is)f(defaulted)0 683 -y(by)h(the)g(server,)g(and)g(changeable)i(by)d(the)h(user.)0 -810 y($GLOBALS['phpgw_info'][\020server)q(\021][\020d)q(ir_s)q(epara)q -(tor\021])46 b(=)39 b(Allows)i(compatibility)h(with)e(WindowsNT)h -(directory)g(format,)0 937 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020e)q(ncrp)q(ytkey)q(\021])k(=)40 b(Key)g(used)g(for)g -(encryption)h(functions)0 1064 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020s)q(ite_)q(title)q(\021])k(=)40 b(Site)g(Title)g(will)g -(show)g(in)g(the)g(title)g(bar)g(of)g(each)g(webpage.)0 -1191 y($GLOBALS['phpgw_info'][\020server)q(\021][\020w)q(ebse)q(rver_)q -(url\021])46 b(=)39 b(URL)h(to)g(eGroupWare)h(installation.)0 -1318 y($GLOBALS['phpgw_info'][\020server)q(\021][\020h)q(ostn)q -(ame\021])46 b(=)39 b(Name)h(of)g(the)g(server)g(eGroupWare)i(is)d -(installed)j(upon.)0 1445 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020c)q(hars)q(et\021])k(=)39 b(default)i(charset,)g -(default:iso-8859-1)0 1572 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020v)q(ersi)q(on\021])46 b(=)39 b(eGroupWare)i(version.)0 -1840 y Fd(6.5)112 b(Database)39 b(information)0 2029 -y Fe(It)21 b(is)f(unlik)n(ely)g(y)n(ou)f(will)h(need)h(these,)g(b)r -(ecause)f($GLOBALS['phpgw_info']_db)f(will)h(already)f(b)r(e)i(loaded)e -(as)h(a)f(database)0 2129 y(for)27 b(y)n(ou)g(to)g(use.)0 -2256 y Fa($GLOBALS['phpgw_info'][\020server)q(\021][\020d)q(b_ho)q -(st\021])46 b(=)39 b(Address)i(of)e(the)h(database)h(server.)80 -b(Usually)41 b(this)f(is)g(set)g(to)0 2347 y(localhost.)0 -2474 y($GLOBALS['phpgw_info'][\020server)q(\021][\020d)q(b_na)q -(me\021])46 b(=)39 b(Database)i(name.)0 2601 y -($GLOBALS['phpgw_info'][\020server)q(\021][\020d)q(b_us)q(er\021])46 -b(=)39 b(User)h(name.)0 2728 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020d)q(b_pa)q(ss\021])46 b(=)39 b(Password)0 -2855 y($GLOBALS['phpgw_info'][\020server)q(\021][\020d)q(b_ty)q -(pe\021])46 b(=)39 b(Type)h(of)g(database.)80 b(Currently)41 -b(MySQL)g(and)f(PostgreSQL)h(are)f(supported.)0 3123 -y Fd(6.6)112 b(Mail)37 b(information)0 3312 y Fe(It)28 -b(is)f(unlik)n(ely)h(y)n(ou)e(will)i(need)g(these,)g(b)r(ecause)f(most) -g(email)g(needs)h(are)e(services)g(thru)i(core)f(eGroupW)-7 -b(are)26 b(functions.)0 3439 y Fa($GLOBALS['phpgw_info'][\020server)q -(\021][\020m)q(ail_)q(serve)q(r\021])45 b(=)40 b(Address)h(of)e(the)h -(IMAP)g(server.)80 b(Usually)41 b(this)f(is)g(set)g(to)0 -3531 y(localhost.)0 3658 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020m)q(ail_)q(serve)q(r_typ)q(e\021])46 b(=)39 -b(IMAP)h(or)g(POP3)0 3785 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020i)q(map_)q(serve)q(r_typ)q(e\021])46 b(=)39 -b(Cyrus)h(or)g(Uwash)0 3912 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020i)q(map_)q(port\021)q(])45 b(=)39 b(This)i(is)e(usually)i -(143,)f(and)g(should)g(only)h(be)e(changed)i(if)f(there)0 -4003 y(is)g(a)f(good)h(reason.)0 4130 y -($GLOBALS['phpgw_info'][\020server)q(\021][\020m)q(ail_)q(suffi)q(x])45 -b(=)40 b(This)g(is)f(the)h(domain)h(name,)f(used)g(to)g(add)g(to)f -(email)i(address)0 4257 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020m)q(ail_)q(login)q(_type)q(\021])k(=)40 b(This)g(adds)g -(support)h(for)f(VMailMgr.)80 b(Generally)41 b(this)0 -4349 y(should)g(be)e(set)h(to)g('standard'.)0 4476 y -($GLOBALS['phpgw_info'][\020server)q(\021][\020s)q(mtp_)q(serve)q -(r\021])45 b(=)40 b(Address)h(of)e(the)h(SMTP)g(server.)80 -b(Usually)41 b(this)f(is)g(set)g(to)0 4567 y(localhost.)0 -4694 y($GLOBALS['phpgw_info'][\020server)q(\021][\020s)q(mtp_)q -(port\021)q(])45 b(=)39 b(This)i(is)e(usually)i(25,)f(and)g(should)g -(only)g(be)g(changed)h(if)e(there)0 4786 y(is)h(a)f(good)h(reason)0 -5054 y Fd(6.7)112 b(NNTP)36 b(information)0 5234 y Fa -($GLOBALS['phpgw_info'][\020server)q(\021][\020n)q(ntp_)q(serve)q -(r\021])45 b(=)40 b(Address)h(of)e(the)h(NNTP)g(server.)1908 -5589 y Fe(11)p eop -%%Page: 12 12 -12 11 bop 0 83 a Fa($GLOBALS['phpgw_info'][\020server)q(\021][\020n)q -(ntp_)q(port\021)q(])45 b(=)39 b(This)i(is)e(usually)i(XX,)f(and)g -(should)g(only)g(be)g(changed)h(if)e(there)0 174 y(is)h(a)f(good)h -(reason.)0 301 y($GLOBALS['phpgw_info'][\020server)q(\021][\020n)q -(ntp_)q(sende)q(r\021])45 b(=)40 b(Unknown)0 428 y -($GLOBALS['phpgw_info'][\020server)q(\021][\020n)q(ntp_)q(organ)q -(izati)q(on\021])46 b(=)39 b(Unknown)0 556 y -($GLOBALS['phpgw_info'][\020server)q(\021][\020n)q(ntp_)q(admin)q -(\021])45 b(=)40 b(Unknown)0 824 y Fd(6.8)112 b(Application)35 -b(information)0 1013 y Fe(Eac)n(h)27 b(application)g(has)g(the)h(follo) -n(wing)f(information)f(a)n(v)-5 b(ailable.)0 1140 y Fa -($GLOBALS['phpgw_info'][\020apps\021])q([\020app)q(name)q(\021][\020t)q -(itle\021)q(])45 b(=)40 b(The)f(title)i(of)e(the)h(application.)0 -1267 y($GLOBALS['phpgw_info'][\020apps\021])q([\020app)q(name)q -(\021][\020e)q(nable)q(d\021])46 b(=)39 b(If)h(the)g(application)h(is)f -(enabled.)80 b(True)40 b(or)g(False.)0 1394 y -($GLOBALS['phpgw_info'][\020server)q(\021][\020a)q(pp_i)q(nclud)q -(e_dir)q(\021])45 b(=)40 b(Location)h(of)e(the)h(current)h(application) -h(include)e(files.)0 1521 y($GLOBALS['phpgw_info'][\020server)q -(\021][\020a)q(pp_t)q(empla)q(te_di)q(r\021])46 b(=)39 -b(Location)i(of)f(the)g(current)g(application)i(tpl)e(files.)0 -1648 y($GLOBALS['phpgw_info'][\020server)q(\021][\020a)q(pp_l)q(ang_d)q -(ir\021])46 b(=)39 b(Location)i(of)f(the)g(current)g(lang)g(directory.) -0 1775 y($GLOBALS['phpgw_info'][\020server)q(\021][\020a)q(pp_a)q -(uth\021])46 b(=)39 b(If)h(the)g(server)g(and)g(current)h(user)f(have)g -(access)h(to)e(current)0 1866 y(application)0 1993 y -($GLOBALS['phpgw_info'][\020server)q(\021][\020a)q(pp_c)q(urren)q -(t\021])45 b(=)40 b(name)g(of)g(the)g(current)g(application.)0 -2304 y Fg(7)131 b(Using)44 b(Language)f(Supp)t(ort)0 -2538 y Fd(7.1)112 b(Ov)m(erview)0 2727 y Fe(eGroupW)-7 -b(are)33 b(is)h(built)h(using)f(a)g(m)n(ulti-language)e(supp)r(ort)i -(sc)n(heme.)57 b(This)34 b(means)g(the)g(pages)f(can)h(b)r(e)h -(translated)e(to)0 2826 y(other)26 b(languages)f(v)n(ery)g(easily)-7 -b(.)36 b(T)-7 b(ranslations)25 b(of)i(text)g(strings)f(are)f(stored)h -(in)h(the)g(phpGroupW)-7 b(are)26 b(database,)g(and)g(can)0 -2926 y(b)r(e)i(mo)r(di\034ed)g(b)n(y)f(the)h(eGroupW)-7 -b(are)26 b(administrator.)0 3061 y(Please)38 b(see)f(the)i(setup/do)r -(c)f(directory)e(for)i(a)f(do)r(cumen)n(t)i(whic)n(h)f(con)n(tains)f -(more)g(complete)h(do)r(cumen)n(tation)g(of)g(the)0 3161 -y(language)26 b(system.)0 3429 y Fd(7.2)112 b(Ho)m(w)37 -b(to)g(use)h(lang)f(supp)s(ort)0 3618 y Fe(The)28 b(lang\(\))f -(function)h(is)g(y)n(our)e(application's)g(in)n(terface)h(to)h(eGroupW) --7 b(are's)26 b(in)n(ternationalization)g(supp)r(ort.)0 -3753 y(While)33 b(dev)n(eloping)d(y)n(our)h(application,)i(just)f(wrap) -f(all)h(y)n(our)f(text)h(output)h(with)f(calls)f(to)h(lang\(\),)h(as)f -(in)g(the)g(follo)n(wing)0 3853 y(co)r(de:)87 4154 y -Fb($x)43 b(=)g(42;)87 4254 y(echo)f(lang\("The)e(counter)g(is)j -(\0451",$x\)."
";)0 4556 y Fe(This)34 b(will)g(attempt)h(to)e -(translate)g(\020The)h(coun)n(ter)f(is)h(\0451\021,)h(and)e(return)h(a) -f(translated)g(v)n(ersion)g(based)g(on)h(the)g(curren)n(t)0 -4655 y(application)22 b(and)g(language)e(in)j(use.)35 -b(Note)22 b(ho)n(w)g(the)h(p)r(osition)f(that)g($x)g(will)h(end)f(up)h -(is)f(con)n(trolled)f(b)n(y)h(the)h(format)f(string,)0 -4755 y Ff(not)i Fe(b)n(y)f(building)h(up)g(the)g(string)f(in)h(y)n(our) -f(co)r(de.)35 b(This)24 b(allo)n(ws)e(y)n(our)h(application)g(to)g(b)r -(e)h(translated)f(to)h(languages)e(where)0 4854 y(the)28 -b(actual)f(n)n(um)n(b)r(er)g(is)h(not)f(placed)g(at)h(the)g(end)g(of)f -(the)h(string.)0 4990 y(When)h(a)g(translation)f(is)g(not)h(found,)h -(the)f(original)e(text)j(will)f(b)r(e)g(returned)g(with)g(a)f(*)h -(after)g(the)g(string.)40 b(This)29 b(mak)n(es)f(it)0 -5089 y(easy)f(to)g(dev)n(elop)g(y)n(our)f(application,)h(then)h(go)f -(bac)n(k)f(and)i(add)f(missing)g(translations)f(\(iden)n(ti\034ed)i(b)n -(y)g(the)g(*\))f(later.)0 5225 y(Without)h(a)f(sp)r(eci\034c)h -(translation)e(in)i(the)g(lang)f(table,)h(the)g(ab)r(o)n(v)n(e)e(co)r -(de)h(will)h(prin)n(t:)1908 5589 y(12)p eop -%%Page: 13 13 -13 12 bop 0 183 a Fb(The)42 b(counter)f(is)i(42*
)0 -466 y Fe(If)28 b(the)g(curren)n(t)f(user)g(sp)r(eaks)f(Italian,)h(they) -h(string)f(returned)g(ma)n(y)g(instead)g(b)r(e:)0 749 -y Fb(il)43 b(contatore)c(\350)44 b(42
)0 1096 y Ff(The)32 -b(lang)f(function)0 1385 y Fb(lang\($key,)39 b($m1="",)i($m2="",)g -($m3="",)f($m4="",)h($m5="",)436 1484 y($m6="",)f($m7="",)h($m8="",)g -($m9="",)f($m10=""\))0 1780 y Ff($k)m(ey)208 1908 y Fe(is)27 -b(the)h(string)f(to)g(translate)g(and)g(ma)n(y)g(con)n(tain)g -(replacemen)n(t)g(directiv)n(es)f(of)i(the)g(form)f(\045n.)0 -2164 y Ff($m1)208 2293 y Fe(is)g(the)g(\034rst)g(replacemen)n(t)f(v)-5 -b(alue)27 b(or)g(ma)n(y)f(b)r(e)i(an)f(arra)n(y)e(of)i(replacemen)n(t)f -(v)-5 b(alues)27 b(\(in)h(whic)n(h)f(case)f($m2)g(and)h(ab)r(o)n(v)n(e) -208 2392 y(are)f(ignored\).)0 2549 y Ff($m2)k(-)h($m10)208 -2677 y Fe(the)d(2nd)f(through)g(10th)g(replacemen)n(t)f(v)-5 -b(alues)28 b(if)g($m1)e(is)i(not)g(an)f(arra)n(y)-7 b(.)0 -2873 y(The)28 b(database)f(is)h(searc)n(hed)e(for)i(ro)n(ws)f(with)h(a) -g(lang.message_id)d(that)k(matc)n(hes)e($k)n(ey)-7 b(.)38 -b(If)28 b(a)g(translation)f(is)h(not)g(found,)0 2973 -y(the)36 b(original)f($k)n(ey)g(is)g(used.)63 b(The)36 -b(translation)e(engine)i(then)g(replaces)f(all)h(tok)n(ens)f(of)h(the)g -(form)g(\045N)g(with)h(the)f(Nth)0 3072 y(parameter)26 -b(\(either)i($m1[N])f(or)g($mN\).)0 3320 y Ff(A)m(dding)32 -b(translation)f(data)0 3509 y Fe(An)21 b(application)f(called)h -Ff(T)-8 b(ransy)23 b Fe(is)e(b)r(eing)f(dev)n(elop)r(ed)h(to)f(mak)n(e) -g(this)h(easier,)g(un)n(til)g(then)g(y)n(ou)f(can)g(create)g(the)h -(translation)0 3608 y(data)27 b(man)n(ually)-7 b(.)0 -3856 y Ff(The)32 b(lang)f(table)0 4045 y Fe(The)j(translation)e(class)g -(uses)h(the)h(lang)f(table)g(for)g(all)h(translations.)53 -b(W)-7 b(e)34 b(are)e(concerned)h(with)h(4)f(of)g(the)h(columns)f(to)0 -4145 y(create)27 b(a)g(translation:)0 4340 y Ff(message_id)208 -4468 y Fe(The)g(k)n(ey)g(to)g(iden)n(tify)i(the)e(message)g(\(the)h($k) -n(ey)e(passed)h(to)g(the)h(lang\(\))g(function\).)37 -b(This)28 b(is)f(written)h(in)g(English.)0 4625 y Ff(app_name)208 -4754 y Fe(The)f(application)g(the)h(translation)e(applies)h(to,)h(or)f -(common)g(if)h(it)g(is)f(common)g(across)f(m)n(ultiple)i(applications.) -0 4910 y Ff(lang)208 5039 y Fe(The)f(co)r(de)h(for)f(the)h(language)d -(the)j(translation)f(is)g(in.)0 5196 y Ff(con)m(ten)m(t)208 -5324 y Fe(The)g(translated)g(string.)1908 5589 y(13)p -eop -%%Page: 14 14 -14 13 bop 0 83 a Fd(7.3)112 b(Common)37 b(return)g(co)s(des)0 -272 y Fe(If)31 b(y)n(ou)g(bro)n(wse)e(through)i(the)g(eGroupW)-7 -b(are)30 b(sources,)g(y)n(ou)g(ma)n(y)h(notice)f(a)h(pattern)g(to)g -(the)g(return)g(co)r(des)f(used)h(in)h(the)0 372 y(higher-lev)n(el)26 -b(functions.)37 b(The)28 b(co)r(des)f(used)g(are)g(partially)f(do)r -(cumen)n(ted)i(in)g(the)g(do)r(c/dev)n(elop)r(ers/CODES)d(\034le.)0 -507 y(Co)r(des)33 b(are)f(used)h(as)f(a)h(simple)g(w)n(a)n(y)f(to)g -(comm)n(unicate)h(common)f(error)f(and)i(progress)e(conditions)h(bac)n -(k)g(to)h(the)h(user.)0 607 y(They)21 b(are)f(mapp)r(ed)i(to)f(a)g -(text)h(string)e(through)h(the)g(c)n(hec)n(k_co)r(de\(\))f(function,)k -(whic)n(h)d(passes)f(the)h(strings)g(through)f(lang\(\))0 -706 y(b)r(efore)27 b(returning.)0 842 y(F)-7 b(or)27 -b(example,)g(calling)0 1143 y Fb(echo)42 b(check_code\(13\);)0 -1444 y Fe(W)-7 b(ould)28 b(prin)n(t)0 1746 y Fb(Your)42 -b(message)e(has)j(been)f(sent)0 2047 y Fe(translated)27 -b(in)n(to)g(the)h(curren)n(t)f(language.)0 2357 y Fg(8)131 -b(Using)44 b(T)-11 b(emplates)0 2592 y Fd(8.1)112 b(Ov)m(erview)0 -2781 y Fe(eGroupW)-7 b(are)29 b(is)g(built)i(using)f(a)f -(templates-based)g(design.)43 b(This)30 b(means)g(the)g(displa)n(y)f -(pages,)g(stored)g(in)i(tpl)f(\034les,)g(can)0 2880 y(b)r(e)e -(translated)f(to)g(other)g(languages,)f(made)h(to)g(lo)r(ok)g -(completely)h(di\033eren)n(t.)0 3148 y Fd(8.2)112 b(Ho)m(w)37 -b(to)g(use)h(templates)0 3337 y Fe(Some)27 b(instructions)g(on)h(using) -f(templates:)0 3473 y(F)-7 b(or)27 b(F)-7 b(urther)27 -b(info)h(read)f(the)h(PHPLIBs)g(do)r(cumen)n(tation)f(for)g(their)h -(template)f(class.)36 b Fb(http://phplib.net)o(us)o(e.)o(de)0 -3783 y Fg(9)131 b(Ab)t(out)44 b(this)g(do)t(cumen)l(t)0 -4017 y Fd(9.1)112 b(New)37 b(v)m(ersions)0 4206 y Fe(The)i(new)n(est)f -(v)n(ersion)f(of)h(this)h(do)r(cumen)n(t)g(can)f(b)r(e)h(found)g(on)f -(our)g(w)n(ebsite)g Fb(http://www.egroup)o(wa)o(re)o(.or)o(g)32 -b Fe(as)38 b(lyx)0 4306 y(source,)26 b(HTML,)i(and)g(text.)0 -4574 y Fd(9.2)112 b(Commen)m(ts)0 4763 y Fe(Commen)n(ts)38 -b(on)h(this)g(HO)n(WTO)f(should)h(b)r(e)g(directed)g(to)g(the)g -(eGroupW)-7 b(are)38 b(dev)n(elop)r(ers)f(mailing)h(list)h(egroup)n(w)n -(are-)0 4862 y(dev)n(elop)r(ers@lists.sourceforge.net)0 -4998 y(T)-7 b(o)27 b(subscrib)r(e,)g(go)g(to)h Fb(http://lists.so)o(ur) -o(ce)o(for)o(ge)o(.n)o(et/)o(li)o(sts)o(/e)o(gr)o(oup)o(wa)o(re)o(-)t -(de)o(ve)o(lop)o(er)o(s)1908 5589 y Fe(14)p eop -%%Page: 15 15 -15 14 bop 0 83 a Fd(9.3)112 b(History)0 272 y Fe(This)28 -b(do)r(cumen)n(t)f(w)n(as)g(written)h(b)n(y)f(Dan)g(Kuyk)n(endall.)0 -407 y(2000-09-25)17 b(do)r(cumen)n(tation)22 b(on)f(lang\(\),)i(co)r -(des,)f(administration)f(and)h(preferences)f(extension)g(added)g(b)n(y) -h(Stev)n(e)f(Bro)n(wn.)0 543 y(2001-01-08)i(\034xed)28 -b(directory)e(structure,)h(minor)g(la)n(y)n(out)f(c)n(hanges,)g(imp)r -(orted)i(to)f(lyx)h(source)e(-)h(Darryl)g(V)-7 b(anDorp)0 -678 y(2003-12-29)23 b(adapted)k(for)g(eGroupW)-7 b(are)26 -b(and)i(up)r(dated)g(for)f(setup)h(and)f(use)h(of)f(GLOBALS)g(-)h -(Miles)f(Lott)0 946 y Fd(9.4)112 b(Cop)m(yrigh)m(ts)37 -b(and)h(T)-9 b(rademarks)0 1135 y Fe(Cop)n(yrigh)n(t)20 -b(\(c\))j(Dan)f(Kuyk)n(endall.)34 b(P)n(ermission)21 -b(is)g(gran)n(ted)g(to)h(cop)n(y)-7 b(,)22 b(distribute)g(and/or)f(mo)r -(dify)h(this)g(do)r(cumen)n(t)g(under)0 1235 y(the)30 -b(terms)g(of)g(the)g(GNU)h(F)-7 b(ree)29 b(Do)r(cumen)n(tation)h -(License,)g(V)-7 b(ersion)29 b(1.1)g(or)g(an)n(y)h(later)f(v)n(ersion)f -(published)j(b)n(y)e(the)h(F)-7 b(ree)0 1334 y(Soft)n(w)n(are)26 -b(F)-7 b(oundation.)0 1470 y(A)28 b(cop)n(y)f(of)g(the)h(license)f(is)h -(a)n(v)-5 b(ailable)26 b(at)i Fb(http://www.gnu.)o(or)o(g/)o(cop)o(yl)o -(ef)o(t/g)o(pl)o(.ht)o(ml)0 1738 y Fd(9.5)112 b(A)m(c)m(kno)m(wledgmen) -m(ts)36 b(and)i(Thanks)0 1927 y Fe(Thanks)h(to)h(Jo)r(esph)g(Engo)g -(for)g(starting)f(phpGroupW)-7 b(are)39 b(\(at)h(the)h(time)f(called)g -(w)n(eb)r(distro\).)74 b(Thanks)40 b(to)g(all)g(the)0 -2026 y(dev)n(elop)r(ers)26 b(and)i(users)e(who)h(con)n(tribute)h(to)f -(making)g(eGroupW)-7 b(are)26 b(and)h(phpGroupW)-7 b(are)27 -b(suc)n(h)g(a)g(success.)1908 5589 y(15)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/phpgwapi/doc/index.txt b/phpgwapi/doc/index.txt deleted file mode 100644 index 551ab33062..0000000000 --- a/phpgwapi/doc/index.txt +++ /dev/null @@ -1,859 +0,0 @@ - - -eGroupWare Application Development - -Dan Kuykendall - -v0.9 29 September 2000 - -This document explains eGroupWare's infrastructure and API, -along with what is required to integrate applications into -it. - -Table of Contents - -1 Introduction - 1.1 Overview of application writing - 1.2 What does the eGroupWare API provide? -2 Guidelines - 2.1 Requirements - 2.2 Writing/porting your application -3 Installing your application - 3.1 Overview - 3.2 Automatic features - 3.3 Adding files, directories and icons. - 3.4 Making eGroupWare aware of your application - 3.5 Hooking into Administration page - 3.6 Hooking into Preferences page -4 Infrastructure - 4.1 Overview - 4.2 Directory tree - 4.3 Translations -5 The API - 5.1 Introduction - 5.2 Basic functions - 5.3 Application Functions - 5.4 File functions - 5.5 Email/NNTP Functions -6 Configuration Variables - 6.1 Introduction - 6.2 User information - 6.3 Group information - 6.4 Server information - 6.5 Database information - 6.6 Mail information - 6.7 NNTP information - 6.8 Application information -7 Using Language Support - 7.1 Overview - 7.2 How to use lang support - 7.3 Common return codes -8 Using Templates - 8.1 Overview - 8.2 How to use templates -9 About this document - 9.1 New versions - 9.2 Comments - 9.3 History - 9.4 Copyrights and Trademarks - 9.5 Acknowledgments and Thanks - - - -1 Introduction - -eGroupWare is a web based groupware application framework -(API), for writing applications. Integrated applications -such as email, calendar, todo list, address book, and file -manager are included. eGroupWare is a fork of phpGroupWare, -for which the original version of this document was written. - -1.1 Overview of application writing - -We have attempted to make writing applications for eGroupWare -as painless as possible. We hope any pain and suffering -is caused by making your application work, but not dealing -with eGroupWare itself. - -1.2 What does the eGroupWare API provide? - -The eGroupWare API handles session management, user/group -management, has support for multiple databases, using either -PHPLIB or ADODB database abstraction methods, we support -templates using the PHPLIB Templates class, a file system -interface, and even a network i/o interface. - -On top of these standard functions, eGroupWare provides several -functions to give you the information you need about the -users environment, and to properly plug into eGroupWare. - -2 Guidelines - -2.1 Requirements - -These guidelines must be followed for any application that -wants considered for inclusion into eGroupWare: - -* It must run on PHP4 and PHP5. - -* SQL statements must be compatible with both MySQL and PostgreSQL. - When in doubt it is best to stick with SQL92. - -* It must use our default header.inc.php include. - -* It must use our $GLOBALS['phpgw']->link($url) for all links - (this is for session support). - -* It must use "post" for - forms. - -* It must respect phpGW group rights and phpGW user permissions. - -* It must use our directory structure, template support and - lang (multi-language) support. - -* Where possible it should run on both Unix and NT platforms. - -* For applications that do not meet these requirements, they - can be made available to users however you decide. If - you need help converting your application to templates - and our lang support, we will try to connect you with - someone to help. - -2.2 Writing/porting your application - - Include files - -Each PHP page you write will need to include the header.inc.php -along with a few variables. - This is done by putting this at the top of each PHP page. - - - - -Of course change application name to fit. - This include will provide the following things: - -* The phpgwAPI - The eGroupWare API will be loaded. - -* The phpGW navbar will be loaded (by default, but can be - disabled until a later point. - -* appname/inc/functions.inc.php - This file is loaded just - after the phpgwAPI and before any HTML code is generated. - This file should include all your application specific - functions.. You are welcome to include any additional - files you need from within this file. - -* appname/inc/header.inc.php - This file is loaded just after - the system header/navbar, and allows developers to use - it for whatever they need to load. - -* appname/inc/footer.inc.php - This file is loaded just before - the system footer, allowing developers to close connections - and whatever else they need. - -* The phpGW footer will be loaded, which closes several connections. - -3 Installing your application - -3.1 Overview - -It is fairly simple to add and delete applications to/from -eGroupWare. - -3.2 Automatic features - -To make things easy for developers we go ahead and load the -following files. - -* appname/inc/functions.inc.php - This file should include - all your application specific functions. - -* appname/inc/header.inc.php - This file is loaded by $GLOBALS['phpgw']->common->header - just after the system header/navbar, and allows developers - to use it for whatever they need to load. - -* appname/inc/footer.inc.php - This file is loaded by $GLOBALS['phpgw']->common->footer - just before the system footer, allowing developers to - close connections and whatever else they need. - -3.3 Adding files, directories and icons. - -You will need to create the following directories for your -code - (replace 'appname' with your application name) - - -`--appname - - |--inc - - | |--functions.inc.php - - | |--header.inc.php - - | |--hook_preferences.inc.php - - | |--hook_admin.inc.php - - | `--footer.inc.php - - `--templates - - | `--default - -3.4 Making eGroupWare aware of your application - -Please see the documentation in the setup/doc directory for -information on integrating into eGroupWare. This is very -important since the steps for database table setup and modification -discussed there must be followed. - -3.5 Hooking into Administration page - -When a user goes to the Administration page, it starts appname/inc/hook_admin.inc.php -for each application that is enabled, in alphabetical order -of application title. If the file exists, it is include()d -in the hopes it will display a selection of links to configure -that application. - -Simple Example: - -Look at headlines/inc/hook_admin.inc.php and admin/inc/hook_admin.inc.php -for more examples. - -Things to note: - -* Links are relative to the admin/index.php file, not your - application's base directory. (so use $appname in your - link() calls) - -* The file is brought in with include() so be careful to - not pollute the name-space too much - -The standard $GLOBALS['phpgw'] and $GLOBALS['phpgw_info'] -variables are in-scope, as is $appname which corresponds -to the application name in the path. - -There are 2 functions to coordinate the display of each application's -links, section_start() and section_end() - - section_start - -section_start($title,$icon_url) starts the section for your -application. $title is passed through lang() for you. $icon_url -should be page-relative to admin/index.php or an absolute -URL. - - section_end - -section_end() closes the section that was started with section_start(). - -3.6 Hooking into Preferences page - -The mechanism to hook into the preferences page is identical -to the one used to hook into the administration page, however -it looks for appname/inc/hook_preferences.inc.php instead -of appname/inc/hook_admin.inc.php. The same functions and -variables are defined. - -4 Infrastructure - -4.1 Overview - -eGroupWare attempts to provide developers with a sound directory -structure to work from. - The directory layout may seem complex at first, but after -some use, you will see that it is designed to accommodate -a large number of applications and functions. - -4.2 Directory tree - -.--appname - -| |--inc - -| | |--functions.inc.php - -| | |--header.inc.php - -| | |--hook_preferences.ini.php - -| | |--hook_home.inc.php - -| | `--footer.inc.php - -| |--manual - -| |--setup - -| | |--tables_baseline.inc.php - -| | |--tables_current.inc.php - -| | |--tables_update.inc.php - -| | |--setup.inc.php - -| `--templates - -| | `--default - -| | `--images - -| | -`--navbar.png - -| |--preferences.php - -|--docs (installation docs) - -|--files - -| |--groups - -| `--users - -`--phpgwapi - - |--cron (egroupware's optional daemons) - - |--doc (developer docs) - - |--inc - - | |--class.phpgw.inc.php - - | |--class.common.inc.php - - | `--etc.. - - |--manual - - |--setup - - | |--tables_baseline.inc.php - - | |--tables_current.inc.php - - | |--tables_update.inc.php - - | |--setup.inc.php - - |--templates - - | |--default - - | | `--images - - | | |--home.gif - - | | `--preferences.gif - - | `--verilak - - | `--images - - |--home.gif - - `--preferences.gif - - `--themes - - `--default.theme - -4.3 Translations - -The translations are now being done thru the database, and -will be configurable to use other mechanisms. - -The application, developer_tools, provides developers/translators -a nice GUI for building and updating translations. - -5 The API - -5.1 Introduction - -eGroupWare attempts to provide developers with a useful API -to handle common tasks. - -To do this we have created a multi-dimensional class $GLOBALS['phpgw']. - -This allows for terrific code organization, and help developers -easily identify the file that the function is in. All the -files that are part of this class are in the inc/core directory -and are named to match the sub-class. - -Example: $GLOBALS['phpgw']->send->msg() is in the inc/phpgwapi/phpgw_send.inc.php -file. - -5.2 Basic functions - - $GLOBALS['phpgw']->link - -$GLOBALS['phpgw']->link($url) - Add support for session management. ALL links must use this, -that includes href's form actions and header location's. - -If you are just doing a form action back to the same page, -you can use it without any parameters. - -This function is right at the core of the class because it -is used so often, we wanted to save developers a few keystrokes. -Example: - -5.3 Application Functions - - $GLOBALS['phpgw']->common->phpgw_header(); - -$GLOBALS['phpgw']->phpgw_header() - Print out the start of the HTML page, including the navigation -bar and includes appname/inc/header.php - - $GLOBALS['phpgw']->common->phpgw_footer(); - -$GLOBALS['phpgw']->phpgw_footer() - Prints the system footer, and includes appname/inc/footer.php - - $GLOBALS['phpgw']->common->appsession(); - -$GLOBALS['phpgw']->common->appsession($data) - Store important information session information that your -application needs. - $GLOBALS['phpgw']->appsession will return the value of your -session data is you leave the parameter empty [i.e. $GLOBALS['phpgw']->appsession("")], -otherwise it will store whatever data you send to it. - You can also store a comma delimited string and use explode() -to turn it back into an array when you receive the value -back. - -Example: - -5.4 File functions - - Please also see the phpgwapi/doc/vfs directory for additional - VFS class documentation - - $GLOBALS['phpgw']->vfs->read_file - -$GLOBALS['phpgw']->vfs->read_file($file) - Returns the data from $file. - You must send the complete path to the file. - Example: - - $GLOBALS['phpgw']->vfs->write_file - -$GLOBALS['phpgw']->vfs->write_file($file, $contents) - Write data to $file. - You must send the complete path to the file. - Example: - - $GLOBALS['phpgw']->vfs->read_userfile - -$GLOBALS['phpgw']->vfs->read_userfile($file) - Returns the data from $file, which resides in the users -private dir. - Example: - - $GLOBALS['phpgw']->vfs->write_userfile - -$GLOBALS['phpgw']->write_userfile($file, $contents) - Writes data to $file, which resides in the users private -dir. - Example: - - $GLOBALS['phpgw']->vfs->list_userfiles - -$GLOBALS['phpgw']->vfs->list_userfiles() - Returns an array which has the list of files in the users -private dir. - Example: - -5.5 Email/NNTP Functions - - $GLOBALS['phpgw']->send->msg - -$GLOBALS['phpgw']->send->msg($service, $to, $subject, $body, -$msgtype, $cc, $bcc) - Send a message via email or NNTP and returns any error codes. - Example: - -6 Configuration Variables - -6.1 Introduction - -eGroupWare attempts to provide developers with as much information -about the user, group, server, and application configuration -as possible. - -To do this we provide a multi-dimensional array called '$GLOBALS['phpgw_info'][]', -which includes all the information about your environment. - -Due to the multi-dimensional array approach. getting these -values is easy. - -Here are some examples: - -6.2 User information - -$GLOBALS['phpgw_info']["user"]["userid"] -= The user ID. - -$GLOBALS['phpgw_info']["user"]["sessionid"] -= The session ID - -$GLOBALS['phpgw_info']["user"]["theme"] -= Selected theme - -$GLOBALS['phpgw_info']["user"]["private_dir"] -= Users private dir. Use eGroupWare core functions for access -to the files. - -$GLOBALS['phpgw_info']["user"]["firstname"] -= Users first name - -$GLOBALS['phpgw_info']["user"]["lastname"] -= Users last name - -$GLOBALS['phpgw_info']["user"]["fullname"] -= Users Full Name - -$GLOBALS['phpgw_info']["user"]["groups"] -= Groups the user is a member of - -$GLOBALS['phpgw_info']["user"]["app_perms"] -= If the user has access to the current application - -$GLOBALS['phpgw_info']["user"]["lastlogin"] -= Last time the user logged in. - -$GLOBALS['phpgw_info']["user"]["lastloginfrom"] -= Where they logged in from the last time. - -$GLOBALS['phpgw_info']["user"]["lastpasswd_change"] -= Last time they changed their password. - -$GLOBALS['phpgw_info']["user"]["passwd"] -= Hashed password. - -$GLOBALS['phpgw_info']["user"]["status"] -= If the user is enabled. - -$GLOBALS['phpgw_info']["user"]["logintime"] -= Time they logged into their current session. - -$GLOBALS['phpgw_info']["user"]["session_dla"] -= Last time they did anything in their current session - -$GLOBALS['phpgw_info']["user"]["session_ip"] -= Current IP address - -6.3 Group information - -$GLOBALS['phpgw_info']["group"]["group_names"] -= List of groups. - -6.4 Server information - -$GLOBALS['phpgw_info']["server"]["server_root"] -= Main installation directory - -$GLOBALS['phpgw_info']["server"]["include_root"] -= Location of the 'inc' directory. - -$GLOBALS['phpgw_info']["server"]["temp_dir"] -= Directory that can be used for temporarily storing files - -$GLOBALS['phpgw_info']["server"]["files_dir"] -= Directory er and group files are stored - -$GLOBALS['phpgw_info']["server"]["common_include_dir"] -= Location of the core/shared include files. - -$GLOBALS['phpgw_info']["server"]["template_dir"] -= Active template files directory. This is defaulted by -the server, and changeable by the user. - -$GLOBALS['phpgw_info']["server"]["dir_separator"] -= Allows compatibility with WindowsNT directory format, - -$GLOBALS['phpgw_info']["server"]["encrpytkey"] -= Key used for encryption functions - -$GLOBALS['phpgw_info']["server"]["site_title"] -= Site Title will show in the title bar of each webpage. - -$GLOBALS['phpgw_info']["server"]["webserver_url"] -= URL to eGroupWare installation. - -$GLOBALS['phpgw_info']["server"]["hostname"] -= Name of the server eGroupWare is installed upon. - -$GLOBALS['phpgw_info']["server"]["charset"] -= default charset, default:iso-8859-1 - -$GLOBALS['phpgw_info']["server"]["version"] -= eGroupWare version. - -6.5 Database information - -It is unlikely you will need these, because $GLOBALS['phpgw_info']_db -will already be loaded as a database for you to use. - -$GLOBALS['phpgw_info']["server"]["db_host"] -= Address of the database server. Usually this is set to -localhost. - -$GLOBALS['phpgw_info']["server"]["db_name"] -= Database name. - -$GLOBALS['phpgw_info']["server"]["db_user"] -= User name. - -$GLOBALS['phpgw_info']["server"]["db_pass"] -= Password - -$GLOBALS['phpgw_info']["server"]["db_type"] -= Type of database. Currently MySQL and PostgreSQL are supported. - -6.6 Mail information - -It is unlikely you will need these, because most email needs -are services thru core eGroupWare functions. - -$GLOBALS['phpgw_info']["server"]["mail_server"] -= Address of the IMAP server. Usually this is set to localhost. - -$GLOBALS['phpgw_info']["server"]["mail_server_type"] -= IMAP or POP3 - -$GLOBALS['phpgw_info']["server"]["imap_server_type"] -= Cyrus or Uwash - -$GLOBALS['phpgw_info']["server"]["imap_port"] -= This is usually 143, and should only be changed if there -is a good reason. - -$GLOBALS['phpgw_info']["server"]["mail_suffix] -= This is the domain name, used to add to email address - -$GLOBALS['phpgw_info']["server"]["mail_login_type"] -= This adds support for VMailMgr. Generally this should -be set to 'standard'. - -$GLOBALS['phpgw_info']["server"]["smtp_server"] -= Address of the SMTP server. Usually this is set to localhost. - -$GLOBALS['phpgw_info']["server"]["smtp_port"] -= This is usually 25, and should only be changed if there -is a good reason - -6.7 NNTP information - -$GLOBALS['phpgw_info']["server"]["nntp_server"] -= Address of the NNTP server. - -$GLOBALS['phpgw_info']["server"]["nntp_port"] -= This is usually XX, and should only be changed if there -is a good reason. - -$GLOBALS['phpgw_info']["server"]["nntp_sender"] -= Unknown - -$GLOBALS['phpgw_info']["server"]["nntp_organization"] -= Unknown - -$GLOBALS['phpgw_info']["server"]["nntp_admin"] -= Unknown - -6.8 Application information - -Each application has the following information available. - -$GLOBALS['phpgw_info']["apps"]["appname"]["title"] -= The title of the application. - -$GLOBALS['phpgw_info']["apps"]["appname"]["enabled"] -= If the application is enabled. True or False. - -$GLOBALS['phpgw_info']["server"]["app_include_dir"] -= Location of the current application include files. - -$GLOBALS['phpgw_info']["server"]["app_template_dir"] -= Location of the current application tpl files. - -$GLOBALS['phpgw_info']["server"]["app_lang_dir"] -= Location of the current lang directory. - -$GLOBALS['phpgw_info']["server"]["app_auth"] -= If the server and current user have access to current -application - -$GLOBALS['phpgw_info']["server"]["app_current"] -= name of the current application. - -7 Using Language Support - -7.1 Overview - -eGroupWare is built using a multi-language support scheme. -This means the pages can be translated to other languages -very easily. Translations of text strings are stored in -the phpGroupWare database, and can be modified by the eGroupWare -administrator. - -Please see the setup/doc directory for a document which contains -more complete documentation of the language system. - -7.2 How to use lang support - -The lang() function is your application's interface to eGroupWare's -internationalization support. - -While developing your application, just wrap all your text -output with calls to lang(), as in the following code: This -will attempt to translate "The -counter is %1", and return a translated version -based on the current application and language in use. Note -how the position that $x will end up is controlled by the -format string, not by building up the string in your code. -This allows your application to be translated to languages -where the actual number is not placed at the end of the -string. - -When a translation is not found, the original text will be -returned with a * after the string. This makes it easy to -develop your application, then go back and add missing translations -(identified by the *) later. - -Without a specific translation in the lang table, the above -code will print: If the current user speaks Italian, they -string returned may instead be: - - The lang function - - - -$key - - is the string to translate and may contain replacement - directives of the form %n. - - -$m1 - - is the first replacement value or may be an array of replacement - values (in which case $m2 and above are ignored). - -$m2 - $m10 - - the 2nd through 10th replacement values if $m1 is not an - array. - -The database is searched for rows with a lang.message_id -that matches $key. If a translation is not found, the original -$key is used. The translation engine then replaces all tokens -of the form %N with the Nth parameter (either $m1[N] or -$mN). - - Adding translation data - -An application called Transy is being developed to make this -easier, until then you can create the translation data manually. - - The lang table - -The translation class uses the lang table for all translations. -We are concerned with 4 of the columns to create a translation: - -message_id - - The key to identify the message (the $key passed to the - lang() function). This is written in English. - -app_name - - The application the translation applies to, or common if - it is common across multiple applications. - -lang - - The code for the language the translation is in. - -content - - The translated string. - -7.3 Common return codes - -If you browse through the eGroupWare sources, you may notice -a pattern to the return codes used in the higher-level functions. -The codes used are partially documented in the doc/developers/CODES -file. - -Codes are used as a simple way to communicate common error -and progress conditions back to the user. They are mapped -to a text string through the check_code() function, which -passes the strings through lang() before returning. - -For example, calling Would print translated into the current -language. - -8 Using Templates - -8.1 Overview - -eGroupWare is built using a templates-based design. This -means the display pages, stored in tpl files, can be translated -to other languages, made to look completely different. - -8.2 How to use templates - -Some instructions on using templates: - -For Further info read the PHPLIBs documentation for their -template class. [http://phplib.netuse.de] - -9 About this document - -9.1 New versions - -The newest version of this document can be found on our website - as lyx source, HTML, and text. - -9.2 Comments - -Comments on this HOWTO should be directed to the eGroupWare -developers mailing list egroupware-developers@lists.sourceforge.net - -To subscribe, go to {http://lists.sourceforge.net/lists/listinfo/egroupware-developers} - -9.3 History - -This document was written by Dan Kuykendall. - -2000-09-25 documentation on lang(), codes, administration -and preferences extension added by Steve Brown. - -2001-01-08 fixed directory structure, minor layout changes, -imported to lyx source - Darryl VanDorp - -2003-12-29 adapted for eGroupWare and updated for setup and -use of GLOBALS - Miles Lott - -9.4 Copyrights and Trademarks - -Copyright (c) Dan Kuykendall. Permission is granted to copy, -distribute and/or modify this document under the terms of -the GNU Free Documentation License, Version 1.1 or any later -version published by the Free Software Foundation. - -A copy of the license is available at [http://www.gnu.org/copyleft/gpl.html] - -9.5 Acknowledgments and Thanks - -Thanks to Joesph Engo for starting phpGroupWare (at the time -called webdistro). Thanks to all the developers and users -who contribute to making eGroupWare and phpGroupWare such -a success. diff --git a/phpgwapi/doc/phpgroupware.spec b/phpgwapi/doc/phpgroupware.spec deleted file mode 100644 index 8a8d213636..0000000000 --- a/phpgwapi/doc/phpgroupware.spec +++ /dev/null @@ -1,75 +0,0 @@ -%define packagename phpGroupWare -%define phpgwdirname phpgroupware -%define version 0.9.9 - -# This is for Mandrake RPMS -# (move these below the RedHat ones for Mandrake RPMs) -%define httpdroot /var/www/html -%define packaging 1mdk - -# This is for RedHat RPMS -# (move these below the Mandrake ones for RedHat RPMs) -%define httpdroot /home/httpd/html -%define packaging 1 - -Summary: phpGroupWare is a web-based groupware suite written in php. -Name: %{packagename} -Version: %{version} -Release: %{packaging} -Copyright: GPL -Group: Web/Database -URL: http://www.phpgroupware.org/ -Source0: ftp://ftp.sourceforge.net/pub/sourceforge/phpgroupware/%{packagename}-%{version}.tar.bz2 -BuildRoot: %{_tmppath}/%{packagename}-buildroot -Prefix: %{httpdroot} -Buildarch: noarch -AutoReq: 0 - -%description -phpGroupWare is a web-based groupware suite written in PHP. It provides -calendar, todo-list, addressbook, email and a notepad. It also -provides an API for developing additional applications. See the phpgroupware -apps project for add-on apps. - -%prep -%setup -n %{phpgwdirname} - -%build -# no build required - -%install -rm -rf $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT%{prefix}/%{phpgwdirname} -cp -aRf * $RPM_BUILD_ROOT%{prefix}/%{phpgwdirname} -chown -R root:root $RPM_BUILD_ROOT%{prefix}/%{phpgwdirname} -chown -R nobody:nobody $RPM_BUILD_ROOT%{prefix}/%{phpgwdirname}/files/groups -chown -R nobody:nobody $RPM_BUILD_ROOT%{prefix}/%{phpgwdirname}/files/users - -%clean -rm -rf $RPM_BUILD_ROOT - -%post - -%postun - -%files -%{prefix}/%{phpgwdirname} - -%changelog -* Sat Jan 6 2001 Dan Kuykendall 0.9.9 -- Upgraded to new 0.9.8 version. -- Removed lots of unneeded code that was needed for the pre-beta versions. -- Added support for RedHat and Mandrake distro's. -- General clean up so that this can be reused by the project - -* Sat Sep 16 2000 Geoffrey Lee 09072000-2mdk -- Add url. -- turn off autorequires. -- use /var/www. - -* Wed Sep 13 2000 09072000-1mdk -- first rpm-zed distribution. -- cutom configuration files from Dan Kuykendall. -- suggestions on packaging from Dan. - -# end of file