feat: moneta 2.0, MONETA.Assistant payment module for PHPShop 6.7+

This commit is contained in:
2026-10-27 11:45:22 +03:00
parent 78b7405637
commit f8c12ce44a
82 changed files with 7387 additions and 58 deletions
+66
View File
@@ -0,0 +1,66 @@
<?php
declare(strict_types=1);
namespace MonetaPhpShop\host;
/**
* Êîäèðîâêè íà ãðàíèöå ñ PHPShop.
*
* Ìîäóëü âíóòðè ðàáîòàåò â cp1251 — â íåé åãî èñõîäíèêè ïîñëå ñáîðêè è øòàòíàÿ áàçà PHPShop.
* Ìàãàçèí ñ áàçîé `utf-8` (`$PHPShopBase->codBase`) îòäà¸ò ñòðîêè èç ÁÄ â UTF-8 è âûâîäèò
* ñòðàíèöû â UTF-8 — íà ýòîé ãðàíèöå ñòðîêè ïåðåêîäèðóþòñÿ, êàê â øòàòíûõ ìîäóëÿõ ÿäðà.
* Âñ¸, ÷òî óõîäèò â Ìîíåòó (JSON, XML), — UTF-8.
*/
final class HostCharset
{
private function __construct() {}
public static function isUtf8Shop(): bool
{
$base = $GLOBALS['PHPShopBase'] ?? null;
return is_object($base) && isset($base->codBase) && ($base->codBase === 'utf-8');
}
/**
* Ñòðîêà èç ÁÄ ìàãàçèíà -> cp1251.
*/
public static function fromDatabase(string $value): string
{
if (!self::isUtf8Shop()) {
return $value;
}
$converted = iconv('UTF-8', 'Windows-1251//IGNORE', $value);
return ($converted === false) ? '' : $converted;
}
/**
* Ñòðîêà ìîäóëÿ (cp1251) -> êîäèðîâêà ÁÄ ìàãàçèíà.
*/
public static function toDatabase(string $value): string
{
return self::isUtf8Shop() ? self::toUtf8($value) : $value;
}
/**
* HTML ìîäóëÿ (cp1251) -> êîäèðîâêà ñòðàíèöû ìàãàçèíà.
*/
public static function toPage(string $html): string
{
return self::isUtf8Shop() ? self::toUtf8($html) : $html;
}
/**
* cp1251 -> UTF-8 äëÿ Ìîíåòû. Áàéò 0x98 â cp1251 íå îïðåäåë¸í — íà í¸ì iconv âåðíóë áû false
* íà âñþ ñòðîêó (íàçâàíèå ïîçèöèè â ÷åêå ñòàëî áû ïóñòûì), ïîýòîìó îí óäàëÿåòñÿ çàðàíåå.
* Íå //IGNORE: åãî ïîääåðæêà çàâèñèò îò ðåàëèçàöèè iconv (glibc — äà, musl — íåò).
*/
public static function toUtf8(string $value): string
{
$converted = iconv('Windows-1251', 'UTF-8', str_replace("\x98", '', $value));
return ($converted === false) ? '' : $converted;
}
}