2020-06-07 19:04:43 +03:00
|
|
|
<?php declare(strict_types=1);
|
|
|
|
namespace openvk\Web\Models\Entities;
|
|
|
|
use HTMLPurifier_Config;
|
|
|
|
use HTMLPurifier;
|
|
|
|
|
|
|
|
class Note extends Postable
|
|
|
|
{
|
|
|
|
protected $tableName = "notes";
|
|
|
|
|
|
|
|
protected function renderHTML(): string
|
|
|
|
{
|
|
|
|
$config = HTMLPurifier_Config::createDefault();
|
|
|
|
$config->set("Attr.AllowedClasses", []);
|
|
|
|
$config->set("Attr.DefaultInvalidImageAlt", "Unknown image");
|
|
|
|
$config->set("AutoFormat.AutoParagraph", true);
|
|
|
|
$config->set("AutoFormat.Linkify", true);
|
|
|
|
$config->set("URI.Base", "//$_SERVER[SERVER_NAME]/");
|
|
|
|
$config->set("URI.Munge", "/away.php?xinf=%n.%m:%r&css=%p&to=%s");
|
|
|
|
$config->set("URI.MakeAbsolute", true);
|
|
|
|
$config->set("HTML.Doctype", "XHTML 1.1");
|
|
|
|
$config->set("HTML.TidyLevel", "heavy");
|
|
|
|
$config->set("HTML.AllowedElements", [
|
|
|
|
"div",
|
|
|
|
"h3",
|
|
|
|
"h4",
|
|
|
|
"h5",
|
|
|
|
"h6",
|
|
|
|
"p",
|
|
|
|
"i",
|
|
|
|
"b",
|
|
|
|
"a",
|
|
|
|
"del",
|
|
|
|
"ins",
|
|
|
|
"sup",
|
|
|
|
"sub",
|
|
|
|
"table",
|
|
|
|
"thead",
|
|
|
|
"tbody",
|
|
|
|
"tr",
|
|
|
|
"td",
|
|
|
|
"th",
|
|
|
|
"img",
|
|
|
|
"ul",
|
|
|
|
"ol",
|
|
|
|
"li",
|
|
|
|
"hr",
|
|
|
|
"br",
|
|
|
|
"acronym",
|
|
|
|
"blockquote",
|
|
|
|
"cite",
|
2022-03-23 16:43:17 +03:00
|
|
|
"span",
|
2020-06-07 19:04:43 +03:00
|
|
|
]);
|
|
|
|
$config->set("HTML.AllowedAttributes", [
|
|
|
|
"table.summary",
|
|
|
|
"td.abbr",
|
|
|
|
"th.abbr",
|
|
|
|
"a.href",
|
|
|
|
"img.src",
|
|
|
|
"img.alt",
|
|
|
|
"img.style",
|
|
|
|
"div.style",
|
|
|
|
"div.title",
|
2022-03-23 16:43:17 +03:00
|
|
|
"span.class",
|
|
|
|
"p.class",
|
2020-06-07 19:04:43 +03:00
|
|
|
]);
|
|
|
|
$config->set("CSS.AllowedProperties", [
|
|
|
|
"float",
|
|
|
|
"height",
|
|
|
|
"width",
|
|
|
|
"max-height",
|
|
|
|
"max-width",
|
|
|
|
"font-weight",
|
|
|
|
]);
|
2022-03-23 16:43:17 +03:00
|
|
|
$config->set("Attr.AllowedClasses", [
|
|
|
|
"underline",
|
|
|
|
]);
|
2022-08-19 20:20:09 +03:00
|
|
|
|
|
|
|
$source = NULL;
|
|
|
|
if(is_null($this->getRecord())) {
|
|
|
|
if(isset($this->changes["source"]))
|
|
|
|
$source = $this->changes["source"];
|
|
|
|
else
|
|
|
|
throw new \LogicException("Can't render note without content set.");
|
|
|
|
} else {
|
|
|
|
$source = $this->getRecord()->source;
|
|
|
|
}
|
2020-06-07 19:04:43 +03:00
|
|
|
|
|
|
|
$purifier = new HTMLPurifier($config);
|
2022-08-19 20:20:09 +03:00
|
|
|
return $purifier->purify($source);
|
2020-06-07 19:04:43 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
function getName(): string
|
|
|
|
{
|
|
|
|
return $this->getRecord()->name;
|
|
|
|
}
|
|
|
|
|
|
|
|
function getPreview(int $length = 25): string
|
|
|
|
{
|
|
|
|
return ovk_proc_strtr(strip_tags($this->getRecord()->source), $length);
|
|
|
|
}
|
|
|
|
|
|
|
|
function getText(): string
|
|
|
|
{
|
2022-08-19 20:20:09 +03:00
|
|
|
if(is_null($this->getRecord()))
|
|
|
|
return $this->renderHTML();
|
|
|
|
|
2020-06-07 19:04:43 +03:00
|
|
|
$cached = $this->getRecord()->cached_content;
|
|
|
|
if(!$cached) {
|
|
|
|
$cached = $this->renderHTML();
|
|
|
|
$this->setCached_Content($cached);
|
|
|
|
$this->save();
|
|
|
|
}
|
|
|
|
|
|
|
|
return $cached;
|
|
|
|
}
|
2022-01-26 18:20:10 +03:00
|
|
|
|
|
|
|
function getSource(): string
|
|
|
|
{
|
|
|
|
return $this->getRecord()->source;
|
|
|
|
}
|
VKAPI: методы для подарков, заметок, статусов, обсуждений и немного для фоток и групп (#876)
* API methods for gifts, notes, statuses
* Some fixes
Строки локализации у gifts.send теперь не костыльные и можно прикрепить до 10 аттачей к посту
* Small imp
Пофиксил пагинацию у заметков и подарок
Перенёс структуру заметок
Добавил аттачи к комментариям
Добавил проверку на удалённость аттача
Ну и пофиксил сортировку заметок
* VKAPI: Some methods for topics and photos
Добавлены методы для обсуждений (addTopic, closeTopic(), createComment(), deleteComment(), deleteTopic(), editTopic(), fixTopic(), getComments(), getTopics(), openTopic(), unfixTopic())
и для фотографий (createAlbum(), editAlbum(), getAlbums(), getAlbumsCount(), getById(), get(), deleteAlbum(), edit(), delete(), deleteComment(), createComment(), getAll(), getComments())
* fixsex
2023-06-13 21:03:43 +03:00
|
|
|
|
|
|
|
function toVkApiStruct(): object
|
|
|
|
{
|
|
|
|
$res = (object) [];
|
|
|
|
|
2023-07-05 14:54:58 +03:00
|
|
|
$res->type = "note";
|
2023-08-20 13:55:41 +03:00
|
|
|
$res->id = $this->getVirtualId();
|
VKAPI: методы для подарков, заметок, статусов, обсуждений и немного для фоток и групп (#876)
* API methods for gifts, notes, statuses
* Some fixes
Строки локализации у gifts.send теперь не костыльные и можно прикрепить до 10 аттачей к посту
* Small imp
Пофиксил пагинацию у заметков и подарок
Перенёс структуру заметок
Добавил аттачи к комментариям
Добавил проверку на удалённость аттача
Ну и пофиксил сортировку заметок
* VKAPI: Some methods for topics and photos
Добавлены методы для обсуждений (addTopic, closeTopic(), createComment(), deleteComment(), deleteTopic(), editTopic(), fixTopic(), getComments(), getTopics(), openTopic(), unfixTopic())
и для фотографий (createAlbum(), editAlbum(), getAlbums(), getAlbumsCount(), getById(), get(), deleteAlbum(), edit(), delete(), deleteComment(), createComment(), getAll(), getComments())
* fixsex
2023-06-13 21:03:43 +03:00
|
|
|
$res->owner_id = $this->getOwner()->getId();
|
|
|
|
$res->title = $this->getName();
|
|
|
|
$res->text = $this->getText();
|
|
|
|
$res->date = $this->getPublicationTime()->timestamp();
|
|
|
|
$res->comments = $this->getCommentsCount();
|
|
|
|
$res->read_comments = $this->getCommentsCount();
|
2023-11-14 22:44:39 +03:00
|
|
|
$res->view_url = "/note".$this->getOwner()->getId()."_".$this->getVirtualId();
|
VKAPI: методы для подарков, заметок, статусов, обсуждений и немного для фоток и групп (#876)
* API methods for gifts, notes, statuses
* Some fixes
Строки локализации у gifts.send теперь не костыльные и можно прикрепить до 10 аттачей к посту
* Small imp
Пофиксил пагинацию у заметков и подарок
Перенёс структуру заметок
Добавил аттачи к комментариям
Добавил проверку на удалённость аттача
Ну и пофиксил сортировку заметок
* VKAPI: Some methods for topics and photos
Добавлены методы для обсуждений (addTopic, closeTopic(), createComment(), deleteComment(), deleteTopic(), editTopic(), fixTopic(), getComments(), getTopics(), openTopic(), unfixTopic())
и для фотографий (createAlbum(), editAlbum(), getAlbums(), getAlbumsCount(), getById(), get(), deleteAlbum(), edit(), delete(), deleteComment(), createComment(), getAll(), getComments())
* fixsex
2023-06-13 21:03:43 +03:00
|
|
|
$res->privacy_view = 1;
|
|
|
|
$res->can_comment = 1;
|
|
|
|
$res->text_wiki = "r";
|
|
|
|
|
|
|
|
return $res;
|
|
|
|
}
|
2020-06-07 19:04:43 +03:00
|
|
|
}
|