$required_mode = array("update", "modify", "export", "message", "delete", "subscribers");
if (!in_array($mode, $required_mode)) {
    $mode = '';
}
$vertical_response_data =& cw_session_register('vertical_response_data', array());
// clear data after day
if (isset($vertical_response_data['time']) && $vertical_response_data['time'] + 60 * 60 * 24 < cw_core_get_time()) {
    $vertical_response_data = array();
}
$conditions = " and show_as_news=2";
if ($mode == 'subscribers') {
    if ($action == "add" && !empty($new_email)) {
        $count = cw_query_first_cell("\n\t\t\tSELECT COUNT(*) FROM {$tables['newslist_subscription']}\n\t\t\tWHERE list_id='{$list_id}' AND email='{$new_email}'\n        ");
        if ($count < 1) {
            $result = cw_vertical_response_add_subcriber($list_id, $new_email);
            if ($result) {
                db_query("\n\t\t\t\t\tINSERT INTO {$tables['newslist_subscription']} (list_id, email, since_date)\n\t\t\t\t\tVALUES ('{$list_id}', '{$new_email}', '" . cw_core_get_time() . "')\n\t\t\t\t");
            }
            $top_message['content'] = cw_get_langvar_by_name("msg_adm_news_subscriber_add");
        } else {
            $top_message['content'] = cw_get_langvar_by_name("msg_adm_err_news_subscriber_add");
            $top_message['type'] = "E";
        }
    } elseif ($action == "update") {
        $is_search = cw_query_first_cell("SELECT avail FROM {$tables['newslists']} WHERE list_id = '{$list_id}'");
        // if list was manual, but now is search
        if (!$is_search && $type_list_control == 1) {
            // delete subscribers
            db_query("DELETE FROM {$tables['newslist_subscription']} WHERE list_id='{$list_id}'");
            $vertical_response_data['subscribers'][$list_id] = array();
/**
 * Update emails for saved_search list by cron
 */
function cw_vertical_response_emails_update()
{
    global $tables;
    $lists = cw_query("\r\n\t\tSELECT list_id, salesman_customer_id FROM {$tables['newslists']}\r\n\t\tWHERE avail = 1 AND show_as_news = 2 AND salesman_customer_id <> 0\r\n\t");
    if ($lists) {
        foreach ($lists as $list) {
            $list_id = $list['list_id'];
            db_query("DELETE FROM {$tables['newslist_subscription']} WHERE list_id = '{$list_id}'");
            // search subscribers
            $saved_search = $list['salesman_customer_id'];
            // salesman_customer_id is saved search id
            $sql_query = cw_query_first_cell("\r\n\t\t\t\tSELECT sql_query FROM {$tables['saved_search']} WHERE ss_id = '{$saved_search}'\r\n\t\t\t");
            $exist_cw = array();
            // emails from saved_search
            if ($sql_query) {
                $results = cw_query($sql_query);
                if ($results) {
                    $data = array();
                    foreach ($results as $result) {
                        $count = cw_query_first_cell("\r\n\t\t\t\t\t\t\tSELECT COUNT(*) FROM {$tables['newslist_subscription']}\r\n\t\t\t\t\t\t\tWHERE list_id='{$list_id}' AND email='" . $result['email'] . "'\r\n\t\t\t\t\t\t");
                        if ($count < 1) {
                            $exist_cw[] = $result['email'];
                            $data['list_id'] = $list_id;
                            $data['email'] = addslashes($result['email']);
                            $data['since_date'] = cw_core_get_time();
                            cw_array2insert('newslist_subscription', $data);
                        }
                    }
                }
            }
            // synchronize emails
            // get emails from vr
            $exist_vr = array();
            $subscribers = cw_vertical_response_get_subscribers($list_id);
            if ($subscribers) {
                foreach ($subscribers as $subscriber) {
                    $exist_vr[] = $subscriber['email'];
                }
            }
            // need add
            $need_add = array_diff($exist_cw, $exist_vr);
            if ($need_add) {
                foreach ($need_add as $email) {
                    cw_vertical_response_add_subcriber($list_id, $email);
                }
            }
            // need delete
            $need_delete = array_diff($exist_vr, $exist_cw);
            if ($need_delete) {
                foreach ($need_delete as $email) {
                    cw_vertical_response_delete_subcriber($list_id, $email);
                }
            }
        }
    }
}