function rcl_apply_group_request() { global $rcl_group, $user_ID; $user_id = intval($_POST['user_id']); $apply = intval($_POST['apply']); $group_id = intval($_POST['group_id']); $rcl_group = rcl_get_group($group_id); if ($rcl_group->admin_id != $user_ID) { return false; } $requests = rcl_get_group_option($group_id, 'requests_group_access'); $key = array_search($user_id, $requests); if (!$requests || false === $key) { return false; } unset($requests[$key]); if ($apply) { $subject = __('Request access to the group approved!', 'wp-recall'); $textmail = ' <h3>Добро пожаловать в группу "' . $rcl_group->name . '"!</h3> <p>Поздравляем, ваш запрос на доступ к приватной группе на сайте "' . get_bloginfo('name') . '" был одобрен.</p> <p>Теперь вы можете принимать участие в жизни этой группы как полноценный ее участник.</p> <p>Вы можете перейти в группу прямо сейчас, перейдя по ссылке:</p> <p>' . get_term_link((int) $group_id, 'groups') . '</p>'; rcl_group_add_user($user_id, $group_id); $log['result'] = '<span class="success">' . __('The request was accepted', 'wp-recall') . '</span>'; } else { $log['result'] = '<span class="error">' . __('Request rejected', 'wp-recall') . '</span>'; $subject = __('The request to access the group rejected.', 'wp-recall'); $textmail = ' <p>Сожалеем, но ваш запрос на доступ к приватной группе "' . $rcl_group->name . '" на сайте "' . get_bloginfo('name') . '" был отклонен ее админом.</p>'; } $user_email = get_the_author_meta('user_email', $user_id); rcl_mail($user_email, $subject, $textmail); rcl_update_group_option($group_id, 'requests_group_access', $requests); $log['user_id'] = $user_id; echo json_encode($log); exit; }
function rcl_group_avatar_upload() { require_once ABSPATH . "wp-admin" . '/includes/image.php'; require_once ABSPATH . "wp-admin" . '/includes/file.php'; require_once ABSPATH . "wp-admin" . '/includes/media.php'; global $user_ID, $rcl_options, $rcl_avatar_sizes; if (!$user_ID) { return false; } $upload = array(); $group_id = $_POST['group_id']; $maxsize = $rcl_options['avatar_weight'] ? $rcl_options['avatar_weight'] : ($maxsize = 2); $tmpname = current_time('timestamp') . '.jpg'; //print_r($_FILES['uploadfile']);exit; if ($_FILES['uploadfile']) { foreach ($_FILES['uploadfile'] as $key => $data) { $upload['file'][$key] = $data; } } $filename = $upload['file']['name']; $mime = explode('/', $upload['file']['type']); $tps = explode('.', $upload['file']['name']); $cnt = count($tps); if ($cnt > 2) { $type = $mime[$cnt - 1]; $filename = str_replace('.', '', $filename); $filename = str_replace($type, '', $filename) . '.' . $type; } $filename = str_replace(' ', '', $filename); $mb = $upload['file']['size'] / 1024 / 1024; if ($mb > $maxsize) { $res['error'] = __('Size over', 'wp-recall'); echo json_encode($res); exit; } $ext = explode('.', $filename); if ($mime[0] != 'image') { $res['error'] = __('The file is not an image', 'wp-recall'); echo json_encode($res); exit; } $image = wp_handle_upload($_FILES['uploadfile'], array('test_form' => FALSE)); if ($image['file']) { if ($avatar_id = rcl_get_group_option($group_id, 'avatar_id')) { wp_delete_post($avatar_id, true); } $attachment = array('post_mime_type' => $image['type'], 'post_title' => 'image_group_' . $group_id, 'post_content' => $image['url'], 'guid' => $image['url'], 'post_parent' => '', 'post_status' => 'inherit'); $imade_id = wp_insert_attachment($attachment, $image['file']); $attach_data = wp_generate_attachment_metadata($imade_id, $image['file']); wp_update_attachment_metadata($imade_id, $attach_data); rcl_update_group_option($group_id, 'avatar_id', $imade_id); } else { $res['error'] = 'Ошибка загрузки!'; echo json_encode($res); exit; } $res['avatar_url'] = $image['url']; $res['success'] = __('Avatar has successfully loaded', 'wp-recall'); echo json_encode($res); exit; }
function rcl_update_group_widgets($group_id, $args) { global $rcl_group_widgets, $rcl_group_area; //print_r($_POST);exit; $zones = array(); $options = array(); foreach ($args as $widget) { if (isset($widget['content'])) { $key = $widget['content']; continue; } foreach ($widget['widget'] as $widget_id => $data) { if ($data['id']) { $zones[$key][] = $widget_id; } if (isset($data['options'])) { $optionsData[$widget_id][] = $data['options']; } } } if ($optionsData) { foreach ($optionsData as $id_widget => $opts) { foreach ($opts as $k => $option) { foreach ($option as $key => $val) { $options[$id_widget][$key] = $val; } } } } //print_r($options);exit; if ($zones) { rcl_update_group_option($group_id, 'group_widgets', $zones); } else { rcl_delete_group_option($group_id, 'group_widgets'); } if ($options) { rcl_update_group_option($group_id, 'widgets_options', $options); } else { rcl_delete_group_option($group_id, 'widgets_options'); } }
function rcl_group_add_request_for_membership($user_id, $group_id) { $rcl_group = rcl_get_group($group_id); $requests = rcl_get_group_option($group_id, 'requests_group_access'); $requests[] = $user_id; rcl_update_group_option($group_id, 'requests_group_access', $requests); $subject = __('Request for access to the group', 'wp-recall'); $textmail = ' <p>Вы получили новый запрос на доступ к администрируемой вами группе "' . $rcl_group->name . '" на сайте "' . get_bloginfo('name') . '".</p> <h3>Информация о пользователе:</h3> <p><b>Профиль пользователя</b>: <a href="' . get_author_posts_url($user_id) . '">' . get_the_author_meta('display_name', $user_id) . '</a></p> <p>Вы можете одобрить или отклонить запрос перейдя по ссылке:</p> <p>' . get_term_link((int) $group_id, 'groups') . '</p>'; $admin_email = get_the_author_meta('user_email', $rcl_group->admin_id); rcl_mail($admin_email, $subject, $textmail); }