/**
  * TODO: maybe skip this verification on the payment_completed step. The messages look better there.
  */
 private function verify_payment_was_succesfull()
 {
     $transaction = $this->controller->get_transaction();
     if (!is_null($transaction) && $transaction->is_payment_completed()) {
         if (!$transaction->was_payment_successful()) {
             $message = __('The payment associated with the current transaction failed (see reasons below).', 'AWPCP');
             throw new AWPCP_Exception($message, awpcp_flatten_array($transaction->errors));
         }
     }
 }
Example #2
0
/**
 * @since 3.4
 */
function awpcp_display_listings($query, $context, $options)
{
    $options = wp_parse_args($options, array('show_intro_message' => false, 'show_menu_items' => false, 'show_category_selector' => false, 'show_pagination' => false, 'before_content' => '', 'before_pagination' => '', 'before_list' => '', 'after_pagination' => '', 'after_content' => ''));
    if (has_action('awpcp_browse_ads_template_action') || has_filter('awpcp_browse_ads_template_filter')) {
        do_action('awpcp_browse_ads_template_action');
        return apply_filters('awpcp_browse_ads_template_filter');
    }
    $results_per_page = absint(awpcp_request_param('results', get_awpcp_option('adresultsperpage', 10)));
    $results_offset = absint(awpcp_request_param('offset', 0));
    if (empty($query['limit']) && $results_per_page) {
        $query['limit'] = $results_per_page;
    }
    if (empty($query['offset']) && $query['limit']) {
        $query['offset'] = $results_offset;
    }
    $listings_collection = awpcp_listings_collection();
    $listings = $listings_collection->find_enabled_listings_with_query($query);
    $listings_count = $listings_collection->count_enabled_listings_with_query($query);
    $before_content = apply_filters('awpcp-content-before-listings-page', $options['before_content'], $context);
    $before_pagination = array();
    if ($options['show_category_selector']) {
        $before_pagination[15]['category-selector'] = awpcp_render_category_selector(array('required' => false));
    }
    if (is_array($options['before_pagination'])) {
        $before_pagination = awpcp_array_merge_recursive($before_pagination, $options['before_pagination']);
    } else {
        $before_pagination[20]['user-content'] = $options['before_pagination'];
    }
    $before_pagination = apply_filters('awpcp-listings-before-content', $before_pagination, $context);
    ksort($before_pagination);
    $before_pagination = awpcp_flatten_array($before_pagination);
    $before_list = apply_filters('awpcp-display-ads-before-list', $options['before_list'], $context);
    if ($listings_count > 0) {
        $pagination_options = array('results' => $results_per_page, 'offset' => $results_offset, 'total' => $listings_count);
        $pagination = $options['show_pagination'] ? awpcp_pagination($pagination_options, awpcp_current_url()) : '';
        $items = awpcp_render_listings_items($listings, $context);
    } else {
        $pagination = '';
        $items = array();
    }
    $after_pagination = array('user-content' => $options['after_pagination']);
    $after_pagination = apply_filters('awpcp-listings-after-content', $after_pagination, $context);
    $after_content = apply_filters('awpcp-content-after-listings-page', $options['after_content'], $context);
    ob_start();
    include AWPCP_DIR . '/templates/frontend/listings.tpl.php';
    $content = ob_get_contents();
    ob_end_clean();
    return $content;
}
Example #3
0
 protected function search_form($form, $errors = array())
 {
     global $hasregionsmodule, $hasextrafieldsmodule;
     $ui['module-extra-fields'] = $hasextrafieldsmodule;
     $ui['posted-by-field'] = get_awpcp_option('displaypostedbyfield');
     $ui['price-field'] = get_awpcp_option('displaypricefield');
     $ui['allow-user-to-search-in-multiple-regions'] = get_awpcp_option('allow-user-to-search-in-multiple-regions');
     $messages = $this->messages;
     $url_params = wp_parse_args(parse_url(awpcp_current_url(), PHP_URL_QUERY));
     $hidden = awpcp_flatten_array(array_merge($url_params, array('a' => 'dosearch')));
     $page = $this;
     $template = AWPCP_DIR . '/frontend/templates/page-search-ads.tpl.php';
     $params = compact('page', 'ui', 'form', 'hidden', 'messages', 'errors');
     return $this->render($template, $params);
 }
 private function no_payment_terms_defined()
 {
     return count(awpcp_flatten_array($this->payments->get_payment_terms())) === 0;
 }
Example #5
0
/**
 * TODO: replace usage of this function with awpcp_pagination()
 */
function _create_pager($item_count, $offset, $results, $tpname)
{
    $permastruc = get_option('permalink_structure');
    if (isset($permastruc) && !empty($permastruc)) {
        $awpcpoffset_set = "?offset=";
    } else {
        if (is_admin()) {
            $awpcpoffset_set = "?offset=";
        } else {
            $awpcpoffset_set = "&offset=";
        }
    }
    mt_srand(create_awpcp_random_seed());
    $radius = 5;
    global $accepted_results_per_page;
    $accepted_results_per_page = awpcp_pagination_options($results);
    // TODO: remove all fields that belongs to the Edit Ad form (including extra fields and others?)
    $params = array_merge($_GET, $_POST);
    unset($params['page_id'], $params['offset'], $params['results']);
    unset($params['PHPSESSID'], $params['aeaction'], $params['category_id']);
    unset($params['cat_ID'], $params['action'], $params['aeaction']);
    unset($params['category_name'], $params['category_parent_id']);
    unset($params['createeditadcategory'], $params['deletemultiplecategories']);
    unset($params['movedeleteads'], $params['moveadstocategory']);
    unset($params['category_to_delete'], $params['tpname']);
    unset($params['category_icon'], $params['sortby'], $params['adid']);
    unset($params['picid'], $params['adkey'], $params['editemail']);
    unset($params['awpcp_ads_to_action'], $params['post_type']);
    $cid = intval(awpcp_request_param('category_id'));
    $cid = empty($cid) ? get_query_var('cid') : $cid;
    if ($cid > 0) {
        $params['category_id'] = intval($cid);
    }
    $myrand = mt_rand(1000, 2000);
    $form = "<form id=\"pagerform{$myrand}\" name=\"pagerform{$myrand}\" action=\"\" method=\"get\">\n";
    $form .= "<table>\n";
    $form .= "<tr>\n";
    $form .= "\t<td>\n";
    $totalrows = $item_count;
    $total_pages = ceil($totalrows / $results);
    $dotsbefore = false;
    $dotsafter = false;
    $current_page = 0;
    $myreturn = '';
    for ($i = 1; $i <= $total_pages; $i++) {
        if (($i - 1) * $results <= $offset && $offset < $i * $results) {
            $myreturn .= "{$i}&nbsp;";
            $current_page = $i;
        } elseif (($i - 1 + $radius) * $results < $offset) {
            if (!$dotsbefore) {
                $myreturn .= "...";
                $dotsbefore = true;
            }
        } elseif (($i - 1 - $radius) * $results > $offset) {
            if (!$dotsafter) {
                $myreturn .= "...";
                $dotsafter = true;
            }
        } else {
            $href_params = array_merge($params, array('offset' => ($i - 1) * $results, 'results' => $results));
            $href = add_query_arg(urlencode_deep($href_params), $tpname);
            $myreturn .= sprintf('<a href="%s">%d</a>&nbsp;', esc_url($href), esc_attr($i));
        }
    }
    if ($offset != 0) {
        //Subtract 2, page is 1-based index, results is 0-based, must compensate for 2 pages here
        if (($current_page - 2) * $results < $results) {
            $href_params = array_merge($params, array('offset' => 0, 'results' => $results));
            $href = add_query_arg(urlencode_deep($href_params), $tpname);
        } else {
            $href_params = array_merge($params, array('offset' => ($current_page - 2) * $results, 'results' => $results));
            $href = add_query_arg(urlencode_deep($href_params), $tpname);
        }
        $prev = sprintf('<a href="%s">&laquo;</a>&nbsp;', esc_url($href));
    } else {
        $prev = '';
    }
    if ($offset != ($total_pages - 1) * $results) {
        $href_params = array_merge($params, array('offset' => $current_page * $results, 'results' => $results));
        $href = add_query_arg(urlencode_deep($href_params), $tpname);
        $next = sprintf('<a href="%s">&raquo;</a>&nbsp;', esc_url($href));
    } else {
        $next = '';
    }
    if (isset($_REQUEST['page_id']) && !empty($_REQUEST['page_id'])) {
        $form .= "\t\t<input type=\"hidden\" name=\"page_id\" value='" . esc_attr($_REQUEST['page_id']) . "' />\n";
    }
    $form = $form . $prev . $myreturn . $next;
    $form .= "\t</td>\n";
    if (count($accepted_results_per_page) > 1) {
        $form .= "\t<td>\n";
        $form .= "\t\t<input type=\"hidden\" name=\"offset\" value=\"{$offset}\" />\n";
        $flat_params = awpcp_flatten_array($params);
        while (list($k, $v) = each($flat_params)) {
            if (is_array($v)) {
                $v = count($v) > 0 ? reset($v) : '';
            }
            $form .= "\t\t<input type=\"hidden\" name=\"" . esc_attr($k) . "\" value=\"" . esc_attr($v) . "\" />\n";
        }
        $form .= "\t\t<select name=\"results\" onchange=\"document.pagerform{$myrand}.submit()\">\n";
        $form .= vector2options($accepted_results_per_page, $results);
        $form .= "\t\t</select>\n";
        $form .= "\t</td>\n";
    }
    $form .= "</tr>\n";
    $form .= "</table>\n";
    $form .= "</form>\n";
    return $form;
}
Example #6
0
function awpcp_html_hidden_fields($fields)
{
    $output = array();
    foreach (array_filter(awpcp_flatten_array($fields)) as $name => $value) {
        if (is_object($value)) {
            continue;
        }
        $output[] = '<input type="hidden" name="' . esc_attr($name) . '" value="' . esc_attr($value) . '" />';
    }
    return implode("\n", $output);
}