46 lines
1.2 KiB
PHP
46 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace WPML\ST\StringsScanning;
|
|
|
|
use WPML\Ajax\IHandler;
|
|
use WPML\Collect\Support\Collection;
|
|
use function WPML\Container\make;
|
|
use WPML\FP\Either;
|
|
|
|
class UpdateStats implements IHandler {
|
|
|
|
public function run( Collection $data ) {
|
|
$stats = $this->sanitizeStats( $data->get( 'stats', [] ) );
|
|
$st = apply_filters( 'wpml_get_setting', false, 'st' );
|
|
|
|
foreach ( $stats as $name => $data ) {
|
|
$count = $data['count'];
|
|
$key = $data['settingsKey'];
|
|
$item = $data['pluginOrThemeId'];
|
|
|
|
$old_count = isset( $st[ $key ][ $item ][ $name ] ) ?
|
|
$st[ $key ][ $item ][ $name ] :
|
|
0;
|
|
|
|
$st[ $key ][ $item ][ $name ] = $old_count + $count;
|
|
}
|
|
|
|
do_action( 'wpml_set_setting', 'st', $st, true );
|
|
|
|
return Either::of( [] );
|
|
}
|
|
|
|
private function sanitizeStats( $origStats ) {
|
|
$stats = [];
|
|
|
|
foreach ( $origStats as $origKey => $data ) {
|
|
$key = sanitize_text_field( $origKey );
|
|
$data['count'] = (int) $data['count'];
|
|
$data['pluginOrThemeId'] = sanitize_text_field( $data['pluginOrThemeId'] );
|
|
$data['settingsKey'] = sanitize_text_field( $data['settingsKey'] );
|
|
$stats[ $key ] = $data;
|
|
}
|
|
|
|
return $stats;
|
|
}
|
|
}
|