Skip to content

Commit

Permalink
Feature Flag Enforcement
Browse files Browse the repository at this point in the history
  • Loading branch information
velocity23 committed May 28, 2021
1 parent fa00ce4 commit 430d979
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 18 deletions.
7 changes: 7 additions & 0 deletions includes/menus.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,39 @@
"icon" => "fa-medal",
"permission" => "opsmanage",
"needsGold" => false,
"vanetFeature" => null,
"badgeid" => null,
],
"Manage Fleet" => [
"link" => "/admin/operations.php?section=fleet",
"icon" => "fa-plane",
"permission" => "opsmanage",
"needsGold" => false,
"vanetFeature" => null,
"badgeid" => null,
],
"Manage Routes" => [
"link" => "/admin/operations.php?section=routes",
"icon" => "fa-plane-departure",
"permission" => "opsmanage",
"needsGold" => false,
"vanetFeature" => null,
"badgeid" => null,
],
"Manage Codeshares" => [
"link" => "/admin/codeshares.php",
"icon" => "fa-handshake",
"permission" => "opsmanage",
"needsGold" => false,
"vanetFeature" => null,
"badgeid" => "codeshares",
],
"Manage Events" => [
"link" => "/admin/events.php",
"icon" => "fa-plane-arrival",
"permission" => "opsmanage",
"needsGold" => true,
"vanetFeature" => "events",
"badgeid" => null,
]
);
Expand Down Expand Up @@ -155,12 +160,14 @@
"link" => "/events.php",
"icon" => "fa-calendar",
"needsGold" => true,
"vanetFeature" => "events",
"badgeid" => null,
],
"ACARS" => [
"link" => "/acars.php",
"icon" => "fa-sync",
"needsGold" => true,
"vanetFeature" => "acars",
"badgeid" => null,
],
);
Expand Down
49 changes: 31 additions & 18 deletions includes/navbar.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
?>

<a class="navbar-brand" href="/">
<?php if (empty(Config::get("VA_LOGO_URL"))): ?>
<?php if (empty(Config::get("VA_LOGO_URL"))) : ?>
<?= Config::get('va/name') ?>
<?php else: ?>
<?php else : ?>
<img src="<?= Config::get("VA_LOGO_URL") ?>" height="35" />
<?php endif; ?>
</a>
Expand All @@ -26,20 +26,29 @@
<ul class="navbar-nav">
<?php
foreach ($GLOBALS['top-menu'] as $name => $data) {
if ($data["vanetFeature"] && !$PROFILE['activeFeatures'][$data['vanetFeature']]) {
continue;
}

if (($data['loginOnly'] && $user->isLoggedIn()) || (!$data['loginOnly'] && !$user->isLoggedIn())) {
$mobileHidden = $data['mobileHidden'] ? ' mobile-hidden' : '';
echo '<li class="nav-item'.$mobileHidden.'">';
echo '<a class="nav-link" href="'.$data['link'].'" style="color: '.$textcol.'!important;"><i class="fa '.$data['icon'].'"></i>&nbsp;'.$name.'</a>';
echo '<li class="nav-item' . $mobileHidden . '">';
echo '<a class="nav-link" href="' . $data['link'] . '" style="color: ' . $textcol . '!important;"><i class="fa ' . $data['icon'] . '"></i>&nbsp;' . $name . '</a>';
echo '</li>';
}
}

if ($user->isLoggedIn()):
$IS_GOLD = VANet::isGold();
if ($user->isLoggedIn()) :
$PROFILE = VANet::myInfo();
$IS_GOLD = $PROFILE['isGoldPlan'];
foreach ($GLOBALS['pilot-menu'] as $name => $data) {
if ($data["vanetFeature"] && !$PROFILE['activeFeatures'][$data['vanetFeature']]) {
continue;
}

if ($IS_GOLD || $data["needsGold"] == false) {
echo '<li class="nav-item desktop-hidden">';
echo '<a href="'.$data['link'].'" class="panel-link" style="color: '.$textcol.' !important;"><i class="fa '.$data['icon'].'"></i>&nbsp;'.$name.'</a>';
echo '<a href="' . $data['link'] . '" class="panel-link" style="color: ' . $textcol . ' !important;"><i class="fa ' . $data['icon'] . '"></i>&nbsp;' . $name . '</a>';
echo '</li>';
}
}
Expand All @@ -59,15 +68,19 @@
}
$i = 0;
foreach ($localmenu as $category => $items) {

echo '<li class="nav-item desktop-hidden">';
echo '<a href="#" data-toggle="collapse" data-target="#collapse'.$i.'" class="panel-link" style="color: '.$textcol.'!important;"><i class="fa fa-caret-down"></i>&nbsp;'.$category.'</a>';
echo '<div id="collapse'.$i.'" class="collapse '.strtolower(str_replace(" ", "-", $category)).'">';
echo '<a href="#" data-toggle="collapse" data-target="#collapse' . $i . '" class="panel-link" style="color: ' . $textcol . '!important;"><i class="fa fa-caret-down"></i>&nbsp;' . $category . '</a>';
echo '<div id="collapse' . $i . '" class="collapse ' . strtolower(str_replace(" ", "-", $category)) . '">';

foreach ($items as $label => $data) {
if ($data["vanetFeature"] && !$PROFILE['activeFeatures'][$data['vanetFeature']]) {
continue;
}

if ($user->hasPermission($data["permission"])) {
if (($IS_GOLD && $data["needsGold"]) || !$data["needsGold"]) {
echo '<a href="'.$data["link"].'" class="panel-link" style="color: '.$textcol.'!important;"><i class="fa '.$data['icon'].'"></i>&nbsp;'.$label.'</a>';
echo '<a href="' . $data["link"] . '" class="panel-link" style="color: ' . $textcol . '!important;"><i class="fa ' . $data['icon'] . '"></i>&nbsp;' . $label . '</a>';
}
}
}
Expand All @@ -76,23 +89,23 @@
$i++;
}
}
?>
?>
<li class="nav-item desktop-hidden">
<a href="/logout.php" class="panel-link" style="color: <?= $textcol ?>!important;"><i class="fa fa-sign-out-alt"></i>&nbsp;Log Out</a>
</li>
<?php endif; ?>
</ul>
<?php if ($user->isLoggedIn()): ?>
<?php if ($user->isLoggedIn()) : ?>
<ul class="navbar-nav ml-auto">
<li class="nav-item mobile-hidden">
<a class="nav-link" href="#" id="myNotifications-btn" data-toggle="dropdown" data-target="myNotifications" aria-haspopup="true" aria-expanded="false" style="color: <?= $textcol ?>!important;"><i class="fa fa-bell"></i></a>
<div class="dropdown-menu dropdown-menu-right m-2 shadow-lg" id="myNotifications">
<?php
$notifications = array_map(function($n) {
$notifications = array_map(function ($n) {
return '<div class="dropdown-item">
<small class="d-block m-0 p-0"><small class="moment">'.$n->formattedDate.'</small></small>
<span class="d-block m-0 p-0"><i class="fa '.$n->icon.'"></i>&nbsp;&nbsp;<b>'.escape($n->subject).'</b></span>
<small class="d-block m-0 p-0">'.escape($n->content).'</small>
<small class="d-block m-0 p-0"><small class="moment">' . $n->formattedDate . '</small></small>
<span class="d-block m-0 p-0"><i class="fa ' . $n->icon . '"></i>&nbsp;&nbsp;<b>' . escape($n->subject) . '</b></span>
<small class="d-block m-0 p-0">' . escape($n->content) . '</small>
</div>';
}, Notifications::mine($user->data()->id));
if (count($notifications) != 0) {
Expand Down
7 changes: 7 additions & 0 deletions includes/sidebar.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
<hr class="mt-0 divider" />
<?php
foreach ($GLOBALS['pilot-menu'] as $name => $data) {
if ($data["vanetFeature"] && !$PROFILE['activeFeatures'][$data['vanetFeature']]) {
continue;
}
if ($IS_GOLD || $data["needsGold"] == false) {
echo '<a href="' . $data['link'] . '" class="panel-link"><i class="fa ' . $data['icon'] . '"></i>&nbsp;' . $name . '</a><br />';
}
Expand Down Expand Up @@ -34,6 +37,10 @@
$j = 0;
foreach ($items as $label => $data) {
if ($user->hasPermission($data["permission"])) {
if ($data["vanetFeature"] && !$PROFILE['activeFeatures'][$data['vanetFeature']]) {
continue;
}

if ($IS_GOLD || !$data["needsGold"]) {
$badge = !isset($data["badgeid"]) || $data["badgeid"] == null ? '' : $data["badgeid"];
if ($j == 0) {
Expand Down

0 comments on commit 430d979

Please sign in to comment.