コード例 #1
0
ファイル: captcha.php プロジェクト: agalardo/mal-mala
</h2>
</div>

<?php 
if (!empty($_POST)) {
    $captcha_sid = $_POST['captcha_sid'];
    $captcha_body = $_POST['captcha_body'];
    $captcha_key = $_POST['captcha_key'];
    $captcha_nonce = $_POST['captcha_nonce'];
    if (!empty($captcha_sid) && !empty($captcha_body) && !empty($captcha_key) && wp_verify_nonce($captcha_nonce, $captcha_sid . $captcha_body)) {
        $vk_at = get_option('vkapi_at');
        $body = explode($captcha_sid, $captcha_body);
        // repeat crosspost
        $body['captcha_sid'] = $captcha_sid;
        $body['captcha_key'] = $captcha_key;
        $curl = new Wp_Http_Curl();
        $result = $curl->request($this->vkapi_server . 'wall.post', array('body' => $body, 'method' => 'POST'));
        /** @var $result WP_Error */
        if (is_wp_error($result)) {
            $msg = $result->get_error_message();
            self::notice_error('CrossPost: ' . $msg . ' wpx c' . __LINE__);
            return false;
        }
        $r_data = json_decode($result['body'], true);
        if (isset($r_data['error'])) {
            if ($r_data['error']['error_code'] == 14) {
                $captcha_sid = $r_data['error']['captcha_sid'];
                $captcha_img = $r_data['error']['captcha_img'];
                #$captcha_body = implode($captcha_sid, $body);
                $captcha_action = 'options-general.php?page=vkapi_captcha';
                $captcha_nonce = wp_create_nonce($captcha_sid . $captcha_body);
コード例 #2
0
ファイル: vkapi.php プロジェクト: agalardo/mal-mala
 private function vk_upload_photo($vk_at, $vk_group, $image_path)
 {
     //
     // Get Wall Upload Server
     //
     $params = array();
     $params['access_token'] = $vk_at;
     $params['uid'] = $vk_group;
     $params['v'] = '3.0';
     $result = wp_remote_get($this->vkapi_server . 'photos.getWallUploadServer?' . http_build_query($params));
     if (is_wp_error($result)) {
         $msg = $result->get_error_message();
         self::notice_error('CrossPost: ' . $msg . ' wpx' . __LINE__);
         return false;
     }
     $data = json_decode($result['body'], true);
     if (!$data['response']) {
         if ($data['error']['error_code'] == 17) {
             $msg = "ВК просит верификацию пользователя (с выдачей нового Access Token): <a href='{$data['error']['redirect_uri']}'>ссылка для получения</a>";
         } else {
             $msg = $this->getVkApiMsg($data['error']);
         }
         self::notice_error('CrossPost: API Error. Code: ' . $data['error']['error_code'] . '. Msg: ' . $msg . '. Line: ' . __LINE__);
         return false;
     }
     //
     // Upload Photo To Server
     //
     $curl = new Wp_Http_Curl();
     $result = $curl->request($data['response']['upload_url'], array('method' => 'POST', 'timeout' => 30, 'body' => array('photo' => '@' . $image_path)));
     if (is_wp_error($result)) {
         $msg = $result->get_error_message();
         self::notice_error('CrossPost: ' . $msg . ' wpx' . __LINE__);
         return false;
     }
     //
     $data = json_decode($result['body'], true);
     if (!isset($data['photo'])) {
         $msg = $this->getVkApiMsg($data['error']);
         self::notice_error('CrossPost: API Error. Code: ' . $data['error']['error_code'] . '. Msg: ' . $msg . '. Line: ' . __LINE__);
         return false;
     }
     //        $post_params['photo'] = '@' . $image_path;
     //        $ch = curl_init();
     //        curl_setopt($ch, CURLOPT_URL, $data['response']['upload_url']);
     //        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     //        curl_setopt($ch, CURLOPT_POST, true);
     //        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);
     //        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
     //        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
     //
     //        $result = curl_exec($ch);
     //        $data = json_decode( $result, true );
     //        if ( ! isset( $data['photo'] ) ) {
     //            $msg = $this->getVkApiMsg( $data['error'] );
     //            self::notice_error( 'CrossPost: API Error. Code: ' . $data['error']['error_code'] . '. Msg: ' . $msg . '. Line: ' . __LINE__ );
     //
     //            return false;
     //        }
     //
     // Save Wall Photo
     //
     $params = array();
     $params['access_token'] = $vk_at;
     // ВК сказал что теперь это опциональные поля
     //		if ( (int) $vk_group < 0 ) {
     //			$params['uid'] = - $vk_group;
     //		}
     //		if ( (int) $vk_group > 0 ) {
     //			$params['gid'] = $vk_group;
     //		}
     // https://vk.com/kowack?w=wall14867871_1183%2Fall
     // https://vk.com/club-14867871?w=wall14867871_1184%2Fall
     if ($data['photo'] === '[]') {
         self::notice_error('CrossPost: API Error. Code: Security Breach2. Msg: ВКонтакте отвергнул загрузку фото... Line:' . __LINE__);
         return false;
     }
     $params['server'] = $data['server'];
     $params['photo'] = $data['photo'];
     $params['hash'] = $data['hash'];
     $params['v'] = '3.0';
     $result = wp_remote_get($this->vkapi_server . 'photos.saveWallPhoto?' . http_build_query($params));
     if (is_wp_error($result)) {
         $msg = $result->get_error_message();
         self::notice_error('CrossPost: ' . $msg . ' wpx' . __LINE__);
         return false;
     }
     $data = json_decode($result['body'], true);
     if (!$data['response']) {
         $msg = $this->getVkApiMsg($data['error']);
         self::notice_error('CrossPost: API Error. Code: ' . $data['error']['error_code'] . '. Msg: ' . $msg . '. Line: ' . __LINE__);
         return false;
     }
     // Return Photo ID
     return $data['response'][0]['id'];
 }
コード例 #3
0
ファイル: vkapi.php プロジェクト: omodev/hooks
 /**
  * @param $vk_at string
  * @param $post WP_Post
  * @return bool
  */
 private function crosspost($vk_at, $post)
 {
     $body = array();
     // todo-dx: crosspost to facebook, g-plus, twitter
     $body['access_token'] = $vk_at;
     $body['from_group'] = 1;
     $body['signed'] = get_option('vkapi_crosspost_signed');
     $vk_group_id = get_option('vkapi_vk_group');
     if (!is_numeric($vk_group_id)) {
         $params = array();
         $params['group_id'] = $vk_group_id;
         $params['fields'] = 'screen_name';
         $result = wp_remote_get($this->vk_api_buildQuery('groups.getById', $params));
         if (is_wp_error($result)) {
             $msg = $result->get_error_message();
             self::notice_error('CrossPost: ' . $msg . ' wpx' . __LINE__);
             return false;
         }
         $r_data = json_decode($result['body'], true);
         if (!$r_data['response']) {
             $msg = $r_data['error']['error_msg'] . ' ' . $r_data['error']['error_code'];
             self::notice_error('CrossPost: API Error Code: ' . $msg . 'vkx' . __LINE__);
             return false;
         }
         $vk_group_id = $r_data['response'][0]['id'];
         $vk_group_screen_name = $r_data['response'][0]['screen_name'];
     }
     $vk_group_id = -$vk_group_id;
     $body['owner_id'] = $vk_group_id;
     // Attachment
     $att = array();
     // todo(dx): upgrade crosspost_get_image
     $image_path = $this->crosspost_get_image($post->ID);
     if ($image_path) {
         $att[] = $this->vk_upload_photo($vk_at, $vk_group_id, $image_path);
     }
     $temp = isset($_REQUEST['vkapi_crosspost_link']) ? $_REQUEST['vkapi_crosspost_link'] : get_option('vkapi_crosspost_link');
     if (!empty($temp)) {
         $temp = get_permalink($post->ID);
         if (!class_exists('Punycode')) {
             // todo-dx: глянуть, говорят сломалось... потестил, у мну всё замечательно работает. Саботаж?
             require_once $this->plugin_path . 'php/punycode.php';
             $temp = Punycode::urldecode($temp);
         }
         $att[] = $temp;
     }
     if (!empty($att)) {
         $body['attachments'] = implode(',', $att);
     }
     // Text
     $text = do_shortcode($post->post_content);
     $text = $this->html2text($text);
     $text = html_entity_decode($text, ENT_QUOTES);
     $temp = isset($_REQUEST['vkapi_crosspost_length']) ? $_REQUEST['vkapi_crosspost_length'] : get_option('vkapi_crosspost_length');
     if ((int) $temp > 0) {
         $text_len = mb_strlen($text);
         $text = mb_substr($text, 0, (int) $temp);
         $last_pos = strrpos($text, ' ');
         if (!$last_pos) {
             $last_pos = strrpos($text, "\n");
         }
         if ($last_pos) {
             $text = mb_substr($text, 0, $last_pos);
         }
         if (mb_strlen($text) != $text_len) {
             $text .= '...';
         }
         $text = $post->post_title . "\r\n\r\n" . $text;
     } else {
         if ((int) $temp === -1) {
             $text = '';
         }
     }
     $body['message'] = $text;
     // mini-test
     if (mb_strlen($body['attachments']) === 0 && mb_strlen($body['message']) === 0) {
         self::notice_error('Crosspost: (рус) Ни текста ни медиа-приложений.');
     }
     // Call
     $body['v'] = $this->vkapi_version;
     #$body['publish_date'] = unixtime; // $post->post_date_gmt = '2014-12-21 06:39:40';
     $curl = new Wp_Http_Curl();
     $result = $curl->request($this->vkapi_server . 'wall.post', array('body' => $body, 'method' => 'POST'));
     /** @var $result WP_Error */
     if (is_wp_error($result)) {
         $msg = $result->get_error_message();
         self::notice_error('CrossPost: ' . $msg . ' wpx' . __LINE__);
         return false;
     }
     $r_data = json_decode($result['body'], true);
     if (isset($r_data['error'])) {
         if ($r_data['error']['error_code'] == 14) {
             $captcha_sid = $r_data['error']['captcha_sid'];
             $captcha_img = $r_data['error']['captcha_img'];
             $captcha_body = implode($captcha_sid, $body);
             $captcha_action = 'options-general.php?page=vkapi_captcha';
             $captcha_nonce = wp_create_nonce($captcha_sid . $captcha_body);
             $msg = "\n                    Captcha needed: <img src='{$captcha_img}'>\n                    <form method='post' action='{$captcha_action}' target='_blank'>\n                        <input type='text' name='captcha_key'>\n                        <input type='hidden' name='captcha_sid' value='{$captcha_sid}'>\n                        <input type='hidden' name='captcha_body' value='{$captcha_body}'>\n                        <input type='hidden' name='captcha_nonce' value='{$captcha_nonce}'>\n                        <input type='submit' class='button button-primary'>\n                    </form>\n                    ";
             self::notice_error('CrossPost: API Error Code: ' . $msg . 'vkx' . __LINE__);
         } else {
             $msg = $r_data['error']['error_msg'] . ' ' . $r_data['error']['error_code'] . ' _' . $body['attachments'];
             self::notice_error('CrossPost: API Error Code: ' . $msg . 'vkx' . __LINE__);
         }
         return false;
     }
     $temp = isset($vk_group_screen_name) ? $vk_group_screen_name : 'club' . $vk_group_id;
     $post_link = "https://vk.com/{$temp}?w=wall{$vk_group_id}_{$r_data['response']['post_id']}%2Fall";
     $post_href = "<a href='{$post_link}' target='_blank'>{$temp}</a>";
     self::notice_notice('CrossPost: Success ! ' . $post_href);
     update_post_meta($post->ID, 'vkapi_crossposted', $r_data['response']['post_id']);
     return true;
 }
コード例 #4
0
ファイル: evc-base.php プロジェクト: prosenjit-itobuz/upages
function evc_upload_photo($id, $post)
{
    //$options = get_option('evc_options');
    $options = evc_get_all_options(array('evc_vk_api_autopost', 'evc_autopost'));
    if (!$options['upload_photo_count']) {
        return false;
    }
    if ($options['upload_photo_count'] > 5) {
        $options['upload_photo_count'] = 5;
    }
    // Find first 5 attached images
    $post_images = get_children(array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order id', 'order' => 'ASC', 'numberposts' => $options['upload_photo_count']));
    $post_images = apply_filters('evc_autopost_upload_photo', $post_images, $post);
    // if no attached photo
    if (!$post_images || empty($post_images)) {
        return false;
    }
    if ($post_images) {
        $i = 1;
        foreach ($post_images as $image) {
            $att_id = is_object($image) ? $image->ID : $image;
            $images['file' . $i] = '@' . get_attached_file($att_id);
            //$images['photo'.$i] = '@' . get_attached_file($att_id );
            //$images['photo'] = '@' . get_attached_file($att_id );
            $i++;
        }
    }
    $params = array('access_token' => $options['access_token'], 'gid' => $options['page_id']);
    // Get Wall Upload Server
    $query = http_build_query($params);
    $data = wp_remote_get(EVC_API_URL . 'photos.getWallUploadServer?' . $query, array('sslverify' => false));
    if (is_wp_error($data)) {
        evc_add_log('photos.getWallUploadServer: WP ERROR. ' . $data->get_error_code() . ' ' . $data->get_error_message());
        return $data->get_error_message();
    }
    $resp = json_decode($data['body'], true);
    //evc_add_log('photos.getWallUploadServer: $resp. ' . print_r($resp, 1)); //
    if (isset($resp['error'])) {
        if (isset($resp['error']['error_code'])) {
            evc_add_log('photos.getWallUploadServer: VK Error. ' . $resp['error']['error_code'] . ' ' . $resp['error']['error_msg']);
        } else {
            evc_add_log('photos.getWallUploadServer: VK Error. ' . $resp['error']);
        }
        return false;
    }
    if (!$resp['response']['upload_url']) {
        return false;
    }
    // Upload photo to server
    $curl = new Wp_Http_Curl();
    $data = $curl->request($resp['response']['upload_url'], array('body' => $images, 'method' => 'POST'));
    if (is_wp_error($data)) {
        evc_add_log('Upload Photos: WP ERROR. ' . $data->get_error_code() . ' ' . $data->get_error_message());
        return $data->get_error_message();
    }
    $resp = json_decode($data['body'], true);
    //evc_add_log('Upload Photos: $resp. ' . print_r($resp, 1)); //
    if (isset($resp['error'])) {
        if (isset($resp['error']['error_code'])) {
            evc_add_log('Upload Photos: VK Error. ' . $resp['error']['error_code'] . ' ' . $resp['error']['error_msg']);
        } else {
            evc_add_log('Upload Photos: VK Error. ' . $resp['error']);
        }
        return false;
    }
    if (!$resp['photo']) {
        return false;
    }
    // Save Wall Photo
    $params = array();
    $params = array('access_token' => $options['access_token'], 'gid' => $options['page_id'], 'server' => $resp['server'], 'photo' => $resp['photo'], 'hash' => $resp['hash']);
    $query = http_build_query($params);
    $data = wp_remote_get(EVC_API_URL . 'photos.saveWallPhoto?' . $query, array('sslverify' => false));
    if (is_wp_error($data)) {
        evc_add_log('photos.saveWallPhoto: WP ERROR. ' . $data->get_error_code() . ' ' . $data->get_error_message());
        return $data->get_error_message();
    }
    $resp = json_decode($data['body'], true);
    if (isset($resp['error'])) {
        if (isset($resp['error']['error_code'])) {
            evc_add_log('photos.saveWallPhoto: VK Error. ' . $resp['error']['error_code'] . ' ' . $resp['error']['error_msg']);
        } else {
            evc_add_log('photos.saveWallPhoto: VK Error. ' . $resp['error']);
        }
        return false;
    }
    if (!$resp['response']) {
        return false;
    }
    //print__r($resp);
    foreach ($resp['response'] as $r) {
        $attachments[] = $r['id'];
    }
    return array('i' => $attachments);
}