/** * @before _secure */ public function campaign($id) { $ad = \Ad::first(['_id' => $id, 'org_id' => $this->org->_id]); if (!$ad) { $this->_404(); } $this->seo(["title" => $ad->title]); $view = $this->getActionView(); if (RM::post("action")) { // action value already checked in _postback func $this->_postback('add', ['ad' => $ad]); } if (RM::type() === 'DELETE') { $this->_postback('delete'); } $start = RM::get("start", date('Y-m-d', strtotime("-7 day"))); $end = RM::get("end", date('Y-m-d')); $limit = RM::get("limit", 10); $page = RM::get("page", 1); $query = ['adid' => Db::convertType($id), 'created' => Db::dateQuery($start, $end)]; $clicks = \Click::all($query, [], 'created', 'desc', $limit, $page); $count = \Click::count($query); $cf = Utils::getConfig("cf", "cloudflare"); $view->set("domain", $cf->api->domain)->set("clicks", $clicks)->set("count", $count)->set('advertiser', $this->user); $comms = Commission::all(["ad_id = ?" => $id], ['model', 'coverage', 'revenue', 'description']); $models = ArrayMethods::arrayKeys($comms, 'model'); $advertiser = User::first(["id = ?" => $ad->user_id], ['name']); $categories = \Category::all(["org_id = ?" => $this->org->_id], ['name', '_id']); $this->_postback('show', ['ad' => $ad]); $view->set("ad", $ad)->set("comms", $comms)->set("categories", $categories)->set("advertiser", $advertiser)->set('models', $models)->set("start", $start)->set("end", $end); }
/** * @before _admin */ public function info($id = null) { $this->seo(array("title" => "Publisher Edit")); $view = $this->getActionView(); $publisher = User::first(["_id = ?" => $id, "type = ?" => "publisher", "org_id = ?" => $this->org->id]); if (!$publisher) { $this->_404(); } $platforms = Platform::all(["user_id = ?" => $publisher->id]); $view->set("platforms", $platforms); $view->set("errors", []); if (RM::type() == 'POST') { $action = RM::post('action', ''); switch ($action) { case 'account': $fields = ['name', 'email', 'phone', 'country', 'currency', 'username']; foreach ($fields as $f) { $publisher->{$f} = RM::post($f); } $publisher->save(); $view->set('message', 'Account Info updated!!'); break; case 'password': $old = RM::post('password'); $new = RM::post('npassword'); $view->set($publisher->updatePassword($old, $new)); break; case 'campaign': $publisher->getMeta()['campaign'] = ['model' => RM::post('model'), 'rate' => $this->currency(RM::post('rate'))]; $publisher->save(); $view->set('message', 'Payout Info Updated!!'); break; case 'trackingDomain': $tdomain = (array) RM::post('tdomain', ''); if ($tdomain && ArrayMethods::inArray($this->org->tdomains, $tdomain)) { $publisher->getMeta()['tdomain'] = $tdomain; $publisher->save(); $view->set('message', 'Added Tracking Domain for publisher'); } else { $view->set('message', 'Invalid Request!!'); } case 'commadd': case 'commedit': $comm_id = RM::post('comm_id'); if ($comm_id) { $comm = Commission::first(['_id' => $comm_id, 'user_id' => $publisher->_id]); } else { $comm = new Commission(['user_id' => $publisher->_id]); } $comm->model = RM::post('model'); $comm->description = RM::post('description'); $comm->rate = $this->currency(RM::post('rate')); $comm->coverage = RM::post('coverage', ['ALL']); $comm->save(); $view->set('message', "Multi Country Payout Saved!!"); break; } } if (RM::type() === 'DELETE') { $action = RM::get("action"); switch ($action) { case 'payoutdel': unset($publisher->getMeta()['campaign']); $publisher->save(); $view->set('message', 'Payout Deleted!!'); break; case 'commDel': $comm = Commission::first(['_id' => RM::get("comm_id"), 'user_id' => $publisher->_id]); if ($comm) { $comm->delete(); $view->set('message', 'Payout Deleted!!'); } else { $view->set('message', 'Invalid Request!!'); } break; case 'afields': $meta = $publisher->meta; $publisher->removeFields(); unset($meta['afields']); Db::updateRaw('users', ['_id' => Db::convertType($publisher->_id, 'id')], ['$set' => ['meta' => $meta]]); $view->set('message', 'Data Removed!!'); break; case 'defaultDomain': unset($publisher->getMeta()['tdomain']); $publisher->save(); $view->set('message', 'Removed tracking domain!!'); break; } } $afields = Meta::search('customField', $this->org); $view->set('afields', $afields)->set("publisher", $publisher)->set("commissions", Commission::all(["user_id = ?" => $publisher->id]))->set("start", strftime("%Y-%m-%d", strtotime('-7 day')))->set("end", strftime("%Y-%m-%d", strtotime('now')))->set("d", Performance::total(['start' => $start ?? $publisher->created->format('Y-m-d'), 'end' => $end ?? date('Y-m-d')], $publisher)); }
/** * @before _secure */ public function settings() { $this->seo(array("title" => "Campaign: Settings")); $view = $this->getActionView(); $user = $this->user; $org = $this->org; if (RM::type() === 'DELETE') { switch (RM::get("action")) { case 'commDel': $comm = Commission::first(['_id' => RM::get("comm_id"), "org_id" => $this->org->_id]); if ($comm) { $comm->delete(); $view->set('message', 'Commission removed!!'); } else { $view->set('message', 'Invalid request!!'); } return; } } if (RM::type() == 'POST') { $action = RM::post('action', ''); switch ($action) { case 'commadd': case 'commedit': $fields = ['model' => RM::post('model'), 'rate' => RM::post('rate'), 'coverage' => RM::post('coverage') ?? ['ALL']]; $comm_id = RM::post('comm_id'); if ($comm_id) { $comm = Commission::first(['_id' => $comm_id, 'org_id' => $this->org->_id]); if (!$comm) { $view->set('Invalid Request!!'); break; } } else { $comm = new Commission(['org_id' => $this->org->_id]); } foreach ($fields as $key => $value) { $comm->{$key} = $value; } $comm->save(); //echo "<pre>", print_r($_POST), "</pre>";die(); $view->set('message', 'Commission saved successfully!!'); break; case 'domains': $message = $org->updateDomains(); $this->setOrg($org); $view->set('message', $message); break; case 'categories': $success = Category::updateNow($this->org); if ($success) { $msg = 'Categories updated Successfully!!'; } else { $msg = 'Failed to delete some categories because in use by campaigns!!'; } $view->set('message', $msg); break; } $this->setUser($user); } $commissions = Commission::all(['org_id' => $this->org->_id]); $categories = \Category::all(['org_id' => $this->org->_id]); $view->set('categories', $categories)->set('hideRevenue', true)->set('commissions', $commissions); }
/** * @before _secure * @after _cleanUp */ public function campaign($id = null) { $view = $this->getActionView(); $org = $this->_org; $active = RequestMethods::get('active', 1); $fields = ['_id', 'title', 'description', 'image', 'url', 'device', 'expiry', 'created']; $commFields = ['model', 'rate', 'revenue', 'coverage']; if ($id) { $campaign = Ad::first(['_id' => $id, 'org_id' => $org->_id], $fields); } else { $campaign = null; } if ($id && !$campaign) { return $this->failure('30'); } $type = RequestMethods::type(); switch ($type) { case 'GET': if (!$id) { // display list of campaigns $ads = Ad::all(['org_id' => $org->_id, 'live' => $active], $fields); $ads = Ad::objectArr($ads, $fields); $results = []; foreach ($ads as $id => $a) { $arr = Utils::toArray($a); $comms = Commission::all(['ad_id' => $a->_id], $commFields); $arr['commissions'] = Ad::objectArr($comms, $commFields); $results[$id] = (object) $arr; } $data = ['campaigns' => $results]; $view->set('data', $data); } else { $ads = Ad::objectArr($campaign, $fields); $campaign = array_shift($ads); $comm = Commission::all(['ad_id' => $campaign->_id], $commFields); $data = ['campaign' => $campaign, 'commissions' => Commission::objectArr($comm, $commFields)]; $view->set('data', $data); } break; case 'POST': if ($id) { // edit a particular campaign } else { // create a new campaign $fields = ['title', 'description', 'url', 'expiry', 'category', 'device', 'user_id']; $img = RequestMethods::post('image'); // contains image url $campaign = new Ad(['org_id' => $org->_id, 'type' => 'article', 'image' => Utils::media($img, 'download')]); foreach ($fields as $f) { $campaign->{$f} = RequestMethods::post($f); } $view->set('success', false); $visibility = RequestMethods::post('visibility', 'public'); if ($visibility === 'private') { $campaign->getMeta()['private'] = true; } $opts = ['devices' => array_keys(Shared\Markup::devices()), 'advertisers' => $org->users('advertiser', false)]; if (true) { // $campaign->save(); $arr = ArrayMethods::reArray($_POST['commissions']); var_dump($arr); var_dump($_POST['commissions']); $view->set('success', true); } else { $data = ['errors' => $campaign->errors]; $view->set('data', $data); } } break; case 'DELETE': $message = $campaign->delete(); $view->set($message); break; } }