PluginProbe
Lasso Lite – Affiliate Link Manager & Product Displays / 149
Lasso Lite – Affiliate Link Manager & Product Displays v149
158 157 155 156 154 153 152 151 150 149 148 trunk 0.9.9 104 105 106 107 108 109 110 111 112 113 114 115 All 57 releases
simple-urls / pages / groups / class-ajax.php

class-ajax.php in Lasso Lite – Affiliate Link Manager & Product Displays 149, at pages/groups/class-ajax.php

163 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Group - Ajax.
4 *
5 * @package Pages
6 */
7
8 namespace LassoLite\Pages\Groups;
9
10 use LassoLite\Admin\Constant;
11 use LassoLite\Classes\Affiliate_Link;
12 use LassoLite\Classes\Enum;
13 use LassoLite\Classes\Group;
14 use LassoLite\Classes\Helper;
15 use LassoLite\Classes\Page;
16 use LassoLite\Classes\SURL;
17
18 /**
19 * Lasso Group - Ajax.
20 */
21 class Ajax {
22 /**
23 * Declare "Lasso ajax requests" to WordPress.
24 */
25 public function register_hooks() {
26 add_action( 'wp_ajax_lasso_lite_store_category', array( $this, 'lasso_lite_store_category' ) );
27 add_action( 'wp_ajax_lasso_lite_group_get_list', array( $this, 'lasso_lite_group_get_list' ) );
28 add_action( 'wp_ajax_lasso_lite_group_get_links', array( $this, 'lasso_lite_group_get_links' ) );
29 add_action( 'wp_ajax_lasso_lite_delete_category', array( $this, 'lasso_lite_delete_category' ) );
30 }
31
32 /**
33 * Add or update a group
34 */
35 public function lasso_lite_store_category() {
36 Helper::verify_access_and_nonce();
37
38 $data = Helper::POST(); // phpcs:ignore
39
40 if ( 0 === (int) $data['cat_id'] ) {
41 $result = wp_insert_term(
42 $data['cat_name'], // ? the term
43 Constant::LASSO_CATEGORY, // ? the taxonomy
44 array(
45 'description' => $data['cat_desc'],
46 )
47 );
48 } else {
49 $result = wp_update_term(
50 $data['cat_id'], // ? the term
51 Constant::LASSO_CATEGORY, // ? the taxonomy
52 array(
53 'name' => $data['cat_name'],
54 'description' => $data['cat_desc'],
55 )
56 );
57 }
58
59 if ( $result && ! is_wp_error( $result ) ) {
60 $result = array(
61 'status' => 1,
62 'link' => Page::get_page_url( Helper::add_prefix_page( Enum::PAGE_GROUP_DETAIL ) ) . '&post_id=' . $result['term_id'] . '&subpage=' . Enum::SUB_PAGE_GROUP_DETAIL,
63 'data' => $data,
64 'cat_id' => $result['term_id'] ?? 0,
65 );
66 $result['msg'] = 'Group is saved.';
67 } else {
68 $result = array(
69 'status' => 0,
70 'link' => Page::get_page_url( Helper::add_prefix_page( Enum::PAGE_GROUP_DETAIL ) ),
71 'data' => $data,
72 'cat_id' => 0,
73 );
74 $result['msg'] = 'Unexpected error!';
75 }
76
77 wp_send_json_success( $result );
78 }
79
80 /**
81 * Get list links linked to group
82 */
83 public function lasso_lite_group_get_list() {
84 Helper::verify_access_and_nonce();
85
86 $post = Helper::POST();
87 $page = $post['page'] ?? 1;
88 $keyword = $post['keyword'] ?? '';
89 $list = Group::get_list( $page, $keyword, '1=1', Enum::LIMIT_ON_PAGE );
90 $output = array();
91 foreach ( $list as $group ) {
92 $output[] = array(
93 'title' => esc_html( $group->get_post_title() ),
94 'description' => esc_html( $group->get_description() ),
95 'count' => intval( $group->get_count() ),
96 'link_detail' => esc_html( $group->get_link_detail() ),
97 );
98 }
99
100 $data['output'] = $output;
101 $data['total'] = Group::total();
102 $data['limit_on_page'] = Enum::LIMIT_ON_PAGE;
103 $data['page'] = $page;
104
105 wp_send_json_success( $data );
106 }
107
108 /**
109 * Get urls of group
110 */
111 public function lasso_lite_group_get_links() {
112 Helper::verify_access_and_nonce();
113
114 $post = Helper::POST();
115 $group_id = $post['group_id'] ?? '';
116 $group = Group::get_by_id( $group_id );
117 if ( $group ) {
118 $urls = SURL::get_urls_by_group( $group );
119 $output = array();
120 foreach ( $urls as $url ) {
121 $lasso_url = Affiliate_Link::get_lasso_url( $url->get_id() );
122 $output[] = array(
123 'post_id' => intval( $url->get_id() ),
124 'image_src' => esc_html( $lasso_url->image_src ),
125 'link_url_detail' => esc_html( $lasso_url->edit_link ),
126 'link_name' => esc_html( $lasso_url->name ),
127 'permalink' => esc_html( $lasso_url->permalink ),
128 );
129 }
130 $data['output'] = $output;
131 wp_send_json_success( $data );
132 }
133 }
134
135 /**
136 * Delete group
137 */
138 public function lasso_lite_delete_category() {
139 Helper::verify_access_and_nonce();
140
141 $post = Helper::POST(); // phpcs:ignore
142 $post_id = $post['cat_id'];
143
144 wp_delete_term( $post_id, Constant::LASSO_CATEGORY );
145
146 $redirect_link = add_query_arg(
147 array(
148 'post_type' => Constant::LASSO_POST_TYPE,
149 'page' => Helper::add_prefix_page( Enum::PAGE_GROUPS ),
150 ),
151 admin_url( 'edit.php' )
152 );
153
154 wp_send_json_success(
155 array(
156 'data' => 1,
157 'post' => $post,
158 'redirect_link' => $redirect_link,
159 )
160 );
161 }
162 }
163