Пример #1
0
function fn_update_promotion($data, $promotion_id, $lang_code = DESCR_SL)
{
    if (!empty($data['conditions']['conditions'])) {
        $data['conditions_hash'] = fn_promotion_serialize($data['conditions']['conditions']);
        $data['users_conditions_hash'] = fn_promotion_serialize_users_conditions($data['conditions']['conditions']);
    } else {
        $data['conditions_hash'] = $data['users_conditions_hash'] = '';
    }
    $data['conditions'] = empty($data['conditions']) ? array() : $data['conditions'];
    $data['bonuses'] = empty($data['bonuses']) ? array() : $data['bonuses'];
    fn_promotions_check_group_conditions($data['conditions']);
    if ($data['bonuses']) {
        foreach ($data['bonuses'] as $k => $v) {
            if (empty($v['bonus'])) {
                unset($data['bonuses'][$k]);
            }
        }
    }
    $data['conditions'] = serialize($data['conditions']);
    $data['bonuses'] = serialize($data['bonuses']);
    $from_date = $data['from_date'];
    $to_date = $data['to_date'];
    $data['from_date'] = !empty($from_date) ? fn_parse_date($from_date) : 0;
    $data['to_date'] = !empty($to_date) ? fn_parse_date($to_date, true) : 0;
    if (!empty($data['to_date']) && $data['to_date'] < $data['from_date']) {
        // protection from incorrect date range (special for isergi :))
        $data['from_date'] = fn_parse_date($to_date);
        $data['to_date'] = fn_parse_date($from_date, true);
    }
    if (!empty($promotion_id)) {
        db_query("UPDATE ?:promotions SET ?u WHERE promotion_id = ?i", $data, $promotion_id);
        db_query('UPDATE ?:promotion_descriptions SET ?u WHERE promotion_id = ?i AND lang_code = ?s', $data, $promotion_id, $lang_code);
    } else {
        $promotion_id = $data['promotion_id'] = db_query("REPLACE INTO ?:promotions ?e", $data);
        foreach (fn_get_translation_languages() as $data['lang_code'] => $_v) {
            db_query("REPLACE INTO ?:promotion_descriptions ?e", $data);
        }
    }
    return $promotion_id;
}
Пример #2
0
/**
 * Serialize promotion conditions for search
 *
 * @param array $conditions conditions
 * @param boolean $plain flag - return as string (true) or array (false)
 * @return mixed serialized data
 */
function fn_promotion_serialize($conditions, $plain = true)
{
    $result = array();
    foreach ($conditions as $c) {
        if (!empty($c['conditions'])) {
            $result = fn_array_merge($result, fn_promotion_serialize($c['conditions']), false);
        } elseif (isset($c['value'])) {
            if ($c['condition'] == 'auto_coupons' || $c['condition'] == 'coupon_code') {
                $vals = explode(',', $c['value']);
                foreach ($vals as $v) {
                    $result[] = $c['condition'] . '=' . $v;
                }
            } else {
                if (is_array($c['value'])) {
                    $c['value'] = implode(',', array_keys($c['value']));
                }
                $result[] = $c['condition'] . '=' . $c['value'];
            }
        }
    }
    return $plain == true ? implode(';', $result) : $result;
}
Пример #3
0
/**
 * Serialize promotion conditions for search
 *
 * @param array $conditions conditions
 * @param boolean $plain flag - return as string (true) or array (false)
 * @return mixed serialized data
 */
function fn_promotion_serialize($conditions, $plain = true)
{
    $result = array();
    foreach ($conditions as $c) {
        if (!empty($c['conditions'])) {
            $result = fn_array_merge($result, fn_promotion_serialize($c['conditions']), false);
        } elseif (isset($c['value'])) {
            $result[] = $c['condition'] . '=' . $c['value'];
        }
    }
    return $plain == true ? implode(';', $result) : $result;
}