'nobody knows it (but you got a secret smile;)']);
}); // 404
// Account
///////////////////////////////////////////////////////////////////////////////////////////////
// [ok] login
// [ok] register
// [ok] activate
// [..] ask-reset
// [..] reset
// [..] profile
// [..] edit-profile
// [..] subscriptions
// [..] payments
// [..] pay
// [..] order
Route::add('/login', function() { Render::view('user/login'); });
Route::add('/registration', function() { Render::view('user/registration'); });
Route::add('/account/check-login', function() {
$response = Auth::login();
Render::json(['status' => $response]);
},
'post'
);
// user sends a registration form;
Route::add('/account/register', function() {
$response = Auth::register();
Render::json($response);
},
'post'
);
// user requests activation
Route::add('/account/activate', function() { Auth::activate(); } );
// user profile
Route::add('/account/profile', function() {
$user = Auth::is_connected();
if ($user === false) {
Render::view('error/general',
[
'title' => 'Nope!',
'message' => "
No profile
User is not connected"
]
);
} else {
print_r($user);
}
}
);
// test connection
// NOTE: this is only for testing purposes
if (!PRODUCTION) {
Route::add('/check/connection', function() { Auth::is_connected(); });
}
Route::add('/account/reset_password', function() { Auth::reset_password(); } );
// Resolve urls
// --- -- -- - - -
Route::add('/course/([0-9a-zA-Z-_]*)',
function($label) { Course::show([$label]); }
);
Route::add('/lesson/([0-9a-f]*)/([0-9a-zA-Z-_]*)',
function($ticket, $lesson) { Lesson::show([$lesson, $ticket]); }
);
Route::add('/media/([0-9a-f]*)/([0-9a-zA-Z-_]*)/([0-9]*)/',
function($ticket, $type, $id) { Media::serve([$type, $id, $ticket]); }
);
// 4-th level paths belong to products
// ---
Route::add('/about/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)',
function($a, $b, $c) { Page::show([$a, $b, $c]); }
);
/** URL-format Proposal:
* -----------------------------------------------------------------------------
*
* Page (almost-static content):
* /about/{url}
# Route::add('/about/([0-9a-zA-Z-_\/]*)', function($url) { Page::fromUrl($url); });
*
* Product:
* /{level-1}/{level-2}/{level-3}/{friendly-url}-{id}
# Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)',
# function($category, $subcategory, $group, $label, $id) {
# Product::fromID([$$category, $subcategory, $group, $label], $id);
# }
# );
*
* Category
* /{category}/[ {subcategory}[ /{group}]]
Route::add('/([0-9a-zA-Z-_]*)', function($a) { Category::url([$a]); };
Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Category::url([$a, $b]); });
Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Category::url([$a, $b, $c]); });
* -----------------------------------------------------------------------------
*/
/* EXAMPLES (use it for brainsrtorming)
* -----------------------------------------------------------------------------
*
// Typical Use
// ---
Route::add('/art', function() { Art::blah(); });
Route::add('/art/db', function() { Art::fromDatabase(); });
Route::add('/art/([0-9]*)', function($id) { Art::getInfo($id); });
// Get-Post route example
// ---
Route::add('/contact-form', function() {
echo '';
}, 'get');
Route::add('/contact-form', function() {
echo 'Hey! The form has been sent:
'; print_r($_POST);
}, 'post');
// Accept number as parameter
// ---
Route::add('/foo/([0-9]*)/bar', function($var1) {
// echo $var1.' is a number!';
echo "{$var1} is a number!";
});
// About pages
// ---
Route::add('/about/([0-9a-zA-Z-_]*)', function($page) {
InfoPage::render('about/'.page);
});
// handle a request like: /foo/123/bar/3254-lefki-zaxari-marata-1kg
// where first-numeric-part of last-uri-section (3254) is the product number
// ---
Route::add('/foo/([0-9]*)/bar/([0-9]*)-([0-9a-zA-Z-_]*)', function($num, $id, $name) {
echo $num .' is some nomber, id = '. $id .' and label = '. $name;
});
// handle a request like: /zaxares-glykantika/lefki-zaxari-year-2022-45678
// where last-numeric-part of last-uri-section (45678) is the product number
// ---
Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)',
function($category, $subcategory, $group, $label, $id) {
Shop::product([$$category, $subcategory, $group, $label], $id);
});
// last chance to resolve (some friendly url)
// ---
Route::add('/([0-9a-zA-Z-_]*)', function($a) { Resolve::uri([$a]); });
Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Resolve::uri([$a, $b]); });
Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Resolve::uri([$a, $b, $c]); });
// Product page
// handle a request like: /pantopoleio/zaxares/lefki-zaxari/lefki-zaxari-year-2022-45678
// where last-numeric-part of last-uri-section (45678) is the product number
// ---
Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)',
function($category, $subcategory, $group, $label, $id) {
Shop::product([$$category, $subcategory, $group, $label], $id);
});
* ------------------------------------------------------------------------------
*/