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; }
/** * 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)]); }
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); }
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; }
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 : ''); }
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; } }