wiki.techinc.nl/includes/search/SearchSuggestion.php
Thiemo Kreuz 2ba01c7ee7 Remove some more comments that literally repeat the code
… including PHPDoc tags like `@return <type> $variableName`.
A return value doesn't have a variable name. I can see that
some people do this intentionally, repeating the variable
name that was used in the final `return $var;` at the end
of a method. This can indeed be helpful. I leave a lot of
these untouched and removed them only when it's obviously
wrong, or does not provide any additional information in
addition to what the code already says.

Change-Id: Ia18cd9f25ef658b08ad25b97a744897e2a8deffc
2021-06-18 21:23:56 +00:00

182 lines
4.3 KiB
PHP

<?php
/**
* Search suggestion
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*/
/**
* A search suggestion
*/
class SearchSuggestion {
/**
* @var string the suggestion
*/
private $text;
/**
* @var string the suggestion URL
*/
private $url;
/**
* @var Title|null
*/
private $suggestedTitle;
/**
* NOTE: even if suggestedTitle is a redirect suggestedTitleID
* is the ID of the target page.
* @var int|null the suggested title ID
*/
private $suggestedTitleID;
/**
* @var float|null The suggestion score
*/
private $score;
/**
* @param float $score the suggestion score
* @param string|null $text the suggestion text
* @param Title|null $suggestedTitle the suggested title
* @param int|null $suggestedTitleID the suggested title ID
*/
public function __construct( $score, $text = null, Title $suggestedTitle = null,
$suggestedTitleID = null ) {
$this->score = $score;
$this->text = $text;
if ( $suggestedTitle ) {
$this->setSuggestedTitle( $suggestedTitle );
}
$this->suggestedTitleID = $suggestedTitleID;
}
/**
* The suggestion text
* @return string
*/
public function getText() {
return $this->text;
}
/**
* Set the suggestion text.
* @param string $text
* @param bool $setTitle Should we also update the title?
*/
public function setText( $text, $setTitle = true ) {
$this->text = $text;
if ( $setTitle && $text !== '' && $text !== null ) {
$this->setSuggestedTitle( Title::makeTitle( 0, $text ) );
}
}
/**
* Title object in the case this suggestion is based on a title.
* May return null if the suggestion is not a Title.
* @return Title|null
*/
public function getSuggestedTitle() {
return $this->suggestedTitle;
}
/**
* @param Title|null $title
*/
public function setSuggestedTitle( Title $title = null ) {
$this->suggestedTitle = $title;
if ( $title !== null ) {
$this->url = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
}
}
/**
* Title ID in the case this suggestion is based on a title.
* May return null if the suggestion is not a Title.
* @return int|null
*/
public function getSuggestedTitleID() {
return $this->suggestedTitleID;
}
/**
* @param int|null $suggestedTitleID
*/
public function setSuggestedTitleID( $suggestedTitleID = null ) {
$this->suggestedTitleID = $suggestedTitleID;
}
/**
* Suggestion score
* @return float Suggestion score
*/
public function getScore() {
return $this->score;
}
/**
* Set the suggestion score
* @param float $score
*/
public function setScore( $score ) {
$this->score = $score;
}
/**
* Suggestion URL, can be the link to the Title or maybe in the
* future a link to the search results for this search suggestion.
* @return string Suggestion URL
*/
public function getURL() {
return $this->url;
}
/**
* Set the suggestion URL
* @param string $url
*/
public function setURL( $url ) {
$this->url = $url;
}
/**
* Create suggestion from Title
* @param float $score Suggestions score
* @param Title $title
* @return SearchSuggestion
*/
public static function fromTitle( $score, Title $title ) {
return new self( $score, $title->getPrefixedText(), $title, $title->getArticleID() );
}
/**
* Create suggestion from text
* Will also create a title if text if not empty.
* @param float $score Suggestions score
* @param string $text
* @return SearchSuggestion
*/
public static function fromText( $score, $text ) {
$suggestion = new self( $score, $text );
if ( $text ) {
$suggestion->setSuggestedTitle( Title::newFromText( $text ) );
}
return $suggestion;
}
}