2000-08-18 05:24:22 +02:00
|
|
|
|
phpGroupWare Application Development
|
|
|
|
|
Dan Kuykendall <dan@kuykendall.org>
|
2000-09-10 22:39:56 +02:00
|
|
|
|
v0.5, 09 September 2000
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
This document explains phpGroupWare's infastructure and API, along
|
2000-08-31 08:05:46 +02:00
|
|
|
|
with what is required to integrate applications into it.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
Table of Contents
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1. Introduction
|
|
|
|
|
|
|
|
|
|
1.1 Overview of application writing
|
|
|
|
|
1.2 What does the phpGroupWare API provide?
|
|
|
|
|
|
|
|
|
|
2. Guidelines
|
|
|
|
|
|
|
|
|
|
2.1 Requirements
|
|
|
|
|
2.2 Writing/porting your application
|
|
|
|
|
2.2.1 Include files
|
|
|
|
|
|
|
|
|
|
3. Installing your application
|
|
|
|
|
|
|
|
|
|
3.1 Overview
|
|
|
|
|
3.2 Automatic features
|
|
|
|
|
3.3 Adding files, directories and icons.
|
|
|
|
|
3.4 Making phpGroupWare aware of your application
|
|
|
|
|
|
|
|
|
|
4. Infastructure
|
|
|
|
|
|
|
|
|
|
4.1 Overview
|
|
|
|
|
4.2 Directory tree
|
2000-08-31 08:05:46 +02:00
|
|
|
|
4.3 Translations
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
5. The API
|
|
|
|
|
|
|
|
|
|
5.1 Introduction
|
|
|
|
|
5.2 Basic functions
|
|
|
|
|
5.2.1 $phpgw->link
|
|
|
|
|
5.3 Application Functions
|
|
|
|
|
5.3.1 $phpgw->common->appsession
|
|
|
|
|
5.4 File functions
|
|
|
|
|
5.4.1 $phpgw->vfs->read_file
|
|
|
|
|
5.4.2 $phpgw->vfs->write_file
|
|
|
|
|
5.4.3 $phpgw->vfs->read_userfile
|
|
|
|
|
5.4.4 $phpgw->vfs->write_userfile
|
|
|
|
|
5.4.5 $phpgw->vfs->list_userfiles
|
|
|
|
|
5.5 Email/NNTP Functions
|
|
|
|
|
5.5.1 $phpgw->send->msg
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
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 Acknowledgements and Thanks
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
11.. IInnttrroodduuccttiioonn
|
|
|
|
|
|
|
|
|
|
phpGroupWare is a web based groupware application framework (API), for
|
|
|
|
|
writing applications. Integrated applications such as email, calendar,
|
2000-08-31 08:05:46 +02:00
|
|
|
|
todo list, address book, and file manager are included.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
11..11.. OOvveerrvviieeww ooff aapppplliiccaattiioonn wwrriittiinngg
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
11..22.. WWhhaatt ddooeess tthhee pphhppGGrroouuppWWaarree AAPPII pprroovviiddee??
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
22.. GGuuiiddeelliinneess
|
|
|
|
|
|
|
|
|
|
22..11.. RReeqquuiirreemmeennttss
|
|
|
|
|
|
|
|
|
|
These guidelines must be followed for any application that wants
|
2000-08-31 08:05:46 +02:00
|
|
|
|
considered for inclusion into phpGroupWare deluxe.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
It must run on PHP3 and PHP4.
|
|
|
|
|
SQL statements must be compatible with both MySQL and PostgreSQL.
|
|
|
|
|
It must use our default header.inc.php include.
|
|
|
|
|
It must use our $phpgw_link($url) for all links (this is for session
|
|
|
|
|
support).
|
2000-09-10 22:39:56 +02:00
|
|
|
|
It must use "post" for forms.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
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.
|
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
For applications that do not meet these requirements, they can be
|
|
|
|
|
avalible to users via the phpGroupWare Apps project, or whatever means
|
|
|
|
|
the developers decide.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
If you need help converting your application to templates and our lang
|
|
|
|
|
support, we will try to connect you with someone to help.
|
|
|
|
|
|
|
|
|
|
22..22.. WWrriittiinngg//ppoorrttiinngg yyoouurr aapppplliiccaattiioonn
|
|
|
|
|
|
|
|
|
|
22..22..11.. IInncclluuddee ffiilleess
|
|
|
|
|
|
|
|
|
|
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
|
2000-09-10 22:39:56 +02:00
|
|
|
|
$phpgw_info["flags"]["currentapp"] = "appname";
|
2000-08-18 05:24:22 +02:00
|
|
|
|
include("../header.inc.php");
|
|
|
|
|
?>
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Of course change application name to fit.
|
2000-08-31 08:05:46 +02:00
|
|
|
|
This include will provide the following things:
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
+o The phpgwAPI - The phpGroupWare API will be loaded.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
+o The phpGW navbar will be loaded (by default, but can be disabled
|
|
|
|
|
until a later point.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
+o 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.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
+o 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.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
+o appname/inc/footer.inc.php - This file is loaded just before the
|
|
|
|
|
system footer, allowing developers to close connections and
|
|
|
|
|
whetever else they need.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
+o The phpGW footer will be loaded, which closes several connections.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33.. IInnssttaalllliinngg yyoouurr aapppplliiccaattiioonn
|
|
|
|
|
|
|
|
|
|
33..11.. OOvveerrvviieeww
|
|
|
|
|
|
|
|
|
|
It is fairly simple to add and delete applications to/from
|
|
|
|
|
phpGroupWare.
|
|
|
|
|
|
|
|
|
|
33..22.. AAuuttoommaattiicc ffeeaattuurreess
|
|
|
|
|
|
|
|
|
|
To make things easy for developers we go ahead and load the following
|
|
|
|
|
files.
|
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
+o appname/inc/functions.inc.php - This file should include all your
|
2000-08-18 05:24:22 +02:00
|
|
|
|
application specific functions.
|
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
+o appname/inc/header.inc.php - This file is loaded just after the
|
2000-08-18 05:24:22 +02:00
|
|
|
|
system header/navbar, and allows developers to use it for whatever
|
|
|
|
|
they need to load.
|
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
+o appname/inc/footer.inc.php - This file is loaded just before the
|
2000-08-18 05:24:22 +02:00
|
|
|
|
system footer, allowing developers to close connections and
|
|
|
|
|
whetever else they need.
|
|
|
|
|
|
|
|
|
|
33..33.. AAddddiinngg ffiilleess,, ddiirreeccttoorriieess aanndd iiccoonnss..
|
|
|
|
|
|
|
|
|
|
You will need to create the following directories for your code
|
2000-08-31 08:05:46 +02:00
|
|
|
|
(replace 'appname' with your application name)
|
|
|
|
|
|
|
|
|
|
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
`-- appname
|
|
|
|
|
`-- images
|
2000-08-18 05:24:22 +02:00
|
|
|
|
| `-- navbar.gif
|
|
|
|
|
`-- inc
|
2000-08-31 08:05:46 +02:00
|
|
|
|
| |-- functions.inc.php
|
2000-08-18 05:24:22 +02:00
|
|
|
|
| |-- header.inc.php
|
|
|
|
|
| `-- footer.inc.php
|
2000-08-31 08:05:46 +02:00
|
|
|
|
`-- templates
|
2000-08-18 05:24:22 +02:00
|
|
|
|
`-- default
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33..44.. MMaakkiinngg pphhppGGrroouuppWWaarree aawwaarree ooff yyoouurr aapppplliiccaattiioonn
|
|
|
|
|
|
|
|
|
|
To make the application aware of your application, add your
|
2000-08-31 08:05:46 +02:00
|
|
|
|
application details to the applications table. This can be done via
|
|
|
|
|
the GUI administration screen, or via a sql script.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
insert into applications (app_name, app_title, app_enabled) values ('appname', 'The App name', 1);
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44.. IInnffaassttrruuccttuurree
|
|
|
|
|
|
|
|
|
|
44..11.. OOvveerrvviieeww
|
|
|
|
|
|
|
|
|
|
phpGroupWare 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 accommidate a large number of
|
|
|
|
|
applications and functions.
|
|
|
|
|
|
|
|
|
|
44..22.. DDiirreeccttoorryy ttrreeee
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.-- addressbook
|
2000-08-31 08:05:46 +02:00
|
|
|
|
| `-- images
|
|
|
|
|
| | `-- navbar.gif
|
|
|
|
|
| `-- inc
|
|
|
|
|
| | |-- functions.inc.php
|
|
|
|
|
| | |-- header.inc.php
|
|
|
|
|
| | `-- footer.inc.php
|
|
|
|
|
| `-- templates
|
|
|
|
|
| `-- default
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|-- admin
|
2000-08-31 08:05:46 +02:00
|
|
|
|
| `-- images
|
|
|
|
|
| | `-- navbar.gif
|
|
|
|
|
| `-- inc
|
|
|
|
|
| | |-- functions.inc.php
|
|
|
|
|
| | |-- header.inc.php
|
|
|
|
|
| | `-- footer.inc.php
|
|
|
|
|
| `-- templates
|
|
|
|
|
| `-- default
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|-- calendar
|
2000-08-31 08:05:46 +02:00
|
|
|
|
| `-- images
|
|
|
|
|
| | `-- navbar.gif
|
|
|
|
|
| `-- inc
|
|
|
|
|
| | |-- functions.inc.php
|
|
|
|
|
| | |-- header.inc.php
|
|
|
|
|
| | `-- footer.inc.php
|
|
|
|
|
| `-- templates
|
|
|
|
|
| `-- default
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|-- cron
|
|
|
|
|
|-- doc
|
|
|
|
|
|-- email
|
2000-08-31 08:05:46 +02:00
|
|
|
|
| `-- images
|
|
|
|
|
| | `-- navbar.gif
|
|
|
|
|
| `-- inc
|
|
|
|
|
| | |-- functions.inc.php
|
|
|
|
|
| | |-- header.inc.php
|
|
|
|
|
| | `-- footer.inc.php
|
|
|
|
|
| `-- templates
|
|
|
|
|
| `-- default
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|-- filemanager
|
|
|
|
|
|-- files
|
|
|
|
|
| |-- groups
|
|
|
|
|
| `-- users
|
|
|
|
|
|-- inc
|
2000-08-31 08:05:46 +02:00
|
|
|
|
| |-- phpgwapi
|
|
|
|
|
| |-- phpgw.inc.php
|
|
|
|
|
| |-- phpgw_info.inc.php
|
|
|
|
|
| |-- phpgw_common.inc.php
|
|
|
|
|
| | `-- etc...
|
2000-08-18 05:24:22 +02:00
|
|
|
|
| `-- templates
|
|
|
|
|
| |-- default
|
|
|
|
|
| | |-- addressbook
|
|
|
|
|
| | |-- admin
|
|
|
|
|
| | |-- calendar
|
|
|
|
|
| | |-- common
|
|
|
|
|
| | |-- email
|
|
|
|
|
| | |-- filemanager
|
|
|
|
|
| | |-- headlines
|
|
|
|
|
| | |-- preferences
|
|
|
|
|
| | |-- todo
|
|
|
|
|
| | `-- tts
|
|
|
|
|
| `-- icons
|
|
|
|
|
| |-- email
|
|
|
|
|
| |-- calendar
|
|
|
|
|
| `-- tts
|
|
|
|
|
|-- preferences
|
2000-08-31 08:05:46 +02:00
|
|
|
|
| `-- images
|
|
|
|
|
| | `-- navbar.gif
|
|
|
|
|
| `-- inc
|
|
|
|
|
| | |-- functions.inc.php
|
|
|
|
|
| | |-- header.inc.php
|
|
|
|
|
| | `-- footer.inc.php
|
|
|
|
|
| `-- templates
|
|
|
|
|
| `-- default
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|-- themes
|
2000-08-31 08:05:46 +02:00
|
|
|
|
`-- todo
|
|
|
|
|
`-- images
|
|
|
|
|
| `-- navbar.gif
|
|
|
|
|
`-- inc
|
|
|
|
|
| |-- functions.inc.php
|
|
|
|
|
| |-- header.inc.php
|
|
|
|
|
| `-- footer.inc.php
|
|
|
|
|
`-- templates
|
|
|
|
|
`-- default
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
44..33.. TTrraannssllaattiioonnss
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
The translations are now being done thru the database, and will be
|
2000-09-10 22:39:56 +02:00
|
|
|
|
configurable to use other mechanisms.
|
|
|
|
|
We are completing a program called Transy, which will provide
|
|
|
|
|
developers/translators a nice GUI for building and updating
|
|
|
|
|
translations.
|
|
|
|
|
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.
|
2000-08-18 05:24:22 +02:00
|
|
|
|
|
|
|
|
|
55.. TThhee AAPPII
|
|
|
|
|
|
|
|
|
|
55..11.. IInnttrroodduuccttiioonn
|
|
|
|
|
|
|
|
|
|
phpGroupWare attempts to provide developers with a useful API to
|
|
|
|
|
handle common tasks.
|
|
|
|
|
To do this we have created a multi-dimensional class $phpgw->.
|
|
|
|
|
This allows for terrific code organization, and help developers easily
|
|
|
|
|
identify the file that the function is in. All the files that are
|
|
|
|
|
patr of this class are in the inc/core directory and are named to
|
|
|
|
|
match the sub-class.
|
2000-08-31 08:05:46 +02:00
|
|
|
|
Example: $phpgw->send->msg() is in the inc/phpgwapi/phpgw_send.inc.php
|
2000-08-18 05:24:22 +02:00
|
|
|
|
file.
|
|
|
|
|
|
|
|
|
|
55..22.. BBaassiicc ffuunnccttiioonnss
|
|
|
|
|
|
|
|
|
|
55..22..11.. $$pphhppggww-->>lliinnkk
|
|
|
|
|
|
|
|
|
|
$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 paramaters.
|
|
|
|
|
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 $phpgw->link();?>">
|
|
|
|
|
/* If session management is done via passing url paramaters */
|
|
|
|
|
/* The the result would be */
|
|
|
|
|
/* <form name=copy method=post action="somepage.php?sessionid=87687693276?kp3=kjh98u80"> */
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
2000-08-31 08:05:46 +02:00
|
|
|
|
|
2000-08-18 05:24:22 +02:00
|
|
|
|
55..33.. AApppplliiccaattiioonn FFuunnccttiioonnss
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55..33..11.. $$pphhppggww-->>ccoommmmoonn-->>aappppsseessssiioonn
|
|
|
|
|
|
|
|
|
|
$phpgw->common->appsession($data)
|
|
|
|
|
Store important information session information that your application
|
|
|
|
|
needs.
|
|
|
|
|
$phpgw->appsession will return the value of your session data is you
|
|
|
|
|
leave the paramater enmpty [i.e. $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 recieve the value back.
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
$phpgw->common->appsession("/path/to/something");
|
|
|
|
|
echo "Dir: " . $phpgw->common->appsession();
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55..44.. FFiillee ffuunnccttiioonnss
|
|
|
|
|
|
|
|
|
|
55..44..11.. $$pphhppggww-->>vvffss-->>rreeaadd__ffiillee
|
|
|
|
|
|
|
|
|
|
$phpgw->vfs->read_file($file)
|
|
|
|
|
Returns the data from $file.
|
|
|
|
|
You must send the complete path to the file.
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
$data = $phpgw->vfs->read_file("/some/dir/to/file.txt");
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55..44..22.. $$pphhppggww-->>vvffss-->>wwrriittee__ffiillee
|
|
|
|
|
|
|
|
|
|
$phpgw->vfs->write_file($file, $contents)
|
|
|
|
|
Write data to $file.
|
|
|
|
|
You must send the complete path to the file.
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
$data = $phpgw->vfs->write_file("/some/dir/to/file.txt");
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55..44..33.. $$pphhppggww-->>vvffss-->>rreeaadd__uusseerrffiillee
|
|
|
|
|
|
|
|
|
|
$phpgw->vfs->read_userfile($file)
|
|
|
|
|
Returns the data from $file, which resides in the users private dir.
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
$data = $phpgw->vfs->read_userfile("file.txt");
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55..44..44.. $$pphhppggww-->>vvffss-->>wwrriittee__uusseerrffiillee
|
|
|
|
|
|
|
|
|
|
$phpgw->write_userfile($file, $contents)
|
|
|
|
|
Writes data to $file, which resides in the users private dir.
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
$data = $phpgw->vfs->write_userfile("file.txt");
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55..44..55.. $$pphhppggww-->>vvffss-->>lliisstt__uusseerrffiilleess
|
|
|
|
|
|
|
|
|
|
$phpgw->vfs->list_userfiles()
|
|
|
|
|
Returns an array which has the list of files in the users private dir.
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
$filelist = array();
|
|
|
|
|
$filelist = $phpgw->vfs->list_userfiles();
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55..55.. EEmmaaiill//NNNNTTPP FFuunnccttiioonnss
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55..55..11.. $$pphhppggww-->>sseenndd-->>mmssgg
|
|
|
|
|
|
|
|
|
|
$phpgw->msg->send($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 = $phpgw->msg->send("email", $to, $subject, $body);
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66.. CCoonnffiigguurraattiioonn VVaarriiaabblleess
|
|
|
|
|
|
|
|
|
|
66..11.. IInnttrroodduuccttiioonn
|
|
|
|
|
|
|
|
|
|
phpGroupWare attempt 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
|
|
|
|
|
'$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 " . $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: " . $phpgw_info["server"]["imap_server"];
|
|
|
|
|
//If imap is running on localhost, prints: 'IMAP Server is named: localhost'
|
|
|
|
|
?>
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66..22.. UUsseerr iinnffoorrmmaattiioonn
|
|
|
|
|
|
|
|
|
|
$phpgw_info["user"]["userid"] = The user ID.
|
|
|
|
|
$phpgw_info["user"]["sessionid"] = The session ID
|
|
|
|
|
$phpgw_info["user"]["theme"] = Selected theme
|
|
|
|
|
$phpgw_info["user"]["private_dir"] = Users private dir. Use
|
|
|
|
|
phpgroupware core functions for access to the files.
|
|
|
|
|
$phpgw_info["user"]["firstname"] = Users first name
|
|
|
|
|
$phpgw_info["user"]["lastname"] = Users last name
|
|
|
|
|
$phpgw_info["user"]["fullname"] = Users Full Name
|
|
|
|
|
$phpgw_info["user"]["groups"] = Groups the user is a member of
|
|
|
|
|
$phpgw_info["user"]["app_perms"] = If the user has access to the
|
|
|
|
|
current application
|
|
|
|
|
$phpgw_info["user"]["lastlogin"] = Last time the user logged in.
|
|
|
|
|
$phpgw_info["user"]["lastloginfrom"] = Where they logged in from the
|
|
|
|
|
last time.
|
|
|
|
|
$phpgw_info["user"]["lastpasswd_change"] = Last time they changed
|
|
|
|
|
their password.
|
|
|
|
|
$phpgw_info["user"]["passwd"] = Hashed password.
|
|
|
|
|
$phpgw_info["user"]["status"] = If the user is enabled.
|
|
|
|
|
$phpgw_info["user"]["logintime"] = Time they logged into their current
|
|
|
|
|
session.
|
|
|
|
|
$phpgw_info["user"]["session_dla"] = Last time they did anything in
|
|
|
|
|
their current session
|
|
|
|
|
$phpgw_info["user"]["session_ip"] = Current IP address
|
|
|
|
|
|
|
|
|
|
66..33.. GGrroouupp iinnffoorrmmaattiioonn
|
|
|
|
|
|
|
|
|
|
$phpgw_info["group"]["group_names"] = List of groups.
|
|
|
|
|
|
|
|
|
|
66..44.. SSeerrvveerr iinnffoorrmmaattiioonn
|
|
|
|
|
|
|
|
|
|
$phpgw_info["server"]["server_root"] = Main installation directory
|
|
|
|
|
$phpgw_info["server"]["include_root"] = Location of the 'inc'
|
|
|
|
|
directory.
|
|
|
|
|
$phpgw_info["server"]["temp_dir"] = Directory that can be used for
|
|
|
|
|
temporarily storing files
|
|
|
|
|
$phpgw_info["server"]["common_include_dir"] = Location of the
|
|
|
|
|
core/shared include files.
|
|
|
|
|
$phpgw_info["server"]["template_dir"] = Active template files
|
|
|
|
|
directory. This is defaulted by the server, and changeable by the
|
|
|
|
|
user.
|
|
|
|
|
$phpgw_info["server"]["dir_separator"] = Allows compatibility with
|
|
|
|
|
WindowsNT directory format,
|
|
|
|
|
$phpgw_info["server"]["encrpytkey"] =
|
|
|
|
|
$phpgw_info["server"]["site_title"] = Site Title will show in the
|
|
|
|
|
title bar of each webpage.
|
|
|
|
|
$phpgw_info["server"]["webserver_url"] = URL to phpGroupWare
|
|
|
|
|
installation.
|
|
|
|
|
$phpgw_info["server"]["charset"] = Unknown
|
|
|
|
|
$phpgw_info["server"]["version"] = phpGroupWare version.
|
|
|
|
|
|
|
|
|
|
66..55.. DDaattaabbaassee iinnffoorrmmaattiioonn
|
|
|
|
|
|
|
|
|
|
It is unlikely you will need these, because $phpgw_info_db will
|
|
|
|
|
already be loaded as a database for you to use.
|
|
|
|
|
$phpgw_info["server"]["db_host"] = Address of the database server.
|
|
|
|
|
Usually this is set to localhost.
|
|
|
|
|
$phpgw_info["server"]["db_name"] = Database name.
|
|
|
|
|
$phpgw_info["server"]["db_user"] = User name.
|
|
|
|
|
$phpgw_info["server"]["db_pass"] = Password
|
|
|
|
|
$phpgw_info["server"]["db_type"] = Type of database. Currently MySQL
|
|
|
|
|
and PostgreSQL are supported.
|
|
|
|
|
|
|
|
|
|
66..66.. MMaaiill iinnffoorrmmaattiioonn
|
|
|
|
|
|
|
|
|
|
It is unlikely you will need these, because most email needs are
|
|
|
|
|
services thru core phpGroupWare functions.
|
|
|
|
|
$phpgw_info["server"]["mail_server"] = Address of the IMAP server.
|
|
|
|
|
Usually this is set to localhost.
|
|
|
|
|
$phpgw_info["server"]["mail_server_type"] = IMAP or POP3
|
|
|
|
|
$phpgw_info["server"]["imap_server_type"] = Cyrus or Uwash
|
|
|
|
|
$phpgw_info["server"]["imap_port"] = This is usually 143, and should
|
|
|
|
|
only be changed if there is a good reason.
|
|
|
|
|
$phpgw_info["server"]["mail_suffix] = This is the domain name, used to
|
|
|
|
|
add to email address
|
|
|
|
|
$phpgw_info["server"]["mail_login_type"] = This adds support for
|
|
|
|
|
VMailMgr. Generally this hsould be set to 'standard'.
|
|
|
|
|
$phpgw_info["server"]["smtp_server"] = Address of the SMTP server.
|
|
|
|
|
Usually this is set to localhost.
|
|
|
|
|
$phpgw_info["server"]["smtp_port"] = This is usually 25, and should
|
|
|
|
|
only be changed if there is a good reason.
|
|
|
|
|
|
|
|
|
|
66..77.. NNNNTTPP iinnffoorrmmaattiioonn
|
|
|
|
|
|
|
|
|
|
$phpgw_info["server"]["nntp_server"] = Address of the NNTP server.
|
|
|
|
|
$phpgw_info["server"]["nntp_port"] = This is usually XX, and should
|
|
|
|
|
only be changed if there is a good reason.
|
|
|
|
|
$phpgw_info["server"]["nntp_sender"] = Unknown
|
|
|
|
|
$phpgw_info["server"]["nntp_organization"] = Unknown
|
|
|
|
|
$phpgw_info["server"]["nntp_admin"] = Uknown
|
|
|
|
|
|
|
|
|
|
66..88.. AApppplliiccaattiioonn iinnffoorrmmaattiioonn
|
|
|
|
|
|
|
|
|
|
Each application has the following information avalible.
|
|
|
|
|
$phpgw_info["apps"]["appname"]["title"] = The title of the
|
|
|
|
|
application.
|
|
|
|
|
$phpgw_info["apps"]["appname"]["enabled"] = If the application is
|
|
|
|
|
enabled. True or False.
|
|
|
|
|
$phpgw_info["server"]["app_include_dir"] = Location of the current
|
|
|
|
|
application include files.
|
|
|
|
|
$phpgw_info["server"]["app_template_dir"] = Location of the current
|
|
|
|
|
application tpl files.
|
|
|
|
|
$phpgw_info["server"]["app_lang_dir"] = Location of the current lang
|
|
|
|
|
directory.
|
|
|
|
|
$phpgw_info["server"]["app_auth"] = If the server and current user
|
|
|
|
|
have access to current application
|
|
|
|
|
$phpgw_info["server"]["app_current"] = name of the current
|
|
|
|
|
application.
|
|
|
|
|
|
|
|
|
|
77.. UUssiinngg LLaanngguuaaggee SSuuppppoorrtt
|
|
|
|
|
|
|
|
|
|
77..11.. OOvveerrvviieeww
|
|
|
|
|
|
|
|
|
|
phpGroupWare is built using a multi-language support scheme. This
|
|
|
|
|
means the pages can be translated to other languages very easily. It
|
|
|
|
|
is done thru a series of lang files, which can be translated and
|
|
|
|
|
selected by the user.
|
|
|
|
|
|
|
|
|
|
77..22.. HHooww ttoo uussee llaanngg ssuuppppoorrtt
|
|
|
|
|
|
|
|
|
|
Some instructions on using the lang files.
|
|
|
|
|
Under inc/lang there needs to be a sub-directory for each langague.
|
|
|
|
|
Inside the directory there are a number of files for each application.
|
|
|
|
|
There is one common file which contains a list of words that all
|
|
|
|
|
applications use. ie, add, delete, edit, etc...
|
|
|
|
|
Words that are specific to a application should be stored with that
|
|
|
|
|
applications include file.
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
function lang_todo($message, $m1 = "", $m2 = "", $m3 = "", $m4 = "")
|
|
|
|
|
{
|
|
|
|
|
$message = strtolower($message);
|
|
|
|
|
switch($message)
|
|
|
|
|
{
|
|
|
|
|
case "urgency": $s = "Urgency"; break;
|
|
|
|
|
case "completed": $s = "completed"; break;
|
|
|
|
|
[ snip ]
|
|
|
|
|
default: $s = "<b>*</b> " . $message;
|
|
|
|
|
}
|
|
|
|
|
return $s;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
______________________________________________________________________
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The list of words in the left column should always be written in
|
|
|
|
|
english. The second column is used to return those words in that
|
|
|
|
|
includes language. $m1, $m2, $m3, and $m4 are used to pass extra data
|
|
|
|
|
to be place in the middle of a sentence.
|
|
|
|
|
For example:
|
|
|
|
|
|
|
|
|
|
You have 29 new messages!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The default should return a bold faced * and the word that wasn't
|
|
|
|
|
found. This allows users to notice that something is missing in the
|
|
|
|
|
files and make changes if necessary.
|
|
|
|
|
|
|
|
|
|
88.. UUssiinngg TTeemmppllaatteess
|
|
|
|
|
|
|
|
|
|
88..11.. OOvveerrvviieeww
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
88..22.. HHooww ttoo uussee tteemmppllaatteess
|
|
|
|
|
|
|
|
|
|
Some instructions on using templates
|
|
|
|
|
For Further info read the PHPLIBs documentation for their template
|
|
|
|
|
class.
|
|
|
|
|
|
|
|
|
|
99.. AAbboouutt tthhiiss ddooccuummeenntt
|
|
|
|
|
|
|
|
|
|
99..11.. NNeeww vveerrssiioonnss
|
|
|
|
|
|
|
|
|
|
The newest version of this document can be found on our website
|
|
|
|
|
<http://www.phpgroupware.org> as SGML source, as HTML and as TEXT.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99..22.. CCoommmmeennttss
|
|
|
|
|
|
|
|
|
|
Comments on this HOWTO should be directed to the phpGroupWare
|
|
|
|
|
developers mailing list phpgroupware-developers@lists.sourceforge.net
|
|
|
|
|
<mailto:phpgroupware-developers@lists.sourceforge.net>.
|
|
|
|
|
|
|
|
|
|
To subscribe, go to <http://sourceforge.net/mail/?group_id=7305>
|
|
|
|
|
|
|
|
|
|
99..33.. HHiissttoorryy
|
|
|
|
|
|
|
|
|
|
This document was written by Dan Kuykendall.
|
|
|
|
|
|
|
|
|
|
99..44.. CCooppyyrriigghhttss aanndd TTrraaddeemmaarrkkss
|
|
|
|
|
|
|
|
|
|
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 GNU Free Documentation License
|
|
|
|
|
<http://www.gnu.org/copyleft/fdl.txt>.
|
|
|
|
|
|
|
|
|
|
99..55.. AAcckknnoowwlleeddggeemmeennttss aanndd TThhaannkkss
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|