File: custom_functions.php

package info (click to toggle)
phpldapadmin 0.9.5-3sarge3
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 3,052 kB
  • ctags: 2,526
  • sloc: php: 21,258; sh: 262; makefile: 132; xml: 42
file content (187 lines) | stat: -rw-r--r-- 6,166 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<?php
// $Header: /cvsroot/phpldapadmin/phpldapadmin/custom_functions.php,v 1.6 2004/05/27 13:25:13 uugdave Exp $


/*
 * custom_functions.php: Choose your own adventure.
 *
 * This file is full of functions (callbacks really) that are
 * meant to be filled in by users of phpLDAPadmin (you). These functions
 * are called as the result of a phpLDAPadmin event, like adding
 * a new entry, deleting an entry, changing an attribute value, etc.
 * Consider this concept an attempt to provide something like SQL 
 * triggers for LDAP users.
 *
 * This can be very handy, for example, for system administrators
 * who want to execute custom code after a user is created or deleted.
 *
 * These functions generally have 2 parameters, $server_id and $dn:
 *
 * 1. $server_id.
 * The $server_id can be used to connect to the server using 
 * pla_ldap_connect( $server_id ) to fetch additional information about
 * the entry being deleted. It can also be used to call 
 * get_object_attrs( $server_id, $dn ) to fetch the entry's attributes.
 *
 * 2. $dn
 * The dn is provided so users can determine where in the LDAP tree
 * this entry resides and act accordingly. For example, if the DN
 * contains "ou=development", you may want to act differently than 
 * if it contains "ou=accounting".
 *
 * Types of callback functions:
 *
 * These callbacks generally fall into two categories: "pre" and "post",
 * "pre" callbacks run before an event has occurred and their return 
 * value (true or false) is used to decide whether to allow the event
 * to proceed. "post" callbacks run after an event has occurred and
 * their return value (void) is ignored.
 *
 * NOTE: These custom callbacks are NOT executed for LDIF imports.
 *
 * ALSO NOTE: These callbacks are responsible for printing out error
 * messages. The calling code will die silently without notifying
 * the user why. YOU are responsible for creating output here.
 *
 * TODO: This section outlines events that phpLDAPadmin does not yet
 *       support. This list includes:
 *       - ldap_mod_add (ie, adding a new value to a multi-valued attribute)
 *       - ldap_mod_del (ie, deleting a value from a multi-valued attribute
 *                           or deleting an attribute from an entry)
 *       - ldap_rename  (ie, renaming an entry's RDN)
 *
 * DONE: This section lists events that phpLDAPadmin *does* support. 
 *       This list includes:
 *       - ldap_add     (ie, creating new entries)
 *       - ldap_delete  (ie, removing entries)
 *       - ldap_modify  (ie, changing the value of an attribute, for both
 *                           multi- and single-valued attributes)
 */

/*
 * This function is executed before modifying an entry's
 * attribute. Unlike preAttrModify, this function's
 * return value is ignored. In addition to the standard 
 * $server_id and $dn paramaters, this function also 
 * gives you the attribute name ($attr_name), and the new 
 * value that the attribute will have ($new_value). $new_value
 * may be a string or an array of strings.
 */
function postAttrModify( $server_id, $dn, $attr_name, $new_value )
{
	// Fill me in
	//
	// A very simple (and lame) example:
	// if( 0 == strcasecmp( $attr_name, "userPassword" ) ) {
	//     mail( "user@example.com", "Password change notification", 
	//           "User '$dn' has changed their password." );
	// }
}

/*
 * This function is executed before modifying an entry's
 * attribute. If it returns true, the entry is modified.
 * If it returns false, the entry is not modified.
 * In addition to the standard $server_id and $dn params,
 * this function also gives you the attribute name ($attr_name)
 * and the new value that the attribute will have ($new_value).
 * $new_value may be a string or an array of strings.
 */
function preAttrModify( $server_id, $dn, $attr_name, $new_value )
{
	// Fill me in
	return true;
}

/*
 * This function is executed before adding an entry's
 * attribute. If it returns true, the entry is added.
 * If it returns false, the entry is not added.
 * In addition to the standard $server_id and $dn params,
 * this function also gives you the attribute name ($attr_name)
 * and the new value that the attribute will have ($new_value).
 * $new_value may be a string or an array of strings.
 */
function preAttrAdd( $server_id, $dn, $attr_name, $new_value )
{
	// Fill me in
	return true;
}

/*
 * This function is executed after an entry is created.
 * Unlike preEntryCreate(), this function's return 
 * value is ignored. This is very handy for executing
 * custom code after creating a user account. For example,
 * one may wish to create the user's home directory.
 * See the documentation for preEntryCreate() below for
 * the description of the $attrs parameter.
 */
function postEntryCreate( $server_id, $dn, $attrs )
{
	// Fill me in
	//
	// A very simple example:
	// if( preg_match( "/^uid=(\w+),/", $dn, $user_name ) ) {
	//     $user_name = $user_name[1];
	//     mkdir( "/home/$user_name" );
	// } else {
	//     // not a user account
	// }
}

/*
 * This function is executed before an entry is created.
 * If it returns true, the entry is created, if false is
 * returned, the entry is not created. This function has
 * the additional parameters, $attrs, which is an assoc-
 * iative array of attribute/vale pairs of the same form
 * expected by ldap_add(), example:
 *
 * Array (
 *  [objectClass] => Array (
 *     [0] => top
 *     [1] => person
 *     [2] => inetOrgPerson
 *  )
 *  [cn] => John
 *  [sn] => Doe
 *   ...
 * )
 *
 */
function preEntryCreate( $server_id, $dn, $attrs )
{
	// Fill me in
	return true;
}

/*
 * This function is executed before an entry is deleted.
 * If it returns true, the entry is deleted, if false
 * is returned, the entry is not deleted.
 */
function preEntryDelete( $server_id, $dn )
{
	// Fill me in
	return true;
}

/*
 * This function is executed after an entry is deleted.
 * Unlike preEntryDelete(), this function's return 
 * value is ignored.
 */
function postEntryDelete( $server_id, $dn )
{
	// Fill me in
}

/**
 * This function is called, after a new session is initilaized
 */
function postSessionInit()
{
	// Fill me in
}