Beispiel #1
0
 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;
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 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;
 }
Beispiel #4
0
 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;
 }
Beispiel #5
0
 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);
 }
Beispiel #6
0
 /**
  * @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));
 }