/**
 * get mail lists
 *
 * @return array|null
 */
function cw_vertical_response_get_lists()
{
    global $config;
    $vertical_response_data =& cw_session_register('vertical_response_data');
    // clear data after day
    if (isset($vertical_response_data['time']) && $vertical_response_data['time'] + SECONDS_PER_DAY < cw_core_get_time()) {
        $vertical_response_data = array();
    }
    $result = array();
    if (isset($vertical_response_data['lists']) && !empty($vertical_response_data['lists'])) {
        foreach ($vertical_response_data['lists'] as $list) {
            if ($list->status == 'active') {
                $result[] = array('list_id' => $list->id, 'name' => $list->name, 'descr' => $list->name);
            }
        }
    } else {
        $vertical_response_email = trim($config[vertical_response_addon_name]['vertical_response_email']);
        $vertical_response_password = trim($config[vertical_response_addon_name]['vertical_response_password']);
        try {
            $vertical_response_data['time'] = cw_core_get_time();
            // lifetime
            $vr = new SoapClient(vertical_response_wsdl, array('connection_timeout' => 5));
            $sid = $vr->login(array('username' => "{$vertical_response_email}", 'password' => "{$vertical_response_password}", 'session_duration_minutes' => vertical_response_ses_time));
            // get all lists
            $lists = $vr->enumerateLists(array('session_id' => $sid, 'type' => 'email', 'include_field_info' => false, 'limit' => 20));
            $vertical_response_data['lists'] = $lists;
            if (!empty($lists) && count($lists)) {
                foreach ($lists as $list) {
                    if ($list->status == 'active') {
                        $result[] = array('list_id' => $list->id, 'name' => $list->name, 'descr' => $list->name);
                    }
                }
            }
        } catch (SoapFault $exception) {
            //exit ('fault: "' . $exception->faultcode . '" - ' . $exception->faultstring . "\n");
        }
    }
    return $result;
}