summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZach Copley <zach@status.net>2009-11-09 23:56:02 -0800
committerZach Copley <zach@status.net>2009-11-09 23:56:02 -0800
commitc8bd6d9f7afde597f3b404acb05622a73f3738f7 (patch)
tree218275a6e49175debb0cb28d89c02bd1942a8adb
parent312c745884654a461ed6da22eebe78f07f500426 (diff)
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.
-rw-r--r--actions/apiaccountratelimitstatus.php2
-rw-r--r--actions/apiaccountupdateprofile.php11
-rw-r--r--actions/apiaccountupdateprofilebackgroundimage.php57
-rw-r--r--actions/apiaccountupdateprofilecolors.php17
-rw-r--r--actions/apiaccountupdateprofileimage.php4
5 files changed, 75 insertions, 16 deletions
diff --git a/actions/apiaccountratelimitstatus.php b/actions/apiaccountratelimitstatus.php
index 96179f175..1a5afd552 100644
--- a/actions/apiaccountratelimitstatus.php
+++ b/actions/apiaccountratelimitstatus.php
@@ -67,7 +67,7 @@ class ApiAccountRateLimitStatusAction extends ApiBareAuthAction
if (!in_array($this->format, array('xml', 'json'))) {
$this->clientError(
- _('API method not found!'),
+ _('API method not found.'),
404,
$this->format
);
diff --git a/actions/apiaccountupdateprofile.php b/actions/apiaccountupdateprofile.php
index 8af0fb866..fd4384a25 100644
--- a/actions/apiaccountupdateprofile.php
+++ b/actions/apiaccountupdateprofile.php
@@ -92,6 +92,15 @@ class ApiAccountUpdateProfileAction extends ApiAuthAction
return;
}
+ if (!in_array($this->format, array('xml', 'json'))) {
+ $this->clientError(
+ _('API method not found.'),
+ 404,
+ $this->format
+ );
+ return;
+ }
+
if (empty($this->user)) {
$this->clientError(_('No such user.'), 404, $this->format);
return;
@@ -135,7 +144,7 @@ class ApiAccountUpdateProfileAction extends ApiAuthAction
if (!$result) {
common_log_db_error($profile, 'UPDATE', __FILE__);
- $this->serverError(_('Couldn\'t save profile.'));
+ $this->serverError(_('Could not save profile.'));
return;
}
diff --git a/actions/apiaccountupdateprofilebackgroundimage.php b/actions/apiaccountupdateprofilebackgroundimage.php
index 26d55d448..3537b9f97 100644
--- a/actions/apiaccountupdateprofilebackgroundimage.php
+++ b/actions/apiaccountupdateprofilebackgroundimage.php
@@ -89,6 +89,15 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
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
// length > post_max_size in php.ini
@@ -104,10 +113,46 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
}
if (empty($this->user)) {
- $this->clientError(_('No such user!'), 404, $this->format);
+ $this->clientError(_('No such user.'), 404, $this->format);
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 {
$imagefile = ImageFile::fromUpload('image');
} catch (Exception $e) {
@@ -115,8 +160,6 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
return;
}
- $design = $this->user->getDesign();
-
$filename = Design::filename(
$design->id,
image_type_to_extension($imagefile->type),
@@ -134,16 +177,14 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
}
$original = clone($design);
-
$design->backgroundimage = $filename;
-
- $design->setDisposition(true, false, !empty($this->tile));
+ $design->setDisposition(true, false, ($this->tile == 'true'));
$result = $design->update($original);
if ($result === false) {
common_log_db_error($design, 'UPDATE', __FILE__);
- $this->showForm(_('Couldn\'t update your design.'));
+ $this->showForm(_('Could not update your design.'));
return;
}
@@ -154,7 +195,7 @@ class ApiAccountUpdateProfileBackgroundImageAction extends ApiAuthAction
return;
}
- $twitter_user = $this->twitterUserArray($this->user->getProfile(), true);
+ $twitter_user = $this->twitterUserArray($profile, true);
if ($this->format == 'xml') {
$this->initDocument('xml');
diff --git a/actions/apiaccountupdateprofilecolors.php b/actions/apiaccountupdateprofilecolors.php
index d7d2161fe..3cac82974 100644
--- a/actions/apiaccountupdateprofilecolors.php
+++ b/actions/apiaccountupdateprofilecolors.php
@@ -113,6 +113,15 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
return;
}
+ if (!in_array($this->format, array('xml', 'json'))) {
+ $this->clientError(
+ _('API method not found.'),
+ 404,
+ $this->format
+ );
+ return;
+ }
+
$design = $this->user->getDesign();
if (!empty($design)) {
@@ -130,7 +139,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
if ($result === false) {
common_log_db_error($design, 'UPDATE', __FILE__);
- $this->clientError(_('Couldn\'t update your design.'));
+ $this->clientError(_('Could not update your design.'));
return;
}
@@ -152,7 +161,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
if (empty($id)) {
common_log_db_error($id, 'INSERT', __FILE__);
- $this->clientError(_('Unable to save your design settings!'));
+ $this->clientError(_('Unable to save your design settings.'));
return;
}
@@ -162,7 +171,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
if (empty($result)) {
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');
return;
}
@@ -177,7 +186,7 @@ class ApiAccountUpdateProfileColorsAction extends ApiAuthAction
return;
}
- $twitter_user = $this->twitterUserArray($this->user->getProfile(), true);
+ $twitter_user = $this->twitterUserArray($profile, true);
if ($this->format == 'xml') {
$this->initDocument('xml');
diff --git a/actions/apiaccountupdateprofileimage.php b/actions/apiaccountupdateprofileimage.php
index 72fb361bf..153ef7818 100644
--- a/actions/apiaccountupdateprofileimage.php
+++ b/actions/apiaccountupdateprofileimage.php
@@ -102,7 +102,7 @@ class ApiAccountUpdateProfileImageAction extends ApiAuthAction
}
if (empty($this->user)) {
- $this->clientError(_('No such user!'), 404, $this->format);
+ $this->clientError(_('No such user.'), 404, $this->format);
return;
}
@@ -135,7 +135,7 @@ class ApiAccountUpdateProfileImageAction extends ApiAuthAction
common_broadcast_profile($profile);
- $twitter_user = $this->twitterUserArray($this->user->getProfile(), true);
+ $twitter_user = $this->twitterUserArray($profile, true);
if ($this->format == 'xml') {
$this->initDocument('xml');