/** * Sendet den Content zum Client, * fügt ggf. HTTP1.1 cache headers hinzu * * @param $REX_ARTICLE rex_article Den zu sendenen Artikel * @param $content string Inhalt des Artikels * @param $environment string Die Umgebung aus der der Inhalt gesendet wird * (frontend/backend) */ function rex_send_content($REX_ARTICLE, $content, $environment) { global $REX; // ----- EXTENSION POINT $content = rex_register_extension_point('OUTPUT_FILTER', $content); // ----- EXTENSION POINT - keine Manipulation der Ausgaben ab hier (read only) rex_register_extension_point('OUTPUT_FILTER_CACHE', $content, '', true); // ----- Last-Modified if ($REX['USE_LAST_MODIFIED'] === 'true' || $REX['USE_LAST_MODIFIED'] == $environment) { rex_send_last_modified($REX_ARTICLE); } // ----- ETAG if ($REX['USE_ETAG'] === 'true' || $REX['USE_ETAG'] == $environment) { rex_send_etag($REX_ARTICLE, $content); } // ----- GZIP if ($REX['USE_GZIP'] === 'true' || $REX['USE_GZIP'] == $environment) { $content = rex_send_gzip($content); } // Evtl offene Db Verbindungen schließen rex_sql::disconnect(null); echo $content; }
/** * Sendet den Content zum Client, * fügt ggf. HTTP1.1 cache headers hinzu * * @param $content string Inhalt des Artikels * @param $lastModified integer Last-Modified Timestamp * @param $cacheKey string Cachekey zur identifizierung des Caches * @param $environment string Die Umgebung aus der der Inhalt gesendet wird * (frontend/backend) */ function rex_send_content($content, $lastModified, $cacheKey, $environment) { global $REX; // ----- Last-Modified if ($REX['USE_LAST_MODIFIED'] === 'true' || $REX['USE_LAST_MODIFIED'] == $environment) { rex_send_last_modified($lastModified); } // ----- ETAG if ($REX['USE_ETAG'] === 'true' || $REX['USE_ETAG'] == $environment) { rex_send_etag($cacheKey); } // ----- GZIP if ($REX['USE_GZIP'] === 'true' || $REX['USE_GZIP'] == $environment) { $content = rex_send_gzip($content); } // ----- MD5 Checksum if ($REX['USE_MD5'] === 'true' || $REX['USE_MD5'] == $environment) { rex_send_checksum(md5($content)); } // Evtl offene Db Verbindungen schließen rex_sql::disconnect(null); echo $content; }
/** * Sendet den Content zum Client, * fügt ggf. HTTP1.1 cache headers hinzu * * @param $content string Inhalt des Artikels * @param $lastModified integer Last-Modified Timestamp * @param $cacheKey string Cachekey zur identifizierung des Caches * @param $environment string Die Umgebung aus der der Inhalt gesendet wird * (frontend/backend) * @param $sendcharset boolean TRUE, wenn der Charset mitgeschickt werden soll, sonst FALSE */ function rex_send_content($content, $lastModified, $etag, $environment, $sendcharset = false) { global $REX; if ($sendcharset) { global $I18N; // Im Frontend gibts kein I18N if (!is_object($I18N)) { $I18N = rex_create_lang($REX['LANG']); } header('Content-Type: text/html; charset=' . $I18N->msg('htmlcharset')); } // ----- Last-Modified if ($REX['USE_LAST_MODIFIED'] === 'true' || $REX['USE_LAST_MODIFIED'] == $environment) { rex_send_last_modified($lastModified); } // ----- ETAG if ($REX['USE_ETAG'] === 'true' || $REX['USE_ETAG'] == $environment) { rex_send_etag($etag); } // ----- GZIP if ($REX['USE_GZIP'] === 'true' || $REX['USE_GZIP'] == $environment) { $content = rex_send_gzip($content); } // ----- MD5 Checksum // dynamische teile sollen die md5 summe nicht beeinflussen if ($REX['USE_MD5'] === 'true' || $REX['USE_MD5'] == $environment) { rex_send_checksum(md5(preg_replace('@<!--DYN-->.*<!--/DYN-->@', '', $content))); } // Evtl offene Db Verbindungen schließen rex_sql::disconnect(null); // content length schicken, damit der browser einen ladebalken anzeigen kann if (!ini_get('zlib.output_compression')) { header('Content-Length: ' . strlen($content)); } echo $content; }
/** * Schließt die Verbindung zum DB Server */ function disconnect($DBID = 1) { global $REX; // Alle Connections schließen if ($DBID === null) { foreach ($REX['DB'] as $DBID => $DBSettings) { rex_sql::disconnect($DBID); } return; } if (!$REX['DB'][$DBID]['PERSISTENT']) { $db = rex_sql::getInstance($DBID, false); if (rex_sql::isValid($db) && is_resource($db->identifier)) { mysql_close($db->identifier); } } }
/** * Sendet den Content zum Client, * fügt ggf. HTTP1.1 cache headers hinzu * * @param $content string Inhalt des Artikels * @param $lastModified integer Last-Modified Timestamp * @param $cacheKey string Cachekey zur identifizierung des Caches * @param $environment string Die Umgebung aus der der Inhalt gesendet wird * (frontend/backend) */ function rex_send_content($content, $lastModified, $etag, $environment, $sendcharset = FALSE) { global $REX; // Cachen erlauben, nach revalidierung // see http://xhtmlforum.de/35221-php-session-etag-header.html#post257967 session_cache_limiter('none'); header('Cache-Control: must-revalidate, proxy-revalidate, private'); if ($sendcharset) { global $I18N; header('Content-Type: text/html; charset=' . $I18N->msg('htmlcharset')); } // ----- Last-Modified if ($REX['USE_LAST_MODIFIED'] === 'true' || $REX['USE_LAST_MODIFIED'] == $environment) { rex_send_last_modified($lastModified); } // ----- ETAG if ($REX['USE_ETAG'] === 'true' || $REX['USE_ETAG'] == $environment) { rex_send_etag($etag); } // ----- GZIP if ($REX['USE_GZIP'] === 'true' || $REX['USE_GZIP'] == $environment) { $content = rex_send_gzip($content); } // ----- MD5 Checksum // dynamische teile sollen die md5 summe nicht beeinflussen if ($REX['USE_MD5'] === 'true' || $REX['USE_MD5'] == $environment) { rex_send_checksum(md5(preg_replace('@<!--DYN-->.*<!--/DYN-->@', '', $content))); } // Evtl offene Db Verbindungen schließen rex_sql::disconnect(null); // content length schicken, damit der browser einen ladebalken anzeigen kann header('Content-Length: ' . strlen($content)); echo $content; }