2 mikeb - Release version 3.3.7
4 mikeb - Update documentation to reflect using gacl.ini.php
5 mikeb - Allow ADODB_DIR to be set prior to GACL class being loaded
6 mikeb - Remove ADODB_FETCH_MODE global variable, use just setFetchMode() so we don't conflict with other
8 mikeb - Upgrade Smarty v2.6.14
9 mikeb - Upgrade ADODB v4.92
10 mikeb - Switch from CVS to SVN on sourceforge.net.
12 mikeb - Release version 3.3.6
14 mikeb - Added function get_section_data() thanks to Rodrigo Moraes <rodrigo.moraes@gmail.com>
16 mikeb - Fixed a bunch of warnings/notices thanks to Charles M Hall <cmhall@hawaii.edu>
18 mikeb - Fixed a few PHP NOTICEs
20 mikeb - Fixed PHP5 warning/notice of reference in gacl_api.class to do with end() call.
22 mikeb - added dirname() to the config_file variable in admin/gacl_admin.inc.php
24 mikeb - Addslashes to JS creation code in assign_group.php.
26 mikeb - Added support for MS-SQL in setup.php, thanks to François Tissandier <francois.tissandier@tebu-bio.com>
28 mikeb - Fixed typo in manual
29 mikeb - Fixed comments in gacl.class.php
30 mikeb - released v3.3.5
32 mikeb - Fixed bug with edit_acl() for cases where a non-existant acl_id is specified. Thanks to Caleb Simonyi-Gindele <caleb@vetstar.com>
34 mikeb - Fixed bug with config ini file path in setup.php
36 mikeb - Fixed bug with double/single quotes on line 3526. Jérémy Cohen Solal <jeremy@eiole.com>
38 mikeb - Removed table prefix comment regarding not using "_". Apparently it works now
39 mikeb - Fixed comments in gacl.class.php regarding group IDs, it now correctly says group values.
40 mikeb - Hashed_Cache_Lite class now checks to see if Cache_Lite class already exists before including it.
41 mikeb - Added Russian manual translation thanks to <kuzma@russofile.ru>
42 mikeb - Added gacl.conf config file for both admin interface and gacl.class.php. Thanks to Richard Plevin <rich@plevin.com>
43 mikeb - Fixed a couple notices with E_ALL enabled in the API. John Mortlock <johnm@hlaustralia.com.au>
44 mikeb - Added a SQL quoting to insert. Eder <lukas.eder@iomedia.ch>
45 mikeb - Added support for custom ACL sections to add_acl(), for instance if someone deletes the 'system' section. Vincent Woo <vwooa@sfu.ca>
46 mikeb - Upgraded ADODB to v4.65
47 mikeb - Upgraded Smarty to v2.6.9
48 mikeb - Release v3.3.5b1
50 mikeb - Release v3.3.4
52 mikeb - Added clear_database() API function that truncates all phpGACL tables. Thanks to Ross Lawley <ross.lawley@mediatelgroup.co.uk>
53 mikeb - Modified millennium falcon example.
54 dcech - Updated get_group_objects function with much more efficient SQL.
56 mikeb - modified query in get_group_objects() to speed it up. It could still be optimized further though.
58 mikeb - Applied patch to admin/edit_group.php enabling the deletion of all groups. John Mortlock <johnm@hlaustralia.com.au>
60 mikeb - Removed default table prefix from gacl.class.php.
61 mikeb - Corrected minor mistake in the manual with regards to incorrect argument ordering in acl_check()
62 mikeb - Modified API comments for search_acl() to include return value.
63 mikeb - Fixed admin link at the bottom of several pages in the Millennium Falcon examples.
65 mikeb - Added Millennium Falcon example written by Ross Lawley <ross.lawley@mediatelgroup.co.uk>
66 mikeb - Added 3-dimensional ACL Test page from Meinhard <meinhard.jahn@karsten-jahnke.de>
67 mikeb - Upgraded ADODB to v4.54
68 mikeb - Upgraded Smarty to v2.6.6
70 mikeb - Updated Cache Lite class to latest version, including improved Hashed_Cache_Lite class thanks to Dan.
71 mikeb - If caching is not enabled, improved the bypassing of the caching library/overhead thanks to Andrew Eddie <eddieajau@iprimus.com.au>
72 mikeb - Updated manual thanks to Andrew Eddie <eddieajau@iprimus.com.au>
73 mikeb - add_group API function now assigns the value to the insert ID if the value is not specified. thanks to Andrew Eddie <eddieajau@iprimus.com.au>
74 mikeb - Moved admin interface specific functions/variables from gacl_api.class.php to admin/gacl_admin_api.class.php. thanks to Andrew Eddie <eddieajau@iprimus.com.au>
76 mikeb - Added phpDoc style comments thanks to Gordon Luk <gordon.luk@dfafunds.com>
78 mikeb - Added get_ungrouped_objects() function, thanks to Gordon Luk <gordon.luk@dfafunds.com>
80 mikeb - Added a "isset()" call in Hashed_Cache_Lite
81 mikeb - Applied patch from Gordon Luk <gordon.luk@dfafunds.com> to allow the search_acl() function to proceed without a where clause.
83 mikeb - gacl.class.php line 532, missing quotes around $root_group. Thanks to Erwan le Gall <erwan.le-gall@education.gouv.fr>
85 mikeb - Released v3.3.3
87 mikeb - Quoted group value in acl_get_groups(). Thanks to Christer Lindh <clindh@homenet.se>
89 mikeb - Add comment to admin/gacl_admin.inc.php to tell people not to use "_" for table prefixes.
91 mikeb - Fixed acl_test.php ACL Check timings. Thanks to Gordon Luk <gordon.luk@dfafunds.com>
93 dcech - Fixed missing table prefix in edit_object function.
94 Thanks to Martin Salo <salo@laborint.com>.
95 dcech - Updated to adodb-xmlschema CVS for prefixing.
97 mikeb - Fixed bug in is_conflicting_acl() where it would detect an incorrect conflict when using certain AXO combinations. Thanks to a patch from Jeff McDonald <jeff@beefstudio.com>
99 mikeb - Fixed group_admin SQL query to be standard complaint so it works on PostgreSQL.
100 mikeb - Made aro_groups/axo_groups value column unique.
102 mikeb - Released v3.3.2
103 mikeb - upgraded to ADOdb v4.50
104 mikeb - upgraded to Smarty v2.6.3
105 mikeb - Fixed group_admin.php bug with hardcoded group_type column name.
107 dcech - cleaned up setup script a little
108 dcech - upgraded to adodb-xmlschema CVS to get fixes for prefix-related problems.
110 dcech - upgraded to ADOdb v4.23
112 mikeb - Removed admin/mysql_db_demo_data.sql as it was the old 3.2.x format and useless now.
113 mikeb - Fixed issue with links and group names with spaces in them. Thanks to Gordon Luk <gordon.luk@dfafunds.com>
114 dcech - fixed object count in group admin for groups without objects
116 mikeb - Fixed bug in API that stopped you from changing a group name to the same thing as the group value. Hakan Kuecuekyilmaz <hakan@lisas.de>
118 mikeb - Released v3.3.1
120 dcech - Fixed setup issues with new schema format, and moved to AXMLS prefixing.
122 mikeb - Fixed bug in acl_get_groups() where $root_group = '' causes a SQL error. Thanks to Hakan Kuecuekyilmaz <hakan@lisas.de>
123 mikeb - Fixed Unit Tests to work with group_value's. Thanks to the help from Hakan Kuecuekyilmaz <hakan@lisas.de>
125 mikeb - Updated comments for add_group() to explain the Root group limitation of our MPTT format.
127 mikeb - Added Perl ACL_Check module written by Gordon Luk <gluk@dfafunds.com>
128 mikeb - Upgraded to ADODB v4.22
129 mikeb - Upgraded to Smarty v2.6.2
130 mikeb - Re-enabled JS selected = true when selecting objects to assign to groups.
131 mikeb - Released v3.3.0-final
133 ==> mikeb - Read the CHANGELOG line with "==>" infront of it. Mar 03 2004.
136 mikeb - Fixed index name for value column in AXO group table. Falk <support@fajo.de>
137 mikeb - Updated schema diagrams. Falk <support@fajo.de>
139 mikeb - applied code documentation patch thanks to Andrew Eddie <eddieajau@iprimus.com.au>
141 dcech - added index.php to admin directory, fixed bug in format_groups. Thanks to Andrew Eddie <eddieajau@iprimus.com.au>
142 dcech - Fixed object_search javascript bug, cleaned up admin navigation html.
144 dcech - Fixed JavaScript bug in IE, minor cleanup of admin_functions.js
146 dcech - Fixed minor typo in gacl_api.class.php. Thanks to Andrew Eddie <eddieajau@iprimus.com.au>
148 dcech - Updated admin interface and gacl class for value patch.
149 acl_* functions now all accept group values rather than IDs.
150 dcech - Minor fixes in gacl_api for group_value patch.
152 ==> mikeb - *BEWARE* add_group(), edit_group() both require a group_value now! This breaks backwards compatibility.
155 mikeb - Upgraded ADODB to 4.20.
156 mikeb - Applied group value patch from Christer Lindh <clindh@homenet.se>.
157 Admin interface still needs updating. As well as the gacl.class.
159 dcech - minor fix to display AXO controls when editing ACLs
161 mikeb - Added DB schema diagram to docs/ directory. Thanks to Falk John <support@fajo.de>
163 dcech - Changed all JOIN queries to INNER JOIN for MySQL 3.23.x compatibility
165 dcech - removed final trailing semicolon from schema.xml
167 mikeb - Fixed get_object() to support ACLs.
169 mikeb - Fixed del_object_section() to properly delete ACLs if the section is deleted. Thanks to Falk John <support@fajo.de>
170 mikeb - Fixed del_object_section() when using ACL objects.
171 mikeb - Took ";" out of schema.xml, and changed version to b2.
172 mikeb - Added some missing transaction rollbacks to gacl_api. Thanks to Falk John <support@fajo.de>
174 dcech - Added titles to admin interface
175 mikeb - Removed the last of "is_string()" DB errro checks, replaced with "is_object($rs)"
176 mikeb - Oracle SQL syntax fixes for gacl.class.php and gacl_api.class.php. Thanks to Falk John <support@fajo.de>
177 dcech - SQL syntax fixes for admin system
179 dcech - New style for admin interface
181 mikeb - Removed old, out dated examples from gacl_api.class.php
183 dcech - cleanup of assign_group.php, template updates for assign_group and group_admin
185 dcech - more interface cleanups
187 dcech - complete overhaul of acl_admin.php
188 dcech - fix for LIMIT in sql, complete overhaul of object search
190 dcech - major interface overhaul
191 dcech - acl_list interface improvements, minor css modification
192 mikeb - Upgraded to ADODB 4.11, removed trailing whitespace from adodb-pager.inc.php
193 dcech - major overhaul of acl_list filtering
195 dcech - major update to acl_list
196 dcech - fix for stress_test to handle existing groups
197 dcech - fixed trailing whitespace in adodb-pager.inc.php
199 mikeb - Changed acl_list layout.
200 mikeb - Changed setup.php to point to about.php and modified about.php to only display the report section on first run.
201 mikeb - Unleashed v3.3.0b1 upon the world! Wahahahah!
203 mikeb - Minor updates to CREDITS file, README, and footer.tpl
204 mikeb - Upgraded ADODB to v4.10
205 mikeb - Upgraded Smarty to v2.6.1
206 dcech - del_object: fix for new GetCol behaviour in ADOdb 4.10
208 mikeb - modified TODO list slightly.
209 mikeb - added Navigation bar submitted by: <eddieajau@iprimus.com.au> on Oct 13/2003.
210 mikeb - Moved the "select all" checkboxes...
211 mikeb - modified include syntax in acl_admin_js.tpl slightly.
212 mikeb - add_object(), edit_object(), edit_object_section(), add_object_section(), fixed issue with hidden being set to a non-int value.
214 dcech - Added Select/Deselect All to Admin Interface
216 dcech - applied _group_ patch
218 mikeb - Fixed PostgreSQL LEFT JOIN issue with is_conflicting_acl(), Can't reference multiple tables, then a LEFT JOIN. ie:
219 select * from table1, table2 LEFT JOIN table3 LEFT JOIN table4.
221 select * from table1 LEFT JOIN table2 LEFT JOIN table3 LEFT JOIN table4.
222 mikeb - Fixed PosgresSQL LEFT JOIN issue with acl_check()
223 mikeb - Fixed PostgreSQL transaction issue, where generating sequences causes the transaction to abort.
224 Simply move the transaction start _after_ the GenID() call.
225 dcech - cleaned up get_object_section_section_id - fixed bug if invalid object type specified, and bug if no value specified.
227 mikeb - Added transactions to edit_object_section()
228 mikeb - Added more API test_suite functions.
229 mikeb - Fixed minor display issue with pager.tpl.
230 dcech - numerous fixes in gacl_api. edit_group, add_group_object, rebuild_tree & _rebuild_tree.
231 dcech - new functions in gacl_api. get_root_group_id & get_object_groups.
233 mikeb - Added more tests to the test suite. Fixed up a couple SQL syntax errors in del_group().
235 mikeb - Fixed minor bug in get_group_objects() to do with the SQL query, and table prefixes.
236 dcech - improved count_all function and documentation
237 dcech - updated Stress Test & added script to do random ACL checks
238 dcech - fixed bug where debug_db was called after RollBackTrans
240 mikeb - More MPTT fixes from Dan
241 mikeb - is_conflicting_acl() patch from Dan also.
243 mikeb - Applied MPTT (different group tree format) patch from Dan Cech <dcech@phpwerx.net>
244 mikeb - Minor cleanup of the above patch.
245 mikeb - FIxed a couple minor bugs with add_group_object() and del_object() relating to the MPTT patch.
247 - Fixed issue where ARO and AXO groups use the same sequence. Not really a bug, but shouldn't
248 be the case. Thanks to Dan Cech <dcech@phpwerx.net>
250 - Fixed bug in schema.xml where group_id was missing from a unique index.
252 - Group select boxes represent the tree structure much better. Purely cosmetic change. Thanks to Dan Cech <dcech@phpwerx.net>
255 - Fixed bug in acl_list.php where the filter wasn't being passed between pages. Thanks to Dan Cech <dcech@phpwerx.net>
256 - Greatly improved the speed of acl_list.php. Thanks to Dan Cech <dcech@phpwerx.net>
258 - Fix for major bug in AXOs, if you don't specify AXO values in acl_check(), it could
259 still match ACLs that have AXO groups assigned to them. Discovered by Dan Cech <dcech@phpwerx.net>.
263 - Fixed possible bug with re-using database connection objects.
264 - Fixed bug in assign_group.tpl where it was hard coded to reference AROs.
265 - Fixed major bug with table prefixes and del_object() function, as well as sequences. Thanks to Ian Eure <ieure@debian.org> for reporting this.
266 - Fixed minor bug in generating javascript arrays with values containing quotes. Bug found by: Martino Piccinato <m.piccinato@nexus.it>
268 - Released 3.2.0-final.
269 - Upgraded ADODB to 3.90.
271 - Fixed minor bug when assigning objects to groups. Thanks Jos Vanlanduyt <jos.vanlanduyt@higis.eu.org> for pointing this out.
273 - Added SOAP server and clients for PHP, Perl, and Python.
274 - Updated README regarding upgrading and PostgreSQL.
275 - Released phpGACL v3.2.0b2
277 - Added Help / About page.
278 - Fixed up the ACL Sections, to use values instead of IDs for consistency sake
279 - Upgraded to Smarty 2.5.0
280 - Released phpGACL v3.2.0b
282 - Merged table prefix patch from Ben Margolin (ben@prince.org), did some minor clean-ups/fixes.
283 - Upgraded to ADODB 3.72
285 - Decreased column lengths to varchar(240) so MySQL can index multiple columns. Thanks to Ben Margolin (ben@prince.org)
286 - Fixed bug in add_object(), it was selecting from a non-existent table. Thanks to Ben Margolin (ben@prince.org)
288 - Create a new setup.php from scratch using ADODB XML-Schema. This should greatly ease table creation on many different databases.
289 - Modified ADODB XML-Schema to support all types of indexes. Submitted patch to Richard Tango-Lowy <richtl@arscognita.com>
292 - add_object() now returns TRUE if the object is already in the database.
295 - Updated table schema for the acl table. Added the acl_section table, and the phpgacl table.
296 - Added ACL sections. The purpose of these is like all other sections, to simply classify objects.
297 For example, you may want to differentiate between automatically created ACLs (System ACLs) and
298 manually created ACLs (User ACLs). As some installations may have several thousand automatically created
299 ACLs, its nice to filter these out.
300 - add_group_object() now returns TRUE if the object is already assigned to the group.
303 - Fixed security bug that could allow someone to see your database password.
306 - Added acl_query_array() to aid in running an acl_check() over a large amount of AROs, returning section_value, values
307 of those that return true. Especially useful with get_group_objects();
310 - Added "ACLs" link to the group page, so you easily show all ACLs a specific group is assigned too.
311 - Added "ACLs" link to the group assign page, so you easily show all ACLs a specific ARO/AXO is assigned too.
312 - modified return array format for get_group_objects() and added functionality to return objects in child groups as well.
315 - Object searching now supports a newline delimited list of names/values.
318 - Fixed more warnings.
321 - More minor warning fixes.
322 - Moved the manual to the documentation directory.
323 - Case insensitive object searching when assigning to groups.
326 - Fixed many more PHP warnings all over.
328 - Upgraded Smarty to v2.5
329 - Upgraded ADODB to v3.5. Added line to set FETCH_MODE on a per connection basis.
332 - Fixed add_acl() for AXOs, as it was previously completely broken.
335 - Fixed ACL List filtering so it returns all ACL rows, not just the ones matching the LIKE query.
338 - Fixed a few PHP warnings gacl.class.php
339 - Removed an else condition from an if statement that didn't do anything anyways.
342 - Fixed small bug in API function get_object_id() where it referenced the $name variable,
343 but $name was never used. If the function was used properly, this shouldn't have affected anything.
344 Thanks to: Harald Fielker <fielker@informatik.fh-augsburg.de> for pointing this out.
347 - Fixed up the layers with AXO show/hide functionality. Usable, but still needs improvement.
350 - Attempted to add javascript show/hide to the AXO section of the acl_admin.
353 - Fixed invalid DB reference in acl_get_groups(); Thanks to Gianluca Faieta <gfaieta@iname.com> for the patch.
356 - Fixed bug in get_group_objects() that caused it to return the query record set, not the data itself. Thanks to Thomas <tstruebi@pentacon.ch> for submitting a patch.
357 - Fixed bug in del_group(), as it neglected to remove the object mapping. Thanks to Thomas <tstruebi@pentacon.ch> for pointing this out.
360 - Added 'force_cache_expire' option, so the cache is automaticalled expired when ACL/Group modifications take place.
361 This should allow the cache_expire_time to be greatly increased (86400?) and still maintain instance updates.
362 - Removed un-needed table joins in search_acl() resulting in a large performance increase.
365 - Added "limit" to ARO select query in group_assign.php
368 - Tweeked consolidate_edit_acl() to better consolidate ACLs in the expected manor.
369 - Fixed cache ID in acl_get_group_path() so it doesn't contain non-alphanumeric characters.
372 - Fixed bug caused by overzealous array_unique in add_acl()
373 - Switched acl_query() to return TRUE/FALSE for the 'allow' return value instead of 1/0
374 - API group functions didn't manipulate the path_to_root mapping when reparenting or deleting occured.
377 - Fixed bug in edit_group(), added more error checking.
378 - Added object searching to the assign group pages.
379 - Moved all templates to $smarty_template_dir/phpgacl/ to better integrate with existing smarty installations.
380 - Fixed recursion in format_groups() so it doesn't use globals anymore.
381 - Greatly improved performance in sort_groups() (50% improvement) and format_groups() (20%) functions.
384 - Added conflict detection to add_acl();
387 - Created search_acl() to search for ACLs mapped to specific objects. This should also work for detecting conflicting ACLs.
388 - Created shift_acl() that basically does the opposite of append_acl(). Remove just the specific objects from the ACL mapping.
391 - Created append_acl() function for simply appending ACO/ARO/ARO Groups/AXO/AXO Groups on to an already existing ACL.
394 - Added ACL searching.
395 - Added ACL debug page.
396 - Added sanity checks to add_acl()/edit_acl() to make sure the objects mapped to ACLs actually exist.
397 - Transactionalized most API functions.
400 - Fixed JS UnSelect button bug for AXO groups.
401 - Added Object searching to help the admin interface handle an unlimited number of objects.
402 - Added "max_select_box_items" config option to set the maximum number of items shown in select boxes.
405 - Upgraded ADODB to v3.00
406 - Added user definable ACL return values, along with the acl_return_value() function.
407 - Added ACL notes which serve no other purpose other than to help the administrator keep track of ACL's
408 - Added paging for large record sets.
411 - Moved to a completely OO structure.
412 - Config options can now be passed during object creation. $gacl = new gacl($options);
415 - Fixed bug that broke allow and enabled from being changed when editing ACLs.
418 - Merged ERASE feature in to API functions, del_object() and del_object_section() thanks to Martino.
419 - Changed the acl list page layout
420 - Changed the acl test page layout
421 - Added assigned object count to the group admin page.
422 - Fixed a JS bug that wouldn't allow you to "select" (>>) any objects at all, if one was already selected.
425 - format_groups() function wasn't recursing as efficiently as it could be. Fixed.
426 - Re-wrote API aro/aco/group specific functions to be generic to help support AXO's.
427 - Re-wrote aro/aco/group specific admin scripts to be generic to help support AXO's.
428 - Added AXO support to acl_admin.php.
429 - Updated gacl.inc.php to support AXO's.
432 - Changed the ordering of the main acl_query() SQL query. It wasn't properly preferring the deepest groups ACLs. - Thanks to Mauro
433 for spotting this one and helping me track it down.
434 - Fixed bug that prevented ACO/ARO's with the same 'value' in different sections from being assigned to an ACL. - Thanks to Martino
435 - Fixed bug that made it seem like assigning a single ARO to a group really added all AROs with the same value to that group. - Thanks to Martino
436 - Fixed bug causing virtual subtree'ing to only traverse 2 levels of the tree. - Thanks to Martino
437 - Used dirname(__FILE__) to remove the need for users to manually set the root path in config.inc.php.
440 - Switched away from ID's in favor of VALUES for most functions, including acl_check(). Broke all backwards compatibility.
441 - Modified DB Schema to reflect above.
442 - When ARO/ACO values are changed, the API will modify said values in all tables.
443 - Added a variable for phpGACL's current path.
446 - Added "hidden" flags to relavent API functions
447 - Added Oracle 8i schema to setup.php
448 - Changed group "level" table column name to "tree_level", as the old name "level" was a reserved word in some db's.
449 MySQL: ALTER TABLE `groups_path` CHANGE `level` `tree_level` INT(12) DEFAULT '0' NOT NULL
450 - Modified a few of the queries to be more portable, specifically for Oracle's sake.
451 - Added a FAQ entry regarding individualized item permissions.
454 - Added multi-layer ACO checking to ACL_QUERY()
455 - Removed multi-layer ACO checking in favor of "dual" acl checking. ie:
456 If you want to set ACL's on a contact list. Create ACO's for each Contact in the list.
457 and create more generic ACO's for things like "View - Contacts", "Edit - Contacts".
458 Then simply create an ACL with ACO's "View - Contacts" AND "Contact ID: 15"
459 Then if ( acl_check("View - Contacts", "John Doe") AND acl_check("Contact ID: 15", "John Doe"))
460 Very simple, and should be just as fast, or faster then adding more bloat to the database.
461 - Added "hidden" flag to ACO, ACO Sections, ARO, and ARO sections.