I am working on a product expiration module, meaning I can set a time/date for the product to expire automatically and no longer be available to purchase/download.
I created the module under: catalog/controller/module/product_expiry/product_expiry.php
Code: Select all
<?php
class ControllerModuleProductExpiry extends Controller {
public function index($setting) {
$this->load->language('module/product_expiry');
$data['heading_title'] = $this->language->get('heading_title');
if (isset($setting['title'][$this->config->get('config_language_id')])) {
$data['heading_title'] = $setting['title'][$this->config->get('config_language_id')];
}
$this->load->model('catalog/product');
$this->load->model('module/product_expiry');
$products = $this->model_catalog_product->getProducts();
foreach ($products as $product) {
$product_id = $product['product_id'];
$expiry_date = $this->model_module_product_expiry->getProductExpiry($product_id);
if ($expiry_date) {
$current_date = date("Y-m-d");
if ($current_date > $expiry_date) {
$product['expired'] = true;
} else {
$product['expired'] = false;
}
} else {
$product['expired'] = false;
}
$data['products'][] = $product;
}
return $this->load->view('module/product_expiry', $data);
}
}
Code: Select all
<div class="product-expiry">
<h3><?php echo $heading_title; ?></h3>
<table>
<tr>
<th><?php echo $column_product; ?></th>
<th><?php echo $column_expiry; ?></th>
<th><?php echo $column_status; ?></th>
</tr>
<?php foreach ($products as $product) { ?>
<tr>
<td><?php echo $product['name']; ?></td>
<td><?php echo $product['expiry_date']; ?></td>
<td>
<?php if ($product['expired']) { ?>
<span class="expired"><?php echo $text_expired; ?></span>
<?php } else { ?>
<span class="valid"><?php echo $text_valid; ?></span>
<?php } ?>
</td>
</tr>
<?php } ?>
</table>
</div>
Code: Select all
<?php
class ModelModuleProductExpiry extends Model {
public function getProductExpiry($product_id) {
$query = $this->db->query("SELECT expiry_date FROM " . DB_PREFIX . "product_expiry WHERE product_id = '" . (int)$product_id . "'");
if ($query->num_rows) {
return $query->row['expiry_date'];
} else {
return false;
}
}
}
And under admin/controller/extension/module.php I changed the
$installed = [];
to
$installed[] = 'product_expiry';
Any help is appreciated.