![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/gositeme.com/public_html/quickqr/php/ |
<?php
if (isset($_GET['slug']) || $_GET['id']) {
if (isset($_GET['id'])) {
$restaurant = ORM::for_table($config['db']['pre'] . 'restaurant')
->find_one($_GET['id']);
} else {
$restaurant = ORM::for_table($config['db']['pre'] . 'restaurant')
->where('slug', $_GET['slug'])
->find_one();
}
if (isset($restaurant['name'])) {
// Get usergroup details
$user_info = ORM::for_table($config['db']['pre'] . 'user')
->select('group_id')
->find_one($restaurant['user_id']);
$group_id = isset($user_info['group_id']) ? $user_info['group_id'] : 0;
// Get membership details
switch ($group_id) {
case 'free':
$plan = json_decode(get_option('free_membership_plan'), true);
$settings = $plan['settings'];
$limit = $settings['scan_limit'];
break;
case 'trial':
$plan = json_decode(get_option('trial_membership_plan'), true);
$settings = $plan['settings'];
$limit = $settings['scan_limit'];
break;
default:
$plan = ORM::for_table($config['db']['pre'] . 'plans')
->select('settings')
->where('id', $group_id)
->find_one();
if (!isset($plan['settings'])) {
$plan = json_decode(get_option('free_membership_plan'), true);
$settings = $plan['settings'];
$limit = $settings['scan_limit'];
} else {
$settings = json_decode($plan['settings'], true);
$limit = $settings['scan_limit'];
}
break;
}
// check for url
if (!empty($_GET['qr-id'])) {
$qr_id = quick_xor_decrypt(($_GET['qr-id']), 'quick-qr');
if ($_GET['slug'] == $qr_id || $_GET['id'] == $qr_id) {
if ($limit != "999") {
$start = date('Y-m-01');
$end = date('Y-m-t');
$total = ORM::for_table($config['db']['pre'] . 'restaurant_view')
->where('restaurant_id', $restaurant['id'])
->where_raw("`date` BETWEEN '$start' AND '$end'")
->count();
if ($total >= $limit) {
message($lang['NOTIFY'], $lang['SCAN_LIMIT_EXCEED']);
exit();
}
}
$add_view = ORM::for_table($config['db']['pre'] . 'restaurant_view')->create();
$add_view->restaurant_id = $restaurant['id'];
$add_view->ip = get_client_ip();
$add_view->date = date('Y-m-d H:i:s');
$add_view->save();
if(!empty($restaurant['slug'])){
headerRedirect($config['site_url'] . $restaurant['slug']);
}
}
}
$restro_id = $restaurant['id'];
$name = $restaurant['name'];
$sub_title = $restaurant['sub_title'];
$timing = $restaurant['timing'];
$description = nl2br(stripcslashes($restaurant['description']));
$address = $restaurant['address'];
$mapLat = $restaurant['latitude'];
$mapLong = $restaurant['longitude'];
$main_image = $restaurant['main_image'];
$cover_image = $restaurant['cover_image'];
$userdata = get_user_data(null, $restaurant['user_id']);
$restaurant_template = get_restaurant_option($restro_id, 'restaurant_template', 'classic-theme');
$category = array();
$cat = array();
$currency = !empty($userdata['currency']) ? $userdata['currency'] : get_option('currency_code');
$currency_data = get_currency_by_code($currency);
$allow_order = $allow_on_table = $allow_takeaway = $allow_delivery = $allow_payment = 0;
if ($settings['allow_ordering']) {
$allow_on_table = get_restaurant_option($restro_id, 'restaurant_on_table_order', get_restaurant_option($restro_id, 'restaurant_send_order', 1));
$allow_takeaway = get_restaurant_option($restro_id, 'restaurant_takeaway_order', 0);
$allow_delivery = get_restaurant_option($restro_id, 'restaurant_delivery_order', 0);
$allow_payment = (get_option("admin_allow_online_payment") == '1') ? get_restaurant_option($restro_id, 'restaurant_online_payment', 0) : 0;
$allow_order = $allow_on_table || $allow_takeaway || $allow_delivery;
}
$total_menus = $image_menu = array();
$menu_layout = !empty($userdata['menu_layout']) ? $userdata['menu_layout'] : 'both';
if ($restaurant_template != 'flipbook') {
function get_menu_tpl_by_cat_id($menu_tpl, $cat_id)
{
global $config, $lang, $settings, $currency, $restaurant_template, $allow_order, $menu_layout, $total_menus, $restaurant;
if ($menu_layout == 'grid') {
$grid_layout = 'style="display:block"';
$list_layout = 'style="display:none"';
} else if ($menu_layout == 'list') {
$grid_layout = 'style="display:none"';
$list_layout = 'style="display:block"';
} else {
$grid_layout = 'style="display:none"';
$list_layout = 'style="display:block"';
}
$menu = ORM::for_table($config['db']['pre'] . 'menu')
->where(array(
'cat_id' => $cat_id,
'user_id' => $restaurant['user_id'],
'active' => '1'
))
->order_by_asc('position')
->find_many();
$menu_count = 0;
foreach ($menu as $info2) {
if ($settings['menu_limit'] != "999" && $menu_count >= $settings['menu_limit']) {
break;
}
$menuId = $info2['id'];
$user_lang = !empty($_COOKIE['Quick_user_lang_code'])? $_COOKIE['Quick_user_lang_code'] : $config['lang_code'];
$json = json_decode($info2['translation'],true);
$title = !empty($json[$user_lang]['title'])?$json[$user_lang]['title']:$info2['name'];
$description = !empty($json[$user_lang]['description'])?$json[$user_lang]['description']:$info2['description'];
$menuName = ucfirst($title);
$menuDesc = $description;
$menuType = $info2['type'];
$menuPrice = price_format($info2['price'], $currency);
$menuImage = $info2['image'];
/* Variant Options */
$variant_options_data = ORM::for_table($config['db']['pre'] . 'menu_variant_options')
->where(array(
'menu_id' => $menuId,
'active' => 1
))
->order_by_asc('position')
->find_many();
$variant_options = array();
foreach ($variant_options_data as $info) {
$data = array();
$data['id'] = $info['id'];
$json = json_decode($info['translation'], true);
$data['title'] = !empty($json[$user_lang]['title'])
? $json[$user_lang]['title']
: $info['title'];
$data['options_array'] = !empty($json[$user_lang]['options'])
? $json[$user_lang]['options']
: json_decode($info['options'], true);
$data['title'] = htmlentities((string)$data['title'], ENT_QUOTES, 'UTF-8');
$data['options_array'] = array_map(function ($options){
return htmlentities((string)$options, ENT_QUOTES, 'UTF-8');
}, $data['options_array']);
$variant_options[] = $data;
}
/* Variants */
$variants_data = ORM::for_table($config['db']['pre'] . 'menu_variants')
->where(array(
'menu_id' => $menuId,
'active' => 1
))
->order_by_asc('position')
->find_many();
$variants = array();
foreach ($variants_data as $info) {
$data = array();
$data['id'] = $info['id'];
$data['price'] = $info['price'];
$data['options'] = json_decode($info['options'], true);
$variants[] = $data;
}
/* Extras */
$extras_data = ORM::for_table($config['db']['pre'] . 'menu_extras')
->where(array(
'menu_id' => $menuId,
'active' => 1
))
->order_by_asc('position')
->find_many();
$extras = array();
foreach ($extras_data as $info) {
$data = array();
$data['id'] = $info['id'];
$json = json_decode($info['translation'],true);
$title = !empty($json[$user_lang]['title'])?$json[$user_lang]['title']:$info['title'];
$data['title'] = htmlentities((string)$title, ENT_QUOTES, 'UTF-8');
$data['price'] = $info['price'];
$extras[] = $data;
}
$menu_data_array = array();
$menu_data_array['id'] = $menuId;
$menu_data_array['title'] = htmlentities((string)$menuName, ENT_QUOTES, 'UTF-8');
$menu_data_array['price'] = $info2['price'];
$menu_data_array['type'] = $menuType;
$menu_data_array['description'] = htmlentities((string)$menuDesc, ENT_QUOTES, 'UTF-8');
$menu_data_array['variant_options'] = $variant_options;
$menu_data_array['variants'] = $variants;
$menu_data_array['extras'] = $extras;
$total_menus[$menuId] = $menu_data_array;
/* Allergies */
$allergies_tpl = '';
if($config['admin_allergies']) {
$allergies = explode(',', $info2['allergies']);
if (!empty($allergies)) {
if (!empty($allergies[0])) {
$allergies_tpl .= '<ul class="d-inline-block p-0 padding-left-0 mt-1"><li class="d-inline"><strong class="menu_excerpt d-inline menu-recipe text-dark">' . $lang['ALLERGIES'] . '</strong></li>';
foreach ($allergies as $a) {
$allergies_data = ORM::for_table($config['db']['pre'] . 'allergies')
->find_one($a);
if (!empty($allergies_data)) {
if (!empty($allergies_data['image'])) {
$img = "<img src='{$allergies_data['image']}' alt='{$allergies_data['title']}' width='25' data-tippy-placement='top' title='{$allergies_data['title']}'>";
} else {
$img = "<img src='" . $config['site_url'] . 'templates/restro-theme/images/allergy.svg' . "' alt='{$allergies_data['title']}' width='20' data-tippy-placement='top' title='{$allergies_data['title']}'>";
}
$allergies_tpl .= "<li class='d-inline ml-1 margin-left-5'>$img</li>";
}
}
$allergies_tpl .= '</ul>';
}
}
}
if ($restaurant_template == 'classic-theme') {
$menu_tpl .= '
<div class="col-xl-3 col-lg-6 col-md-6 col-sm-6 ajax-item-listing menu-grid-view" ' . $grid_layout . ' data-id="' . $menuId . '" data-name="' . $menuName . '" data-price="' . $menuPrice . '" data-amount="' . $info2['price'] . '" data-description="' . $menuDesc . '" data-image-url="' . $config['site_url'] . 'storage/menu/' . $menuImage . '">
<div class="menu_item">
<figure>
<img class="lazy-load" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="' . $config['site_url'] . 'storage/menu/' . $menuImage . '" alt="' . $menuName . '">
</figure>
<div class="menu_detail">
<h4 class="menu_post">
<span class="menu_title"><span class="badge ' . $menuType . ' only"><i class="fa fa-circle"></i></span>' . $menuName . '</span>
<span class="menu_price">' . $menuPrice . '</span>
</h4>
<div class="menu_excerpt"><div>' . $menuDesc . '</div>' .
($allow_order
? '<div class="margin-left-auto padding-left-10"><button type="button" class="button add-item-button add-extras">' . $lang['ADD'] . '</button></div>'
: '') .
'</div> '.$allergies_tpl .'
</div>
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-6 ajax-item-listing menu-list-view" ' . $list_layout . ' data-id="' . $menuId . '" data-name="' . $menuName . '" data-price="' . $menuPrice . '" data-amount="' . $info2['price'] . '" data-description="' . $menuDesc . '" data-image-url="' . $config['site_url'] . 'storage/menu/' . $menuImage . '">
<div class="menu_detail">
<h4 class="menu_post">
<span class="menu_title"><span class="badge ' . $menuType . ' only"><i class="fa fa-circle"></i></span>' . $menuName . '</span>
<span class="menu_dots"></span>
<span class="menu_price">' . $menuPrice . '</span>
</h4>
<div class="menu_excerpt"><div>' . $menuDesc . '</div>' .
($allow_order
? '<div class="margin-left-auto padding-left-10"><button type="button" class="button add-item-button add-extras">' . $lang['ADD'] . '</button></div>'
: '') .
'</div>'.$allergies_tpl .'
</div>
</div>';
} else {
$menu_tpl .= '<div class="section-menu" data-id="' . $menuId . '" data-name="' . $menuName . '" data-price="' . $menuPrice . '" data-amount="' . $info2['price'] . '" data-description="' . $menuDesc . '" data-image-url="' . $config['site_url'] . 'storage/menu/' . $menuImage . '">
<div class="menu-item list">
' .
(!empty($menuImage != 'default.png') ?
'<div class="menu-image menu-lightbox">
<img class="lazy-load menu-lightbox-image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="' . $config['site_url'] . 'storage/menu/' . $menuImage . '" alt="' . $menuName . '" data-src="' . $config['site_url'] . 'storage/menu/' . $menuImage . '" data-sub-html="' . $menuDesc . '">
<div class="badge abs ' . $menuType . '"><i class="fa fa-circle"></i></div>
</div>' :
'<div class="badge ' . $menuType . ' only"><i class="fa fa-circle"></i></div>')
. '
<div class="menu-content">
<div class="menu-detail">
<div class="menu-title">
<h4>' . $menuName . '</h4>
<div class="menu-price">' . $menuPrice . '</div>
</div>' .
($allow_order
? '<div class="add-menu">
<div class="add-btn add-item-to-order">
<span>' . $lang['ADD'] . '</span>
<i class="icon-feather-plus"></i>
</div>
' .
(!empty($extras) || !empty($variants) ? '<span class="customize">' . $lang['CUSTOMIZABLE'] . '</span>' : '')
. ' </div>'
: '') .
'</div>
<div class="menu-recipe">' . $menuDesc . '</div>
'.$allergies_tpl.'
</div>
</div>
</div>';
}
$menu_count++;
}
return $menu_tpl;
}
$result = ORM::for_table($config['db']['pre'] . 'catagory_main')
->where(array(
'user_id' => $restaurant['user_id'],
'parent' => 0
))
->order_by_asc('cat_order')
->find_many();
$count = 0;
foreach ($result as $info) {
if ($settings['category_limit'] != "999" && $count >= $settings['category_limit']) {
break;
}
$user_lang = !empty($_COOKIE['Quick_user_lang_code'])? $_COOKIE['Quick_user_lang_code'] : $config['lang_code'];
$json = json_decode($info['translation'],true);
$cat_name = !empty($json[$user_lang]['title'])?$json[$user_lang]['title']:$info['cat_name'];
$category[$count]['id'] = $info['cat_id'];
$category[$count]['name'] = ucfirst($cat_name);
$cat[$count]['id'] = $info['cat_id'];
$cat[$count]['name'] = ucfirst($cat_name);
if ($restaurant_template == 'classic-theme') {
$cat[$count]['menu'] = '<div class="col-lg-12 margin-bottom-30 text-center">' . $lang['MENU_NOT_AVAILABLE'] . '</div>';
} else {
$cat[$count]['menu'] = '';
}
$menu_tpl = '';
$sub_cats = ORM::for_table($config['db']['pre'] . 'catagory_main')
->where(array(
'parent' => $info['cat_id']
))
->order_by_asc('cat_order')
->find_many();
if (($restaurant_template == 'modern-theme' || $restaurant_template == 'modern-theme2') && $sub_cats->count()) {
$menu_tpl .= '<div id="accordion' . $info['cat_id'] . '" class="accordion menu-category-item menu-category-' . $info['cat_id'] . '">';
} else if ($restaurant_template == 'classic-theme' && $sub_cats->count()) {
$menu_tpl .= '<div class="col-sm-12 js-accordion margin-bottom-20">';
}
foreach ($sub_cats as $sub_cat) {
$user_lang = !empty($_COOKIE['Quick_user_lang_code'])? $_COOKIE['Quick_user_lang_code'] : $config['lang_code'];
$json = json_decode($sub_cat['translation'],true);
$sub_cat_name = !empty($json[$user_lang]['title'])?$json[$user_lang]['title']:$sub_cat['cat_name'];
if ($restaurant_template == 'classic-theme') {
$menu_tpl .= '<div class="boxed-list-small js-accordion-item margin-bottom-10">
<div class="boxed-list-headline js-accordion-header">
<h3><i class="icon-material-outline-restaurant"></i> ' . $sub_cat_name . '</h3>
</div>
<div class="box-item js-accordion-body" style="display: none">';
$menu_tpl = get_menu_tpl_by_cat_id($menu_tpl, $sub_cat['cat_id']);
$menu_tpl .= '</div></div>';
} else {
$menu_tpl .= '<div class="card"><div class="card-header collapsed waves-effect" data-toggle="collapse" href="#collapse' . $sub_cat['cat_id'] . '">
<a class="card-title">' . $sub_cat_name . '</a>
</div>
<div id="collapse' . $sub_cat['cat_id'] . '" class="card-body collapse" data-parent="#accordion' . $info['cat_id'] . '">';
$menu_tpl = get_menu_tpl_by_cat_id($menu_tpl, $sub_cat['cat_id']);
$menu_tpl .= '</div></div>';
}
}
if ($sub_cats->count()) {
$menu_tpl .= '</div>';
}
if ($restaurant_template == 'modern-theme' || $restaurant_template == 'modern-theme2') {
$menu_tpl .= '<div class="card-body menu-category-item menu-category-' . $info['cat_id'] . '">';
}
$menu_tpl = get_menu_tpl_by_cat_id($menu_tpl, $info['cat_id']);
if ($restaurant_template == 'modern-theme' || $restaurant_template == 'modern-theme2') {
$menu_tpl .= '</div>';
}
$cat[$count]['menu'] = !empty($menu_tpl) ? $menu_tpl : $cat[$count]['menu'];
$count++;
}
} else {
$result = ORM::for_table($config['db']['pre'] . 'image_menu')
->where('user_id', $restaurant['user_id'])
->where('active', '1')
->order_by_asc('position')
->find_many();
$menu_count = 0;
foreach ($result as $info) {
if ($settings['menu_limit'] != "999" && $menu_count >= $settings['menu_limit']) {
break;
}
$image_menu[$info['id']]['id'] = $info['id'];
$image_menu[$info['id']]['name'] = $info['name'];
$image_menu[$info['id']]['image'] = !empty($info['image']) ? $info['image'] : 'default.png';
$image_menu[$info['id']]['active'] = $info['active'];
$menu_count++;
}
}
$menu_lang = get_user_option($restaurant['user_id'],'restaurant_menu_languages','');
$menu_lang = explode(',', $menu_lang);
$language = array();
if(!empty($menu_lang) && count($menu_lang) > 1) {
$menu_languages = ORM::for_table($config['db']['pre'] . 'languages')
->where('active', 1)
->order_by_asc('name')
->where_in('code', $menu_lang)
->find_many();
foreach ($menu_languages as $info) {
$language[$info['id']]['code'] = $info['code'];
$language[$info['id']]['name'] = $info['name'];
$language[$info['id']]['file_name'] = $info['file_name'];
}
}
$delivery_charge = get_restaurant_option($restro_id,'restaurant_delivery_charge',0);
$delivery_charge = $delivery_charge?:0;
$delivery_charge_formatted = price_format($delivery_charge, $currency);
$page = new HtmlTemplate ('restaurant-templates/' . $restaurant_template . '/index.tpl');
$page->SetParameter('SITE_TITLE', $config['site_title']);
$themecolor = get_restaurant_option($restro_id,'restaurant_color',$config['theme_color']);
$colors = array();
list($r, $g, $b) = sscanf($themecolor, "#%02x%02x%02x");
$i = 0.01;
while ($i <= 1) {
$colors["$i"]['id'] = str_replace('.', '_', $i);
$colors["$i"]['value'] = "rgba($r,$g,$b,$i)";
$i += 0.01;
}
$colors[1]['id'] = 1;
$colors[1]['value'] = "rgba($r,$g,$b,1)";
$page->SetLoop('COLORS', $colors);
$page->SetParameter('SHOW_LANGS', count($language));
$page->SetLoop ('LANGS', $language);
$page->SetParameter('RESTAURANT_TEMPLATE', $restaurant_template);
$page->SetParameter('ALLOW_CALL_WAITER', get_restaurant_option($restro_id,'allow_call_waiter',1));
$page->SetParameter('RESTAURANT_SEND_ORDER', $allow_order);
$page->SetParameter('RESTAURANT_ON_TABLE_ORDER', $allow_on_table);
$page->SetParameter('RESTAURANT_TAKEAWAY_ORDER', $allow_takeaway);
$page->SetParameter('RESTAURANT_DELIVERY_ORDER', $allow_delivery);
$page->SetParameter('RESTAURANT_ONLINE_PAYMENT', $allow_payment);
$page->SetParameter('DELIVERY_CHARGE', $delivery_charge);
$page->SetParameter('DELIVERY_CHARGE_FORMATTED', $delivery_charge_formatted);
$page->SetLoop('CATEGORY', $category);
$page->SetLoop('CAT_MENU', $cat);
$page->SetLoop('IMAGE_MENU', $image_menu);
$page->SetParameter('RESTRO_ID', $restro_id);
$page->SetParameter('NAME', $name);
$page->SetParameter('SUB_TITLE', $sub_title);
$page->SetParameter('TIMING', $timing);
$page->SetParameter('DESCRIPTION', $description);
$page->SetParameter('ADDRESS', $address);
$page->SetParameter('PHONE', $userdata['phone']);
$page->SetParameter('MAIN_IMAGE', $main_image);
$page->SetParameter('COVER_IMAGE', $cover_image);
$page->SetParameter('LATITUDE', $mapLat);
$page->SetParameter('LONGITUDE', $mapLong);
$page->SetParameter('MAP_COLOR', $config['map_color']);
$page->SetParameter('ZOOM', $config['home_map_zoom']);
$page->SetParameter('CURRENCY_SIGN', $currency_data['html_entity']);
$page->SetParameter('CURRENCY_LEFT', $currency_data['in_left']);
$page->SetParameter('CURRENCY_DECIMAL_PLACES', $currency_data['decimal_places']);
$page->SetParameter('CURRENCY_DECIMAL_SEPARATOR', $currency_data['decimal_separator']);
$page->SetParameter('CURRENCY_THOUSAND_SEPARATOR', $currency_data['thousand_separator']);
$page->SetParameter('MENU_LAYOUT', $menu_layout);
$page->SetParameter('TOTAL_MENUS', json_encode($total_menus));
$page->SetParameter('PAGE_TITLE', $name);
$page->SetParameter('PAGE_LINK', (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
$page->SetParameter('PAGE_META_KEYWORDS', $config['meta_keywords']);
$page->SetParameter('PAGE_META_DESCRIPTION', $config['meta_description']);
$page->SetParameter('LANGUAGE_DIRECTION', get_current_lang_direction());
$page->CreatePageEcho();
} else {
error($lang['PAGE_NOT_FOUND'], __LINE__, __FILE__, 1);
exit();
}
} else {
error($lang['PAGE_NOT_FOUND'], __LINE__, __FILE__, 1);
exit();
}
?>