Make /api/account/update_profile_background_image.format work even

when there isn't an existing Design for the user. Plus a few other
fixups.
This commit is contained in:
Zach Copley 2009-11-09 23:56:02 -08:00
parent 312c745884
commit c8bd6d9f7a
5 changed files with 75 additions and 16 deletions

View File

@ -67,7 +67,7 @@ class ApiAccountRateLimitStatusAction extends ApiBareAuthAction
if (!in_array($this->format, array('xml', 'json'))) { if (!in_array($this->format, array('xml', 'json'))) {
$this->clientError( $this->clientError(
_('API method not found!'), _('API method not found.'),
404, 404,
$this->format $this->format
); );

View File

@ -92,6 +92,15 @@ class ApiAccountUpdateProfileAction extends ApiAuthAction
return; return;
} }
if (!in_array($this->format, array('xml', 'json'))) {
$this->clientError(
_('API method not found.'),
404,
$this->format
);
return;
}
if (empty($this->user)) { if (empty($this->user)) {
$this->clientError(_('No such user.'), 404, $this->format); $this->clientError(_('No such user.'), 404, $this->format);
return; return;
@ -135,7 +144,7 @@ class ApiAccountUpdateProfileAction extends ApiAuthAction
if (!$result) { if (!$result) {
common_log_db_error($profile, 'UPDATE', __FILE__); common_log_db_error($profile, 'UPDATE', __FILE__);
$this->serverError(_('Couldn\'t save profile.')); $this->serverError(_('Could not save profile.'));
return; return;
} }

View File

@ -89,6 +89,15 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
return; return;
} }
if (!in_array($this->format, array('xml', 'json'))) {
$this->clientError(
_('API method not found.'),
404,
$this->format
);
return;
}
// Workaround for PHP returning empty $_POST and $_FILES when POST // Workaround for PHP returning empty $_POST and $_FILES when POST
// length > post_max_size in php.ini // length > post_max_size in php.ini
@ -104,10 +113,46 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
} }
if (empty($this->user)) { if (empty($this->user)) {
$this->clientError(_('No such user!'), 404, $this->format); $this->clientError(_('No such user.'), 404, $this->format);
return; return;
} }
$design = $this->user->getDesign();
// XXX: This is kinda gross, but before we can add a background
// img we have to make sure there's a Design because design ID
// is part of the img filename.
if (empty($design)) {
$this->user->query('BEGIN');
// save new design
$design = new Design();
$id = $design->insert();
if (empty($id)) {
common_log_db_error($id, 'INSERT', __FILE__);
$this->clientError(_('Unable to save your design settings.'));
return;
}
$original = clone($this->user);
$this->user->design_id = $id;
$result = $this->user->update($original);
if (empty($result)) {
common_log_db_error($original, 'UPDATE', __FILE__);
$this->clientError(_('Unable to save your design settings.'));
$this->user->query('ROLLBACK');
return;
}
$this->user->query('COMMIT');
}
// Okay, now get the image and add it to the design
try { try {
$imagefile = ImageFile::fromUpload('image'); $imagefile = ImageFile::fromUpload('image');
} catch (Exception $e) { } catch (Exception $e) {
@ -115,8 +160,6 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
return; return;
} }
$design = $this->user->getDesign();
$filename = Design::filename( $filename = Design::filename(
$design->id, $design->id,
image_type_to_extension($imagefile->type), image_type_to_extension($imagefile->type),
@ -134,16 +177,14 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
} }
$original = clone($design); $original = clone($design);
$design->backgroundimage = $filename; $design->backgroundimage = $filename;
$design->setDisposition(true, false, ($this->tile == 'true'));
$design->setDisposition(true, false, !empty($this->tile));
$result = $design->update($original); $result = $design->update($original);
if ($result === false) { if ($result === false) {
common_log_db_error($design, 'UPDATE', __FILE__); common_log_db_error($design, 'UPDATE', __FILE__);
$this->showForm(_('Couldn\'t update your design.')); $this->showForm(_('Could not update your design.'));
return; return;
} }
@ -154,7 +195,7 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
return; return;
} }
$twitter_user = $this->twitterUserArray($this->user->getProfile(), true); $twitter_user = $this->twitterUserArray($profile, true);
if ($this->format == 'xml') { if ($this->format == 'xml') {
$this->initDocument('xml'); $this->initDocument('xml');

View File

@ -113,6 +113,15 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
return; return;
} }
if (!in_array($this->format, array('xml', 'json'))) {
$this->clientError(
_('API method not found.'),
404,
$this->format
);
return;
}
$design = $this->user->getDesign(); $design = $this->user->getDesign();
if (!empty($design)) { if (!empty($design)) {
@ -130,7 +139,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
if ($result === false) { if ($result === false) {
common_log_db_error($design, 'UPDATE', __FILE__); common_log_db_error($design, 'UPDATE', __FILE__);
$this->clientError(_('Couldn\'t update your design.')); $this->clientError(_('Could not update your design.'));
return; return;
} }
@ -152,7 +161,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
if (empty($id)) { if (empty($id)) {
common_log_db_error($id, 'INSERT', __FILE__); common_log_db_error($id, 'INSERT', __FILE__);
$this->clientError(_('Unable to save your design settings!')); $this->clientError(_('Unable to save your design settings.'));
return; return;
} }
@ -162,7 +171,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
if (empty($result)) { if (empty($result)) {
common_log_db_error($original, 'UPDATE', __FILE__); common_log_db_error($original, 'UPDATE', __FILE__);
$this->clientError(_('Unable to save your design settings!')); $this->clientError(_('Unable to save your design settings.'));
$this->user->query('ROLLBACK'); $this->user->query('ROLLBACK');
return; return;
} }
@ -177,7 +186,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
return; return;
} }
$twitter_user = $this->twitterUserArray($this->user->getProfile(), true); $twitter_user = $this->twitterUserArray($profile, true);
if ($this->format == 'xml') { if ($this->format == 'xml') {
$this->initDocument('xml'); $this->initDocument('xml');

View File

@ -102,7 +102,7 @@ class ApiAccountUpdateProfileImageAction extends ApiAuthAction
} }
if (empty($this->user)) { if (empty($this->user)) {
$this->clientError(_('No such user!'), 404, $this->format); $this->clientError(_('No such user.'), 404, $this->format);
return; return;
} }
@ -135,7 +135,7 @@ class ApiAccountUpdateProfileImageAction extends ApiAuthAction
common_broadcast_profile($profile); common_broadcast_profile($profile);
$twitter_user = $this->twitterUserArray($this->user->getProfile(), true); $twitter_user = $this->twitterUserArray($profile, true);
if ($this->format == 'xml') { if ($this->format == 'xml') {
$this->initDocument('xml'); $this->initDocument('xml');