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", "span", ]); $config->set("HTML.AllowedAttributes", [ "table.summary", "td.abbr", "th.abbr", "a.href", "img.src", "img.alt", "img.style", "div.style", "div.title", "span.class", "p.class", ]); $config->set("CSS.AllowedProperties", [ "float", "height", "width", "max-height", "max-width", "font-weight", ]); $config->set("Attr.AllowedClasses", [ "underline", ]); $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; } $purifier = new HTMLPurifier($config); return $purifier->purify($source); } 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 { if(is_null($this->getRecord())) return $this->renderHTML(); $cached = $this->getRecord()->cached_content; if(!$cached) { $cached = $this->renderHTML(); $this->setCached_Content($cached); $this->save(); } return $cached; } function getSource(): string { return $this->getRecord()->source; } function toVkApiStruct(): object { $res = (object) []; $res->type = "note"; $res->id = $this->getVirtualId(); $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(); $res->view_url = "/note".$this->getOwner()->getId()."_".$this->getId(); $res->privacy_view = 1; $res->can_comment = 1; $res->text_wiki = "r"; return $res; } }