defaultOptionFile = $defaultOptionFile; parent::__construct(); } /** * @inheritdoc */ protected function doInit() { parent::doInit(); if (!is_readable($this->defaultOptionFile)) { return; } $this->defaultOptions = json_decode(file_get_contents($this->defaultOptionFile), true); if (!is_array($this->defaultOptions)) { $this->defaultOptions = []; } } /** * @param int $postId * @return array */ public function getOptions($postId) { $jsonData = get_post_meta($postId, self::KEY_CONTACT_FORM_CONFIG_OPTIONS, true); if (empty($jsonData)) { return $this->applyDefaultValues([]); } $options = json_decode($jsonData, true); return $this->applyDefaultValues($options); } /** * @param int $postId * @param array $options * @return bool|int */ public function saveOptions($postId, array $options) { return update_post_meta($postId, self::KEY_CONTACT_FORM_CONFIG_OPTIONS, json_encode( $this->applyDefaultValues($options) )); } /** * @return array */ public function getDefaultValues() { return $this->defaultOptions; } /** * @param array $defaultOptions * @return $this */ public function setDefaultValues(array $defaultOptions) { $this->defaultOptions = $defaultOptions; return $this; } /** * @param array $options * @return array */ private function applyDefaultValues(array $options) { return array_replace_recursive( $this->getDefaultValues(), $options ); } }