Commit Graph
510 Commits
Author SHA1 Message Date
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
Tim Almdal 3060a6f662 Merge branch 'master' into talmdal_dev
Conflicts:
	modules/gallery/controllers/albums.php
	modules/gallery/controllers/movies.php
	modules/gallery/controllers/photos.php
2009-12-26 11:24:50 -08:00
Bharat Mediratta 73aeed8902 indentation fix. 2009-12-24 20:08:04 -08:00
Bharat Mediratta 24ef52eccb whitespace fix 2009-12-24 18:06:26 -08:00
Tim Almdal d0dd6650be When normalizing the rest request don't assume that the additional arguments are acutall a path. Leave it up to the handler to determine. 2009-12-23 13:13:03 -08:00
Tim Almdal d622d1aa4f Updated the unit tests to match the current API
Corrected a problem identified with the unit tests... failed if the path was empty on PUT.
2009-12-23 09:32:32 -08:00
Bharat Mediratta ffca63235a Fix where tuple sent to descendant_counts() -- it needs to be wrapped in an array 2009-12-22 21:18:31 -08:00
Bharat Mediratta 0650109d4b Add merge_or_where() to MY_Datatabase_Builder and use that instead of
or_where() for compatibility and convenience.  Caught by failing unit
tests.
2009-12-22 13:50:52 -08:00
Bharat Mediratta 7118f84aa9 ORM::factory() in K24 does not allow you to specify an alternate key
for lookup.  So instead of doing:
  ORM::factory("foo", array("some_key" => "some_value"))

you have to do:
  ORM::factory("foo"->where("some_key", "=" "some_value")->find()
2009-12-22 13:32:02 -08:00
Tim Almdal cbe5a89a9f Update the api so it allows images to be uploaded. 2009-12-22 12:32:27 -08:00
Tim Almdal fd7990735c Added validation to the edit functionality, since we can't trust any input 2009-12-21 11:25:11 -08:00
Tim Almdal c804279647 Add the parent path to the resource 2009-12-18 12:58:23 -08:00
Tim Almdal eb55a3c977 Add the name field to remote interface. 2009-12-18 12:21:10 -08:00
Bharat Mediratta 0736cf203b In Kohana 2.4, ORM no longer does the find_all() call for us when we
retrieve related ORMs.  If we tack a find_all() on the end, it breaks
the User_Definition interface so create User_Model::groups() and
Groups_Model::users() as glue.
2009-12-17 21:32:53 -08:00
Bharat Mediratta 9d19e272d6 Convert some database queries. 2009-12-17 21:16:51 -08:00
Bharat Mediratta 9b75b85e71 Update all database queries such that we can run "php index.php
package" and generate the same SQL as before.
2009-12-17 21:05:58 -08:00