1
0
Fork 0
www.mikescher.com/www/internals/modules/projectlawful.php

76 lines
2.8 KiB
PHP

<?php
namespace internals\modules;
use IWebsiteModule;
use PDO;
use Throwable;
use Website;
class ProjectLawful implements IWebsiteModule
{
/** @var Website */
private $site;
public $variants = [
'avatars-moreinfo' => 'project-lawful-avatars-moreinfo.epub',
'avatars' => 'project-lawful-avatars.epub',
'biggerhtml' => 'project-lawful-biggerhtml.epub',
'inline' => 'project-lawful-inline.epub',
'moreinfo' => 'project-lawful-moreinfo.epub',
'onlymainstory-avatars-moreinfo' => 'project-lawful-onlymainstory-avatars-moreinfo.epub',
'onlymainstory-avatars' => 'project-lawful-onlymainstory-avatars.epub',
'onlymainstory-biggerhtml' => 'project-lawful-onlymainstory-biggerhtml.epub',
'onlymainstory-inline' => 'project-lawful-onlymainstory-inline.epub',
'onlymainstory-moreinfo' => 'project-lawful-onlymainstory-moreinfo.epub',
'sfw-avatars-moreinfo' => 'project-lawful-sfw-avatars-moreinfo.epub',
'sfw-avatars' => 'project-lawful-sfw-avatars.epub',
'sfw-biggerhtml' => 'project-lawful-sfw-biggerhtml.epub',
'sfw-inline' => 'project-lawful-sfw-inline.epub',
'sfw-moreinfo' => 'project-lawful-sfw-moreinfo.epub',
];
public function __construct(Website $site)
{
$this->site = $site;
}
public function insertDownload($variant)
{
try
{
$this->site->modules->Database()->sql_query_assoc_prep('INSERT INTO projectlawful_downloadcounter (variant, ip, useragent) VALUES (:vr, :ip, :ua)',
[
[':vr', $variant, PDO::PARAM_STR],
[':ip', get_client_ip(), PDO::PARAM_STR],
[':ua', $_SERVER['HTTP_USER_AGENT'] ?? '', PDO::PARAM_STR],
]);
return true;
}
catch (Throwable $t)
{
return false;
}
}
public function listDownloadCounts()
{
return $this->site->modules->Database()->sql_query_assoc('SELECT variant, COUNT(*) AS `count` FROM projectlawful_downloadcounter GROUP BY variant ORDER BY variant');
}
public function variantExists(string $variant)
{
return isset($this->variants[$variant]);
}
public function checkConsistency()
{
foreach ($this->variants as $key => $val) {
$fn = __DIR__ . '/../../data/projectlawful/'.$val;
if (!file_exists($fn)) {
return ['result'=>'err', 'message' => 'File not found: ' . $fn];
}
}
return ['result' => 'ok', 'message' => ''];
}
}