Commit Graph
525 Commits
Author SHA1 Message Date
Bharat Mediratta 00957f79ba Throw Kohana_Exception instead of Exception on access denied, since that may bubble all the way up 2010-01-20 22:46:46 -08:00
Bharat Mediratta 210e02f000 Throw Rest exceptions, not regular exceptions. 2010-01-20 21:13:58 -08:00
Bharat Mediratta b5cf24456f Forbidden is a 403, not a 503. 2010-01-20 00:51:34 -08:00
Bharat Mediratta e02675b730 Change "filename" to "name" in the edit album form. I'd rather have
consistency between field names than deal with underlying issues with
Forge bitching about the "name" property.
2010-01-19 19:31:01 -08:00
Bharat Mediratta 512910962d Change "dirname" to "name" in the edit album form. I'd rather have
consistency between field names than deal with underlying issues with
Forge bitching about the "name" property.
2010-01-19 19:24:46 -08:00
Bharat Mediratta c3ed64fc6c Use property_exists() on our stdClass instead of array_key_exists() 2010-01-19 01:46:45 -08:00
Bharat Mediratta c590fed132 Change rest::url() to take a module name and a resource. The module
does the rest.  This function is symmetrical to rest::resolve.
2010-01-19 01:33:57 -08:00
Bharat Mediratta 069a23e811 Make scope default to direct.
Add slug to the post params.
Fix minor output bug.
2010-01-19 01:16:59 -08:00
Bharat Mediratta a587426cfd Don't try to set the album cover for the grandparent if we don't have edit permissions for it. 2010-01-19 01:12:09 -08:00
Bharat Mediratta cb7c263b47 Return arrays instead of calling rest::reply. 2010-01-19 00:36:40 -08:00
Bharat Mediratta ebb909625c Merge branch 'master' into bharat_dev 2010-01-18 12:54:26 -08:00
Bharat Mediratta 284788d964 Switch from stdClass to arrays which works around issues caused in
http://dev.kohanaphp.com/issues/2459 -- I don't exactly know why, but
the solutions are equivalent so I'm not going to dig too far.
2010-01-18 12:08:39 -08:00
Bharat Mediratta 41a392611c Change DENY and ALLOW to "0" and "1" to match the fact that ORM no
longer typecasts values as of http://dev.kohanaphp.com/issues/2459
2010-01-18 12:08:05 -08:00
Bharat Mediratta 0dc184e99f Overload url::current() and url::merge() to make the current url XSS
safe.  Add tests to make sure that it doesn't relapse with future
Kohana changes.  Fixes ticket #983.

Ref: http://gallery.menalto.com/node/93738
2010-01-18 11:10:37 -08:00
Bharat Mediratta f20fa2cfed Change IdentityProvider::create_user() to take $email as well, since that's a required
parameter for the Gallery driver.
2010-01-17 20:37:25 -08:00
Bharat Mediratta fafa7f277f Remove a @todo. 2010-01-17 16:55:48 -08:00
Bharat Mediratta cfb27dde02 Adjust installers to work with model based validation. 2010-01-17 13:28:24 -08:00
Bharat Mediratta 8ce11ac970 Convert Movies_Controller::update() over to model based validation. 2010-01-16 12:07:36 -08:00
Bharat Mediratta efdb73cb98 Make movie creation use model based validation. Move movie related
logic from movie::create() into Item_Model
2010-01-16 12:00:50 -08:00
Bharat Mediratta b5a6a6a5d5 Oops, log::failure() doesn't exist. Use log::error(). 2010-01-16 11:44:21 -08:00
Bharat Mediratta 5a8449f16d Convert Photos_Controller::update() to use model based validation. 2010-01-16 11:12:27 -08:00
Bharat Mediratta bf085a1a17 Convert photo uploading over to the new model based validation
approach.

- Rearrange Simple_Uploader_Controller::add_photo() to validate
  the form early in the process, and switch to using model based
  validation.

- Move thumbnail generation into gallery_event::item_created() so
  that it's decoupled from the model.

- Delete photo::create() and move all of its logic into
  Item_Model::save().

- Add Item_Model::$data_file to track the data file associated
  with new movies and photos.

- Do some cleanup on the validation callbacks -- it turns out the
  2nd argument is the field name not the value.
2010-01-16 00:51:31 -08:00
Bharat Mediratta 916da15cbb Merge branch 'master' of git@github.com:gallery/gallery3 into bharat_dev 2010-01-15 13:36:16 -08:00
Bharat Mediratta 50e3cc5837 Move model business logic out of album::create() and into
Item_Model::save().  This makes creating albums similar to editing
them and makes it difficult to create an album poorly.  I expect to be
able to remove a lot of code from the photo and movie helper because
it's duplicated here.

In order to do this, I refactored ORM_MPTT::add_to_parent() into
ORM_MPTT::save() so we now add it to the parent when we do save.  This
allows us to call save() only once which saves a database call per
add.

The Albums_Controller logic is roughly the same as before.

Haven't updated the tests yet, they're going to fail miserably since
many of them depend on album::create() which is now gone.
2010-01-15 12:15:20 -08:00
Bharat Mediratta 94f58e8b65 Move setting Item_Model::rand_key into Item_Model::save() since it's
business logic.
2010-01-15 10:48:39 -08:00
Bharat Mediratta b3e328c9ff Begin the process of converting to model based validation. Right
now only Albums_Controller::update() supports the pattern.  All
form and controller based validation happening when editing an
album has been moved over.

Model based validation means that our REST controllers share the
same validation as web controllers.  We'll have consistency
enforced at the model level, which is a Good Thing.

The basic pattern is now:
1) Rules are in the model

2) ORM::validate() (which is called by ORM::save() but you can
   call it directly, too) checks the model for all the rules and
   throws an ORM_Validation_Exception if there are failures

3) Actions are no longer taken when you call Item_Model::__set().
   Instead, they're all queued up and executed when you call
   Item_Model::save().

Notes:
- item::validate_xxx() functions are now in Item_Model::
- We still call $form->validate() because the form can have
 rules (and forms triggered by events will likely continue to
 have rules.
2010-01-14 21:04:09 -08:00
Tim Almdal 284e14d50e Remove the automatically marking the resizes dirty line as this could cause alot of pain to some installations 2010-01-11 10:48:27 -08:00
Tim Almdal 3ab6c4915a Fixes ticket #671.
In the graphics_rules table height and width set the maximum height and width
values and should be equal.  Initially, the height on the resize target rule was
less than the height, which artificially constrained images in portrait mode.

**Note"" this fix requires an upgrade to version 22.  All the resizes will be flagged
dirty.
2010-01-11 10:42:39 -08:00
Bharat Mediratta 8fa9ba636b Merge branch 'master' of git@github.com:gallery/gallery3 into bharat_dev 2010-01-10 10:19:46 -08:00
Tim Almdal a11bf29507 Fix for ticket #972 and more. In Kohana 2.4, ORM::delete_all ignores any where
clauses and deletes all the entries in the table unless an array of id's are
passed as the parameter.  This fix used the Database_builder to specify any where
conditions. Thanks psvo for find the first one. :-)
2010-01-09 23:57:16 -08:00
Bharat Mediratta 9864ab4b27 Move the random image functionality into the gallery REST helper since
choosing a random image is essentially a function on an item collection.
Also implemented a bunch of other query filters for item collections.

Created item::random_query() as a way of generating a reasonable
starting point for random queries.
2010-01-08 14:56:08 -08:00
Bharat Mediratta fb65a0a585 Remove debug code. 2010-01-08 14:20:15 -08:00
Bharat Mediratta 895ac72e70 Add item::random() to return a random Item_Model. 2010-01-08 11:49:18 -08:00
Bharat Mediratta 14f6e5f6d3 Allow the "name" param in get() so that you can restrict the query to children with a given name. 2010-01-08 11:12:02 -08:00
Bharat Mediratta c711bf1b1f Merge branch 'master' of git@github.com:gallery/gallery3 into bharat_dev 2010-01-07 10:41:19 -08:00
Bharat Mediratta 31454d37b3 Improve REST tag support.
- Add support for retrieving a list of members from a collection
- Implement put(), post() and delete() for tags.
- Use tag_rest::delete() as a way to remove members from the tag collection
2010-01-05 13:41:06 -08:00
Bharat Mediratta 3fffa18e65 Further progress on refining the REST server side code.
1) Deal in fully qualified URL resources through the rest
   interface.  All rest methods are now passed the complete url in
   request->url.

2) Create rest::resolve() which lets individual resource definition
   code convert a full url into the appropriate matching resource.
   Implement gallery_rest::resolve() and tag_rest::resolve()

3) Reimplement tag_rest's get() and post() methods.  They're much
   simpler now.

4) Implement the tags_rest helper which supports working with the
   entire tags collection.
2010-01-04 21:48:21 -08:00
Bharat Mediratta 6b8a52d328 Fix the logout link to send you back to the current url. The old
approach depended on having an $item, which is not the case on all
pages (eg: tag pages).  Also, check the CSRF in the logout controller,
else you can use the logout link as a blind forwarder.
2010-01-04 21:37:51 -08:00
Bharat Mediratta 0e3327bca7 Simplify the REST API code. Here's what I did:
1) Simplify gallery_rest to return flat models, no children and do no
   validation for now.
2) Flatten the REST replies and use HTTP codes to indicate
   success/failure instead of additional status messages.
3) Use the message and error code support in the base Exception class,
   instead of brewing our own in Rest_Exception.
4) Get rid of rest::success() and rest::fail() -- we only need
   rest::reply() since all failures are covered by throwing an
   exception.
5) Get rid of /rest/access_key and just use /rest for authentication.
6) Inline and simplify rest::normalize_request since we only use it once
7) Change rest::set_active_user to succeed or throw an exception
8) Extract Rest_Exception::sendHeaders into rest::send_headers()

Here's what's currently broken:
1) Data validation.  There currently is none
2) Logging.  That's gone too
3) image block and tag code is broken
4) Tests are broken
5) No movie support
2010-01-03 20:30:35 -08:00
Tim Almdal 5b9801092b Remove the Rest_Exception::trigger method. 2010-01-02 16:55:06 -08:00
Tim Almdal ee1a032e4d Merge branch 'master' into talmdal_dev 2009-12-31 18:32:24 -08:00
Bharat Mediratta 20bd09ff00 A more thorough fix for #745 and #940. Stop using the referer to
guess how to send the user back.  Instead, proxy the originating item
id through the edit forms so that we can tell exactly what page we
were on when we began editing.  If we were viewing the item, then
redirect to its new url (in case it changed) to fix ticket #745.  But
if we were viewing some other item, then just stay on the current page
to fix #940.

The page_type approach didn't work because you'd have the same
"collection" page_type when doing a context menu edit for an album.
2009-12-31 17:21:19 -08:00
Tim Almdal 1a12a5e3c8 Create a Rest_Exception class and use it to convey status to the client instead of calling rest::forbidden and other rest helper error messages. 2009-12-31 11:51:51 -08:00
Tim Almdal 4b44600bf9 Change the gallery_rest::_validate() method to use the form rules in Item_Model. Change the Duplicate errors to sentence case. And generally clean up the flow in _validate(). 2009-12-31 09:01:49 -08:00
Tim Almdal 11792a12bb 1) Remove the rest::not_found method and replace it with "throw new Kohana_404_Exception
2) Don't use the input path to lookup the item via relative_path_cache.  Instead use url::get_item_from_uri method.
2009-12-30 17:08:01 -08:00
Tim Almdal d6ddbd1a31 Rollback the refactoring of the update into a helper method. Also remove the refactoring for check for commits 2009-12-30 16:12:32 -08:00
Tim Almdal 2e98825c25 Merge branch 'master' into talmdal_dev 2009-12-30 07:57:23 -08:00
Tim Almdal 41969cc9e4 Another holdover from the K2.4 conversion. In R2.4 the url::current(true) was returning an empty string. This fixes ticket #955. 2009-12-29 15:48:21 -08:00
Tim Almdal bccb6fc021 Clean up validation the check for duplicate names or slugs, finish converting the rest API to Kohana 2.4 2009-12-27 08:32:12 -08:00
Tim Almdal 07e83718a0 Forgot to commit local changes to item helper for K2.4 2009-12-26 11:26:44 -08:00