/*
* 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
Сообщение Ford Mustang on the Empire State Building, October 1965 появились сначала на Old Pictures.
]]>Robert Liery was vice president of the Empire State skyscraper when he made an appointment with William Benton, product promotion manager at the auto giant Ford.
Henry Ford established a car production cycle that the world admired. He organized the beneficial employment system. Ford managers learned not to miss marketing opportunities.
The plan was to benefit both the Empire States Building and the Ford Mustang. This bald marketing move had to raise the visits to the skyscraper and boost sales of the automaker. Benton agreed immediately. Very soon, Ford engineers began to carefully examine the Empire State Building, measuring doors, halls, and elevators. They needed accurate elevator data to understand how to transport the car to the observation deck.
Finally, Ford engineers pondered how to disassemble the 4.5 meters-long Mustang, so have a way to assemble it again on the roof.
Everything was ready by October 1965. The operation took less than an hour. The engine, gearbox and propeller shaft were removed from the Mustang. The car was cut into four parts, each of which fit the elevator of a skyscraper. Then engineers connected parts using a pin system.
At 11.00, helicopters with photojournalists were already circling over the Empire State Building. The photographs hit the front pages of all newspapers within a few hours.
At about 4.30 p.m. the same day, Ford workers disassembled a car again and transported it to the ground.
The success of the advertising campaign was tremendous: Ford sold 607,568 Mustangs in 1966. It was a record!
We cannot limit ourselves to one photo. Take a look at other pictures that immortalize the process of lifting the Ford Mustang to the observation deck of the Empire State Building.
Сообщение Ford Mustang on the Empire State Building, October 1965 появились сначала на Old Pictures.
]]>Сообщение Marilyn Monroe and Max Factor advertising появились сначала на Old Pictures.
]]>That was the best Max Factor’s move: to position its cosmetics as a treat that helps to transform the innocent-looking young lady into the sex symbol she’s known as today (“From Norma Jeane to Marilyn Monroe – Created by Max Factor,” reads the campaign’s tagline).
Read more: Max Factor demonstrates the beauty micrometer, 1935
“Marilyn made the sultry red lip, creamy skin, and dramatically lined eyes the most famous beauty look of the Forties and it’s a look that continues to dominate the beauty and fashion industry,” said Pat McGrath, Max Factor’s global creative design director. “It is the ultimate look that defines glamour — nothing else compares.”
There’s no surprise that young Marilyn selected Max Factor’s products as her main cosmetics brand. In the late 40s, their label was a very well known beauty treatment, and the rumor has it, that it was Max Factor’s son who worked personally with Monroe as an image consultant.
Сообщение Marilyn Monroe and Max Factor advertising появились сначала на Old Pictures.
]]>Сообщение Coca-Cola advertising in Nazi Germany появились сначала на Old Pictures.
]]>Can you imagine Coca-Cola advertising in Nazi Germany? Well, this beverage promoted itself heavily, hoping that aggressive rhetorics won’t turn into WW2. And here’s how it began.
Berlin hosted the Olympics in 1936, and Coca-Cola invested a lot into the promotion during and before the event. To start with Coca-Cola paid for the Master Sponsorship, and the brand was called an official beverage sponsors with a Getraenkedienst (beverage service). By the way, Germans didn’t plan to sell any “official drink” or “official car” badges for advertising purposes. The idea itself was brought from the US, where this advertising method was widely used by the middle of the 30s. As a result, Coca-Cola advertising in Germany during the Olympics was literally everywhere.
Read more: Henry Ford receiving the Grand Cross of the German Eagle from Nazi officials, 1938
Everyone knew that the Nazi was planning to hold a fascinating Olympic event, that will attract worldwide public attention. And of course, many transnational companies did their bid to promote their brand along with this occasion. It’s hard to say how much Coca-Cola GmbH cashed in to become one of the biggest sponsors of sports events, most notably the annual Deutschlandrundfahrt (National Bicycle Championships) and the Soccer Cup. The company representatives were ashamed to mention this sponsorship and even those posters of Coca-Cola advertising in Nazi Germany that you’ll find below never hit the shelves in the company’s museum.
Photo of a day: FIFA World Cup 1938 poster
Сообщение Coca-Cola advertising in Nazi Germany появились сначала на Old Pictures.
]]>Сообщение Coca-Cola advertising made by pigeons появились сначала на Old Pictures.
]]>Coca-cola topped the marketing creativity charted many times. One of their brightest advertising creations was made in the late 1960s, in Venice. It was a time when the company introduced 12-ounce metal cans that were previously used in the army only.
Read more:
Coca-Cola bottling line, Kansas factory, circa 1958
Marketing idea itself was pretty simple: Coke’s team from the Europian branch just spread out a huge amount of birdseed in St. Mark’s Square in the shape of their logo. Birds covered the seeds immediately and it now it could be clearly seen the Coca Cola logo. Photo was taken by a local photographer and it remains a very famous piece of advertising today. Interestingly, the company’s representative tried to get the council’s consent for this event, but city authority neither approved nor declined this request. Marketers decide to complete the event no matter what as it wasn’t prohibited to feed the pigeons overall.
Сообщение Coca-Cola advertising made by pigeons появились сначала на Old Pictures.
]]>Сообщение The history of tobacco advertising in 40 pictures появились сначала на Old Pictures.
]]>So, more than 50 years ago the U.S. Surgeon General’s reported that smoking carries a threat to health. This day in January 1964 is a grim date for the whole tobacco industry. The governments across the globe step by step were limiting tobacco advertising after this report making cigarettes promotion a hard puzzle.
Read more: US WWI propaganda posters
How did tobacco companies react to raising questions about cigarette’s influence on health? They increased the advertising budgets in the 1960s and continued to spend more and more each decade later. The hazards of smoking were hindered or mistold in the ads frequently, and sometimes it was claimed or implied that smoking was healthful.
[envira-gallery id="2788"]
How it began
Tobacco advertising began with posters, newspaper text ads, and trading cards. These cards were introduced by “French tradesmen to customers or potential clients as a means of advertising.” Bright and colorful pictures were added to the pack of cigarettes and meant to connect a smoker to the brand, boosting his loyalty.
Cigarette trading cards became an important component of early American cigarette advertising. Sports heroes, hot women, and iconic individuals like American presidents (without their consent) were included in cigarette packs throughout the late 19th and early 20th century. These cards were effective tools in incentivizing customers to limit their purchases of cigarettes to a specific brand.
In the 1920s and 1930s, cigarette ads migrated away from traditional trading cards to newspapers and magazines which started to gain their popularity. Advertising of this period frequently refers to health aspects of smoking: jokes aside, brands were competing in claiming their cigarettes more healthy than others.
Magazines and newspapers were an effective outlet for product advertisements as they offered tobacco brands the opportunity to target a greater number and variety of potential customers. Through print advertisements, cigarette brands employed a plethora of clever slogans, imagery, themes, and narratives to persuade consumers to buy their line of products.
Despite the introduction and implementation of significant government regulation that discourages cigarette promotion and advertisement, cigarette and tobacco-related products continue to be featured in a variety of publications in print-form.
End of 19th and the beginning of the 20th century :
Сообщение The history of tobacco advertising in 40 pictures появились сначала на Old Pictures.
]]>Сообщение Oil and gas ads of the past появились сначала на Old Pictures.
]]>It doesn’t matter where oil prices go – up or down – you need to advertise gas. And it’s not the first time that oil prices are dropping below any reasonable level. There were times when US companies started to drill both at home and abroad, resulting in supplу exceeding demand by many times. And oil and gas companies have no other option but compete and advertise themselves, inventing more and more messages to make their products more attractive.
So we won’t spend too much time on the story of the US oil industry. The first oil corporation, which was created to develop oil found floating on water near Titusville, Pennsylvania, was the Pennsylvania rock oil Company of Connecticut (later the Seneca Oil Company), but very soon many companies followed it and started oil and gas production, and Texaco, Mobile Oil and Shell were among them. The industry received an extra boost in 1920, when Congress adopted the Mineral Leasing Act, which denied access to American oil reserves to any foreign country that restricted American access to its reserves.
During all this time oil companies continued to advertise themselves by all means. High margin and growing consumption (and thus selling volumes) allowed them to advertise at a really large scale.
Interestingly, that fear of oil reserves to be depleted circulated 100 years ago. US experts foreseen that domestic supply will be exhausted by 1929… But this fear ended abruptly in 1924, with the invention of enormous new oil fields in Texas, Oklahoma, and California. These discoveries, alongside production from new fields in Mexico, the Soviet Union , and Venezuela, combined to drastically drop oil prices.
By 1931, with petroleum selling for 10 cents a barrel, domestic oil producers demanded restrictions on production so as to boost prices. Texas and Oklahoma passed state laws and stationed militia units at oil fields to stop drillers from exceeding production quotas. Despite these measures, prices continued to fall. Texaco, Mobile Oil and Shell had to invest even more into advertising during these hard times.
During war II, the oil surpluses of the 1930s quickly disappeared. Six billion of the seven billion barrels of petroleum employed by the allies during the war came from the US . Public officials again began to stress that the US was running out of oil, but those fears also were far from the truth. Industry continued its enormous growth due to raising popularity of car transportation and gas companies invested more and more oil dollars into advertising.
Сообщение Oil and gas ads of the past появились сначала на Old Pictures.
]]>Сообщение FIFA World Cup 1938 poster появились сначала на Old Pictures.
]]>It was the 3rd World Football Cup and it was held in France. Previous Cups also were held in Europe and thus the decision, taken in August 1936, to award the 1938 tournament to France (Argentina was an alternative location) caused outrage in South America. As a result Brazilian team agreed to enter the tournament at the last moment, while Uruguay and Argentina refused to enter it at all. Spain also missed it because of civil war. France and Italy were qualified automatically (as the host and the title holder). The remaining fourteen places were allocated to Europe (11), Americas (2) and one to Asia/Africa.
Another interesting fact was that Austria, who qualified for the tournament, withdrew after the March 1938 Anschluss under which Austria was incorporated into Germany. This was followed by a scandal where the organising committee did not invite Latvia to take their place (they had finished behind Austria in qualifying) and instead left the place vacant.
The tournament had no group stage and it was just a simple knock-out competition, with extra-time and replays where necessary.
The World Cup was won by Italy.
Сообщение FIFA World Cup 1938 poster появились сначала на Old Pictures.
]]>Сообщение US WWI propaganda posters появились сначала на Old Pictures.
]]>The US entered war I in 1917 in alliance with the good Britain and France. By this time the US economy was one the largest in the world, but nevertheless the government needed to raise funds to support the military activity in Europe in all possible ways, including selling bonds to the citizens of the US. Here’s how the art of the propaganda came in help. The United States was already a leader and trendsetter in the recently discovered art of movie making and therefore the new profession of economic advertising. So it was just a matter of time when such effective newly discovered technologies will become an instrument in the shaping of the American people’s minds and therefore the altering of popular opinion into a pro-war position. The idea of participating in the war ‘over there’ had to be planted into citizen’s minds and result into recruitment to the army itself or funding the war activities with their dollars.
The visual part of this propaganda consisted mainly of posters. The simple attention grabbing slogan and the self speaking illustration served well, convincing people to support the army. They might be pasted on the edges of buildings, put within the windows of homes, tacked up in workplaces, and resized to seem above car windows and in magazines.
In 1917 the U.S. government’s public information committee formed a Division of Pictorial Publicity, and their main goal was to use the advertising techniques in messaging the war news. The committee, headed by former investigative journalist George Creel, emphasised the message that America’s involvement within the war was entirely necessary in achieving the salvation of Europe from the German and enemy forces.
In his book titled “How we Advertised America,” Creel admitted that the committee was called into existence to form WWI a fight that might be a “verdict for mankind”. He called the committee a voice that was created to plead the justice of America’s cause before the jury of popular opinion . Creel also refers to the committee as a “vast enterprise in salesmanship” and “the world’s greatest adventure in advertising”. Needless to say that the committee’s message resonated deep within every American community and also served as a corporation liable for carrying the complete message of yank ideals to each corner of the civilized globe. The isolationism that was once popular across the US public opinion was replaced with understanding of the importance of the events that took place in Europe and necessity of the US government to participate in them.
142 years young and still strong Uncle Sam is going to war
Сообщение US WWI propaganda posters появились сначала на Old Pictures.
]]>Сообщение Vintage gun ads появились сначала на Old Pictures.
]]>In recent years the delicate nature of selling a deadly product to a mass audience has kept gun ads away from mainstream outlets like newspapers or television.
But once upon a time, the nation’s gun makers didn’t need to be so sensitive. A scan of vintage firearm and air rifle ads reveals a world in which guns were a must-have for the whole family.
From sex, safety, to stereotypes about masculinity, here’s a collection of what gun ads look like today and how they’ve evolved in the last century.
These vintage gun ads will give you a good chuckle and show you just how much the world has changed in the past few decades.
A lot has changed in the last century. Looking back in time at vintage gun advertising is a great way to highlight just how different we are a society these days.
In some ways, vintage gun ads remind us of a simpler time from back in the “good ‘ol days.” In other ways, though, they show us just much progress we’ve made.
Either way, they can be pretty entertaining when you think about the reaction some of these gun ads would receive if they were published today!
Сообщение Vintage gun ads появились сначала на Old Pictures.
]]>