/*
* Plugin Name: APCu Object Cache
* Description: APCu backend for the WP Object Cache.
* Based on Plugin named APCu Object Cache Backend
* Plugin URI: https://wordpress.org/plugins/apcu/
* Author: Pierre Schmitz
* Author URI: https://pierre-schmitz.com/
* Plugin URI: https://wordpress.org/plugins/apcu/
*
*
* @Authors James Dugger, Jonathan Bardo
* @copyright 2017 GoDaddy Inc. 14455 N. Hayden Road Scottsdale, Arizona
*/
$oc_logged_in = false;
foreach ( $_COOKIE as $k => $v ) {
if ( preg_match( '/^comment_author|wordpress_logged_in_[a-f0-9]+|woocommerce_items_in_cart|PHPSESSID_|edd_wp_session|edd_items_in_cartcc_cart_key|ccm_token/', $k ) ) {
$oc_logged_in = true;
break;
}
}
$oc_blocked_page = ( defined( 'WP_ADMIN' ) || defined( 'DOING_AJAX' ) || defined( 'XMLRPC_REQUEST' ) || 'wp-login.php' === basename( $_SERVER['SCRIPT_FILENAME'] ) );
function wpaas_is_using_apcu() {
return version_compare( PHP_VERSION, '5.6.0', '>=' ) && function_exists( 'apcu_fetch' );
}
if ( 'cli' !== php_sapi_name() && ! $oc_logged_in && ! $oc_blocked_page && wpaas_is_using_apcu() ) :
/**
* Save the transients to the DB. The explanation is a bit too long
* for code. The tl;dr of it is that we don't have a single 'fast cache'
* source yet (like memcached) and so some long lived items like transients
* are still best cached in the db and then brought back into APC
*
* @param string $transient
* @param mixed $value
* @param int $expire
* @param boolean $site = false
*
* @return bool
*/
function wpaas_save_transient( $transient, $value, $expire, $site = false ) {
global $wp_object_cache, $wpdb;
// The 'special' transient option names
$transient_timeout = ( $site ? '_site' : '' ) . '_transient_timeout_' . $transient;
$transient = ( $site ? '_site' : '' ) . '_transient_' . $transient;
// Cap expiration at 24 hours to avoid littering the DB
if ( $expire == 0 ) {
$expire = 24 * 60 * 60;
}
// Save to object cache
$wp_object_cache->set( $transient, $value, 'options', $expire );
$wp_object_cache->set( $transient_timeout, time() + $expire, 'options', $expire );
// Update alloptions
$alloptions = $wp_object_cache->get( 'alloptions', 'options' );
$alloptions[ $transient ] = $value;
$alloptions[ $transient_timeout ] = time() + $expire;
$wp_object_cache->set( 'alloptions', $alloptions, 'options' );
// Use the normal update option logic
if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) {
$flag = $wpdb->suppress_errors;
$wpdb->suppress_errors( true );
if ( $site && is_multisite() ) {
$wpdb->query(
$wpdb->prepare(
"INSERT INTO `{$wpdb->sitemeta}` ( `option_name`, `option_value`, `autoload` ) VALUES ( %s, UNIX_TIMESTAMP( NOW() ) + %d, 'yes' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );",
$transient_timeout,
$expire
)
);
$wpdb->query(
$wpdb->prepare(
"INSERT INTO `{$wpdb->sitemeta}` ( `option_name`, `option_value`, `autoload` ) VALUES ( %s, %s, 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );",
$transient,
maybe_serialize( $value )
)
);
} else {
$wpdb->query(
$wpdb->prepare(
"INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( %s, UNIX_TIMESTAMP( NOW() ) + %d, 'yes' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );",
$transient_timeout,
$expire
)
);
$wpdb->query(
$wpdb->prepare(
"INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( %s, %s, 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );",
$transient,
maybe_serialize( $value )
)
);
}
$wpdb->suppress_errors( $flag );
}
return true;
}
function wpaas_prune_transients() {
global $wpdb;
if ( ! empty( $wpdb ) && $wpdb instanceof wpdb && function_exists( 'is_main_site' ) && function_exists( 'is_main_network' ) ) {
$flag = $wpdb->suppress_errors;
$wpdb->suppress_errors( true );
// Lifted straight from schema.php
// Deletes all expired transients.
// The multi-table delete syntax is used to delete the transient record from table a,
// and the corresponding transient_timeout record from table b.
$time = time();
$wpdb->query( "DELETE a, b FROM $wpdb->options a, $wpdb->options b WHERE
a.option_name LIKE '\_transient\_%' AND
a.option_name NOT LIKE '\_transient\_timeout\_%' AND
b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )
AND b.option_value < $time" );
if ( is_main_site() && is_main_network() ) {
$wpdb->query( "DELETE a, b FROM $wpdb->options a, $wpdb->options b WHERE
a.option_name LIKE '\_site\_transient\_%' AND
a.option_name NOT LIKE '\_site\_transient\_timeout\_%' AND
b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) )
AND b.option_value < $time" );
}
$wpdb->suppress_errors( $flag );
}
}
/**
* If another cache was flushed or updated, sync across all servers / processes using
* the database as the authority. This uses the database as the authority for timestamps
* as well to avoid drift between servers.
* @return void
*/
function wpaas_init_sync_cache() {
global $wpdb;
if ( empty( $wpdb ) || ! ( $wpdb instanceof wpdb ) ) {
return;
}
$flag = $wpdb->suppress_errors;
$wpdb->suppress_errors( true );
$result = $wpdb->get_results(
"SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name = 'gd_system_last_cache_flush' UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;",
ARRAY_A
);
$wpdb->suppress_errors( $flag );
if ( empty( $result ) ) {
return;
}
$master_flush = false;
foreach ( $result as $row ) {
switch ( $row['option_name'] ) {
case 'current_time' :
$current_time = $row['option_value'];
break;
case 'gd_system_last_cache_flush' :
$master_flush = $row['option_value'];
break;
}
}
$local_flush = wp_cache_get( 'gd_system_last_cache_flush' );
if ( false === $local_flush || $local_flush < $master_flush ) {
wp_cache_flush( true );
wp_cache_set( 'gd_system_last_cache_flush', $current_time );
}
}
/**
* Start default implementation of object cache
*/
if ( ! defined( 'WP_APC_KEY_SALT' ) ) {
define( 'WP_APC_KEY_SALT', '' );
}
function wp_cache_add( $key, $data, $group = '', $expire = 0 ) {
global $wp_object_cache;
if ( 'transient' == $group ) {
wpaas_save_transient( $key, $data, $expire );
return $wp_object_cache->add( "_transient_$key", $data, 'options', $expire );
} elseif ( 'site-transient' == $group ) {
wpaas_save_transient( $key, $data, $expire, true );
return $wp_object_cache->add( "_site_transient_$key", $data, 'site-options', $expire );
} else {
return $wp_object_cache->add( $key, $data, $group, $expire );
}
}
function wp_cache_incr( $key, $n = 1, $group = '' ) {
global $wp_object_cache;
return $wp_object_cache->incr2( $key, $n, $group );
}
function wp_cache_decr( $key, $n = 1, $group = '' ) {
global $wp_object_cache;
return $wp_object_cache->decr( $key, $n, $group );
}
function wp_cache_close() {
return true;
}
function wp_cache_delete( $key, $group = '' ) {
global $wp_object_cache, $wpdb;
if ( 'transient' == $group ) {
if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) {
$flag = $wpdb->suppress_errors;
$wpdb->suppress_errors( true );
$wpdb->query(
$wpdb->prepare(
"DELETE FROM `{$wpdb->prefix}options` WHERE option_name IN ( %s, %s );",
"_transient_{$key}",
"_transient_timeout_{$key}"
)
);
$wpdb->suppress_errors( $flag );
}
$wp_object_cache->delete( "_transient_timeout_$key", 'options' );
// Update alloptions
$alloptions = $wp_object_cache->get( 'alloptions', 'options' );
unset( $alloptions["_transient_$key"] );
unset( $alloptions["_transient_timeout_$key"] );
$wp_object_cache->set( 'alloptions', $alloptions, 'options' );
return $wp_object_cache->delete( "_transient_$key", 'options' );
} elseif ( 'site-transient' == $group ) {
if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) {
$table = $wpdb->options;
if ( is_multisite() ) {
$table = $wpdb->sitemeta;
}
$flag = $wpdb->suppress_errors;
$wpdb->suppress_errors( true );
$wpdb->query(
$wpdb->prepare(
"DELETE FROM `{$table}` WHERE option_name IN ( %s, %s );",
"_transient_{$key}",
"_transient_timeout_{$key}"
)
);
$wpdb->suppress_errors( $flag );
}
$wp_object_cache->delete( "_transient_timeout_$key", 'site-options' );
// Update alloptions
$alloptions = $wp_object_cache->get( 'alloptions', 'options' );
unset( $alloptions["_site_transient_$key"] );
unset( $alloptions["_site_transient_timeout_$key"] );
$wp_object_cache->set( 'alloptions', $alloptions, 'options' );
return $wp_object_cache->delete( "_site_transient_$key", 'site-options' );
}
return $wp_object_cache->delete( $key, $group );
}
function wp_cache_flush( $local_flush = false ) {
global $wp_object_cache, $wpdb;
if ( ! $local_flush ) {
if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) {
$flag = $wpdb->suppress_errors;
$wpdb->suppress_errors( true );
$wpdb->query( "INSERT INTO `{$wpdb->options}` (`option_name`, `option_value`, `autoload`) VALUES ( 'gd_system_last_cache_flush', UNIX_TIMESTAMP( NOW() ), 'no' ) ON DUPLICATE KEY UPDATE `option_name` = VALUES ( `option_name` ), `option_value` = VALUES ( `option_value` ), `autoload` = VALUES ( `autoload` );" );
$wpdb->suppress_errors( $flag );
}
}
return $wp_object_cache->flush();
}
function wp_cache_get( $key, $group = '', $force = false ) {
global $wp_object_cache, $wpdb;
if ( 'transient' == $group ) {
$alloptions = $wp_object_cache->get( 'alloptions', 'options' );
if ( isset( $alloptions["_transient_$key"] ) && isset( $alloptions["_transient_timeout_$key"] ) && $alloptions["_transient_timeout_$key"] > time() ) {
return maybe_unserialize( $alloptions["_transient_$key"] );
}
$transient = $wp_object_cache->get( "_transient_$key", 'options', $force );
$timeout = $wp_object_cache->get( "_transient_timeout_$key", 'options', $force );
if ( false !== $transient && ! empty( $timeout ) && $timeout > time() ) {
return maybe_unserialize( $transient );
}
if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) {
$flag = $wpdb->suppress_errors;
$wpdb->suppress_errors( true );
$result = $wpdb->get_results(
$wpdb->prepare(
"SELECT option_name, option_value FROM `{$wpdb->options}` WHERE option_name IN ( %s, %s ) UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;",
"_transient_{$key}",
"_transient_timeout_{$key}"
),
ARRAY_A
);
$wpdb->suppress_errors( $flag );
if ( ! empty( $result ) ) {
$transient = false;
$timeout = false;
$current_time = time();
foreach ( $result as $row ) {
switch ( $row['option_name'] ) {
case "_transient_$key" :
$transient = $row['option_value'];
break;
case "_transient_timeout_$key" :
$timeout = $row['option_value'];
break;
case 'current_time' :
$current_time = $row['option_value'];
break;
}
}
if ( false !== $transient && ! empty( $timeout ) && $timeout > $current_time ) {
return maybe_unserialize( $transient );
}
}
}
return false;
} elseif ( 'site-transient' == $group ) {
$transient = $wp_object_cache->get( "_site_transient_$key", 'options', $force );
$timeout = $wp_object_cache->get( "_site_transient_timeout_$key", 'options', $force );
if ( false !== $transient && ! empty( $timeout ) && $timeout > time() ) {
return maybe_unserialize( $transient );
}
if ( ! empty( $wpdb ) && $wpdb instanceof wpdb ) {
$table = $wpdb->options;
if ( is_multisite() ) {
$table = $wpdb->sitemeta;
}
$flag = $wpdb->suppress_errors;
$wpdb->suppress_errors( true );
$result = $wpdb->get_results(
$wpdb->prepare(
"SELECT option_name, option_value FROM `{$table}` WHERE option_name IN ( %s, %s ) UNION SELECT 'current_time', UNIX_TIMESTAMP( NOW() ) AS option_value;",
"_site_transient_{$key}",
"_site_transient_timeout_{$key}"
),
ARRAY_A
);
$wpdb->suppress_errors( $flag );
if ( ! empty( $result ) ) {
$transient = false;
$timeout = false;
$current_time = time();
foreach ( $result as $row ) {
switch ( $row['option_name'] ) {
case "_site_transient_$key" :
$transient = $row['option_value'];
break;
case "_site_transient_timeout_$key" :
$timeout = $row['option_value'];
break;
case 'current_time' :
$current_time = $row['option_value'];
break;
}
}
if ( false !== $transient && ! empty( $timeout ) && $timeout > $current_time ) {
return maybe_unserialize( $transient );
}
}
}
return false;
} else {
return $wp_object_cache->get( $key, $group, $force );
}
}
function wp_cache_init() {
global $wp_object_cache;
if ( mt_rand( 1, 100 ) == 42 ) {
wpaas_prune_transients();
}
add_action( 'muplugins_loaded', 'wpaas_init_sync_cache' );
$wp_object_cache = new APCu_Object_Cache();
}
function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) {
global $wp_object_cache;
return $wp_object_cache->replace( $key, $data, $group, $expire );
}
function wp_cache_set( $key, $data, $group = '', $expire = 0 ) {
global $wp_object_cache;
if ( defined( 'WP_INSTALLING' ) == false ) {
if ( 'transient' == $group ) {
return wpaas_save_transient( $key, $data, $expire );
} elseif ( 'site-transient' == $group ) {
return wpaas_save_transient( $key, $data, $expire, true );
} else {
return $wp_object_cache->set( $key, $data, $group, $expire );
}
} else {
return $wp_object_cache->delete( $key, $group );
}
}
function wp_cache_switch_to_blog( $blog_id ) {
global $wp_object_cache;
return $wp_object_cache->switch_to_blog( $blog_id );
}
function wp_cache_add_global_groups( $groups ) {
global $wp_object_cache;
$wp_object_cache->add_global_groups( $groups );
}
function wp_cache_add_non_persistent_groups( $groups ) {
global $wp_object_cache;
$wp_object_cache->add_non_persistent_groups( $groups );
}
class GD_APCu_Object_Cache {
private $prefix = '';
private $local_cache = array();
private $global_groups = array();
private $non_persistent_groups = array();
private $multisite = false;
private $blog_prefix = '';
public function __construct() {
global $table_prefix;
$this->multisite = is_multisite();
$this->blog_prefix = $this->multisite ? get_current_blog_id() . ':' : '';
$this->prefix = DB_HOST . '.' . DB_NAME . '.' . $table_prefix;
}
private function get_group( $group ) {
return empty( $group ) ? 'default' : $group;
}
private function get_key( $group, $key ) {
if ( $this->multisite && ! isset( $this->global_groups[ $group ] ) ) {
return $this->prefix . '.' . $group . '.' . $this->blog_prefix . ':' . $key;
} else {
return $this->prefix . '.' . $group . '.' . $key;
}
}
public function add( $key, $data, $group = 'default', $expire = 0 ) {
$group = $this->get_group( $group );
$key = $this->get_key( $group, $key );
if ( function_exists( 'wp_suspend_cache_addition' ) && wp_suspend_cache_addition() ) {
return false;
}
if ( isset( $this->local_cache[ $group ][ $key ] ) ) {
return false;
}
// FIXME: Somehow apcu_add does not return false if key already exists
if ( ! isset( $this->non_persistent_groups[ $group ] ) && apcu_exists( $key ) ) {
return false;
}
if ( is_object( $data ) ) {
$this->local_cache[ $group ][ $key ] = clone $data;
} else {
$this->local_cache[ $group ][ $key ] = $data;
}
if ( ! isset( $this->non_persistent_groups[ $group ] ) ) {
return apcu_add( $key, $data, (int) $expire );
}
return true;
}
public function add_global_groups( $groups ) {
if ( is_array( $groups ) ) {
foreach ( $groups as $group ) {
$this->global_groups[ $group ] = true;
}
} else {
$this->global_groups[ $groups ] = true;
}
}
public function add_non_persistent_groups( $groups ) {
if ( is_array( $groups ) ) {
foreach ( $groups as $group ) {
$this->non_persistent_groups[ $group ] = true;
}
} else {
$this->non_persistent_groups[ $groups ] = true;
}
}
public function decr( $key, $offset = 1, $group = 'default' ) {
if ( $offset < 0 ) {
return $this->incr( $key, abs( $offset ), $group );
}
$group = $this->get_group( $group );
$key = $this->get_key( $group, $key );
if ( isset( $this->local_cache[ $group ][ $key ] ) && $this->local_cache[ $group ][ $key ] - $offset >= 0 ) {
$this->local_cache[ $group ][ $key ] -= $offset;
} else {
$this->local_cache[ $group ][ $key ] = 0;
}
if ( isset( $this->non_persistent_groups[ $group ] ) ) {
return $this->local_cache[ $group ][ $key ];
} else {
$value = apcu_dec( $key, $offset );
if ( $value < 0 ) {
apcu_store( $key, 0 );
return 0;
}
return $value;
}
}
public function delete( $key, $group = 'default', $force = false ) {
$group = $this->get_group( $group );
$key = $this->get_key( $group, $key );
unset( $this->local_cache[ $group ][ $key ] );
if ( ! isset( $this->non_persistent_groups[ $group ] ) ) {
return apcu_delete( $key );
}
return true;
}
public function flush() {
$this->local_cache = array();
// TODO: only clear our own entries
apcu_clear_cache();
return true;
}
public function get( $key, $group = 'default', $force = false, &$found = null ) {
$group = $this->get_group( $group );
$key = $this->get_key( $group, $key );
if ( ! $force && isset( $this->local_cache[ $group ][ $key ] ) ) {
$found = true;
if ( is_object( $this->local_cache[ $group ][ $key ] ) ) {
return clone $this->local_cache[ $group ][ $key ];
} else {
return $this->local_cache[ $group ][ $key ];
}
} elseif ( isset( $this->non_persistent_groups[ $group ] ) ) {
$found = false;
return false;
} else {
$value = @apcu_fetch( $key, $found );
if ( $found ) {
if ( $force ) {
$this->local_cache[ $group ][ $key ] = $value;
}
return $value;
} else {
return false;
}
}
}
public function incr2( $key, $offset = 1, $group = 'default' ) {
if ( $offset < 0 ) {
return $this->decr( $key, abs( $offset ), $group );
}
$group = $this->get_group( $group );
$key = $this->get_key( $group, $key );
if ( isset( $this->local_cache[ $group ][ $key ] ) && $this->local_cache[ $group ][ $key ] + $offset >= 0 ) {
$this->local_cache[ $group ][ $key ] += $offset;
} else {
$this->local_cache[ $group ][ $key ] = 0;
}
if ( isset( $this->non_persistent_groups[ $group ] ) ) {
return $this->local_cache[ $group ][ $key ];
} else if ( function_exists( 'apcu_inc' ) ) {
$value = apcu_inc( $key, $offset );
if ( $value < 0 ) {
apcu_store( $key, 0 );
return 0;
}
return $value;
}
return false;
}
public function replace( $key, $data, $group = 'default', $expire = 0 ) {
$group = $this->get_group( $group );
$key = $this->get_key( $group, $key );
if ( isset( $this->non_persistent_groups[ $group ] ) ) {
if ( ! isset( $this->local_cache[ $group ][ $key ] ) ) {
return false;
}
} else {
if ( ! isset( $this->local_cache[ $group ][ $key ] ) && ! apcu_exists( $key ) ) {
return false;
}
apcu_store( $key, $data, (int) $expire );
}
if ( is_object( $data ) ) {
$this->local_cache[ $group ][ $key ] = clone $data;
} else {
$this->local_cache[ $group ][ $key ] = $data;
}
return true;
}
public function reset() {
// This function is deprecated as of WordPress 3.5
// Be safe and flush the cache if this function is still used
$this->flush();
}
public function set( $key, $data, $group = 'default', $expire = 0 ) {
$group = $this->get_group( $group );
$key = $this->get_key( $group, $key );
if ( is_object( $data ) ) {
$this->local_cache[ $group ][ $key ] = clone $data;
} else {
$this->local_cache[ $group ][ $key ] = $data;
}
if ( ! isset( $this->non_persistent_groups[ $group ] ) ) {
return apcu_store( $key, $data, (int) $expire );
}
return true;
}
public function stats() {
// Only implemented because the default cache class provides this.
// This method is never called.
echo '';
}
public function switch_to_blog( $blog_id ) {
$this->blog_prefix = $this->multisite ? $blog_id . ':' : '';
}
}
if ( function_exists( 'apcu_inc' ) ) {
class APCu_Object_Cache extends GD_APCu_Object_Cache {
function incr( $key, $offset = 1, $group = 'default' ) {
return parent::incr2( $key, $offset, $group );
}
}
} else {
class APCu_Object_Cache extends GD_APCu_Object_Cache {
// Blank
}
}
endif;
Warning: Cannot modify header information - headers already sent by (output started at /usr/hosting/oldpics.net/html/wp-content/object-cache.php:1) in /usr/hosting/oldpics.net/html/wp-includes/feed-rss2.php on line 8
Сообщение Lee Miller in the bathroom of Adolf Hitler появились сначала на Old Pictures.
]]>“Lee and I found an elderly gentleman who barely spoke English, gave him a box of cigarettes, and said, ‘Show us Munich,’” Sherman recalled in a 1993 interview. “He showed us around Hitler’s house, and I photographed Lee washing in Hitler’s bathroom.”
Miller and Sherman lived in the apartment of Adolf Hitler for several days. After that, they even squatted in the house of Eva Braun, which was located nearby.
The photo of Lee Miller taking a bath in the Fuhrer’s apartment caused a flurry of indignation. Many considered the photographers’ behavior unethical. Lee Miller’s son, Anthony Penrose, commenting on the image, said: “Her boots covered in Dachau mud are on the floor are. She says she is a winner. But what she didn’t know was that a few hours later in Berlin, Hitler and Eva Braun would kill themselves in a bunker. ”
Many people noticed that Hitler decorated the bathroom with his own portrait and a classic statue of a woman. The New York Times described the photograph as “A woman caught between horror and beauty.” However, some researchers have interpreted the image more deeply, arguing that there is no single accidental detail in it. The pollution of Hitler’s bathroom with Dachau dust was a deliberate act. The Sherman bathing photographs in the same bath, taken by Lee Miller, are also symbolic since the photographer was a Jew.
Commenting on the photos, Miller said she was trying to wash off the Dachau scents.
Сообщение Lee Miller in the bathroom of Adolf Hitler появились сначала на Old Pictures.
]]>Сообщение Adolf Hitler trains body language – unique historical photos появились сначала на Old Pictures.
]]>Heinrich Hoffmann (also known for these Fuhrer’s WWI photos) photographed Hitler view the footage, and evaluate his own image. Here’s how we’ve got this series of pictures in which dictator appears in very strange poses. Later, Heinrich Hoffmann used these portraits in his memoirs.
The photographs look almost photoshopped. Adolf Hitler looks more like a ballroom dancer or stage actor than a ruthless dictator. But it was a fair price for polishing his speaking skills that were so important during the elections’ campaign.
Let’s note that Adolf Hitler was a skillful politician and he was ready for some bold moves to get the voters’ sympathy. For example, he organized a very special photoshoot while wearing traditional Tyrollian shorts, very popular in Bavaria. Hitler didn’t like those shorts, that looked almost ridiculous. But he knew that people will pay attention and did to gain more popularity before the elections. A strong move that, among others, allowed the Nazi party to get absolute power.
Сообщение Adolf Hitler trains body language – unique historical photos появились сначала на Old Pictures.
]]>Сообщение Eyes of hate: story behind iconic photo by Alfred Eisenstaedt появились сначала на Old Pictures.
]]>‘Eyes of hate’ is one of the iconic photos of the outstanding Germany-born photographer Alfred Eisenstaedt. Oldpics published his 64 of his most important pictures recently. ‘Eyes of hate’ photo stands among the others, and we decided to cover the story behind it.
So, let’s get back to September 1933. Adolf Hitler has already taken all the power in Germany after winning the elections in January. The 3rd Reich has been proclaimed, the anti-jew and militaristic rhetoric became the mainstream.
Alfred Eisenstaedt worked for the Atlantic (it will soon transform into an Associated press) agency as a photo reporter. Here’s how he got accreditation to cover the League of Nations conference in Geneva. The place where Eisenstaedt captured the ‘Eyes of hate’ photo.
“I found Dr. Joseph Goebbels In the hotel garden. By that moment, he has already occupied the position of Hitler’s propaganda minister,” Eisenstadt wrote in 1985. Goebbels was smiling, but not at me. He was looking at someone to my left. Suddenly he noticed me, and I took a picture of him. His expression changed immediately. These were the eyes of hate. Was I the enemy?’ Goebbels’ personal assistant Werner Naumann, with a goatee, and Hitler’s translator, Dr. Paul Schmidt, were standing behind him. We assume that one of them told the propaganda minister the photographer’s identity. “People asked what I felt taking pictures of these people. Of course, I wasn’t ok, but I do not know fear when I have a camera in my hands. “
Goebbels’ hostility towards the Alfred Eisenstaedt was due to his Jewish origin. The minister’s tense posture and a suspicious gaze directed directly at the camera clearly indicate Eisenstadt’s dislike. The propaganda minister truly shared the antisemitic views of his patron, Adolf Hitler.
“I could name this picture ‘From Goebbels with Love,’” the photographer continued. -When I approached him in the hotel garden, he looked at me with eyes of hate, as if he was waiting for me to disappear. But I haven’t disappeared.”
A couple of weeks later, Germany, quite the League of Nations, explaining that other countries discriminate against it. In fact, this meant Germany’s unwillingness to make compromises. It also testified to the League of Nations’ further ineffectiveness in resolving international disputes and preventing war conflicts.
Interestingly, Alfred Eisenstaedt captured his best-known ‘V-J day’ picture in 1945. It became the symbol of WW2 victory. While Joseph Goebbels ended his days committing suicide in May 1945.
Сообщение Eyes of hate: story behind iconic photo by Alfred Eisenstaedt появились сначала на Old Pictures.
]]>Сообщение Outstanding WW2 pictures (Part3: Emmanuil Evzerikhin) появились сначала на Old Pictures.
]]>Here you can check previous publications:
Now let’s take a look at WW2 pictures of Emmanuil Evzerikhin. He has some iconic world-famous photography in his portfolio too. We mean his photo of a fountain with dancing figures of children in the middle of ruined Stalingrad. This image became another gloomy symbol of WW2. Yevzerikhin’s scenes are generally atypical. Yes, there are many masterful combat photographs, but when selecting the brightest ones, you will pay attention to their symbolism, meaningfulness, whether it’s the cemetery of Hitler’s soldiers in liberated Stalingrad or the aircraft resembling a huge corn cob.
There was a lack of photo reporters in the USSR when WW2 broke out. Here’s how TASS (Russian version of AP) invited Emmanuil Evzerikhin to shoot war chronicles for them. He went through the entire war, filming many significant historical events. During the Battle of Stalingrad, Emmanuil became a real photo poet, as photo colleagues called him.
The Stalingrad series of photographs by Evzerikhin became the master’s visiting card; simple and expressive scenes grabbed editors’ attention and hit the print uncountable times.
Evzerikhin captured the real, hungry, and destroyed the city of Stalingrad and its people. Panoramas of a burning city with “blinded” windows of houses; the frightening emptiness of extinct streets; Pictures of captured Germans are with despair in their eyes. Those WW2 pictures make you empathize with people who have become victims of the war. Frozen, miserable, wrapped in rags, and lined up in uneven ranks. The soldiers wander through the white snow to nowhere, their faces and figures leave only the feeling of the monstrosity of any war.
Emmanuil Evzerikhin participated in the Battle of Konigsberg, the liberation of Minsk. He filmed the battles of the cities of Poland and Czechoslovakia, including the bloody Prague operation.
Сообщение Outstanding WW2 pictures (Part3: Emmanuil Evzerikhin) появились сначала на Old Pictures.
]]>Сообщение Nazi Rally in Madison Square Garden in pictures, 1939 появились сначала на Old Pictures.
]]>The truth is that this rally in Madison Square Garden wasn’t the first event that Nazi supporters staged in New York. There were many more, and here are some noteworthy pictures and facts.
In January 1933, Adolf Hitler became Chancellor of Germany, and soon the Nazis controlled the entire country. They missed no chance to gain influence outside Germany. Here’s why Deputy Fuhrer Rudolf Hess instructed the German-American immigrant Heinz Spanknobel to form a powerful fascist structure in the United States.
In July 1933, Spanknobel united two small groups to form the Friends of a New Germany. He relied on German citizens and German-Americans who were part of the fraternity. The new organization even picketed the largest German-language newspaper offices in New York, demanding Nazi-sympathetic articles, advocating for a boycott of Jews in German factories. They wore the swastika-covered uniforms during all these events.
In October 1933, Spanknobel was deported from the US. Two years later, Hess urged the Friends’ leaders to return to Germany and all German citizens to leave the organization.
Nonetheless, the organization’s followers formed a new one, that had no links to the German government. It was the German-American Bund. The organization continued its anti-Semitic and anti-communist campaigns, covering them with patriotic pro-American symbols, holding portraits of George Washington, the “first fascist.”
The German-American Bund reached its peak on February 20, 1939, when about 20,000 of its members gathered for the real Nazi Rally in Madison Square Garden. The leader of the organization Fritz Kuhn criticized Roosevelt, calling the policy of the “New Deal,” “the Jewish course,” and Roosevelt himself – Rosenfeld.
Some 80,000 anti-Nazi protesters outside the Madison Square Garden clashed with police while breaking into the building and closing the rally.
Note that the late 1930s was a specific time in the International relationships towards Germany. While many people realized the Nazi government’s aggressive nature, the politicians acted in a different, mild way. It was ok to greet the public with the Nazi salute during the sports events. Coca-cola advertised itself in Germany, and Henry Ford was fine to accept a German order from Nazi official’s hands.
The Bund’s days ended at the end of 1941 when the United States entered the war against Nazi Germany.
Сообщение Nazi Rally in Madison Square Garden in pictures, 1939 появились сначала на Old Pictures.
]]>Сообщение Kaiser Wilhelm II and Tsar Nicholas II, 1905 появились сначала на Old Pictures.
]]>Kaiser Wilhelm II initiated that negotiations trying to create a bloc of states against England. Relations between Russia and England at that time were hostile. Here’s why Nicholas II accepted this proposal of the German Emperor.
Emperors also had plans to induce France to join the alliance.
Russian ruler signed the agreement with Wilhelm II on the island of Bjorke, without notifying the Minister of Foreign Affairs Lamsdorf.
This treaty contradicted Russia’s obligations within the Franco-Russian alliance. And Lamzdorf managed to convince the tsar to send William II a soft refusal, citing formal obligations towards France. The treaty was actually annulled by a letter from Nicholas II to Wilhelm II of November 13, 1905.
Сообщение Kaiser Wilhelm II and Tsar Nicholas II, 1905 появились сначала на Old Pictures.
]]>Сообщение WWI Christmas truce in 1914: pictures and facts появились сначала на Old Pictures.
]]>Later reporters will call it a WWI Christmas truce of 1914. Of course, the decorations were primitive as they can be during wartime. The sparkling copper leading belts from shells decorated the Christmas trees. Garlands replaced bandages and telegraph tapes.
But the fact itself did not fit in with the atmosphere of the hopeless massacre that had prevailed here for the past few months! Very soon, Brits heard the German Christmas song, Stille Nacht.
The shooter of the Royal Scottish Guards Graham Williams recalled that evening much later:
I was in the trench, watching the German line of defense. I was thinking about how different this holy night was from those that I had before … When suddenly lights appeared here and there near the German trenches. The light came from the candles lit on Christmas trees. The candles burned evenly and brightly in the calm and frosty evening air. Other sentries rushed to wake the sleeping people. “Look what is happening!”
And at that moment, the enemy began to chant Stille Nacht, Heilige Nacht. In fact, it was the first time I heard then this hymn, which was not so well known in our country. The Germans finished singing, and we thought we had to respond with something. And we sang the psalm First Nowell, and when we finished, there was friendly applause from the German side. They followed with another Christmas song, beloved by the Germans – O Tannenbaum. The Kaiser’s soldiers began to go out to the neutral zone with exclamations: “Merry Christmas, British!” They carried gifts in their hands instead of weapons.
Here’s how the Germans and the British soldier began to go out to no man’s land to celebrate WWI Christmas truce of 1914. An English officer recalls:
I looked out of the trench and saw four German soldiers emerging from their trenches and heading in our direction. I ordered two of my men to meet the “guests”, but without weapons, since the Germans were not armed. But my guys were afraid to go, so I went alone. When the Germans approached the barbed wire, I saw that they were three privates. One of them said in English that they only want to wish us a Merry Christmas.
I asked what order the Germans received from the officers since they walked in our direction. They replied that there was no order, they went without permission. We exchanged cigarettes. When I returned to the position, the trenches were empty. I was surprised to find a crowd of 100-150 British and German soldiers. They laughed and celebrated. After a while, I noticed two German officers and through an interpreter told them that they should meet in a no man’s land and without weapons. One of the enemies admitted that he dreamed of an imminent end to the war, and I agreed with him.
The soldiers of both armies received Christmas parcels from home. They could exchange small gifts: food, tobacco, various alcohol, even buttons, and hats were used. More than one hundred thousand Germans, British and French along the entire Western Front, stopped killing each other that night. Right between the lines of the trenches, the military priests performed the Christmas service.
Instead of organs of city cathedrals, soldiers sang. Former enemies together collected and buried the bodies of the killed, decomposed for months in funnels. They performed funeral services and prayers together.
In some front sectors, the truce lasted only one night, but in some places, the WWI Christmas truce of 1914 lasted a week until the New Year. It turned out that propaganda clichés are inexpensive: having started to communicate, the “Hans” and “Tommy” quickly realized that their opponents were not all the fiends from hell. Hatred disappeared, giving way to the friendliness of people in an equally bad situation.
After the nightly Christmas services and the exchange of gifts, the miracles continued on the very day of Christmas. The soldiers came out of the trenches again and began to play football in the no-man land!
The bars of the gate were stakes in the ground. A stew can could serve as a ball. Each team could have an arbitrarily large number of players: no one really cared about the rules.
Ironically, the soldiers played football near Ypres’s town, which will give a name to the most deadly gas of WWI. The Yperite gas, or the Mustard gas, was dangerous because no WWI gas mask could stop it.
When information about the soldier’s willfulness reached the authorities, the reaction on the WWI Christmas truce of 1914 was immediate. The guilty were punished, and the fire began. The commander of the British II Corps, General Horatio Smith-Dorren, issued an order prohibiting any communication with the enemy. The commander of the Scottish Guards, Sir Ian Calhoun, was nearly shot for “aiding the enemy.” Only the personal intervention of King George V saved an officer. The King considered it unethical to shoot a knight and a relative of his prime minister.
By the way, some germans expressed dissatisfaction with the “outrageous” fact of fraternization with the enemy. The little known corporal from the 16th Bavarian Reserve Infantry Regiment was the one among them. Corporal’s name was Adolf Hitler.
For almost a week, governments and military censorship managed to hide information about the unauthorized Christmas truce in 1914. But still, the truth soon surfaced: the New York Times reported on an unusual event, and in early January, the British Daily Mirror and Daily Sketch reprinted American photographs.
Governments tried to suppress any attempts to reconcile the soldiers on major Christian holidays in advance. Since 1915, the British artillerymen were ordered to increase the intensity of German positions on the eve of Easter and Christmas.
Commandant reshuffled units in different sectors of the front in order to prevent the establishment of any comradely ties with the Germans. There was no more such a Christmas truce as it was in 1914.
Сообщение WWI Christmas truce in 1914: pictures and facts появились сначала на Old Pictures.
]]>Сообщение Nine European kings in one photo, May 1910 появились сначала на Old Pictures.
]]>Nonetheless, there was no high tension between monarchs on May 20, 1910. On this day, masters of the W&D Downey photo studio took this historical image of Nine European Kings at Windsor Castle.
They never gathered together before this day.
Standing: King Haakon VII of Norway, King Ferdinand I of Bulgaria, King Manuel II of Portugal, German Emperor and King of Prussia Wilhelm II, King George I of Greece, and King Albert I of Belgium.
Sitting: King of Spain Alfonso XIII, King of Great Britain and Ireland, George V, and King of Denmark Frederick VIII.
There was a reason for all these nine kings to pose for a single photo. All of them were connected with family bonds. For example, Frederik VIII of Denmark (sitting, far right) was a daddy of Haakon VII of Norway (top left). The German ruler Wilhelm II of Germany (top, 3rd from the right) was a cousin of both George V of the United Kingdom (bottom center) and Queen Maud of Norway, who was wife to Haakon VII of Norway and sister to George V of the United Kingdom. Let’s not forget that Haakon VII of Norway and George V of the United Kingdom were brothers-in-law. George V of the UK and Queen Maud of Norway’s mother was incidentally Alexandra of Denmark, sister to Frederik VIII of Denmark. Here’s how Frederik VIII of Denmark was also the uncle of George V of the United Kingdom.
Again, George was a grandson of Queen Victoria and Prince Albert and the first cousin of Russian King Nicholas II of Russia and Kaiser Wilhelm II of Germany. By the way, Nicholas II also could be present in this photo, but he didn’t manage to come in time.
All these elegant and brilliant representatives of their dynasties came together to send off the last journey of the English king Edward VII. They do not yet know what awaits them in the very near future.
The revolutions and social transformations will remove four of nine of these monarchs. One of them will be killed (George I of Greece was shot in March 1913 in Thessaloniki).
In less than five years, Britain and Belgium will fight side by side against Germany and Bulgaria in WWI. Peter of Serbia (another king missing in this photo of the nine) will fight on King George’s side.
Only five of these nine monarchies will survive Norwegian, Spanish, English, Danish, and Belgian.
Сообщение Nine European kings in one photo, May 1910 появились сначала на Old Pictures.
]]>Сообщение Schienenzeppelin: the Rail Zeppelin, June 1931 появились сначала на Old Pictures.
]]>Interestingly, the history of the Schienenzeppelin starts in Russia. A local engineer Abakovskiy completed the construction of a railroad car with an aircraft propeller in 1921. He named it originally “an aircar.” This Russian railroad car even made several trips and tragically crashed, taking seven people to the grave, including the inventor.
The Germans still found potential in this tragic story. Thus, engineer Franz Krukenberg created a 26-meter air locomotive with a design in the then fashionable Zeppelin style.
On May 10, 1931, this Schienenzeppelin recorded a speed of 200 kilometers per hour. It was made of aluminum. Its lightweight allowed it to hit the world speed records. The futuristic beauty beat its own record a few months later, hitting 230 kph. Yes, the German industry is good at setting speed records. After that, they began to roll this modernist invention all over Germany in order to demonstrate to the public. The Germans could not believe what they saw.
The Schienenzeppelin could carry up to 40 passengers, but not in luxury. The interior design was kept to a minimum, also due to weight concerns.
However, the Schienenzeppelin turned out to be not very practical. The propeller was behind the zeppelin, so it was not possible to attach other cars to it. Schienenzeppelin could only stay as an autonomous and independent car. The trips were expensive and impractical. Aircar did not climb hills well and did not have a reverse gear.
Many believed that the rotating propeller was very dangerous for passengers. The express created powerful air currents when passing by at high speed. Rail Zeppelin was a pretty noisy beast. And the railroad pavements themselves weren’t perfect enough to handle ultra-high speeds.
In short, operational shortcomings outweighed the beauty of the engineering idea. In 1939, the Germans disassembled the Rail Zeppelin. Schienenzeppelin completed its last trip on April 4, 1939. All the materials filled the needs of the German military industry during WWII.
Franz Kruckenberg continued to design trains for railways and died in 1965 at the age of 82.
Сообщение Schienenzeppelin: the Rail Zeppelin, June 1931 появились сначала на Old Pictures.
]]>Сообщение German WWI submarine UB122 that spent 92 years underwater появились сначала на Old Pictures.
]]>The end of the story of this German WWI submarine wasn’t heroic in any way. The vessel, which never fired any of its ten torpedoes, was handed over to the British, who decided to melt it down. However, upon entering the Thames estuary, the towing ropes collapsed, and the submarine suddenly sailed away. The escape ended at the swampy coast of Kent.
And yes, we remember that this German WWI submarine ended its days just like UB122, but at a different British shore.
The history of this submarine surfaced at the end of 2013. Strong December tides pulled the boat closer to the shore.
Historians identified the submarine only after its inspection. According to archival records, in total, six German submarines were lost during the towing! Three of them – U122, U123, and UB122 – all this time were hiding somewhere in the local shallows.
Three British and 41 German boats sunk during WWI around this British coastal area.
WWI is usually called the ‘first modern war’ – and the naval war. Many technologies were used for the first time. U-boat tech was one of them. Effective submarine combat was an especially new aspect of war. Germany concentrated on U-Boat production to fight the greater British flotilla and put pressure on its Atlantic units. German submarines had a massive surprise effect during the first years of WWI.
Сообщение German WWI submarine UB122 that spent 92 years underwater появились сначала на Old Pictures.
]]>