Преглед изворни кода

Empty title guid or first words (#6240)

* settings

* add comments for better understanding

* Update reading.phtml

* overhaul the code

* i18n

* typo

* add a constant to configure the amount of chars

* fix

* simplify

* Update Entry.php

* clean

* Update Entry.php

* Update app/Models/Entry.php

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

* Update constants.php

* Update app/Models/Entry.php

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
maTh пре 1 година
родитељ
комит
fec9e53d0e
3 измењених фајлова са 25 додато и 1 уклоњено
  1. 21 1
      app/Models/Entry.php
  2. 1 0
      app/views/configure/reading.phtml
  3. 3 0
      constants.php

+ 21 - 1
app/Models/Entry.php

@@ -117,7 +117,27 @@ class FreshRSS_Entry extends Minz_Model {
 		return $this->guid;
 	}
 	public function title(): string {
-		return $this->title == '' ? $this->guid() : $this->title;
+		$title = '';
+
+		if ($this->title === '') {
+			// used while fetching the article from feed and store it in the database
+			$title = $this->guid();
+		} else {
+			// used while fetching from the database
+			if ($this->title !== $this->guid) {
+				$title = $this->title;
+			} else {
+				$content = trim(strip_tags($this->content(false)));
+				$title = trim(mb_substr($content, 0, MAX_CHARS_EMPTY_FEED_TITLE, 'UTF-8'));
+
+				if ($title === '') {
+					$title = $this->guid();
+				} elseif (strlen($content) > strlen($title)) {
+					$title .= '…';
+				}
+			}
+		}
+		return $title;
 	}
 	/** @deprecated */
 	public function author(): string {

+ 1 - 0
app/views/configure/reading.phtml

@@ -124,6 +124,7 @@
 					</select>
 				</div>
 			</div>
+
 			<div class="form-group">
 				<label class="group-name" for="show_author_date"><?= _t('conf.reading.article.authors_date') ?></label>
 				<div class="group-controls">

+ 3 - 0
constants.php

@@ -40,6 +40,9 @@ defined('COPY_SYSLOG_TO_STDERR') or define('COPY_SYSLOG_TO_STDERR', filter_var(g
 // Maximum log file size in Bytes, before it will be divided by two
 defined('MAX_LOG_SIZE') or define('MAX_LOG_SIZE', 1048576);
 
+// Amount of characters of text shown if feed has no title
+defined('MAX_CHARS_EMPTY_FEED_TITLE') or define('MAX_CHARS_EMPTY_FEED_TITLE', 75);
+
 //This directory must be writable
 $dataPath = getenv('DATA_PATH');
 if (is_string($dataPath) && $dataPath !== '') {