/**
     * @param $token
     * @return bool|string
     */
    public function renderAd($token)
    {
        global $db;
        //Getting Ad details by token
        $query = $db->prepare("SELECT * FROM " . TABLE_PUBLISHER_ADS . " WHERE token=%s", $token);
        $adDetail = $db->getRow($query);
        if (!$adDetail) {
            return false;
        }
        $classAds = new BuckysAds();
        $sizeDetail = $classAds->getAdSizeById($adDetail['size']);
        //fixes a display issues with vertical ads
        if ($sizeDetail['type'] == 'vertical') {
            $spaceToSubtract = $sizeDetail['width'] - 18;
            //16px for padding, 2px for border
            $displayWidth = 'width:' . $spaceToSubtract . 'px;';
        }
        //changes padding for horizontal ads
        if ($sizeDetail['type'] == 'horizontal' && $sizeDetail['ads'] > 1) {
            $newHorizontalPadding = 'padding: 0px 20px;';
        }
        $query1 = "SELECT AD.* FROM " . TABLE_ADS . " AS AD WHERE AD.defaultAd=0 AND AD.status='" . TNB_AD_STATUS_ACTIVE . "' AND AD.ownerID != '" . $adDetail['publisherID'] . "' AND AD.type = 'Text' ORDER BY rand() LIMIT " . $sizeDetail['ads'];
        $query2 = "SELECT AD.* FROM " . TABLE_ADS . " AS AD WHERE AD.defaultAd=0 AND AD.status='" . TNB_AD_STATUS_ACTIVE . "' AND AD.ownerID != '" . $adDetail['publisherID'] . "' AND AD.type = 'Image' AND AD.adSize='" . $sizeDetail['id'] . "' ORDER BY rand() LIMIT 1";
        if (mt_rand(0, 10) > 5) {
            $results = $db->getResultsArray($query1);
            if (!$results) {
                $results = $db->getResultsArray($query2);
            }
        } else {
            $results = $db->getResultsArray($query2);
            if (!$results) {
                $results = $db->getResultsArray($query1);
            }
        }
        //Do not display borders on Image ads
        if ($results[0]['type'] == 'Image') {
            $displayBorder = ';border:none;';
        }
        if (count($results) < $sizeDetail['ads']) {
            //Getting Buckysroom Default Ads
            $query3 = "SELECT AD.* FROM " . TABLE_ADS . " AS AD WHERE AD.defaultAd=1 AND AD.status='" . TNB_AD_STATUS_ACTIVE . "' AND AD.type = 'Text' ORDER BY rand() LIMIT " . ($sizeDetail['ads'] - count($results));
            $results2 = $db->getResultsArray($query3);
            $results = array_merge($results, $results2);
        }
        $counts = count($results);
        $formToken = buckys_get_form_token();
        $bannerHTML = '<div class="buckysroom-ad-banner" id="buckysroom-ads-preview">';
        $bannerHTML .= '<table cellpadding="0" cellspacing="0" style="width: ' . $sizeDetail['width'] . 'px; height: ' . $sizeDetail['height'] . 'px; border: solid 1px #' . $adDetail['borderColor'] . ';  background-color: #' . $adDetail['bgColor'] . $displayBorder . '">';
        for ($i = 1; $i <= $counts; $i++) {
            if ($sizeDetail['type'] == 'vertical' || $i == 1) {
                $bannerHTML .= '<tr>';
            }
            $bannerHTML .= '<td>';
            if ($results[$i - 1]['type'] == 'Text') {
                $bannerHTML .= '<div class="buckysroom-ad ' . $sizeDetail['class'] . ' " style=" ' . $displayWidth . $newHorizontalPadding . ' ">
                                    <a href="//' . TNB_DOMAIN . '/goto-ad-url.php?key=' . $results[$i - 1]['adKey'] . '&' . $formToken . '=1&url=' . base64_encode($results[$i - 1]['url']) . '" class="bsroom-ad-title" style="color: #' . $adDetail['titleColor'] . '" target="_blank">' . $results[$i - 1]['title'] . '</a>
									<br />
                                    <p class="bsroom-ad-desc" style="color: #' . $adDetail['textColor'] . '">' . $results[$i - 1]['description'] . '</p>
                                    <div style=" ' . $displayWidth . 'overflow:hidden;">
									<a style="color: #' . $adDetail['urlColor'] . '" href="//' . TNB_DOMAIN . '/goto-ad-url.php?key=' . $results[$i - 1]['adKey'] . '&' . $formToken . '=1&url=' . base64_encode($results[$i - 1]['url']) . '" class="bsroom-ad-link" target="_blank">' . $results[$i - 1]['display_url'] . '</a>
									</div>
                                </div>';
            } else {
                $bannerHTML .= '<div class="buckysroom-ad buckysroom-ad-image"  style="padding: 0; margin: 0; line-height: 0; overflow: hidden"><a href="//' . TNB_DOMAIN . '/goto-ad-url.php?key=' . $results[$i - 1]['adKey'] . '&' . $formToken . '=1&url=' . base64_encode($results[$i - 1]['url']) . '" target="_blank"><img src="' . DIR_WS_IMAGE . 'user_ads/' . $results[$i - 1]['fileName'] . '" width="' . $sizeDetail['width'] . '" height="' . $sizeDetail['height'] . '" /></a></div>';
            }
            $bannerHTML .= '</td>';
            if ($sizeDetail['type'] == 'vertical' || $i == $counts) {
                $bannerHTML .= '</tr>';
            }
            if ($results[$i - 1]['defaultAd']) {
                continue;
            }
            $db->query("UPDATE " . TABLE_PUBLISHER_ADS . " SET `impressions` = `impressions` + 1 WHERE id=" . $adDetail['id']);
            $db->query("UPDATE " . TABLE_ADS . " SET `receivedImpressions` = `receivedImpressions` + 1 WHERE id=" . $results[$i - 1]['id']);
            //Make it to expired if all expressions are received
            $db->query("UPDATE " . TABLE_ADS . " SET `status` = " . TNB_AD_STATUS_EXPIRED . " WHERE  id=" . $results[$i - 1]['id'] . " AND `receivedImpressions` >= `impressions` ");
            //Image ads were creating multiple table rows
            if ($results[$i - 1]['type'] == 'Image') {
                break;
            }
        }
        $bannerHTML .= '</table>';
        $bannerHTML .= '</div>';
        return $bannerHTML;
    }
 // temp files
 if (!is_dir($targetPath)) {
     mkdir($targetPath, 0777);
     //Create Index.html to prevent directory listing issue
     $fp = fopen($targetPath . "/index.html", "w");
     fclose($fp);
 }
 // Validate the file type
 $fileParts = pathinfo($_FILES['Filedata']['name']);
 //Check the file extension
 if (in_array(strtolower($fileParts['extension']), $TNB_GLOBALS['imageTypes'])) {
     //Check Image Size
     list($width, $height, $type, $attr) = getimagesize($tempFile);
     //Check Size
     $adClass = new BuckysAds();
     $size = $adClass->getAdSizeById($_REQUEST['size']);
     $offset = abs($width - $size['width']) + abs($height - $size['height']);
     if ($offset > 4) {
         echo json_encode(['success' => 0, 'msg' => MSG_INVALID_PHOTO_SIZE]);
         exit;
     }
     if (!in_array($type, [IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_JPEG2000, IMAGETYPE_PNG])) {
         echo json_encode(['success' => 0, 'msg' => MSG_INVALID_PHOTO_TYPE]);
         exit;
     }
     if ($width > MAX_IMAGE_WIDTH || $height > MAX_IMAGE_HEIGHT) {
         echo json_encode(['success' => 0, 'msg' => MSG_PHOTO_MAX_SIZE_ERROR]);
     } else {
         $targetFileName = md5(session_id() . 'ad') . "." . $fileParts['extension'];
         $targetFile = $targetPath . $targetFileName;
         move_uploaded_file($tempFile, $targetFile);
<?php

require dirname(dirname(__FILE__)) . '/includes/bootstrap.php';
//Getting Current User ID
if (!buckys_check_user_acl(USER_ACL_REGISTERED)) {
    buckys_redirect('/index.php', MSG_PERMISSION_DENIED, MSG_TYPE_ERROR);
}
$userID = buckys_is_logged_in();
$classPublisherAd = new BuckysPublisherAds();
buckys_enqueue_stylesheet('publisher.css');
$adID = buckys_escape_query_integer($_GET['id']);
$adDetail = $classPublisherAd->getAdById($adID);
if (!$adDetail || $adDetail['publisherID'] != $userID && buckys_check_user_acl(USER_ACL_MODERATOR)) {
    buckys_redirect('/ads/publisher.php', MSG_INVALID_REQUEST, MSG_TYPE_ERROR);
}
$classAds = new BuckysAds();
$sizeDetail = $classAds->getAdSizeById($adDetail['size']);
$TNB_GLOBALS['headerType'] = "ads";
$TNB_GLOBALS['content'] = "ads/publisher_ad_view";
$TNB_GLOBALS['title'] = "View Ad Details - thenewboston Ads";
require DIR_FS_TEMPLATE . $TNB_GLOBALS['template'] . "/" . $TNB_GLOBALS['layout'] . ".php";