@SamA74 @benanamen
Here is my code, let me know if there is something wrong
:
Controller Code:
public function reviews($id)
{
if($_SERVER['REQUEST_METHOD']=='POST'){
$_POST = filter_input_array(INPUT_POST,FILTER_SANITIZE_STRING);
$getSettings = $this->setting->getAll();
$getCategories = $this->setting->getCategories();
$getItemById = $this->item->getItemById($id);
$getItemReviews = $this->item->getItemReviews($id);
$data = [
'getSettings' => $getSettings,
'getCategories' => $getCategories,
'getItem' => $getItemById,
'getItemReviews' => $getItemReviews,
'review' => trim($_POST['review']),
'rating' => trim(validrange($_POST['rating'])),
'user_id' => '1',
'item_id' => $id,
'review_err' => '',
'rating_err' => ''
];
if( empty($data['review']) ){
$data['review_err'] = 'Your review cannot be empty!';
}
if ( empty($data['review_err']) && empty($data['rating_err'])){
if( $this->item->addReview($data) ){
flash('comment_alert', 'Review Added', 'alert alert-success');
redirect('item/reviews/'.$id.'/');
} else{
die('Something went wrong');
}
} else {
$this->view('item/item-reviews', $data);
}
} else{
$getSettings = $this->setting->getAll();
$getCategories = $this->setting->getCategories();
$getItemById = $this->item->getItemById($id);
$getItemReviews = $this->item->getItemReviews($id);
$data = [
'getSettings' => $getSettings,
'getCategories' => $getCategories,
'getItem' => $getItemById,
'getItemReviews' => $getItemReviews,
'review' => '',
'rating' => ''
];
if($getItemById == false) { redirect('error'); die(); }
$this->view('item/item-reviews', $data);
}
}
public function deletereview($id)
{
if($_SERVER['REQUEST_METHOD']=='POST') {
$review = $this->item->getReviewDetails($id);
$data = [
'user_id' => '1',
'review_id' => $id
];
if($review[0]['user_id'] != '1'){
flash('comment_alert', 'Something went wrong!', 'alert alert-danger rounded');
redirect('item/reviews/'.$review[0]['item_id'].'/');
die();
}
if( $this->item->deleteReview($data) ){
flash('comment_alert', 'Review Deleted', 'alert alert-success');
redirect('item/reviews/'.$review[0]['item_id'].'/');
} else {
die('Something went wrong');
}
} else {
redirect('');
}
}
Model Code:
public function getReviewDetails($id)
{
$bind = [':id' => $id];
$results = $this->db->select('msi_items_reviews','id = :id', $bind);
return $results;
}
public function addReview($data)
{
$date = date("Y-m-d H:i:s");
$data1 = [
'user_id' => $data['user_id'],
'review' => $data['review'],
'rating' => $data['rating'],
'item_id' => $data['item_id'],
'status' => '1',
'date' => $date
];
$this->db->insert('msi_items_reviews', $data1);
return true;
}
public function deleteReview($data)
{
$bind = [
':id' => $data['review_id'],
':user_id' => $data['user_id']
];
$this->db->delete('msi_items_reviews', 'id = :id AND user_id = :user_id', $bind);
return true;
}
View Code:
<div class="col-sm-8">
<div class="row">
<div class="col-12">
<?php echo flash('comment_alert'); ?>
</div>
<?php if( $data['getItemReviews'] == FALSE ) { ?>
<div class="col-12">
<div class="alert alert-primary shadow-1" role="alert">
<b><i class="fas fa-info-circle"></i> No Reviews Found!</b>
</div>
</div>
<?php } else { foreach($data['getItemReviews'] as $review) : ?>
<div class="col-lg-12 col-md-12 col-sm-12 mb-3">
<div class="card h-100 shadow-1">
<div class="card-body card-padding">
<div class="float-left"><img itemprop="image" width="80" class="img-fluid rounded mr-4" src="<?php echo FULL_ROOT;?>/uploads/items/<?php echo $data['getItem'][0]['id']; ?>/<?php echo $data['getItem'][0]['icon_img']; ?>" alt="<?php echo $data['getItem'][0]['name']; ?>"></div>
<div class="clearfix">
<div class="float-right">
<p><i class="far fa-clock mr-1"></i>
<?php echo helper_format_date_5(strtotime($review['date'])); ?>
</p>
</div>
<div class="mb-2 font-weight-bold">
<a>
<?php echo $review['username']; ?>
</a> <span class="badge badge-success">Purchased</span></div>
<div class="mb-2">
<b>Rating:</b>
<?php
$rate = $review['rating'];
for ($x = 0; $x < $rate; $x++) {
echo '<i class="fas fa-star"></i>';
}
for ($x = 0; $x < 5-$rate; $x++) {
echo '<i class="far fa-star"></i>';
}
?>
</div>
<div>
<p>
<?php echo $review['review']; ?>
</p>
</div>
<form class="float-right" action="<?php echo FULL_ROOT;?>/reviews/delete/<?php echo $review['id']; ?>" method="post">
<input type="submit" value="Delete" class="btn btn-sm btn-lightb">
</form>
</div>
</div>
</div>
</div>
<?php endforeach; } ?>
</div>
<div class="card shadow-1">
<div class="card-body">
<form action="" method="post" class="mb-0">
<h6>Leave a review</h6>
<div class="form-group">
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="1" value="1" name="rating" class="custom-control-input">
<label class="custom-control-label" for="1">1</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="2" value="2" name="rating" class="custom-control-input">
<label class="custom-control-label" for="2">2</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="3" value="3" name="rating" class="custom-control-input">
<label class="custom-control-label" for="3">3</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="4" value="4" name="rating" class="custom-control-input">
<label class="custom-control-label" for="4">4</label>
</div>
<div class="custom-control custom-radio custom-control-inline">
<input type="radio" id="5" value="5" name="rating" class="custom-control-input" checked>
<label class="custom-control-label" for="5">5</label>
</div>
</div>
<div class="form-group mb-0">
<textarea name="review" class="form-control <?php echo (!empty($data['review_err'])) ? 'is-invalid' : ''; ?>" id="exampleFormControlTextarea1" rows="4">
<?php echo $data['review']; ?>
</textarea>
<span class="invalid-feedback"><?php echo $data['review_err']; ?></span>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>