<?php
/**
- * poche, a read it later open source system
+ * wallabag, self hostable application allowing you to not miss any content anymore
*
- * @category poche
- * @author Nicolas LÅ“uillet <support@inthepoche.com>
+ * @category wallabag
+ * @author Nicolas LÅ“uillet <nicolas@loeuillet.org>
* @copyright 2013
* @license http://www.wtfpl.net/ see COPYING file
*/
$https = (!empty($_SERVER['HTTPS'])
&& (strtolower($_SERVER['HTTPS']) == 'on'))
|| (isset($_SERVER["SERVER_PORT"])
- && $_SERVER["SERVER_PORT"] == '443'); // HTTPS detection.
+ && $_SERVER["SERVER_PORT"] == '443') // HTTPS detection.
+ || (isset($_SERVER["SERVER_PORT"]) //Custom HTTPS port detection
+ && $_SERVER["SERVER_PORT"] == SSL_PORT)
+ || (isset($_SERVER['HTTP_X_FORWARDED_PROTO'])
+ && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https');
+
$serverport = (!isset($_SERVER["SERVER_PORT"])
|| $_SERVER["SERVER_PORT"] == '80'
|| ($https && $_SERVER["SERVER_PORT"] == '443')
+ || ($https && $_SERVER["SERVER_PORT"]==SSL_PORT) //Custom HTTPS port detection
? '' : ':' . $_SERVER["SERVER_PORT"]);
$scriptname = str_replace('/index.php', '/', $_SERVER["SCRIPT_NAME"]);
- if (!isset($_SERVER["SERVER_NAME"])) {
+ if (!isset($_SERVER["HTTP_HOST"])) {
return $scriptname;
}
return 'http' . ($https ? 's' : '') . '://'
- . $_SERVER["SERVER_NAME"] . $serverport . $scriptname;
+ . $_SERVER["HTTP_HOST"] . $serverport . $scriptname;
}
public static function redirect($url = '')
public static function getTplFile($view)
{
- $tpl_file = 'home.twig';
- switch ($view)
- {
- case 'install':
- $tpl_file = 'install.twig';
- break;
- case 'import';
- $tpl_file = 'import.twig';
- break;
- case 'export':
- $tpl_file = 'export.twig';
- break;
- case 'config':
- $tpl_file = 'config.twig';
- break;
- case 'view':
- $tpl_file = 'view.twig';
- break;
- default:
- break;
+ $views = array(
+ 'install', 'import', 'export', 'config', 'tags',
+ 'edit-tags', 'view', 'login', 'error'
+ );
+
+ if (in_array($view, $views)) {
+ return $view . '.twig';
}
- return $tpl_file;
+
+ return 'home.twig';
}
public static function getFile($url)
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
- curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
+ if (!ini_get('open_basedir') && !ini_get('safe_mode')) {
+ curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
+ }
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
public static function logm($message)
{
- if (DEBUG_POCHE) {
+ if (DEBUG_POCHE && php_sapi_name() != 'cli') {
$t = strval(date('Y/m/d_H:i:s')) . ' - ' . $_SERVER["REMOTE_ADDR"] . ' - ' . strval($message) . "\n";
file_put_contents(CACHE . '/log.txt', $t, FILE_APPEND);
error_log('DEBUG POCHE : ' . $message);
public static function getDomain($url)
{
- $pieces = parse_url($url);
- $domain = isset($pieces['host']) ? $pieces['host'] : '';
- if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
- return $regs['domain'];
- }
-
- return FALSE;
+ return parse_url($url, PHP_URL_HOST);
}
public static function getReadingTime($text) {
return $minutes;
}
+ public static function getDocLanguage($userlanguage) {
+ $lang = explode('.', $userlanguage);
+ return str_replace('_', '-', $lang[0]);
+ }
- public static function createMyConfig()
+ public static function status($status_code)
{
- $myconfig_file = './inc/poche/myconfig.inc.php';
+ if (strpos(php_sapi_name(), 'apache') !== false) {
- if (!is_writable('./inc/poche/')) {
- self::logm('you don\'t have write access to create ./inc/poche/myconfig.inc.php');
- die('You don\'t have write access to create ./inc/poche/myconfig.inc.php.');
+ header('HTTP/1.0 '.$status_code);
}
+ else {
- if (!file_exists($myconfig_file))
- {
- $fp = fopen($myconfig_file, 'w');
- fwrite($fp, '<?php'."\r\n");
- fwrite($fp, "define ('POCHE_VERSION', '1.0-beta4');" . "\r\n");
- fwrite($fp, "define ('SALT', '" . md5(time() . $_SERVER['SCRIPT_FILENAME'] . rand()) . "');" . "\r\n");
- fwrite($fp, "define ('LANG', 'en_EN.utf8');" . "\r\n");
- fclose($fp);
+ header('Status: '.$status_code);
}
}
-}
\ No newline at end of file
+
+ public static function download_db() {
+ header('Content-Disposition: attachment; filename="poche.sqlite.gz"');
+ self::status(200);
+
+ header('Content-Transfer-Encoding: binary');
+ header('Content-Type: application/octet-stream');
+ echo gzencode(file_get_contents(STORAGE_SQLITE));
+
+ exit;
+ }
+
+ public static function getPageContent(Url $url)
+ {
+ // Saving and clearing context
+ $REAL = array();
+ foreach( $GLOBALS as $key => $value ) {
+ if( $key != 'GLOBALS' && $key != '_SESSION' && $key != 'HTTP_SESSION_VARS' ) {
+ $GLOBALS[$key] = array();
+ $REAL[$key] = $value;
+ }
+ }
+ // Saving and clearing session
+ if ( isset($_SESSION) ) {
+ $REAL_SESSION = array();
+ foreach( $_SESSION as $key => $value ) {
+ $REAL_SESSION[$key] = $value;
+ unset($_SESSION[$key]);
+ }
+ }
+
+ // Running code in different context
+ $scope = function() {
+ extract( func_get_arg(1) );
+ $_GET = $_REQUEST = array(
+ "url" => $url->getUrl(),
+ "max" => 5,
+ "links" => "preserve",
+ "exc" => "",
+ "format" => "json",
+ "submit" => "Create Feed"
+ );
+ ob_start();
+ require func_get_arg(0);
+ $json = ob_get_contents();
+ ob_end_clean();
+ return $json;
+ };
+ $json = $scope( "inc/3rdparty/makefulltextfeed.php", array("url" => $url) );
+
+ // Clearing and restoring context
+ foreach( $GLOBALS as $key => $value ) {
+ if( $key != "GLOBALS" && $key != "_SESSION" ) {
+ unset($GLOBALS[$key]);
+ }
+ }
+ foreach( $REAL as $key => $value ) {
+ $GLOBALS[$key] = $value;
+ }
+ // Clearing and restoring session
+ if ( isset($REAL_SESSION) ) {
+ foreach( $_SESSION as $key => $value ) {
+ unset($_SESSION[$key]);
+ }
+ foreach( $REAL_SESSION as $key => $value ) {
+ $_SESSION[$key] = $value;
+ }
+ }
+
+ return json_decode($json, true);
+ }
+}