Пример #1
0
function uploadImg($photosPost)
{
    $dotenv = new \Dotenv\Dotenv(__DIR__ . '/../');
    $dotenv->load();
    $token = $_ENV['VK_ACCESS_TOKEN'];
    $user_uid = $_ENV['USER_UID'];
    $vk = \getjump\Vk\Core::getInstance()->apiVersion('5.5')->setToken($token);
    $url = 'https://api.vk.com/method/photos.getWallUploadServer?group_id=101646894&v=5.5&access_token=' . $token;
    $request = get_curl($url);
    $data = json_decode($request);
    $link = $data->response->upload_url;
    $photo = explode('/||/', $photosPost);
    $group_id = '101646894';
    $postParams = array();
    $index = 0;
    for ($i = 1; $i < count($photo); $i++) {
        $extention = explode(".", basename($photo[$i]));
        if ($extention[1] == 'gif') {
            echo 'You can\'t upload GIF';
            die;
        }
        $index++;
        $path = __DIR__ . "/../images/" . basename($photo[$i]);
        file_put_contents($path, file_get_contents($photo[$i]));
        $postParams["file" . $index] = "@" . $path;
    }
    if ($index < 7) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $link);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        @curl_setopt($ch, CURLOPT_POSTFIELDS, $postParams);
        $response = curl_exec($ch);
        $photoParams = json_decode($response);
        $photo = $photoParams->photo;
        $server = $photoParams->server;
        $url = 'https://api.vk.com/method/photos.saveWallPhoto?group_id=' . $group_id . '&v=5.5&photo=' . $photo . '&server=' . $server . '&hash=' . $photoParams->hash . '&access_token=' . $token;
        $an = get_curl($url);
        $save = json_decode($an)->response;
        $attachments = "";
        for ($i = 0; $i < count($save); $i++) {
            $attachments = $attachments . "photo" . $user_uid . "_" . $save[$i]->id . ',';
        }
        $url = 'https://api.vk.com/method/wall.post?owner_id=-' . $group_id . '&from_group=1&attachments=' . $attachments . '&access_token=' . $token;
        $an = get_curl($url);
        if (!isset(\GuzzleHttp\json_decode($an)->response)) {
            echo "Unknown error";
            return false;
        } else {
            echo "Images is successfully uploaded";
            return true;
        }
    } else {
        echo "ERROR! You upload more than 6 images OR all your pics are GIFs !";
        return false;
    }
}
 private function getVkPhotoData($fileName)
 {
     $vkApi = Vk\Core::getInstance()->apiVersion('5.5')->setToken('b4320e4b95f057e4779fc2eb5b56f0d39366ace73099cde01515bf02c3869c1d1c70437d80ae61edad3a9');
     $vkPhotoUploadURL = $vkApi->request('ads.getUploadURL', ['ad_format' => 2])->getResponse();
     if ($vkPhotoUploadURL) {
         $guzzle = new \GuzzleHttp\Client();
         return $guzzle->post($vkPhotoUploadURL, ['body' => ['file' => fopen($fileName, 'r')]])->json(['object' => true]);
     }
     return false;
 }
Пример #3
0
 /**
  * We wanna send our current VkJs to Vk execute
  * @return RequestTransaction|Api
  */
 public function execute()
 {
     $execute = $this->dataString;
     if ($this->requests) {
         foreach ($this->requests as $request) {
             $execute .= ',' . $request->dataString;
         }
         $execute = '[' . $execute . ']';
         if (!$this->callback && !$this->vk->jsCallback) {
             $this->vk->jsCallback = true;
             $oldCallback = $this->vk->callback;
             $this->callback = function ($data) use(&$oldCallback) {
                 $std = new stdClass();
                 $std->response = $data;
                 return new Api($std, $oldCallback);
             };
             $this->vk->createAs($this->callback);
         }
     }
     return $this->vk->request('execute', ['code' => sprintf('return %s;', $execute)]);
 }
Пример #4
0
 public function testCore()
 {
     $x = function () {
         return 'test';
     };
     $vk = \getjump\Vk\Core::getInstance()->apiVersion('5.5')->createAs($x);
     $this->assertInstanceOf('\\getjump\\Vk\\Core', $vk);
     $rT = $vk->request('users.get', ['user_id' => 1]);
     $this->assertInstanceOf('\\getjump\\Vk\\RequestTransaction', $rT);
     $js = $rT->toJs();
     $this->assertInstanceOf('\\getjump\\Vk\\VkJs', $js);
     $this->assertInstanceOf('\\getjump\\Vk\\RequestTransaction', $js->execute());
 }
 /**
  * Will return VkJs object
  * @return VkJs
  */
 public function toJs()
 {
     return new VkJs(Core::getInstance(), $this->methodName, $this->args);
 }
Пример #6
0
 private function getAdsStatistic(array $ads)
 {
     $vkAdStatistic = [];
     foreach ($ads as $accessToken => $cabinetsId) {
         foreach ($cabinetsId as $cabinetId => $vkAds) {
             $vkApi = Vk\Core::getInstance()->apiVersion('5.5')->setToken($accessToken);
             $vkAdStatistic[$cabinetId][] = $vkApi->request('ads.getStatistics', ['account_id' => $cabinetId, 'ids_type' => 'ad', 'ids' => implode(',', array_keys($vkAds)), 'period' => 'day', 'date_from' => date('Y-m-d'), 'date_to' => 0])->getResponse();
         }
     }
     return $vkAdStatistic;
 }
Пример #7
0
 public function getVkUserName($userId, $token)
 {
     $vkApi = Vk\Core::getInstance()->apiVersion('5.5')->setToken($token);
     $name = reset($vkApi->request('users.get')->getResponse());
     return array('name' => $name->first_name ? $name->first_name : '', 'last_name' => $name->last_name ? $name->last_name : '');
 }
Пример #8
0
 public function collateQueue($onlyPriority = false)
 {
     echo ' - get all queue' . PHP_EOL;
     $isPriority = true;
     $queue = $this->getVkPriorityQueue();
     if (!$onlyPriority && !$queue) {
         $isPriority = false;
         $queue = $this->getVkDataUpdateQueue();
     }
     /**@var $task VkDataUpdateQueue*/
     /**@var $vkAd VkAds*/
     /**@var $adObject VkAds*/
     foreach ($queue as $countIteration => $task) {
         echo '  -- queue number ' . $countIteration . PHP_EOL;
         echo '  -- queue task ' . $task->getMethod() . PHP_EOL;
         $start = microtime(true);
         if (!$isPriority && $this->issetPriorityQueue()) {
             break;
         }
         $this->getObjectManager()->remove($task);
         $this->getObjectManager()->flush();
         $vkApi = Vk\Core::getInstance()->apiVersion('5.5')->setToken($task->getAccessToken());
         $data = unserialize($task->getData());
         $res = $vkApi->request($task->getMethod(), $data);
         $res = $res->getResponse();
         if ($res) {
             $clientId = 0;
             if (isset($data['client_id'])) {
                 $clientId = $data['client_id'];
             }
             switch ($task->getMethod()) {
                 case 'ads.getStatistics':
                     $this->getServiceLocator()->get('StatsModule\\Logic\\StatsLogger')->saveVkData($res);
                     break;
                 case 'ads.getAds':
                     $resultAdsArray = [];
                     $vkAds = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkAds')->findBy(['vk_client_id' => $clientId]);
                     foreach ($vkAds as $adObject) {
                         $resultAdsArray[$adObject->getId()] = $adObject;
                     }
                     unset($vkAds);
                     if (0 && count($res) === 2000) {
                         $taskData = unserialize($task->getData());
                         $taskData['offset'] = isset($taskData['offset']) ? $taskData['offset'] + 1999 : 1999;
                         $this->pushIntoQueue('ads.getAds', $task->getAccessToken(), serialize($taskData));
                     }
                     foreach ($res as $ad) {
                         $needUpdate = false;
                         if (isset($resultAdsArray[$ad->id])) {
                             $vkAd = $resultAdsArray[$ad->id];
                             foreach ($ad as $key => $value) {
                                 if ($vkAd->get($key) !== false && $vkAd->get($key) != $value) {
                                     $needUpdate = true;
                                     $vkAd->set($key, $value);
                                 }
                                 if ($ad->status != self::AD_STATUS_DELETE) {
                                     $adRejectReason = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkAdsRejectionReasons')->findBy(['id' => $ad->id]);
                                     if ($ad->approved == self::AD_APPROVED_REJECT) {
                                         if (!$adRejectReason) {
                                             $this->pushIntoQueue('ads.getRejectionReason', $task->getAccessToken(), serialize(['account_id' => $data['account_id'], 'ad_id' => $ad->id]));
                                             $this->getObjectManager()->flush();
                                         }
                                     } elseif ($adRejectReason) {
                                         $this->getObjectManager()->remove(reset($adRejectReason));
                                         $this->getObjectManager()->flush();
                                     }
                                 } elseif ($vkAd->getBidderControl()) {
                                     $vkAd->setBidderControl(0);
                                     $needUpdate = true;
                                 }
                             }
                             if ($needUpdate) {
                                 $this->getObjectManager()->persist($vkAd);
                             }
                         } else {
                             $adsEntity = new VkAds();
                             if (isset($data['client_id'])) {
                                 $adsEntity->setVkClientId($data['client_id']);
                             }
                             foreach ($ad as $key => $value) {
                                 $adsEntity->set($key, $value);
                             }
                             $this->getObjectManager()->persist($adsEntity);
                         }
                         unset($ad);
                     }
                     $this->getObjectManager()->flush();
                     break;
                 case 'ads.getCampaigns':
                     foreach ($res as $vkCampaign) {
                         $campaignForSave = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkCampaigns')->findBy(['id' => $vkCampaign->id]);
                         $campaignForSave = reset($campaignForSave);
                         if ($campaignForSave) {
                             foreach ($vkCampaign as $key => $value) {
                                 $campaignForSave->set($key, $value);
                             }
                             if ($vkCampaign->status == 2) {
                                 $campaignForSave->setBidderControl(0);
                             }
                             $this->getObjectManager()->persist($campaignForSave);
                         } else {
                             $additionalData = $task->getAdditionalInfo();
                             $campaignEntity = new VkCampaigns();
                             $campaignEntity->setCabinetId($data['account_id']);
                             if (isset($data['client_id'])) {
                                 $campaignEntity->setVkClientId($data['client_id']);
                             }
                             if ($additionalData) {
                                 $additionalData = unserialize($additionalData);
                                 $campaignEntity->setVkAccountId($additionalData['vk_account_id']);
                             }
                             foreach ($vkCampaign as $key => $value) {
                                 $campaignEntity->set($key, $value);
                             }
                             $this->getObjectManager()->persist($campaignEntity);
                         }
                         unset($vkCampaign);
                     }
                     $this->getObjectManager()->flush();
                     break;
                 case 'ads.getAdsLayout':
                     $filter = [];
                     $vkAdsTargeting = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkAds')->findBy(['vk_client_id' => $clientId]);
                     /**@var $ad VkAds*/
                     foreach ($vkAdsTargeting as $ad) {
                         $filter[] = $ad->getId();
                     }
                     unset($vkAdsTargeting);
                     $vkAdsLayout = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkAdsLayout')->findBy(['id' => $filter]);
                     foreach ($res as $adLayout) {
                         $skip = false;
                         $needUpdate = false;
                         foreach ($vkAdsLayout as $vkAd) {
                             if ($vkAd->getId() == $adLayout->id) {
                                 foreach ($adLayout as $key => $value) {
                                     if ($vkAd->get($key) !== false && $vkAd->get($key) != $value) {
                                         $needUpdate = true;
                                         $vkAd->set($key, $value);
                                     }
                                 }
                                 if ($needUpdate) {
                                     $this->getObjectManager()->persist($vkAd);
                                 }
                                 $skip = true;
                                 break;
                             }
                         }
                         if (!$skip) {
                             $adsLayoutEntity = new VkAdsLayout();
                             foreach ($adLayout as $key => $value) {
                                 $adsLayoutEntity->set($key, $value);
                             }
                             $this->getObjectManager()->persist($adsLayoutEntity);
                         }
                         unset($adLayout);
                     }
                     $this->getObjectManager()->flush();
                     break;
                 case 'ads.getRejectionReason':
                     $adRejectReason = new VkAdsRejectionReasons();
                     $adRejectReason->setId($data['ad_id']);
                     if (isset($res->comment)) {
                         $adRejectReason->setComment($res->comment);
                     }
                     if (isset($res->rules)) {
                         $adRejectReason->setRules(serialize($res->rules));
                     }
                     $this->getObjectManager()->persist($adRejectReason);
                     $this->getObjectManager()->flush();
                     break;
                 case 'ads.getAdsTargeting':
                     $filter = [];
                     $vkAds = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkAds')->findBy(['vk_client_id' => $clientId]);
                     /**@var $ad VkAds*/
                     foreach ($vkAds as $ad) {
                         $filter[] = $ad->getId();
                     }
                     unset($vkAds);
                     /**@var $vkAdTargeting VkAdsTargeting*/
                     $vkAdsTargeting = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkAdsTargeting')->findBy(['id' => $filter]);
                     $resultTargetingArray = [];
                     foreach ($vkAdsTargeting as $vkAdTargeting) {
                         $resultTargetingArray[$vkAdTargeting->getId()] = $vkAdTargeting;
                     }
                     unset($vkAdsTargeting);
                     foreach ($res as $targetingFromVk) {
                         if (isset($resultTargetingArray[$targetingFromVk->id])) {
                             $vkAdTargeting = $resultTargetingArray[$targetingFromVk->id];
                             if ($vkAdTargeting->getHash() != md5(serialize((array) $targetingFromVk))) {
                                 $vkAdTargeting->setHash(md5(serialize((array) $targetingFromVk)));
                                 $vkAdTargeting->setData(serialize((array) $targetingFromVk));
                                 $this->getObjectManager()->persist($vkAdTargeting);
                             }
                         } else {
                             $newVkTarget = new VkAdsTargeting();
                             $newVkTarget->setId($targetingFromVk->id);
                             $newVkTarget->setHash(md5(serialize((array) $targetingFromVk)));
                             $newVkTarget->setData(serialize((array) $targetingFromVk));
                             $this->getObjectManager()->persist($newVkTarget);
                         }
                     }
                     $this->getObjectManager()->flush();
                     break;
                 case 'ads.getSuggestions':
                     foreach ($res as $vkCountry) {
                         $country = new VkCountries();
                         $country->setId($vkCountry->id);
                         $country->setName($vkCountry->name);
                         $this->getObjectManager()->persist($country);
                     }
                     $this->getObjectManager()->flush();
                     break;
                 case 'ads.updateAds':
                     $adsForUpdate = json_decode($data['data']);
                     foreach ($adsForUpdate as $adForUpdate) {
                         foreach ($res as $adRes) {
                             if (isset($adRes->id) && !isset($adRes->error_code) && $adRes->id == $adForUpdate->ad_id) {
                                 $vkAd = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkAds')->findBy(['id' => $adRes->id]);
                                 if ($vkAd && ($vkAd = reset($vkAd))) {
                                     if (isset($adForUpdate->status)) {
                                         // TODO!!!!
                                         $vkAd->setStatus($adForUpdate->status);
                                     }
                                     $this->getObjectManager()->persist($vkAd);
                                     break;
                                 }
                             }
                         }
                     }
                     $this->getObjectManager()->flush();
                     break;
                 case 'ads.deleteAds':
                     $adsForDelete = json_decode($data['ids']);
                     foreach ($adsForDelete as $key => $adForDelete) {
                         if (isset($res[$key]) && $res[$key] == 0) {
                             $vkAd = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkAds')->findBy(['id' => $adForDelete]);
                             if ($vkAd && ($vkAd = reset($vkAd))) {
                                 $vkAd->setStatus(self::AD_STATUS_DELETE);
                                 $this->getObjectManager()->persist($vkAd);
                             }
                         }
                     }
                     $this->getObjectManager()->flush();
                     break;
                 case 'ads.createAds':
                     $adsForDelete = json_decode($data['ids']);
                     foreach ($adsForDelete as $key => $adForDelete) {
                         if (isset($res[$key]) && $res[$key] == 0) {
                             $vkAd = $this->getObjectManager()->getRepository('\\Socnet\\Entity\\VkAds')->findBy(['id' => $adForDelete]);
                             if ($vkAd && ($vkAd = reset($vkAd))) {
                                 $vkAd->setStatus(self::AD_STATUS_DELETE);
                                 $this->getObjectManager()->persist($vkAd);
                             }
                         }
                     }
                     $this->getObjectManager()->flush();
                     break;
             }
         } else {
         }
         unset($task);
         unset($res);
         echo '  -- task time ' . ($taskTime = microtime(true) - $start) . ' sec' . PHP_EOL;
     }
 }