diff --git a/app/Http/Controllers/GigsController.php b/app/Http/Controllers/GigsController.php
index 9610702..0faaf4d 100644
--- a/app/Http/Controllers/GigsController.php
+++ b/app/Http/Controllers/GigsController.php
@@ -9,13 +9,12 @@ class GigsController extends Controller
public function __construct(
private GigsLoader $loader,
) {
-
+ $this->addCssFile('gigs.css');
}
public function index()
{
$events = $this->loader->getEvents();
- $this->addCssFile('gigs.css');
return $this->render('gigs')
->with(compact('events'));
diff --git a/app/Http/Controllers/NewsController.php b/app/Http/Controllers/NewsController.php
new file mode 100644
index 0000000..b6f1942
--- /dev/null
+++ b/app/Http/Controllers/NewsController.php
@@ -0,0 +1,26 @@
+addCssFile('news.css');
+ }
+
+ public function index()
+ {
+ $news = $this->newsLoader->getNews();
+ $this->view->prepareData($news);
+
+
+ return $this->render('news')
+ ->with(compact('news'));
+ }
+}
diff --git a/app/Models/Loaders/NewsLoader.php b/app/Models/Loaders/NewsLoader.php
new file mode 100644
index 0000000..6b81e80
--- /dev/null
+++ b/app/Models/Loaders/NewsLoader.php
@@ -0,0 +1,18 @@
+limit($limit)
+ ->offset($offset)
+ ->get();
+
+ return $data ? $data->toArray() : [];
+ }
+}
diff --git a/app/Models/ORM/News.php b/app/Models/ORM/News.php
new file mode 100644
index 0000000..98f48e1
--- /dev/null
+++ b/app/Models/ORM/News.php
@@ -0,0 +1,11 @@
+",$text);
+ $short = array_slice($tmp,0,1);
+
+ return implode("
",$short);
+ }
+
+ public function longBody(string $text): string
+ {
+ $tmp = explode("
",$text);
+ $long = array_slice($tmp,1);
+
+ return implode("
",$long);
+ }
+
+ public function prepareData(array &$data): void
+ {
+ foreach($data as $index => $row) {
+ if($row['author_type'] === 0) {
+ $keyword = "club";
+ } else {
+ $keyword = "id";
+ }
+
+ if($row['post_type'] === "copy") {
+ $data[$index]['author_link'] = sprintf("%s/%s%d", self::VK_LINK, $keyword, $row['author']);
+ $data[$index]['article_link'] = sprintf("%s/%s%d?w=wall%d_%d",
+ self::VK_LINK, $keyword, $row['author'], $row['author'], $row['copy_post_id']
+ );
+ } else {
+ $data[$index]['author_link'] = sprintf("%s/%s%d", self::VK_LINK, $keyword, $row['author']);
+ $data[$index]['article_link'] = sprintf("%s/%s%d?w=wall%d_%d",
+ self::VK_LINK, $keyword, $row['author'], $row['author'], $row['id']
+ );
+ }
+
+ $data[$index]['body1'] = $this->convertMediaLinks($this->shortBody($row['article']));
+ $data[$index]['body2'] = $this->convertMediaLinks($this->longBody($row['article']));
+ }
+ }
+
+ private function cleanBreaks(string $text): string
+ {
+ return str_replace("
", "
", $text);
+ }
+
+ public function convertMediaLinks(string $link): string
+ {
+ $pattern = '/(http|https):\/\/(\S+)/i';
+ $replacement = '$0';
+ $res = preg_replace($pattern,$replacement,$link);
+
+ $pattern = '/\[([^\[\]\|]+)\|([^\[\]\|]+)\]/i';
+ $replacement = sprintf('$2', self::VK_LINK);
+ $res = preg_replace($pattern,$replacement,$res);
+
+ #https://vk.com/feed?q=%23ledstarband§ion=search
+ $pattern = '/\#(\S+)/i';
+ $replacement = '$0';
+ $res = preg_replace($pattern, $replacement, $res);
+
+ return $res;
+ }
+}
diff --git a/resources/views/band.blade.php b/resources/views/band.blade.php
index 91a0b8b..8168792 100644
--- a/resources/views/band.blade.php
+++ b/resources/views/band.blade.php
@@ -24,6 +24,6 @@
@section('breadcrump')