/** * Test collection */ public function testCollection() { $object = new Footnotes(); $object->addItem(new Footnote()); // addItem #1 $this->assertEquals(2, $object->addItem(new Footnote())); // addItem #2. Should returns new item index $this->assertCount(2, $object->getItems()); // getItems returns array $this->assertInstanceOf('PhpOffice\\PhpWord\\Element\\Footnote', $object->getItem(1)); // getItem returns object $this->assertNull($object->getItem(3)); // getItem returns null when invalid index is referenced $object->setItem(2, null); // Set item #2 to null $this->assertNull($object->getItem(2)); // Check if it's null }
<?php // Footnotes field method: $page->text()->footnotes()->kt() field::$methods['footnotes'] = function ($field, $convert = true) { $footnotes = new Footnotes($field->value, $field->page); $field->value = $convert ? $footnotes->process() : $footnotes->remove(); return $field; }; // Kirbytext pre-filter (if option 'footnotes.global' is true) if (c::get('footnotes.global', false)) { kirbytext::$post[] = function ($kirbytext, $value) { global $page; $footnotes = new Footnotes($value, kirby()->site()->activePage()); return $footnotes->process($page); }; } /** * Footnotes class */ class Footnotes { public $text = ''; public $page = null; private $matches = null; private $entries = ''; private $templates = null; private $regexFootnote = '/\\[(\\d+\\..*?)\\]/s'; private $regexContent = '/\\[\\d+\\.(.*?)\\]/s'; public function __construct($text, $page) { $this->text = $text;