Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0b66879a89 | |||
| 88abac6864 | |||
| e1cf78b992 | |||
| dd4469c349 | |||
| 98670dc33f | |||
| f5e165a446 | |||
| 25c0f66cff | |||
| 00f2b4c403 | |||
| 5965ac9bdd | |||
| 4c1cd60426 | |||
| a0777a0df0 | |||
| 18de25873b | |||
| c977235188 | |||
| 8d07078e30 | |||
| 3810e4db92 | |||
| 908f79a6ed | |||
| 81857f0216 | |||
| b471d4787d | |||
| 0ff486f0d0 | |||
| 7fccf775a5 | |||
| 1624a17cb5 | |||
| e78ed8bfc7 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,4 @@
|
||||
/.buildpath
|
||||
/.project
|
||||
/log.html
|
||||
/globalsettings.php
|
||||
inc/log.html
|
||||
/vendor/
|
||||
10
composer.json
Normal file
10
composer.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "franzz/objects",
|
||||
"description": "Objects",
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Franzz\\Objects\\": "inc"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Franzz\Objects;
|
||||
use \Settings;
|
||||
|
||||
/**
|
||||
* MySql query manager and generator
|
||||
* @author franzz
|
||||
@@ -23,10 +26,10 @@ class Db extends PhpObject
|
||||
|
||||
/**
|
||||
* SQL connection Handle
|
||||
* @var mysqli
|
||||
* @var \mysqli
|
||||
*/
|
||||
private $oConnection;
|
||||
private $sDatabase;
|
||||
private $asConf;
|
||||
private $asOptions;
|
||||
|
||||
/**
|
||||
@@ -37,20 +40,14 @@ class Db extends PhpObject
|
||||
* 'cascading_delete'=>array('table_name1'=>array('linked_table1', 'linked_table2', ...), 'table_name2'=>...))
|
||||
* @var Array
|
||||
*/
|
||||
public function __construct($sDbServer, $sLogin, $sPass, $sDatabase, $asOptions, $sEncoding='utf8mb4')
|
||||
public function __construct($asConf, $asOptions)
|
||||
{
|
||||
parent::__construct(__FILE__, Settings::DEBUG);
|
||||
$this->sDatabase = $sDatabase;
|
||||
$this->asConf = $asConf;
|
||||
$this->asOptions = $asOptions;
|
||||
//$this->oConnection = mysql_connect(self::DB_SERVER, self::DB_LOGIN, self::DB_PASS);
|
||||
$this->oConnection = new mysqli($sDbServer, $sLogin, $sPass);
|
||||
$this->syncPhpParams($sEncoding);
|
||||
|
||||
/*
|
||||
$dsn = 'mysql:dbname='.$this->sDatabase.';host='.self::DB_SERVER;
|
||||
try {$dbh = new PDO($dsn, self::DB_LOGIN, self::DB_PASS);}
|
||||
catch (PDOException $e) {$this->addError('Connexion échouée : ' . $e->getMessage());}
|
||||
*/
|
||||
parent::__construct(__FILE__);
|
||||
$this->oConnection = new \mysqli($this->getConf('server'), $this->getConf('user'), $this->getConf('pass'));
|
||||
$this->syncPhpParams($this->getConf('encoding'));
|
||||
|
||||
$this->setTrace(false);
|
||||
if($this->oConnection->connect_error)
|
||||
@@ -60,19 +57,22 @@ class Db extends PhpObject
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!$this->oConnection->select_db($this->sDatabase))
|
||||
{
|
||||
$this->addError('Could not find database "'.$this->sDatabase.'"');
|
||||
try {
|
||||
$this->oConnection->select_db($this->getConf('database'));
|
||||
$this->sDbState = empty($this->getArrayQuery("SHOW TABLES"))?self::DB_NO_TABLE:self::DB_PEACHY;
|
||||
}
|
||||
catch(\Exception $oEx) {
|
||||
$this->addError('Could not find database "'.$this->getConf('database').'"');
|
||||
$this->sDbState = self::DB_NO_DATA;
|
||||
}
|
||||
elseif(empty($this->getArrayQuery("SHOW TABLES")))
|
||||
{
|
||||
$this->sDbState = self::DB_NO_TABLE;
|
||||
}
|
||||
else $this->sDbState = self::DB_PEACHY;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private function getConf($sConf) {
|
||||
return $this->asConf[$sConf] ?? null;
|
||||
}
|
||||
|
||||
private function syncPhpParams($sEncoding)
|
||||
{
|
||||
//Characters encoding
|
||||
@@ -91,7 +91,6 @@ class Db extends PhpObject
|
||||
public function setTrace($bTrace=true)
|
||||
{
|
||||
$this->bTrace = $bTrace;
|
||||
//if($bTrace) $this->setDebug(true);
|
||||
}
|
||||
|
||||
public function getTrace()
|
||||
@@ -107,9 +106,9 @@ class Db extends PhpObject
|
||||
public function install()
|
||||
{
|
||||
//Create Database
|
||||
$this->setQuery("DROP DATABASE IF EXISTS ".$this->sDatabase);
|
||||
$this->setQuery("CREATE DATABASE ".$this->sDatabase." DEFAULT CHARACTER SET ".Settings::DB_ENC." DEFAULT COLLATE ".Settings::DB_ENC."_general_ci");
|
||||
$this->oConnection->select_db($this->sDatabase);
|
||||
$this->setQuery("DROP DATABASE IF EXISTS ".$this->getConf('database'));
|
||||
$this->setQuery("CREATE DATABASE ".$this->getConf('database')." DEFAULT CHARACTER SET ".$this->getConf('encoding')." DEFAULT COLLATE ".$this->getConf('encoding')."_general_ci");
|
||||
$this->oConnection->select_db($this->getConf('database'));
|
||||
|
||||
//Create tables
|
||||
@array_walk($this->getInstallQueries(), array($this, 'setQuery'));
|
||||
@@ -118,9 +117,7 @@ class Db extends PhpObject
|
||||
public function getBackup() {
|
||||
$sBackupFile = uniqid('backup_').'.sql';
|
||||
|
||||
$sAppPath = '';
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $sAppPath = 'C:\ProgramData\xampp\mysql\bin\\';
|
||||
exec($sAppPath.'mysqldump --user='.Settings::DB_LOGIN.' --password='.Settings::DB_PASS.' '.Settings::DB_NAME.' --add-drop-table --result-file='.$sBackupFile);
|
||||
exec('mysqldump --user='.$this->getConf('user').' --password='.$this->getConf('pass').' '.$this->getConf('database').' --add-drop-table --result-file='.$sBackupFile);
|
||||
if(file_exists($sBackupFile)) {
|
||||
$sBackup = file_get_contents($sBackupFile);
|
||||
unlink($sBackupFile);
|
||||
@@ -133,7 +130,7 @@ class Db extends PhpObject
|
||||
$sAppPath = '';
|
||||
if(file_exists($sBackupFile)) {
|
||||
if(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') $sAppPath = 'C:\ProgramData\xampp\mysql\bin\\';
|
||||
return exec($sAppPath.'mysql --user='.Settings::DB_LOGIN.' --password='.Settings::DB_PASS.' '.Settings::DB_NAME.' < '.$sBackupFile);
|
||||
return exec($sAppPath.'mysql --user='.$this->getConf('user').' --password='.$this->getConf('pass').' '.$this->getConf('database').' < '.$sBackupFile);
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
@@ -158,7 +155,7 @@ class Db extends PhpObject
|
||||
$asResult = $this->setQuery($sSql);
|
||||
if($asResult === false)
|
||||
{
|
||||
$this->addError('SQL failed with error: '.$this->db->error, $sSql);
|
||||
$this->addError('SQL failed with error: '.$this->oConnection->error, $sSql);
|
||||
$bResult = false;
|
||||
break;
|
||||
}
|
||||
@@ -209,7 +206,7 @@ class Db extends PhpObject
|
||||
if($this->isId($sColumnName) && $sColumnName!=self::getId($sTableName))
|
||||
{
|
||||
$asForeignKeyQueries[] = "ALTER TABLE ".$sTableName." ADD INDEX(`".$sColumnName."`)";
|
||||
$asForeignKeyQueries[] = "ALTER TABLE ".$sTableName." ADD FOREIGN KEY (`".$sColumnName."`) REFERENCES ".self::getTable($sColumnName)."(`".$sColumnName."`)";
|
||||
$asForeignKeyQueries[] = "ALTER TABLE ".$sTableName." ADD FOREIGN KEY (`".$sColumnName."`) REFERENCES ".$this->getTable($sColumnName)."(`".$sColumnName."`)";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -273,7 +270,7 @@ class Db extends PhpObject
|
||||
return $asResult;
|
||||
}
|
||||
|
||||
private function getMaxIncrementedValue($sTable)
|
||||
public function getMaxIncrementedValue($sTable)
|
||||
{
|
||||
return $this->selectValue($sTable, "MAX(".$this->getId($sTable).")");
|
||||
}
|
||||
@@ -296,7 +293,7 @@ class Db extends PhpObject
|
||||
return $sTableName.".".$sColumnName;
|
||||
}
|
||||
|
||||
private function isId($sColumnName, $sTableName='')
|
||||
public function isId($sColumnName, $sTableName='')
|
||||
{
|
||||
$asTables = ($sTableName=='')?$this->getTables():array($sTableName);
|
||||
$asTableIds = array_map(array('self', 'getId'), $asTables);
|
||||
@@ -496,24 +493,14 @@ class Db extends PhpObject
|
||||
$bSuccess = true;
|
||||
|
||||
//linked tables
|
||||
switch($sTableName)
|
||||
{
|
||||
case (array_key_exists('cascading_delete', $this->asOptions) && array_key_exists($sTableName, $this->asOptions['cascading_delete'])) :
|
||||
$asTables = array_merge(is_array($sTableName)?array_values($sTableName):array($sTableName), array_values($this->asOptions['cascading_delete'][$sTableName]));
|
||||
break;
|
||||
case is_string($sTableName) :
|
||||
$asTables = array($sTableName);
|
||||
break;
|
||||
case is_array($sTableName):
|
||||
$asTables = $sTableName;
|
||||
break;
|
||||
default:
|
||||
$asTables = array();
|
||||
}
|
||||
foreach($asTables as $sTable)
|
||||
{
|
||||
$bSuccess = $bSuccess && $this->setQuery("DELETE FROM ".$sTable." WHERE ".$this->getId($sTableName)." = ".$iTableId);
|
||||
if(array_key_exists('cascading_delete', $this->asOptions) && array_key_exists($sTableName, $this->asOptions['cascading_delete'])) {
|
||||
foreach($this->asOptions['cascading_delete'][$sTableName] as $sTable) {
|
||||
$bSuccess = $bSuccess && $this->deleteRow($sTable, $iTableId);
|
||||
}
|
||||
}
|
||||
|
||||
$bSuccess = $bSuccess && $this->setQuery("DELETE FROM ".$sTableName." WHERE ".$this->getId($sTableName)." = ".$iTableId);
|
||||
|
||||
return $bSuccess;
|
||||
}
|
||||
|
||||
@@ -750,23 +737,4 @@ class Db extends PhpObject
|
||||
return array_combine($asKeys, $asValues);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
public function select($asFields='*')
|
||||
{
|
||||
$oSql = new Sql($this, array('select'=>$asFields));
|
||||
return $oSql;
|
||||
}
|
||||
|
||||
public function from($sTable)
|
||||
{
|
||||
$oSql = new Sql($this, array('from'=>$sTable));
|
||||
return $oSql;
|
||||
}
|
||||
|
||||
public function getConnection()
|
||||
{
|
||||
return $this->oConnection;
|
||||
}
|
||||
*/
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Franzz\Objects;
|
||||
use \Settings;
|
||||
|
||||
/**
|
||||
* RSS Feed Class
|
||||
* @author franzz
|
||||
@@ -20,7 +23,7 @@ class Feed extends PhpObject
|
||||
*/
|
||||
public function __construct($asChannel=array(), $asItems=array())
|
||||
{
|
||||
parent::__construct(__CLASS__, Settings::DEBUG);
|
||||
parent::__construct(__CLASS__);
|
||||
if(!empty($asChannel) && !array_key_exists('link', $asChannel))
|
||||
{
|
||||
$asChannel['link'] = $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'/rss';
|
||||
@@ -28,24 +31,33 @@ class Feed extends PhpObject
|
||||
$this->asChannel = $asChannel;
|
||||
|
||||
//Items
|
||||
$this->asItems = array();
|
||||
$this->removeItems();
|
||||
array_walk($asItems, array($this, 'addItem'));
|
||||
}
|
||||
|
||||
public function loadRss($sUrl)
|
||||
public function loadRss($sUrl, $sMode='curl')
|
||||
{
|
||||
$oCurl = curl_init();
|
||||
curl_setopt($oCurl, CURLOPT_URL, $sUrl);
|
||||
curl_setopt($oCurl, CURLOPT_HEADER, false);
|
||||
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($oCurl, CURLOPT_USERAGENT, array_key_exists('HTTP_USER_AGENT', $_SERVER)?$_SERVER['HTTP_USER_AGENT']:'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0');
|
||||
$fCookieJar = tempnam('/tmp','cookie');
|
||||
curl_setopt($oCurl, CURLOPT_COOKIESESSION, true);
|
||||
curl_setopt($oCurl, CURLOPT_COOKIEJAR, $fCookieJar);
|
||||
curl_setopt($oCurl, CURLOPT_COOKIEFILE, $fCookieJar);
|
||||
//curl_setopt($oCurl, CURLOPT_ENCODING, 'gzip');
|
||||
$sRssContent = curl_exec($oCurl);
|
||||
curl_close($oCurl);
|
||||
$sRssContent = '';
|
||||
switch($sMode) {
|
||||
case 'curl':
|
||||
$oCurl = curl_init();
|
||||
curl_setopt($oCurl, CURLOPT_URL, $sUrl);
|
||||
curl_setopt($oCurl, CURLOPT_HEADER, false);
|
||||
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($oCurl, CURLOPT_USERAGENT, array_key_exists('HTTP_USER_AGENT', $_SERVER)?$_SERVER['HTTP_USER_AGENT']:'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0');
|
||||
$fCookieJar = @tempnam('/tmp','cookie');
|
||||
curl_setopt($oCurl, CURLOPT_COOKIESESSION, true);
|
||||
curl_setopt($oCurl, CURLOPT_COOKIEJAR, $fCookieJar);
|
||||
curl_setopt($oCurl, CURLOPT_COOKIEFILE, $fCookieJar);
|
||||
//curl_setopt($oCurl, CURLOPT_ENCODING, 'gzip');
|
||||
$sRssContent = curl_exec($oCurl);
|
||||
curl_close($oCurl);
|
||||
break;
|
||||
case 'w3m':
|
||||
exec('w3m -dump '.$sUrl, $asOutput, $iResult);
|
||||
$sRssContent = implode("\n", $asOutput);
|
||||
break;
|
||||
}
|
||||
|
||||
//Parse document encoding (useless)
|
||||
$sEncoding = $this->getPregMatch("'encoding=[\'\"](.*?)[\'\"]'si", $sRssContent);
|
||||
@@ -109,6 +121,12 @@ class Feed extends PhpObject
|
||||
return count($this->asItems) - 1;
|
||||
}
|
||||
|
||||
public function changeItem($iItemId, $asAttributes) {
|
||||
if(array_key_exists($iItemId, $this->asItems)) {
|
||||
$this->asItems[$iItemId] = array_merge($this->asItems[$iItemId], $asAttributes);
|
||||
}
|
||||
}
|
||||
|
||||
public function removeItem($iItemId)
|
||||
{
|
||||
$bExist = array_key_exists($iItemId, $this->asItems);
|
||||
@@ -116,6 +134,11 @@ class Feed extends PhpObject
|
||||
return $bExist;
|
||||
}
|
||||
|
||||
public function removeItems()
|
||||
{
|
||||
$this->asItems = [];
|
||||
}
|
||||
|
||||
public function filterItems($sField, $sRegex)
|
||||
{
|
||||
$this->asItems = array_filter($this->asItems, function($asItem) use ($sField, $sRegex) {
|
||||
@@ -152,7 +175,7 @@ class Feed extends PhpObject
|
||||
$sRssChannel .= array_key_exists('link', $this->asChannel)?self::getHtml('', 'atom:link', '', '', array('href'=>$this->asChannel['link'], 'rel'=>'self', 'type'=>'application/atom+xml'), true):'';
|
||||
$sRssChannel .= array_key_exists('language', $this->asChannel)?self::getHtml($this->asChannel['language'], 'language'):'';
|
||||
$sRssChannel .= self::getHtml($this->getGlobalPubDate(), 'lastBuildDate');
|
||||
$sRssChannel .= self::getHtml('Lutran.fr RSS Feed Generator', 'generator');
|
||||
$sRssChannel .= self::getHtml('Franzz RSS Feed Generator', 'generator');
|
||||
$sRssChannel .= array_key_exists('webMaster', $this->asChannel)?self::getHtml($this->asChannel['webMaster'].' (Webmaster)', 'webMaster'):'';
|
||||
|
||||
//Feed Items
|
||||
@@ -185,7 +208,7 @@ class Feed extends PhpObject
|
||||
$sRssItem .= array_key_exists('category', $asItem)?self::getHtml($asItem['category'], 'category'):'';
|
||||
$sRssItem .= self::getHtml(self::cleanRss($asItem['description']), 'description');
|
||||
$sRssItem .= array_key_exists('pubDate', $asItem)?self::getHtml(self::getDate($asItem['pubDate']), 'pubDate'):'';
|
||||
$sRssItem .= array_key_exists('guid', $asItem)?self::getHtml($asItem['guid'], 'guid', '', '', array('isPermaLink'=>'true')):'';
|
||||
$sRssItem .= array_key_exists('guid', $asItem)?self::getHtml($asItem['guid'], 'guid', '', '', array('isPermaLink'=>'false')):'';
|
||||
return self::getHtml($sRssItem, 'item');
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Franzz\Objects;
|
||||
use \Settings;
|
||||
|
||||
/**
|
||||
* Main Class
|
||||
* @author franzz
|
||||
@@ -20,12 +23,6 @@ abstract class Main extends PhpObject
|
||||
//Folders
|
||||
const MASKS_FOLDER = 'masks/';
|
||||
|
||||
/**
|
||||
* Class Management
|
||||
* @var ClassManagement
|
||||
*/
|
||||
protected $oClassManagement;
|
||||
|
||||
/**
|
||||
* DB Handle
|
||||
* @var Db
|
||||
@@ -50,24 +47,23 @@ abstract class Main extends PhpObject
|
||||
|
||||
/**
|
||||
* Main constructor
|
||||
* @param ClassManagement $oClassManagement
|
||||
* @param string $sLang
|
||||
*/
|
||||
public function __construct($oClassManagement, $sProcessPage, $asMandatoryClasses=array(), $bDb=true, $sFile=__FILE__, $sTimeZone='')
|
||||
public function __construct($sProcessPage, $bDb=true, $sTimeZone='', $sLogPath='')
|
||||
{
|
||||
parent::__construct($sFile, Settings::DEBUG);
|
||||
$this->oClassManagement = $oClassManagement;
|
||||
|
||||
//Load classes
|
||||
$asMandatoryClasses[] = array('name'=>'mask', 'project'=>false);
|
||||
if($bDb) $asMandatoryClasses[] = array('name'=>'db', 'project'=>false);
|
||||
foreach($asMandatoryClasses as $asClass) $this->oClassManagement->incClass($asClass['name'], $asClass['project']);
|
||||
parent::__construct(get_class($this), Settings::DEBUG, PhpObject::MODE_FILE, $sLogPath);
|
||||
|
||||
$this->setContext($sProcessPage, $sTimeZone);
|
||||
|
||||
//Init objects
|
||||
if($bDb) {
|
||||
$this->oDb = new Db(Settings::DB_SERVER, Settings::DB_LOGIN, Settings::DB_PASS, Settings::DB_NAME, $this->getSqlOptions() , Settings::DB_ENC);
|
||||
$asConf = array(
|
||||
'server' => Settings::DB_SERVER,
|
||||
'database' => Settings::DB_NAME,
|
||||
'user' => Settings::DB_LOGIN,
|
||||
'pass' => Settings::DB_PASS,
|
||||
'encoding' => Settings::DB_ENC
|
||||
);
|
||||
$this->oDb = new Db($asConf, $this->getSqlOptions());
|
||||
if(in_array($this->oDb->sDbState, array(Db::DB_NO_DATA, Db::DB_NO_TABLE))) $this->install();
|
||||
}
|
||||
}
|
||||
@@ -87,7 +83,6 @@ abstract class Main extends PhpObject
|
||||
header('Content-Type: text/html; charset='.Settings::TEXT_ENC);
|
||||
mb_internal_encoding(Settings::TEXT_ENC);
|
||||
mb_http_output(Settings::TEXT_ENC);
|
||||
mb_http_input(Settings::TEXT_ENC);
|
||||
mb_language('uni');
|
||||
mb_regex_encoding(Settings::TEXT_ENC);
|
||||
|
||||
@@ -119,17 +114,21 @@ abstract class Main extends PhpObject
|
||||
|
||||
public function getMainPage($asGlobalVars=array(), $sMainPage='index', $asMainPageTags=array(), $asCachePages=array())
|
||||
{
|
||||
$asDefaultConsts = array('success'=>self::SUCCESS, 'error'=>self::ERROR, 'process_page'=>$this->asContext['process_page']);
|
||||
$asDefaultConsts = array(
|
||||
'success' => self::SUCCESS,
|
||||
'error' => self::ERROR,
|
||||
'process_page' => $this->asContext['process_page'],
|
||||
'server' => $this->asContext['serv_name']
|
||||
);
|
||||
$asGlobalVars['consts'] = array_merge($asDefaultConsts, array_key_exists('consts', $asGlobalVars)?$asGlobalVars['consts']:array());
|
||||
|
||||
//Masks
|
||||
if(empty($asCachePages)) $asCachePages = array_values($this->asMasks);
|
||||
foreach($asCachePages as $sPage)
|
||||
{
|
||||
foreach($asCachePages as $sPage) {
|
||||
if($sPage != $sMainPage) {
|
||||
$oMask = new Mask($sPage, $this->oLang);
|
||||
$sPageContent = $oMask->getMask();
|
||||
$asGlobalVars['consts']['pages'][$sPage] = $sPageContent;
|
||||
$oMask->setTags($asDefaultConsts);
|
||||
$asGlobalVars['consts']['pages'][$sPage] = $oMask->getMask();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,6 +139,7 @@ abstract class Main extends PhpObject
|
||||
|
||||
$oMainMask = new Mask($sMainPage, $this->oLang);
|
||||
$oMainMask->setTag('GLOBAL_VARS', json_encode($asGlobalVars));
|
||||
$oMainMask->setTags($asDefaultConsts);
|
||||
$oMainMask->setTags($asMainPageTags);
|
||||
|
||||
return $oMainMask->getMask();
|
||||
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Franzz\Objects;
|
||||
use \Settings;
|
||||
|
||||
/**
|
||||
* Mask Reader
|
||||
* @author franzz
|
||||
@@ -29,7 +32,7 @@ class Mask extends PhpObject
|
||||
public function __construct($sFileName='', Translator $oLang=null, $sTimezone = '')
|
||||
{
|
||||
//init
|
||||
parent::__construct(__FILE__, Settings::DEBUG);
|
||||
parent::__construct(__CLASS__);
|
||||
$this->sMaskName = '';
|
||||
$this->sFilePath = '';
|
||||
$this->sMask = '';
|
||||
@@ -293,7 +296,7 @@ class Mask extends PhpObject
|
||||
if(!is_null($this->oLang) && self::isLangTag($sTagValue)) $sTagValue = $this->oLang->getTranslation($sTagActValue, $this->asTagsParams[$sTagName]);
|
||||
|
||||
//Convert Value to Mask Time Zone
|
||||
if(self::isTimeTag($sTagValue)) $sTagValue = (new DateTime('@'.$sTagActValue))->setTimeZone(new DateTimeZone($this->sTimezone))->format($this->asTagsParams[$sTagName]);;
|
||||
if(self::isTimeTag($sTagValue)) $sTagValue = (new \DateTime('@'.$sTagActValue))->setTimeZone(new \DateTimeZone($this->sTimezone))->format($this->asTagsParams[$sTagName]);;
|
||||
}
|
||||
|
||||
//Replace Tags
|
||||
86
class_management.php → inc/PhpObject.php
Executable file → Normal file
86
class_management.php → inc/PhpObject.php
Executable file → Normal file
@@ -1,72 +1,7 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Manage includes
|
||||
* @author franzz
|
||||
* @version 1.2
|
||||
*/
|
||||
class ClassManagement extends PhpObject
|
||||
{
|
||||
const OBJECT_FOLDER = '../objects/';
|
||||
const INC_FOLDER = 'inc/';
|
||||
const INC_EXT = '.php';
|
||||
const SETTINGS_FILE = 'settings.php';
|
||||
const GLOBAL_SETTINGS_FILE = 'globalsettings.php';
|
||||
const TOOLBOX_CLASS = 'toolbox';
|
||||
const MAIN_CLASS_ABS = 'main';
|
||||
|
||||
private $asIncFiles;
|
||||
|
||||
function __construct($sMainClass)
|
||||
{
|
||||
parent::__construct(__FILE__, true);
|
||||
$this->asIncFiles = array();
|
||||
|
||||
//try to include default files
|
||||
$this->incFile(self::OBJECT_FOLDER.self::GLOBAL_SETTINGS_FILE);
|
||||
$this->incFile(self::SETTINGS_FILE);
|
||||
$this->incClass(self::TOOLBOX_CLASS);
|
||||
|
||||
//Include main class
|
||||
$this->incClass(self::MAIN_CLASS_ABS);
|
||||
$this->incClass($sMainClass, true);
|
||||
}
|
||||
|
||||
function __destruct()
|
||||
{
|
||||
parent::__destruct();
|
||||
}
|
||||
|
||||
public function incClass($sClassName, $bProjectClass=false)
|
||||
{
|
||||
$sProject = $bProjectClass?'':self::OBJECT_FOLDER;
|
||||
$sFile = $sProject.self::INC_FOLDER.$sClassName.self::INC_EXT;
|
||||
return $this->incFile($sFile);
|
||||
}
|
||||
|
||||
public function incFile($sFilePath, $bMandatory=true)
|
||||
{
|
||||
$bIncluded = false;
|
||||
if(!in_array($sFilePath, $this->asIncFiles))
|
||||
{
|
||||
$sMissingFile = 'File "'.$sFilePath.'" missing.';
|
||||
if(file_exists($sFilePath))
|
||||
{
|
||||
$bIncluded = require_once($sFilePath);
|
||||
$this->asIncFiles[] = $sFilePath;
|
||||
}
|
||||
elseif($bMandatory)
|
||||
{
|
||||
die($sMissingFile.' Stopping process.');
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->addError($sMissingFile);
|
||||
}
|
||||
}
|
||||
return $bIncluded;
|
||||
}
|
||||
}
|
||||
namespace Franzz\Objects;
|
||||
use \Settings;
|
||||
|
||||
/**
|
||||
* PHP Object
|
||||
@@ -77,6 +12,7 @@ class PhpObject
|
||||
{
|
||||
//Log file name
|
||||
const LOG_FILENAME = 'log.html';
|
||||
private $sLogPath;
|
||||
|
||||
//Message types
|
||||
const NOTICE_TAB = 'Notice';
|
||||
@@ -96,13 +32,14 @@ class PhpObject
|
||||
private $sChildClass;
|
||||
private $bDebug;
|
||||
|
||||
function __construct($sClass='', $bDebug=false, $iExtractMode=self::MODE_FILE)
|
||||
function __construct($sClass='', $bDebug=Settings::DEBUG, $iExtractMode=self::MODE_FILE, $sLogPath='')
|
||||
{
|
||||
$this->asMessageStack = array();
|
||||
$this->resetMessageStack();
|
||||
$this->setDebug($bDebug);
|
||||
$this->setExtractMode($iExtractMode);
|
||||
$this->sChildClass = $sClass;
|
||||
$this->setLogPath($sLogPath);
|
||||
}
|
||||
|
||||
public function setExtractMode($iExtractMode) {
|
||||
@@ -120,9 +57,14 @@ class PhpObject
|
||||
return $this->bDebug;
|
||||
}
|
||||
|
||||
private static function getLogPath()
|
||||
private function setLogPath($sLogPath) {
|
||||
if($sLogPath == '') $sLogPath = defined('Settings::LOG_FOLDER')?Settings::LOG_FOLDER:dirname(__FILE__);
|
||||
$this->sLogPath = $sLogPath.DIRECTORY_SEPARATOR.self::LOG_FILENAME;
|
||||
}
|
||||
|
||||
private function getLogPath()
|
||||
{
|
||||
return dirname(__FILE__).'/'.self::LOG_FILENAME;
|
||||
return $this->sLogPath;
|
||||
}
|
||||
|
||||
private function resetMessageStack($sType=self::ALL_TAB)
|
||||
@@ -168,7 +110,7 @@ class PhpObject
|
||||
$this->asMessageStack[self::ERROR_TAB]
|
||||
);
|
||||
}
|
||||
else $asMessages = $this->asMessageStack[$sType];
|
||||
else $asMessages = $this->asMessageStack[$sType] ?? array();
|
||||
|
||||
$this->resetMessageStack($sType);
|
||||
return $this->glueMessages($asMessages);
|
||||
@@ -253,5 +195,3 @@ class PhpObject
|
||||
$this->cleanMessageStack();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Franzz\Objects;
|
||||
use \Settings;
|
||||
|
||||
/**
|
||||
* ToolBox - Only static functions missing from php library
|
||||
* @author franzz
|
||||
@@ -12,11 +15,7 @@ class ToolBox
|
||||
|
||||
public static function cleanPost(&$asData)
|
||||
{
|
||||
//get rid of magic quotes
|
||||
if(function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc())
|
||||
{
|
||||
$asData = self::cleanData($asData, 'stripslashes');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static function cleanData($oData, $sCleaningFunc)
|
||||
@@ -81,39 +80,6 @@ class ToolBox
|
||||
return $acText;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param String $sFromName
|
||||
* @param String $sSubject
|
||||
* @param String $sMessage
|
||||
* @param String $sTo
|
||||
* @param Array $asCc array(name => email)
|
||||
* @param Boolean $bSelfMail
|
||||
* @return mixed
|
||||
*/
|
||||
public function sendMail($sFromName, $sSubject, $sMessage, $sTo, $asCc=array(), $bSelfMail=true)
|
||||
{
|
||||
$asForm = array('api_key'=>Settings::MAIL_API_KEY,
|
||||
'app'=>'Wedding',
|
||||
'from_name'=>$sFromName,
|
||||
'subject'=>$sSubject,
|
||||
'msg'=>$sMessage,
|
||||
'to_email'=>$sTo,
|
||||
'cc_email'=>self::jsonConvert($asCc),
|
||||
'self'=>$bSelfMail);
|
||||
|
||||
$oCurl = curl_init();
|
||||
curl_setopt($oCurl, CURLOPT_URL, Settings::MAIL_SCRIPT);
|
||||
curl_setopt($oCurl, CURLOPT_POST, true);
|
||||
curl_setopt($oCurl, CURLOPT_HEADER, false);
|
||||
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true);
|
||||
curl_setopt($oCurl, CURLOPT_POSTFIELDS, $asForm);
|
||||
$iResult = curl_exec($oCurl);
|
||||
curl_close($oCurl);
|
||||
|
||||
return $iResult;
|
||||
}
|
||||
|
||||
public static function jsonExport($asData)
|
||||
{
|
||||
header('Content-type: application/json');
|
||||
@@ -170,7 +136,7 @@ class ToolBox
|
||||
//Retrieving file Content Type
|
||||
if(file_exists($sPath)) //Local
|
||||
{
|
||||
$oFileInfo = new finfo(FILEINFO_MIME);
|
||||
$oFileInfo = new \finfo(FILEINFO_MIME);
|
||||
$sMimetype = $oFileInfo->file($sPath);
|
||||
}
|
||||
else //Remote
|
||||
@@ -346,7 +312,7 @@ class ToolBox
|
||||
return $asResult;
|
||||
}
|
||||
|
||||
public function copyExif($srcfile, $destfile) {
|
||||
public static function copyExif($srcfile, $destfile) {
|
||||
// Function transfers EXIF (APP1) and IPTC (APP13) from $srcfile and adds it to $destfile
|
||||
// JPEG file has format 0xFFD8 + [APP0] + [APP1] + ... [APP15] + <image data> where [APPi] are optional
|
||||
// Segment APPi (where i=0x0 to 0xF) has format 0xFFEi + 0xMM + 0xLL + <data> (where 0xMM is
|
||||
@@ -515,8 +481,8 @@ class ToolBox
|
||||
|
||||
switch ($sLang) {
|
||||
case 'en':
|
||||
$asWeekDays = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'satursday', 'sunday');
|
||||
$asMonths = array('january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december');
|
||||
$asWeekDays = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Satursday', 'Sunday');
|
||||
$asMonths = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
|
||||
break;
|
||||
case 'fr':
|
||||
$asWeekDays = array('lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
|
||||
@@ -540,7 +506,7 @@ class ToolBox
|
||||
elseif($sCurTimeStamp-$iTimeStamp<60*60*2) $sDesc = 'an hour ago';
|
||||
elseif($sCurTimeStamp-$iTimeStamp<60*60*24 && $sDay==$sCurDay) $sDesc = 'at '.date('gA', $iTimeStamp);
|
||||
elseif($sCurTimeStamp-$iTimeStamp<60*60*24) $sDesc = 'yesterday';
|
||||
elseif($sCurTimeStamp-$iTimeStamp<60*60*24*7 && $sWeek==$sCurWeek) $sDesc = $asWeekDays[$sWeekDay-1];
|
||||
elseif($sCurTimeStamp-$iTimeStamp<60*60*24*7 && $sWeek==$sCurWeek) $sDesc = 'on '.$asWeekDays[$sWeekDay-1];
|
||||
elseif($sCurTimeStamp-$iTimeStamp<60*60*24*7) $sDesc = 'last '.$asWeekDays[$sWeekDay-1];
|
||||
elseif($sCurTimeStamp-$iTimeStamp<60*60*24*9) $sDesc = 'a week ago';
|
||||
elseif($sCurTimeStamp-$iTimeStamp<60*60*24*12) $sDesc = '10 days ago';
|
||||
@@ -591,227 +557,205 @@ class ToolBox
|
||||
{
|
||||
if(!preg_match('/[\x80-\xff]/', $string)) return $string;
|
||||
|
||||
if (true || seems_utf8($string)) {
|
||||
$chars = array(
|
||||
// Decompositions for Latin-1 Supplement
|
||||
chr(194).chr(170) => 'a', chr(194).chr(186) => 'o',
|
||||
chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
|
||||
chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
|
||||
chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
|
||||
chr(195).chr(134) => 'AE',chr(195).chr(135) => 'C',
|
||||
chr(195).chr(136) => 'E', chr(195).chr(137) => 'E',
|
||||
chr(195).chr(138) => 'E', chr(195).chr(139) => 'E',
|
||||
chr(195).chr(140) => 'I', chr(195).chr(141) => 'I',
|
||||
chr(195).chr(142) => 'I', chr(195).chr(143) => 'I',
|
||||
chr(195).chr(144) => 'D', chr(195).chr(145) => 'N',
|
||||
chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
|
||||
chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
|
||||
chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
|
||||
chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
|
||||
chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
|
||||
chr(195).chr(158) => 'TH',chr(195).chr(159) => 's',
|
||||
chr(195).chr(160) => 'a', chr(195).chr(161) => 'a',
|
||||
chr(195).chr(162) => 'a', chr(195).chr(163) => 'a',
|
||||
chr(195).chr(164) => 'a', chr(195).chr(165) => 'a',
|
||||
chr(195).chr(166) => 'ae',chr(195).chr(167) => 'c',
|
||||
chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
|
||||
chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
|
||||
chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
|
||||
chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
|
||||
chr(195).chr(176) => 'd', chr(195).chr(177) => 'n',
|
||||
chr(195).chr(178) => 'o', chr(195).chr(179) => 'o',
|
||||
chr(195).chr(180) => 'o', chr(195).chr(181) => 'o',
|
||||
chr(195).chr(182) => 'o', chr(195).chr(184) => 'o',
|
||||
chr(195).chr(185) => 'u', chr(195).chr(186) => 'u',
|
||||
chr(195).chr(187) => 'u', chr(195).chr(188) => 'u',
|
||||
chr(195).chr(189) => 'y', chr(195).chr(190) => 'th',
|
||||
chr(195).chr(191) => 'y', chr(195).chr(152) => 'O',
|
||||
// Decompositions for Latin Extended-A
|
||||
chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
|
||||
chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
|
||||
chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
|
||||
chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
|
||||
chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
|
||||
chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
|
||||
chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
|
||||
chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
|
||||
chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
|
||||
chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
|
||||
chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
|
||||
chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
|
||||
chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
|
||||
chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
|
||||
chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
|
||||
chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
|
||||
chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
|
||||
chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
|
||||
chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
|
||||
chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
|
||||
chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
|
||||
chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
|
||||
chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
|
||||
chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
|
||||
chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
|
||||
chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
|
||||
chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
|
||||
chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
|
||||
chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
|
||||
chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
|
||||
chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
|
||||
chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
|
||||
chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
|
||||
chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
|
||||
chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
|
||||
chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
|
||||
chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
|
||||
chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
|
||||
chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
|
||||
chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
|
||||
chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
|
||||
chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
|
||||
chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
|
||||
chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
|
||||
chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
|
||||
chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
|
||||
chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
|
||||
chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
|
||||
chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
|
||||
chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
|
||||
chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
|
||||
chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
|
||||
chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
|
||||
chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
|
||||
chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
|
||||
chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
|
||||
chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
|
||||
chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
|
||||
chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
|
||||
chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
|
||||
chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
|
||||
chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
|
||||
chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
|
||||
chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
|
||||
// Decompositions for Latin Extended-B
|
||||
chr(200).chr(152) => 'S', chr(200).chr(153) => 's',
|
||||
chr(200).chr(154) => 'T', chr(200).chr(155) => 't',
|
||||
// Euro Sign
|
||||
chr(226).chr(130).chr(172) => 'E',
|
||||
// GBP (Pound) Sign
|
||||
chr(194).chr(163) => '',
|
||||
// Vowels with diacritic (Vietnamese)
|
||||
// unmarked
|
||||
chr(198).chr(160) => 'O', chr(198).chr(161) => 'o',
|
||||
chr(198).chr(175) => 'U', chr(198).chr(176) => 'u',
|
||||
// grave accent
|
||||
chr(225).chr(186).chr(166) => 'A', chr(225).chr(186).chr(167) => 'a',
|
||||
chr(225).chr(186).chr(176) => 'A', chr(225).chr(186).chr(177) => 'a',
|
||||
chr(225).chr(187).chr(128) => 'E', chr(225).chr(187).chr(129) => 'e',
|
||||
chr(225).chr(187).chr(146) => 'O', chr(225).chr(187).chr(147) => 'o',
|
||||
chr(225).chr(187).chr(156) => 'O', chr(225).chr(187).chr(157) => 'o',
|
||||
chr(225).chr(187).chr(170) => 'U', chr(225).chr(187).chr(171) => 'u',
|
||||
chr(225).chr(187).chr(178) => 'Y', chr(225).chr(187).chr(179) => 'y',
|
||||
// hook
|
||||
chr(225).chr(186).chr(162) => 'A', chr(225).chr(186).chr(163) => 'a',
|
||||
chr(225).chr(186).chr(168) => 'A', chr(225).chr(186).chr(169) => 'a',
|
||||
chr(225).chr(186).chr(178) => 'A', chr(225).chr(186).chr(179) => 'a',
|
||||
chr(225).chr(186).chr(186) => 'E', chr(225).chr(186).chr(187) => 'e',
|
||||
chr(225).chr(187).chr(130) => 'E', chr(225).chr(187).chr(131) => 'e',
|
||||
chr(225).chr(187).chr(136) => 'I', chr(225).chr(187).chr(137) => 'i',
|
||||
chr(225).chr(187).chr(142) => 'O', chr(225).chr(187).chr(143) => 'o',
|
||||
chr(225).chr(187).chr(148) => 'O', chr(225).chr(187).chr(149) => 'o',
|
||||
chr(225).chr(187).chr(158) => 'O', chr(225).chr(187).chr(159) => 'o',
|
||||
chr(225).chr(187).chr(166) => 'U', chr(225).chr(187).chr(167) => 'u',
|
||||
chr(225).chr(187).chr(172) => 'U', chr(225).chr(187).chr(173) => 'u',
|
||||
chr(225).chr(187).chr(182) => 'Y', chr(225).chr(187).chr(183) => 'y',
|
||||
// tilde
|
||||
chr(225).chr(186).chr(170) => 'A', chr(225).chr(186).chr(171) => 'a',
|
||||
chr(225).chr(186).chr(180) => 'A', chr(225).chr(186).chr(181) => 'a',
|
||||
chr(225).chr(186).chr(188) => 'E', chr(225).chr(186).chr(189) => 'e',
|
||||
chr(225).chr(187).chr(132) => 'E', chr(225).chr(187).chr(133) => 'e',
|
||||
chr(225).chr(187).chr(150) => 'O', chr(225).chr(187).chr(151) => 'o',
|
||||
chr(225).chr(187).chr(160) => 'O', chr(225).chr(187).chr(161) => 'o',
|
||||
chr(225).chr(187).chr(174) => 'U', chr(225).chr(187).chr(175) => 'u',
|
||||
chr(225).chr(187).chr(184) => 'Y', chr(225).chr(187).chr(185) => 'y',
|
||||
// acute accent
|
||||
chr(225).chr(186).chr(164) => 'A', chr(225).chr(186).chr(165) => 'a',
|
||||
chr(225).chr(186).chr(174) => 'A', chr(225).chr(186).chr(175) => 'a',
|
||||
chr(225).chr(186).chr(190) => 'E', chr(225).chr(186).chr(191) => 'e',
|
||||
chr(225).chr(187).chr(144) => 'O', chr(225).chr(187).chr(145) => 'o',
|
||||
chr(225).chr(187).chr(154) => 'O', chr(225).chr(187).chr(155) => 'o',
|
||||
chr(225).chr(187).chr(168) => 'U', chr(225).chr(187).chr(169) => 'u',
|
||||
// dot below
|
||||
chr(225).chr(186).chr(160) => 'A', chr(225).chr(186).chr(161) => 'a',
|
||||
chr(225).chr(186).chr(172) => 'A', chr(225).chr(186).chr(173) => 'a',
|
||||
chr(225).chr(186).chr(182) => 'A', chr(225).chr(186).chr(183) => 'a',
|
||||
chr(225).chr(186).chr(184) => 'E', chr(225).chr(186).chr(185) => 'e',
|
||||
chr(225).chr(187).chr(134) => 'E', chr(225).chr(187).chr(135) => 'e',
|
||||
chr(225).chr(187).chr(138) => 'I', chr(225).chr(187).chr(139) => 'i',
|
||||
chr(225).chr(187).chr(140) => 'O', chr(225).chr(187).chr(141) => 'o',
|
||||
chr(225).chr(187).chr(152) => 'O', chr(225).chr(187).chr(153) => 'o',
|
||||
chr(225).chr(187).chr(162) => 'O', chr(225).chr(187).chr(163) => 'o',
|
||||
chr(225).chr(187).chr(164) => 'U', chr(225).chr(187).chr(165) => 'u',
|
||||
chr(225).chr(187).chr(176) => 'U', chr(225).chr(187).chr(177) => 'u',
|
||||
chr(225).chr(187).chr(180) => 'Y', chr(225).chr(187).chr(181) => 'y',
|
||||
// Vowels with diacritic (Chinese, Hanyu Pinyin)
|
||||
chr(201).chr(145) => 'a',
|
||||
// macron
|
||||
chr(199).chr(149) => 'U', chr(199).chr(150) => 'u',
|
||||
// acute accent
|
||||
chr(199).chr(151) => 'U', chr(199).chr(152) => 'u',
|
||||
// caron
|
||||
chr(199).chr(141) => 'A', chr(199).chr(142) => 'a',
|
||||
chr(199).chr(143) => 'I', chr(199).chr(144) => 'i',
|
||||
chr(199).chr(145) => 'O', chr(199).chr(146) => 'o',
|
||||
chr(199).chr(147) => 'U', chr(199).chr(148) => 'u',
|
||||
chr(199).chr(153) => 'U', chr(199).chr(154) => 'u',
|
||||
// grave accent
|
||||
chr(199).chr(155) => 'U', chr(199).chr(156) => 'u',
|
||||
);
|
||||
$chars = array(
|
||||
// Decompositions for Latin-1 Supplement
|
||||
chr(194).chr(170) => 'a', chr(194).chr(186) => 'o',
|
||||
chr(195).chr(128) => 'A', chr(195).chr(129) => 'A',
|
||||
chr(195).chr(130) => 'A', chr(195).chr(131) => 'A',
|
||||
chr(195).chr(132) => 'A', chr(195).chr(133) => 'A',
|
||||
chr(195).chr(134) => 'AE',chr(195).chr(135) => 'C',
|
||||
chr(195).chr(136) => 'E', chr(195).chr(137) => 'E',
|
||||
chr(195).chr(138) => 'E', chr(195).chr(139) => 'E',
|
||||
chr(195).chr(140) => 'I', chr(195).chr(141) => 'I',
|
||||
chr(195).chr(142) => 'I', chr(195).chr(143) => 'I',
|
||||
chr(195).chr(144) => 'D', chr(195).chr(145) => 'N',
|
||||
chr(195).chr(146) => 'O', chr(195).chr(147) => 'O',
|
||||
chr(195).chr(148) => 'O', chr(195).chr(149) => 'O',
|
||||
chr(195).chr(150) => 'O', chr(195).chr(153) => 'U',
|
||||
chr(195).chr(154) => 'U', chr(195).chr(155) => 'U',
|
||||
chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y',
|
||||
chr(195).chr(158) => 'TH',chr(195).chr(159) => 's',
|
||||
chr(195).chr(160) => 'a', chr(195).chr(161) => 'a',
|
||||
chr(195).chr(162) => 'a', chr(195).chr(163) => 'a',
|
||||
chr(195).chr(164) => 'a', chr(195).chr(165) => 'a',
|
||||
chr(195).chr(166) => 'ae',chr(195).chr(167) => 'c',
|
||||
chr(195).chr(168) => 'e', chr(195).chr(169) => 'e',
|
||||
chr(195).chr(170) => 'e', chr(195).chr(171) => 'e',
|
||||
chr(195).chr(172) => 'i', chr(195).chr(173) => 'i',
|
||||
chr(195).chr(174) => 'i', chr(195).chr(175) => 'i',
|
||||
chr(195).chr(176) => 'd', chr(195).chr(177) => 'n',
|
||||
chr(195).chr(178) => 'o', chr(195).chr(179) => 'o',
|
||||
chr(195).chr(180) => 'o', chr(195).chr(181) => 'o',
|
||||
chr(195).chr(182) => 'o', chr(195).chr(184) => 'o',
|
||||
chr(195).chr(185) => 'u', chr(195).chr(186) => 'u',
|
||||
chr(195).chr(187) => 'u', chr(195).chr(188) => 'u',
|
||||
chr(195).chr(189) => 'y', chr(195).chr(190) => 'th',
|
||||
chr(195).chr(191) => 'y', chr(195).chr(152) => 'O',
|
||||
// Decompositions for Latin Extended-A
|
||||
chr(196).chr(128) => 'A', chr(196).chr(129) => 'a',
|
||||
chr(196).chr(130) => 'A', chr(196).chr(131) => 'a',
|
||||
chr(196).chr(132) => 'A', chr(196).chr(133) => 'a',
|
||||
chr(196).chr(134) => 'C', chr(196).chr(135) => 'c',
|
||||
chr(196).chr(136) => 'C', chr(196).chr(137) => 'c',
|
||||
chr(196).chr(138) => 'C', chr(196).chr(139) => 'c',
|
||||
chr(196).chr(140) => 'C', chr(196).chr(141) => 'c',
|
||||
chr(196).chr(142) => 'D', chr(196).chr(143) => 'd',
|
||||
chr(196).chr(144) => 'D', chr(196).chr(145) => 'd',
|
||||
chr(196).chr(146) => 'E', chr(196).chr(147) => 'e',
|
||||
chr(196).chr(148) => 'E', chr(196).chr(149) => 'e',
|
||||
chr(196).chr(150) => 'E', chr(196).chr(151) => 'e',
|
||||
chr(196).chr(152) => 'E', chr(196).chr(153) => 'e',
|
||||
chr(196).chr(154) => 'E', chr(196).chr(155) => 'e',
|
||||
chr(196).chr(156) => 'G', chr(196).chr(157) => 'g',
|
||||
chr(196).chr(158) => 'G', chr(196).chr(159) => 'g',
|
||||
chr(196).chr(160) => 'G', chr(196).chr(161) => 'g',
|
||||
chr(196).chr(162) => 'G', chr(196).chr(163) => 'g',
|
||||
chr(196).chr(164) => 'H', chr(196).chr(165) => 'h',
|
||||
chr(196).chr(166) => 'H', chr(196).chr(167) => 'h',
|
||||
chr(196).chr(168) => 'I', chr(196).chr(169) => 'i',
|
||||
chr(196).chr(170) => 'I', chr(196).chr(171) => 'i',
|
||||
chr(196).chr(172) => 'I', chr(196).chr(173) => 'i',
|
||||
chr(196).chr(174) => 'I', chr(196).chr(175) => 'i',
|
||||
chr(196).chr(176) => 'I', chr(196).chr(177) => 'i',
|
||||
chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij',
|
||||
chr(196).chr(180) => 'J', chr(196).chr(181) => 'j',
|
||||
chr(196).chr(182) => 'K', chr(196).chr(183) => 'k',
|
||||
chr(196).chr(184) => 'k', chr(196).chr(185) => 'L',
|
||||
chr(196).chr(186) => 'l', chr(196).chr(187) => 'L',
|
||||
chr(196).chr(188) => 'l', chr(196).chr(189) => 'L',
|
||||
chr(196).chr(190) => 'l', chr(196).chr(191) => 'L',
|
||||
chr(197).chr(128) => 'l', chr(197).chr(129) => 'L',
|
||||
chr(197).chr(130) => 'l', chr(197).chr(131) => 'N',
|
||||
chr(197).chr(132) => 'n', chr(197).chr(133) => 'N',
|
||||
chr(197).chr(134) => 'n', chr(197).chr(135) => 'N',
|
||||
chr(197).chr(136) => 'n', chr(197).chr(137) => 'N',
|
||||
chr(197).chr(138) => 'n', chr(197).chr(139) => 'N',
|
||||
chr(197).chr(140) => 'O', chr(197).chr(141) => 'o',
|
||||
chr(197).chr(142) => 'O', chr(197).chr(143) => 'o',
|
||||
chr(197).chr(144) => 'O', chr(197).chr(145) => 'o',
|
||||
chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe',
|
||||
chr(197).chr(148) => 'R',chr(197).chr(149) => 'r',
|
||||
chr(197).chr(150) => 'R',chr(197).chr(151) => 'r',
|
||||
chr(197).chr(152) => 'R',chr(197).chr(153) => 'r',
|
||||
chr(197).chr(154) => 'S',chr(197).chr(155) => 's',
|
||||
chr(197).chr(156) => 'S',chr(197).chr(157) => 's',
|
||||
chr(197).chr(158) => 'S',chr(197).chr(159) => 's',
|
||||
chr(197).chr(160) => 'S', chr(197).chr(161) => 's',
|
||||
chr(197).chr(162) => 'T', chr(197).chr(163) => 't',
|
||||
chr(197).chr(164) => 'T', chr(197).chr(165) => 't',
|
||||
chr(197).chr(166) => 'T', chr(197).chr(167) => 't',
|
||||
chr(197).chr(168) => 'U', chr(197).chr(169) => 'u',
|
||||
chr(197).chr(170) => 'U', chr(197).chr(171) => 'u',
|
||||
chr(197).chr(172) => 'U', chr(197).chr(173) => 'u',
|
||||
chr(197).chr(174) => 'U', chr(197).chr(175) => 'u',
|
||||
chr(197).chr(176) => 'U', chr(197).chr(177) => 'u',
|
||||
chr(197).chr(178) => 'U', chr(197).chr(179) => 'u',
|
||||
chr(197).chr(180) => 'W', chr(197).chr(181) => 'w',
|
||||
chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y',
|
||||
chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z',
|
||||
chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z',
|
||||
chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z',
|
||||
chr(197).chr(190) => 'z', chr(197).chr(191) => 's',
|
||||
// Decompositions for Latin Extended-B
|
||||
chr(200).chr(152) => 'S', chr(200).chr(153) => 's',
|
||||
chr(200).chr(154) => 'T', chr(200).chr(155) => 't',
|
||||
// Euro Sign
|
||||
chr(226).chr(130).chr(172) => 'E',
|
||||
// GBP (Pound) Sign
|
||||
chr(194).chr(163) => '',
|
||||
// Vowels with diacritic (Vietnamese)
|
||||
// unmarked
|
||||
chr(198).chr(160) => 'O', chr(198).chr(161) => 'o',
|
||||
chr(198).chr(175) => 'U', chr(198).chr(176) => 'u',
|
||||
// grave accent
|
||||
chr(225).chr(186).chr(166) => 'A', chr(225).chr(186).chr(167) => 'a',
|
||||
chr(225).chr(186).chr(176) => 'A', chr(225).chr(186).chr(177) => 'a',
|
||||
chr(225).chr(187).chr(128) => 'E', chr(225).chr(187).chr(129) => 'e',
|
||||
chr(225).chr(187).chr(146) => 'O', chr(225).chr(187).chr(147) => 'o',
|
||||
chr(225).chr(187).chr(156) => 'O', chr(225).chr(187).chr(157) => 'o',
|
||||
chr(225).chr(187).chr(170) => 'U', chr(225).chr(187).chr(171) => 'u',
|
||||
chr(225).chr(187).chr(178) => 'Y', chr(225).chr(187).chr(179) => 'y',
|
||||
// hook
|
||||
chr(225).chr(186).chr(162) => 'A', chr(225).chr(186).chr(163) => 'a',
|
||||
chr(225).chr(186).chr(168) => 'A', chr(225).chr(186).chr(169) => 'a',
|
||||
chr(225).chr(186).chr(178) => 'A', chr(225).chr(186).chr(179) => 'a',
|
||||
chr(225).chr(186).chr(186) => 'E', chr(225).chr(186).chr(187) => 'e',
|
||||
chr(225).chr(187).chr(130) => 'E', chr(225).chr(187).chr(131) => 'e',
|
||||
chr(225).chr(187).chr(136) => 'I', chr(225).chr(187).chr(137) => 'i',
|
||||
chr(225).chr(187).chr(142) => 'O', chr(225).chr(187).chr(143) => 'o',
|
||||
chr(225).chr(187).chr(148) => 'O', chr(225).chr(187).chr(149) => 'o',
|
||||
chr(225).chr(187).chr(158) => 'O', chr(225).chr(187).chr(159) => 'o',
|
||||
chr(225).chr(187).chr(166) => 'U', chr(225).chr(187).chr(167) => 'u',
|
||||
chr(225).chr(187).chr(172) => 'U', chr(225).chr(187).chr(173) => 'u',
|
||||
chr(225).chr(187).chr(182) => 'Y', chr(225).chr(187).chr(183) => 'y',
|
||||
// tilde
|
||||
chr(225).chr(186).chr(170) => 'A', chr(225).chr(186).chr(171) => 'a',
|
||||
chr(225).chr(186).chr(180) => 'A', chr(225).chr(186).chr(181) => 'a',
|
||||
chr(225).chr(186).chr(188) => 'E', chr(225).chr(186).chr(189) => 'e',
|
||||
chr(225).chr(187).chr(132) => 'E', chr(225).chr(187).chr(133) => 'e',
|
||||
chr(225).chr(187).chr(150) => 'O', chr(225).chr(187).chr(151) => 'o',
|
||||
chr(225).chr(187).chr(160) => 'O', chr(225).chr(187).chr(161) => 'o',
|
||||
chr(225).chr(187).chr(174) => 'U', chr(225).chr(187).chr(175) => 'u',
|
||||
chr(225).chr(187).chr(184) => 'Y', chr(225).chr(187).chr(185) => 'y',
|
||||
// acute accent
|
||||
chr(225).chr(186).chr(164) => 'A', chr(225).chr(186).chr(165) => 'a',
|
||||
chr(225).chr(186).chr(174) => 'A', chr(225).chr(186).chr(175) => 'a',
|
||||
chr(225).chr(186).chr(190) => 'E', chr(225).chr(186).chr(191) => 'e',
|
||||
chr(225).chr(187).chr(144) => 'O', chr(225).chr(187).chr(145) => 'o',
|
||||
chr(225).chr(187).chr(154) => 'O', chr(225).chr(187).chr(155) => 'o',
|
||||
chr(225).chr(187).chr(168) => 'U', chr(225).chr(187).chr(169) => 'u',
|
||||
// dot below
|
||||
chr(225).chr(186).chr(160) => 'A', chr(225).chr(186).chr(161) => 'a',
|
||||
chr(225).chr(186).chr(172) => 'A', chr(225).chr(186).chr(173) => 'a',
|
||||
chr(225).chr(186).chr(182) => 'A', chr(225).chr(186).chr(183) => 'a',
|
||||
chr(225).chr(186).chr(184) => 'E', chr(225).chr(186).chr(185) => 'e',
|
||||
chr(225).chr(187).chr(134) => 'E', chr(225).chr(187).chr(135) => 'e',
|
||||
chr(225).chr(187).chr(138) => 'I', chr(225).chr(187).chr(139) => 'i',
|
||||
chr(225).chr(187).chr(140) => 'O', chr(225).chr(187).chr(141) => 'o',
|
||||
chr(225).chr(187).chr(152) => 'O', chr(225).chr(187).chr(153) => 'o',
|
||||
chr(225).chr(187).chr(162) => 'O', chr(225).chr(187).chr(163) => 'o',
|
||||
chr(225).chr(187).chr(164) => 'U', chr(225).chr(187).chr(165) => 'u',
|
||||
chr(225).chr(187).chr(176) => 'U', chr(225).chr(187).chr(177) => 'u',
|
||||
chr(225).chr(187).chr(180) => 'Y', chr(225).chr(187).chr(181) => 'y',
|
||||
// Vowels with diacritic (Chinese, Hanyu Pinyin)
|
||||
chr(201).chr(145) => 'a',
|
||||
// macron
|
||||
chr(199).chr(149) => 'U', chr(199).chr(150) => 'u',
|
||||
// acute accent
|
||||
chr(199).chr(151) => 'U', chr(199).chr(152) => 'u',
|
||||
// caron
|
||||
chr(199).chr(141) => 'A', chr(199).chr(142) => 'a',
|
||||
chr(199).chr(143) => 'I', chr(199).chr(144) => 'i',
|
||||
chr(199).chr(145) => 'O', chr(199).chr(146) => 'o',
|
||||
chr(199).chr(147) => 'U', chr(199).chr(148) => 'u',
|
||||
chr(199).chr(153) => 'U', chr(199).chr(154) => 'u',
|
||||
// grave accent
|
||||
chr(199).chr(155) => 'U', chr(199).chr(156) => 'u',
|
||||
);
|
||||
|
||||
/*
|
||||
// Used for locale-specific rules
|
||||
$locale = get_locale();
|
||||
/*
|
||||
// Used for locale-specific rules
|
||||
$locale = get_locale();
|
||||
|
||||
if ( 'de_DE' == $locale ) {
|
||||
$chars[ chr(195).chr(132) ] = 'Ae';
|
||||
$chars[ chr(195).chr(164) ] = 'ae';
|
||||
$chars[ chr(195).chr(150) ] = 'Oe';
|
||||
$chars[ chr(195).chr(182) ] = 'oe';
|
||||
$chars[ chr(195).chr(156) ] = 'Ue';
|
||||
$chars[ chr(195).chr(188) ] = 'ue';
|
||||
$chars[ chr(195).chr(159) ] = 'ss';
|
||||
} elseif ( 'da_DK' === $locale ) {
|
||||
$chars[ chr(195).chr(134) ] = 'Ae';
|
||||
$chars[ chr(195).chr(166) ] = 'ae';
|
||||
$chars[ chr(195).chr(152) ] = 'Oe';
|
||||
$chars[ chr(195).chr(184) ] = 'oe';
|
||||
$chars[ chr(195).chr(133) ] = 'Aa';
|
||||
$chars[ chr(195).chr(165) ] = 'aa';
|
||||
}
|
||||
*/
|
||||
$string = strtr($string, $chars);
|
||||
} else {
|
||||
$chars = array();
|
||||
// Assume ISO-8859-1 if not UTF-8
|
||||
$chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158)
|
||||
.chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194)
|
||||
.chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202)
|
||||
.chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210)
|
||||
.chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218)
|
||||
.chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227)
|
||||
.chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235)
|
||||
.chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243)
|
||||
.chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251)
|
||||
.chr(252).chr(253).chr(255);
|
||||
if ( 'de_DE' == $locale ) {
|
||||
$chars[ chr(195).chr(132) ] = 'Ae';
|
||||
$chars[ chr(195).chr(164) ] = 'ae';
|
||||
$chars[ chr(195).chr(150) ] = 'Oe';
|
||||
$chars[ chr(195).chr(182) ] = 'oe';
|
||||
$chars[ chr(195).chr(156) ] = 'Ue';
|
||||
$chars[ chr(195).chr(188) ] = 'ue';
|
||||
$chars[ chr(195).chr(159) ] = 'ss';
|
||||
} elseif ( 'da_DK' === $locale ) {
|
||||
$chars[ chr(195).chr(134) ] = 'Ae';
|
||||
$chars[ chr(195).chr(166) ] = 'ae';
|
||||
$chars[ chr(195).chr(152) ] = 'Oe';
|
||||
$chars[ chr(195).chr(184) ] = 'oe';
|
||||
$chars[ chr(195).chr(133) ] = 'Aa';
|
||||
$chars[ chr(195).chr(165) ] = 'aa';
|
||||
}
|
||||
*/
|
||||
$string = strtr($string, $chars);
|
||||
|
||||
$chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy";
|
||||
|
||||
$string = strtr($string, $chars['in'], $chars['out']);
|
||||
$double_chars = array();
|
||||
$double_chars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254));
|
||||
$double_chars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th');
|
||||
$string = str_replace($double_chars['in'], $double_chars['out'], $string);
|
||||
}
|
||||
|
||||
return $string;
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
<?php
|
||||
|
||||
namespace Franzz\Objects;
|
||||
use \Settings;
|
||||
|
||||
/**
|
||||
* Translator Class
|
||||
* @author franzz
|
||||
@@ -24,7 +27,7 @@ class Translator extends PhpObject
|
||||
*/
|
||||
public function __construct($sLang='', $sDefaultLang='')
|
||||
{
|
||||
parent::__construct(__FILE__, Settings::DEBUG);
|
||||
parent::__construct(__FILE__);
|
||||
$this->asLanguages = array();
|
||||
$this->asTranslations = array();
|
||||
$this->loadLanguages();
|
||||
@@ -95,6 +98,11 @@ class Translator extends PhpObject
|
||||
return $asPageToHash;
|
||||
}
|
||||
|
||||
public function getTranslationKey($stransText, $sLang='') {
|
||||
if($sLang=='') $sLang = $this->sLang;
|
||||
return array_search($stransText, $this->asTranslations[$sLang]) ?? '';
|
||||
}
|
||||
|
||||
private function loadLanguages()
|
||||
{
|
||||
//List all available languages
|
||||
1483
inc/UploadHandler.php
Normal file
1483
inc/UploadHandler.php
Normal file
File diff suppressed because it is too large
Load Diff
80
index.php
80
index.php
@@ -1,80 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
Main Project
|
||||
http://git.lutran.fr/main.git
|
||||
Copyright (C) 2015 François Lutran
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see http://www.gnu.org/licenses
|
||||
*/
|
||||
|
||||
/* Requests Handler */
|
||||
|
||||
//Start buffering
|
||||
ob_start();
|
||||
require_once '../objects/class_management.php';
|
||||
$oClassManagement = new ClassManagement('main');
|
||||
ToolBox::cleanPost($_POST);
|
||||
ToolBox::cleanPost($_GET);
|
||||
ToolBox::cleanPost($_REQUEST);
|
||||
ToolBox::fixGlobalVars(isset($argv)?$argv:array());
|
||||
|
||||
//Available variables
|
||||
$sToken = isset($_GET['token'])?$_GET['token']:'';
|
||||
$sAction = isset($_GET['a'])?$_GET['a']:'';
|
||||
$sPage = isset($_GET['p'])?$_GET['p']:'index';
|
||||
$sLang = isset($_GET['l'])?$_GET['l']:(isset($_COOKIE['l'])?$_COOKIE['l']:'');
|
||||
//...
|
||||
|
||||
//Initiate class
|
||||
$oMain = new Main($oClassManagement, __FILE__, $sLang);
|
||||
$bLoggedIn = $oMain->isLoggedIn();
|
||||
|
||||
$sResult = '';
|
||||
if($sAction=='logmein') $sResult = $oMain->logMeIn($sToken);
|
||||
elseif($sAction!='' && $bLoggedIn)
|
||||
{
|
||||
switch ($sAction)
|
||||
{
|
||||
case '':
|
||||
$sResult = $oCvTheque->function();
|
||||
break;
|
||||
default:
|
||||
$sResult = Main::getJsonResult(false, Main::NOT_FOUND);
|
||||
}
|
||||
}
|
||||
elseif($sAction!='' && !$bLoggedIn)
|
||||
{
|
||||
if($oCvTheque->checkApiKey($iApiKey))
|
||||
{
|
||||
switch ($sAction)
|
||||
{
|
||||
case '':
|
||||
$sResult = $oCvTheque->apifunction();
|
||||
break;
|
||||
default:
|
||||
$sResult = Main::getJsonResult(false, Main::NOT_FOUND);
|
||||
}
|
||||
}
|
||||
else $sResult = Main::getJsonResult(false, Main::UNAUTHORIZED);
|
||||
}
|
||||
elseif($bLoggedIn) $sResult = $oMain->getMainPage();
|
||||
else $sResult = $oMain->getLogonPage();
|
||||
|
||||
$sDebug = ob_get_clean();
|
||||
if(Settings::DEBUG && $sDebug!='') $oMain->addUncaughtError($sDebug);
|
||||
|
||||
echo $sResult;
|
||||
|
||||
?>
|
||||
4
script/jquery.js
vendored
4
script/jquery.js
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user