mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2025-07-10 10:28:50 +00:00
jappixmini: include jappix source
This commit is contained in:
parent
61eb1f0d18
commit
302b2820d1
231 changed files with 96082 additions and 2 deletions
340
jappixmini/jappix/php/get.php
Normal file
340
jappixmini/jappix/php/get.php
Normal file
|
@ -0,0 +1,340 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
|
||||
Jappix - An open social platform
|
||||
This is the file get script
|
||||
|
||||
-------------------------------------------------
|
||||
|
||||
License: AGPL
|
||||
Author: Vanaryon
|
||||
Last revision: 03/12/11
|
||||
|
||||
*/
|
||||
|
||||
// PHP base
|
||||
define('JAPPIX_BASE', '..');
|
||||
|
||||
// We get the needed files
|
||||
require_once('./functions.php');
|
||||
require_once('./functions-get.php');
|
||||
require_once('./read-main.php');
|
||||
require_once('./read-hosts.php');
|
||||
|
||||
// Hide PHP errors
|
||||
hideErrors();
|
||||
|
||||
// Get some parameters
|
||||
$is_developer = isDeveloper();
|
||||
$has_compression = hasCompression();
|
||||
|
||||
if($is_developer) {
|
||||
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
}
|
||||
|
||||
// Else, we put a far away cache date (1 year)
|
||||
else {
|
||||
$expires = 31536000;
|
||||
header('Pragma: public');
|
||||
header('Cache-Control: maxage='.$expires);
|
||||
header('Expires: '.gmdate('D, d M Y H:i:s', (time() + $expires)).' GMT');
|
||||
}
|
||||
|
||||
// Initialize the vars
|
||||
$type = '';
|
||||
$file = '';
|
||||
|
||||
// Read the type var
|
||||
if(isset($_GET['t']) && !empty($_GET['t']) && preg_match('/^(css|js|img|snd|store)$/', $_GET['t']))
|
||||
$type = $_GET['t'];
|
||||
|
||||
// Read the files var
|
||||
if(isset($_GET['f']) && !empty($_GET['f']) && isSafe($_GET['f']))
|
||||
$file = $_GET['f'];
|
||||
|
||||
// Read the group var (only for text files)
|
||||
if(isset($_GET['g']) && !empty($_GET['g']) && preg_match('/^(\S+)\.xml$/', $_GET['g']) && preg_match('/^(css|js)$/', $type) && isSafe($_GET['g']) && file_exists('../xml/'.$_GET['g'])) {
|
||||
$xml_data = file_get_contents('../xml/'.$_GET['g']);
|
||||
|
||||
// Any data?
|
||||
if($xml_data) {
|
||||
$xml_read = new SimpleXMLElement($xml_data);
|
||||
$xml_parse = $xml_read->$type;
|
||||
|
||||
// Files were added to the list before (with file var)?
|
||||
if($file)
|
||||
$file .= '~'.$xml_parse;
|
||||
else
|
||||
$file = $xml_parse;
|
||||
}
|
||||
}
|
||||
|
||||
// We check if the data was submitted
|
||||
if($file && $type) {
|
||||
// We define some stuffs
|
||||
$dir = '../'.$type.'/';
|
||||
$path = $dir.$file;
|
||||
|
||||
// Define the real type if this is a "store" file
|
||||
if($type == 'store') {
|
||||
// Extract the file extension
|
||||
switch(getFileExt($file)) {
|
||||
// CSS file
|
||||
case 'css':
|
||||
$type = 'css';
|
||||
|
||||
break;
|
||||
|
||||
// JS file
|
||||
case 'js':
|
||||
$type = 'js';
|
||||
|
||||
break;
|
||||
|
||||
// Audio file
|
||||
case 'ogg':
|
||||
case 'oga':
|
||||
$type = 'snd';
|
||||
|
||||
break;
|
||||
|
||||
// Image file
|
||||
case 'png':
|
||||
case 'jpg':
|
||||
case 'jpeg':
|
||||
case 'gif':
|
||||
case 'bmp':
|
||||
$type = 'img';
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// JS and CSS special stuffs
|
||||
if(($type == 'css') || ($type == 'js')) {
|
||||
// Compression var
|
||||
if($has_compression)
|
||||
$cache_encoding = 'deflate';
|
||||
else
|
||||
$cache_encoding = 'plain';
|
||||
|
||||
// Get the vars
|
||||
$version = getVersion();
|
||||
$hash = genHash($version);
|
||||
$cache_hash = md5($path.$hash.staticLocation()).'_'.$cache_encoding;
|
||||
|
||||
// Check if the browser supports DEFLATE
|
||||
$deflate_support = false;
|
||||
|
||||
if(isset($_SERVER['HTTP_ACCEPT_ENCODING']) && substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'deflate') && hasCompression() && !$is_developer)
|
||||
$deflate_support = true;
|
||||
|
||||
// Internationalization
|
||||
if($type == 'js') {
|
||||
if(isset($_GET['l']) && !empty($_GET['l']) && !preg_match('/\.\.\//', $_GET['l']) && is_dir('../lang/'.$_GET['l']))
|
||||
$locale = $_GET['l'];
|
||||
else
|
||||
$locale = 'en';
|
||||
}
|
||||
|
||||
else
|
||||
$locale = '';
|
||||
|
||||
// Define the cache lang name
|
||||
if($locale)
|
||||
$cache_lang = $cache_hash.'_'.$locale;
|
||||
else
|
||||
$cache_lang = $cache_hash;
|
||||
}
|
||||
|
||||
// Explode the file string
|
||||
if(strpos($file, '~') != false)
|
||||
$array = explode('~', $file);
|
||||
else
|
||||
$array = array($file);
|
||||
|
||||
// Define the reading vars
|
||||
$continue = true;
|
||||
$loop_files = true;
|
||||
|
||||
// Check the cache exists for text files (avoid the heavy file_exists loop!)
|
||||
if(!$is_developer && (($type == 'css') || ($type == 'js')) && hasCache($cache_lang))
|
||||
$loop_files = false;
|
||||
|
||||
// Check if the all the file(s) exist(s)
|
||||
if($loop_files) {
|
||||
foreach($array as $current) {
|
||||
// Stop the loop if a file is missing
|
||||
if(!file_exists($dir.$current)) {
|
||||
$continue = false;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We can read the file(s)
|
||||
if($continue) {
|
||||
// We get the file MIME type
|
||||
$mime = strtolower(preg_replace('/(^)(.+)(\.)(.+)($)/i', '$4', $file));
|
||||
|
||||
// We set up a known MIME type (and some other headers)
|
||||
if(($type == 'css') || ($type == 'js')) {
|
||||
// DEFLATE header
|
||||
if($deflate_support)
|
||||
header('Content-Encoding: deflate');
|
||||
|
||||
// MIME header
|
||||
if($type == 'css')
|
||||
header('Content-Type: text/css; charset=utf-8');
|
||||
else if($type == 'js')
|
||||
header('Content-Type: application/javascript; charset=utf-8');
|
||||
}
|
||||
|
||||
else if($mime == 'png')
|
||||
header('Content-Type: image/png');
|
||||
else if($mime == 'gif')
|
||||
header('Content-Type: image/gif');
|
||||
else if(($mime == 'jpg') || ($mime == 'jpeg'))
|
||||
header('Content-Type: image/jpeg');
|
||||
else if($mime == 'bmp')
|
||||
header('Content-Type: image/bmp');
|
||||
else if(($mime == 'oga') || ($mime == 'ogg'))
|
||||
header('Content-Type: audio/ogg');
|
||||
|
||||
// Catch the file MIME type
|
||||
else
|
||||
header('Content-Type: '.getFileMIME($path));
|
||||
|
||||
// Read the text file(s) (CSS & JS)
|
||||
if(($type == 'css') || ($type == 'js')) {
|
||||
// If there's a cache file, read it
|
||||
if(hasCache($cache_lang) && !$is_developer) {
|
||||
$cache_read = readCache($cache_lang);
|
||||
|
||||
if($deflate_support || !$has_compression)
|
||||
echo $cache_read;
|
||||
else
|
||||
echo gzinflate($cache_read);
|
||||
}
|
||||
|
||||
// Else, we generate the cache
|
||||
else {
|
||||
// First try to read the cache reference
|
||||
if(hasCache($cache_hash) && !$is_developer) {
|
||||
// Read the reference
|
||||
$cache_reference = readCache($cache_hash);
|
||||
|
||||
// Filter the cache reference
|
||||
if($has_compression)
|
||||
$output = gzinflate($cache_reference);
|
||||
else
|
||||
$output = $cache_reference;
|
||||
}
|
||||
|
||||
// No cache reference, we should generate it
|
||||
else {
|
||||
// Initialize the loop
|
||||
$looped = '';
|
||||
|
||||
// Add the content of the current file
|
||||
foreach($array as $current)
|
||||
$looped .= rmBOM(file_get_contents($dir.$current))."\n";
|
||||
|
||||
// Filter the CSS
|
||||
if($type == 'css') {
|
||||
// Apply the CSS logos
|
||||
$looped = setLogos($looped, $array);
|
||||
|
||||
// Apply the CSS background
|
||||
$looped = setBackground($looped);
|
||||
|
||||
// Set the Get API paths
|
||||
$looped = setPath($looped, $hash, HOST_STATIC, $type, '');
|
||||
}
|
||||
|
||||
// Optimize the code rendering
|
||||
if($type == 'css') {
|
||||
// Can minify the CSS
|
||||
if($has_compression && !$is_developer)
|
||||
$output = compressCSS($looped);
|
||||
else
|
||||
$output = $looped;
|
||||
}
|
||||
|
||||
else {
|
||||
// Can minify the JS (sloooooow!)
|
||||
if($has_compression && !$is_developer) {
|
||||
require_once('./jsmin.php');
|
||||
$output = JSMin::minify($looped);
|
||||
}
|
||||
|
||||
else
|
||||
$output = $looped;
|
||||
}
|
||||
|
||||
// Generate the reference cache
|
||||
if($has_compression)
|
||||
$final = gzdeflate($output, 9);
|
||||
else
|
||||
$final = $output;
|
||||
|
||||
// Write it!
|
||||
genCache($final, $is_developer, $cache_hash);
|
||||
}
|
||||
|
||||
// Filter the JS
|
||||
if($type == 'js') {
|
||||
// Set the JS locales
|
||||
$output = setLocales($output, $locale);
|
||||
|
||||
// Set the JS configuration
|
||||
$output = setConfiguration($output, $locale, $version, uploadMaxSize());
|
||||
|
||||
// Set the Get API paths
|
||||
$output = setPath($output, $hash, HOST_STATIC, $type, $locale);
|
||||
|
||||
// Translate the JS script
|
||||
require_once('./gettext.php');
|
||||
includeTranslation($locale, 'main');
|
||||
$output = setTranslation($output);
|
||||
|
||||
// Generate the cache
|
||||
if($has_compression)
|
||||
$final = gzdeflate($output, 9);
|
||||
else
|
||||
$final = $output;
|
||||
|
||||
// Write it!
|
||||
genCache($final, $is_developer, $cache_lang);
|
||||
}
|
||||
|
||||
// Output a well-encoded string
|
||||
if($deflate_support || !$has_compression)
|
||||
echo $final;
|
||||
else
|
||||
echo gzinflate($final);
|
||||
}
|
||||
}
|
||||
|
||||
// Read the binary file (PNG, OGA and others)
|
||||
else
|
||||
readfile($path);
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
// The file was not found
|
||||
header('Status: 404 Not Found', true, 404);
|
||||
exit('HTTP/1.1 404 Not Found');
|
||||
}
|
||||
|
||||
// The request is not correct
|
||||
header('Status: 400 Bad Request', true, 400);
|
||||
exit('HTTP/1.1 400 Bad Request');
|
||||
|
||||
?>
|
Loading…
Add table
Add a link
Reference in a new issue