use Friendica\BaseObject;
use Friendica\Content\ContactSelector;
use Friendica\Content\Feature;
+use Friendica\Content\Item as ContentItem;
use Friendica\Content\Pager;
use Friendica\Content\Text\BBCode;
use Friendica\Core\Config;
$body = Item::prepareBody($item, true, $preview);
- list($categories, $folders) = get_cats_and_terms($item);
+ /** @var ContentItem $contItem */
+ $contItem = BaseObject::getClass(ContentItem::class);
+
+ list($categories, $folders) = $contItem->determineCategoriesTerms($item);
if (!empty($item['content-warning']) && PConfig::get(local_user(), 'system', 'disable_cw', false)) {
$title = ucfirst($item['content-warning']);
+++ /dev/null
-<?php
-/**
- * @file include/text.php
- */
-
-use Friendica\Model\FileTag;
-
-/**
- * return array with details for categories and folders for an item
- *
- * @param array $item
- * @return array
- *
- * [
- * [ // categories array
- * {
- * 'name': 'category name',
- * 'removeurl': 'url to remove this category',
- * 'first': 'is the first in this array? true/false',
- * 'last': 'is the last in this array? true/false',
- * } ,
- * ....
- * ],
- * [ //folders array
- * {
- * 'name': 'folder name',
- * 'removeurl': 'url to remove this folder',
- * 'first': 'is the first in this array? true/false',
- * 'last': 'is the last in this array? true/false',
- * } ,
- * ....
- * ]
- * ]
- */
-function get_cats_and_terms($item)
-{
- $categories = [];
- $folders = [];
- $first = true;
-
- foreach (FileTag::fileToArray($item['file'] ?? '', 'category') as $savedFolderName) {
- $categories[] = [
- 'name' => $savedFolderName,
- 'url' => "#",
- 'removeurl' => ((local_user() == $item['uid']) ? 'filerm/' . $item['id'] . '?f=&cat=' . rawurlencode($savedFolderName) : ""),
- 'first' => $first,
- 'last' => false
- ];
- $first = false;
- }
-
- if (count($categories)) {
- $categories[count($categories) - 1]['last'] = true;
- }
-
- if (local_user() == $item['uid']) {
- foreach (FileTag::fileToArray($item['file'] ?? '') as $savedFolderName) {
- $folders[] = [
- 'name' => $savedFolderName,
- 'url' => "#",
- 'removeurl' => ((local_user() == $item['uid']) ? 'filerm/' . $item['id'] . '?f=&term=' . rawurlencode($savedFolderName) : ""),
- 'first' => $first,
- 'last' => false
- ];
- $first = false;
- }
- }
-
- if (count($folders)) {
- $folders[count($folders) - 1]['last'] = true;
- }
-
- return [$categories, $folders];
-}
--- /dev/null
+<?php
+
+namespace Friendica\Content;
+
+use Friendica\Model\FileTag;
+
+/**
+ * A content helper class for displaying items
+ */
+final class Item
+{
+ /**
+ * Return array with details for categories and folders for an item
+ *
+ * @param array $item
+ * @return [array, array]
+ *
+ * [
+ * [ // categories array
+ * {
+ * 'name': 'category name',
+ * 'removeurl': 'url to remove this category',
+ * 'first': 'is the first in this array? true/false',
+ * 'last': 'is the last in this array? true/false',
+ * } ,
+ * ....
+ * ],
+ * [ //folders array
+ * {
+ * 'name': 'folder name',
+ * 'removeurl': 'url to remove this folder',
+ * 'first': 'is the first in this array? true/false',
+ * 'last': 'is the last in this array? true/false',
+ * } ,
+ * ....
+ * ]
+ * ]
+ */
+ public function determineCategoriesTerms(array $item)
+ {
+ $categories = [];
+ $folders = [];
+ $first = true;
+
+ foreach (FileTag::fileToArray($item['file'] ?? '', 'category') as $savedFolderName) {
+ $categories[] = [
+ 'name' => $savedFolderName,
+ 'url' => "#",
+ 'removeurl' => ((local_user() == $item['uid']) ? 'filerm/' . $item['id'] . '?f=&cat=' . rawurlencode($savedFolderName) : ""),
+ 'first' => $first,
+ 'last' => false
+ ];
+ $first = false;
+ }
+
+ if (count($categories)) {
+ $categories[count($categories) - 1]['last'] = true;
+ }
+
+ if (local_user() == $item['uid']) {
+ foreach (FileTag::fileToArray($item['file'] ?? '') as $savedFolderName) {
+ $folders[] = [
+ 'name' => $savedFolderName,
+ 'url' => "#",
+ 'removeurl' => ((local_user() == $item['uid']) ? 'filerm/' . $item['id'] . '?f=&term=' . rawurlencode($savedFolderName) : ""),
+ 'first' => $first,
+ 'last' => false
+ ];
+ $first = false;
+ }
+ }
+
+ if (count($folders)) {
+ $folders[count($folders) - 1]['last'] = true;
+ }
+
+ return [$categories, $folders];
+ }
+}
use Friendica\BaseObject;
use Friendica\Content\ContactSelector;
use Friendica\Content\Feature;
+use Friendica\Content\Item as ContentItem;
use Friendica\Core\Addon;
use Friendica\Core\Config;
use Friendica\Core\Hook;
$body = Item::prepareBody($item, true);
- list($categories, $folders) = get_cats_and_terms($item);
+ /** @var ContentItem $contItem */
+ $contItem = self::getClass(ContentItem::class);
+
+ list($categories, $folders) = $contItem->determineCategoriesTerms($item);
$body_e = $body;
$text_e = strip_tags($body);
--- /dev/null
+<?php
+
+namespace Friendica\Test\src\Content;
+
+use Friendica\Test\MockedTest;
+
+class ItemTest extends MockedTest
+{
+ public function testDetermineCategoriesTerms()
+ {
+ $this->markTestIncomplete('Test data needed.');
+ }
+}