function rcl_get_userlist($atts, $content = null)
{
    global $rcl_user, $rcl_users_set;
    require_once 'class-rcl-users.php';
    $users = new Rcl_Users($atts);
    $count_users = false;
    if (!$users->number) {
        $rqst = $users->search_request();
        $search_string = $rqst ? '&' . implode('&', $rqst) : '';
        $count_users = $users->count_users();
        $rclnavi = new RCL_navi($users->inpage, $count_users, $search_string, $users->paged);
        $users->offset = $rclnavi->offset;
        $users->number = $rclnavi->inpage;
    }
    $usersdata = $users->get_users();
    $userlist = $users->get_filters($count_users);
    if (!$usersdata) {
        $userlist .= '<p align="center">' . __('Users not found', 'wp-recall') . '</p>';
        $users->remove_data();
        return $userlist;
    }
    $userlist .= '<div class="userlist ' . $users->template . '-list">';
    $rcl_users_set = $users;
    foreach ($usersdata as $rcl_user) {
        $users->setup_userdata($rcl_user);
        $userlist .= rcl_get_include_template('user-' . $users->template . '.php');
    }
    $userlist .= '</div>';
    if (isset($rclnavi->inpage) && $rclnavi->inpage) {
        $userlist .= $rclnavi->navi();
    }
    $users->remove_data();
    return $userlist;
}
function rcl_get_grouplist($atts)
{
    include_once 'classes/rcl-groups.php';
    $list = new Rcl_Groups($atts);
    $count = false;
    if (!$list->number) {
        $rqst = $list->search_request();
        $search_string = $rqst ? '&' . implode('&', $rqst) : '';
        $count = $list->count_groups();
        $rclnavi = new RCL_navi($list->inpage, $count, $search_string, $list->paged);
        $list->offset = $rclnavi->offset;
        $list->number = $rclnavi->inpage;
    }
    $groupsdata = $list->get_groups();
    $content = $list->get_filters($count);
    if (!$groupsdata) {
        $content .= '<p align="center">' . __('Groups not found', 'wp-recall') . '</p>';
        return $content;
    }
    $content .= '<div class="rcl-grouplist">';
    foreach ($groupsdata as $rcl_group) {
        $list->setup_groupdata($rcl_group);
        $content .= rcl_get_include_template('group-list.php', __FILE__);
    }
    $content .= '</div>';
    if ($rclnavi->inpage) {
        $content .= $rclnavi->navi();
    }
    $list->remove_data();
    return $content;
}
function rcl_related_products($content)
{
    global $rmag_options, $post;
    if ($rmag_options['sistem_related_products'] != 1) {
        return $content;
    }
    if ($post->post_type != 'products') {
        return $content;
    }
    $related_prodcat = get_post_meta($post->ID, 'related_products_recall', 1);
    if (!$related_prodcat) {
        return $content;
    }
    $args = array('numberposts' => $rmag_options['size_related_products'], 'orderby' => 'rand', 'post_type' => 'products', 'exclude' => $post->ID, 'tax_query' => array(array('taxonomy' => 'prodcat', 'field' => 'id', 'terms' => $related_prodcat)));
    $related_products = get_posts($args);
    if (!$related_products) {
        return $content;
    }
    $content .= '<div class="related-products prodlist">';
    $title_related = $rmag_options['title_related_products_recall'];
    if ($title_related) {
        $content .= '<h3>' . $title_related . '</h3>';
    }
    foreach ($related_products as $post) {
        setup_postdata($post);
        $content .= rcl_get_include_template('product-slab.php', __FILE__);
    }
    wp_reset_query();
    $content .= '</div>';
    return $content;
}
function rcl_repository_page()
{
    global $addon, $active_addons;
    $paths = array(RCL_PATH . 'add-on', RCL_TAKEPATH . 'add-on');
    foreach ($paths as $path) {
        if (file_exists($path)) {
            $installs = scandir($path, 1);
            $a = 0;
            foreach ($installs as $namedir) {
                $install_addons[$namedir] = 1;
            }
        }
    }
    $url = 'http://wppost.ru/products-files/api/add-ons.php' . '?rcl-addon-info=get-add-ons&number=20';
    $data = array('rcl-key' => get_option('rcl-key'), 'rcl-version' => VER_RCL, 'host' => $_SERVER['SERVER_NAME']);
    $options = array('http' => array('header' => "Content-type: application/x-www-form-urlencoded\r\n", 'method' => 'POST', 'content' => http_build_query($data)));
    $context = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    $result = json_decode($result);
    //print_r($result);exit;
    if (!$result) {
        echo '<h2>Не удалось получить данные.</h2>';
        exit;
    }
    if (is_array($result) && isset($result['error'])) {
        echo '<h2>Ошибка! ' . $result['error'] . '</h2>';
        exit;
    }
    $content = '<div class="wp-list-table widefat plugin-install">
	<div id="the-list">';
    foreach ($result as $add) {
        if (!$add || isset($install_addons[$add->slug])) {
            continue;
        }
        (object) $addon;
        foreach ($add as $k => $v) {
            $key = str_replace('-', '_', $k);
            $v = isset($v) ? $v : '';
            $addon->{$key} = $v;
        }
        $content .= rcl_get_include_template('add-on-card.php');
    }
    $content .= '</div>' . '</div>';
    echo '<h1>Репозиторий дополнений Wp-Recall</h1>';
    echo '<p>На этой странице отображаются доступные на данный момент дополнения, но не установленные на вашем сайте.</p>';
    echo $content;
}
Example #5
0
function rcl_orders($author_lk)
{
    global $wpdb, $user_ID, $rmag_options, $rcl_options, $order;
    if ($user_ID != $author_lk) {
        return false;
    }
    $block = apply_filters('content_order_tab', '');
    if (isset($_GET['order-id'])) {
        $order = rcl_get_order($_GET['order-id']);
        if ($order->order_author != $user_ID) {
            return false;
        }
        $status = $order->order_status;
        $order_id = $order->order_id;
        $price = $order->order_price;
        $block .= '<a class="recall-button view-orders" href="' . rcl_format_url(get_author_posts_url($author_lk), 'orders') . '">Смотреть все заказы</a>';
        $block .= '<h3>Заказ №' . $order_id . '</h3>';
        $block .= '<div id="manage-order">';
        if ($status == 1 || $status == 5) {
            $block .= '<input class="remove_order recall-button" onclick="rcl_trash_order(this);return false;" type="button" name="remove_order" data-order="' . $order_id . '" value="Удалить">';
        }
        if ($status == 1 && function_exists('rcl_payform')) {
            $type_pay = $rmag_options['type_order_payment'];
            if ($type_pay == 1 || $type_pay == 2) {
                $block .= rcl_payform(array('id_pay' => $order_id, 'summ' => $price, 'type' => 2));
            } else {
                $block .= '<input class="pay_order recall-button" onclick="rcl_pay_order_private_account(this);return false;" type="button" name="pay_order" data-order="' . $order_id . '" value="Оплатить">';
            }
        }
        $block .= '</div>';
        $block .= '<div class="redirectform"></div>';
        $block .= rcl_get_include_template('order.php', __FILE__);
    } else {
        global $orders;
        $orders = rcl_get_orders(array('user_id' => $user_ID, 'status_not_in' => 6));
        if (!$orders) {
            $block .= '<p>У вас пока не оформлено ни одного заказа.</p>';
        } else {
            $block .= rcl_get_include_template('orders-history.php', __FILE__);
        }
    }
    return $block;
}
function rcl_feed_shortcode($atts)
{
    global $wpdb, $user_ID, $rcl_feed;
    if (!$user_ID) {
        return '<p class="aligncenter">' . __('Login or register to view the latest publications and comments from users on which you will you subscribed.', 'wp-recall') . '</p>';
    }
    include_once 'classes/class-rcl-feed.php';
    $list = new Rcl_Feed($atts);
    $count = false;
    if (!$list->number) {
        $rqst = $list->search_request();
        $search_string = $rqst ? '&' . implode('&', $rqst) : '';
        $count = $list->count_feed_posts();
        $rclnavi = new RCL_navi($list->inpage, $count, $search_string, $list->paged);
        $list->offset = $rclnavi->offset;
        $list->number = $rclnavi->inpage;
    }
    $feedsdata = $list->get_feed();
    $content = $list->get_filters($count);
    if (!$feedsdata) {
        $content .= '<p align="center">' . __('News not found', 'wp-recall') . '</p>';
        return $content;
    }
    $load = $rclnavi->inpage ? 'data-load="' . $list->load . '"' : '';
    $content .= '<div id="rcl-feed" data-feed="' . $list->content . '" ' . $load . '>';
    foreach ($feedsdata as $rcl_feed) {
        $list->setup_data($rcl_feed);
        $content .= '<div id="feed-' . $rcl_feed->feed_type . '-' . $rcl_feed->feed_ID . '" class="feed-box feed-user-' . $rcl_feed->feed_author . ' feed-' . $rcl_feed->feed_type . '">';
        $content .= rcl_get_include_template('feed-post.php', __FILE__);
        $content .= '</div>';
    }
    if ($list->load == 'ajax' && $rclnavi->inpage) {
        $content .= '<div id="feed-preloader"><div></div></div>' . '<div id="feed-bottom"></div>';
    }
    $content .= '</div>';
    if ($list->load == 'pagenavi' && $rclnavi->inpage) {
        $content .= $rclnavi->navi();
    }
    $list->remove_data();
    return $content;
}
 function get_postslist_table($author_lk)
 {
     global $wpdb, $post, $posts, $ratings;
     $ratings = array();
     $posts = array();
     //print_r($_POST);
     //exit;
     $start = $this->start . ',';
     $posts[] = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $wpdb->base_prefix . "posts WHERE post_author='%d' AND post_type='%s' AND post_status NOT IN ('draft','auto-draft') ORDER BY post_date DESC LIMIT {$start} 20", $author_lk, $this->posttype));
     if (is_multisite()) {
         $blog_list = get_blog_list(0, 'all');
         foreach ($blog_list as $blog) {
             $pref = $wpdb->base_prefix . $blog['blog_id'] . '_posts';
             $posts[] = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $pref . " WHERE post_author='%d' AND post_type='%s' AND post_status NOT IN ('draft','auto-draft') ORDER BY post_date DESC LIMIT {$start} 20", $author_lk, $this->posttype));
         }
     }
     if ($posts[0]) {
         $p_list = array();
         if (function_exists('rcl_format_rating')) {
             foreach ($posts as $postdata) {
                 foreach ($postdata as $p) {
                     $p_list[] = $p->ID;
                 }
             }
             $rayt_p = rcl_get_ratings(array('object_id' => $p_list, 'rating_type' => array($this->posttype)));
             foreach ((array) $rayt_p as $r) {
                 if (!isset($r->object_id)) {
                     continue;
                 }
                 $ratings[$r->object_id] = $r->rating_total;
             }
         }
         $posts_block = rcl_get_include_template('posts-list.php', __FILE__);
         wp_reset_postdata();
     } else {
         $posts_block = '<p>' . $this->name . ' ' . __('has not yet been published', 'wp-recall') . '</p>';
     }
     return $posts_block;
 }
    function cart()
    {
        global $user_ID, $products;
        $products = $this->get_products();
        if (!$products) {
            return '<p>В вашей корзине пусто.</p>';
        }
        if (!$user_ID) {
            $basket .= '<h3 class="title-data">Корзина <span class="weight-normal">(цены указаны в рублях)</span></h3>';
        }
        $basket .= rcl_get_include_template('cart.php', __FILE__);
        $basket = apply_filters('cart_rcl', $basket);
        if ($this->cnt_products) {
            $basket .= '<div class="confirm">';
            $get_fields_order = get_option('custom_orders_field');
            if ($get_fields_order) {
                $order_field = $this->cart_fields($get_fields_order, 'order');
            }
            if ($user_ID) {
                if ($order_field) {
                    $basket .= '<h3 align="center">Для оформления заказа заполните форму ниже:</h3>
                                                <div id="regnewuser"  style="display:none;"></div>
                    <table class="form-table">' . $order_field . '</table>';
                }
                $basket .= rcl_get_button('Оформить заказ', '#', array('icon' => false, 'class' => 'confirm_order')) . '</div>';
                $basket .= "<script>\r\n                    jQuery(function(){\r\n                    jQuery('#rcl-cart').on('click','.confirm_order',function(){";
                $basket .= $this->script_request('order');
                $basket .= "var dataString_count = 'action=rcl_confirm_order'" . $this->request . ";\r\n                            jQuery.ajax({\r\n                            type: 'POST',\r\n                            data: dataString_count,\r\n                            dataType: 'json',\r\n                            url: wpurl+'wp-admin/admin-ajax.php',\r\n                            success: function(data){\r\n                                    if(data['otvet']==100){\r\n                                            jQuery('.redirectform').html(data['redirectform']);\r\n                                            jQuery('.confirm').remove();\r\n                                            jQuery('.add_remove').empty();\r\n                                    } else if(data['otvet']==10){\r\n                                       jQuery('.redirectform').html(data['amount']);\r\n                                    } else if(data['otvet']==5){\r\n                                            jQuery('#regnewuser').html(data['recall']);\r\n                                            jQuery('#regnewuser').slideDown(500).delay(5000).slideUp(500);\r\n                                    }else {\r\n                                       alert('Ошибка проверки данных.');\r\n                                    }\r\n                            }\r\n                            });\r\n                            return false;\r\n                    });\r\n                });\r\n                </script>";
            } else {
                $get_fields = get_option('custom_profile_field');
                if ($get_fields) {
                    $order_field .= $this->cart_fields($get_fields, 'profile');
                }
                $basket .= '<h3 align="center">Для оформления заказа заполните форму ниже:</h3>
						<div id="regnewuser"  style="display:none;"></div>
                        <table class="form-table">
                            <tr>
                                <td><label>Укажите ваш E-mail <span class="required">*</span>:</label></td>
                                <td><input required type="text" class="email_new_user" name="email_new_user" value=""></td>
                            </tr>
                             <tr>
                                <td><label>Ваше Имя</label></td>
                                <td><input type="text" class="fio_new_user" name="fio_new_user" value=""></td>
                            </tr>
                            ' . $order_field . '
                        </table>
                        <p align="right">' . rcl_get_button('Оформить заказ', '#', array('icon' => false, 'class' => 'rcl_register_user_order', 'id' => false)) . '</p>

                        </div>';
                $basket .= "<script>\r\n                        jQuery(function(){\r\n                                jQuery('#rcl-cart').on('click','.rcl_register_user_order',function(){";
                $basket .= $this->script_request('order');
                $basket .= $this->script_request('profile');
                $basket .= "\r\n                                    var fio = jQuery('.confirm .fio_new_user').attr('value');\r\n                                    var email = jQuery('.confirm .email_new_user').attr('value');\r\n                                    var dataString = 'action=rcl_confirm_order&action=rcl_register_user_order&fio_new_user='******'&email_new_user='******'POST',\r\n                                            data: dataString,\r\n                                            dataType: 'json',\r\n                                            url: wpurl+'wp-admin/admin-ajax.php',\r\n                                            success: function(data){\r\n                                                    if(data['int']==100){\r\n                                                            jQuery('#regnewuser').html(data['recall']);\r\n                                                            jQuery('#regnewuser').slideDown(500);\r\n                                                            if(data['redirect']!=0){\r\n                                                                    location.replace(data['redirect']);\r\n                                                            }else{\r\n                                                                    jQuery('.form-table').remove();\r\n                                                                    jQuery('.rcl_register_user_order').remove();\r\n                                                            }\r\n                                                    } else {\r\n                                                            jQuery('#regnewuser').html(data['recall']);\r\n                                                            jQuery('#regnewuser').slideDown(500).delay(5000).slideUp(500);\r\n                                                    }\r\n                                            }\r\n                                    });\r\n                                    return false;\r\n                            });\r\n                    });\r\n                    </script>";
            }
        }
        return '<form id="rcl-cart" method="post">' . $basket . '</form>' . '<div class="redirectform" style="text-align:center;"></div>';
    }
function rmag_manage_orders()
{
    global $wpdb;
    echo '<h2>Управление заказами</h2>
			<div style="width:1050px">';
    //начало блока настроек профиля
    $n = 0;
    $s = 0;
    if ($_GET['remove-trash'] == 101 && wp_verify_nonce($_GET['_wpnonce'], 'delete-trash-rmag')) {
        $wpdb->query($wpdb->prepare("DELETE FROM " . RMAG_PREF . "orders_history WHERE order_status = '%d'", 6));
    }
    if ($_GET['order-id']) {
        global $order, $product;
        $order = rcl_get_order($_GET['order-id']);
        if ($_POST['submit_message']) {
            if ($_POST['email_author']) {
                $email_author = sanitize_email($_POST['email_author']);
            } else {
                $email_author = 'noreply@' . $_SERVER['HTTP_HOST'];
            }
            $user_email = get_the_author_meta('user_email', intval($_POST['address_message']));
            $result_mess = rcl_mail($user_email, sanitize_text_field($_POST['title_message']), force_balance_tags($_POST['text_message']));
        }
        $header_tb = array('№ п/п', 'Наименование товара', 'Цена', 'Количество', 'Сумма', 'Статус');
        echo '<h3>ID заказа: ' . $_GET['order_id'] . '</h3>' . '<table class="widefat">' . '<tr>';
        foreach ($header_tb as $h) {
            echo '<th>' . $h . '</th>';
        }
        echo '</tr>';
        foreach ($order->products as $product) {
            $n++;
            $user_login = get_the_author_meta('user_login', $product->user_id);
            echo '<tr>' . '<td>' . $n . '</td>' . '<td>' . get_the_title($product->product_id) . '</td>' . '<td>' . $product->product_price . '</td>' . '<td>' . $product->numberproduct . '</td>' . '<td>' . $product->product_price . '</td>' . '<td>' . rcl_get_status_name_order($product->order_status) . '</td>' . '</tr>';
        }
        echo '<tr>
			<td colspan="4">Сумма заказа</td>
			<td colspan="2">' . $order->order_price . '</td>
		</tr>
	</table>';
        $get_fields = get_option('custom_profile_field');
        $cf = new Rcl_Custom_Fields();
        foreach ((array) $get_fields as $custom_field) {
            $meta = get_the_author_meta($custom_field['slug'], $order->order_author);
            $show_custom_field .= $cf->get_field_value($custom_field, $meta);
        }
        $details_order = rcl_get_order_details($order->order_id);
        echo '<form><input type="button" value="Назад" onClick="history.back()"></form><div style="text-align:right;"><a href="' . admin_url('admin.php?page=manage-rmag') . '">Показать все заказы</a></div>
	<h3>Все заказы пользователя: <a href="' . admin_url('admin.php?page=manage-rmag&user='******'">' . $user_login . '</a></h3>
	<h3>Информация о пользователе:</h3><p><b>Имя</b>: ' . get_the_author_meta('display_name', $order->order_author) . '</p><p><b>Email</b>: ' . get_the_author_meta('user_email', $order->order_author) . '</p>' . $show_custom_field;
        if ($details_order) {
            echo '<h3>Детали заказа:</h3>' . $details_order;
        }
        if ($result_mess) {
            echo '<h3 style="color:green;">Сообщение было отправлено!</h3>';
        }
        echo '<style>.form_message input[type="text"], .form_message textarea{width:450px;padding:5px;}</style>
	<h3>Написать пользователю сообщение на почту ' . get_the_author_meta('user_email', $order->order_author) . '</h3>
	<form method="post" action="" class="form_message" >
	<p><b>Почта отправителя</b> (по-умолчанию "noreply@' . $_SERVER['HTTP_HOST'] . '")</p>
	<input type="text" name="email_author" value="' . sanitize_email($_POST['email_author']) . '">
	<p><b>Тема письма</b></p>
	<input type="text" name="title_message" value="' . sanitize_text_field($_POST['title_message']) . '">
	<p><b>Текст сообщения</b></p>';
        $textmail = "<p>Добрый день!</p>\n\t<p>Вы или кто то другой оформил заказ на сайте " . get_bloginfo('name') . "</p>\n\t<h3>Детали заказа:</h3>\n\t" . rcl_get_include_template('order.php', __FILE__) . "\n\t<p>Ваш заказ ожидает оплаты. Вы можете произвести оплату своего заказа любым из предложенных способ из своего личного кабинета или просто пополнив свой личный счет на сайте <a href='" . get_bloginfo('wpurl') . "'>" . get_bloginfo('wpurl') . "<p>\n\t____________________________________________________________________________\n\tЭто письмо было сформировано автоматически не надо отвечать на него";
        if ($_POST['text_message']) {
            $textmail = force_balance_tags($_POST['text_message']);
        }
        $args = array('wpautop' => 1, 'media_buttons' => 1, 'textarea_name' => 'text_message', 'textarea_rows' => 15, 'tabindex' => null, 'editor_css' => '', 'editor_class' => 'contentarea', 'teeny' => 0, 'dfw' => 0, 'tinymce' => 1, 'quicktags' => 1);
        wp_editor($textmail, 'textmessage', $args);
        echo '<input type="hidden" name="address_message" value="' . $order->order_author . '">
	<p><input type="submit" name="submit_message" value="Отправить"></p>
	</form>';
        echo $table;
    } else {
        global $order, $product;
        $all_pr = 0;
        list($year, $month, $day, $hour, $minute, $second) = preg_split('([^0-9])', current_time('mysql'));
        $args = array();
        if ($_POST['filter-date']) {
            if ($_POST['year']) {
                $args['year'] = $_POST['year'];
                if ($_POST['month']) {
                    $args['month'] = sanitize_text_field($_POST['month']);
                }
            }
            if ($_POST['status']) {
                $args['order_status'] = intval($_POST['status']);
            }
            $orders = rcl_get_orders($args);
        } else {
            if ($_GET['status']) {
                $args['order_status'] = intval($_GET['status']);
            } elseif ($_GET['user']) {
                $args['user_id'] = intval($_GET['user']);
            } elseif ($_GET['search_order']) {
                $args['order_id'] = intval($_GET['search_order']);
                $args['user_id'] = intval($_GET['search_order']);
                $args['search'] = true;
            } else {
                $args['status_not_in'] = 6;
                $args['year'] = $year;
                $args['month'] = $month;
                $_POST['year'] = $year;
                $_POST['month'] = $month;
            }
            //$where = apply_filters('string_where_get_orders',$where);
        }
        $orders = rcl_get_orders($args);
        if ($orders) {
            foreach ($orders as $rdr) {
                $n++;
                foreach ($rdr as $prods) {
                    $all_pr += $prods->product_price * $prods->numberproduct;
                }
            }
        }
        //if(!isset($_GET['status'])||$_GET['status']!=6)
        $table .= rcl_get_chart_orders($orders);
        $table .= '<h3>Всего заказов: ' . $n . ' на ' . $all_pr . ' рублей</h3>';
        $table .= '<form method="get" action="' . admin_url('admin.php?page=manage-rmag') . '"><p class="search-box">
	<label class="screen-reader-text" for="order-search-input">Поиск заказов:</label>
	<input type="search" id="order-search-input" name="search_order" placeholder="ID заказа или покупателя" value="">
	<input type="submit" id="search-submit" class="button" value="Поиск заказов">
        <input type="hidden" name="page" value="manage-rmag">
        </p></form>';
        $table .= '<form action="" method="post">';
        $table .= '<select name="status">';
        $table .= '<option value="">Все заказы</option>';
        for ($a = 1; $a <= 6; $a++) {
            $table .= '<option value="' . $a . '" ' . selected($a, $_POST['status'], false) . '>' . rcl_get_status_name_order($a) . '</option>';
        }
        $table .= '</select>';
        $table .= '<select name="month">';
        $months = array('За все месяцы', 'январь', 'февраль', 'март', 'апрель', 'май', 'июнь', 'июль', 'август', 'сентябрь', 'октябрь', 'ноябрь', 'декабрь');
        foreach ($months as $k => $month) {
            if ($k) {
                $k = zeroise($k, 2);
            }
            $table .= '<option value="' . $k . '" ' . selected($k, $_POST['month'], false) . '>' . $month . '</option>';
        }
        $table .= '</select>';
        $table .= '<select name="year">';
        for ($a = 2013; $a <= $year + 1; $a++) {
            $table .= '<option value="' . $a . '" ' . selected($a, $_POST['year'], false) . '>' . $a . '</option>';
        }
        $table .= '</select>';
        $table .= '<input type="submit" value="Фильтровать" name="filter-date" class="button-secondary">';
        if ($_GET['status'] == 6) {
            $table .= '<a href="' . wp_nonce_url(admin_url('admin.php?page=manage-rmag&remove-trash=101'), 'delete-trash-rmag') . '">Очистить корзину</a>';
        }
        $table .= '</form>';
        if (!$orders) {
            echo $table;
            exit;
        }
        $cols = array('Заказ ID', 'Пользователь', 'Сумма заказа', 'Дата и время', 'Статус', 'Смена статуса', 'Действие');
        $cols = apply_filters('header_table_orders_rcl', $cols);
        $table .= '<table class="widefat"><tr>';
        foreach ($cols as $col) {
            $table .= '<th>' . $col . '</th>';
        }
        $table .= '</tr>';
        foreach ($orders as $order_id => $order) {
            rcl_setup_orderdata($order);
            $radioform .= '<select id="status-' . $order_id . '" name="status-' . $order_id . '">';
            for ($a = 1; $a < 7; $a++) {
                $radioform .= '<option ' . selected($a, $order->order_status, false) . ' value="' . $a . '">' . rcl_get_status_name_order($a) . '</option>';
            }
            $radioform .= '</select>';
            if ($order->order_status == 6) {
                $delete = '<input type="button" class="button-primary delete-order" id="' . $order_id . '" value="Удалить">';
            }
            $button = '<input type="button" class="button-secondary select_status" id="' . $order_id . '" value="Изменить статус"> ' . $delete;
            $user_id = $order->order_author;
            $pagelink = admin_url('admin.php?page=manage-rmag');
            $cols_content = array('<a href="' . $pagelink . '&order-id=' . $order_id . '">Заказ ' . $order_id . '</a>', '<a href="' . $pagelink . '&user='******'">' . get_the_author_meta('user_login', $user_id) . '</a>', $order->order_price, $order->order_date, '<a href="' . $pagelink . '&status=' . $order->order_status . '"><span class="change-' . $order_id . '">' . rcl_get_status_name_order($order->order_status) . '</span></a>', $radioform, $button);
            $cols_content = apply_filters('content_table_orders_rcl', $cols_content, $user_id);
            $table .= '<tr id="row-' . $order_id . '">';
            foreach ($cols_content as $content) {
                $table .= '<td>' . $content . '</td>';
            }
            $table .= '</tr>';
            $radioform = '';
            $delete = '';
        }
        $cnt_cols = count($cols);
        if ($_GET['status'] != 6) {
            $table .= '<tr><td align="right" colspan="' . $cnt_cols . '"><a href="' . admin_url('admin.php?page=manage-rmag&status=6') . '">Перейти в корзину</a></td></tr>';
        }
        $table .= '</table>';
        echo $table;
        if ($_GET['user'] || $_GET['status'] || $_GET['date']) {
            echo '<form><input type="button" value="Назад" onClick="history.back()"></form><div style="text-align:right;"><a href="' . admin_url('admin.php?page=manage-rmag') . '">Показать текущие заказы</a></div>';
        }
    }
    echo '</div>';
    //конец блока заказов
}
Example #10
0
function rcl_payment_order($order_id, $user_id = false)
{
    global $wpdb, $order, $rmag_options;
    $order = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $wpdb->prefix . "rmag_orders_history WHERE order_id='%d'", $order_id));
    rcl_setup_orderdata($order);
    if (!$user_id) {
        $user_id = $order->order_author;
    }
    rcl_remove_reserve($order_id);
    rcl_update_status_order($order_id, 2);
    //Если работает реферальная система и партнеру начисляются проценты с покупок его реферала
    if (function_exists('add_referall_incentive_order')) {
        add_referall_incentive_order($user_id, $order->order_price);
    }
    $get_fields = get_option('custom_profile_field');
    if ($get_fields) {
        $cf = new Rcl_Custom_Fields();
        foreach ((array) $get_fields as $custom_field) {
            $slug = $custom_field['slug'];
            $meta = get_the_author_meta($slug, $user_id);
            $show_custom_field .= $cf->get_field_value($custom_field, $meta);
        }
    }
    $table_order = rcl_get_include_template('order.php', __FILE__);
    $args = array('role' => 'administrator');
    $users = get_users($args);
    $subject = 'Заказ №' . $order->order_id . ' оплачен!';
    $admin_email = $rmag_options['admin_email_magazin_recall'];
    $text = '';
    $text = apply_filters('payment_mail_text', $text);
    //print_r($text);exit;
    $textmail = '
    <p>Пользователь оплатил заказ в магазине "' . get_bloginfo('name') . '".</p>
    <h3>Информация о пользователе:</h3>
    <p><b>Имя</b>: ' . get_the_author_meta('display_name', $user_id) . '</p>
    <p><b>Email</b>: ' . get_the_author_meta('user_email', $user_id) . '</p>
    ' . $show_custom_field . '
    <p>Заказ №' . $order_id . ' получил статус "Оплачено".</p>
    <h3>Детали заказа:</h3>
    ' . $table_order . '
	' . $text . '
    <p>Ссылка для управления заказом в админке:</p>
    <p>' . admin_url('admin.php?page=manage-rmag&order-id=' . $order_id) . '</p>';
    if ($admin_email) {
        rcl_mail($admin_email, $subject, $textmail);
    } else {
        foreach ((array) $users as $userdata) {
            $email = $userdata->user_email;
            rcl_mail($email, $subject, $textmail);
        }
    }
    $email = get_the_author_meta('user_email', $user_id);
    $textmail = '
    <p>Вы оплатили заказ в магазине "' . get_bloginfo('name') . '" средствами со своего личного счета.</p>
    <h3>Информация о покупателе:</h3>
    <p><b>Имя</b>: ' . get_the_author_meta('display_name', $user_id) . '</p>
    <p><b>Email</b>: ' . get_the_author_meta('user_email', $user_id) . '</p>
    ' . $show_custom_field . '
    <p>Заказ №' . $order_id . ' получил статус "Оплачено".</p>
    <h3>Детали заказа:</h3>
    ' . $table_order . '
	' . $text . '
    <p>Ваш заказ оплачен и поступил в обработку. Вы можете следить за сменой его статуса из своего личного кабинета</p>';
    rcl_mail($email, $subject, $textmail);
    do_action('payorder_user_count_rcl', $user_id, $order->order_price, 'Оплата заказа №' . $order_id, 1);
}
function rcl_get_chart($arr = false)
{
    global $chartData;
    if (!$arr) {
        return false;
    }
    if (count($arr) == 1) {
        foreach ($arr as $month => $data) {
            for ($a = 1; $a <= $data['days']; $a++) {
                $cnt = isset($data[$a]['cnt']) ? $data[$a]['cnt'] : 0;
                $summ = isset($data[$a]['summ']) ? $data[$a]['summ'] : 0;
                $chartData['data'][] = array($a, $cnt, $summ);
            }
        }
    } else {
        for ($a = 1; $a <= 12; $a++) {
            $cnt = isset($arr[$a]['cnt']) ? $arr[$a]['cnt'] : 0;
            $summ = isset($arr[$a]['summ']) ? $arr[$a]['summ'] : 0;
            $chartData['data'][] = array($a, $cnt, $summ);
        }
    }
    if (!$chartData) {
        return false;
    }
    return rcl_get_include_template('chart.php');
}
Example #12
0
function rcl_rating_shortcode($atts)
{
    global $rating;
    extract(shortcode_atts(array('rating_type' => false, 'days' => false, 'number' => 10, 'offset' => 0, 'order' => 'ID', 'list_type' => 'row', 'group_by' => ''), $atts));
    $rcl_rating = new Rcl_Rating();
    $ratings = $rcl_rating->get_values($atts);
    //print_r($ratings);
    $userlist = '<div class="ratinglist ' . $list_type . '-list">';
    foreach ($ratings as $rating) {
        $rating = (object) $rating;
        $userlist .= rcl_get_include_template('rating-' . $list_type . '.php', __FILE__);
    }
    $userlist .= '</div>';
    return $userlist;
}
Example #13
0
function rcl_feed_progress()
{
    global $rcl_feed;
    $content = $_POST['content'];
    $paged = $_POST['paged'];
    include_once 'classes/class-rcl-feed.php';
    $list = new Rcl_Feed(array('paged' => $paged, 'content' => $content, 'filters' => 0));
    $count = false;
    if (!$list->number) {
        $rqst = $list->search_request();
        $search_string = $rqst ? '&' . implode('&', $rqst) : '';
        $count = $list->count_feed_posts();
        $rclnavi = new RCL_navi($list->inpage, $count, $search_string, $list->paged);
        $list->offset = $rclnavi->offset;
        $list->number = $rclnavi->inpage;
    }
    $feedsdata = $list->get_feed();
    $content = '';
    if (!$feedsdata) {
        $content .= '<p align="center">' . __('News not found', 'wp-recall') . '</p>';
        $result['content'] = $content;
        $result['code'] = 0;
        echo json_encode($result);
        exit;
    }
    foreach ($feedsdata as $rcl_feed) {
        $list->setup_data($rcl_feed);
        $content .= '<div id="feed-' . $rcl_feed->feed_type . '-' . $rcl_feed->feed_ID . '" class="feed-box feed-user-' . $rcl_feed->feed_author . ' feed-' . $rcl_feed->feed_type . '">';
        $content .= rcl_get_include_template('feed-post.php', __FILE__);
        $content .= '</div>';
    }
    $list->remove_data();
    $result['content'] = $content;
    $result['code'] = 100;
    echo json_encode($result);
    exit;
}
function get_include_template_rcl($file_temp, $path = false)
{
    _deprecated_function('get_include_template_rcl', '4.2', 'rcl_get_include_template');
    return rcl_get_include_template($file_temp, $path);
}
Example #15
0
function rcl_get_editor_content($post_content, $type = 'editor')
{
    global $rcl_box, $formFields;
    $formFields['upload'] = false;
    if ($post_content) {
        remove_filter('the_content', 'add_button_bmk_in_content', 20);
        remove_filter('the_content', 'get_notifi_bkms', 20);
        remove_filter('the_content', 'rcl_get_edit_post_button', 999);
        $content = apply_filters('the_content', $post_content);
        if ($type == 'preview') {
            return $content;
        }
        if (isset($rcl_box)) {
        } else {
            //return '<style>.rcl-public-editor{display:none}</style>'
            //.rcl_wp_editor(array('type_editor'=>3,'media_buttons'=>0),$post_content);
            //return rcl_box_shortcode(array('type'=>'html', 'content'=>str_replace('\'','"',$post_content)));
        }
        return $content;
    } else {
        return rcl_get_include_template('editor-text-box.php', __FILE__);
    }
}
 function public_form()
 {
     global $user_ID, $formFields;
     if (!$this->can_edit) {
         return '<p align="center">' . __('You can not edit this publication :(', 'wp-recall') . '</p>';
     }
     if (!$this->user_can()) {
         if ($this->post_type == 'post-group') {
             return '<div class="public-post-group">' . '<h3 >' . __('Sorry, but you have no rights to publish within groups :(', 'wp-recall') . '</h3>' . '</div>';
         } else {
             if (!$user_ID) {
                 return '<p align="center">' . __('You must be logged in to post. Login or register', 'wp-recall') . '</p>';
             }
             return '<h3 class="aligncenter">' . __('Sorry, but you have no right<br>to publish the records on this site :(', 'wp-recall') . '</h3>';
         }
     }
     $formfields = array('title' => true, 'termlist' => true, 'editor' => true, 'excerpt' => false, 'custom_fields' => true, 'upload' => true, 'tags' => true);
     $formFields = apply_filters('fields_public_form_rcl', $formfields, $this);
     if (!$formFields['tags']) {
         remove_filter('public_form_rcl', 'rcl_add_tags_input', 10);
     }
     $form = '<div class="public_block">';
     $id_form = $this->post_id ? $this->post_id : 0;
     if (!$id_form) {
         if (!isset($_SESSION['new-' . $this->post_type])) {
             $_SESSION['new-' . $this->post_type] = 1;
             $form .= '<script>Object.keys(localStorage)
                             .forEach(function(key){
                                  if (/^form-' . $this->post_type . '-0/.test(key)) {
                                      localStorage.removeItem(key);
                                  }
                          });</script>';
         }
     }
     $id_form = 'form-' . $this->post_type . '-' . $id_form;
     $form .= '<form id="' . $id_form . '" class="';
     $form .= $this->post_id ? 'edit-form' : 'public-form';
     $form .= '" onsubmit="document.getElementById(\'edit-post-rcl\').disabled=true;document.getElementById(\'edit-post-rcl\').value=\'' . __('Being sent, please wait...', 'wp-recall') . '\';"  action="" method="post" enctype="multipart/form-data">
             ' . wp_nonce_field('edit-post-rcl', '_wpnonce', true, false);
     if (!$user_ID) {
         $form .= '<div class="rcl-form-field">
                         <label>' . __('Your Name', 'wp-recall') . ' <span class="required">*</span></label>
                         <input required type="text" value="" name="name-user">
                 </div>
                 <div class="rcl-form-field">
                         <label>' . __('Your E-mail', 'wp-recall') . ' <span class="required">*</span></label>
                         <input required type="text" value="" name="email-user">
                 </div>';
     }
     if (rcl_get_template_path($this->post_type . '-form.php', __FILE__)) {
         $form .= rcl_get_include_template($this->post_type . '-form.php', __FILE__);
     } else {
         $form .= rcl_get_include_template('public-form.php', __FILE__);
     }
     $fields = '';
     $form .= apply_filters('rcl_public_form', $fields, $this);
     $form .= $this->submit_and_hidden() . '</form>';
     $form .= '<script type="text/javascript">
                 function addfile_content($file){
                     var ifr = jQuery("#contentarea_ifr").contents().find("#tinymce").html();
                     jQuery("#contentarea").insertAtCaret($file+"&nbsp;");
                     jQuery("#contentarea_ifr").contents().find("#tinymce").html(ifr+$file+"&nbsp;");
                     return false;
                 }
             </script>';
     $after = '';
     $form .= apply_filters('after_public_form_rcl', $after, $this);
     $form .= '</div>';
     return $form;
 }
function rcl_shortcode_productlist($atts, $content = null)
{
    global $post, $wpdb, $rmag_options, $desc;
    extract(shortcode_atts(array('num' => false, 'inpage' => 10, 'type' => 'list', 'inline' => 3, 'cat' => false, 'desc' => 200, 'tag' => false, 'include' => false, 'orderby' => 'post_date', 'order' => 'DESC', 'author' => false), $atts));
    if (!$num) {
        $count_prod = $wpdb->get_var($wpdb->prepare("SELECT COUNT(ID) FROM " . $wpdb->prefix . "posts WHERE post_type='%s' AND post_status='%s'", 'products', 'publish'));
    } else {
        $count_prod = false;
        $inpage = $num;
    }
    $rclnavi = new RCL_navi($inpage, $count_prod, '&filter=' . $orderby);
    if ($cat) {
        $args = array('numberposts' => $inpage, 'offset' => $rclnavi->offset, 'orderby' => $orderby, 'order' => $order, 'author' => $author, 'post_type' => 'products', 'tag' => $tag, 'include' => $include, 'tax_query' => array(array('taxonomy' => 'prodcat', 'field' => 'id', 'terms' => explode(',', $cat))));
    } else {
        $args = array('numberposts' => $inpage, 'offset' => $rclnavi->offset, 'category' => '', 'orderby' => $orderby, 'order' => $order, 'author' => $author, 'include' => $include, 'tag' => $tag, 'exclude' => '', 'meta_key' => '', 'meta_value' => '', 'post_type' => 'products', 'post_mime_type' => '', 'post_parent' => '', 'post_status' => 'publish');
    }
    $products = get_posts($args);
    if (!$products) {
        return false;
    }
    $n = 0;
    $block = $type == 'rows' ? 'table' : 'div';
    $prodlist .= '<' . $block . ' class="prodlist">';
    foreach ($products as $post) {
        setup_postdata($post);
        $n++;
        $prodlist .= rcl_get_include_template('product-' . $type . '.php', __FILE__);
        if ($type == 'slab') {
            $cnt = $n % $inline;
            if ($cnt == 0) {
                $prodlist .= '<div class="clear"></div>';
            }
        }
    }
    wp_reset_query();
    $prodlist .= '</' . $block . '>';
    if (!$num) {
        $prodlist .= $rclnavi->navi();
    }
    return $prodlist;
}
function rcl_register_user_order()
{
    global $rmag_options, $wpdb, $order, $rcl_options;
    $reg_user = $rmag_options['noreg_order'] ? false : true;
    $fio_new_user = sanitize_text_field($_POST['fio_new_user']);
    $email_new_user = sanitize_email($_POST['email_new_user']);
    include_once 'rcl_order.php';
    $ord = new Rcl_Order();
    $get_fields = get_option('custom_profile_field');
    $get_order_fields = get_option('custom_orders_field');
    $req_prof = $ord->chek_requared_fields($get_fields, 'profile');
    $req_order = $ord->chek_requared_fields($get_order_fields);
    if ($email_new_user && $req_prof && $req_order) {
        $res_email = email_exists($email_new_user);
        $res_login = username_exists($email_new_user);
        $correctemail = is_email($email_new_user);
        $valid = validate_username($email_new_user);
        if (!$reg_user && (!$correctemail || !$valid)) {
            if (!$valid || !$correctemail) {
                $log['int'] = 1;
                $log['recall'] = '<p style="text-align:center;color:red;">Вы ввели некорректный email!</p>';
                echo json_encode($res);
                exit;
            }
        }
        //var_dump($reg_user);exit;
        if ($reg_user && ($res_login || $res_email || !$correctemail || !$valid)) {
            if (!$valid || !$correctemail) {
                $log['int'] = 1;
                $log['recall'] .= '<p style="text-align:center;color:red;">Вы ввели некорректный email!</p>';
            }
            if ($res_login || $res_email) {
                $log['int'] = 1;
                $log['recall'] .= '<p style="text-align:center;color:red;">Этот email уже используется!<br>' . 'Если это ваш email, то авторизуйтесь и продолжите оформление заказа.</p>';
            }
        } else {
            $user_id = false;
            if (!$reg_user) {
                $user = get_user_by('email', $email_new_user);
                if ($user) {
                    $user_id = $user->ID;
                }
            }
            if (!$user_id) {
                $random_password = wp_generate_password($length = 12, $include_standard_special_chars = false);
                $userdata = array('user_pass' => $random_password, 'user_login' => $email_new_user, 'user_email' => $email_new_user, 'display_name' => $fio_new_user);
                $user_id = rcl_insert_user($userdata);
            }
            if ($user_id) {
                if ($get_fields && $user_id) {
                    $cf = new Rcl_Custom_Fields();
                    $cf->register_user_metas($user_id);
                }
                //Сразу авторизуем пользователя
                if ($reg_user && !$rcl_options['confirm_register_recall']) {
                    $creds = array();
                    $creds['user_login'] = $email_new_user;
                    $creds['user_password'] = $random_password;
                    $creds['remember'] = true;
                    $user = wp_signon($creds, false);
                    $redirect_url = rcl_format_url(get_author_posts_url($user_id), 'orders');
                } else {
                    $redirect_url = false;
                }
                $order_id = $ord->get_order_id();
                $results = $ord->insert_order($order_id, $user_id);
                if (!$results) {
                    $log['int'] = 1;
                    $log['recall'] = '<p style="text-align:center;color:red;">Возникла ошибка, заказ не был создан!</p>';
                    echo json_encode($log);
                    exit;
                }
                $order_custom_field = $ord->insert_detail_order($get_order_fields);
                $order = rcl_get_order($order_id);
                $table_order = rcl_get_include_template('order.php', __FILE__);
                $ord->send_mail($order_custom_field, $table_order, $user_id, $creds);
                $notice = $rcl_options['confirm_register_recall'] == 1 ? '<p class=res_confirm style="color:orange;">Для отслеживания статуса заказа подтвердите указанный email!<br>' . 'Перейдите по ссылке в высланном письме.</p>' : '';
                if (!$order->order_price) {
                    //Если заказ бесплатный
                    $notice .= "<p class='res_confirm'>Ваш заказ был создан!<br />" . "Заказ содержал только бесплатные товары<br>" . "Заказу присвоен статус - \"Оплачено\"<br>" . "Заказ поступил в обработку. В своем личном кабинете вы можете узнать статус вашего заказа.</p>";
                    $log['recall'] = $notice;
                    $log['redirect'] = $redirect_url;
                    $log['int'] = 100;
                    echo json_encode($log);
                    exit;
                }
                if (function_exists('rcl_payform')) {
                    $type_order_payment = $rmag_options['type_order_payment'];
                    if ($type_order_payment == 1 || $type_order_payment == 2) {
                        $notice .= "<p class='res_confirm'>Ваш заказ был создан!<br />Заказу присвоен статус - \"Неоплачено\"<br />Вы можете оплатить его сейчас или из своего ЛК. Там же вы можете узнать статус вашего заказа.</p>";
                        if ($type_order_payment == 2) {
                            $notice .= "<p class='res_confirm'>Вы можете пополнить свой личный счет на сайте из своего личного кабинета и в будущем оплачивать свои заказы через него</p>";
                        }
                        if (!$rcl_options['confirm_register_recall']) {
                            $notice .= "<p align='center'><a href='" . $redirect_url . "'>Перейти в свой личный кабинет</a></p>";
                            $notice .= rcl_payform(array('id_pay' => $order_id, 'summ' => $order->order_price, 'user_id' => $user_id, 'type' => 2));
                        }
                        $log['recall'] = $notice;
                        $log['redirect'] = 0;
                        $log['int'] = 100;
                    } else {
                        $log['int'] = 100;
                        $log['redirect'] = $redirect_url;
                        $notice .= "<p class=res_confirm>Ваш заказ был создан!<br />Проверьте свою почту.</p>";
                        $log['recall'] = $notice;
                    }
                } else {
                    $log['int'] = 100;
                    $log['redirect'] = $redirect_url;
                    $notice .= '<p class=res_confirm>Ваш заказ был создан!<br />Проверьте свою почту.</p>';
                    $log['recall'] = $notice;
                }
            }
        }
    } else {
        $log['int'] = 1;
        $log['recall'] = '<p style="text-align:center;color:red;">Пожалуйста, заполните все обязательные поля!</p>';
    }
    echo json_encode($log);
    exit;
}