mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-29 01:59:39 +01:00
3081 lines
47 KiB
Plaintext
3081 lines
47 KiB
Plaintext
|
#LyX 1.1 created this file. For more info see http://www.lyx.org/
|
|||
|
\lyxformat 2.17
|
|||
|
\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
|
|||
|
|
|||
|
phpGroupWare Application Development
|
|||
|
\layout Author
|
|||
|
|
|||
|
Dan Kuykendall <dan@kuykendall.org>
|
|||
|
\layout Date
|
|||
|
|
|||
|
v0.9 29 September 2000
|
|||
|
\layout Quote
|
|||
|
|
|||
|
|
|||
|
\emph on
|
|||
|
This document explains phpGroupWare'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
|
|||
|
|
|||
|
phpGroupWare 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.
|
|||
|
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Overview of application writing
|
|||
|
\layout Standard
|
|||
|
|
|||
|
We have attempted to make writing application for phpGroupWare as painless
|
|||
|
as possible.
|
|||
|
We hope any pain and suffering is cause by making your application work,
|
|||
|
but not dealing with phpGroupWare itself.
|
|||
|
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
What does the phpGroupWare API provide?
|
|||
|
\layout Standard
|
|||
|
|
|||
|
The phpGroupWare API handles session management, user/group management,
|
|||
|
has support for multiple databases, using the PHPLIB database abstraction
|
|||
|
method, 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, phpGroupWare provides several functions
|
|||
|
to give you the information you need about the users environment, and to
|
|||
|
properly plug into phpGroupWare.
|
|||
|
|
|||
|
\layout Section
|
|||
|
|
|||
|
Guidelines
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Requirements
|
|||
|
\layout Standard
|
|||
|
|
|||
|
These guidelines must be followed for any application that wants considered
|
|||
|
for inclusion into phpGroupWare deluxe:
|
|||
|
\layout Itemize
|
|||
|
|
|||
|
It must run on PHP3 and PHP4.
|
|||
|
|
|||
|
\layout Itemize
|
|||
|
|
|||
|
SQL statements must be compatible with both MySQL and PostgreSQL.
|
|||
|
|
|||
|
\layout Itemize
|
|||
|
|
|||
|
It must use our default header.inc.php include.
|
|||
|
|
|||
|
\layout Itemize
|
|||
|
|
|||
|
It must use our $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 available
|
|||
|
to users via the phpGroupWare Apps project, or whatever means the developers
|
|||
|
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
|
|||
|
<?php
|
|||
|
\newline
|
|||
|
$phpgw_info["flags"]["currentapp"] = "appname";
|
|||
|
\newline
|
|||
|
include("../header.inc.php");
|
|||
|
\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 phpGroupWare 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 phpGroupWare.
|
|||
|
|
|||
|
\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 $phpgw->common->header
|
|||
|
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 $phpgw->common->footer
|
|||
|
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 {}
|
|||
|
|
|||
|
\layout LyX-Code
|
|||
|
\bibitem {}
|
|||
|
|
|||
|
\layout LyX-Code
|
|||
|
\bibitem {}
|
|||
|
|
|||
|
\layout LyX-Code
|
|||
|
\bibitem {}
|
|||
|
|
|||
|
\layout LyX-Code
|
|||
|
\bibitem {}
|
|||
|
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Making phpGroupWare aware of your application
|
|||
|
\layout Standard
|
|||
|
|
|||
|
To make the application aware of your application, add your application
|
|||
|
details to the applications table.
|
|||
|
This can be done via the GUI administration screen, or via a SQL script.
|
|||
|
|
|||
|
\latex latex
|
|||
|
|
|||
|
\backslash
|
|||
|
begin{verbatim}
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
insert into applications (app_name, app_title, app_enabled) values ('appname',
|
|||
|
'The App name', 1);
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\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
|
|||
|
<?php
|
|||
|
\newline
|
|||
|
$img = "/" .
|
|||
|
$appname .
|
|||
|
"/images/navbar.gif";
|
|||
|
\newline
|
|||
|
section_start("My Application",$img);
|
|||
|
\newline
|
|||
|
echo "<a HREF=
|
|||
|
\backslash
|
|||
|
"" .
|
|||
|
$phpgw->link("myAdminPage.php") .
|
|||
|
"
|
|||
|
\backslash
|
|||
|
">";
|
|||
|
\newline
|
|||
|
echo lang("Change myApp settings") .
|
|||
|
"</a>";
|
|||
|
\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 $phpgw and $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
|
|||
|
|
|||
|
phpGroupWare 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 ~
|
|||
|
|--baseline.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--droptables.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--newtables.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--upgradetables.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--config.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
`--register.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.gif
|
|||
|
\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 (phpgroupware's optional daemons)
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--doc (developers docs)
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--inc
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--phpgw.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--phpgw_info.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--phpgw_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 ~
|
|||
|
|--baseline.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--droptables.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--newtables.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--upgradetables.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|--config.inc.php
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
|\SpecialChar ~
|
|||
|
\SpecialChar ~
|
|||
|
`--register.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 {}
|
|||
|
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Translations
|
|||
|
\layout Standard
|
|||
|
|
|||
|
The translations are now being done thru the database, and will be configurable
|
|||
|
to use other mechanisms.
|
|||
|
|
|||
|
\layout Standard
|
|||
|
|
|||
|
We are completing a program called Transy, which will provide developers/transla
|
|||
|
tors a nice GUI for building and updating translations.
|
|||
|
|
|||
|
\layout Standard
|
|||
|
|
|||
|
In the mean time you will need to create a SQL script yourself and name
|
|||
|
it lang.sql.
|
|||
|
You can copy the one in doc/lang.sql and use it as a template.
|
|||
|
|
|||
|
\layout Section
|
|||
|
|
|||
|
The API
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Introduction
|
|||
|
\layout Standard
|
|||
|
|
|||
|
phpGroupWare attempts to provide developers with a useful API to handle
|
|||
|
common tasks.
|
|||
|
|
|||
|
\layout Standard
|
|||
|
|
|||
|
To do this we have created a multi-dimensional class $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: $phpgw->send->msg() is in the inc/phpgwapi/phpgw_send.inc.php file.
|
|||
|
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Basic functions
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->link
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$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
|
|||
|
<form name=copy method=post action="<?php echo $phpgw->link();?>">
|
|||
|
\newline
|
|||
|
/* If session management is done via passing url parameters */
|
|||
|
\newline
|
|||
|
/* The the result would be */
|
|||
|
\newline
|
|||
|
/* <form name=copy method=post action="somepage.php?sessionid=87687693276?kp3=kjh
|
|||
|
98u80"> */
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Application Functions
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->common->phpgw_header
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$phpgw->phpgw_header()
|
|||
|
\newline
|
|||
|
Print out the start of the HTML page, including the navigation bar and
|
|||
|
includes appname/inc/header.php
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->common->phpgw_footer
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$phpgw->phpgw_footer()
|
|||
|
\newline
|
|||
|
Prints the system footer, and includes appname/inc/footer.php
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->common->appsession
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$phpgw->common->appsession($data)
|
|||
|
\newline
|
|||
|
Store important information session information that your application needs.
|
|||
|
\newline
|
|||
|
$phpgw->appsession will return the value of your session data is you leave
|
|||
|
the parameter empty [i.e.
|
|||
|
$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
|
|||
|
$phpgw->common->appsession("/path/to/something");
|
|||
|
\newline
|
|||
|
echo "Dir: " .
|
|||
|
$phpgw->common->appsession();
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
File functions
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->vfs->read_file
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$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 = $phpgw->vfs->read_file("/some/dir/to/file.txt");
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->vfs->write_file
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$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 = $phpgw->vfs->write_file("/some/dir/to/file.txt");
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->vfs->read_userfile
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$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 = $phpgw->vfs->read_userfile("file.txt");
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->vfs->write_userfile
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$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 = $phpgw->vfs->write_userfile("file.txt");
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->vfs->list_userfiles
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$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 = $phpgw->vfs->list_userfiles();
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Email/NNTP Functions
|
|||
|
\layout Subsubsection*
|
|||
|
|
|||
|
$phpgw->send->msg
|
|||
|
\layout Standard
|
|||
|
|
|||
|
$phpgw->msg->send($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 = $phpgw->msg->send("email", $to, $subject, $body);
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\layout Section
|
|||
|
|
|||
|
Configuration Variables
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Introduction
|
|||
|
\layout Standard
|
|||
|
|
|||
|
phpGroupWare attempt 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 '$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
|
|||
|
<?php
|
|||
|
\newline
|
|||
|
// To do a hello username
|
|||
|
\newline
|
|||
|
echo "Hello " .
|
|||
|
$phpgw_info["user"]["fullname"];
|
|||
|
\newline
|
|||
|
//If username first name is John and last name is Doe, prints: 'Hello
|
|||
|
John Doe'
|
|||
|
\newline
|
|||
|
?>
|
|||
|
\newline
|
|||
|
<?php
|
|||
|
\newline
|
|||
|
// To find out the location of the imap server
|
|||
|
\newline
|
|||
|
echo "IMAP Server is named: " .
|
|||
|
$phpgw_info["server"]["imap_server"];
|
|||
|
\newline
|
|||
|
//If imap is running on localhost, prints: 'IMAP Server is named: localhost'
|
|||
|
\newline
|
|||
|
?>
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
User information
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\size small
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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 phpGroupWare core functions for access to the files.
|
|||
|
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\size small
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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 phpGroupWare installation.
|
|||
|
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\size small
|
|||
|
$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 phpGroupWare is installed upon.
|
|||
|
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\size small
|
|||
|
$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
|
|||
|
$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
|
|||
|
|
|||
|
] = phpGroupWare version.
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Database information
|
|||
|
\layout Standard
|
|||
|
|
|||
|
It is unlikely you will need these, because $phpgw_info_db will already
|
|||
|
be loaded as a database for you to use.
|
|||
|
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\size small
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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 phpGroupWare functions.
|
|||
|
|
|||
|
\layout Standard
|
|||
|
|
|||
|
|
|||
|
\family typewriter
|
|||
|
\size small
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
$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
|
|||
|
|
|||
|
phpGroupWare 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 phpGroupWare administrator.
|
|||
|
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
How to use lang support
|
|||
|
\layout Standard
|
|||
|
|
|||
|
The lang() function is your application's interface to phpGroupWare's internatio
|
|||
|
nalization 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)."<br>";
|
|||
|
\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*<br>
|
|||
|
\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 <20> 42<br>
|
|||
|
\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 Subsubsection*
|
|||
|
|
|||
|
lang.sql
|
|||
|
\layout Standard
|
|||
|
|
|||
|
Currently all applications, and the core phpGroupWare source tree have a
|
|||
|
lang.sql file.
|
|||
|
This is the place to add translation data.
|
|||
|
Just add lines of the form:
|
|||
|
\latex latex
|
|||
|
|
|||
|
\backslash
|
|||
|
begin{verbatim}
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
REPLACE INTO lang (message_id, app_name, lang, content)
|
|||
|
\newline
|
|||
|
VALUES( 'account has been deleted','common','en','Account has been deleted');
|
|||
|
\newline
|
|||
|
|
|||
|
\newline
|
|||
|
|
|||
|
\backslash
|
|||
|
end{verbatim}
|
|||
|
\latex default
|
|||
|
translating the content to reflect the message_id string in the lang language.
|
|||
|
If the string is specific to your application, put your application name
|
|||
|
in for app_name otherwise use the name common.
|
|||
|
The message_id should be in lower case for a small increase in speed.
|
|||
|
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Common return codes
|
|||
|
\layout Standard
|
|||
|
|
|||
|
If you browse through the phpGroupWare 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
|
|||
|
|
|||
|
phpGroupWare 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.phpgroupware.org}
|
|||
|
\latex default
|
|||
|
as lyx source, HTML, and text.
|
|||
|
\layout Subsection
|
|||
|
|
|||
|
Comments
|
|||
|
\layout Standard
|
|||
|
|
|||
|
Comments on this HOWTO should be directed to the phpGroupWare developers
|
|||
|
mailing list phpgroupware-developers@lists.sourceforge.net
|
|||
|
\layout Standard
|
|||
|
|
|||
|
To subscribe, go to
|
|||
|
\latex latex
|
|||
|
|
|||
|
\backslash
|
|||
|
url{http://sourceforge.net/mail/?group}
|
|||
|
\latex default
|
|||
|
_id=7305
|
|||
|
\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 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 phpGroupWare
|
|||
|
such a success.
|
|||
|
|
|||
|
\the_end
|