| Server IP : 121.121.20.254 / Your IP : 216.73.216.202 Web Server : Microsoft-IIS/10.0 System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64 User : IUSR ( 0) PHP Version : 8.3.28 Disable Function : NONE MySQL : ON | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/inetpub/wwwroot/KnowledgeBase/wp-content/plugins/wp-seopress-pro/src/JsonSchemas/ |
Upload File : |
<?php
namespace SEOPressPro\JsonSchemas;
if (! defined('ABSPATH')) {
exit;
}
use SEOPress\Helpers\RichSnippetType;
use SEOPress\Models\GetJsonData;
use SEOPressPro\Models\JsonSchemaValue;
class SoftwareApp extends JsonSchemaValue implements GetJsonData
{
const NAME = 'softwareapp';
protected function getName()
{
return self::NAME;
}
/**
* @since 4.6.0
*
* @return array
*
* @param array $schemaManual
*/
protected function getVariablesForManualSnippet($schemaManual)
{
$keys = [
'type' => '_seopress_pro_rich_snippets_type',
'name' => '_seopress_pro_rich_snippets_softwareapp_name',
'operatingSystem' => '_seopress_pro_rich_snippets_softwareapp_os',
'applicationCategory' => '_seopress_pro_rich_snippets_softwareapp_cat',
'price' => '_seopress_pro_rich_snippets_softwareapp_price',
'priceCurrency' => '_seopress_pro_rich_snippets_softwareapp_currency',
'ratingValue' => '_seopress_pro_rich_snippets_softwareapp_rating',
'bestRating' => '_seopress_pro_rich_snippets_softwareapp_max_rating',
];
$variables = [];
foreach ($keys as $key => $value) {
$variables[$key] = isset($schemaManual[$value]) ? $schemaManual[$value] : '';
}
return $variables;
}
/**
* @since 4.6.0
*
* @param array $context
*
* @return array
*/
public function getJsonData($context = null)
{
$data = $this->getArrayJson();
$typeSchema = isset($context['type']) ? $context['type'] : RichSnippetType::MANUAL;
$variables = [];
switch ($typeSchema) {
case RichSnippetType::MANUAL:
$schemaManual = $this->getCurrentSchemaManual($context);
if (null === $schemaManual) {
return $data;
}
$variables = $this->getVariablesForManualSnippet($schemaManual);
break;
}
if (isset($variables['ratingValue'])) {
$contextWithVariables = $context;
$contextWithVariables['variables'] = [
'ratingValue' => $variables['ratingValue'],
'bestRating' => $variables['bestRating'],
'worstRating' => empty($variables['bestRating']) ? '' : 1,
'ratingAuthor' => '%%post_author%%',
];
$contextWithVariables['type'] = RichSnippetType::SUB_TYPE;
$schema = seopress_get_service('JsonSchemaGenerator')->getJsonFromSchema(Review::NAME, $contextWithVariables, ['remove_empty'=> true]);
if (count($schema) > 1) {
$data['review'] = $schema;
}
}
if (isset($variables['price'], $variables['priceCurrency'])) {
$contextWithVariables = $context;
$contextWithVariables['variables'] = [
'price' => $variables['price'],
'priceCurrency' => $variables['priceCurrency'],
];
$contextWithVariables['type'] = RichSnippetType::SUB_TYPE;
$schema = seopress_get_service('JsonSchemaGenerator')->getJsonFromSchema(Offer::NAME, $contextWithVariables, ['remove_empty'=> true]);
if (count($schema) > 1) {
$data['offers'] = $schema;
}
}
$data = seopress_get_service('VariablesToString')->replaceDataToString($data, $variables);
return apply_filters('seopress_pro_get_json_data_software_app', $data, $context);
}
/**
* @since 4.6.0
*
* @param $data
*
* @return array
*/
public function cleanValues($data)
{
if (isset($data['review']) && isset($data['review']['@context'])) {
unset($data['review']['@context']);
}
return parent::cleanValues($data);
}
}