init
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
<?php
|
||||
namespace App\Controllers\Advertisement;
|
||||
|
||||
use App\ThirdParty\facebook_api\ZenithFB;
|
||||
use App\Libraries\slack_api\SlackChat;
|
||||
use CodeIgniter\CLI\CLI;
|
||||
use CodeIgniter\Controller;
|
||||
|
||||
use CodeIgniter\HTTP\RequestInterface;
|
||||
use CodeIgniter\HTTP\ResponseInterface;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use DateInterval;
|
||||
use DatePeriod;
|
||||
|
||||
class Facebook extends Controller
|
||||
{
|
||||
private $zenith;
|
||||
private $slack;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->zenith = new ZenithFB();
|
||||
$this->slack = new SlackChat();
|
||||
}
|
||||
|
||||
public function initController(
|
||||
RequestInterface $request,
|
||||
ResponseInterface $response,
|
||||
LoggerInterface $logger
|
||||
) {
|
||||
$date = "";
|
||||
$today = date('Y-m-d');
|
||||
$argv = @$request->getServer()['argv'];
|
||||
if(!is_null($argv)) {
|
||||
$method = $argv[2];
|
||||
$params = @array_slice($argv, 3);
|
||||
if(!@count($params)) return;
|
||||
foreach($params as $v) {
|
||||
$value = preg_replace('/[^0-9\-]+/', '', $v);
|
||||
if(preg_match('/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/', $value)) { //request argument에 날짜형식이 있는지 체크
|
||||
$date = $v;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*
|
||||
$hour = date("G"); //24-hour format of an hour without leading zeros
|
||||
if($date == $today && ($hour >= 0 && $hour <= 7)) {
|
||||
CLI::write("당일 0시~8시는 자동업데이트를 사용할 수 없습니다.", "light_purple");
|
||||
exit;
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
public function getAccounts() {
|
||||
$this->zenith->updateAdAccounts();
|
||||
}
|
||||
|
||||
public function getLongLivedAccessToken() {
|
||||
$this->zenith->getLongLivedAccessToken();
|
||||
}
|
||||
|
||||
public function getInsight($all=null, $date=null, $edate=null) {
|
||||
CLI::clearScreen();
|
||||
if($all == null)
|
||||
$all = CLI::prompt("인사이트가 수신된 캠페인,광고그룹,광고 데이터를 함께 수신하시겠습니까?\n(시간이 오래 걸릴 수 있습니다.)", ["true","false"]);
|
||||
if($date == null)
|
||||
$date = CLI::prompt("인사이트를 수신할 기간 중 시작날짜를 입력해주세요.", date('Y-m-d'));
|
||||
if($edate == null)
|
||||
$edate = CLI::prompt("인사이트를 수신할 기간 중 종료날짜를 입력해주세요.", $date);
|
||||
// $run = CLI::prompt("광고데이터를 ".($all=="true"?"포함":"미포함")."하여 {$date} ~ {$edate} 기간의 인사이트를 수신합니다.",["y","n"]);
|
||||
// if($run != 'y') return false;
|
||||
$this->zenith->getAsyncInsights($all, $date, $edate);
|
||||
CLI::write("데이터 수신이 완료되었습니다.", "yellow");
|
||||
}
|
||||
|
||||
public function adLeadByAd($ad_id = null, $from = null, $to = null) {
|
||||
CLI::clearScreen();
|
||||
if($ad_id == null)
|
||||
$ad_id = CLI::prompt("잠재고객 업데이트 할 광고ID를 입력해주세요.");
|
||||
if($from == null)
|
||||
$from = CLI::prompt("잠재고객 업데이트 할 시작날짜를 입력해주세요.", date('Y-m-d'));
|
||||
if($to == null)
|
||||
$to = CLI::prompt("잠재고객 업데이트 할 종료날짜를 입력해주세요.", $from);
|
||||
$result = $this->zenith->adLeadByAd($ad_id, $from, $to);
|
||||
CLI::write("잠재고객 업데이트 완료되었습니다.", "yellow");
|
||||
}
|
||||
|
||||
public function getAdLead($from = null, $to = null) {
|
||||
CLI::clearScreen();
|
||||
if($from == null)
|
||||
$from = CLI::prompt("잠재고객 업데이트 할 시작날짜를 입력해주세요.", date('Y-m-d'));
|
||||
if($to == null)
|
||||
$to = CLI::prompt("잠재고객 업데이트 할 종료날짜를 입력해주세요.", date('Y-m-d'));
|
||||
// $run = CLI::prompt("{$from}~{$to}일자의 잠재고객을 업데이트 합니다.",["y","n"]);
|
||||
// if($run != 'y') return false;
|
||||
$this->zenith->getAdLead($from, $to);
|
||||
}
|
||||
|
||||
public function updateAll() {
|
||||
CLI::clearScreen();
|
||||
// $run = CLI::prompt("캠페인/광고그룹/광고를 업데이트 합니다.",["y","n"]);
|
||||
// if($run != 'y') return false;
|
||||
CLI::write("캠페인/광고그룹/광고를 업데이트 합니다.", "light_red");
|
||||
$this->zenith->updateAllByAccounts();
|
||||
/*
|
||||
$getAds = $this->zenith->getAds();
|
||||
$updateAdsets = $this->zenith->updateAdsets($getAds);
|
||||
$updateCampaigns = $this->zenith->updateCampaigns($updateAdsets);
|
||||
*/
|
||||
}
|
||||
|
||||
public function updateDB($sdate = null, $edate = null) {
|
||||
CLI::clearScreen();
|
||||
if($sdate == null)
|
||||
$sdate = CLI::prompt("유효DB 업데이트 할 시작날짜를 입력해주세요.", date('Y-m-d'));
|
||||
if($edate == null)
|
||||
$edate = CLI::prompt("유효DB 업데이트 할 종료날짜를 입력해주세요.", $sdate);
|
||||
$sdate = date_create($sdate);
|
||||
$edate = date_create(date('Y-m-d', strtotime($edate.'+1 days')));
|
||||
$interval = DateInterval::createFromDateString('1 day');
|
||||
$date_range = new DatePeriod($sdate, $interval, $edate);
|
||||
foreach($date_range as $date) {
|
||||
$date = $date->format('Y-m-d');
|
||||
CLI::write("{$date} 유효DB를 업데이트 합니다.", "light_red");
|
||||
$this->zenith->getAdsUseLanding($date);
|
||||
}
|
||||
}
|
||||
|
||||
public function updateCampaign() {
|
||||
$campaign_id = CLI::prompt("업데이트 할 캠페인 ID를 입력해주세요.", null);
|
||||
if(is_null($campaign_id)) return;
|
||||
$data = [
|
||||
['campaign_id'=>$campaign_id]
|
||||
];
|
||||
$campaign = $this->zenith->updateCampaigns($data);
|
||||
print_r($campaign);
|
||||
}
|
||||
|
||||
public function updateAds() {
|
||||
CLI::clearScreen();
|
||||
// $run = CLI::prompt("광고를 업데이트 합니다.",["y","n"]);
|
||||
// if($run != 'y') return false;
|
||||
CLI::write("광고를 업데이트 합니다.", "light_red");
|
||||
|
||||
$this->zenith->updateAds();
|
||||
}
|
||||
public function updateAdCreatives() {
|
||||
CLI::clearScreen();
|
||||
$ad_id = CLI::prompt("업데이트 할 광고 ID를 입력해주세요.", null);
|
||||
if(is_null($ad_id)) return;
|
||||
$data = [
|
||||
['id'=>$ad_id]
|
||||
];
|
||||
// $run = CLI::prompt("광고를 업데이트 합니다.",["y","n"]);
|
||||
// if($run != 'y') return false;
|
||||
CLI::write("광고소재를 업데이트 합니다.", "light_red");
|
||||
|
||||
$adcreative = $this->zenith->updateAdCreatives($data);
|
||||
print_r($adcreative);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user