public static function findFamily($user) { $families = \Family::all(["user_id = ?" => $user->id], ["member_id", "relation"]); $fs = array(); foreach ($families as $f) { $u = \User::first(["id = ?" => $f->member_id], ["name"]); $fs[(int) $f->member_id] = ArrayMethods::toObject(["name" => $u->name, "user_id" => $f->member_id, "relation" => $f->relation]); } return $fs; }
public static function earning($stats = [], $adid, $user_id = null) { $records = []; foreach ($stats as $date => $r) { $commissions = []; $meta = $r['meta'] ?? []; if (array_key_exists("country", $meta)) { $countryWise = $meta["country"] ?? []; foreach ($countryWise as $country => $clicks) { $extra = ['type' => 'both', 'start' => $date, 'end' => $date]; if ($user_id) { $extra['publisher'] = \User::first(['_id' => $user_id]); } $comm = \Commission::campaignRate($adid, $commissions, $country, $extra); $earning = \Ad::earning($comm, $clicks); ArrayMethods::add($earning, $r); } } $records[$date] = $r; } return $records; }
public function enrollments($classroom, $opts = array()) { $enrollments = \Enrollment::all(array("classroom_id = ?" => $classroom->id), array("user_id")); $students = array(); foreach ($enrollments as $e) { $usr = \User::first(array("id = ?" => $e->user_id), array("name", "username")); if (!isset($opts['only_user'])) { $scholar = \Scholar::first(array("user_id = ?" => $e->user_id), array("roll_no")); } $extra = $this->_extraFields($e, $opts); if (isset($opts['conversation'])) { $extra = array('username' => $usr->username, 'class' => $classroom->grade, 'section' => $classroom->section, 'display' => $usr->name . " (Class: " . $classroom->grade . " - " . $classroom->section . ") Roll No: " . $scholar->roll_no); } if (!isset($opts['only_user'])) { $data = array("user_id" => $e->user_id, "name" => $usr->name, "roll_no" => $scholar->roll_no); } else { $data = array("user_id" => $e->user_id); } $data = array_merge($data, $extra); $data = ArrayMethods::toObject($data); $students[] = $data; } return $students; }
public static function display($org, $type, $id = null) { $fields = self::fields(); if ($id) { $user = \User::first(['_id' => $id, 'org_id' => $org->_id, 'type' => $type]); $users = \User::objectArr($user, $fields); $data = ["{$type}" => (array) $users[0]]; } else { $users = \User::all(['org_id' => $org->_id, 'type' => $type]); $data = ["{$type}s" => \User::objectArr($users, $fields)]; } return $data; }
public function performance($course) { $session = Registry::get("session"); $perf = Registry::get("MongoDB")->performance; $week = (new \DateTime(date('Y-m-d')))->format("W"); $performance = array(); $classroom = self::$_classroom; $record = $perf->findOne(array('user_id' => (int) self::$_student->user_id, 'course_id' => (int) $course->id, 'year' => date('Y'), 'classroom_id' => (int) $classroom->id)); $d = StringMethods::month_se(); $start = (int) (new \DateTime($d['start']))->format("W"); if ($start == 53) { $start = 1; } $end = (int) (new \DateTime($d['end']))->format("W"); $monthly = array(); if (isset($record)) { $performance['course'] = $course->title; $performance['teacher'] = \User::first(array("id = ?" => $record['teacher_id']), array("name"))->name; foreach ($record['track'] as $track) { $week = $track['week']; if ($week <= $end && $week >= $start) { $monthly[] = $track['grade']; } $performance['tracking'][] = $track; } } return array('performance' => $performance, 'monthly' => $monthly); }
/** * @before _secure */ public function campaign($id) { $ad = \Ad::first(["_id = ?" => $id, 'org_id' => $this->org->_id]); if (!$ad) { $this->_404(); } $this->seo(array("title" => $ad->title)); $view = $this->getActionView(); if (RM::get("action") == "permission" && array_key_exists("permission", $ad->meta)) { $search = ["org_id" => $this->org->id, "ad_id" => $id, "user_id" => $this->user->id]; $access = AdAccess::first($search); // Check before saving to prevent duplication of records if (!$access) { $access = new AdAccess($search); $access->save(); } } if (RM::post("action")) { // action value already checked in _postback func $this->_postback('add', ['ad' => $ad]); } if (RM::type() === 'DELETE') { $this->_postback('delete'); } $this->_postback('show', ['ad' => $ad]); $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]); $models = []; foreach ($comms as $comm) { $models[] = $comm->model; } $advertiser = User::first(["id = ?" => $ad->user_id], ['name']); $categories = \Category::all(["org_id = ?" => $this->org->_id], ['name', '_id']); $view->set("ad", $ad)->set("comms", $comms)->set("categories", $categories)->set("advertiser", $advertiser)->set('models', $models)->set("start", $start)->set("end", $end)->set('tdomains', \Shared\Services\User::trackingLinks($this->user, $this->org)); }