1*c3437056SNickeau<?php 2*c3437056SNickeau/** 3*c3437056SNickeau * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved. 4*c3437056SNickeau * 5*c3437056SNickeau * This source code is licensed under the GPL license found in the 6*c3437056SNickeau * COPYING file in the root directory of this source tree. 7*c3437056SNickeau * 8*c3437056SNickeau * @license GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html) 9*c3437056SNickeau * @author ComboStrap <support@combostrap.com> 10*c3437056SNickeau * 11*c3437056SNickeau */ 12*c3437056SNickeau 13*c3437056SNickeaunamespace ComboStrap; 14*c3437056SNickeau 15*c3437056SNickeau 16*c3437056SNickeau/** 17*c3437056SNickeau * 18*c3437056SNickeau * Publication Date 19*c3437056SNickeau * @package ComboStrap 20*c3437056SNickeau * 21*c3437056SNickeau */ 22*c3437056SNickeauclass PagePublicationDate extends MetadataDateTime 23*c3437056SNickeau{ 24*c3437056SNickeau 25*c3437056SNickeau /** 26*c3437056SNickeau * The key that contains the published date 27*c3437056SNickeau */ 28*c3437056SNickeau const PROPERTY_NAME = "date_published"; 29*c3437056SNickeau const OLD_META_KEY = "published"; 30*c3437056SNickeau 31*c3437056SNickeau /** 32*c3437056SNickeau * Late publication protection 33*c3437056SNickeau */ 34*c3437056SNickeau const LATE_PUBLICATION_PROTECTION_ACRONYM = "lpp"; 35*c3437056SNickeau const CONF_LATE_PUBLICATION_PROTECTION_MODE = "latePublicationProtectionMode"; 36*c3437056SNickeau const CONF_LATE_PUBLICATION_PROTECTION_ENABLE = "latePublicationProtectionEnable"; 37*c3437056SNickeau const LATE_PUBLICATION_CLASS_NAME = "late-publication"; 38*c3437056SNickeau 39*c3437056SNickeau 40*c3437056SNickeau public static function getLatePublicationProtectionMode() 41*c3437056SNickeau { 42*c3437056SNickeau 43*c3437056SNickeau if (PluginUtility::getConfValue(PagePublicationDate::CONF_LATE_PUBLICATION_PROTECTION_ENABLE, true)) { 44*c3437056SNickeau return PluginUtility::getConfValue(PagePublicationDate::CONF_LATE_PUBLICATION_PROTECTION_MODE); 45*c3437056SNickeau } else { 46*c3437056SNickeau return false; 47*c3437056SNickeau } 48*c3437056SNickeau 49*c3437056SNickeau } 50*c3437056SNickeau 51*c3437056SNickeau public static function isLatePublicationProtectionEnabled() 52*c3437056SNickeau { 53*c3437056SNickeau return PluginUtility::getConfValue(PagePublicationDate::CONF_LATE_PUBLICATION_PROTECTION_ENABLE, true); 54*c3437056SNickeau } 55*c3437056SNickeau 56*c3437056SNickeau public static function createFromPage(Page $page) 57*c3437056SNickeau { 58*c3437056SNickeau return (new PagePublicationDate()) 59*c3437056SNickeau ->setResource($page); 60*c3437056SNickeau } 61*c3437056SNickeau 62*c3437056SNickeau 63*c3437056SNickeau public function getTab(): string 64*c3437056SNickeau { 65*c3437056SNickeau return MetaManagerForm::TAB_TYPE_VALUE; 66*c3437056SNickeau } 67*c3437056SNickeau 68*c3437056SNickeau public function getDescription(): string 69*c3437056SNickeau { 70*c3437056SNickeau return "The publication date"; 71*c3437056SNickeau } 72*c3437056SNickeau 73*c3437056SNickeau public function getLabel(): string 74*c3437056SNickeau { 75*c3437056SNickeau return "Publication Date"; 76*c3437056SNickeau } 77*c3437056SNickeau 78*c3437056SNickeau static public function getName(): string 79*c3437056SNickeau { 80*c3437056SNickeau return self::PROPERTY_NAME; 81*c3437056SNickeau } 82*c3437056SNickeau 83*c3437056SNickeau 84*c3437056SNickeau public function buildFromStoreValue($value): Metadata 85*c3437056SNickeau { 86*c3437056SNickeau $store = $this->getReadStore(); 87*c3437056SNickeau if (!($store instanceof MetadataDokuWikiStore)) { 88*c3437056SNickeau return parent::buildFromStoreValue($value); 89*c3437056SNickeau } 90*c3437056SNickeau 91*c3437056SNickeau if ($value === null) { 92*c3437056SNickeau /** 93*c3437056SNickeau * Old metadata key 94*c3437056SNickeau */ 95*c3437056SNickeau $value = $store->getFromPersistentName(PagePublicationDate::OLD_META_KEY); 96*c3437056SNickeau } 97*c3437056SNickeau 98*c3437056SNickeau try { 99*c3437056SNickeau $this->dateTimeValue = $this->fromPersistentDateTimeUtility($value); 100*c3437056SNickeau } catch (ExceptionCombo $e) { 101*c3437056SNickeau LogUtility::msg($e->getMessage(), LogUtility::LVL_MSG_ERROR, $e->getCanonical()); 102*c3437056SNickeau } 103*c3437056SNickeau 104*c3437056SNickeau return $this; 105*c3437056SNickeau } 106*c3437056SNickeau 107*c3437056SNickeau 108*c3437056SNickeau public function getPersistenceType(): string 109*c3437056SNickeau { 110*c3437056SNickeau return Metadata::PERSISTENT_METADATA; 111*c3437056SNickeau } 112*c3437056SNickeau 113*c3437056SNickeau public function getMutable(): bool 114*c3437056SNickeau { 115*c3437056SNickeau return true; 116*c3437056SNickeau } 117*c3437056SNickeau 118*c3437056SNickeau public function getDefaultValue(): ?\DateTime 119*c3437056SNickeau { 120*c3437056SNickeau return PageCreationDate::create() 121*c3437056SNickeau ->setResource($this->getResource()) 122*c3437056SNickeau ->getValueOrDefault(); 123*c3437056SNickeau } 124*c3437056SNickeau 125*c3437056SNickeau static public function getOldPersistentNames(): array 126*c3437056SNickeau { 127*c3437056SNickeau return [PagePublicationDate::OLD_META_KEY]; 128*c3437056SNickeau } 129*c3437056SNickeau 130*c3437056SNickeau public function getCanonical(): string 131*c3437056SNickeau { 132*c3437056SNickeau return "published"; 133*c3437056SNickeau } 134*c3437056SNickeau 135*c3437056SNickeau 136*c3437056SNickeau} 137