continue;
}
if ( ! is_array( $value ) ) {
continue;
}
$keys[] = $key;
$values[ $key ] = $this->addValueToValuesArray( $defaults, $value, $keys, $sanitize );
array_pop( $keys );
}
return $values;
}
/**
* Our options array has values (or defaults).
* This method converts them to how we would store them in the DB.
*
* @since 1.0.0
*
* @param array $options The options array.
* @return array The converted options array.
*/
public function convertOptionsToValues( $options, $optionKey = 'type' ) {
foreach ( $options as $key => $value ) {
if ( ! is_array( $value ) ) {
continue;
}
if ( ! isset( $value[ $optionKey ] ) ) {
$options[ $key ] = $this->convertOptionsToValues( $value, $optionKey );
continue;
}
$options[ $key ] = null;
if ( isset( $value['value'] ) ) {
$preserveHtml = ! empty( $value['preserveHtml'] );
if ( $preserveHtml ) {
if ( is_array( $value['value'] ) ) {
foreach ( $value['value'] as $k => $v ) {
$value['value'][ $k ] = aioseoBrokenLinkChecker()->helpers->decodeHtmlEntities( $v );
}
} else {
$value['value'] = aioseoBrokenLinkChecker()->helpers->decodeHtmlEntities( $value['value'] );
}
}
$options[ $key ] = $value['value'];
continue;
}
if ( isset( $value['default'] ) ) {
$options[ $key ] = $value['default'];
}
}
return $options;
}
/**
* This checks to see if the current array/option is really an option
* and not just another parent with a subgroup.
*
* @since 1.0.0
*
* @param string $key The current array key we are working with.
* @param array $defaults The defaults array to check against.
* @param array $keys The parent keys to loop through.
* @return bool Whether or not this is an option.
*/
private function isAnOption( $key, $defaults, $keys ) {
if ( ! empty( $keys ) ) {
foreach ( $keys as $k ) {
$defaults = isset( $defaults[ $k ] ) ? $defaults[ $k ] : [];
}
}
if ( isset( $defaults[ $key ]['type'] ) ) {
return $defaults[ $key ];
}
return false;
}
/**
* Refreshes the options from the database.
*
* We need this during the migration to update through clones.
*
* @since 1.0.0
*
* @return void
*/
public function refresh() {
// Reset DB options to clear the cache.
aioseoBrokenLinkChecker()->core->optionsCache->resetDb();
$this->init();
}
/**
* Returns the DB options.
*
* @since 1.0.0
*
* @param string $optionsName The options name.
* @return array The options.
*/
public function getDbOptions( $optionsName ) {
$cache = aioseoBrokenLinkChecker()->core->optionsCache->getDb( $optionsName );
if ( empty( $cache ) ) {
// NOTE: get_option() can return a non-string (e.g. an array from a row stored
// unencoded), which fatals in json_decode() on PHP 8+.
$dbOptions = get_option( $optionsName );
if ( is_string( $dbOptions ) ) {
$options = json_decode( $dbOptions, true );
} else {
// Row holds a non-string value (typically a serialized array left by an
// external tool: WP-CLI `--format=json`, site migration plugin, etc.).
// Use the data as-is and mark the instance dirty so the shutdown save
// rewrites the row as JSON — self-heals the corrupted storage.
$options = is_array( $dbOptions ) ? $dbOptions : [];
$this->shouldSave = true;
}
$options = ! empty( $options ) ? $options : [];
// Set the cache.
aioseoBrokenLinkChecker()->core->optionsCache->setDb( $optionsName, $options );
}
return aioseoBrokenLinkChecker()->core->optionsCache->getDb( $optionsName );
}
/**
* In order to not have a conflict, we need to return a clone.
*
* @since 1.0.0
*
* @return \AIOSEO\BrokenLinkChecker\Options\Options The cloned Options object.
*/
public function noConflict() {
$class = clone $this;
$class->isClone = true;
return $class;
}
/**
* Get original instance. Since this could be a cloned object, let's get the original instance.
*
* @since 1.0.0
*
* @return self
*/
public function getOriginalInstance() {
if ( ! $this->isClone ) {
return $this;
}
$class = new \ReflectionClass( get_called_class() );
$optionName = aioseoBrokenLinkChecker()->helpers->toCamelCase( $class->getShortName() );
if ( isset( aioseoBrokenLinkChecker()->{ $optionName } ) ) {
return aioseoBrokenLinkChecker()->{ $optionName };
}
return $this;
}
}
Fatal error: Trait 'AIOSEO\BrokenLinkChecker\Traits\Options' not found in /home/teifazm3/domains/teifazma.com/public_html/wp-content/plugins/broken-link-checker-seo/app/Options/InternalOptions.php on line 16