Various obvious bug fixes and better PHP 7 support

Many of these came from a XRevan86 patch
This commit is contained in:
Diogo Cordeiro 2019-04-26 00:34:17 +01:00
parent c4f962a7d0
commit 7967db6ff5
28 changed files with 652 additions and 681 deletions

View File

@ -51,25 +51,25 @@ if (!defined('STATUSNET')) {
class DeleteaccountAction extends Action
{
private $_complete = false;
private $_error = null;
private $_error = null;
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$cur = common_current_user();
if (empty($cur)) {
// TRANS: Client exception displayed trying to delete a user account while not logged in.
throw new ClientException(_("Only logged-in users ".
"can delete their account."), 403);
throw new ClientException(_("Only logged-in users can delete their account."), 403);
}
if (!$cur->hasRight(Right::DELETEACCOUNT)) {
@ -83,20 +83,71 @@ class DeleteaccountAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
* @throws AuthorizationException
* @throws ServerException
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->deleteAccount();
} else {
$this->showPage();
}
return;
return null;
}
/**
* Delete the current user's account
*
* Checks for the "I am sure." string to make sure the user really
* wants to delete their account.
*
* Then, marks the account as deleted and begins the deletion process
* (actually done by a back-end handler).
*
* If successful it logs the user out, and shows a brief completion message.
*
* @return void
* @throws AuthorizationException
* @throws ServerException
*/
function deleteAccount()
{
$this->checkSessionToken();
// !!! If this string is changed, it also needs to be changed in DeleteAccountForm::formData()
// TRANS: Confirmation text for user deletion. The user has to type this exactly the same, including punctuation.
$iamsure = _('I am sure.');
if ($this->trimmed('iamsure') != $iamsure) {
// TRANS: Notification for user about the text that must be input to be able to delete a user account.
// TRANS: %s is the text that needs to be input.
$this->_error = sprintf(_('You must write "%s" exactly in the box.'), $iamsure);
$this->showPage();
return null;
}
$cur = common_current_user();
// Mark the account as deleted and shove low-level deletion tasks
// to background queues. Removing a lot of posts can take a while...
if (!$cur->hasRole(Profile_role::DELETED)) {
$cur->grantRole(Profile_role::DELETED);
}
$qm = QueueManager::get();
$qm->enqueue($cur, 'deluser');
// The user is really-truly logged out
common_set_user(null);
common_real_login(false); // not logged in
common_forgetme(); // don't log back in!
$this->_complete = true;
$this->showPage();
}
/**
@ -139,55 +190,6 @@ class DeleteaccountAction extends Action
return null;
}
/**
* Delete the current user's account
*
* Checks for the "I am sure." string to make sure the user really
* wants to delete their account.
*
* Then, marks the account as deleted and begins the deletion process
* (actually done by a back-end handler).
*
* If successful it logs the user out, and shows a brief completion message.
*
* @return void
*/
function deleteAccount()
{
$this->checkSessionToken();
// !!! If this string is changed, it also needs to be changed in DeleteAccountForm::formData()
// TRANS: Confirmation text for user deletion. The user has to type this exactly the same, including punctuation.
$iamsure = _('I am sure.');
if ($this->trimmed('iamsure') != $iamsure ) {
// TRANS: Notification for user about the text that must be input to be able to delete a user account.
// TRANS: %s is the text that needs to be input.
$this->_error = sprintf(_('You must write "%s" exactly in the box.'), $iamsure);
$this->showPage();
return;
}
$cur = common_current_user();
// Mark the account as deleted and shove low-level deletion tasks
// to background queues. Removing a lot of posts can take a while...
if (!$cur->hasRole(Profile_role::DELETED)) {
$cur->grantRole(Profile_role::DELETED);
}
$qm = QueueManager::get();
$qm->enqueue($cur, 'deluser');
// The user is really-truly logged out
common_set_user(null);
common_real_login(false); // not logged in
common_forgetme(); // don't log back in!
$this->_complete = true;
$this->showPage();
}
/**
* Shows the page content.
*
@ -202,9 +204,9 @@ class DeleteaccountAction extends Action
{
if ($this->_complete) {
$this->element('p', 'confirmation',
// TRANS: Confirmation that a user account has been deleted.
_('Account deleted.'));
return;
// TRANS: Confirmation that a user account has been deleted.
_('Account deleted.'));
return null;
}
if (!empty($this->_error)) {
@ -276,16 +278,13 @@ class DeleteAccountForm extends Form
$cur = common_current_user();
// TRANS: Form text for user deletion form.
$msg = '<p>' . _('This will <strong>permanently delete</strong> '.
'your account data from this server.') . '</p>';
$msg = '<p>' . _('This will <strong>permanently delete</strong> your account data from this server.') . '</p>';
if ($cur->hasRight(Right::BACKUPACCOUNT)) {
// TRANS: Additional form text for user deletion form shown if a user has account backup rights.
// TRANS: %s is a URL to the backup page.
$msg .= '<p>' . sprintf(_('You are strongly advised to '.
'<a href="%s">back up your data</a>'.
' before deletion.'),
common_local_url('backupaccount')) . '</p>';
$msg .= '<p>' . sprintf(_('You are strongly advised to <a href="%s">back up your data</a> before deletion.'),
common_local_url('backupaccount')) . '</p>';
}
$this->out->elementStart('p');
@ -296,13 +295,13 @@ class DeleteAccountForm extends Form
// TRANS: Confirmation text for user deletion. The user has to type this exactly the same, including punctuation.
$iamsure = _("I am sure.");
$this->out->input('iamsure',
// TRANS: Field label for delete account confirmation entry.
_('Confirm'),
null,
// TRANS: Input title for the delete account field.
// TRANS: %s is the text that needs to be input.
sprintf(_('Enter "%s" to confirm that '.
'you want to delete your account.'),$iamsure ));
// TRANS: Field label for delete account confirmation entry.
_('Confirm'),
null,
// TRANS: Input title for the delete account field.
// TRANS: %s is the text that needs to be input.
sprintf(_('Enter "%s" to confirm that ' .
'you want to delete your account.'), $iamsure));
}
/**
@ -315,11 +314,11 @@ class DeleteAccountForm extends Form
function formActions()
{
$this->out->submit('submit',
// TRANS: Button text for user account deletion.
_m('BUTTON', 'Delete'),
'submit',
null,
// TRANS: Button title for user account deletion.
_('Permanently delete your account.'));
// TRANS: Button text for user account deletion.
_m('BUTTON', 'Delete'),
'submit',
null,
// TRANS: Button title for user account deletion.
_('Permanently delete your account.'));
}
}

View File

@ -63,13 +63,14 @@ class RestoreaccountAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$cur = common_current_user();
@ -89,20 +90,19 @@ class RestoreaccountAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
* @throws ClientException
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->restoreAccount();
} else {
$this->showPage();
}
return;
return null;
}
/**
@ -111,6 +111,8 @@ class RestoreaccountAction extends Action
* Uses the UserActivityStream class; may take a long time!
*
* @return void
* @throws ClientException
* @throws Exception
*/
function restoreAccount()
{
@ -128,41 +130,33 @@ class RestoreaccountAction extends Action
// TRANS: Client exception thrown when an uploaded file is larger than set in php.ini.
throw new ClientException(_('The uploaded file exceeds the ' .
'upload_max_filesize directive in php.ini.'));
return;
case UPLOAD_ERR_FORM_SIZE:
throw new ClientException(
// TRANS: Client exception.
_('The uploaded file exceeds the MAX_FILE_SIZE directive' .
' that was specified in the HTML form.'));
return;
case UPLOAD_ERR_PARTIAL:
@unlink($_FILES['restorefile']['tmp_name']);
// TRANS: Client exception.
throw new ClientException(_('The uploaded file was only' .
' partially uploaded.'));
return;
case UPLOAD_ERR_NO_FILE:
// TRANS: Client exception. No file; probably just a non-AJAX submission.
throw new ClientException(_('No uploaded file.'));
return;
case UPLOAD_ERR_NO_TMP_DIR:
// TRANS: Client exception thrown when a temporary folder is not present to store a file upload.
throw new ClientException(_('Missing a temporary folder.'));
return;
case UPLOAD_ERR_CANT_WRITE:
// TRANS: Client exception thrown when writing to disk is not possible during a file upload operation.
throw new ClientException(_('Failed to write file to disk.'));
return;
case UPLOAD_ERR_EXTENSION:
// TRANS: Client exception thrown when a file upload operation has been stopped by an extension.
throw new ClientException(_('File upload stopped by extension.'));
return;
default:
common_log(LOG_ERR, __METHOD__ . ": Unknown upload error " .
$_FILES['restorefile']['error']);
// TRANS: Client exception thrown when a file upload operation has failed with an unknown reason.
throw new ClientException(_('System error uploading file.'));
return;
}
$filename = $_FILES['restorefile']['tmp_name'];
@ -210,7 +204,7 @@ class RestoreaccountAction extends Action
// Enqueue for processing.
$qm = QueueManager::get();
$qm->enqueue(array(common_current_user(), $xml, false), 'feedimp');
$qm->enqueue([common_current_user(), $xml, false], 'feedimp');
if ($qm instanceof UnQueueManager) {
// No active queuing means we've actually just completed the job!

View File

@ -52,13 +52,14 @@ class SelftagAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$this->tag = $this->trimmed('tag');
@ -67,7 +68,7 @@ class SelftagAction extends Action
// TRANS: %s is the invalid list name.
$this->clientError(sprintf(_('Not a valid list: %s.'),
$this->tag));
return;
return null;
}
$this->page = ($this->arg('page')) ? $this->arg('page') : 1;
@ -80,13 +81,11 @@ class SelftagAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return boolean is read only action?
* @return void is read only action?
*/
function handle($argarray)
function handle()
{
parent::handle($argarray);
parent::handle();
$this->showPage();
}
@ -94,8 +93,6 @@ class SelftagAction extends Action
* Whips up a query to get a list of profiles based on the provided
* people tag and page, initalizes a ProfileList widget, and displays
* it to the user.
*
* @return nothing
*/
function showContent()
{
@ -195,7 +192,7 @@ class SelfTagProfileListItem extends ProfileListItem
$user = common_current_user();
if (!empty($user) && $user->id != $this->profile->id &&
if (!empty($user) && $user->id != $this->profile->getID() &&
$user->getProfile()->canTag($this->profile)) {
$yourtags = new PeopleTagsWidget($this->out, $user, $this->profile);
$yourtags->show();

View File

@ -34,7 +34,7 @@ if (!defined('STATUSNET')) {
exit(1);
}
require_once INSTALLDIR.'/lib/noticelist.php';
require_once INSTALLDIR . '/lib/noticelist.php';
/**
* SpamAction
@ -48,29 +48,30 @@ require_once INSTALLDIR.'/lib/noticelist.php';
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
class SpamAction extends Action
{
var $page = null;
var $notices = null;
function title() {
function title()
{
return _("Latest Spam");
}
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$this->page = ($this->arg('page')) ? ($this->arg('page')+0) : 1;
$this->page = ($this->arg('page')) ? ($this->arg('page') + 0) : 1;
// User must be logged in.
@ -86,10 +87,10 @@ class SpamAction extends Action
$stream = new SpamNoticeStream($this->scoped);
$this->notices = $stream->getNotices(($this->page-1)*NOTICES_PER_PAGE,
NOTICES_PER_PAGE + 1);
$this->notices = $stream->getNotices(($this->page - 1) * NOTICES_PER_PAGE,
NOTICES_PER_PAGE + 1);
if($this->page > 1 && $this->notices->N == 0) {
if ($this->page > 1 && $this->notices->N == 0) {
throw new ClientException(_('No such page.'), 404);
}
@ -99,12 +100,10 @@ class SpamAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
parent::handle();
@ -131,9 +130,9 @@ class SpamAction extends Action
}
$this->pagination($this->page > 1,
$cnt > NOTICES_PER_PAGE,
$this->page,
'spam');
$cnt > NOTICES_PER_PAGE,
$this->page,
'spam');
}
function showEmptyList()

View File

@ -54,14 +54,16 @@ class TrainAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
* @throws ServerException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
// User must be logged in.
@ -111,12 +113,11 @@ class TrainAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
* @throws ClientException
*/
function handle($argarray=null)
function handle()
{
// Train

View File

@ -1,32 +1,32 @@
<?php
/**
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2011, StatusNet, Inc.
*
* Score of a notice by activity spam service
*
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category Spam
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @copyright 2011 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
/**
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2011, StatusNet, Inc.
*
* Score of a notice by activity spam service
*
* PHP version 5
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @category Spam
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @copyright 2011 StatusNet, Inc.
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
if (!defined('STATUSNET')) {
exit(1);
@ -43,7 +43,6 @@ if (!defined('STATUSNET')) {
*
* @see DB_DataObject
*/
class Spam_score extends Managed_DataObject
{
const MAX_SCALE = 10000;
@ -53,27 +52,10 @@ class Spam_score extends Managed_DataObject
public $score; // float
public $created; // datetime
function saveNew($notice, $result) {
public static function save($notice, $result)
{
$score = new Spam_score();
$score->notice_id = $notice->id;
$score->score = $result->probability;
$score->is_spam = $result->isSpam;
$score->scaled = Spam_score::scale($score->score);
$score->created = common_sql_now();
$score->notice_created = $notice->created;
$score->insert();
self::blow('spam_score:notice_ids');
return $score;
}
function save($notice, $result) {
$orig = null;
$orig = null;
$score = Spam_score::getKV('notice_id', $notice->id);
if (empty($score)) {
@ -82,11 +64,11 @@ class Spam_score extends Managed_DataObject
$orig = clone($score);
}
$score->notice_id = $notice->id;
$score->score = $result->probability;
$score->is_spam = $result->isSpam;
$score->scaled = Spam_score::scale($score->score);
$score->created = common_sql_now();
$score->notice_id = $notice->id;
$score->score = $result->probability;
$score->is_spam = $result->isSpam;
$score->scaled = Spam_score::scale($score->score);
$score->created = common_sql_now();
$score->notice_created = $notice->created;
if (empty($orig)) {
@ -100,13 +82,6 @@ class Spam_score extends Managed_DataObject
return $score;
}
function delete($useWhere=false)
{
self::blow('spam_score:notice_ids');
self::blow('spam_score:notice_ids;last');
return parent::delete($useWhere);
}
/**
* The One True Thingy that must be defined and declared.
*/
@ -116,20 +91,20 @@ class Spam_score extends Managed_DataObject
'description' => 'score of the notice per activityspam',
'fields' => array(
'notice_id' => array('type' => 'int',
'not null' => true,
'description' => 'notice getting scored'),
'not null' => true,
'description' => 'notice getting scored'),
'score' => array('type' => 'double',
'not null' => true,
'description' => 'score for the notice (0.0, 1.0)'),
'not null' => true,
'description' => 'score for the notice (0.0, 1.0)'),
'scaled' => array('type' => 'int',
'description' => 'scaled score for the notice (0, 10000)'),
'description' => 'scaled score for the notice (0, 10000)'),
'is_spam' => array('type' => 'tinyint',
'description' => 'flag for spamosity'),
'description' => 'flag for spamosity'),
'created' => array('type' => 'datetime',
'not null' => true,
'description' => 'date this record was created'),
'not null' => true,
'description' => 'date this record was created'),
'notice_created' => array('type' => 'datetime',
'description' => 'date the notice was created'),
'description' => 'date the notice was created'),
),
'primary key' => array('notice_id'),
'foreign keys' => array(
@ -194,9 +169,35 @@ class Spam_score extends Managed_DataObject
}
}
function saveNew($notice, $result)
{
$score = new Spam_score();
$score->notice_id = $notice->id;
$score->score = $result->probability;
$score->is_spam = $result->isSpam;
$score->scaled = Spam_score::scale($score->score);
$score->created = common_sql_now();
$score->notice_created = $notice->created;
$score->insert();
self::blow('spam_score:notice_ids');
return $score;
}
public static function scale($score)
{
$raw = round($score * Spam_score::MAX_SCALE);
return max(0, min(Spam_score::MAX_SCALE, $raw));
}
public function delete($useWhere = false)
{
self::blow('spam_score:notice_ids');
self::blow('spam_score:notice_ids;last');
return parent::delete($useWhere);
}
}

View File

@ -63,21 +63,22 @@ class ImportdeliciousAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$cur = common_current_user();
if (empty($cur)) {
// TRANS: Client exception thrown when trying to import bookmarks without being logged in.
throw new ClientException(_m('Only logged-in users can '.
'import del.icio.us backups.'),
403);
throw new ClientException(_m('Only logged-in users can ' .
'import del.icio.us backups.'),
403);
}
if (!$cur->hasRight(BookmarkPlugin::IMPORTDELICIOUS)) {
@ -91,13 +92,12 @@ class ImportdeliciousAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
* @throws ClientException
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->importDelicious();
@ -113,6 +113,7 @@ class ImportdeliciousAction extends Action
* Uses the DeliciousBackupImporter class; may take a long time!
*
* @return void
* @throws ClientException
*/
function importDelicious()
{
@ -124,48 +125,40 @@ class ImportdeliciousAction extends Action
}
switch ($_FILES[ImportDeliciousForm::FILEINPUT]['error']) {
case UPLOAD_ERR_OK: // success, jump out
break;
case UPLOAD_ERR_INI_SIZE:
// TRANS: Client exception thrown when an uploaded file is too large.
throw new ClientException(_m('The uploaded file exceeds the ' .
'upload_max_filesize directive in php.ini.'));
return;
case UPLOAD_ERR_FORM_SIZE:
throw new ClientException(
// TRANS: Client exception thrown when an uploaded file is too large.
_m('The uploaded file exceeds the MAX_FILE_SIZE directive' .
' that was specified in the HTML form.'));
return;
case UPLOAD_ERR_PARTIAL:
@unlink($_FILES[ImportDeliciousForm::FILEINPUT]['tmp_name']);
// TRANS: Client exception thrown when a file was only partially uploaded.
throw new ClientException(_m('The uploaded file was only' .
' partially uploaded.'));
return;
case UPLOAD_ERR_NO_FILE:
// No file; probably just a non-AJAX submission.
// TRANS: Client exception thrown when a file upload has failed.
throw new ClientException(_m('No uploaded file.'));
return;
case UPLOAD_ERR_NO_TMP_DIR:
// TRANS: Client exception thrown when a temporary folder is not present.
throw new ClientException(_m('Missing a temporary folder.'));
return;
case UPLOAD_ERR_CANT_WRITE:
// TRANS: Client exception thrown when writing to disk is not possible.
throw new ClientException(_m('Failed to write file to disk.'));
return;
case UPLOAD_ERR_EXTENSION:
// TRANS: Client exception thrown when a file upload has been stopped.
throw new ClientException(_m('File upload stopped by extension.'));
return;
default:
common_log(LOG_ERR, __METHOD__ . ": Unknown upload error " .
$_FILES[ImportDeliciousForm::FILEINPUT]['error']);
// TRANS: Client exception thrown when a file upload operation has failed.
throw new ClientException(_m('System error uploading file.'));
return;
case UPLOAD_ERR_OK: // success, jump out
break;
case UPLOAD_ERR_INI_SIZE:
// TRANS: Client exception thrown when an uploaded file is too large.
throw new ClientException(_m('The uploaded file exceeds the ' .
'upload_max_filesize directive in php.ini.'));
case UPLOAD_ERR_FORM_SIZE:
throw new ClientException(
// TRANS: Client exception thrown when an uploaded file is too large.
_m('The uploaded file exceeds the MAX_FILE_SIZE directive' .
' that was specified in the HTML form.'));
case UPLOAD_ERR_PARTIAL:
@unlink($_FILES[ImportDeliciousForm::FILEINPUT]['tmp_name']);
// TRANS: Client exception thrown when a file was only partially uploaded.
throw new ClientException(_m('The uploaded file was only' .
' partially uploaded.'));
case UPLOAD_ERR_NO_FILE:
// No file; probably just a non-AJAX submission.
// TRANS: Client exception thrown when a file upload has failed.
throw new ClientException(_m('No uploaded file.'));
case UPLOAD_ERR_NO_TMP_DIR:
// TRANS: Client exception thrown when a temporary folder is not present.
throw new ClientException(_m('Missing a temporary folder.'));
case UPLOAD_ERR_CANT_WRITE:
// TRANS: Client exception thrown when writing to disk is not possible.
throw new ClientException(_m('Failed to write file to disk.'));
case UPLOAD_ERR_EXTENSION:
// TRANS: Client exception thrown when a file upload has been stopped.
throw new ClientException(_m('File upload stopped by extension.'));
default:
common_log(LOG_ERR, __METHOD__ . ": Unknown upload error " .
$_FILES[ImportDeliciousForm::FILEINPUT]['error']);
// TRANS: Client exception thrown when a file upload operation has failed.
throw new ClientException(_m('System error uploading file.'));
}
$filename = $_FILES[ImportDeliciousForm::FILEINPUT]['tmp_name'];
@ -174,19 +167,19 @@ class ImportdeliciousAction extends Action
if (!file_exists($filename)) {
// TRANS: Server exception thrown when a file upload cannot be found.
// TRANS: %s is the file that could not be found.
throw new ServerException(sprintf(_m('No such file "%s".'),$filename));
throw new ServerException(sprintf(_m('No such file "%s".'), $filename));
}
if (!is_file($filename)) {
// TRANS: Server exception thrown when a file upload is incorrect.
// TRANS: %s is the irregular file.
throw new ServerException(sprintf(_m('Not a regular file: "%s".'),$filename));
throw new ServerException(sprintf(_m('Not a regular file: "%s".'), $filename));
}
if (!is_readable($filename)) {
// TRANS: Server exception thrown when a file upload is not readable.
// TRANS: %s is the file that could not be read.
throw new ServerException(sprintf(_m('File "%s" not readable.'),$filename));
throw new ServerException(sprintf(_m('File "%s" not readable.'), $filename));
}
common_debug(sprintf("Getting backup from file '%s'.", $filename));
@ -196,7 +189,7 @@ class ImportdeliciousAction extends Action
// Enqueue for processing.
$qm = QueueManager::get();
$qm->enqueue(array(common_current_user(), $html), 'dlcsback');
$qm->enqueue([common_current_user(), $html], 'dlcsback');
if ($qm instanceof UnQueueManager) {
// No active queuing means we've actually just completed the job!
@ -224,12 +217,12 @@ class ImportdeliciousAction extends Action
{
if ($this->success) {
$this->element('p', null,
// TRANS: Success message after importing bookmarks.
_m('Bookmarks have been imported. Your bookmarks should now appear in search and your profile page.'));
// TRANS: Success message after importing bookmarks.
_m('Bookmarks have been imported. Your bookmarks should now appear in search and your profile page.'));
} else if ($this->inprogress) {
$this->element('p', null,
// TRANS: Busy message for importing bookmarks.
_m('Bookmarks are being imported. Please wait a few minutes for results.'));
// TRANS: Busy message for importing bookmarks.
_m('Bookmarks are being imported. Please wait a few minutes for results.'));
} else {
$form = new ImportDeliciousForm($this);
$form->show();
@ -272,9 +265,8 @@ class ImportDeliciousForm extends Form
*
* @param HTMLOutputter $out output channel
*
* @return ImportDeliciousForm this
*/
function __construct($out=null)
function __construct($out = null)
{
parent::__construct($out);
$this->enctype = 'multipart/form-data';
@ -312,17 +304,17 @@ class ImportDeliciousForm extends Form
$this->out->elementStart('p', 'instructions');
// TRANS: Form instructions for importing bookmarks.
$this->out->raw(_m('You can upload a backed-up '.
'delicious.com bookmarks file.'));
$this->out->raw(_m('You can upload a backed-up ' .
'delicious.com bookmarks file.'));
$this->out->elementEnd('p');
$this->out->elementStart('ul', 'form_data');
$this->out->elementStart('li', array ('id' => 'settings_attach'));
$this->out->elementStart('li', array('id' => 'settings_attach'));
$this->out->element('input', array('name' => self::FILEINPUT,
'type' => 'file',
'id' => self::FILEINPUT));
'type' => 'file',
'id' => self::FILEINPUT));
$this->out->elementEnd('li');
$this->out->elementEnd('ul');
@ -339,11 +331,11 @@ class ImportDeliciousForm extends Form
function formActions()
{
$this->out->submit('submit',
// TRANS: Button text on form to import bookmarks.
_m('BUTTON', 'Upload'),
'submit',
null,
// TRANS: Button title on form to import bookmarks.
_m('Upload the file.'));
// TRANS: Button text on form to import bookmarks.
_m('BUTTON', 'Upload'),
'submit',
null,
// TRANS: Button title on form to import bookmarks.
_m('Upload the file.'));
}
}

View File

@ -54,13 +54,14 @@ class NoticebyurlAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$this->file = File::getKV('id', $this->trimmed('id'));
@ -102,11 +103,9 @@ class NoticebyurlAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
$this->showPage();
}

View File

@ -44,7 +44,6 @@ if (!defined('STATUSNET')) {
* @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0
* @link http://status.net/
*/
class GloballoginAction extends GlobalApiAction
{
var $password;
@ -52,14 +51,14 @@ class GloballoginAction extends GlobalApiAction
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$password = $this->trimmed('password');
@ -75,14 +74,12 @@ class GloballoginAction extends GlobalApiAction
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
try {
// FIXME: $email and $password aren't defined
$url = DomainStatusNetworkPlugin::login($email, $password);
$this->showSuccess(array('url' => $url));
} catch (ClientException $ce) {

View File

@ -50,28 +50,28 @@ class GlobalrecoverAction extends GlobalApiAction
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = array())
{
parent::prepare($argarray);
parent::prepare($args);
return true;
}
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
try {
// FIXME: $email isn't defined
DomainStatusNetworkPlugin::recoverPassword($email);
$this->showSuccess();
} catch (ClientException $ce) {

View File

@ -50,15 +50,15 @@ class GlobalregisterAction extends GlobalApiAction
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
*/
function prepare($argarray)
function prepare(array $args = [])
{
try {
parent::prepare($argarray);
parent::prepare($args);
return true;
} catch (ClientException $e) {
$this->showError($e->getMessage(), $e->getCode());
@ -73,12 +73,10 @@ class GlobalregisterAction extends GlobalApiAction
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
try {
$confirm = DomainStatusNetworkPlugin::registerEmail($this->email);

View File

@ -75,9 +75,9 @@ class EmailregisterAction extends Action
protected $error;
protected $complete;
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
if (common_config('site', 'closed')) {
// TRANS: Client exception trown when registration by e-mail is not allowed.
@ -165,28 +165,27 @@ class EmailregisterAction extends Action
function title()
{
switch ($this->state) {
case self::NEWREGISTER:
case self::NEWEMAIL:
// TRANS: Title for registration page.
return _m('TITLE','Register');
break;
case self::SETPASSWORD:
case self::CONFIRMINVITE:
case self::CONFIRMREGISTER:
// TRANS: Title for page where to register with a confirmation code.
return _m('TITLE','Complete registration');
break;
case self::NEWREGISTER:
case self::NEWEMAIL:
// TRANS: Title for registration page.
return _m('TITLE', 'Register');
break;
case self::SETPASSWORD:
case self::CONFIRMINVITE:
case self::CONFIRMREGISTER:
// TRANS: Title for page where to register with a confirmation code.
return _m('TITLE', 'Complete registration');
break;
}
}
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
* @throws Exception
*/
function handle($argarray=null)
function handle()
{
$cur = common_current_user();
@ -195,21 +194,21 @@ class EmailregisterAction extends Action
}
switch ($this->state) {
case self::NEWREGISTER:
$this->showRegistrationForm();
break;
case self::NEWEMAIL:
$this->registerUser();
break;
case self::CONFIRMINVITE:
$this->confirmRegistration();
break;
case self::CONFIRMREGISTER:
$this->confirmRegistration();
break;
case self::SETPASSWORD:
$this->setPassword();
break;
case self::NEWREGISTER:
$this->showRegistrationForm();
break;
case self::NEWEMAIL:
$this->registerUser();
break;
case self::CONFIRMINVITE:
$this->confirmRegistration();
break;
case self::CONFIRMREGISTER:
$this->confirmRegistration();
break;
case self::SETPASSWORD:
$this->setPassword();
break;
}
return;
}
@ -235,7 +234,7 @@ class EmailregisterAction extends Action
// TRANS: Confirmation text after initial registration.
// TRANS: %s an e-mail address.
$prompt = sprintf(_m('An email was sent to %s to confirm that address. Check your email inbox for instructions.'),
$this->email);
$this->email);
$this->complete = $prompt;
@ -253,12 +252,17 @@ class EmailregisterAction extends Action
$nickname = $this->nicknameFromEmail($email);
$this->form = new ConfirmRegistrationForm($this,
$nickname,
$email,
$this->code);
$nickname,
$email,
$this->code);
$this->showPage();
}
function nicknameFromEmail($email)
{
return EmailRegistrationPlugin::nicknameFromEmail($email);
}
function setPassword()
{
if (Event::handle('StartRegistrationTry', array($this))) {
@ -293,9 +297,9 @@ class EmailregisterAction extends Action
try {
$fields = array('nickname' => $this->nickname,
'email' => $email,
'password' => $this->password1,
'email_confirmed' => true);
'email' => $email,
'password' => $this->password1,
'email_confirmed' => true);
if (!empty($this->invitation)) {
$fields['code'] = $this->invitation->code;
@ -346,23 +350,23 @@ class EmailregisterAction extends Action
$headers['From'] = mail_notify_from();
$headers['To'] = trim($confirm->address);
// TRANS: Subject for confirmation e-mail.
// TRANS: %s is the StatusNet sitename.
// TRANS: Subject for confirmation e-mail.
// TRANS: %s is the StatusNet sitename.
$headers['Subject'] = sprintf(_m('Confirm your registration on %s'), $sitename);
$confirmUrl = common_local_url('register', array('code' => $confirm->code));
// TRANS: Body for confirmation e-mail.
// TRANS: %1$s is the StatusNet sitename, %2$s is the confirmation URL.
$body = sprintf(_m('Someone (probably you) has requested an account on %1$s using this email address.'.
"\n".
'To confirm the address, click the following URL or copy it into the address bar of your browser.'.
"\n".
'%2$s'.
"\n".
'If it was not you, you can safely ignore this message.'),
$sitename,
$confirmUrl);
$body = sprintf(_m('Someone (probably you) has requested an account on %1$s using this email address.' .
"\n" .
'To confirm the address, click the following URL or copy it into the address bar of your browser.' .
"\n" .
'%2$s' .
"\n" .
'If it was not you, you can safely ignore this message.'),
$sitename,
$confirmUrl);
mail_send($recipients, $headers, $body);
}
@ -400,11 +404,6 @@ class EmailregisterAction extends Action
return false;
}
function nicknameFromEmail($email)
{
return EmailRegistrationPlugin::nicknameFromEmail($email);
}
/**
* A local menu
*

View File

@ -51,13 +51,15 @@ class GroupinboxAction extends GroupAction
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
* @throws NicknameException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$cur = common_current_user();
@ -101,8 +103,8 @@ class GroupinboxAction extends GroupAction
}
$this->gm = Group_message::forGroup($this->group,
($this->page - 1) * MESSAGES_PER_PAGE,
MESSAGES_PER_PAGE + 1);
($this->page - 1) * MESSAGES_PER_PAGE,
MESSAGES_PER_PAGE + 1);
return true;
}
@ -128,20 +130,18 @@ class GroupinboxAction extends GroupAction
$this->element('p', 'guide', _m('This group has not received any private messages.'));
}
$this->pagination($this->page > 1,
$cnt > MESSAGES_PER_PAGE,
$this->page,
'groupinbox',
array('nickname' => $this->group->nickname));
$cnt > MESSAGES_PER_PAGE,
$this->page,
'groupinbox',
array('nickname' => $this->group->nickname));
}
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
$this->showPage();
}
@ -176,8 +176,8 @@ class GroupinboxAction extends GroupAction
// TRANS: Page title for any but first group page.
// TRANS: %1$s is a group name, $2$s is a page number.
return sprintf(_m('%1$s group inbox, page %2$d'),
$base,
$this->page);
$base,
$this->page);
}
}
@ -190,7 +190,7 @@ class GroupinboxAction extends GroupAction
*/
function showPageNotice()
{
$instr = $this->getInstructions();
$instr = $this->getInstructions();
$output = common_markup_to_html($instr);
$this->elementStart('div', 'instructions');

View File

@ -53,13 +53,15 @@ class NewgroupmessageAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
* @throws NicknameException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$this->user = common_current_user();
@ -71,7 +73,7 @@ class NewgroupmessageAction extends Action
if (!$this->user->hasRight(Right::NEWMESSAGE)) {
// TRANS: Exception thrown when user %s is not allowed to send a private group message.
throw new Exception(sprintf(_m('User %s is not allowed to send private messages.'),
$this->user->nickname));
$this->user->nickname));
}
$nicknameArg = $this->trimmed('nickname');
@ -112,11 +114,9 @@ class NewgroupmessageAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
if ($this->isPost()) {
$this->sendNewMessage();
@ -125,12 +125,6 @@ class NewgroupmessageAction extends Action
}
}
function showNoticeForm()
{
$form = new GroupMessageForm($this, $this->group);
$form->show();
}
function sendNewMessage()
{
$gm = Group_message::send($this->user, $this->group, $this->text);
@ -143,10 +137,10 @@ class NewgroupmessageAction extends Action
$this->elementEnd('head');
$this->elementStart('body');
$this->element('p',
array('id' => 'command_result'),
// TRANS: Succes text after sending a direct message to group %s.
sprintf(_m('Direct message to %s sent.'),
$this->group->nickname));
array('id' => 'command_result'),
// TRANS: Succes text after sending a direct message to group %s.
sprintf(_m('Direct message to %s sent.'),
$this->group->nickname));
$this->elementEnd('body');
$this->endHTML();
} else {
@ -154,6 +148,12 @@ class NewgroupmessageAction extends Action
}
}
function showNoticeForm()
{
$form = new GroupMessageForm($this, $this->group);
$form->show();
}
function title()
{
// TRANS: Title of form for new private group message.

View File

@ -54,20 +54,22 @@ class ShowgroupmessageAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
* @throws ServerException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$this->user = common_current_user();
if (empty($this->user)) {
// TRANS: Client exception thrown when trying to view group private messages without being logged in.
throw new ClientException(_m('Only logged-in users can view private messages.'),
403);
403);
}
$id = $this->trimmed('id');
@ -104,11 +106,9 @@ class ShowgroupmessageAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
$this->showPage();
}
@ -121,9 +121,9 @@ class ShowgroupmessageAction extends Action
// TRANS: Title for private group message.
// TRANS: %1$s is the sender name, %2$s is the group name, %3$s is a timestamp.
return sprintf(_m('Message from %1$s to group %2$s on %3$s'),
$this->sender->nickname,
$this->group->nickname,
common_exact_date($this->gm->created));
$this->sender->nickname,
$this->group->nickname,
common_exact_date($this->gm->created));
}
/**
@ -161,8 +161,8 @@ class ShowgroupmessageAction extends Action
function lastModified()
{
return max(strtotime($this->group->modified),
strtotime($this->sender->modified),
strtotime($this->gm->modified));
strtotime($this->sender->modified),
strtotime($this->gm->modified));
}
/**
@ -182,11 +182,11 @@ class ShowgroupmessageAction extends Action
}
return 'W/"' . implode(':', array($this->arg('action'),
common_user_cache_hash(),
common_language(),
$this->gm->id,
strtotime($this->sender->modified),
strtotime($this->group->modified),
$avtime)) . '"';
common_user_cache_hash(),
common_language(),
$this->gm->id,
strtotime($this->sender->modified),
strtotime($this->group->modified),
$avtime)) . '"';
}
}

View File

@ -66,13 +66,14 @@ class NewPollAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$this->user = common_current_user();
@ -100,13 +101,11 @@ class NewPollAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->newPoll();

View File

@ -45,12 +45,12 @@ if (!defined('STATUSNET')) {
*/
class RespondPollAction extends Action
{
protected $user = null;
protected $error = null;
protected $complete = null;
protected $user = null;
protected $error = null;
protected $complete = null;
protected $poll = null;
protected $selection = null;
protected $poll = null;
protected $selection = null;
/**
* Returns the title of the action
@ -66,13 +66,14 @@ class RespondPollAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
if ($this->boolean('ajax')) {
GNUsocial::setApi(true);
}
@ -82,7 +83,7 @@ class RespondPollAction extends Action
if (empty($this->user)) {
// TRANS: Client exception thrown trying to respond to a poll while not logged in.
throw new ClientException(_m('You must be logged in to respond to a poll.'),
403);
403);
}
if ($this->isPost()) {
@ -109,13 +110,11 @@ class RespondPollAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->respondPoll();
@ -135,8 +134,8 @@ class RespondPollAction extends Action
{
try {
$notice = Poll_response::saveNew($this->user->getProfile(),
$this->poll,
$this->selection);
$this->poll,
$this->selection);
} catch (ClientException $ce) {
$this->error = $ce->getMessage();
$this->showPage();

View File

@ -45,12 +45,12 @@ if (!defined('STATUSNET')) {
*/
class QnaclosequestionAction extends Action
{
protected $user = null;
protected $error = null;
protected $complete = null;
protected $user = null;
protected $error = null;
protected $complete = null;
protected $question = null;
protected $answer = null;
protected $question = null;
protected $answer = null;
/**
* Returns the title of the action
@ -66,13 +66,14 @@ class QnaclosequestionAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
if ($this->boolean('ajax')) {
GNUsocial::setApi(true);
}
@ -81,7 +82,7 @@ class QnaclosequestionAction extends Action
if (empty($this->user)) {
throw new ClientException(
// TRANS: Client exception thrown trying to close a question when not logged in
// TRANS: Client exception thrown trying to close a question when not logged in
_m("You must be logged in to close a question."),
403
);
@ -104,13 +105,11 @@ class QnaclosequestionAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->closeQuestion();

View File

@ -45,12 +45,11 @@ if (!defined('STATUSNET')) {
*/
class QnanewanswerAction extends Action
{
protected $user = null;
protected $error = null;
public $question = null;
protected $user = null;
protected $error = null;
protected $complete = null;
public $question = null;
protected $content = null;
protected $content = null;
/**
* Returns the title of the action
@ -66,13 +65,14 @@ class QnanewanswerAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
if ($this->boolean('ajax')) {
GNUsocial::setApi(true);
}
@ -81,7 +81,7 @@ class QnanewanswerAction extends Action
if (empty($this->user)) {
throw new ClientException(
// TRANS: Client exception thrown trying to answer a question while not logged in.
// TRANS: Client exception thrown trying to answer a question while not logged in.
_m("You must be logged in to answer to a question."),
403
);
@ -97,7 +97,7 @@ class QnanewanswerAction extends Action
if (empty($this->question)) {
throw new ClientException(
// TRANS: Client exception thrown trying to respond to a non-existing question.
// TRANS: Client exception thrown trying to respond to a non-existing question.
_m('Invalid or missing question.'),
404
);
@ -111,13 +111,11 @@ class QnanewanswerAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->newAnswer();
@ -172,39 +170,24 @@ class QnanewanswerAction extends Action
}
/**
* Show the Answer form
* @param string $msg An error message, if any
*
* @return void
*/
function showContent()
function showForm($msg = null)
{
if (!empty($this->error)) {
$this->element('p', 'error', $this->error);
common_debug("show form - msg = $msg");
if ($this->boolean('ajax')) {
if ($msg) {
$this->ajaxErrorMsg($msg);
} else {
$this->ajaxShowForm();
}
return;
}
$form = new QnanewanswerForm($this->question, $this);
$form->show();
return;
}
/**
* Return true if read only.
*
* MAY override
*
* @param array $args other arguments
*
* @return boolean is read only action?
*/
function isReadOnly($args)
{
if ($_SERVER['REQUEST_METHOD'] == 'GET' ||
$_SERVER['REQUEST_METHOD'] == 'HEAD') {
return true;
} else {
return false;
}
$this->msg = $msg;
$this->showPage();
}
/**
@ -244,7 +227,7 @@ class QnanewanswerAction extends Action
$this->startHTML('text/xml;charset=utf-8', true);
$this->elementStart('head');
// TRANS: Title for form to send answer to a question.
$this->element('title', null, _m('TITLE','Your answer'));
$this->element('title', null, _m('TITLE', 'Your answer'));
$this->elementEnd('head');
$this->elementStart('body');
@ -256,24 +239,39 @@ class QnanewanswerAction extends Action
}
/**
* @param string $msg An error message, if any
* Show the Answer form
*
* @return void
*/
function showForm($msg = null)
function showContent()
{
common_debug("show form - msg = $msg");
if ($this->boolean('ajax')) {
if ($msg) {
$this->ajaxErrorMsg($msg);
} else {
$this->ajaxShowForm();
}
return;
if (!empty($this->error)) {
$this->element('p', 'error', $this->error);
}
$this->msg = $msg;
$this->showPage();
$form = new QnanewanswerForm($this->question, $this);
$form->show();
return;
}
/**
* Return true if read only.
*
* MAY override
*
* @param array $args other arguments
*
* @return boolean is read only action?
*/
function isReadOnly($args)
{
if ($_SERVER['REQUEST_METHOD'] == 'GET' ||
$_SERVER['REQUEST_METHOD'] == 'HEAD') {
return true;
} else {
return false;
}
}
}
@ -288,12 +286,15 @@ class NoticeAnswerListItem extends NoticeListItem
* Also initializes the profile attribute.
*
* @param Notice $notice The notice we'll display
* @param $out
* @param $question
* @param $answer
*/
function __construct($notice, $out=null, $question, $answer)
function __construct($notice, $out, $question, $answer)
{
parent::__construct($notice, $out);
$this->question = $question;
$this->answer = $answer;
$this->answer = $answer;
}
@ -334,7 +335,7 @@ class NoticeAnswerListItem extends NoticeListItem
$form->show();
} else {
// TRANS: Error message displayed when an answer has no content.
$out->text(_m('Answer data is missing.'));
$this->out->text(_m('Answer data is missing.'));
}
$this->out->elementEnd('p');

View File

@ -45,10 +45,10 @@ if (!defined('STATUSNET')) {
*/
class QnanewquestionAction extends Action
{
protected $user = null;
protected $error = null;
protected $complete = null;
protected $title = null;
protected $user = null;
protected $error = null;
protected $complete = null;
protected $title = null;
protected $description = null;
/**
@ -65,19 +65,20 @@ class QnanewquestionAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$this->user = common_current_user();
if (empty($this->user)) {
throw new ClientException(
// TRANS: Client exception thrown trying to create a Question while not logged in.
// TRANS: Client exception thrown trying to create a Question while not logged in.
_m('You must be logged in to post a question.'),
403
);
@ -87,7 +88,7 @@ class QnanewquestionAction extends Action
$this->checkSessionToken();
}
$this->title = $this->trimmed('title');
$this->title = $this->trimmed('title');
$this->description = $this->trimmed('description');
return true;
@ -96,13 +97,11 @@ class QnanewquestionAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->newQuestion();
@ -228,7 +227,7 @@ class NoticeQuestionListItem extends NoticeListItem
*
* @param Notice $notice The notice we'll display
*/
function __construct($notice, $out=null)
function __construct($notice, $out = null)
{
parent::__construct($notice, $out);
}

View File

@ -45,11 +45,11 @@ if (!defined('STATUSNET')) {
*/
class QnareviseanswerAction extends Action
{
protected $user = null;
protected $error = null;
protected $user = null;
protected $error = null;
protected $question = null;
protected $answer = null;
protected $content = null;
protected $answer = null;
protected $content = null;
/**
* Returns the title of the action
@ -65,13 +65,14 @@ class QnareviseanswerAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
if ($this->boolean('ajax')) {
GNUsocial::setApi(true);
}
@ -80,7 +81,7 @@ class QnareviseanswerAction extends Action
if (empty($this->user)) {
throw new ClientException(
// TRANS: Client exception thrown trying to answer a question while not logged in.
// TRANS: Client exception thrown trying to answer a question while not logged in.
_m("You must be logged in to answer to a question."),
403
);
@ -88,12 +89,12 @@ class QnareviseanswerAction extends Action
$id = substr($this->trimmed('id'), 7);
$this->answer = QnA_Answer::getKV('id', $id);
$this->answer = QnA_Answer::getKV('id', $id);
$this->question = $this->answer->getQuestion();
if (empty($this->answer) || empty($this->question)) {
throw new ClientException(
// TRANS: Client exception thrown trying to respond to a non-existing question.
// TRANS: Client exception thrown trying to respond to a non-existing question.
_m('Invalid or missing answer.'),
404
);
@ -107,13 +108,11 @@ class QnareviseanswerAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->checkSessionToken();
@ -134,6 +133,83 @@ class QnareviseanswerAction extends Action
$this->showPage();
}
/**
* Show the revise answer form
*
* @return void
*/
function showContent()
{
if (!empty($this->error)) {
$this->element('p', 'error', $this->error);
}
if ($this->boolean('ajax')) {
$this->showAjaxReviseForm();
} else {
$form = new QnareviseanswerForm($this->answer, $this);
$form->show();
}
return;
}
function showAjaxReviseForm()
{
$this->startHTML('text/xml;charset=utf-8');
$this->elementStart('head');
// TRANS: Form title for sending an answer.
$this->element('title', null, _m('TITLE', 'Answer'));
$this->elementEnd('head');
$this->elementStart('body');
$form = new QnareviseanswerForm($this->answer, $this);
$form->show();
$this->elementEnd('body');
$this->endHTML();
}
/**
* Mark the answer as the "best" answer
*
* @return void
*/
function markBest()
{
$question = $this->question;
$answer = $this->answer;
try {
// close the question to further answers
$orig = clone($question);
$question->closed = 1;
$result = $question->update($orig);
// mark this answer an the best answer
$orig = clone($answer);
$answer->best = 1;
$result = $answer->update($orig);
} catch (ClientException $ce) {
$this->error = $ce->getMessage();
$this->showPage();
return;
}
if ($this->boolean('ajax')) {
common_debug("ajaxy part");
$this->startHTML('text/xml;charset=utf-8');
$this->elementStart('head');
// TRANS: Page title after sending an answer.
$this->element('title', null, _m('Answer'));
$this->elementEnd('head');
$this->elementStart('body');
$form = new QnashowanswerForm($this, $answer);
$form->show();
$this->elementEnd('body');
$this->endHTML();
} else {
common_redirect($this->answer->getUrl(), 303);
}
}
/**
* Revise the answer
*
@ -170,83 +246,6 @@ class QnareviseanswerAction extends Action
}
}
/**
* Mark the answer as the "best" answer
*
* @return void
*/
function markBest()
{
$question = $this->question;
$answer = $this->answer;
try {
// close the question to further answers
$orig = clone($question);
$question->closed = 1;
$result = $question->update($orig);
// mark this answer an the best answer
$orig = clone($answer);
$answer->best = 1;
$result = $answer->update($orig);
} catch (ClientException $ce) {
$this->error = $ce->getMessage();
$this->showPage();
return;
}
if ($this->boolean('ajax')) {
common_debug("ajaxy part");
$this->startHTML('text/xml;charset=utf-8');
$this->elementStart('head');
// TRANS: Page title after sending an answer.
$this->element('title', null, _m('Answer'));
$this->elementEnd('head');
$this->elementStart('body');
$form = new QnashowanswerForm($this, $answer);
$form->show();
$this->elementEnd('body');
$this->endHTML();
} else {
common_redirect($this->answer->getUrl(), 303);
}
}
/**
* Show the revise answer form
*
* @return void
*/
function showContent()
{
if (!empty($this->error)) {
$this->element('p', 'error', $this->error);
}
if ($this->boolean('ajax')) {
$this->showAjaxReviseForm();
} else {
$form = new QnareviseanswerForm($this->answer, $this);
$form->show();
}
return;
}
function showAjaxReviseForm()
{
$this->startHTML('text/xml;charset=utf-8');
$this->elementStart('head');
// TRANS: Form title for sending an answer.
$this->element('title', null, _m('TITLE','Answer'));
$this->elementEnd('head');
$this->elementStart('body');
$form = new QnareviseanswerForm($this->answer, $this);
$form->show();
$this->elementEnd('body');
$this->endHTML();
}
/**
* Return true if read only.
*

View File

@ -51,13 +51,15 @@ class QnashowanswerAction extends ShownoticeAction
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
* @throws ServerException
*/
function prepare($argarray)
function prepare(array $args = [])
{
Action::prepare($argarray);
Action::prepare($args);
$this->id = $this->trimmed('id');
@ -117,8 +119,8 @@ class QnashowanswerAction extends ShownoticeAction
$question = $this->answer->getQuestion();
return sprintf(
// TRANS: Page title.
// TRANS: %1$s is the user who answered a question, %2$s is the question.
// TRANS: Page title.
// TRANS: %1$s is the user who answered a question, %2$s is the question.
_m('%1$s\'s answer to "%2$s"'),
$this->user->nickname,
$question->title

View File

@ -51,13 +51,15 @@ class QnashowquestionAction extends ShownoticeAction
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
* @throws ServerException
*/
function prepare($argarray)
function prepare(array $args = [])
{
Action::prepare($argarray);
Action::prepare($args);
$this->id = $this->trimmed('id');
@ -129,7 +131,7 @@ class QnashowquestionAction extends ShownoticeAction
if (!empty($user)) {
$profile = $user->getProfile();
$answer = QnA_Question::getAnswer($profile);
$answer = QnA_Question::getAnswer($profile);
if (empty($answer)) {
$form = new QnanewanswerForm($this, $this->question, false);
$form->show();
@ -150,8 +152,8 @@ class QnashowquestionAction extends ShownoticeAction
function title()
{
return sprintf(
// TRANS: Page title for a question.
// TRANS: %1$s is the nickname of the user who asked the question, %2$s is the question.
// TRANS: Page title for a question.
// TRANS: %1$s is the nickname of the user who asked the question, %2$s is the question.
_m('%1$s\'s question: %2$s'),
$this->user->nickname,
$this->question->title

View File

@ -45,12 +45,12 @@ if (!defined('STATUSNET')) {
*/
class Qnavote extends Action
{
protected $user = null;
protected $error = null;
protected $complete = null;
protected $user = null;
protected $error = null;
protected $complete = null;
protected $question = null;
protected $answer = null;
protected $question = null;
protected $answer = null;
/**
* Returns the title of the action
@ -66,13 +66,14 @@ class Qnavote extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
if ($this->boolean('ajax')) {
GNUsocial::setApi(true);
}
@ -82,7 +83,7 @@ class Qnavote extends Action
if (empty($this->user)) {
// TRANS: Client exception thrown trying to answer a question while not logged in.
throw new ClientException(_m('You must be logged in to answer to a question.'),
403);
403);
}
if ($this->isPost()) {
@ -105,13 +106,11 @@ class Qnavote extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
parent::handle($argarray);
parent::handle();
if ($this->isPost()) {
$this->answer();

View File

@ -47,18 +47,19 @@ if (!defined('STATUSNET')) {
class ClosechannelAction extends Action
{
protected $channelKey = null;
protected $channel = null;
protected $channel = null;
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
if (!$this->isPost()) {
// TRANS: Client exception. Do not translate POST.
@ -85,11 +86,9 @@ class ClosechannelAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
$this->channel->decrement();

View File

@ -47,18 +47,19 @@ if (!defined('STATUSNET')) {
class KeepalivechannelAction extends Action
{
protected $channelKey = null;
protected $channel = null;
protected $channel = null;
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
if (!$this->isPost()) {
// TRANS: Client exception. Do not translate POST.
@ -85,11 +86,9 @@ class KeepalivechannelAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
*/
function handle($argarray=null)
function handle()
{
$this->channel->touch();

View File

@ -54,13 +54,15 @@ class ConfirmfirstemailAction extends Action
/**
* For initializing members of the class.
*
* @param array $argarray misc. arguments
* @param array $args misc. arguments
*
* @return boolean true
* @throws ClientException
* @throws ServerException
*/
function prepare($argarray)
function prepare(array $args = [])
{
parent::prepare($argarray);
parent::prepare($args);
$user = common_current_user();
if (!empty($user)) {
@ -75,7 +77,6 @@ class ConfirmfirstemailAction extends Action
if (empty($this->confirm)) {
// TRANS: Client exception thrown when trying to register with a non-existing confirmation code.
throw new ClientException(_m('Confirmation code not found.'));
return;
}
$this->user = User::getKV('id', $this->confirm->user_id);
@ -93,7 +94,7 @@ class ConfirmfirstemailAction extends Action
throw new ServerException(sprintf(_m('Unrecognized address type %s.'), $type));
}
if (!empty($this->user->email) && $this->user->email == $confirm->address) {
if (!empty($this->user->email) && $this->user->email == $this->confirm->address) {
// TRANS: Client error for an already confirmed email/jabber/sms address.
throw new ClientException(_m('That address has already been confirmed.'));
}
@ -103,16 +104,14 @@ class ConfirmfirstemailAction extends Action
$this->checkSessionToken();
$password = $this->trimmed('password');
$confirm = $this->trimmed('confirm');
$confirm = $this->trimmed('confirm');
if (strlen($password) < 6) {
// TRANS: Client exception thrown when trying to register with too short a password.
throw new ClientException(_m('Password too short.'));
return;
} else if (0 != strcmp($password, $confirm)) {
// TRANS: Client exception thrown when trying to register without providing the same password twice.
throw new ClientException(_m('Passwords do not match.'));
return;
}
$this->password = $password;
@ -124,14 +123,13 @@ class ConfirmfirstemailAction extends Action
/**
* Handler method
*
* @param array $argarray is ignored since it's now passed in in prepare()
*
* @return void
* @throws AuthorizationException
*/
function handle($argarray=null)
function handle()
{
$homepage = common_local_url('all',
array('nickname' => $this->user->nickname));
array('nickname' => $this->user->nickname));
if ($this->isPost()) {
$this->confirmUser();
@ -167,10 +165,10 @@ class ConfirmfirstemailAction extends Action
function showContent()
{
$this->element('p', 'instructions',
// TRANS: Form instructions. %s is the nickname of the to be registered user.
sprintf(_m('You have confirmed the email address for your new user account %s. '.
'Use the form below to set your new password.'),
$this->user->nickname));
// TRANS: Form instructions. %s is the nickname of the to be registered user.
sprintf(_m('You have confirmed the email address for your new user account %s. ' .
'Use the form below to set your new password.'),
$this->user->nickname));
$form = new ConfirmFirstEmailForm($this, $this->code);
$form->show();
@ -202,7 +200,7 @@ class ConfirmFirstEmailForm extends Form
function action()
{
return common_local_url('confirmfirstemail',
array('code' => $this->code));
array('code' => $this->code));
}
function formClass()
@ -216,14 +214,14 @@ class ConfirmFirstEmailForm extends Form
$this->out->elementStart('li');
// TRANS: Field label.
$this->out->password('password', _m('New password'),
// TRANS: Field title for password field.
_m('6 or more characters.'));
// TRANS: Field title for password field.
_m('6 or more characters.'));
$this->out->elementEnd('li');
$this->out->elementStart('li');
// TRANS: Field label for repeat password field.
$this->out->password('confirm', _m('LABEL','Confirm'),
// TRANS: Field title for repeat password field.
_m('Same as password above.'));
$this->out->password('confirm', _m('LABEL', 'Confirm'),
// TRANS: Field title for repeat password field.
_m('Same as password above.'));
$this->out->elementEnd('li');
$this->out->elementEnd('ul');
}
@ -231,6 +229,6 @@ class ConfirmFirstEmailForm extends Form
function formActions()
{
// TRANS: Button text for completing registration by e-mail.
$this->out->submit('save', _m('BUTTON','Save'));
$this->out->submit('save', _m('BUTTON', 'Save'));
}
}

View File

@ -77,7 +77,7 @@ Plugins are configured using public instance attributes. To set their values,
site administrators use this syntax:
```php
addPlugin('Sample', array('attr1' => 'foo', 'attr2' => 'bar'));
addPlugin('Sample', ('attr1' => 'foo', 'attr2' => 'bar'));
```
The same plugin class can be initialized multiple times with different arguments:
@ -260,11 +260,11 @@ Take arguments for running
This method is called first, and it lets the action class get all its arguments
and validate them. It's also the time to fetch any relevant data from the database.
Action classes should run parent::prepare($args) as the first line of this
method to make sure the default argument-processing happens.
Action classes should run parent::prepare(array $args = []) as the first line
of this method to make sure the default argument-processing happens.
```php
function prepare($args)
function prepare(array $args = [])
{
parent::prepare($args);
@ -286,9 +286,9 @@ should be done in the prepare() method; by the time handle() is called the
action should be more or less ready to go.
```php
function handle($args)
function handle()
{
parent::handle($args);
parent::handle();
$this->showPage();
}