5 * 60, 'display' => __('Every 5 Minutes'));
$schedules['aeidn_15_mins'] = array('interval' => 15 * 60, 'display' => __('Every 15 Minutes'));
return $schedules;
}
}
add_filter('cron_schedules', 'aeidn_more_reccurences');
if (!function_exists('aeidn_schedule_proc')) {
function aeidn_schedule_proc($show_trace = true)
{
$show_trace = false;
set_error_handler('aeidn_error_handler');
if ($show_trace) {
echo '
TRACE (' . date('Y-m-d H:i:s', time()) . '): posted schedule products
';
}
$list = AEIDN_Goods::loadGoodsList(
1,
100,
" AND NULLIF(NULLIF(user_schedule_time, '0000-00-00 00:00:00'), '') IS NOT NULL
AND user_schedule_time < now() "
);
if ($list['items']) {
/**
* @var AEIDN_Goods $goods
*/
foreach ($list['items'] as $goods) {
try {
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . "): check date {$goods->user_schedule_time}
";
}
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . '): posted...
';
}
/**
* @var AEIDN_AbstractLoader $loader
*/
$loader = aeidn_get_loader($goods->type);
if ($loader) {
if ($goods->needLoadMoreDetail()) {
$loader->loadDetailProc($goods);
}
if (!$goods->post_id && class_exists('AEIDN_WooCommerce')) {
var_dump(AEIDN_WooCommerce::addPost($goods));
}
$goods->saveField('user_schedule_time', null);
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . '): ok
';
}
} else {
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . '): loader not found
';
}
}
} catch (Exception $e) {
echo $e->getMessage() . '
';
}
}
} else {
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . '): products to post not found
';
}
}
//exit();
restore_error_handler();
}
// add_action('init', 'aeidn_schedule_proc');
}
add_action('aeidn_schedule_post_event', 'aeidn_schedule_proc');
if (!function_exists('aeidn_update_price_proc')) {
function aeidn_update_price_proc($productId = false, $show_trace = true)
{
$result = array('state' => 'ok', 'message' => '');
if (!get_option('aeidn_price_auto_update', false)) {
return false;
}
$update_price = get_option('aeidn_regular_price_auto_update', false);
set_error_handler('aeidn_error_handler');
try {
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . '): update stock availability
';
}
if ($productId) {
$posts_by_time = array($productId);
} else {
$cnt = get_option('aeidn_update_per_schedule', 20);
echo "products in work: $cnt
";
$posts_by_time = aeidn_get_sorted_products_ids('price_last_update', get_option('aeidn_update_per_schedule', 20));
}
$cur_aeidn_not_available_product_status = get_option('aeidn_not_available_product_status', 'trash');
foreach ($posts_by_time as $post_id) {
$external_id = get_post_meta($post_id, 'external_id', true);
if ($external_id) {
$goods = new AEIDN_Goods($external_id);
/* @var $loader AEIDN_AbstractLoader */
$loader = aeidn_get_loader($goods->type);
if ($loader) {
$filters = get_post_meta($post_id, '_aeidn_filters', true);
$result = $loader->getDetailProc($goods->external_id, array_merge(array('wc_product_id' => $post_id), is_array($filters) ? $filters : array()));
if ($result['state'] === 'ok') {
$goods = $result['goods'];
// check availability
if (!$goods->availability) {
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . "):move to trash {$post_id}
";
}
if ($cur_aeidn_not_available_product_status === 'trash') {
wp_trash_post($post_id);
} else if ($cur_aeidn_not_available_product_status === 'outofstock') {
update_post_meta($post_id, '_manage_stock', 'yes');
update_post_meta($post_id, '_stock_status', 'outofstock');
update_post_meta($post_id, '_stock', 0);
}
} else {
wp_untrash_post($post_id);
if (isset($goods->additional_meta['quantity'])) {
update_post_meta($post_id, '_manage_stock', 'yes');
update_post_meta($post_id, '_visibility', 'visible');
update_post_meta($post_id, '_stock', (int)$goods->additional_meta['quantity']);
} else {
$min_q = (int)get_option('aeidn_min_product_quantity', 5);
$max_q = (int)get_option('aeidn_max_product_quantity', 10);
$min_q = $min_q ? $min_q : 1;
$max_q = $max_q ? $max_q : $min_q;
$quantity = mt_rand($min_q, $max_q);
update_post_meta($post_id, '_stock', $quantity);
update_post_meta($post_id, '_manage_stock', 'yes');
update_post_meta($post_id, '_stock_status', 'instock');
}
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . "): product {$post_id} OK
";
}
if ($update_price) {
if ($post_id && class_exists('AEIDN_WooCommerce')) {
AEIDN_WooCommerce::updatePrice($post_id, $goods);
} else {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . "): product {$post_id} Update price error!
";
}
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . "): update regular price for {$post_id}: {$goods->user_price}
";
}
}
}
$result = apply_filters('aeidn_woocommerce_update_price', $result, $post_id, $goods);
} else {
if ($show_trace) {
echo 'TRACE (' . date('Y-m-d H:i:s', time()) . "): error while update price for {$post_id}: {$result['message']}
";
}
}
update_post_meta($post_id, 'price_last_update', time());
}
}
}
} catch (Exception $e) {
$result = array('state' => 'error', 'message' => $e->getMessage());
if ($show_trace) {
echo $e->getMessage() . '
';
}
}
restore_error_handler();
return $result;
}
}
add_action('aeidn_update_price_event', 'aeidn_update_price_proc');