104fd306cSNickeau<?php 204fd306cSNickeau 304fd306cSNickeaunamespace ComboStrap; 404fd306cSNickeau 504fd306cSNickeau/** 604fd306cSNickeau * 704fd306cSNickeau * 804fd306cSNickeau */ 904fd306cSNickeauclass EditButtonManager 1004fd306cSNickeau{ 1104fd306cSNickeau 1204fd306cSNickeau 1304fd306cSNickeau /** 1404fd306cSNickeau * @var array Hold the actual edit button manager 1504fd306cSNickeau */ 1604fd306cSNickeau private static $editButtonManagers; 1704fd306cSNickeau 1804fd306cSNickeau /** 1904fd306cSNickeau * @var EditButton[] 2004fd306cSNickeau */ 2104fd306cSNickeau private $editButtonStack; 2204fd306cSNickeau 2304fd306cSNickeau static function getOrCreate(): EditButtonManager 2404fd306cSNickeau { 2504fd306cSNickeau 2604fd306cSNickeau $page = MarkupPath::createFromRequestedPage(); 2704fd306cSNickeau $cacheKey = $page->getWikiId(); 28*70bbd7f1Sgerardnico $editButtonManager = self::$editButtonManagers[$cacheKey] ?? null; 2904fd306cSNickeau if ($editButtonManager === null) { 3004fd306cSNickeau // new run, delete all old cache managers 3104fd306cSNickeau self::$editButtonManagers = []; 3204fd306cSNickeau // create 3304fd306cSNickeau $editButtonManager = new EditButtonManager(); 3404fd306cSNickeau self::$editButtonManagers[$cacheKey] = $editButtonManager; 3504fd306cSNickeau } 3604fd306cSNickeau return $editButtonManager; 3704fd306cSNickeau } 3804fd306cSNickeau 3904fd306cSNickeau /** 4004fd306cSNickeau * @param $name 4104fd306cSNickeau * @param $startPosition 4204fd306cSNickeau * @return EditButton 4304fd306cSNickeau */ 4404fd306cSNickeau public function createAndAddEditButtonToStack($name, $startPosition): EditButton 4504fd306cSNickeau { 4604fd306cSNickeau 4704fd306cSNickeau 4804fd306cSNickeau if (empty($startPosition)) { 4904fd306cSNickeau LogUtility::msg("The position for a start section should not be empty", LogUtility::LVL_MSG_ERROR, "support"); 5004fd306cSNickeau } 5104fd306cSNickeau if (empty($name)) { 5204fd306cSNickeau LogUtility::msg("The name for a start section should not be empty", LogUtility::LVL_MSG_ERROR, "support"); 5304fd306cSNickeau } 5404fd306cSNickeau 5504fd306cSNickeau $editButton = EditButton::create($name) 5604fd306cSNickeau ->setStartPosition($startPosition); 5704fd306cSNickeau $this->editButtonStack[] = $editButton; 5804fd306cSNickeau return $editButton; 5904fd306cSNickeau 6004fd306cSNickeau } 6104fd306cSNickeau 6204fd306cSNickeau public function popEditButtonFromStack($endPosition): ?EditButton 6304fd306cSNickeau { 6404fd306cSNickeau $editButton = array_pop($this->editButtonStack); 6504fd306cSNickeau $editButton->setEndPosition($endPosition); 6604fd306cSNickeau return $editButton; 6704fd306cSNickeau } 6804fd306cSNickeau 6904fd306cSNickeau} 70