dbFields = array( 'defaultImage' => '', 'twitterSite' => '', 'twitterCreator' => '' ); } public function form() { global $L; $html = ''; $html .= '
'; $html .= ''; $html .= ''; $html .= '

' . $L->get('minimum-image-dimensions') . ' ' . $L->get('image-must-be-less') . ' ' . $L->get('formats-are-supported') . '

'; $html .= '
'; $html .= '
'; $html .= ''; $html .= ''; $html .= '
'; $html .= '
'; $html .= ''; $html .= ''; $html .= '
'; return $html; } public function siteHead() { global $url; global $site; global $WHERE_AM_I; global $content; global $page; $data = array( 'card' => 'summary_large_image', 'twitterSite' => $this->getValue('twitterSite'), 'twitterCreator' => $this->getValue('twitterCreator'), 'title' => $site->title(), 'description' => $site->description(), 'image' => '' ); switch( $WHERE_AM_I ) { // The user filter by page case 'page': $data['title'] = $page->title(); $data['description'] = $page->description(); $data['image'] = $page->coverImage( $absolute = true ); $pageContent = $page->content(); break; // The user is in the homepage default: $pageContent = ''; // The image it's from the first page if(isset($content[0]) ) { $data['image'] = $content[0]->coverImage( $absolute = true ); $pageContent = $content[0]->content(); } break; } $html = PHP_EOL.''.PHP_EOL; $html .= ''.PHP_EOL; $html .= ''.PHP_EOL; $html .= ''.PHP_EOL; $html .= ''.PHP_EOL; // If the page doesn't have a description try to get excerpt from content if( empty( $data['description'] ) ) { $data['description'] = $this->content_excerpt( $pageContent , 150, '...'); } $html .= ''.PHP_EOL; // If the page doesn't have a coverImage try to get an image from the HTML content if( empty( $data['image'] ) ) { // Get the image from the content $src = DOM::getFirstImage( $pageContent ); if ( $src !== false ) { $data['image'] = $src; } else { if ( Text::isNotEmpty( $this->getValue('defaultImage') ) ) { $data['image'] = $this->getValue('defaultImage'); } } } $html .= ''.PHP_EOL; $html .= ''.PHP_EOL.PHP_EOL; unset( $pageContent ); unset( $data ); return $html; } /** Return excerpt from full content of post * * @param string $str Post content * @param int $n Number of characters * @param string $endChar End char append to after excerpt (default "...") * @return string */ private function content_excerpt( string $str, int $n = 500, string $endChar = '…' ): string { $str = strip_tags( $str ); if ( mb_strlen( $str ) < $n ) { return $str; } $str = preg_replace('/ {2,}/', ' ', str_replace(["\r", "\n", "\t", "\x0B", "\x0C"], ' ', $str)); if ( mb_strlen( $str ) <= $n ) { return $str; } $out = ''; foreach ( explode( ' ', trim( $str ) ) as $val ) { $out .= $val . ' '; if ( mb_strlen( $out ) >= $n ) { $out = trim( $out ); break; } } return ( mb_strlen( $out ) === mb_strlen( $str ) ) ? $out : $out . $endChar; } }