<?php /* Jappix - An open social platform These are the PHP functions for Jappix Get API ------------------------------------------------- License: AGPL Authors: Vanaryon, Mathieui, olivierm Last revision: 26/08/11 */ // The function to get the cached content function readCache($hash) { return file_get_contents(JAPPIX_BASE.'/store/cache/'.$hash.'.cache'); } // The function to generate a cached file function genCache($string, $mode, $cache) { if(!$mode) { $cache_dir = JAPPIX_BASE.'/store/cache'; $file_put = $cache_dir.'/'.$cache.'.cache'; // Cache not yet wrote if(is_dir($cache_dir) && !file_exists($file_put)) file_put_contents($file_put, $string); } } // The function to remove the BOM from a string function rmBOM($string) { if(substr($string, 0, 3) == pack('CCC', 0xef, 0xbb, 0xbf)) $string = substr($string, 3); return $string; } // The function to compress the CSS function compressCSS($buffer) { // We remove the comments $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer); // We remove the useless spaces $buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer); // We remove the last useless spaces $buffer = str_replace(array(' { ',' {','{ '), '{', $buffer); $buffer = str_replace(array(' } ',' }','} '), '}', $buffer); $buffer = str_replace(array(' : ',' :',': '), ':', $buffer); return $buffer; } // The function to replace classical path to get.php paths function setPath($string, $hash, $host, $type, $locale) { // Initialize the static server path $static = '.'; // Replace the JS strings if($type == 'js') { // Static host defined if($host && ($host != '.')) $static = $host; // Links to JS (must have a lang parameter) $string = preg_replace('/((\")|(\'))(\.\/)(js)(\/)(\S+)(js)((\")|(\'))/', '$1'.$static.'/php/get.php?h='.$hash.'&l='.$locale.'&t=$5&f=$7$8$9', $string); // Other "normal" links (no lang parameter) $string = preg_replace('/((\")|(\'))(\.\/)(css|img|store|snd)(\/)(\S+)(css|png|jpg|jpeg|gif|bmp|ogg|oga)((\")|(\'))/', '$1'.$static.'/php/get.php?h='.$hash.'&t=$5&f=$7$8$9', $string); } // Replace the CSS strings else if($type == 'css') { // Static host defined if($host && ($host != '.')) $static = $host.'/php'; $string = preg_replace('/(\(\.\.\/)(css|js|img|store|snd)(\/)(\S+)(css|js|png|jpg|jpeg|gif|bmp|ogg|oga)(\))/', '('.$static.'/get.php?h='.$hash.'&t=$2&f=$4$5)', $string); } return $string; } // The function to set the good translation to a JS file function setTranslation($string) { return preg_replace('/_e\("([^\"\"]+)"\)/e', "'_e(\"'.addslashes(T_gettext(stripslashes('$1'))).'\")'", $string); } // The function to set the good locales function setLocales($string, $locale) { // Generate the two JS array list $available_list = availableLocales($locale); $available_id = ''; $available_names = ''; // Add the values to the arrays foreach($available_list as $current_id => $current_name) { $available_id .= '\''.$current_id.'\', '; $available_names .= '\''.addslashes($current_name).'\', '; } // Remove the last comma $regex = '/(.+), $/'; $available_id = preg_replace($regex, '$1', $available_id); $available_names = preg_replace($regex, '$1', $available_names); // Locales array $array = array( 'LOCALES_AVAILABLE_ID' => $available_id, 'LOCALES_AVAILABLE_NAMES' => $available_names ); // Apply it! foreach($array as $array_key => $array_value) $string = preg_replace('/(var '.$array_key.'(( )?=( )?)new Array\()(\);)/', '$1'.$array_value.'$5', $string); return $string; } // The function to set the good configuration to a JS file function setConfiguration($string, $locale, $version, $max_upload) { // Special BOSH URL if BOSH proxy enabled if(BOSHProxy()) $bosh_special = staticLocation().'php/bosh.php'; else $bosh_special = HOST_BOSH; // Configuration array $array = array( // xml:lang 'XML_LANG' => $locale, // Jappix parameters 'JAPPIX_STATIC' => staticLocation(), 'JAPPIX_VERSION' => $version, 'JAPPIX_MAX_FILE_SIZE' => $max_upload, 'JAPPIX_MAX_UPLOAD' => formatBytes($max_upload), // Main configuration 'SERVICE_NAME' => SERVICE_NAME, 'SERVICE_DESC' => SERVICE_DESC, 'JAPPIX_RESOURCE' => JAPPIX_RESOURCE, 'LOCK_HOST' => LOCK_HOST, 'ANONYMOUS' => ANONYMOUS, 'REGISTRATION' => REGISTRATION, 'BOSH_PROXY' => BOSH_PROXY, 'MANAGER_LINK' => MANAGER_LINK, 'GROUPCHATS_JOIN' => GROUPCHATS_JOIN, 'ENCRYPTION' => ENCRYPTION, 'HTTPS_STORAGE' => HTTPS_STORAGE, 'HTTPS_FORCE' => HTTPS_FORCE, 'COMPRESSION' => COMPRESSION, 'MULTI_FILES' => MULTI_FILES, 'DEVELOPER' => DEVELOPER, // Hosts configuration 'HOST_MAIN' => HOST_MAIN, 'HOST_MUC' => HOST_MUC, 'HOST_PUBSUB' => HOST_PUBSUB, 'HOST_VJUD' => HOST_VJUD, 'HOST_ANONYMOUS' => HOST_ANONYMOUS, 'HOST_BOSH' => $bosh_special, 'HOST_BOSH_MAIN' => HOST_BOSH_MAIN, 'HOST_BOSH_MINI' => HOST_BOSH_MINI, 'HOST_STATIC' => HOST_STATIC, 'HOST_UPLOAD' => HOST_UPLOAD ); // Apply it! foreach($array as $array_key => $array_value) $string = preg_replace('/var '.$array_key.'(( )?=( )?)null;/', 'var '.$array_key.'$1\''.addslashes($array_value).'\';', $string); return $string; } // The function to set the logos function setLogos($string, $files) { // Jappix Desktop home logo? if(in_array('home.css', $files) && file_exists(JAPPIX_BASE.'/store/logos/desktop_home.png')) { $string .= '#home .left .logo { background-image: url(../store/logos/desktop_home.png) !important; background-position: center center !important; }'; } // Jappix Desktop app logo? if(in_array('tools.css', $files) && file_exists(JAPPIX_BASE.'/store/logos/desktop_app.png')) { $string .= '#top-content .tools-logo { background-image: url(../store/logos/desktop_app.png) !important; background-position: center center !important; }'; } // Jappix Mobile logo? if(in_array('mobile.css', $files) && file_exists(JAPPIX_BASE.'/store/logos/mobile.png')) { $string .= '.header div { background-image: url(../store/logos/mobile.png) !important; background-position: center center !important; }'; } // Jappix Mini logo? if(in_array('mini.css', $files) && file_exists(JAPPIX_BASE.'/store/logos/mini.png')) { $string .= '#jappix_mini div.jm_actions a.jm_logo { background-image: url(../store/logos/mini.png) !important; background-position: center center !important; }'; } return $string; } // The function to set the background function setBackground($string) { // Get the default values $array = defaultBackground(); // Read the background configuration $xml = readXML('conf', 'background'); if($xml) { $read = new SimpleXMLElement($xml); foreach($read->children() as $child) { // Any value? if($child) $array[$child->getName()] = $child; } } $css = ''; // Generate the CSS code switch($array['type']) { // Image case 'image': $css .= "\n".' background-image: url(../store/backgrounds/'.urlencode($array['image_file']).'); background-repeat: '.$array['image_repeat'].'; background-position: '.$array['image_horizontal'].' '.$array['image_vertical'].'; background-color: '.$array['image_color'].';' ; // Add CSS code to adapt the image? if($array['image_adapt'] == 'on') $css .= ' background-attachment: fixed; background-size: cover; -moz-background-size: cover; -webkit-background-size: cover;'; $css .= "\n"; break; // Color case 'color': $css .= "\n".' background-color: '.$array['color_color'].';'."\n"; break; // Default: use the filtering regex default: $css .= '$3'; break; } // Apply the replacement! return preg_replace('/(\.body-images( )?\{)([^\{\}]+)(\})/i', '$1'.$css.'$4', $string); } ?>