<?php

require_once(__DIR__ . '/hoosk_page_helper.php');



function lq($result = '')
{
    echo get_instance()->db->last_query();
    print_r($result);
    exit;
}

function getPostLink($post, $sn)
{
    $post = is_object($post) ? $post : (object) $post;
    $contentSection = ($sn == 'opinions' ? 'channel' : 'news');
    return BASE_URL . '/' . $contentSection . '/' . ($sn == 'opinions' ? $post->pageID : $sn) . '/' . (empty($post->postSeq) ? $post->postID : $post->postSeq);
}

function getChildrenByParentId($parentId)
{
    $sql = "SELECT 
                    categoryID
                FROM
                    (SELECT 
                        categoryID
                    FROM
                        cm_category
                    WHERE
                        parentID = $parentId) a 
                UNION SELECT 
                    categoryID
                FROM
                    cm_category
                WHERE
                    parentID IN (SELECT 
                            categoryID
                        FROM
                            cm_category
                        WHERE
                            parentID = $parentId)";
    return array_column(get_instance()->db->query($sql)->result(), 'categoryID');
}

function getNewsArticleURL($data, $sn = null)
{
    $articles = [];
    if (is_null($sn)) {
        $subcategories = [];
        foreach (NEWS_SECTION_CATEGORY as $sn => $sc) {
            $subcategories[$sn] = getChildrenByParentId($sc);
            array_push($subcategories[$sn], $sc);
        }
        foreach (NEWS_SECTION_CATEGORY as $sn => $sc) {
            foreach ($data as $post) {
                if (array_search($post->categoryID, $subcategories[$sn]) !== false) {
                    $post->articleURL = getPostLink($post, $sn);
                    array_push($articles, $post);
                }
            }
        }
    } else if (is_numeric($sn)) {
        get_instance()->load->model('category_model');
        $subcategories = get_instance()->category_model->getSubcategoriesByCategoryId($sn);
    } else {
        foreach ($data as $k => $p) {
            $data[$k]->articleURL = getPostLink($p, $sn);
        }
    }
    return $articles;
}

function getResultWithAuthor(&$data)
{
    $userIds = array_column($data, 'userID');
    if (count($userIds)) {
        $users = get_instance()->db->where_in('cm_user.userID', $userIds)
            ->get('cm_user')
            ->result();
    }
    foreach ($data as $k => $t) {
        $data[$k]->author = '';
        foreach ($users as $u) {
            if ($t->userID == $u->userID) {
                $data[$k]->author = $u->name;
            }
        }
    }
}

function r(callable $fn, $cache)
{
    if (is_null($cache) || !$data = get_instance()->cache->get($cache['n'])) {
        $data = $fn();
        if (!is_null($cache) && !is_null($data)) {
            $this->cache->save($cache['n'], $data, $cache['t']);
        }
    }
    return $data;
}

function s($task, $duration, $cache)
{
    $cache = 'task-' . $cache;
    $lastExecutionTime = get_instance()->cache->get($cache);
    if (time() - $lastExecutionTime >= $duration) {
        get_instance()->cache->save($cache, time(), 60 * 60);
        $task();
    }
}

function getSessionUser()
{
    $user = (object) ['is' => false];
    get_instance()->load->library('session');
    if (get_instance()->session->userdata('auth')) {
        $user = json_decode(get_instance()->session->userdata('auth'));
        $user->is = true;
    };
    return $user;
}

function getSearchTerm()
{
    return get_instance()->input->get('term') ? get_instance()->input->get('term') : get_instance()->input->post('term');
}

function getPostComments($postId)
{
    get_instance()->load->mode('comment_model');
    $comments = get_instance()->comment_model->getByPostId($postId);
    return $comments;
}

function getImageUrl($imagePath)
{
    // return 'https://crossmap.co.kr' . $imagePath;
    return strpos($imagePath, 'thumbs/') === false && strpos($imagePath, 'images/') === false ? 'https://crossmap.co.kr' . $imagePath : $imagePath;
}

function getThumbUrl($imagePath, $postThumb)
{
    return 'https://crossmap.co.kr' . str_replace('files/', 'thumbs/', $imagePath);
    return $postThumb ? $postThumb : 'https://crossmap.co.kr' . str_replace('files/', 'thumbs/', $imagePath);
}

function isAdminSite()
{
    return defined('HOOSK_ADMIN') && HOOSK_ADMIN == 1;
}

function getPostsImageUrl(&$posts)
{
    if (is_array($posts)) {
        foreach ($posts as $k => $v) {
            if (is_array($v)) {
                if(isset($posts[$k]['postImage'])){
                    strpos($posts[$k]['postImage'], '://') === false ? ($posts[$k]['postImage'] = getImageUrl($posts[$k]['postImage'])) : '';
                    $posts[$k]['postImage'] = str_replace('http://', 'https://', $posts[$k]['postImage']);
                } 
            } else {
                if(isset($posts[$k]->postImage)) {
                    strpos($posts[$k]->postImage, '://') === false ? ($posts[$k]->postImage = getImageUrl($posts[$k]->postImage)) : '';
                    $posts[$k]->postImage = str_replace('http://', 'https://', $posts[$k]->postImage);
                }                
            }
        }
    }
}

function getPrayPostUrl($post) {
    return implode('/', ['/pray', $post->categorySlug, $post->postSeq]);
}