subedit.php 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. /*
  3. * StatusNet - the distributed open-source microblogging tool
  4. * Copyright (C) 2008, 2009, StatusNet, Inc.
  5. *
  6. * This program is free software: you can redistribute it and/or modify
  7. * it under the terms of the GNU Affero General Public License as published by
  8. * the Free Software Foundation, either version 3 of the License, or
  9. * (at your option) any later version.
  10. *
  11. * This program is distributed in the hope that it will be useful,
  12. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. * GNU Affero General Public License for more details.
  15. *
  16. * You should have received a copy of the GNU Affero General Public License
  17. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  18. */
  19. if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
  20. // @todo FIXME: Documentation needed.
  21. class SubeditAction extends Action
  22. {
  23. var $profile = null;
  24. function prepare(array $args = array())
  25. {
  26. parent::prepare($args);
  27. if (!common_logged_in()) {
  28. // TRANS: Error message displayed when trying to perform an action that requires a logged in user.
  29. $this->clientError(_('Not logged in.'));
  30. }
  31. $token = $this->trimmed('token');
  32. if (!$token || $token != common_session_token()) {
  33. // TRANS: Client error displayed when the session token does not match or is not given.
  34. $this->clientError(_('There was a problem with your session token. '.
  35. 'Try again, please.'));
  36. }
  37. $id = $this->trimmed('profile');
  38. if (!$id) {
  39. // TRANS: Client error displayed trying a change a subscription without providing a profile.
  40. $this->clientError(_('No profile specified.'));
  41. }
  42. $this->profile = Profile::getKV('id', $id);
  43. if (!$this->profile) {
  44. // TRANS: Client error displayed trying a change a subscription for a non-existant profile ID.
  45. $this->clientError(_('No profile with that ID.'));
  46. }
  47. return true;
  48. }
  49. function handle()
  50. {
  51. parent::handle();
  52. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  53. $cur = common_current_user();
  54. $sub = Subscription::pkeyGet(array('subscriber' => $cur->id,
  55. 'subscribed' => $this->profile->id));
  56. if (!$sub) {
  57. // TRANS: Client error displayed trying a change a subscription for a non-subscribed profile.
  58. $this->clientError(_('You are not subscribed to that profile.'));
  59. }
  60. $orig = clone($sub);
  61. $sub->jabber = $this->boolean('jabber');
  62. $sub->sms = $this->boolean('sms');
  63. $result = $sub->update($orig);
  64. if (!$result) {
  65. common_log_db_error($sub, 'UPDATE', __FILE__);
  66. // TRANS: Server error displayed when updating a subscription fails with a database error.
  67. $this->serverError(_('Could not save subscription.'));
  68. }
  69. common_redirect(common_local_url('subscriptions', array('nickname' => $cur->nickname)), 303);
  70. }
  71. }
  72. }