Deploy 6796121 from main

This commit is contained in:
github-actions[bot]
2026-04-12 10:29:18 +00:00
parent 24d15ca938
commit 5d4e73b947
14 changed files with 3633 additions and 3621 deletions

View File

@@ -250,7 +250,9 @@ class Peptide_News_Admin {
'rss_enabled' => 'absint',
'rss_feeds' => 'sanitize_textarea_field',
'newsapi_enabled' => 'absint',
'newsapi_key' => function ( $value ) { return $this->sanitize_api_key( $value, 'peptide_news_newsapi_key' ); },
'newsapi_key' => function ( $value ) {
return $this->sanitize_api_key( $value, 'peptide_news_newsapi_key' );
},
'article_retention' => 'absint',
'analytics_retention' => 'absint',
'anonymize_ip' => 'absint',
@@ -262,7 +264,9 @@ class Peptide_News_Admin {
'filter_body_keywords' => 'sanitize_textarea_field',
'filter_blocked_domains' => 'sanitize_textarea_field',
'llm_enabled' => 'absint',
'openrouter_api_key' => function ( $value ) { return $this->sanitize_api_key( $value, 'peptide_news_openrouter_api_key' ); },
'openrouter_api_key' => function ( $value ) {
return $this->sanitize_api_key( $value, 'peptide_news_openrouter_api_key' );
},
'llm_keywords_model' => array( $this, 'sanitize_model_id' ),
'llm_summary_model' => array( $this, 'sanitize_model_id' ),
'llm_max_articles' => 'absint',
@@ -550,7 +554,13 @@ class Peptide_News_Admin {
);
echo '<p class="description">' . wp_kses(
__( 'Get an API key at <a href="https://openrouter.ai/keys" target="_blank" rel="noopener">openrouter.ai/keys</a>.', 'peptide-news' ),
array( 'a' => array( 'href' => array(), 'target' => array(), 'rel' => array() ) )
array(
'a' => array(
'href' => array(),
'target' => array(),
'rel' => array(),
),
)
) . '</p>';
}
@@ -718,13 +728,15 @@ class Peptide_News_Admin {
if ( $last_fetch ) {
$extra_info = '';
if ( isset( $last_fetch['filtered_out'] ) && $last_fetch['filtered_out'] > 0 ) {
$extra_info .= sprintf( ' | %s: %d',
$extra_info .= sprintf(
' | %s: %d',
esc_html__( 'Filtered out', 'peptide-news' ),
$last_fetch['filtered_out']
);
}
if ( isset( $last_fetch['ai_processed'] ) ) {
$extra_info .= sprintf( ' | %s: %d',
$extra_info .= sprintf(
' | %s: %d',
esc_html__( 'AI analyzed', 'peptide-news' ),
$last_fetch['ai_processed']
);
@@ -734,10 +746,10 @@ class Peptide_News_Admin {
esc_html__( 'Last fetch', 'peptide-news' ),
esc_html( $last_fetch['time'] ),
esc_html__( 'Found', 'peptide-news' ),
$last_fetch['found'],
intval( $last_fetch['found'] ),
esc_html__( 'New stored', 'peptide-news' ),
$last_fetch['new_stored'],
$extra_info
intval( $last_fetch['new_stored'] ),
esc_html( $extra_info )
);
}

View File

@@ -97,7 +97,7 @@ $total_articles = count( $top_articles );
<?php if ( empty( $top_articles ) ) : ?>
<tr><td colspan="6"><?php esc_html_e( 'No click data for this period.', 'peptide-news' ); ?></td></tr>
<?php else : ?>
<?php foreach( $top_articles as $i => $article ) : ?>
<?php foreach ( $top_articles as $i => $article ) : ?>
<tr>
<td><?php echo esc_html( $i + 1 ); ?></td>
<td><a href="<?php echo esc_url( $article->source_url ); ?>" target="_blank" rel="noopener"><?php echo esc_html( $article->title ); ?></a></td>
@@ -128,7 +128,7 @@ $total_articles = count( $top_articles );
<?php if ( empty( $topics ) ) : ?>
<tr><td colspan="4"><?php esc_html_e( 'No topic data for this period.', 'peptide-news' ); ?></td></tr>
<?php else : ?>
<?php foreach( $topics as $i => $topic ) : ?>
<?php foreach ( $topics as $i => $topic ) : ?>
<tr>
<td><?php echo esc_html( $i + 1 ); ?></td>
<td><?php echo esc_html( $topic['topic'] ); ?></td>

View File

@@ -398,8 +398,7 @@ class Peptide_News_Content_Filter {
// Use XML-style delimiters to isolate untrusted article data from the prompt.
// This mitigates prompt injection by clearly separating instructions from data.
return
"You are a content classifier. Your ONLY task is to classify the article below.\n" .
$prompt = "You are a content classifier. Your ONLY task is to classify the article below.\n" .
"Respond with EXACTLY one word: EDITORIAL or PROMOTIONAL.\n" .
"EDITORIAL = genuine news, research, or journalism.\n" .
"PROMOTIONAL = press releases, ads, sponsored content, product launches, " .
@@ -412,6 +411,7 @@ class Peptide_News_Content_Filter {
sprintf( "<content>%s</content>\n", $content_trimmed ) .
"</article_to_classify>\n\n" .
"Classification (one word only):";
return $prompt;
}
/**

View File

@@ -114,6 +114,7 @@ class Peptide_News_Rest_API {
if ( ! preg_match( '/^\\d{4}-\\d{2}-\\d{2}$/', $value ) ) {
return new WP_Error(
'rest_invalid_date',
/* translators: %s: parameter name */
sprintf( __( 'Invalid date format for %s. Expected Y-m-d.', 'peptide-news' ), $param ),
array( 'status' => 400 )
);
@@ -184,7 +185,6 @@ class Peptide_News_Rest_API {
}
}
}
}
$data = array(