<?php
defined('BASEPATH') OR exit('No direct script access allowed');

use Coduo\PHPHumanizer\DateTimeHumanizer;

class GeneralModel extends CI_Model {

    function __construct()
    {
        parent::__construct();
        $this->load->model('BlogModel', '', TRUE);
        $this->load->model('NotificationModel', '', TRUE);
    }

    function getBlogPosts($count)
    {
        $posts = $this->BlogModel->getMostRecentPosts($count);

        $return = '';
        foreach($posts as $result) {
            $date = strtotime($result['postPublishDate']);
            $return .= '<div class="media">
                                <div class="pull-left">
                                    <img src="' . $result['postImage'] . '?w=100" style="max-width:100px" class="img-fluid">
                                </div>
                                <div class="media-body">
                                    <span class="media-heading"><a href="#">' . $result['postTitle'] . '</a></span>
                                    <small class="muted">' . lang('footer_published') . ' ' . DateTimeHumanizer::difference(new \DateTime(), new \DateTime("@$date"), $_SESSION['site_lang']) . '</small>
                                </div>
                            </div>';
        }
        return $return;
    }

    function addFeedbackAnonymously($pageUrl, $message) {
        $this->addFeedback($pageUrl, $message, true, NULL, NULL);
    }

    function addFeedback($pageUrl, $message, $anonymous, $userID, $email) {
        $this->db->query('INSERT INTO feedback (page, message, anonymous, userID, email) VALUES (?, ?, ?, ?, ?)', [$pageUrl, $message, $anonymous, $userID, $email]);
        $this->db->cache_delete('admin', 'feedback');

        // Send notifications
        $this->NotificationModel->rankNotificationNewFeedback($userID != NULL ? $userID : -1, 9, $pageUrl);
    }

    function getRankName($rankID) {
        $ranks = [
            0 => "Nutzer",
            1 => "Registrierter Nutzer",
            2 => "Premium-Nutzer",
            3 => "Plus-Nutzer",
            6 => "Autor (Blog)",
            7 => "Editor (Blog)",
            8 => "Moderator",
            9 => "Admin",
            10 => "Admin"
        ];
        return isset($ranks[$rankID]) ? $ranks[$rankID] : "Nutzer";
    }

}