38751-vm/views/apk_detail.php
Flatlogic Bot dc6297b93b Bagus ini
2026-02-25 22:41:29 +00:00

321 lines
17 KiB
PHP

<?php include 'header.php'; ?>
<div class="container py-3">
<!-- Breadcrumb -->
<nav aria-label="breadcrumb" class="mb-4 d-none d-md-block">
<ol class="breadcrumb mb-0 small">
<li class="breadcrumb-item"><a href="/" class="text-success text-decoration-none"><?php echo __('home'); ?></a></li>
<?php
$db = db_pdo();
$catName = $db->query("SELECT name FROM categories WHERE id = " . ($apk['category_id'] ?: 0))->fetchColumn();
$catSlug = $db->query("SELECT slug FROM categories WHERE id = " . ($apk['category_id'] ?: 0))->fetchColumn();
?>
<li class="breadcrumb-item"><a href="/?category=<?php echo $catSlug; ?>" class="text-success text-decoration-none"><?php echo $catName ?: 'Apps'; ?></a></li>
<li class="breadcrumb-item active text-muted" aria-current="page"><?php echo $apk['title']; ?></li>
</ol>
</nav>
<div class="row g-4">
<!-- Main Content -->
<div class="col-lg-8">
<div class="bg-white p-3 p-md-5 rounded-4 shadow-sm mb-4">
<!-- Header Section -->
<div class="d-flex align-items-start mb-4">
<?php
$icon = !empty($apk['icon_path']) ? '/'.$apk['icon_path'] : $apk['image_url'];
?>
<img src="<?php echo $icon; ?>" class="rounded-4 me-3 me-md-4 shadow-sm" width="80" height="80" alt="<?php echo $apk['title']; ?>" style="object-fit: cover; min-width: 80px;">
<div>
<h1 class="h4 fw-bold mb-1 d-flex align-items-center flex-wrap">
<?php echo $apk['title']; ?>
<span class="badge bg-light text-muted fw-normal ms-2 fs-6">v<?php echo $apk['version']; ?></span>
</h1>
<p class="text-muted small mb-3"><?php echo __('official_version_text'); ?></p>
<div class="d-flex flex-wrap gap-2 mb-0">
<span class="badge bg-success-subtle text-success border border-success-subtle px-2 py-1 fw-medium rounded">
<i class="bi bi-download me-1"></i> <?php echo number_format($apk['total_downloads']); ?>
</span>
<span class="badge bg-info-subtle text-info border border-info-subtle px-2 py-1 fw-medium rounded">
<i class="bi bi-shield-check me-1"></i> <?php echo __('verified'); ?>
</span>
</div>
</div>
</div>
<!-- Action Button -->
<div class="mb-4" id="main-download-btn-area">
<a href="/download/<?php echo $apk['slug']; ?>" target="_blank" class="btn btn-success btn-lg w-100 py-3 rounded-pill fw-bold shadow-sm mb-2">
<i class="bi bi-download me-2"></i> <?php echo __('download_now'); ?>
</a>
<p class="text-muted text-center x-small mt-2" style="font-size: 0.75rem;">
<?php echo __('agree_terms_text'); ?>
</p>
</div>
<!-- Description -->
<div class="mb-5">
<h4 class="fw-bold h5 mb-3"><?php echo __('description'); ?></h4>
<div class="text-muted small lh-lg">
<?php echo nl2br(htmlspecialchars($apk['description'])); ?>
</div>
</div>
<!-- Features & Requirements Grid -->
<div class="row g-3 mb-5">
<div class="col-md-6">
<div class="p-4 rounded-4 bg-light h-100 border-0">
<h6 class="fw-bold mb-3 d-flex align-items-center">
<span class="p-1 bg-white rounded shadow-sm me-2 d-flex align-items-center justify-content-center" style="width: 28px; height: 28px;">
<i class="bi bi-star-fill text-warning" style="font-size: 0.8rem;"></i>
</span>
<?php echo __('main_features'); ?>
</h6>
<ul class="list-unstyled mb-0 text-muted small">
<li class="mb-2 d-flex align-items-center"><i class="bi bi-check-circle-fill text-success me-2"></i> <?php echo __('feature_original'); ?></li>
<li class="mb-2 d-flex align-items-center"><i class="bi bi-check-circle-fill text-success me-2"></i> <?php echo __('feature_no_extra'); ?></li>
<li class="mb-2 d-flex align-items-center"><i class="bi bi-check-circle-fill text-success me-2"></i> <?php echo __('feature_fast'); ?></li>
<li class="d-flex align-items-center"><i class="bi bi-check-circle-fill text-success me-2"></i> <?php echo __('feature_regular'); ?></li>
</ul>
</div>
</div>
<div class="col-md-6">
<div class="p-4 rounded-4 bg-light h-100 border-0">
<h6 class="fw-bold mb-3 d-flex align-items-center">
<span class="p-1 bg-white rounded shadow-sm me-2 d-flex align-items-center justify-content-center" style="width: 28px; height: 28px;">
<i class="bi bi-gear-fill text-secondary" style="font-size: 0.8rem;"></i>
</span>
<?php echo __('system_requirements'); ?>
</h6>
<ul class="list-unstyled mb-0 text-muted small">
<li class="mb-2 d-flex align-items-center"><i class="bi bi-info-circle me-2"></i> <?php echo __('req_android'); ?></li>
<li class="mb-2 d-flex align-items-center"><i class="bi bi-memory me-2"></i> <?php echo __('req_ram'); ?></li>
<li class="mb-2 d-flex align-items-center"><i class="bi bi-hdd-network me-2"></i> <?php echo __('req_internet'); ?></li>
<li class="d-flex align-items-center"><i class="bi bi-cpu me-2"></i> <?php echo __('req_cpu'); ?></li>
</ul>
</div>
</div>
</div>
<!-- Safety Banner -->
<div class="bg-success rounded-4 p-4 text-center">
<h6 class="fw-bold text-white mb-2"><?php echo __('safe_question'); ?></h6>
<p class="text-white text-opacity-75 small mb-0">
<?php echo __('safe_answer'); ?>
</p>
</div>
</div>
<!-- Related Apps Section -->
<?php
$relatedApks = $db->query("SELECT * FROM apks WHERE category_id = " . ($apk['category_id'] ?: 0) . " AND id != " . $apk['id'] . " LIMIT 6")->fetchAll();
if ($relatedApks):
?>
<div class="mb-5">
<h4 class="fw-bold h5 mb-3 d-flex align-items-center">
<i class="bi bi-grid-fill text-success me-2"></i> <?php echo __('similar_apps'); ?>
</h4>
<div class="row g-2">
<?php foreach ($relatedApks as $rapk): ?>
<div class="col-4 col-md-4">
<a href="/apk/<?php echo $rapk['slug']; ?>" class="text-decoration-none">
<div class="card border-0 shadow-sm rounded-4 text-center p-2 h-100 hover-lift">
<img src="<?php echo !empty($rapk['icon_path']) ? '/'.$rapk['icon_path'] : $rapk['image_url']; ?>" class="rounded-3 mx-auto mb-2 shadow-sm" width="48" height="48" style="object-fit: cover;">
<h6 class="card-title fw-bold mb-0 text-truncate small" style="font-size: 0.7rem;"><?php echo $rapk['title']; ?></h6>
</div>
</a>
</div>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
</div>
<!-- Sidebar / Additional Info -->
<div class="col-lg-4">
<div class="position-sticky" style="top: 5.5rem;">
<div class="bg-white p-4 rounded-4 shadow-sm mb-4 text-center border-0 py-5">
<h5 class="fw-bold mb-3 h6"><?php echo __('share_earn'); ?></h5>
<p class="text-muted small mb-4 lh-sm"><?php echo __('share_earn_text'); ?></p>
<div class="input-group mb-3 border rounded-pill p-1">
<?php
$ref = isset($_SESSION['user_id']) ? $db->query("SELECT referral_code FROM users WHERE id = ".$_SESSION['user_id'])->fetchColumn() : '';
$shareLink = 'http://'.$_SERVER['HTTP_HOST'].'/apk/'.$apk['slug'].($ref ? '?ref='.$ref : '');
?>
<input type="text" class="form-control form-control-sm border-0 bg-transparent ps-3" id="shareLink" value="<?php echo $shareLink; ?>" readonly>
<button class="btn btn-success btn-sm rounded-pill px-3" type="button" onclick="copyShareLink()"><?php echo __('copy'); ?></button>
</div>
<?php if (!$ref): ?>
<a href="/login" class="small text-success text-decoration-none fw-medium"><?php echo __('login_to_earn'); ?></a>
<?php endif; ?>
</div>
<!-- Report / Request Section -->
<div class="bg-light p-4 rounded-4 mb-4 border-0">
<h6 class="fw-bold mb-3 d-flex align-items-center">
<i class="bi bi-flag-fill text-danger me-2"></i> <?php echo __('support_issues'); ?>
</h6>
<p class="text-muted small mb-3"><?php echo __('support_text'); ?></p>
<div class="d-grid gap-2">
<button type="button" class="btn btn-outline-danger btn-sm rounded-pill" data-bs-toggle="modal" data-bs-target="#reportModal" onclick="setReportType('<?php echo __('report_issue'); ?>')">
<i class="bi bi-exclamation-triangle me-1"></i> <?php echo __('report_issue'); ?>
</button>
<button type="button" class="btn btn-outline-dark btn-sm rounded-pill" data-bs-toggle="modal" data-bs-target="#reportModal" onclick="setReportType('<?php echo __('request_update'); ?>')">
<i class="bi bi-arrow-repeat me-1"></i> <?php echo __('request_update'); ?>
</button>
</div>
</div>
<div class="bg-dark text-white p-4 rounded-4 shadow-sm text-center border-0 d-none d-lg-block">
<div class="bg-success bg-opacity-10 rounded-circle d-inline-flex p-3 mb-3">
<i class="bi bi-trophy text-success h4 mb-0"></i>
</div>
<h5 class="fw-bold mb-3 h6"><?php echo __('referral_program'); ?></h5>
<p class="small text-white-50 mb-4 lh-sm"><?php echo __('referral_program_text'); ?></p>
<a href="/register" class="btn btn-success fw-bold w-100 rounded-pill py-2 shadow-sm"><?php echo __('get_started'); ?></a>
</div>
</div>
</div>
</div>
</div>
<!-- Report/Request Modal -->
<div class="modal fade" id="reportModal" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content border-0 rounded-4 overflow-hidden">
<div class="modal-header bg-dark text-white py-4 border-0">
<h5 class="modal-title fw-bold" id="reportModalLabel"><?php echo __('report_issue'); ?></h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
</div>
<form id="report-form">
<input type="hidden" name="apk_name" value="<?php echo htmlspecialchars($apk['title']); ?>">
<input type="hidden" name="subject" id="report-subject" value="Report Issue">
<div class="modal-body p-4">
<div id="report-alert"></div>
<div class="mb-3">
<label class="form-label fw-bold"><?php echo __('your_email'); ?></label>
<input type="email" class="form-control" name="email" placeholder="email@example.com" required>
</div>
<div class="mb-0">
<label class="form-label fw-bold"><?php echo __('message_details'); ?></label>
<textarea class="form-control" name="message" rows="4" placeholder="<?php echo __('message_placeholder'); ?>" required></textarea>
</div>
</div>
<div class="modal-footer border-0 p-4 pt-0">
<button type="button" class="btn btn-light px-4 rounded-pill" data-bs-dismiss="modal"><?php echo __('cancel'); ?></button>
<button type="submit" class="btn btn-success px-4 rounded-pill" id="report-submit-btn"><?php echo __('send'); ?></button>
</div>
</form>
</div>
</div>
</div>
<!-- Sticky Download Bar (Mobile Only) -->
<div class="sticky-download-bar" id="sticky-download-bar">
<div class="d-flex align-items-center">
<img src="<?php echo $icon; ?>" class="rounded-2 me-3" width="40" height="40" alt="<?php echo $apk['title']; ?>">
<div class="flex-grow-1 overflow-hidden">
<h6 class="fw-bold mb-0 text-truncate" style="font-size: 0.9rem;"><?php echo $apk['title']; ?></h6>
<span class="x-small text-muted" style="font-size: 0.7rem;">v<?php echo $apk['version']; ?></span>
</div>
<a href="/download/<?php echo $apk['slug']; ?>" class="btn btn-success btn-sm rounded-pill px-3 fw-bold">
<?php echo __('download'); ?>
</a>
</div>
</div>
<!-- Share FAB (Mobile Only) -->
<a href="#" class="share-fab" id="mobile-share-btn">
<i class="bi bi-share-fill"></i>
</a>
<script>
function copyShareLink() {
var copyText = document.getElementById("shareLink");
copyText.select();
copyText.setSelectionRange(0, 99999);
navigator.clipboard.writeText(copyText.value);
const btn = event.target;
const originalText = btn.innerText;
btn.innerText = "<?php echo __('copied'); ?>";
btn.classList.replace('btn-success', 'btn-dark');
setTimeout(() => {
btn.innerText = originalText;
btn.classList.replace('btn-dark', 'btn-success');
}, 2000);
}
function setReportType(type) {
document.getElementById('reportModalLabel').innerText = type;
document.getElementById('report-subject').value = type + ': <?php echo addslashes($apk['title']); ?>';
}
document.getElementById('report-form').addEventListener('submit', function(e) {
e.preventDefault();
const btn = document.getElementById('report-submit-btn');
const alertBox = document.getElementById('report-alert');
btn.disabled = true;
btn.innerHTML = '<span class="spinner-border spinner-border-sm"></span> <?php echo __('sending'); ?>';
const formData = new FormData(this);
fetch('/api/report', {
method: 'POST',
headers: { 'X-Requested-With': 'XMLHttpRequest' },
body: formData
})
.then(res => res.json())
.then(data => {
btn.disabled = false;
btn.innerHTML = '<?php echo __('send'); ?>';
if (data.success) {
alertBox.innerHTML = '<div class="alert alert-success border-0 small">' + data.success + '</div>';
setTimeout(() => {
const modal = bootstrap.Modal.getInstance(document.getElementById('reportModal'));
modal.hide();
alertBox.innerHTML = '';
this.reset();
}, 2000);
} else {
alertBox.innerHTML = '<div class="alert alert-danger border-0 small">' + data.error + '</div>';
}
})
.catch(err => {
btn.disabled = false;
btn.innerHTML = '<?php echo __('send'); ?>';
alertBox.innerHTML = '<div class="alert alert-danger border-0 small"><?php echo __('error_occurred'); ?></div>';
});
});
// Sticky Bar Logic
window.addEventListener('scroll', function() {
const mainBtn = document.getElementById('main-download-btn-area');
const stickyBar = document.getElementById('sticky-download-bar');
if (mainBtn && stickyBar) {
const rect = mainBtn.getBoundingClientRect();
if (rect.bottom < 0) {
stickyBar.classList.add('show');
} else {
stickyBar.classList.remove('show');
}
}
});
// Native Web Share API
document.getElementById('mobile-share-btn').addEventListener('click', function(e) {
e.preventDefault();
if (navigator.share) {
navigator.share({
title: '<?php echo $apk['title']; ?>',
text: '<?php echo __('share_text'); ?>',
url: '<?php echo $shareLink; ?>',
}).catch((error) => console.log('Error sharing', error));
} else {
copyShareLink();
}
});
</script>
<?php include 'footer.php'; ?>