Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $wire->addHook('Page::summarize', function($event) {
- $fieldName = $event->arguments(0);
- if(!$fieldName) throw new WireException("No field provided");
- // get max length or use 300 as default if none provided
- $maxLength = (int) $event->arguments(1);
- if(!$maxLength) $maxLength = 300;
- $ending = $event->arguments(2);
- if(!$ending) $ending = '…';
- $ending = html_entity_decode($ending);
- if($maxLength <= 0) {
- throw new WireException("The max length cannot be less than or equal to the length of the appended ending");
- }
- $page = $event->object;
- $value = strip_tags(html_entity_decode((string) $page->get($fieldName)));
- if(mb_strlen($value) > $maxLength) {
- $event->return = $value;
- // Subtract length of decoded ending from the maxLength, as this function
- // should return a string no longer than $maxLength, and the ending should
- // be included within that.
- $maxLength -= mb_strlen($ending);
- // Don't cut on a non-alphabetic char
- while(!ctype_alpha($value[$maxLength-1])) {
- $maxLength--;
- if($maxLength <= 0) break;
- }
- $value = mb_substr($value, 0, $maxLength);
- $value .= $ending;
- }
- // if output formatting on, make sure value is entity encoded
- if($page->of()) $value = $event->sanitizer->entities1($value);
- $event->return = $value;
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement