public function deleteStatus(StatusStructure $statusStructure, $bit) { $databox = $statusStructure->getDatabox(); if (false === $statusStructure->hasStatus($bit)) { return false; } $doc = $databox->get_dom_structure(); if (!$doc) { return false; } $xpath = $databox->get_xpath_structure(); $entries = $xpath->query('/record/statbits/bit[@n=' . $bit . ']'); foreach ($entries as $sbit) { if ($p = $sbit->previousSibling) { if ($p->nodeType == XML_TEXT_NODE && $p->nodeValue == '\\n\\t\\t') { $p->parentNode->removeChild($p); } } if ($sbit->parentNode->removeChild($sbit)) { $sql = 'UPDATE record SET status = status&(~(1<<' . $bit . '))'; $stmt = $databox->get_connection()->prepare($sql); $stmt->execute(); $stmt->closeCursor(); } } $databox->saveStructure($doc); $status = $statusStructure->getStatus($bit); if (null !== $status['img_off']) { $this->fs->remove($status['path_off']); } if (null !== $status['img_on']) { $this->fs->remove($status['path_on']); } $statusStructure->removeStatus($bit); return $statusStructure; }