Commit graph

5943 commits

Author SHA1 Message Date
Juan Basso
f2a4b1e959 Supporting %e in windows. Fixes #1510. 2011-02-06 15:51:28 -02:00
mark_story
e32f419d0a Fixing comments. 2011-02-06 00:01:52 -05:00
mark_story
3629925a40 Refactoring authentication objects so basic and digest authentication can work without cookies. This makes non browser clients able to use Basic and Digest auth.
Updating test cases.
2011-02-05 18:41:00 -05:00
mark_story
11d20f80d0 Fixing failing tests imported with the merge. 2011-02-05 15:24:53 -05:00
mark_story
e149c411fb Merge branch '1.3' into merger
Conflicts:
	cake/VERSION.txt
	cake/config/config.php
	cake/console/shells/tasks/template.php
	cake/dispatcher.php
	cake/libs/controller/component.php
	cake/libs/controller/components/email.php
	cake/libs/controller/scaffold.php
	cake/libs/model/datasources/dbo/dbo_mysqli.php
	cake/libs/view/helpers/cache.php
	cake/libs/view/pages/home.ctp
	cake/tests/cases/dispatcher.test.php
	cake/tests/cases/libs/model/datasources/dbo/dbo_postgres.test.php
	cake/tests/fixtures/datatype_fixture.php
2011-02-05 12:20:09 -05:00
mark_story
8d5e68d582 Fixing issue where habtm tables would not have the connection prefix removed when generating schema. Fixes #1180 2011-02-05 11:19:05 -05:00
mark_story
ca22624b2b Tiny tweak to remove a duplicated line. 2011-02-05 10:43:30 -05:00
mark_story
79bbd227e3 Cache::configured() and in_array() are faster than calling Cache::config() 6 times. 2011-02-05 10:30:28 -05:00
mark_story
cf50cbdd9d Fixing issue in FormHelper where CURRENT_TIMESTAMP or other invalid data could cause a notice error. Fixes #1508 2011-02-05 06:43:00 -05:00
mark_story
0a266fa1fc Fixing typo. 2011-02-05 05:54:38 -05:00
mark_story
8f66fe6ed4 Removing additional spaces in tags. 2011-02-05 01:48:52 -05:00
mark_story
8d7df1721c Removing duplicate import. 2011-02-05 01:29:35 -05:00
mark_story
304f12d0ed Removing a pointless import in CakeRequest.
Moving inclusion of ObjectCollection to bootstrap.  This avoids repetitive calls to import()
2011-02-05 01:28:41 -05:00
mark_story
3875d0ef54 Removing a method that is duplicated in AuthComponent. 2011-02-03 23:00:41 -05:00
mark_story
9854947d0f Fixing reversed args. 2011-02-03 22:46:31 -05:00
mark_story
5834225cc3 Making AuthComponent::password() static, as it might be needed in places where an instance of AuthComponent is not handy. 2011-02-03 22:46:31 -05:00
mark_story
a5d9a64e1a Removing loginError, its not used anymore. 2011-02-03 22:46:31 -05:00
mark_story
2f917674d1 Fixing docblock to reflect change from '*' to 'all'. Adding note about constant. 2011-02-03 22:46:31 -05:00
mark_story
82851895ef Shifting includes around. 2011-02-03 22:46:31 -05:00
mark_story
669672a1a0 Adding doc blocks. 2011-02-03 22:46:30 -05:00
mark_story
d5f5ae3271 Fixing typo where realm would be wrong if not specified. 2011-02-03 22:46:30 -05:00
mark_story
705b3288e1 Basics of DigestAuth are working. 2011-02-03 22:46:30 -05:00
mark_story
945e49ad09 Starting Digest auth, using Basic auth as a starting base. 2011-02-03 22:46:30 -05:00
mark_story
bcd8dcd0f7 Extracting common logic into the base class. 2011-02-03 22:46:30 -05:00
mark_story
4610a0bf3c Adding some more tests for basic auth challenge headers. 2011-02-03 22:46:30 -05:00
mark_story
e8bf6ed176 Basic tests for BasicAuthenticate are passing. 2011-02-03 22:46:30 -05:00
mark_story
ba02483ae8 Adding a response parameter to authenticate() both basic and digest auth need to set response headers. 2011-02-03 22:46:30 -05:00
mark_story
332b6cfc22 Adding basic authentication skeleton. 2011-02-03 22:46:29 -05:00
mark_story
041e0a65ac Extracting a base class. 2011-02-03 22:46:29 -05:00
mark_story
ee804c6f8c Removing properties from AuthComponent that have been moved to authentication and authorization objects.
Adding the '*' key to allow code to stay DRY, also adding a constant for ALL, so there aren't as many magic strings around.
Updating tests.
2011-02-03 22:46:29 -05:00
mark_story
41819975e8 Removing a dead property. 2011-02-03 22:46:29 -05:00
mark_story
b207ee8cbe Making AuthComponent::user static, so user data can be fetched from anywhere. 2011-02-03 22:46:29 -05:00
mark_story
35864c2a02 Removing AuthComponent::getModel(). Auth no longer directly interacts with models. 2011-02-03 22:46:29 -05:00
mark_story
66f5ae07ed Removing AuthComponent::validate() there are no tests and no documentation on this method. It also uses components that may or may not exist even in the old implementation. 2011-02-03 22:46:29 -05:00
mark_story
28ad51c92b Removing action() from AuthComponent, its in the authorization objects now.
Updating tests.
2011-02-03 22:46:29 -05:00
mark_story
dc03e4f26c Moving an import. 2011-02-03 22:46:29 -05:00
mark_story
fd8fb1225d Removing automatic password hashing from AuthComponent. Its a frustrating feature that often befuddles new users, and can be plain annoying sometimes.
Moving hashing into FormAuthenticate.
Updating tests.
2011-02-03 22:46:28 -05:00
mark_story
23db2f086e Adding more documentation. 2011-02-03 22:46:28 -05:00
mark_story
e155e6acba Adding doc block usage information. 2011-02-03 22:46:28 -05:00
mark_story
ed122c70f4 Removing custom request reversal code, and using Router::reverse()
Removing dead tests that are covered by Router tests.
Removing check for TestsController, it hasn't existed in forever.
2011-02-03 22:46:28 -05:00
mark_story
dc8c99308e Starting to remove magical login process.
Updating tests to actually test the methods they are named after.
2011-02-03 22:46:28 -05:00
mark_story
d8f2cf9395 Starting to remove magic around userModel, and deprecating/removing userModel from AuthComponent. 2011-02-03 22:46:28 -05:00
mark_story
b59d0e8bb1 Replacing Authcomponent::$flashElement with Authcomponent::$flash, which gives access to all the flash parameters. Also adding a wrapper method for more terse code and ability to extend functionality. 2011-02-03 22:46:28 -05:00
mark_story
ff889c2c8e Renaming method names, no need to include Objects, its implied. 2011-02-03 22:46:28 -05:00
mark_story
1696df7201 Removing the last of actionMap from AuthComponent. Its been moved into the authorization objects.
Updating and adding tests for crud_authorize.
2011-02-03 22:46:27 -05:00
mark_story
e11917ae94 Removing public properties that aren't used anymore. 2011-02-03 22:46:27 -05:00
mark_story
0c7f9149ca Refactoring authorization objects to also use settings, it makes them consistent with authenticate objects.
Making actionPath automatically pass into authentication objects.
Adding tests.
2011-02-03 22:46:27 -05:00
mark_story
7ea914938f Changing AuthComponent::login() so you can provide an array of user data to manually login a user. Leaving $user blank will attempt to identify the user using the request. 2011-02-03 22:46:27 -05:00
mark_story
f21970c533 Making AuthComponent::mapActions() delegate to the authorize objects. Adding tests. 2011-02-03 22:46:27 -05:00
mark_story
3f9c83c43d Authentication and Authorization objects are integrated with AuthComponent. Minimal App changes are needed as legacy settings are forwarded. 2011-02-03 22:46:27 -05:00
mark_story
ced832ba62 Fixing issues with FormAuthenticate and plugin models. 2011-02-03 22:46:27 -05:00
mark_story
6860f7cc03 Starting to integrate Authorization objects into AuthComponent.
Tests updated and duplicate tests skipped, they will eventually be removed when duplication is confirmed.
2011-02-03 22:46:27 -05:00
mark_story
2e9d9479a6 Moving another part of AuthComponent's authorize strategies into BaseAuthorize.
Implementing CrudAuthorize and adding tests for it.
2011-02-03 22:46:26 -05:00
mark_story
7207dccc7c Adding ActionsAuthorize. It implements using Acl as the authorization object. 2011-02-03 22:46:26 -05:00
mark_story
4058e7f48c Extracting a base class, as it will be needed.
Moving AuthComponent::action() into the authorize object base as that's where its used.
2011-02-03 22:46:26 -05:00
mark_story
67c9acbc94 Adding a doc block. 2011-02-03 22:46:26 -05:00
mark_story
16b3beec5e Starting ControllerAuthorize adding it and the test cases. 2011-02-03 22:46:26 -05:00
mark_story
693360bc9e Removing isAuthorized() as there is no need for it once AuthComponent is updated. 2011-02-03 22:46:26 -05:00
mark_story
1c827573ce Adding doc blocks for FormAuthenticate. 2011-02-03 22:46:26 -05:00
mark_story
68da3fab8f Starting to extract authentication objects out of AuthComponent. Started off with extracting FormAuthenticate as its what currently exists in AuthComponent. Test case added. 2011-02-03 22:46:25 -05:00
mark_story
63308fdbd8 Fixing issue where a false id would be appended to the route url. Test added. Fixes #1501 2011-02-02 21:52:41 -05:00
Phally
f3812342c2 Minor optimization for email linefeeds. 2011-01-31 00:15:56 +01:00
mark_story
6db8515e60 Fixing incorrectly nested sprintf + __ call. Refs #1305 2011-01-30 12:25:40 -05:00
mark_story
5b8499c8c7 Adding $name back in as it causes numerous notice errors in fixtures when it is missing. 2011-01-29 20:54:15 -05:00
ADmad
88d5db76fd Removed overriding of recursive to 0 in Model::_findNeighbors() if 'recusive' option is not specified in find options. Closes #860 2011-01-30 04:13:01 +05:30
Maggion Emmanuel
01801a7777 Reducing code related to CakeSchema. Fixes #1477 2011-01-29 17:26:08 -05:00
Juan Basso
bbf6aedd9c Fixed wrong viewVars store when have objects in view caching. Fixes #1486. 2011-01-28 00:31:18 -02:00
mark_story
5464ed8455 Fixing blackholes caused by using custom name attributes with inputs. Fixes #1489 2011-01-27 21:05:30 -05:00
mark_story
71d8e744f1 Fixing case-sensitivity of AS in fields. Tests added. Fixes #1474 2011-01-26 20:58:16 -05:00
mark_story
d192ed32f0 Adding a socket key to DboMysqli::$baseConfig. Fixes notice errors when socket is undefined. Fixes #1482 2011-01-26 20:54:14 -05:00
mark_story
32f0b20a33 Removing wonky and most likely incorrect manipulation of socket and port
setting mangling in DboMysqli.  Fixes #1478
2011-01-24 22:05:16 -05:00
Juan Basso
dc4357f636 Merge remote branch 'jrbasso/2.0-html' into 2.0 2011-01-23 21:25:02 -02:00
Juan Basso
d933d6bd73 Assigning the helper object in view class, avoiding to use __get magic for each call. 2011-01-23 20:51:56 -02:00
Juan Basso
be98491413 Ini/Php readers now read files with/without extension. 2011-01-23 20:27:46 -02:00
Juan Basso
5b8f680d43 Throwing exception instead notice in loadConfig. 2011-01-23 20:00:06 -02:00
Juan Basso
55c557d5a1 Support to read ini files without section in IniReader. 2011-01-23 19:28:57 -02:00
Juan Basso
175e008308 Reading configuration using reader classes. You can pass the key configFile in Html settings to load in constructor. 2011-01-23 19:27:50 -02:00
Juan Basso
1a90bf7292 Support to read ini files without section in IniReader. 2011-01-23 19:26:13 -02:00
Juan Basso
7df9782020 Moving loadConfig to Html helper. 2011-01-23 16:21:17 -02:00
Juan Basso
b1f4c6a0c9 Changed tags attributes to protected. 2011-01-23 12:38:36 -02:00
Juan Basso
10d3dd5d2b Moving the parseAttributes to Html helper. 2011-01-23 12:36:14 -02:00
Juan Basso
5bc0f0c2a1 Replacing sprintf using Html tags by useTag. 2011-01-23 12:26:14 -02:00
Juan Basso
8cd54776f1 Created the method useTag in html, avoiding sprintf with Html tags in others helpers. 2011-01-23 12:25:52 -02:00
Juan Basso
41e1aa7ece Support to html5 in docType. 2011-01-23 11:05:51 -02:00
Joe Beeson
e58e3f3132 Fix to resolve 'assign by reference' errors when using a '__get' magic method.
Fixes #1476

Signed-off-by: mark_story <mark@mark-story.com>
2011-01-21 15:52:03 -05:00
mark_story
ed7f8d1906 Fixing issue where DboPostgres used the wrong type for boolean columns with a default of false or true.
Added a test case.
Changing Model::create() so it doesn't wipe out default values === false.
Fixes #1460
2011-01-21 13:31:33 -05:00
mark_story
1c3e1df305 Fixing Router::reverse() not correctly working with Request objects that
contained query string parameters.
2011-01-20 21:28:50 -05:00
Juan Basso
e64e29964d Implemented the beforeRedirect callback in controller. 2011-01-20 21:27:40 -02:00
mark_story
9f583097f0 Updating version numbers for 1.3.7 2011-01-19 15:10:53 -05:00
Juan Basso
09fbaaaab4 Removing extra param in internacionalization. 2011-01-19 10:08:35 -02:00
Juan Basso
f73c4f38d5 Fixing the postLink url when the application is not in root path. 2011-01-18 23:40:30 -02:00
mark_story
23dce83836 Fixing test cases and code from merge with 1.3
Making MemcacheEngine::__Memcache protected, so mocking is possible.
2011-01-18 20:20:49 -05:00
mark_story
dca3fecfed Merge branch '1.3' into merger
Conflicts:
	cake/console/error.php
	cake/libs/cache/memcache.php
	cake/libs/cake_session.php
	cake/libs/controller/components/request_handler.php
	cake/libs/model/cake_schema.php
	cake/libs/router.php
	cake/libs/set.php
	cake/libs/view/helpers/form.php
	cake/libs/view/helpers/text.php
	cake/libs/view/view.php
	cake/tests/cases/libs/set.test.php
2011-01-18 20:04:30 -05:00
mark_story
b94edefb2c Removing the last vestiges of the enable parameter.
Fixing issue where isset() stupidly plods along when doing a string index of a string.
Updating DbAcl to use proper settings array.
Fixes #1467
2011-01-18 19:33:57 -05:00
Miah Gregory
6071788478 Updated documentation for Router::connect.
Fixed a few spelling issues as well.

Signed-off-by: mark_story <mark@mark-story.com>
2011-01-18 17:54:19 -05:00
mark_story
932533c5c8 Fixing incorrect content type headers from being set, when an action contains a requestAction to an action with a different Content-Type. Also populating RequestHandler->params as it was always empty.
Fixes #1445
2011-01-18 08:28:16 -05:00
mark_story
cfce0e45d3 Fixing issue where empty session id's would cause duplicate key errors. Empty session id sessions are no longer saved. Fixes #1450 2011-01-18 08:14:47 -05:00
Jeremy Harris
be563e1220 Merge remote branch 'upstream/2.0' into 2.0 2011-01-17 20:07:22 -08:00
mark_story
b0d4951184 Fixing TextHelper::autoLinkEmails() not linking email addresses that contain '.
Test added.
Fixes #1457
2011-01-17 11:11:30 -05:00
mark_story
ca299a097c Fixing issue where get forms created with model = false would create inputs with name = ''. Tests added. Fixes #1455 2011-01-15 14:39:24 -05:00
mark_story
b8780586ec Fixing issue where FormHelper::checkbox() would ignore an explicit checked = false, and use the post data instead. Test case added. Fixes #1437 2011-01-14 21:48:23 -05:00
Jeremy Harris
1f0c57c4ee Fixed aliasing so it works with plugins in the 'className' key 2011-01-14 17:44:33 -08:00
mark_story
17b5351aa3 Moving parent constructor call until after $helpers has been modified. Fixes #1443 2011-01-14 17:17:53 -05:00
Jeremy Harris
39e06b0425 Updated documentation 2011-01-13 18:06:32 -08:00
Jeremy Harris
2b596859cb Reversed alias and actual class to be more consistent with how Model aliases load and to make migration easier 2011-01-13 18:04:06 -08:00
mark_story
5f612b7833 Making memcache cache adapter, set the expiry time of any value greater than 30 days to never expire. This works around the 30 day limitation of the PHP extension. Test case added. Fixes #1451 2011-01-13 20:27:10 -05:00
mark_story
0f4c90588d Fixing issue where elements did not get .ctp as a fallback extension unlike view and layout files.
Adding a protected method to get extensions, as it would be in 3 places now.
Added tests.
Fixes #1438
2011-01-12 20:43:41 -05:00
Juan Basso
d15ed329d9 Changed the trigger_error by exceptions in ConnectionManager. 2011-01-12 23:08:34 -02:00
mark_story
f893e3b63b Applying patch from 'ryandesign' fixing incorrect datetime formats. Fixes #1441 2011-01-11 20:16:42 -05:00
mark_story
166c776099 Making Set::filter() only operate on arrays.
Also making Set::filter() work properly in a recursive fashion.  This matches behavior with other functions in Set.  Fixes #1431
2011-01-09 22:34:36 -05:00
mark_story
4f94b715ec Revert "Fixing Set::filter() not predictably filtering in a recursive
fashion.  While a minor change in behavior, more predictable and uniform
behavior is worth it." Refs #1431

This reverts commit 6e2ffafe54.
2011-01-09 22:29:10 -05:00
Jeremy Harris
24d90c17d6 Allowed behaviors to be aliased by setting the 'alias' key 2011-01-09 18:28:12 -08:00
Jeremy Harris
9749dc808d Allowed helpers to be aliased by setting the 'alias' key 2011-01-09 18:27:53 -08:00
Jeremy Harris
1f1d920ff7 Allowed components to be aliased by setting the 'alias' key 2011-01-09 18:27:44 -08:00
Jeremy Harris
65d1c0329c Fixed typo 2011-01-09 17:16:44 -08:00
mark_story
f87ae5469b Fixing a few failing tests in helper tests. 2011-01-09 00:09:01 -05:00
mark_story
443f6d1c5b Merge branch '1.3' into merger
Conflicts:
	cake/console/shells/tasks/test.php
	cake/libs/cake_log.php
	cake/libs/controller/components/email.php
	cake/libs/set.php
	cake/libs/view/helpers/cache.php
	cake/libs/view/helpers/paginator.php
	cake/libs/view/helpers/time.php
	cake/libs/view/view.php
	cake/tests/cases/console/libs/tasks/fixture.test.php
	cake/tests/cases/console/shells/tasks/test.test.php
	cake/tests/cases/libs/controller/components/email.test.php
	cake/tests/cases/libs/model/db_acl.test.php
	cake/tests/cases/libs/set.test.php
2011-01-08 23:49:19 -05:00
mark_story
8754d11aed Adding EmailComponent::_getSocket() so EmailComponent + smtp is easier to test.
Fixing issue where hosts with portnames could cause smtp emails to fail.
Added tests, fixed an existing test to not depend on a local mailserver.
Fixes #1433
2011-01-06 23:10:01 -05:00
mark_story
f45f2e4096 Making niceShort() compare the original dateString and userOffset. This fixes issues where timezone differences would cause the incorrect short form to be displayed. Fixes #1331 2011-01-05 22:53:56 -05:00
mark_story
6e2ffafe54 Fixing Set::filter() not predictably filtering in a recursive fashion. While a minor change in behavior, more predictable and uniform behavior is worth it.
Fixes #1431
2011-01-05 22:48:09 -05:00
Jeremy Harris
37b98ff1a6 Merge remote branch 'upstream/2.0' into 2.0 2011-01-05 19:07:25 -08:00
Jeremy Harris
a8ac288d1c Added $format option to TimeHelper::nice(). Fixes #433, #638, #291, #801 2011-01-05 19:06:52 -08:00
José Lorenzo Rodríguez
2b9c6b8609 optimizing sqlite driver to look for the "From" keyword in reverse order on the sql string 2011-01-04 17:44:33 -04:30
José Lorenzo Rodríguez
4948280ba8 Fixing typo in sqlite driver 2011-01-04 17:25:23 -04:30
José Lorenzo Rodríguez
665e560310 Checking for null values before converting to boolean 2011-01-04 17:00:10 -04:30
mark_story
de6eda964e Removing silent errors in PDO dbo's when a connection exception is created.
Adding the host param for mysql.
Adding a test for mysql missing the host param.
Fixes #1427
2011-01-03 23:34:22 -05:00
Jeremy Harris
4d2fdcd15e Added support for using plugin syntax in App::objects(). Fixes #1366 2011-01-03 19:27:21 -08:00
Jeremy Harris
733f4f395e Reordered PaginatorHelper::sort() key and title to be more consistent.
Fixes #1000
2011-01-02 18:44:41 -05:00
José Lorenzo Rodríguez
5a75d1d91a Adding boolean casts for sqlite 2011-01-02 01:26:57 -04:30
José Lorenzo Rodríguez
fe18e31b79 Changes to make sqlite recognize boolean columns declared as "boolean", so they can be casted to native php type 2011-01-01 22:11:28 -04:30
José Lorenzo Rodríguez
1d530db39b Changing a bit how postgres driver treats booleans so it correcty casts them 2011-01-01 22:09:22 -04:30
José Lorenzo Rodríguez
da152e0e82 Changes to make mysql cast boolean vaules to the native php boolean datatype 2011-01-01 22:07:27 -04:30
mark_story
04c602e3d0 Fixing issues with isThisWeek() when the year ends midweek. 2010-12-31 16:37:16 -05:00
mark_story
a9a1994a7e Merge branch '2.0-pagination' into 2.0 2010-12-31 12:37:53 -05:00
mark_story
7dd1eea285 Updating documentation for paginator helper, and component. 2010-12-28 22:26:33 -05:00
mark_story
ab552c22a1 Adding a usage sample to Paginator->numbers() 2010-12-28 00:09:47 -05:00
mark_story
eb38b8b60c Fixing more boundary issues with first() and last(). When you entered a first/last range a wonky page link would be generated. Tests added. 2010-12-27 23:40:10 -05:00
mark_story
85baa180d9 Adding usage and expanding doc blocks for PaginatorHelper. 2010-12-27 23:30:10 -05:00
mark_story
5092013304 Making EmailComponent register and un-register its view object, when rendering email templates. This allows helpers to use the view to do additional processing. Fixes #442 2010-12-27 15:12:27 -05:00
mark_story
e003bd6ea9 Adding rel attributes for first and last links. These attribute values are part of the html5 spec, and fit with the intention of #370 2010-12-27 10:48:38 -05:00
mark_story
c5c638e8f5 Fixing option documentation. 2010-12-27 10:40:50 -05:00
mark_story
fd88d57513 Fixing option documentation. 2010-12-27 10:40:21 -05:00
mark_story
af608f68ef Updating test cases for the addition of rel attributes to links generated by PaginatorHelper. Also removed rel attributes for disabled elements, as they are probably not link tags. Fixes #370 2010-12-27 10:38:30 -05:00
Dieter Plaetinck
65394604a7 Give PaginatorHelper's next/prev links the correct 'rel' attribute
It's a good idea to give links such as next/prev the 'rel' attribute.
See the following pages for more information:
http://www.w3.org/TR/html4/struct/links.html#edef-A
http://www.w3.org/TR/html4/types.html#type-links

Signed-off-by: mark_story <mark@mark-story.com>
2010-12-27 10:25:19 -05:00
mark_story
b82ad15c5e Fixing issue in console when baking a new project, from outside the
installation directory you would get an error because database.php could
not be found.  Fixes #1406
2010-12-27 00:19:59 -05:00
mark_story
3d966be1e8 Fixing fatal error caused by Debugger not being loaded when viewing the default home page. 2010-12-27 00:07:47 -05:00
mark_story
5ce66d3031 Changing how PaginatorComponent::paginate()'s $whitelist param works. It now serves as the whitelist for fields ordering can be done on. It previously allowed you to whitelist things you passed into paginate(), which was kind of useless.
Updated tests.
Fixes #430
2010-12-26 21:30:43 -05:00
mark_story
6f1eca79ac Fixing calltime pass by reference deprecation warnings. 2010-12-26 20:11:17 -05:00
mark_story
f62a067d7c Making it possible for behaviors to define paginate and paginateCount. Updated test to ensure the component calls the correct methods.
Fixes #1373
2010-12-26 17:40:34 -05:00
mark_story
fd3b4b2cd5 Adding Model::hasMethod() and tests. 2010-12-26 17:35:22 -05:00