public function user_index($nickname = null) { if (!$nickname) { $nickname = $this->GetData('nickname'); } $user = User::find_by_nickname($nickname); $newaward = new LoyaltyAward(); if ($this->post) { $newaward->user_id = $user->id; $newaward->points = $this->PostData("points"); $newaward->justification = $this->PostData("justification"); $newaward->awarded_by_id = Site::CurrentUser()->id; if (!$this->csrf) { Site::InstantFlash('error', 'Invalid form submission'); } elseif ($newaward->save()) { Site::Flash("notice", "The loyalty points have been awarded"); Redirect("admin/users/" . $user->permalink() . "/loyalty"); } else { Site::InstantFlash('error', 'Unable to award loyalty points'); } } $page = 1; if ($this->GetData('page')) { $page = $this->GetData('page'); } $id = mysql_real_escape_string($user->id); $awards = LoyaltyAward::paginate("users.id = '{$id}'", "loyalty_awards.id DESC", $page, 50); $this->assign("user", $user); $this->assign("awards", $awards); $this->assign('newaward', $newaward); $this->title = "{$user->nickname} :: Loyalty"; $this->render("loyalty_award/user_index.tpl"); }
public function show($id = null) { $cart = $this->load_cart($id); if (!$cart->paid) { $cart->check_discounts(); $manualGateway = null; $gateways = null; $allGateways = PaymentGateway::find_all('', 'paymentgateways.position ASC'); foreach ($allGateways as $gateway) { $gateways[$gateway->id] = $gateway->name; if ($gateway->code == 'manual') { $manualGateway = $gateway; } } $payment = new PaymentTransaction(); $payment->cart_id = $cart->id; $payment->cart = $cart; $payment->paymentgateway = $manualGateway; $payment->paymentgateway_id = $manualGateway->id; $payment->externalid = (string) $cart; $payment->amount = Money($cart->cost()); $payment->sender = $cart->user->email; $payment->status = 'ptsTaken'; $payment->processResponse = array('notes' => ''); if ($this->post) { $payment->paymentgateway_id = $this->postData('paymentgateway_id'); $payment->externalid = $this->postData('externalid'); $payment->sender = $this->postData('sender'); $payment->amount = $this->postData('amount'); $payment->processResponse = array('notes' => $this->postData('notes')); $payment->method = $gateways[$payment->paymentgateway_id]; if ($payment->save()) { Email::send_user_paymentconfirmation($payment); $cart->mark_paid($payment, 'Manually Paid'); Email::send_payment_complete(array(), "", $cart); Site::Flash('notice', 'The cart has been paid for'); Redirect("admin/carts/{$cart->id}"); } else { Site::InstantFlash('error', 'Invalid payment'); } echo '<pre>'; print_r($payment); die; } $this->assign('payment', $payment); $this->assign('gateways', $gateways); } $this->assign('cart', $cart); $this->title = "Cart :: {$cart->id}"; $this->render('cart/show.tpl'); }
protected function updateTwitch($twitch, $success, $url) { if ($this->post) { $twitch->channel = $this->postData('channel'); $twitch->name = $this->postData('name'); $twitch->title = $this->postData('title'); $twitch->public = $this->postData('public'); if ($this->csrf && $twitch->save()) { Site::Flash('notice', $success); Redirect($url); } elseif (!$this->csrf) { Site::InstantFlash('error', 'Invalid form submission'); } } $this->assign('twitch', $twitch); }
protected function updateGateway($gateway, $success, $url) { if ($this->post) { $gateway->name = $this->postData('name'); $gateway->code = $this->postData('code'); $gateway->classname = $this->postData('classname'); $gateway->enabled = $this->postData('enabled'); $gateway->public = $this->postData('public'); if ($this->csrf && $gateway->save()) { Site::Flash('notice', $success); Redirect($url); } elseif (!$this->csrf) { Site::InstantFlash('error', 'Invalid form submission'); } } $this->assign('gateway', $gateway); }
public function run($action) { $controller = get_class($this); $user = Site::CurrentUser(); if ($user) { $group = $user->aclgroup; } else { $group = ACLGroup::find_by_code('guest'); } if (!$group) { throw new Error500('Unable to find ACL group'); } $rule = $this->getRule($group, $controller, $action); if (!$rule) { throw new Error403('You do not have permission to access this resource'); } switch ($rule->action) { case 'araDeny': if ($rule->error) { Site::InstantFlash('error', $rule->error); } elseif ($rule->notice) { Site::InstantFlash('notice', $rule->notice); } throw new Error403('You do not have permission to access this resource'); case 'araRedirect': if ($rule->error) { Site::Flash('error', $rule->error); } elseif ($rule->notice) { Site::Flash('notice', $rule->notice); } $uri = $_SERVER["REQUEST_URI"]; if (substr($uri, 0, 1) == '/') { $uri = substr($uri, 1); } Site::Flash('redirect', $uri); Redirect($rule->url); break; case 'araAllow': $params = func_get_args(); array_shift($params); call_user_func_array(array($this, $action), $params); break; } }
public function delete($permalink = null, $id = null) { $event = $this->load_event($permalink); $group = $this->load_group($event, $id); if ($this->post && $this->csrf) { $group->destroy(); Site::Flash('notice', 'The group has been deleted'); Redirect("admin/events/{$event->permalink}/seating/groups"); } elseif (!$this->csrf) { Site::InstantFlash('Invalid form submission'); } $this->assign('event', $event); $this->assign('group', $group); $this->title = "{$event->name} :: Delete {$group->name}"; $this->render('seating_group/delete.tpl'); }
public function edit() { $event = self::load_event(); if ($event->enddate <= time()) { Site::Flash("error", "It is not possible to change your seat"); Redirect("{$event->permalink}/seating"); } $seat = self::load_seat($event); if ($seat->event_signup->id) { Site::Flash("error", "The seat has already been chosen"); Redirect("{$seat->event->permalink}/seating/{$seat->seating_plan->permalink}"); } // Fetch signups $event_id = mysql_real_escape_string($event->id); $user_id = mysql_real_escape_string(Site::CurrentUser()->id); $signups = EventSignup::find_all("event_signups.event_id = '{$event_id}' AND (event_signups.user_id = '{$user_id}' OR event_signups.manager_id = '{$user_id}') AND event_signups.paid = true AND event_tickets.participant = true"); $total = count($signups); if ($total == 0) { Site::Flash("error", "You need to be a paid participant to choose your seat"); Redirect("{$seat->event->permalink}/seating/{$seat->seating_plan->permalink}"); } $eligible = array(); foreach ($signups as $signup) { if ($signup->event_seat_id && $event->lock_seating) { // A seat is assigned, and seating is locked - No continue; } if (!$signup->event_ticket->seating_group_id && !$seat->seating_group_id && !$seat->disabled) { // Seat is not disabled, there's no group on the ticket or the seat, so we're good $eligible[$signup->id] = $signup; continue; } if ($signup->event_ticket->seating_group_id && $seat->seating_group_id && $signup->event_ticket->seating_group_id == $seat->seating_group_id) { // Seat has a group, and it's the same as the ticket, this is good $eligible[$signup->id] = $signup; } } if (count($eligible) == 0) { if (count($signups) == 0) { Site::Flash("error", "You need to be a paid participant to choose your seat"); } else { Site::Flash('error', 'You have no bookings that can choose this seat'); } Redirect("{$seat->event->permalink}/seating/{$seat->seating_plan->permalink}"); } if (count($eligible) == 1) { $signup = current($eligible); $signup->event_seat_id = $seat->id; if ($signup->save()) { Site::Flash("notice", "You have chosen seat {$seat->label}"); //Email::send_event_checkin($signup); } else { Site::Flash('error', 'Unable to choose seat, please try again'); } Redirect("{$seat->event->permalink}/seating/{$seat->seating_plan->permalink}"); } // We have more than one eligible booking, we need the user to select which one if ($this->post) { $id = $this->postData('signup'); if (!$this->csrf) { Site::InstantFlash('error', 'Invalid form submission'); } elseif (!$id || !array_key_exists($id, $eligible)) { Site::InstantFlash('error', 'Please select a valid event booking'); } else { $eligible[$id]->event_seat_id = $seat->id; if ($eligible[$id]->save()) { Site::Flash('notice', "You have chosen seat {$seat->label}"); //Email::send_event_checkin($signup); Redirect("{$seat->event->permalink}/seating/{$seat->seating_plan->permalink}"); } else { Site::InstantFlash('error', 'Unable to choose seat, please try again'); } } } $this->assign("event", $event); $this->assign("seat", $seat); $this->assign("signups", $eligible); $this->title = "{$event->name} :: Seating Plan"; $this->render("event_seat/edit.tpl"); }
public function award() { if ($this->post) { $achievement = $this->load_achievement($this->PostData('achievement_id')); $user_temp = $this->PostData('users'); if (!is_array($user_temp)) { $user_temp = explode(',', $user_temp); } $error_on = array(); $success = 0; foreach ($user_temp as $name_temp) { $user_id = mysql_real_escape_string($name_temp); $user = User::find_by_id($user_id); if ($user) { if ($achievement->award($user, $this->PostData("category_id"))) { $success++; } else { $error_on[] = $name; } } else { $error_on[] = $name; } } if (count($user_temp) == 1) { if ($success == 1) { Site::InstantFlash("notice", "{$user->nickname} has been awarded {$achievement->name}"); } else { Site::InstantFlash("error", "Unable to award achievement"); } } else { if ($success == 0) { Site::InstantFlash("error", "Unable to award achievements to any of the users listed"); } elseif (count($error_on) > 0) { Site::InstantFlash("error", "Awarded achievement to {$success} user" . ($success != 1 ? "s" : "") . ", failed to award to " . implode(", ", $error_on)); } else { Site::InstantFlash("notice", "Awarded achievements to all users listed."); } } } $filters = array(); $pageQuery = ''; if ($this->GetData('query')) { $pageQuery = $this->GetData('query'); $query = mysql_real_escape_string($this->GetData('query')); $filters[] = "users.nickname LIKE '%{$query}%'"; } $filter = implode('AND', $filters); $achievement_id = null; if ($this->GetData('achievement_id')) { $achievement_id = $this->GetData('achievement_id'); } $page = 1; if ($this->GetData('page')) { $page = $this->GetData('page'); } $users = User::paginate($filter, 'users.nickname ASC', $page, 50); $achievements = Achievement::find_all("", "achievements.created_at ASC"); $achlist = array(); foreach ($achievements as $ach) { $achlist[$ach->id] = "{$ach->id}. {$ach->name}"; } // Yay - Magic Numbers! $category_id = 11; $categories = array(); $all_categories = array(); $all_categories = AchievementCategory::find_all(); foreach ($all_categories as $category) { $event = Event::find("achievement_category_id={$category->id}"); if (!$event || $event->check_user(Site::CurrentUser()) && $event->display_achievements) { $categories[$category->id] = $category->category_name; if ($category->default_category) { $category_id = $category->id; } } } if ($this->GetData('category_id')) { $category_id = $this->GetData('category_id'); } $this->assign("achievements", $achlist); $this->assign("categories", $categories); $this->assign("category_id", $category_id); $this->assign("achievement_id", $achievement_id); $this->assign("users", $users); $this->assign('pagequery', $pageQuery); $this->title = "Award Achievement"; $this->render("achievement/award.tpl"); }
public function create2($group_id = null, $acl_id = null) { $group = $this->load_group($group_id); if (!$acl_id) { $acl_id = $this->GetData('acl_id'); } $acl = ACL::find_by_id($acl_id); if (!$acl) { Site::Flash('error', 'Unable to find the ACL selected'); Redirect("admin/acl/groups/{$group->id}/rules/new"); } if ($this->post) { $ids = $this->PostData('actions'); $urls = $this->PostData('urls'); if (is_array($ids)) { $count = 0; foreach ($ids as $id => $action) { if (!$action) { continue; } $rule = new ACLRule(); $rule->aclgroup_id = $group->id; $rule->acl_id = $id; $rule->action = $action; if ($rule->action == 'araRedirect') { if (isset($urls[$id])) { $rule->url = $urls[$id]; } } if ($rule->save()) { $count++; } } $plural = 's have'; if ($count == 1) { $plural = ' has'; } Site::Flash('notice', "{$count} rule{$plural} been added"); Redirect("admin/acl/groups/{$group->id}"); } else { Site::InstantFlash('error', 'No ACLs selected'); } } $controller = mysql_real_escape_string($acl->controller); $id = mysql_real_escape_string($acl->id); $ids = array(); $group_id = mysql_real_escape_string($group->id); $currentRules = ACLRule::Find_all("aclgroups.id = '{$group_id}' AND (acls.controller = '{$controller}' OR acls.id = '{$id}')"); foreach ($currentRules as $rule) { $ids[$rule->acl->id] = $rule->acl->id; } $rulesql = ''; if (count($ids) > 0) { $rulesql = ' AND NOT acls.id IN (' . implode(', ', $ids) . ')'; } $acls = ACL::find_all("(acls.controller = '{$controller}' OR acls.id = '{$id}'){$rulesql}", "acls.action ASC"); if (count($acls) == 0) { Site::Flash('error', 'There are no more ACLs to add in this section'); Redirect("admin/acl/groups/{$group->id}/rules/new"); } $this->assign('acl', $acl); $this->assign('acls', $acls); $this->assign('group', $group); $this->title = "ACL :: Groups :: {$group->name} :: New Rule"; $this->render("aclrule/create2.tpl"); }