Corinth, Κόρινθος

Trancelantic - Corinth v.1

6.4 kilometres in length and 21.4 metres wide at its base.
The Corinth Canal was dug through the Isthmus at sea level and has no locks.

Corinth
ΚΌΡΙΝΘΟΣ

Corinth is a town that is considered the gateway a framework to the Peloponnese Peninsula. it was one of the largest and wealthiest city-states in Greece, with two major ports: the Corinthian Gulf and the Saronic Gulf

Today, the site where Ancient Corinth once stood, has been excavated by archaeologists since 1896,  behind the site rises the hill of Acrocorinth. This government on Corinth allied with Sparta and Corinth participated in the Persian Wars. As a Roman colony in 44 BC, Corinth flourished and became the administrative capital of the Roman province of Achaea.

In 1858, the old city, now known as Ancient Corinth “Αρχαία Κόρινθος”, was totally destroyed by a magnitude 6.5 earthquake. New Corinth was built to the north-east of it.

In 1928 a magnitude 6.3 earthquake devastated the new city, which was then rebuilt on the same site.

In 1933 there was a great fire, and the new city was rebuilt again.

37 56.0’ N・22 56.0’ E

The Corinth Refinery is one of the largest oil refining industrial complexes in Europe. The municipal unit of Corinth had 38,132 inhabitants, of which Corinth itself had 30,176 inhabitants, placing it in third place behind Kalamata and Tripoli among the cities of the Peloponnese Region.

Corinth Canal
ΔΙΏΡΥΓΑ ΤΗΣ ΚΟΡΊΝΘΟΥ

The Corinth Canal separates the mainland of Greece from the Peloponnese Peninsula. Specifically, the Canal links the Gulf of Corinth of the Ionian Sea with the Saronic Gulf of the Aegean Sea. A map of Greece shows not only its thousands of islands but also this peninsula that would be the country’s largest island if it weren’t connected to the mainland by this four-mile-wide strip of land. Technically, the Corinth Canal makes the Peloponnese an island, but since it’s so narrow, most experts still refer to it as a peninsula. The canal was initially proposed in classical times and a failed effort was made to build it in the 1st century AD.

Construction started in 1881 but was hampered by geological and financial problems that bankrupted the original builders. It was completed in 1893 but, due to the canal’s narrowness, navigational problems and periodic closures to repair landslides from its steep walls, it failed to attract the level of traffic expected by its operators.

The canal consists of a single channel 8 metres (26 ft) deep, excavated at sea level (thus requiring no locks), measuring 6,343 metres (20,810 ft) long by 24.6 metres (81 ft) wide at the top and 21.3 metres (70 ft) wide at the bottom. The rock walls, which rise 90 metres (300 ft) above sea level, are at a near-vertical 80° angle.

Corinth Framework
Πλαίσιο της Κορινθίας

Trancelantic proudly present Corinth Framework. One of our simplest, smallest and oldest solution. We released our first version in June 1998. It’s still running, just updated to current version. Many installationas followed based on this straight and simple innovation.

Corinth Framework is to build simple but effective web applications, web pages or application programming interfaces.

Because of policy constraints and restrictions of many system environments we decided to use just standards. No frameworks. No libraries. Showstoppers are any kind of license fees. We only use php for scripting, sql for database queries, html as markup language and css for good locking. No cookies. No JavaScript. That’s it

Keep it simple. Nothing else matters.

  • Web Applications

    Build your smart client server application to control your business data.

  • Web Pages

    Build your web page to present your business data.

  • Application Programing Interfaces

    Build your web connection to share your business data.

Keep it clear

Object orientated programing
Model view controller pattern
Three-tier architecture

Keep it simple

PHP, SQL, HTML, CSS
No extended libraries
No license fees

Keep it safety

Open Source
No JavaScript
No Cookies

The Design

To keep our system smart we choose the simple, but strict model view controller pattern (MVC). An event triggers a controller. The controller creates models and generate a view. The view shows the data provided by the controller or the model.

Corinth Model Pattern

In Corinth you always open a channel. The channel creates data models, put them into a cargo container and generates a view. The view shows the data provided by the channel or the cargo.

The Cargo

Cargo is to transport your data through a single channel. You can use it also to pass data from one channel to another. The cargo flow is pretty easy, Open a channel with a cargo container. The channel will extend the cargo with results and return it.

Corinth Cargo Flow

Cargo has several container to hold your data. It holds arguments to start a channel, results after working and a bunch of information for versioning and debbuging.

Corinth Cargo Properties

Arguments holds all nesseccary data to open a channel.

$cargo->Arguments[$key]

Results holds all queried or calculated data.

$cargo->Results[$key]

Infos holds information about the current Corinth framework, your application and the client who requested the channel.

$cargo->Infos['Corinth'][$key]
$cargo->Infos['Application'][$key]
$cargo->Infos['Client'][$key]

The Channel

The channel is easy as everything in here. Open a channel with cargo, do some preparing stuff, check what you have defined and start working. You will get a cargo back to start your next action.

Corinth Channel Flow
Define some common things.
// Get a key for your channel.
function GetKey() {..}

// Get a description for your channel.
function GetDescription() {..}
Define some additional default or calculated arguments depending on content of given cargo.
// Get a arguments list for your channel.
function GetArguments($cargo) {..}

Define a required key list to check on missing keys in arguments. You can also define a result key list for debugging or for your manuals.

// Get a list of required keys.
function GetRequiredKeys($cargo) {..}

// Get a list of expected keys.
function GetResultKeys($cargo) {..}

Calculate, manipulate or present your work depending on the content of cargo and the mission of the channel.

// Will execute individual channel code.
function OnOpen($cargo) {..}
Sign the insurance before you deliver valuable cargo.
// Get an exception handler for your channel.
function GetExceptionHandler($cargo) {..}

// Will execute individual channel error code.
function OnError($exception, $cargo) {..}

The Insurance

The worst thing is to show crypted error messages. Be honest. If you do something really wrong just say it. Keep clear that the current way is not a flawless way. Track all exceptions to improve yourself.

Every channel can have their own exception handling. You can define a handling by customizing a channel function or by building your own exception handler. Or both. Or you do nothing at all. At least every exception will be caught by the top most channel. In Corinth you always have an insurance.

In debug mode you will get detailed information what’s gone wrong. In production mode the requester gets a readable answer. In both ways everything is logged.

Thrown if an unhandled exception was caught.

Thrown by a channel when a required argument key cannot be found in cargo arguments.

Thrown by a channel when a channel key cannot be found in children channels list.

Thrown by a channel when a must overwrite function is not overwritten.

The Heritage

A solid but strict base is essential at corinth framework. All objects are derived from a base class. This simplifies the design of the controllers, the handling of the results and the monitoring of coding errors.

Corinth Object Inheritance Overview

Please click on image to enlarge the Corinth class diagram.

International Waters

You can handle your strings as you like. But if you are in international waters you have to take care about other languages.

Simple use __() and _e() to define multi language strings.

// Get transelated text
function __($text, $arg_1, $arg_2, $arg_3) {..}

// Will echo transelated text.
function _e($text, $arg_1, $arg_2, $arg_3) {..}

The Corinth Channels

Corinth channels are helpful little workers. Fell free to use or inherit them to improve your business.

Selection Channel

A selection channel is a collection of channels. On open it pass the execution by opening one of its sub channels. The sub channel key must be defined as argument in cargo. The key of this argument is the channel key.

AddChannel(new FooChannel())

Query Channel

A query channel generates sql statements, execute them on a database server and returns a data table in cargo.

All arguments in your SQL statement will be replaced with cargo attributes.
SELECT Id, Name 
FROM {TablePrefix}User 
WHERE Id = {Id}
// Gets a sql template path and file name.
function OnOpen($cargo) {..}
['Database']['Server']
['Database']['Name']
['Database']['User']
['Database']['Password']
['SqlAttributes']
['IsSqlExecuted']
['SqlErrorMessage']
['SqlStatement']
['SqlResult']
['InsertedId']
['HasSqlResultWithId']

Page Channel

A page channel generates a html file.

// Gets a html page template path and file name.
function GetPageFileName($cargo) {..}

That's all Folks!

Download Corinth