Will Rossiter
1732a17114
Merged new-orm into datagrid
2011-09-26 16:47:54 +13:00
Ingo Schommer
ce8e72cf0e
MINOR Removing executable flag from all files (thanks miiihi)
2011-09-18 22:04:02 +02:00
Ingo Schommer
7d01b4042f
BUGFIX Increasing length of Member.Email database column to comply with recommended RFC lengths for email addresses
2011-08-22 08:56:42 +02:00
Will Rossiter
ef6432d647
BUGFIX: Member::autoLogin() not setting alc_enc properly. PATCH via simon_w. FIXES : #6646 .
2011-05-30 10:04:55 +12:00
Sam Minnee
878b348a0f
Merge branch 'master' into new-orm
...
Conflicts:
docs/en/reference/built-in-page-controls.md
model/SQLQuery.php
2011-05-26 17:08:10 +12:00
ajshort
1f6f7f0862
API CHANGE: Deprecated CompositeField->FieldSet() in favour of CompositeField->FieldList().
...
MINOR: Replaced usage of FieldSet with FieldList.
MINOR: Renamed FieldSetTest to FieldListTest.
2011-05-11 17:51:54 +10:00
ajshort
3f132a105b
API CHANGE: Replaced DataObjectSet instances with ArrayList.
2011-05-05 20:40:24 +10:00
ajshort
04e5dae22e
MINOR: Updated places that expect a DataObjectSet to accept an SS_List instance.
2011-05-02 17:14:05 +10:00
Ingo Schommer
afbb4cc045
MINOR Fixed Member_ProfileForm styling, inlining into _style.css. Misc style fixes
2011-05-01 20:23:07 +12:00
Ingo Schommer
87163d5bb6
MINOR Removed unnecessary headers from Member->getCMSFields()
2011-05-01 20:23:07 +12:00
Ingo Schommer
f8b38e9adb
MINOR Moving _layout.scss include from screen.css into its own file, in order to selectively block layout options like body {overflow: none;} while retaining all other cms styles (useful in a dialog context)
2011-05-01 20:23:07 +12:00
Sam Minnee
7fbb919ce8
API CHANGE: Introduce DataModel object, as a representation of the project's entire data model, and tie it to $this->model an all DataObjects, Controllers, and RequestHandlers for easy non-static access.
...
API CHANGE: Add DataList::newObject(), which creates a new object on that DataList.
API CHANGE: RequestHandler::handleRequest() now needs to handle a $model argument, if you override it.
2011-05-01 17:33:02 +12:00
ajshort
81c0caaddb
API CHANGE: Renamed DataList::filter() and DataQuery::filter() to ::where().
2011-05-01 15:26:30 +12:00
Sam Minnee
397d19f23b
BUGFIX: Fixed bug in relation to new ORM(DataObject::get() doesn't return a null anymore)
2011-05-01 15:26:28 +12:00
Sam Minnee
0de6dbc848
BUGFIX: Fixed Permission::add_to_hidden_permissions() and Permission::remove_from_hidden_permissions()
2011-05-01 15:26:28 +12:00
Sam Minnee
4a061fd071
ENHANCEMENT: Refactored MemberTableList field to make better use of DataList and ManyManyList. Refactored ComplexTableField and TableListField to, stripping out as much model logic as possible.
2011-05-01 15:26:28 +12:00
Sam Minnee
33fa7825f9
BUGFIX: Updated Member <-> Group relations to work with new ManyManyList. API CHANGE: Deprecated the special methods in Member_GroupSet.
2011-05-01 15:25:45 +12:00
Sam Minnee
de1494e3a8
ENHANCEMENT: Implemented DataList as the successor of DataObjectSet. DataList doesn't execute the query until it's actually needed, allowing for a more flexible ORM.
...
API CHANGE: augmentSQL is now passed a DataQuery object from which query parameters can be extracted.
API CHANGE: DataObjectDecorators that manipulate the query can now define augmentDataQueryCreation().
API CHANGE: The container class argument for DataObject::get() is deprecated.
API CHANGE: DataObject::buildSQL() and DataObject::extendedSQL() are deprecated; just use DataObject::get() now.
API CHANGE: DataObject::instance_get() and DataObject::instance_get_one() are deprecated, and can no longer be overloaded.
API CHANGE: DataObject::buildDataObjectSet() is deprecated.
API CHANGE: Cant't call manual manipulation methods on DataList such as insertFirst()
2011-05-01 15:25:45 +12:00
Ingo Schommer
79e0634537
Merge branch 'cms-ui-preparation'
2011-04-28 22:48:02 +12:00
ajshort
3a1c2df4e7
API CHANGE: Renamed DataObjectDecorator to DataExtension.
...
API CHANGE: Renamed LeftAndMainDecorator to LeftAndMainExtension.
MINOR: Replaced all references to decorators with extension.
2011-04-26 11:01:38 +10:00
Ingo Schommer
43491c2641
MINOR Reducing number of asset downloads by combining files in LeftAndMain->init() and including full jquery.ui.css instead of multiple @import statements
2011-04-25 21:36:51 +12:00
Ingo Schommer
d5efacbf56
BUGFIX Less fragile 'newness' check on Group->Code in Group->onBeforeWrite() ( fixes #6595 )
2011-04-14 21:38:07 +12:00
Julian Seidenberg
e3f15dba9e
BUGFIX: %40 instead of @ when using forgot password fix ( fixes #6314 , thanks Fragarach 87)
2011-03-30 18:16:16 +13:00
Ingo Schommer
e1b249d0d8
BUGFIX Allowing Security controller methods to work without Page or Page_Controller classes (now moved to 'cms' module)
2011-03-29 18:07:57 +13:00
Paul Meyrick
dc36725869
MINOR Using BlankPage template in SecurityTest, BasicAuthTest to remove ContentController dependency
...
MINOR Checking for SiteTree class existence in Security, Translatable
MINOR Checking for ContentController existence in FulltextSearchable
MINOR Removed unnecessary ContentController tests from ObjectTest
MINOR Replaced CMS specific examples in PermissionCheckboxSetFieldTest, DataObjectTest
MINOR Changed SecurityTest to make assertions against Security/login rather than relying on redirection from admin/cms
2011-03-29 18:07:55 +13:00
Ingo Schommer
da909a0214
BUGFIX Fixed usage of htmlentities() and html_entity_decode() to be UTF8 compatible by default
2011-03-21 18:13:01 +13:00
Sam Minnee
5755c27c30
ENHANCEMENT Improved performance of DataObject::get_by_id() by setting order to "1" in the contained get_one() call
2011-03-21 18:09:12 +13:00
Ingo Schommer
2b7c633e6e
MINOR Rewrite of PermissionCheckboxSetField.js from Behaviour.js to jQuery.entwine
2011-03-16 14:18:30 +13:00
Ingo Schommer
c6f3a08b7b
BUGFIX Set title automatically for empty groups in Group->populateDefaults()
2011-03-16 13:31:50 +13:00
Ingo Schommer
498e5758bf
BUGFIX Avoid privilege escalation from EDIT_PERMISSIONS to ADMIN through TreeMultiselectField (in Member->getCMSFields()) by checking for admin groups in Member->onChangeGroups()
2011-03-09 15:49:41 +13:00
Julian Seidenberg
52070a0c3a
ENHANCEMENT: including all of jquery-ui instead of specifying individual pieces of it. This is a larger download size, but should be quicker overall as it is just a single download instead of lots of small files.
2011-02-24 17:07:24 +13:00
Julian Seidenberg
a836456cd9
BUGFIX: updated links to new jquery ui file paths
2011-02-24 12:07:34 +13:00
Sam Minnee
d045970d83
Merge remote branch 'origin/master'
2011-02-22 10:57:59 +13:00
Sam Minnee
27246ce982
MINOR: Fixed 2.4 mergeback
2011-02-22 10:53:58 +13:00
Ingo Schommer
662c5259e5
BUGFIX Fixed Group->collateAncestorIDs() handling of orphans ( fixes #6413 )
2011-02-22 00:19:23 +13:00
Sam Minnee
1e0c4ae8d1
Merge branch '2.4'
...
Conflicts:
cache/Cache.php
cli/CliController.php
core/Convert.php
core/Core.php
core/ManifestBuilder.php
core/Object.php
core/SSViewer.php
core/control/ContentController.php
core/control/ContentNegotiator.php
core/control/FormResponse.php
core/control/RequestHandler.php
core/control/SilverStripeNavigatorItem.php
core/i18n.php
core/i18nTextCollector.php
core/model/DataObjectSet.php
core/model/Hierarchy.php
core/model/Image.php
core/model/MySQLDatabase.php
core/model/SiteConfig.php
core/model/SiteTree.php
core/model/Translatable.php
core/model/VirtualPage.php
dev/Debug.php
dev/SapphireTest.php
dev/TestRunner.php
dev/YamlFixture.php
dev/install/MySQLDatabaseConfigurationHelper.php
docs/en/installation/from-source.md
docs/en/topics/themes.md
docs/en/tutorials/4-site-search.md
email/Mailer.php
filesystem/File.php
filesystem/Folder.php
forms/ComplexTableField.php
forms/CurrencyField.php
forms/DateField.php
forms/FieldSet.php
forms/FileField.php
forms/FileIFrameField.php
forms/HtmlEditorConfig.php
forms/HtmlEditorField.php
forms/SelectionGroup.php
forms/SimpleImageField.php
forms/TabSet.php
forms/TableField.php
forms/TableListField.php
forms/TreeDropdownField.php
forms/TreeMultiselectField.php
integration/Geoip.php
javascript/SelectionGroup.js
javascript/TreeSelectorField.js
javascript/UpdateURL.js
javascript/core/jquery.ondemand.js
javascript/tiny_mce_improvements.js
javascript/tree/tree.js
lang/en_US.php
search/ContentControllerSearchExtension.php
security/Group.php
security/Member.php
security/PermissionCheckboxSetField.php
security/PermissionRole.php
security/Security.php
static-main.php
templates/RelationComplexTableField.ss
templates/TableListField.ss
tests/ConvertTest.php
tests/DataObjectSetTest.php
tests/DataObjectTest.php
tests/DataObjectTest.yml
tests/RequestHandlingTest.php
tests/SSViewerTest.php
tests/SiteTreePermissionsTest.php
tests/SiteTreeTest.php
tests/TransactionTest.php
tests/api/RestfulServiceTest.php
tests/control/DirectorTest.php
tests/control/ModelAsControllerTest.php
tests/fieldtypes/WidgetAreaEditorTest.php
tests/forms/CurrencyFieldTest.php
tests/forms/FormTest.php
tests/model/DatabaseTest.php
tests/model/ImageTest.php
tests/search/ContentControllerSearchExtensionTest.php
tests/security/MemberAuthenticatorTest.php
thirdparty/.gitignore
thirdparty/behaviour/behaviour.js
thirdparty/firebug-lite/firebug.js
thirdparty/firebug-lite/firebugx.js
thirdparty/jquery-form/jquery.form.js
thirdparty/jquery-livequery/jquery.livequery.js
thirdparty/jquery-livequery/test/jquery.js
thirdparty/jquery-livequery/test/test.html
thirdparty/jquery-livequery/test/test2.html
thirdparty/jquery-metadata/META.json
thirdparty/jquery-metadata/README
thirdparty/jquery-metadata/jquery.metadata.js
thirdparty/jquery-metadata/test/index.html
thirdparty/jquery-metadata/test/jquery.js
thirdparty/jquery-metadata/test/test.js
thirdparty/jquery-metadata/test/testrunner.js
thirdparty/jquery-metadata/test/testsuite.css
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
thirdparty/jquery-ui-themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_222222_256x240.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_2e83ff_256x240.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_454545_256x240.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_888888_256x240.png
thirdparty/jquery-ui-themes/smoothness/images/ui-icons_cd0a0a_256x240.png
thirdparty/jquery-ui/i18n/jquery-ui-i18n.js
thirdparty/jquery-ui/i18n/ui.datepicker-ar.js
thirdparty/jquery-ui/i18n/ui.datepicker-bg.js
thirdparty/jquery-ui/i18n/ui.datepicker-ca.js
thirdparty/jquery-ui/i18n/ui.datepicker-cs.js
thirdparty/jquery-ui/i18n/ui.datepicker-da.js
thirdparty/jquery-ui/i18n/ui.datepicker-de.js
thirdparty/jquery-ui/i18n/ui.datepicker-el.js
thirdparty/jquery-ui/i18n/ui.datepicker-eo.js
thirdparty/jquery-ui/i18n/ui.datepicker-es.js
thirdparty/jquery-ui/i18n/ui.datepicker-fa.js
thirdparty/jquery-ui/i18n/ui.datepicker-fi.js
thirdparty/jquery-ui/i18n/ui.datepicker-fr.js
thirdparty/jquery-ui/i18n/ui.datepicker-he.js
thirdparty/jquery-ui/i18n/ui.datepicker-hr.js
thirdparty/jquery-ui/i18n/ui.datepicker-hu.js
thirdparty/jquery-ui/i18n/ui.datepicker-hy.js
thirdparty/jquery-ui/i18n/ui.datepicker-id.js
thirdparty/jquery-ui/i18n/ui.datepicker-is.js
thirdparty/jquery-ui/i18n/ui.datepicker-it.js
thirdparty/jquery-ui/i18n/ui.datepicker-ja.js
thirdparty/jquery-ui/i18n/ui.datepicker-ko.js
thirdparty/jquery-ui/i18n/ui.datepicker-lt.js
thirdparty/jquery-ui/i18n/ui.datepicker-lv.js
thirdparty/jquery-ui/i18n/ui.datepicker-ms.js
thirdparty/jquery-ui/i18n/ui.datepicker-nl.js
thirdparty/jquery-ui/i18n/ui.datepicker-no.js
thirdparty/jquery-ui/i18n/ui.datepicker-pl.js
thirdparty/jquery-ui/i18n/ui.datepicker-pt-BR.js
thirdparty/jquery-ui/i18n/ui.datepicker-ro.js
thirdparty/jquery-ui/i18n/ui.datepicker-ru.js
thirdparty/jquery-ui/i18n/ui.datepicker-sk.js
thirdparty/jquery-ui/i18n/ui.datepicker-sl.js
thirdparty/jquery-ui/i18n/ui.datepicker-sq.js
thirdparty/jquery-ui/i18n/ui.datepicker-sr-SR.js
thirdparty/jquery-ui/i18n/ui.datepicker-sr.js
thirdparty/jquery-ui/i18n/ui.datepicker-sv.js
thirdparty/jquery-ui/i18n/ui.datepicker-th.js
thirdparty/jquery-ui/i18n/ui.datepicker-tr.js
thirdparty/jquery-ui/i18n/ui.datepicker-uk.js
thirdparty/jquery-ui/i18n/ui.datepicker-zh-CN.js
thirdparty/jquery-ui/i18n/ui.datepicker-zh-TW.js
thirdparty/jquery/jquery.js
thirdparty/jsmin/.piston.yml
thirdparty/jsmin/jsmin.php
thirdparty/prototype/prototype.js
thirdparty/scriptaculous/dragdrop.js
thirdparty/simplepie/.piston.yml
thirdparty/spyc/.piston.yml
thirdparty/spyc/README
thirdparty/spyc/php4/spyc.php4
thirdparty/spyc/php4/test.php4
thirdparty/spyc/spyc.php
thirdparty/spyc/spyc.yaml
thirdparty/tinymce-advcode/dialog.html
thirdparty/tinymce-advcode/editor_plugin_src.js
thirdparty/tinymce-advcode/js/dialog.js
thirdparty/tinymce/langs/en.js
thirdparty/tinymce/plugins/advhr/langs/en_dlg.js
thirdparty/tinymce/plugins/advhr/rule.htm
thirdparty/tinymce/plugins/advimage/image.htm
thirdparty/tinymce/plugins/advimage/langs/en_dlg.js
thirdparty/tinymce/plugins/advlink/langs/en_dlg.js
thirdparty/tinymce/plugins/advlink/link.htm
thirdparty/tinymce/plugins/emotions/emotions.htm
thirdparty/tinymce/plugins/emotions/langs/en_dlg.js
thirdparty/tinymce/plugins/example/dialog.htm
thirdparty/tinymce/plugins/fullpage/fullpage.htm
thirdparty/tinymce/plugins/fullpage/langs/en_dlg.js
thirdparty/tinymce/plugins/fullscreen/fullscreen.htm
thirdparty/tinymce/plugins/inlinepopups/template.htm
thirdparty/tinymce/plugins/media/langs/en_dlg.js
thirdparty/tinymce/plugins/media/media.htm
thirdparty/tinymce/plugins/paste/js/pasteword.js
thirdparty/tinymce/plugins/paste/langs/en_dlg.js
thirdparty/tinymce/plugins/paste/pastetext.htm
thirdparty/tinymce/plugins/paste/pasteword.htm
thirdparty/tinymce/plugins/searchreplace/langs/en_dlg.js
thirdparty/tinymce/plugins/searchreplace/searchreplace.htm
thirdparty/tinymce/plugins/spellchecker/editor_plugin.js
thirdparty/tinymce/plugins/spellchecker/editor_plugin_src.js
thirdparty/tinymce/plugins/style/langs/en_dlg.js
thirdparty/tinymce/plugins/style/props.htm
thirdparty/tinymce/plugins/table/cell.htm
thirdparty/tinymce/plugins/table/langs/en_dlg.js
thirdparty/tinymce/plugins/table/merge_cells.htm
thirdparty/tinymce/plugins/table/row.htm
thirdparty/tinymce/plugins/table/table.htm
thirdparty/tinymce/plugins/template/langs/en_dlg.js
thirdparty/tinymce/plugins/template/template.htm
thirdparty/tinymce/plugins/xhtmlxtras/abbr.htm
thirdparty/tinymce/plugins/xhtmlxtras/acronym.htm
thirdparty/tinymce/plugins/xhtmlxtras/attributes.htm
thirdparty/tinymce/plugins/xhtmlxtras/cite.htm
thirdparty/tinymce/plugins/xhtmlxtras/del.htm
thirdparty/tinymce/plugins/xhtmlxtras/ins.htm
thirdparty/tinymce/plugins/xhtmlxtras/langs/en_dlg.js
thirdparty/tinymce/themes/advanced/about.htm
thirdparty/tinymce/themes/advanced/anchor.htm
thirdparty/tinymce/themes/advanced/charmap.htm
thirdparty/tinymce/themes/advanced/color_picker.htm
thirdparty/tinymce/themes/advanced/image.htm
thirdparty/tinymce/themes/advanced/langs/en.js
thirdparty/tinymce/themes/advanced/langs/en_dlg.js
thirdparty/tinymce/themes/advanced/link.htm
thirdparty/tinymce/themes/advanced/source_editor.htm
thirdparty/tinymce/themes/simple/langs/en.js
thirdparty/tinymce/tiny_mce.js
thirdparty/tinymce/tiny_mce_src.js
widgets/Widget.php
2011-02-14 18:47:53 +13:00
Sam Minnee
8d05811734
Merge remote branch 'cbarberis/master'
2011-02-14 16:34:02 +13:00
Carlos Barberis
184e8bd852
ENHANCEMENT: Added allowed actions to core classes
2011-02-14 11:14:51 +13:00
Ingo Schommer
60ca784aae
API CHANGE Removed Director::history(), history was no longer recorded. Removed Director::__construct(), as Director is a static utility class without instance state ( fixes #6385 )
2011-02-12 16:39:35 +13:00
Sean Harvey
c3f915c4d5
BUGFIX #6287 open_basedir restriction breaks RandomGenerator when trying to read dev/urandom
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@115314 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:06 +13:00
Ingo Schommer
397bbe7bb5
BUGFIX Avoid potential referer leaking in Security->changepassword() form by storing Member->AutoLoginHash in session instead of 'h' GET parameter (from r114758)
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114760 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:05 +13:00
Ingo Schommer
25da2d1c25
MINOR Reverting Member "AutoLoginHash", "RememberLoginToken" and "Salt" to their original VARCHAR length to avoid problems with invalidated hashes due to shorter field length (from r114748)
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114749 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:05 +13:00
Ingo Schommer
7280a64d6b
MINOR Reduced VARCHAR length from 1024 to 40 bytes, which fits the sha1 hashes created by RandomGenerator. 1024 bytes caused problems with index lengths on MySQL (from r114743)
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114744 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:05 +13:00
Ingo Schommer
6255cdf20a
BUGFIX Limiting usage of mcrypt_create_iv() in RandomGenerator->generateEntropy() to *nix platforms to avoid fatal errors (specically in IIS) (from r114510)
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114512 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:04 +13:00
Ingo Schommer
310f8f6a03
BUGFIX Using RandomGenerator class in Member->logIn(), Member->autoLogin() and Member->generateAutologinHash() for better randomization of tokens. Increased VARCHAR length of 'RememberLoginToken' and 'AutoLoginHash' fields to 1024 characters to support longer token strings. (from r114504)
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114507 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:04 +13:00
Ingo Schommer
ae1d8e2e18
BUGFIX Using RandomGenerator class in PasswordEncryptor->salt() (from r114503)
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114506 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:04 +13:00
Ingo Schommer
696de5d437
BUGFIX Using RandomGenerator class in SecurityToken->generate() for more random tokens
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114500 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:03 +13:00
Ingo Schommer
f8c970ec0c
ENHANCEMENT Added RandomGenerator for more secure CRSF tokens etc. (from r114497)
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114499 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:03 +13:00
Ingo Schommer
30e3f08efb
MINOR Checking for class_exists() before SapphireTest::is_running_tests() to avoid including the whole testing framework, and triggering PHPUnit to run a performance-intensive directory traversal for coverage file blacklists (from r114332)
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114334 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:03 +13:00
Sean Harvey
28f1c20c5d
MINOR Reverted r108515
...
git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@114079 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 14:20:02 +13:00