* Create and manage email subscriptions
 */
$app->group('/subscribe', function () use($app) {
    $app->post('/new', 'isBanned', function () use($app) {
        global $categories, $cities;
        $data = $app->request->post();
        $redirect = $data['category_id'] > 0 ? 'categories' : 'cities';
        $id = $data['category_id'] > 0 ? $data['category_id'] : $data['city_id'];
        if ($data['category_id'] > 0) {
            $subscription_for = $categories[$data['category_id']]['name'];
        } else {
            $subscription_for = $cities[$data['city_id']]['name'];
        }
        if ($data['trap'] == '') {
            $subscribe = new Subscriptions($data['email'], $data['category_id'], $data['city_id']);
            if ($subscribe->createSubscription($subscription_for)) {
                $app->flash('success', "A subscription confirmation was sent to your email address.");
            } else {
                $app->flash('danger', "Your subscription failed. You may have an existing subscription already.");
            }
            $app->redirect(BASE_URL . "{$redirect}/{$id}");
        } else {
            $app->flash('danger', "Your subscription failed. You are not allowed to subscriibe.");
            $app->redirect(BASE_URL . "{$redirect}/{$id}");
        }
    });
    $app->get('/:id/:action/:token', 'isBanned', function ($id, $action, $token) use($app) {
        $status = $action == 'confirm' ? ACTIVE : INACTIVE;
        $s = new Subscriptions('');
        $user = $s->getUserSubscription($id, $token);
        if ($user) {