aa
This commit is contained in:
@@ -970,89 +970,190 @@ function findInsideProduct(array $prodotto, string $miocampo): ?string
|
||||
return null;
|
||||
}
|
||||
|
||||
function getRigaArticoloByArt($article, $ind, $sep)
|
||||
class ArticleFormatter
|
||||
{
|
||||
private const QTA_MINIMA_PER_PREVENDITA = 5; // Assuming this was defined elsewhere
|
||||
private const CAMPO_PREORDINE = 'preorder'; // Assuming this was defined elsewhere
|
||||
|
||||
try {
|
||||
$str = "";
|
||||
public static function getArticleRow($article, $index, $separator)
|
||||
{
|
||||
try {
|
||||
$product = self::getProduct($article->IdArticolo);
|
||||
$stockInfo = self::getStockInfo($product);
|
||||
$preorderInfo = self::getPreorderInfo($product);
|
||||
|
||||
$mydatestr = $article->DataPubblicazione;
|
||||
|
||||
$sku = $article->IdArticolo;
|
||||
|
||||
$prodotto = Product::where('sku', $sku)->first();
|
||||
|
||||
$permalink = "";
|
||||
|
||||
$qtyinstock = '';
|
||||
$colore = 'black';
|
||||
$prezzo = '';
|
||||
|
||||
if ($prodotto) {
|
||||
try {
|
||||
$qtyinstock = intval($prodotto['stock_quantity']);
|
||||
$prezzo = $prodotto['sale_price'];
|
||||
if (!$prezzo) {
|
||||
$prezzo = $prodotto['price'];
|
||||
}
|
||||
|
||||
if ($qtyinstock <= 0) {
|
||||
$colore = 'red';
|
||||
} else {
|
||||
$colore = 'green';
|
||||
}
|
||||
|
||||
$permalink = $prodotto['permalink'];
|
||||
} catch (\Exception $e) {
|
||||
// ...
|
||||
}
|
||||
return self::formatArticleRow(
|
||||
$article,
|
||||
$index,
|
||||
$separator,
|
||||
$product,
|
||||
$stockInfo,
|
||||
$preorderInfo
|
||||
);
|
||||
} catch (\Exception $e) {
|
||||
return "Errore getRigaArticoloByArt: " . $e->getMessage();
|
||||
}
|
||||
|
||||
if ($prodotto) {
|
||||
|
||||
$preorder = findInsideProduct($prodotto, CAMPO_PREORDINE);
|
||||
$preorder_attivato = $preorder === 'yes';
|
||||
}
|
||||
|
||||
// echo '[' . $ind . ']' . $sep . $mydatestr . $sep . $article->IdArticolo . $sep . $article->Titolo . $sep . $article->DescrizioneStatoProdotto . $sep . $article->DescrizioneFormato . ' [Quantita = ' . $article->QtaDisponibile . ']';
|
||||
$myview = '[' . $ind . ']' . $sep .
|
||||
'<a href="' . $article->permalink . '?id=' . $article->IdArticolo . '" target="_blank">' . $article->IdArticolo . '</a>' . $sep .
|
||||
'<a href="' . $permalink . '" target="_blank"><span style="color:' . $colore . '; font-weight: bold;"> ' . $article->Titolo . '</span></a>' . $sep .
|
||||
' Pubb:' . formatDateToItalian($article->DataPubblicazione) . $sep .
|
||||
$article->DescrizioneCollana . $sep .
|
||||
$article->DescrizioneStatoProdotto . ' (' . $article->DescrizioneFormato . ')' . $sep .
|
||||
'[Qta = <span style="">' . $article->QtaDisponibile . '</span>]' . $sep .
|
||||
' [' . showprice($prezzo) . ' ]' . $sep .
|
||||
'[In Stock = <span style="color:' . $colore . '; font-weight: bold;">' . $qtyinstock . '</span>]' . $sep;
|
||||
|
||||
if (!$preorder_attivato || $qtyinstock < QTA_MINIMA_PER_PREVENDITA) {
|
||||
$myview .= '<a href="' . $article->permalink . '/apimacro/public/aggiornapreorder/' . $article->IdArticolo . '/1/" target="_blank">Imposta in PRE-ORDINE!</a>' . $sep;
|
||||
} else {
|
||||
$myview .= '<a href="' . $article->permalink . '/apimacro/public/aggiornapreorder/' . $article->IdArticolo . '/-1/" target="_blank">Impostalo Non Disponibile</a>' . $sep;
|
||||
}
|
||||
$myview .= '<a href="' . $article->permalink . '/apimacro/public/aggiornadatapubblicazione/' . $article->IdArticolo . '/" target="_blank">Aggiorna Data Pubb</a>' . $sep;
|
||||
|
||||
$str .= $myview;
|
||||
|
||||
if ($prodotto) {
|
||||
|
||||
$datepreorder = findInsideProduct($prodotto, '_ywpo_for_sale_date');
|
||||
|
||||
if ($preorder_attivato) {
|
||||
$str .= ' <span style="color:green">PREORDINE ATTIVO! </span>';
|
||||
if ($datepreorder) {
|
||||
$str .= ' <span style="">Data PreOrdine: ' . $datepreorder . '</span>';
|
||||
}
|
||||
}
|
||||
$str .= '<br>';
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
return "Errore getRigaArticoloByArt: " . $e->getMessage();
|
||||
}
|
||||
|
||||
return $str;
|
||||
private static function getProduct($sku)
|
||||
{
|
||||
return Product::where('sku', $sku)->first();
|
||||
}
|
||||
|
||||
private static function getStockInfo($product)
|
||||
{
|
||||
if (!$product) {
|
||||
return [
|
||||
'quantity' => 0,
|
||||
'price' => '',
|
||||
'color' => 'black',
|
||||
'permalink' => ''
|
||||
];
|
||||
}
|
||||
|
||||
$quantity = intval($product['stock_quantity']);
|
||||
$price = $product['sale_price'] ?: $product['price'];
|
||||
|
||||
return [
|
||||
'quantity' => $quantity,
|
||||
'price' => $price,
|
||||
'color' => $quantity <= 0 ? 'red' : 'green',
|
||||
'permalink' => $product['permalink']
|
||||
];
|
||||
}
|
||||
|
||||
private static function getPreorderInfo($product)
|
||||
{
|
||||
if (!$product) {
|
||||
return ['active' => false, 'date' => null];
|
||||
}
|
||||
|
||||
return [
|
||||
'active' => self::findInsideProduct($product, self::CAMPO_PREORDINE) === 'yes',
|
||||
'date' => self::findInsideProduct($product, '_ywpo_for_sale_date')
|
||||
];
|
||||
}
|
||||
|
||||
private static function formatArticleRow($article, $index, $separator, $product, $stockInfo, $preorderInfo)
|
||||
{
|
||||
$elements = [
|
||||
self::formatIndexAndId($index, $article, $separator),
|
||||
self::formatTitleLink($article, $stockInfo, $separator),
|
||||
self::formatPublicationInfo($article, $separator),
|
||||
self::formatStockInfo($article, $stockInfo, $separator),
|
||||
self::formatPreorderActions($article, $preorderInfo, $stockInfo, $separator),
|
||||
self::formatUpdateDateLink($article, $separator)
|
||||
];
|
||||
|
||||
$output = implode('', $elements);
|
||||
|
||||
if ($product && $preorderInfo['active']) {
|
||||
$output .= self::formatPreorderStatus($preorderInfo['date']);
|
||||
}
|
||||
|
||||
return $output . '<br>';
|
||||
}
|
||||
|
||||
private static function formatIndexAndId($index, $article, $separator)
|
||||
{
|
||||
return sprintf(
|
||||
'[%d]%s<a href="%s?id=%s" target="_blank">%s</a>%s',
|
||||
$index,
|
||||
$separator,
|
||||
$article->permalink,
|
||||
$article->IdArticolo,
|
||||
$article->IdArticolo,
|
||||
$separator
|
||||
);
|
||||
}
|
||||
|
||||
private static function formatTitleLink($article, $stockInfo, $separator)
|
||||
{
|
||||
return sprintf(
|
||||
'<a href="%s" target="_blank"><span style="color:%s; font-weight: bold;"> %s</span></a>%s',
|
||||
$stockInfo['permalink'],
|
||||
$stockInfo['color'],
|
||||
$article->Titolo,
|
||||
$separator
|
||||
);
|
||||
}
|
||||
|
||||
private static function formatPublicationInfo($article, $separator)
|
||||
{
|
||||
return sprintf(
|
||||
'Pubb:%s%s%s%s%s (%s)%s',
|
||||
formatDateToItalian($article->DataPubblicazione),
|
||||
$separator,
|
||||
$article->DescrizioneCollana,
|
||||
$separator,
|
||||
$article->DescrizioneStatoProdotto,
|
||||
$article->DescrizioneFormato,
|
||||
$separator
|
||||
);
|
||||
}
|
||||
|
||||
private static function formatStockInfo($article, $stockInfo, $separator)
|
||||
{
|
||||
return sprintf(
|
||||
'[Qta = <span>%s</span>]%s[%s]%s[In Stock = <span style="color:%s; font-weight: bold;">%s</span>]%s',
|
||||
$article->QtaDisponibile,
|
||||
$separator,
|
||||
showprice($stockInfo['price']),
|
||||
$separator,
|
||||
$stockInfo['color'],
|
||||
$stockInfo['quantity'],
|
||||
$separator
|
||||
);
|
||||
}
|
||||
|
||||
private static function formatPreorderActions($article, $preorderInfo, $stockInfo, $separator)
|
||||
{
|
||||
$baseUrl = $article->permalink . '/apimacro/public/aggiornapreorder/' . $article->IdArticolo;
|
||||
|
||||
if (!$preorderInfo['active'] || $stockInfo['quantity'] < self::QTA_MINIMA_PER_PREVENDITA) {
|
||||
return sprintf(
|
||||
'<a href="%s/1/" target="_blank">Imposta in PRE-ORDINE!</a>%s',
|
||||
$baseUrl,
|
||||
$separator
|
||||
);
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<a href="%s/-1/" target="_blank">Impostalo Non Disponibile</a>%s',
|
||||
$baseUrl,
|
||||
$separator
|
||||
);
|
||||
}
|
||||
|
||||
private static function formatUpdateDateLink($article, $separator)
|
||||
{
|
||||
return sprintf(
|
||||
'<a href="%s/apimacro/public/aggiornadatapubblicazione/%s/" target="_blank">Aggiorna Data Pubb</a>%s',
|
||||
$article->permalink,
|
||||
$article->IdArticolo,
|
||||
$separator
|
||||
);
|
||||
}
|
||||
|
||||
private static function formatPreorderStatus($preorderDate)
|
||||
{
|
||||
$status = ' <span style="color:green">PREORDINE ATTIVO!</span>';
|
||||
if ($preorderDate) {
|
||||
$status .= sprintf(' <span>Data PreOrdine: %s</span>', $preorderDate);
|
||||
}
|
||||
return $status;
|
||||
}
|
||||
|
||||
private static function findInsideProduct($product, $field)
|
||||
{
|
||||
// Implementation needed - this was referenced but not shown in original code
|
||||
return $product[$field] ?? null;
|
||||
}
|
||||
}
|
||||
|
||||
function getRigaArticoloByArt($article, $index, $separator) {
|
||||
return ArticleFormatter::getArticleRow($article, $index, $separator);
|
||||
}
|
||||
|
||||
function showCartolibri()
|
||||
{
|
||||
@@ -1077,6 +1178,7 @@ function showCartolibri()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function showRiviste()
|
||||
{
|
||||
$articles = getArticoliRiviste();
|
||||
|
||||
Reference in New Issue
Block a user