From: Diogo Cordeiro Date: Thu, 25 Apr 2019 23:34:17 +0000 (+0100) Subject: Various obvious bug fixes and better PHP 7 support X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=7967db6ff5;p=quix0rs-gnu-social.git Various obvious bug fixes and better PHP 7 support Many of these came from a XRevan86 patch --- diff --git a/actions/deleteaccount.php b/actions/deleteaccount.php index 8b80c6c6f2..4450ba0fc2 100644 --- a/actions/deleteaccount.php +++ b/actions/deleteaccount.php @@ -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,59 +83,19 @@ 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 true if read only. - * - * MAY override - * - * @param array $args other arguments - * - * @return boolean is read only action? - */ - function isReadOnly($args) - { - return false; - } - - /** - * Return last modified, if applicable. - * - * MAY override - * - * @return string last modified http header - */ - function lastModified() - { - // For comparison with If-Last-Modified - // If not applicable, return null - return null; - } - - /** - * Return etag, if applicable. - * - * MAY override - * - * @return string etag http header - */ - function etag() - { return null; } @@ -151,6 +111,8 @@ class DeleteaccountAction extends Action * If successful it logs the user out, and shows a brief completion message. * * @return void + * @throws AuthorizationException + * @throws ServerException */ function deleteAccount() { @@ -158,12 +120,12 @@ class DeleteaccountAction extends Action // !!! 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 ) { + 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; + return null; } $cur = common_current_user(); @@ -188,6 +150,46 @@ class DeleteaccountAction extends Action $this->showPage(); } + /** + * Return true if read only. + * + * MAY override + * + * @param array $args other arguments + * + * @return boolean is read only action? + */ + function isReadOnly($args) + { + return false; + } + + /** + * Return last modified, if applicable. + * + * MAY override + * + * @return string last modified http header + */ + function lastModified() + { + // For comparison with If-Last-Modified + // If not applicable, return null + return null; + } + + /** + * Return etag, if applicable. + * + * MAY override + * + * @return string etag http header + */ + function etag() + { + return null; + } + /** * 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 = '

' . _('This will permanently delete '. - 'your account data from this server.') . '

'; + $msg = '

' . _('This will permanently delete your account data from this server.') . '

'; 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 .= '

' . sprintf(_('You are strongly advised to '. - 'back up your data'. - ' before deletion.'), - common_local_url('backupaccount')) . '

'; + $msg .= '

' . sprintf(_('You are strongly advised to back up your data before deletion.'), + common_local_url('backupaccount')) . '

'; } $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.')); } } diff --git a/actions/restoreaccount.php b/actions/restoreaccount.php index 81c792bd00..c64de94370 100644 --- a/actions/restoreaccount.php +++ b/actions/restoreaccount.php @@ -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! diff --git a/actions/selftag.php b/actions/selftag.php index 2df1a29253..2fb3b49078 100644 --- a/actions/selftag.php +++ b/actions/selftag.php @@ -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(); diff --git a/plugins/ActivitySpam/actions/spam.php b/plugins/ActivitySpam/actions/spam.php index fa2e5737c7..1e2c2c5eb7 100644 --- a/plugins/ActivitySpam/actions/spam.php +++ b/plugins/ActivitySpam/actions/spam.php @@ -4,7 +4,7 @@ * Copyright (C) 2012, StatusNet, Inc. * * Stream of latest spam messages - * + * * PHP version 5 * * This program is free software: you can redistribute it and/or modify @@ -34,13 +34,13 @@ if (!defined('STATUSNET')) { exit(1); } -require_once INSTALLDIR.'/lib/noticelist.php'; +require_once INSTALLDIR . '/lib/noticelist.php'; /** * SpamAction - * + * * Shows the latest spam on the service - * + * * @category Spam * @package StatusNet * @author Evan Prodromou @@ -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(); @@ -130,10 +129,10 @@ class SpamAction extends Action $this->showEmptyList(); } - $this->pagination($this->page > 1, - $cnt > NOTICES_PER_PAGE, - $this->page, - 'spam'); + $this->pagination($this->page > 1, + $cnt > NOTICES_PER_PAGE, + $this->page, + 'spam'); } function showEmptyList() diff --git a/plugins/ActivitySpam/actions/train.php b/plugins/ActivitySpam/actions/train.php index 0719c36550..c0df1c4169 100644 --- a/plugins/ActivitySpam/actions/train.php +++ b/plugins/ActivitySpam/actions/train.php @@ -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 diff --git a/plugins/ActivitySpam/classes/spam_score.php b/plugins/ActivitySpam/classes/spam_score.php index 5c583a2e07..36e03aa9a8 100644 --- a/plugins/ActivitySpam/classes/spam_score.php +++ b/plugins/ActivitySpam/classes/spam_score.php @@ -1,32 +1,32 @@ . - * - * @category Spam - * @package StatusNet - * @author Evan Prodromou - * @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 . + * + * @category Spam + * @package StatusNet + * @author Evan Prodromou + * @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) { - - $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) { + public static 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)) { @@ -94,19 +76,12 @@ class Spam_score extends Managed_DataObject } else { $score->update($orig); } - + self::blow('spam_score:notice_ids'); 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( @@ -153,7 +128,7 @@ class Spam_score extends Managed_DataObject { $score = new Spam_score(); $score->whereAdd('scaled IS NULL'); - + if ($score->find()) { while ($score->fetch()) { $orig = clone($score); @@ -167,7 +142,7 @@ class Spam_score extends Managed_DataObject { $score = new Spam_score(); $score->whereAdd('is_spam IS NULL'); - + if ($score->find()) { while ($score->fetch()) { $orig = clone($score); @@ -181,7 +156,7 @@ class Spam_score extends Managed_DataObject { $score = new Spam_score(); $score->whereAdd('notice_created IS NULL'); - + if ($score->find()) { while ($score->fetch()) { $notice = Notice::getKV('id', $score->notice_id); @@ -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); + } } diff --git a/plugins/Bookmark/actions/importdelicious.php b/plugins/Bookmark/actions/importdelicious.php index 85a63e8470..2372428cff 100644 --- a/plugins/Bookmark/actions/importdelicious.php +++ b/plugins/Bookmark/actions/importdelicious.php @@ -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.')); } } diff --git a/plugins/Bookmark/actions/noticebyurl.php b/plugins/Bookmark/actions/noticebyurl.php index d5f9940805..6537eeda8b 100644 --- a/plugins/Bookmark/actions/noticebyurl.php +++ b/plugins/Bookmark/actions/noticebyurl.php @@ -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(); } diff --git a/plugins/DomainStatusNetwork/actions/globallogin.php b/plugins/DomainStatusNetwork/actions/globallogin.php index f843392f44..1a72389f87 100644 --- a/plugins/DomainStatusNetwork/actions/globallogin.php +++ b/plugins/DomainStatusNetwork/actions/globallogin.php @@ -4,7 +4,7 @@ * Copyright (C) 2011, StatusNet, Inc. * * Log into a site globally - * + * * PHP version 5 * * This program is free software: you can redistribute it and/or modify @@ -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) { diff --git a/plugins/DomainStatusNetwork/actions/globalrecover.php b/plugins/DomainStatusNetwork/actions/globalrecover.php index 9b688cbe70..cc45782e12 100644 --- a/plugins/DomainStatusNetwork/actions/globalrecover.php +++ b/plugins/DomainStatusNetwork/actions/globalrecover.php @@ -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) { diff --git a/plugins/DomainStatusNetwork/actions/globalregister.php b/plugins/DomainStatusNetwork/actions/globalregister.php index 1e34261099..d7bd523cda 100644 --- a/plugins/DomainStatusNetwork/actions/globalregister.php +++ b/plugins/DomainStatusNetwork/actions/globalregister.php @@ -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); diff --git a/plugins/EmailRegistration/actions/emailregister.php b/plugins/EmailRegistration/actions/emailregister.php index d10b65c387..e7ac109a80 100644 --- a/plugins/EmailRegistration/actions/emailregister.php +++ b/plugins/EmailRegistration/actions/emailregister.php @@ -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 * diff --git a/plugins/GroupPrivateMessage/actions/groupinbox.php b/plugins/GroupPrivateMessage/actions/groupinbox.php index f4656bfd8e..d4409237ce 100644 --- a/plugins/GroupPrivateMessage/actions/groupinbox.php +++ b/plugins/GroupPrivateMessage/actions/groupinbox.php @@ -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'); diff --git a/plugins/GroupPrivateMessage/actions/newgroupmessage.php b/plugins/GroupPrivateMessage/actions/newgroupmessage.php index be6a3cd86b..2edc5aa91d 100644 --- a/plugins/GroupPrivateMessage/actions/newgroupmessage.php +++ b/plugins/GroupPrivateMessage/actions/newgroupmessage.php @@ -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. diff --git a/plugins/GroupPrivateMessage/actions/showgroupmessage.php b/plugins/GroupPrivateMessage/actions/showgroupmessage.php index 4c2e7a71f6..bd0a7e5583 100644 --- a/plugins/GroupPrivateMessage/actions/showgroupmessage.php +++ b/plugins/GroupPrivateMessage/actions/showgroupmessage.php @@ -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)) . '"'; } } diff --git a/plugins/Poll/actions/newpoll.php b/plugins/Poll/actions/newpoll.php index b097553498..045b895e29 100644 --- a/plugins/Poll/actions/newpoll.php +++ b/plugins/Poll/actions/newpoll.php @@ -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(); diff --git a/plugins/Poll/actions/respondpoll.php b/plugins/Poll/actions/respondpoll.php index 02aec67830..a93e71fc82 100644 --- a/plugins/Poll/actions/respondpoll.php +++ b/plugins/Poll/actions/respondpoll.php @@ -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(); diff --git a/plugins/QnA/actions/qnaclosequestion.php b/plugins/QnA/actions/qnaclosequestion.php index 5c5e0f8467..4c2abb6536 100644 --- a/plugins/QnA/actions/qnaclosequestion.php +++ b/plugins/QnA/actions/qnaclosequestion.php @@ -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(); diff --git a/plugins/QnA/actions/qnanewanswer.php b/plugins/QnA/actions/qnanewanswer.php index 0cdaa62f19..4adda40650 100644 --- a/plugins/QnA/actions/qnanewanswer.php +++ b/plugins/QnA/actions/qnanewanswer.php @@ -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'); diff --git a/plugins/QnA/actions/qnanewquestion.php b/plugins/QnA/actions/qnanewquestion.php index 79ef3a6eb0..27d8081cba 100644 --- a/plugins/QnA/actions/qnanewquestion.php +++ b/plugins/QnA/actions/qnanewquestion.php @@ -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); } diff --git a/plugins/QnA/actions/qnareviseanswer.php b/plugins/QnA/actions/qnareviseanswer.php index ae9644a7e0..e23195531f 100644 --- a/plugins/QnA/actions/qnareviseanswer.php +++ b/plugins/QnA/actions/qnareviseanswer.php @@ -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(); @@ -135,39 +134,38 @@ class QnareviseanswerAction extends Action } /** - * Revise the answer + * Show the revise answer form * * @return void */ - function reviseAnswer() + function showContent() { - $answer = $this->answer; - - try { - $orig = clone($answer); - $answer->content = $this->answerText; - $answer->revisions++; - $result = $answer->update($orig); - } catch (ClientException $ce) { - $this->error = $ce->getMessage(); - $this->showPage(); - return; + if (!empty($this->error)) { + $this->element('p', 'error', $this->error); } + 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(); + $this->showAjaxReviseForm(); } else { - common_redirect($this->answer->getUrl(), 303); + $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(); } /** @@ -178,7 +176,7 @@ class QnareviseanswerAction extends Action function markBest() { $question = $this->question; - $answer = $this->answer; + $answer = $this->answer; try { // close the question to further answers @@ -213,38 +211,39 @@ class QnareviseanswerAction extends Action } /** - * Show the revise answer form + * Revise the answer * * @return void */ - function showContent() + function reviseAnswer() { - if (!empty($this->error)) { - $this->element('p', 'error', $this->error); - } + $answer = $this->answer; + try { + $orig = clone($answer); + $answer->content = $this->answerText; + $answer->revisions++; + $result = $answer->update($orig); + } catch (ClientException $ce) { + $this->error = $ce->getMessage(); + $this->showPage(); + return; + } if ($this->boolean('ajax')) { - $this->showAjaxReviseForm(); - } else { - $form = new QnareviseanswerForm($this->answer, $this); + 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); } - - 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(); } /** diff --git a/plugins/QnA/actions/qnashowanswer.php b/plugins/QnA/actions/qnashowanswer.php index ab432d97d9..d2c6443f41 100644 --- a/plugins/QnA/actions/qnashowanswer.php +++ b/plugins/QnA/actions/qnashowanswer.php @@ -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 diff --git a/plugins/QnA/actions/qnashowquestion.php b/plugins/QnA/actions/qnashowquestion.php index cc8f98448a..63d175e515 100644 --- a/plugins/QnA/actions/qnashowquestion.php +++ b/plugins/QnA/actions/qnashowquestion.php @@ -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 diff --git a/plugins/QnA/actions/qnavote.php b/plugins/QnA/actions/qnavote.php index 5531b3124b..1ab2d6e56d 100644 --- a/plugins/QnA/actions/qnavote.php +++ b/plugins/QnA/actions/qnavote.php @@ -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(); diff --git a/plugins/Realtime/actions/closechannel.php b/plugins/Realtime/actions/closechannel.php index ee092ce2bc..d9a9df60a2 100644 --- a/plugins/Realtime/actions/closechannel.php +++ b/plugins/Realtime/actions/closechannel.php @@ -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(); diff --git a/plugins/Realtime/actions/keepalivechannel.php b/plugins/Realtime/actions/keepalivechannel.php index e9319ed916..a2a4301d43 100644 --- a/plugins/Realtime/actions/keepalivechannel.php +++ b/plugins/Realtime/actions/keepalivechannel.php @@ -4,7 +4,7 @@ * Copyright (C) 2011, StatusNet, Inc. * * action periodically pinged by a page to keep a channel alive - * + * * PHP version 5 * * This program is free software: you can redistribute it and/or modify @@ -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(); diff --git a/plugins/RequireValidatedEmail/actions/confirmfirstemail.php b/plugins/RequireValidatedEmail/actions/confirmfirstemail.php index d0d1893739..fa25011e69 100644 --- a/plugins/RequireValidatedEmail/actions/confirmfirstemail.php +++ b/plugins/RequireValidatedEmail/actions/confirmfirstemail.php @@ -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')); } } diff --git a/plugins/doc/Plugin_development.md b/plugins/doc/Plugin_development.md index c74b93faeb..418cdb39e3 100644 --- a/plugins/doc/Plugin_development.md +++ b/plugins/doc/Plugin_development.md @@ -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(); }