-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changes
2914 lines (1864 loc) · 91.8 KB
/
Changes
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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Revision history for Perl extension SPOPS.
NOTE: All items with a leading 'SP-###' are issues in the JIRA issue
tracking system. Learn more at http://jira.openinteract.org/
0.87 Tue Jun 1 20:34:44 EDT 2004
* SPOPS/Import.pm:
- SP-5: Added property 'extra_metadata' to hold user-defined
metadata for an import.
* SPOPS/Import/DBI/Data.pm:
- SP-5: When running 'assign_raw_data()' store the first element in the
raw data in the new 'extra_metadata' property after first removing
the data we need from it.
* SPOPS/Import/DBI/Delete.pm:
- SP-6: Add class for declaring records to delete through the
import interface.
* SPOPS/Import/DBI/GenericOperation.pm:
- SP-6: add parent class for doing update/delete through the import
interface.
* SPOPS/Import/DBI/Update.pm:
- SP-6: Add class for declaring records to update through the
import interface.
* SPOPS/SQLInterface.pm:
- SP-7: Modify db_update() to allow additional data passed in
'value' parameter to be passed to the statement 'execute()' call so
you can use placeholders in the WHERE clause of your update.
This is a completely backward-compatible modification as the
changes are additive and we don't change any parameter without
first making a copy.
* t/40_ldap.t, t/41_ldap_config.t
- Applied patches from Martin Kutter to work on a directory with
schema checking enabled.
0.86 Sat May 22 15:33:30 EDT 2004
Individual:
* SPOPS/DBI.pm
- SP-4: In _execute_multiple_record_query() allow for case-sensitive
table names. Thanks to Ray Zimmerman.
0.85 Tue May 11 00:19:22 EDT 2004
Overall:
* Small (but important!) fix for hierarchical security
Individual:
* SPOPS/Secure/Hierarchy.pm:
- If there is no hierarchy separator in the value don't go into an
infinite loop hoping it will be there someday...
0.84 Mon May 10 21:53:04 EDT 2004
Overall:
* Bunch of bugfixes
Individual:
* SPOPS.pm:
- SP-1: Check that the $log is defined before using it in
DESTROY. (Thanks to Ray Zimmerman)
- SP-2: Update AUTOLOADed '{prop}_clear' method to delete the
property rather than set it to undef. (Thanks to Lee Revell)
- SP-3: Add 'SPOPS::Tie::StrictField' to imports after weird
storable behavior (complained about not finding the necessary tie
methods because it doesn't call new() which was dynamically loading
the necessary class) (Thanks to Nick Sutterer)
- Add note about SPOPSx::Ginsu to SEE ALSO
* SPOPS/Secure.pm:
- (hack) since we call 'get_security()' explicitly as a class
method, pass along the possible object as parameter 'object' so
subclasses (like SPOPS::Secure::Hierarchy) can use it
* SPOPS/Secure/Hierarchy.pm:
- (hack) Allow hierarchy value of non ID field to be used by
overriding the ID as the hierarchy value in
_get_hierarchy_parameters() and also pull the object from the
parameters passed in (earlier SPOPS::Secure hack)
* SPOPS/Tie.pm:
- SP-2: Modify DELETE to actually delete the property out of the
object rather than just setting it to undef.
* SPOPS/Tie/StrictField.pm:
- SP-3: For efficiency we were storing the fields for each object
class as class data in SPOPS::Tie::StrictField; since the script
restarted this data was wiped out and the object thought none of
its fields were valid, so everything was undef. We now check to see
the data are there before doing any fetch/store operations on the
tied object.
0.83 Thu Mar 18 21:37:13 EST 2004
Overall:
* Fix the sequence usage in SPOPS::DBI::Pg and
SPOPS::DBI::Oracle. Fetch the sequence value beforehand instead of
inserting the sequence retrieval and getting the value after the
insert.
0.82 Mon Mar 15 23:03:29 EST 2004
Overall:
* Quick bugfix for SPOPS::DBI users with databases using sequences
(like Postgres).
Individual:
* SPOPS/DBI.pm:
- We want to go ahead and fetch the ID after the row has been
inserted...
0.81 Mon Mar 15 08:13:46 EST 2004
Overall:
* Use Log::Log4perl to do logging/debugging. All internal SPOPS
classes, and the code generated by them, has been modified to use
it. Previously existing debugging methods (_w and _wm) use
log4perl under the hood. A script (eg/modify_debug_to_l4p.pl) is
provided for you to convert your own code to log4perl calls.
* Modify slightly the default behavior for 'sql_quote()' as defined
in SPOPS::SQLInterface. Nobody should notice...
* A fistful of bugfixes and minor enhancements.
Individual:
* SPOPS.pm:
- Add a 'initialize_custom()' step to 'new()' to allow subclasses
to do customization in the constructor. Thanks Simon!
- Replace '_w()' and '_wm()' with calls to log4perl -- this is for
backwards compatibility only; you should run
eg/modify_debug_to_l4p.pl to get on the bandwagon
- Fix bug in AUTOLOAD that didn't create the accessor/mutator +
clearing method on a first invocation of
'{property}_clear' when you're not using strict field
checking. Thanks to Lee Revell ([email protected]) for reporting
the error and the failure case.
- Add new configuration property 'field_raw'; this can hold the
actual fields used for the object in their original case. So if
your database pulls 'person_ID' as a fieldname you can use both
'person_id' and 'person_ID' as a hash key *and* as a
accessor/mutator, even when using strict field checking. Thanks to
Simon for pointing this out.
* SPOPS/ClassFactory/DefaultBehavior.pm:
- Fix a 'return' where the error message was truncated due to
commas rather than period being used. Thanks to Simon for the
spot.
- On class generation: if 'field_raw' isn't defined in the class
configuration set it to the original (pre-munged) list of fields.
* SPOPS/ClassFactory/DBI.pm:
- Fix a 'return' where the error message was truncated due to
commas rather than period being used. Thanks to Simon for the
spot.
* SPOPS/DBI.pm:
- Provide better error message from 'id_clause()' when we don't
have any type information available. Thanks to Simon Ilyushchenko
([email protected]) for the report.
- For constructing group queries (fetch_group, fetch_iterator),
add the class's table to the 'from' array if it's not already
there. This allows you to specify join queries and 'assume' the
class table will be added.
- In save() only call pre_fetch_id() or post_fetch_id() if an ID
is NOT ALREADY DEFINED.
- Applied patch from Pawel Gajda to fix lazy loading problem.
* SPOPS/DBI/([:driver:]).pm:
- Get rid of all driver implementations of 'sql_quote()' since
it's defined in SPOPS::SQLinterface and they were all using the
same definition anyway.
* SPOPS/HashFile.pm:
- Don't dereference a hash, gets rid of warning many OI users saw
since they upgraded to 5.8...
* SPOPS/Loopback.pm:
- Add a simple (!) ability for 'fetch_group' to parse the 'where'
clause and use options from 'value' to substitute for a
placeholder.
- Fix extraneous warnings regarding 'pre_fetch_id' and
'post_fetch_id' when using strict field checking.
* SPOPS/Manual/Configuration.pm:
- Fix configuration typo (using 'publisher_link' instead of
'publisher_book' in links_to configuration). Thanks Simon!
* SPOPS/Secure.pm:
- Add warnings when our definitions of global_current_user and
global_current_groups are found.
* SPOPS/SQLInterface.pm:
- Add to default 'sql_quote()' a check to see if the $value to be
quoted is defined; if not use 'NULL'. Thanks to Simon for the
report. Also, document the 'sql_quote()' method and make the new
default to use the two-argument form of DBI->quote( $value, $type ).
* SPOPS/Tie/StrictField.pm:
- Get rid of carp calls on strict field violations, replacing them
with log4perl calls. (This means you cannot set a SIG{__WARN__}
handler anymore...)
* SPOPS/Tool/DateConvert.pm:
- When converting FROM an object TO a string (e.g., during a
save()), if the given item isn't a reference then just return it,
assuming it's a date in the right string format.
* SPOPS/Tool/UTFConvert.pm:
- Determine at runtime whether we're running in 5.6.0 or less or
5.6.1 or greater and use different encoding/decoding schemes as
appropriate. (Thanks to the Arvato folks for providing the
post-5.6.1 version...)
0.80 Sat Nov 29 13:17:17 EST 2003
Overall:
* Add auto-generated mutators and clearing mutators along with the
accessors.
* Customize the 'links_to' mechanism for DBI object relationships.
Individual:
* MANIFEST:
- Add eg/My/CommonResources.pm, forgotten from earlier
version. Thanks to Simon Ilyushchenko ([email protected]) for the
report.
* SPOPS.pm:
- AUTOLOAD-created accessor now also acts as a mutator. I thought
it was already doing this but Simon set me straight.
- Also generate a '{fieldname}_clear' to act as a clearing mutator
(set a field to undef).
- Allow SPOPS subclasses to define their own
accessor/mutator/clearing mutator methods by overriding
'_internal_create_field_methods()'. See docs for details.
* SPOPS/ClassFactory/DBI.pm:
- Allow 'links_to' declarations to customize the to/from ID fields
and alias in addition to the linking table. Thanks to Stathy
Touloumis ([email protected]) for the idea.
- In 'links_to' generation stage, try to require the linked class
before getting its configuration. This allows us to declare the
SPOPS class as a superclass of our customized class.
* SPOPS/ClassFactory/Default.pm:
- In 'has_a' generation stage, try to require the contained class
before getting its configuration. This allows us to declare the
SPOPS class as a superclass of our customized class.
* SPOPS/DBI.pm:
- In save() allow the user to pass in an empty arrayref for
'no_insert' and 'no_update' that will override whatever is defined
in the object configuration.
* SPOPS/Manual/Object.pod:
- Modify the accessor/mutator discussion to reflect changed code.
* SPOPS/Manual/Relationships.pod:
- Add new 'links_to' configuration options.
* SPOPS/Secure.pm:
- Fix typo in message generated from 'register_security_error()',
thanks to Simon for the report.
* t/00_base.t:
- Test auto-created mutators and clearing mutators.
* t/62_export_perl.t:
- Fix bug in tests exposed by modified hash key ordering in
5.8+. (Note: use 'is_deeply()'!)
0.79 Sun Sep 7 22:45:07 EDT 2003
Individual:
* eg/(lots):
- Examples were broken since we added global_current_user|group()
to SPOPS::Secure; thanks to Christian Hansen <[email protected]> for
pointing out the error.
* SPOPS.pm:
- Made call to global_cache() sync up with what docs say. Thanks
to Christian Hansen.
- Allow 'display.url_edit' key to be defined in class
configuration and be used in the output of 'object_description()'
* SPOPS/DBI.pm:
- When executing a post-insert fetch (for defaults, etc) ensure
that the list of fields to fetch doesn't include any empty/undef
fields.
* SPOPS/DBI/(Oracle|Sybase).pm:
- Changed global_db_handle() (deprecated) to
global_datasource_handle. Thanks to Christian Hansen.
* SPOPS/Import/DBI/TableTransform/Pg.pm:
- Don't use 'SERIAL' anymore and specify why in the POD.
* SPOPS/Key/DBI/HandleField.pm:
- Wrap the value retrieval in an eval {} so we don't bomb.
* SPOPS/Secure.pm:
- Fix error in warning text, thanks to Andrew Hurst
* SPOPS/SQLInterface.pm:
- Apply patch from Raj Chandran <[email protected]> that avoids
reading type information if the SQL is already provided.
* SPOPS/Tool/DateConvert.pm:
- Small doc fix and update
0.78 Wed Jun 11 01:05:57 EDT 2003
Overall:
* Fix a couple of annoying warnings
Individual:
* SPOPS.pm:
- Fix extraneous warnings. (Thanks Ray Z!)
* SPOPS/Tool/DateConvert.pm:
- Don't issue warnings when we aren't given a date to convert.
0.77 Tue Jun 10 10:17:08 EDT 2003
Overall:
* Bugfix for code generator and be able to convert to/from DateTime
objects
Individual:
* SPOPS/ClassFactory.pm:
- In require_config_classes(), ensure we don't try to 'require'
an empty class.
- In find_behavior(), fix typo that skipped arrayrefs returned
from 'behavior_factory' (ouch!)
* SPOPS/Tool/DateConvert.pm:
- Added implementation for DateTime
0.76 Sat May 10 15:29:09 EDT 2003
Overall:
* A number of small bugfixes and enhancements.
Individual:
* doc/Manual/Configuration.pod:
- Add note about 'name' being a property OR method, and about the
coderef option being phased out.
* SPOPS.pm:
- In object_description(), only pull information from
CONFIG->{display} if it's actually a hashref.
- In object_description(), the scalar in 'name' can be used to
specify a method on the object as well as a property of the
object; DEPRECATION NOTICE: the coderef option for 'name' will be
phased out eventually.
* SPOPS/ClassFactory/DBI.pm:
- The created foo_add() and foo_remove() methods when doing a
'links_to' relationship were supposed to take an object, or
arrayref of objects, to add/remove. They didn't. Now they
do. Thanks to Nick Sutterer <[email protected]> for the report.
* SPOPS/ClassFactory/DefaultBehavior.pm:
- Entries that should be parsed into a hash can now take scalars
instead of just arrayrefs.
- Ensure that certain configuration entries that require an
arrayref can take a scalar
* SPOPS/DBI.pm:
- After an INSERT, don't refetch the ID value. (How did this work
before?)
- In fetch_group(), honor the 'skip_security' setting; thanks to
Peter Dragon <[email protected]> for the tip.
* SPOPS/Import.pm:
- Documentation updates
* SPOPS/Import/Object.pm:
- Return the object inserted instead of the data structure on
success.
- assign_raw_data() should make a copy of the data passed in
before ripping it up.
* SPOPS/Import/DBI/Table.pm:
- Add 'return_only' as property, and if set don't execute the
transformed table SQL against a database.
* SPOPS/Import/DBI/TableTransform.pm:
- Create facade 'transform()' method that includes all
transformation methods.
- Add factory type aliases to deal with capitalization issues.
* SPOPS/Secure.pm:
- Add empty implementations for global_user_current() and
global_group_current()
* SPOPS/Secure/DBI.pm:
- Don't die if an ID to check is defined.
* SPOPS/Tool/DBI/DiscoverField.pm:
- Set 'field' config property to an empty arrayref even if we
can't fetch the fields.
0.75 Fri Feb 21 08:41:00 EST 2003
Individual:
* SPOPS/Exception/DBI.pm:
- Add SQL to error messages if it's available. (SF Bug #542521)
* SPOPS/Import/DBI/(Table|TableTransform).pm, SPOPS/Import/DBI/TableTransform/*.pm:
- Updated to include the 'datetime' datatype.
* SPOPS/Tie.pm:
- Updated to deal with problem regarding mixed-case column names
and lazy loading.
* t/05_exception.t:
- Modify DBI stringification test to match change in module.
* t/37_dbi_lazy_load.t:
- Add test for DBI lazy loading. Thanks to David Hugh-Jones
<[email protected]> for pointing out a problem with lazy loading
and mixed-case column names.
0.74 Sun Jan 5 18:38:12 EST 2003
Individual:
* SPOPS/DBI.pm:
- Reverse change from 0.73 on field_update(): it now returns true
if rows were updated, false if not.
* SPOPS/SQLInterface.pm:
- Added docs to db_discover_info(), including example
* SPOPS/DBI/TypeInfo.pm:
- Added 'as_hash()' method to represent the fields and types as a
nonblessed hash.
* t/30_dbi.t:
- Updated field_update tests to deal with true/false values
rather than the number of rows returned.
* t/35_dbi_type_info.t:
- Add tests to ensure new 'as_hash()' method works
0.73 Thu Jan 2 01:48:26 EST 2003
Overall:
* Bugfix in SPOPS::DBI->field_update
* New tool to maintain bidirectional object links
* Lots of small POD fixes throughout many files
* Removed some previously deprecated classes
Individual:
* SPOPS/Configure.pm, SPOPS/Configure/(DBI|Ruleset).pm:
- Removed classes that have been marked as deprecated since 0.50.
* SPOPS/DBI.pm:
- Fix field_update() to return the number of rows updated -- if
you call it from an object it will always return 1 if the update
succeeded. Thanks to Ray Zimmerman for catch.
- In save(), move the (saved) and (changed) flags *before* the
post_save_action(); if you don't, any updates you do to the
object in the post_save_action will be regarded as another INSERT
which will either fail (duplicate primary keys) or throw you into
an infinite loop (post_save_action keeps inserting new objects).
- In save(), ensure that the field/value parameters are cleared
out before we tell SQLInterface what we want to insert/update.
* SPOPS/Tool/DBI/MaintainLinkedList.pm:
- Add new tool to maintain previous/next links in a particular
object so you can always navigate. Links are created on an object
insert and reshuffled on an object remove. The tool also creates
methods 'next_in_list' and 'previous_in_list' so you don't have
to craft them by hand.
* t/30_dbi.t:
- Add more tests for field_update()
* t/36_dbi_linked_list.t:
- Create tests for SPOPS::Tool::DBI::MaintainLinkedList
0.72 Fri Dec 20 08:34:44 EST 2002
Overall:
* Change all references to use new SPOPS website, SF project, etc.
* Small bugfixes
Individual:
* SPOPS/DBI.pm:
- Remove reference to assign_dbi_type_info, since this is done in
SPOPS::SQLInterface and SPOPS::DBI::TypeInfo now.
* SPOPS/DBI/Sybase.pm:
- Change docs to use 'increment_field' rather than 'syb_identity'
- Add note about using with DBD::Sybase/FreeTDS/MS SQL Server
* SPOPS/DBI/TypeInfo.pm:
- Supress warnings when checking to see if we were passed a fake
or DBI type.
* SPOPS/Exception.pm:
- Handle a thrown exception object by detecting it as the first
argument and rethrowing it.
0.71 Thu Oct 10 08:01:48 EDT 2002
Overall:
* Create SPOPS::DBI::TypeInfo object to hold field type information
for a table, and replace all callers to deal with the modified
return. I don't anticipate this to be disruptive since this is
mostly an internal function.
* Modify Import/Export classes to use Class::Factory 1.00
Individual:
* Makefile.PL:
- Bump up requirement for Class::Factory to 1.00
* SPOPS/ClassFactory/DefaultBehavior.pm:
- Modify to use new SPOPS::DBI::TypeInfo class
* SPOPS/ClassFactory/DefaultBehavior.pm:
- Apply patch from Eric Veldhuyzen <[email protected]> to suppress
'Subroutine foo redefined...' messages when creating rulesets.
* SPOPS/DBI.pm:
- Modify to use new SPOPS::DBI::TypeInfo class
- Update 'field_update()' with a more stringent test on the
return value from db_update() so we return a true value when
appropriate.
* SPOPS/DBI/TypeInfo.pm:
- Add simple object to hold type information for a table.
* SPOPS/Import.pm, SPOPS/Import/DBI/TableTransform.pm, SPOPS/Export.pm:
- Remove old Class::Factory method/lexical variable, since it
keeps track of these now.
* SPOPS/SQLInterface.pm:
- Modify to use new SPOPS::DBI::TypeInfo class
* SPOPS/Tool/DBI/Datasource.pm:
- Don't die if 'username' not defined in connection information.
* t/35_dbi_type_info.t:
- Add tests for new SPOPS::DBI::TypeInfo object (skip if we're
using DBD::SQLite, since it's essentially typeless)
* t/dbi_config.pl, t/03_uuid.t, t/40_ldap.t, t/41.ldap.t:
- Add message for why we're skipping tests
0.70 Mon Sep 16 16:56:33 EDT 2002
Individual:
* Makefile.PL:
- Added Time::Piece as dependency.
* doc/Manual/Security.pm:
- Update with reference to implementation class(es) and other
small changes.
* eg/My/Security.pm:
- Update to use SPOPS::Secure::DBI implementation.
* SPOPS.pm:
- Add check to as_data_only() so we don't return keys beginning
with 'tmp' or '_'
* SPOPS/Loopback.pm:
- Ensure that fetch_group() always returns objects in the same
order (sorted by ID).
- Modify internals of how objects are stored.
- Add security checks like other SPOPS implementation classes.
* SPOPS/Secure.pm:
- If groups are found from global_group_current() but not a user
not found from global_user_current(), go ahead and use the groups
to check security. (Previous behavior was to use neither.)
- Fix bug in set_security() which, when setting security for
multiple scopes at once, always issued a false warning.
- In create_initial_security(), always create at least an entry
for WORLD. Default setting for this is NONE, so be sure and
specify it in your class.
* SPOPS/Secure/DBI.pm:
- Add implementation class for security objects. You should now
only need to add 'SPOPS::Secure::DBI' to the 'isa' of your
security object.
* SPOPS/Secure/Hierarchy.pm:
- Override create_initial_security() so the default security for
WORLD will not inadvetently be created.
* SPOPS/Secure/Loopback.pm:
- Add testing implementation class for security objects.
* SPOPS/Secure/Util.pm:
- Utility class with common functions for security object
implementations.
* t/80_security.t:
- Add tests for SPOPS security checking.
* t/81_security_hierarchical.t:
- Add tests for hierarchical SPOPS security checking.
* t/SecurityCommon.pm:
- Add base class for SPOPS testing objects to use if they need to
track users, groups, security class, etc.
0.69 Wed Sep 11 10:59:30 EDT 2002
Overall:
* Add new tool (SPOPS::Tool::DateConvert) to convert a date into a
date object on object fetch().
* Add tests for SPOPS::Export implementations and add features to
loopback tester.
* Other small bugfixes.
Individual:
* SPOPS.pm:
- Add USE_CACHE() and set_global_use_cache() methods, which
checks and sets caching for all SPOPS objects in a process. Add
docs about caching.
* SPOPS/ClassFactory/DefaultBehavior.pm:
- In conf_modify_config() - ensure that the 'field' property is
an arrayref before derefenecing.
* SPOPS/Loopback.pm:
- fetch(), fetch_group(), save() and remove() will now interact
with simple in-memory storage so we can be a little trickier with
testing
- Add peek() for testing purposes.
- fetch_group() allows simple querying of in-memory storage (only
of the type field = value)
- Add fetch_iterator() which just wraps the result of
fetch_group() in a SPOPS::Iterator::WrapList object
* SPOPS/Tool/DateConvert.pm:
- Add new tool for converting dates into object (Class::Date or
Time::Piece) on fetch and into date string in save.
* SPOPS/Tool/DBI/Datasource.pm:
- Check for valid info should only ensure that DSN and username
are defined. An empty password should be ok. (Thanks to Ray
Zimmerman for the bug report.)
* SPOPS/Utility.pm:
- Modify format for today() to be %Y-%m-%d (Thanks to Swen
Thuemmler ([email protected]) for pointing it out.)
* t/41_ldap_inline_config.t:
- Create simple test for inlining an LDAP configuration.
* t/52_rule_date_convert.t:
- Add tests for SPOPS::Tool::DateConvert
* t/[60_export_object.t,61_export_xml.t,62_export_perl.t,
63_export_sql.t,64_export_dbdata.t]:
- Add tests for various SPOPS::Export implementations
0.68 Wed Aug 28 12:36:31 EDT 2002
Individual:
* SPOPS/Utility.pm:
- Modify the determine_limit() to always explicitly return a 0
when appropriate.
* t/07_utility.t:
- Modify the list_process() tests to not depend on the order of
the items returned. (Test would work on 5.6.x a-ok, but not on
5.8.x -- thanks for report from the CPAN testers.)
0.67 Tue Aug 27 21:19:14 EDT 2002
Overall:
* Fix module versions to eliminate conflicts with CPAN --
everything has been upgraded in CVS to a version 3.0 and with a
proper VERSION so we can start from a known good version and have
no danger of retrograding. Thanks to merlyn
<[email protected]> for the friendly notice. (Again.)
Individual:
* t/07_utility.t:
- Add tests for functions in SPOPS::Utility (lesson learned!)
0.66 Mon Aug 26 08:24:45 EDT 2002
Overall:
* Quick bugfix release
Individual:
* SPOPS.pm:
- Move 'use SPOPS::Utility' to 'require SPOPS::Utility', after
the exporting stuff defined
* SPOPS/Utility.pm:
- Import the DEBUG and _w constants
* doc/Manual/Relationships.pod:
- Fixed POD error, thanks to Mike Castle <[email protected]>
for the report.
0.65 Wed Aug 21 17:12:34 EDT 2002
Overall:
- Build process will now run without intervention; DBI and LDAP
tests require environment variables being set or running the
process manually (perl Makefile.PL MANUAL=1). See 'README' for the
environment variables used.
- Fixed and added lots of documentation on relationships and
multifield primary keys, Thanks to Gert Thiel
([email protected]) for pointing out deficiencies and
inconsistencies.
- Added lots of tests
- Cleaned up some items from the base SPOPS class
Individual:
* doc/Manual/Error.pod:
- Deleted all content with pointer to
SPOPS::Manual::Exception. This doc will be removed in a near
future release.
* doc/Manual/Object.pod:
- Clarified what to use with multifield primary keys.
* doc/Manual/Relationships.pod:
- Added tons of documentation and examples. Some of it was pulled
from other locations, but most is new.
* Makefile.PL:
- Lots of changes so the build process will run without
intervention. You can skip the DBI/LDAP tests or specify the
relevant information in environment variables. (See 'README' for
the environment variables to use.) This should make acme happy :-)
* SPOPS.pm:
- Removed the timestamp methods. They never did anything, were
marked for removal, and the functionality can be added as a
pre_save rule.
- Added a set_global_debug() method so we can programmatically
set debugging.
- Added documentation for set_global_debug() as well as the _w()
and _wm() debugging methods.
- Remove Storable from ISA and instead create methods 'store',
'retrieve' and 'nstore' which just act as delegates for the
Storable methods.
- Rename fetch_determine_limit() to
SPOPS::Utility->determine_limit() and modify all uses in the
library.
- All objects returned from new() now have the 'changed' flag
explicitly set and the and the 'saved' flag explicitly cleared.
- Be able to turn on strict field checking for individual objects
(pass a 'strict_field => true' to new())
* SPOPS/ClassFactory/DBI.pm:
- Enable fetch() to use either an arrayref or a string with
multifield primary keys. Thanks to Gert Thiel
<[email protected]> for prompting the change.