За последние 24 часа нас посетили 23946 программистов и 1722 робота. Сейчас ищут 1915 программистов ...

Доработка кода кросспостинга. (сайт – ВК)

Тема в разделе "PHP Free-Lance", создана пользователем zbiblebrox, 14 авг 2017.

  1. zbiblebrox

    zbiblebrox Новичок

    С нами с:
    14 авг 2017
    Сообщения:
    1
    Симпатии:
    0
    Уважаемые участники форума.
    Нужна помощь в допиливании плагина.

    На сайте реализован кросспостинг в группу социальной сети ВК, плагином.
    Нужно дописать код плагина, что бы при кросспостинге к созданному посту автоматически прикреплялся опрос. (Опрос всегда с одинаковыми вариантами ответов и вопросом).

    Сложность в том, что создание опроса происходит в 2 этапа обращения к API:
    1. Создание опроса на стороне ВКонтакте, с присвоением ему ИД
    2. Прикрепление опроса к посту.

    Если последний этап я еще смогу самостоятельно хоть и через "ж" но прикрутить к коду. То справиться с двумя этапами - для меня это просто темный лес.

    Вот текущий код:
    PHP:
    1. <?php  
    2. $nxs_snapAPINts[] = array('code'=>'VK', 'lcode'=>'vk', 'name'=>'VK.Com');
    3.  
    4. if (!class_exists("nxs_class_SNAP_VK")) { class nxs_class_SNAP_VK {
    5.    
    6.     var $ntCode = 'VK';
    7.     var $ntLCode = 'vk';    
    8.    
    9.     function doPost($options, $message){ if (!is_array($options)) return false; $out = array();
    10.       foreach ($options as $ii=>$ntOpts) $out[$ii] = $this->doPostToNT($ntOpts, $message);
    11.       return $out;
    12.     }  
    13.     function nxs_uplImgtoVK($imgURL, $options){
    14.       $postUrl = 'https://api.vk.com/method/photos.getWallUploadServer?gid='.(str_replace('-','',$options['pgIntID'])).'&access_token='.$options['appAuthToken'];
    15.       $response = nxs_remote_get($postUrl);  if(is_nxs_error($response)) return "Error: URL:".$postUrl." | ". print_r($response, true); $thumbUploadUrl = $response['body'];  
    16.       if (!empty($thumbUploadUrl)) { $thumbUploadUrlObj = json_decode($thumbUploadUrl); $VKuploadUrl = $thumbUploadUrlObj->response->upload_url; }   // prr($thumbUploadUrlObj); echo "UURL=====-----";
    17.       if (!empty($VKuploadUrl)) {  
    18.         // if (stripos($VKuploadUrl, '//pu.vkontakte.ru/c')!==false) { $c = 'c'.CutFromTo($VKuploadUrl, '.ru/c', '/'); $VKuploadUrl = str_ireplace('/pu.','/'.$c.'.',str_ireplace($c.'/','',$VKuploadUrl)); }
    19.         $remImgURL = urldecode($imgURL); $urlParced = pathinfo($remImgURL); $remImgURLFilename = $urlParced['basename']; $imgData = nxs_remote_get($remImgURL);
    20.         if(is_nxs_error($imgData) || empty($imgData['body']) || (!empty($imgData['headers']['content-length']) && (int)$imgData['headers']['content-length']<200) ||
    21.           $imgData['headers']['content-type'] == 'text/html' ||  $imgData['response']['code'] == '403' ) return 'Could not get image ( '.$remImgURL.' ), will post without it - '.print_r($imgData, true); else $imgData = $imgData['body'];      
    22.         $tmp=array_search('uri', @array_flip(stream_get_meta_data($GLOBALS[mt_rand()]=tmpfile())));
    23.         if (!is_writable($tmp)) { $msg = "Can't upload image to VK. Your temporary folder or file (file - ".$tmp.") is not writable.";
    24.           if (function_exists('wp_upload_dir')) { $uDir = wp_upload_dir(); $tmp = tempnam($uDir['path'], "nx");
    25.             if (!is_writable($tmp)) return $msg." Your UPLOADS folder or file (file - ".$tmp.") is not writable. ";
    26.           } else return $msg;
    27.         } rename($tmp, $tmp.='.png'); register_shutdown_function(create_function('', "unlink('{$tmp}');")); file_put_contents($tmp, $imgData);
    28.         $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $VKuploadUrl); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    29.         global $nxs_skipSSLCheck; if ($nxs_skipSSLCheck===true) curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);      
    30.         if (function_exists('curl_file_create')) { $file  = curl_file_create($tmp); curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => $file)); }
    31.           else curl_setopt($ch, CURLOPT_POSTFIELDS, array('photo' => '@' . $tmp));
    32.         $response = curl_exec($ch); $errmsg = curl_error($ch); curl_close($ch); $uploadResultObj = json_decode($response); // prr($response); //prr($uploadResultObj);    
    33.         if (!empty($uploadResultObj->server) && !empty($uploadResultObj->photo) && !empty($uploadResultObj->hash)) {
    34.           $postUrl = 'https://api.vk.com/method/photos.saveWallPhoto?server='.$uploadResultObj->server.'&photo='.$uploadResultObj->photo.'&hash='.$uploadResultObj->hash.'&gid='.(str_replace('-','',$options['pgIntID'])).'&access_token='.$options['appAuthToken'];
    35.           $response = nxs_remote_get($postUrl);  if(is_nxs_error($response)) return "Error: URL:".$postUrl." | ". print_r($response, true);        
    36.           $resultObject = json_decode($response['body']); //prr($resultObject);
    37.           if (isset($resultObject) && isset($resultObject->response[0]->id)) { return $resultObject->response[0]; } else { return 'Image Upload Error'; }
    38.         }
    39.       }
    40.     }
    41.     function doPostToNT($options, $message){ $badOut = array('pgID'=>'', 'isPosted'=>0, 'pDate'=>date('Y-m-d H:i:s'), 'Error'=>''); $atts = array(); //prr($message); die();
    42.       //## Check settings
    43.       if (!is_array($options)) { $badOut['Error'] = 'No Options'; return $badOut; }    
    44.       if (empty($options['imgSize'])) $options['imgSize'] = '';
    45.       if (!isset($options['appAuthToken']) || trim($options['appAuthToken'])=='')  { $badOut['Error'] = 'Not Configured'; return $badOut; }                
    46.       //## Format
    47.       if (!empty($message['pText'])) $msg = $message['pText']; else $msg = nxs_doFormatMsg($options['msgFormat'], $message); $urlToGo = (!empty($message['url']))?$message['url']:'';    
    48.       $postType = $options['postType']; //$link = urlencode($link); $desc = urlencode(substr($msg, 0, 500));      
    49.       if (isset($message['imageURL'])) $imgURL = trim(nxs_getImgfrOpt($message['imageURL'], $options['imgSize'])); else $imgURL = '';
    50.       $msgOpts = array(); $msgOpts['uid'] =  $options['pgID']; // if ($link!='') $msgOpts['link'] = $link;          
    51.       if (!empty($message['videoURL']) && $postType=="I") { $postType='A';  $urlToGo=$message['videoURL']; $msgOpts['vID'] = $vids[0]; }
    52.       if ($postType=='I' && trim($imgURL)=='') $postType='T';  $msgOpts['type'] = $postType;  
    53.       if ($postType=='I') { $imgUpld = $this->nxs_uplImgtoVK($imgURL, $options); if (is_object($imgUpld)) { $imgID = $imgUpld->id; $atts[] = $imgID; } else  $badOut['Error'] .= '-=IMG ERROR=- '.print_r($imgUpld, true); }
    54.      
    55.       if($postType=='A') $atts[] = $urlToGo; if (is_array($atts)) $atts = implode(',', $atts); $postUrl = 'https://api.vk.com/method/wall.post'; $msg = strip_tags($msg);
    56.       $postArr = array('owner_id'=>$options['pgIntID'], 'access_token'=>$options['appAuthToken'], 'from_group'=>'1', 'message'=>$msg, 'attachment'=>$atts);      
    57.       $hdrsArr =  nxs_getNXSHeaders('https://api.vk.com',true); $advSet = nxs_mkRemOptsArr($hdrsArr, '', $postArr); $response = nxs_remote_post($postUrl, $advSet); // prr($advSet); prr($response);      
    58.       if ( is_nxs_error($response) || (is_object($response) && (isset($response->errors))) || (is_array($response) && stripos($response['body'],'"error":')!==false )) {  $badOut['Error'] .= 'Error: '. print_r($response, true); }
    59.         else { $respJ = json_decode($response['body'], true);  $ret = $options['pgIntID'].'_'.$respJ['response']['post_id']; }
    60.       if (isset($ret) && $ret!='') return array('postID'=>$ret, 'isPosted'=>1, 'postURL'=>'http://vk.com/wall'.$ret, 'pDate'=>date('Y-m-d H:i:s'), 'msg'=>$badOut['Error']);      
    61.       return $badOut;    
    62.    }  
    63. }}
    64. ?>
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    а не код. Врятли за это кто - нибудь возьмется
     
    xaker01 нравится это.
  3. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Я вроде с сервера с API VK работаю не первый день, но это чет пздц. Я вообще не понимаю ничего.

    Перепишу за 5к весь этот код с нуля (по вашему ТЗ, а не с этого кода) и прикреплю опрос к каждому посту.
     
  4. Михаил Запаленов

    С нами с:
    2 авг 2017
    Сообщения:
    120
    Симпатии:
    1
    Брат тут какая та херня ничего не понятно, ты бы не экономил бы, отвалил бы нормальному прогеру 20-30к он тебе на ООП MVC все нормально бы сделал. Никто в этом коде копаться не будет.