<?php
class mod_wormhole extends module {
var $dateformat = "m/d/Y H:i";
function load(Request &$r) {
}
function display(Request &$r) {
$listing = yapeal
::complexQuery("SELECT op.id, op.system, op.created, op.closed, op.name, op.confirmed, op.paid, SUM(it.price*ol.amount) AS profit FROM lc_op op LEFT JOIN lc_oploot ol ON op.id = ol.lc_op_id LEFT JOIN lc_item it ON ol.item_id = it.id WHERE op.paid = 0 GROUP BY op.id", array());
if ($listing) {
foreach ($listing as &$entry) {
$entry->members = lc_opmember
::select(array('lc_op_id'=>$entry->id));
foreach ($entry->members as $member) {
if ($member->user_id == $r->user->id) {
$entry->partofop = true;
}
}
}
}
$r->set('entries', $listing);
}
function admin(Request &$r) {
$listing = list_content
::getInstance()->setType('op')->setConditions(array('where'=>array('paid'=>false)))->getListing($r);
foreach ($listing['entries'] as &$entry) {
$entry->members = lc_opmember
::select(array('lc_op_id'=>$entry->id));
}
$r->set('entries', $listing['entries']);
}
function wallet(Request &$r) {
$ops_done = yapeal
::complexQuery("SELECT op.*, ot.name AS optype FROM lc_opmember om INNER JOIN lc_op op ON om.lc_op_id = op.id INNER JOIN lc_optype ot ON op.optype_id = ot.id INNER JOIN user_account ua ON ua.user_id = om.user_id WHERE ua.user_id = ? AND op.closed IS NOT NULL GROUP BY om.lc_op_id", array($r->user->id));
$total_waiting = 0;
$total_paid = 0;
if ($ops_done) {
foreach ($ops_done as &$op) {
$id = $op->id;
$total = yapeal
::complexQuery("SELECT SUM(ol.amount*ol.price) AS total FROM lc_oploot ol WHERE ol.lc_op_id = ?", array($id), true);
$participants = yapeal
::complexQuery("SELECT rc.* FROM lc_opmember om INNER JOIN user_account ua ON ua.user_id = om.user_id INNER JOIN yap_utilRegisteredCharacter rc ON ua.account_id = rc.userID WHERE om.lc_op_id = ? AND isMain = 1 GROUP BY ua.user_id", array($id));
$participantnr = count($participants);
$op->total = $total->total;
$op->total_earned = $total->total / $participantnr;
if ($op->paid) {
$total_paid += $op->total_earned;
} else {
$total_waiting += $op->total_earned;
}
}
}
$r->set('ops', $ops_done);
$r->set('total_waiting', $total_waiting);
$r->set('total_paid', $total_paid);
}
function payment(Request &$r) {
$ops_to_be_paid = yapeal
::complexQuery("SELECT op.id, op.name, ol.lc_op_id, SUM(ol.amount*ol.price) as total FROM lc_oploot ol INNER JOIN lc_item it ON ol.item_id = it.id INNER JOIN lc_op op ON ol.lc_op_id = op.id WHERE op.confirmed = true AND op.paid = false GROUP BY ol.lc_op_id", array());
$characters_to_pay = array();
$opstotal = 0;
$charactertotal = 0;
if ($ops_to_be_paid) {
foreach ($ops_to_be_paid as $op) {
$id = $op->lc_op_id;
$opstotal += $op->total;
$participants = yapeal
::complexQuery("SELECT rc.* FROM lc_opmember om INNER JOIN user_account ua ON ua.user_id = om.user_id INNER JOIN yap_utilRegisteredCharacter rc ON ua.account_id = rc.userID WHERE om.lc_op_id = ? AND isMain = 1 GROUP BY ua.user_id", array($id));
$participantnr = count($participants);
if ($participants) {
foreach ($participants as $member) {
$characters_to_pay[$member->characterID]['name'] = $member->name;
$characters_to_pay[$member->characterID]['payment'] += $op->total/$participantnr;
$charactertotal += $op->total/$participantnr;
}
}
}
}
$r->set('opstopay', $ops_to_be_paid);
$r->set('characters', $characters_to_pay);
$r->set('chartotal', $charactertotal);
$r->set('opstotal', $opstotal);
}
function paidops(Request &$r) {
list_content
::getInstance()->setType("op")->setPerPage(25)->setConditions(array('where'=>array('paid'=>1)))->listing($r);
}
function dopayment(Request &$r) {
$ops_to_be_paid = yapeal
::complexQuery("SELECT op.name, ol.lc_op_id, SUM(ol.amount*it.price) as total FROM lc_oploot ol INNER JOIN lc_item it ON ol.item_id = it.id INNER JOIN lc_op op ON ol.lc_op_id = op.id WHERE op.confirmed = true AND op.paid = false GROUP BY ol.lc_op_id", array());
if ($ops_to_be_paid) {
foreach ($ops_to_be_paid as $op) {
$pop = lc_op::from_id($op->lc_op_id);
$pop->paid = true;
$pop->update();
}
}
$r->redirect('wormhole/admin');
}
function create(Request &$r) {
$record = $r->get('record');
if ($r->get('submit')) {
$record['notes'] = date($this->dateformat).": Op created<br />";
$newop = lc_op::from_values($record);
$newop->create();
$loot = yapeal
::complexQuery("SELECT * FROM lc_item_optype io INNER JOIN lc_item it ON io.lc_item_id = it.id WHERE io.lc_optype_id = ? AND it.currently_buying = 1", array($newop->optype_id));
foreach ($loot as $item) {
$lootitem = lc_oploot
::from_values(array(
'name' => $item->name,
'item_id' => $item->lc_item_id,
'lc_op_id' => $newop->id,
'amount' => 0,
'price' => $item->price
));
$lootitem->create();
}
$r->redirect('wormhole');
}
$r->set('types', lc_optype::select());
$r->set('cans', yapeal
::complexQuery("SELECT oc.id, oc.name FROM lc_opcan oc LEFT JOIN lc_op op ON oc.id = op.opcan_id AND op.paid IS false WHERE op.opcan_id IS NULL ORDER BY oc.name ASC", array()));
}
function op(Request &$r, $id) {
$op = lc_op::from_id($id);
$opitems = yapeal
::complexQuery("SELECT ol.id, ol.name, IF(ol.amount IS NOT NULL, ol.amount, 0) AS amount, ol.price, it.type_id FROM lc_oploot ol INNER JOIN lc_item it ON ol.item_id = it.id WHERE ol.lc_op_id = ? ORDER BY ol.name ASC", array($op->id));
$total = 0;
if ($opitems) {
foreach ($opitems as $item) {
$total += $item->price * $item->amount;
}
}
$r->set('total', $total);
if ($r->get('loot')) {
$loot = $r->get('loot');
foreach ($opitems as $item) {
if ($item->amount != $loot[$item->id]) {
$newitem = lc_oploot::from_id($item->id);
$newitem->amount = $loot[$item->id];
$newitem->update();
}
}
//$op->notes .= date('d-m-Y H:i:s').": ".$r->user->name." modified loot"."<br />";
$op->update();
}
if ($r->get('add_comment')) {
$op->notes .= date($this->dateformat)." (".$r->user->name."): ".$r->get('add_comment')."<br />";
$op->update();
}
if (user::check_level(3)) {
if ($r->get('addcharacter')) {
list($user_id, $character_id, $character_name) = explode('_', $r->get('addcharacter'));
$newmember = lc_opmember
::from_values(array(
'name' => $character_name,
'character_id' => $character_id,
'lc_op_id' => $id,
'user_id' => $user_id
));
$newmember->create();
}
if ($r->get('canadjust')) {
$op->opcan_id = $r->get('canadjust');
$op->update();
}
$r->set('cans', yapeal
::complexQuery("SELECT oc.id, oc.name FROM lc_opcan oc LEFT JOIN lc_op op ON oc.id = op.opcan_id AND op.paid IS false WHERE op.opcan_id IS NULL ORDER BY oc.name ASC", array()));
$r->set('characters', yapeal
::complexQuery("SELECT rc.name, ua.user_id, rc.characterID FROM yap_utilRegisteredCharacter rc INNER JOIN user_account ua ON rc.userID = ua.account_id ORDER BY rc.name", array()));
}
if ($r->get('loot') || $r->get('comment')) $r->redirect('wormhole/op/'.$id);
$can = lc_opcan::from_id($op->opcan_id);
$optype = lc_optype::from_id($op->optype_id);
$r->set('op', $op);
$r->set('can', $can);
$r->set('optype', $optype);
$opmembers = lc_opmember
::select(array('lc_op_id'=>$op->id));
$r->set('members', $opmembers);
$partofop = false;
foreach ($opmembers as $member) {
if ($member->user_id == $r->user->id) {
$partofop = true;
$r->set('member', $member);
}
}
$r->set('partofop', $partofop);
$trueopmembers = yapeal
::complexQuery("SELECT rc.* FROM lc_opmember om INNER JOIN user_account ua ON ua.user_id = om.user_id INNER JOIN yap_utilRegisteredCharacter rc ON ua.account_id = rc.userID WHERE om.lc_op_id = ? AND isMain = 1 GROUP BY ua.user_id", array($id));
$r->set('part', (count($trueopmembers)>0)?
$total/count($trueopmembers):0);
$r->set('loot', $opitems);
}
function joinop(Request &$r, $opid, $characterID=null) {
if (!$characterID) {
$characterID = $_SERVER['HTTP_EVE_CHARID'];
}
$joiner = yapeal
::complexQuery("SELECT * FROM yap_utilRegisteredCharacter rc INNER JOIN user_account ua ON rc.userID = ua.account_id WHERE rc.characterID = ? AND ua.user_id = ?", array($characterID, $r->user->id), true);
if ($joiner) {
$already_joined = lc_opmember
::select_one(array('user_id'=>$r->user->id, 'character_id'=>$joiner->characterID, 'lc_op_id' => $opid));
if ($already_joined) {
} else {
$opmember = lc_opmember
::from_values(array(
'user_id' => $r->user->id,
'character_id' => $joiner->characterID,
'lc_op_id' => $opid,
'name' => $joiner->name
));
$opmember->create();
$op = lc_op::from_id($opid);
$op->notes .= date($this->dateformat).": ".$joiner->name." joined op<br />";
$op->update();
}
$r->redirect('wormhole/op/'.$opid);
} else {
$r->set('opid', $opid);
$r->set('characters', yapeal
::complexQuery("SELECT * FROM yap_utilRegisteredCharacter rc INNER JOIN user_account ua ON rc.userID = ua.account_id WHERE ua.user_id = ?", array($r->user->id)));
}
}
function kickop(Request &$r, $opid, $opmemberid) {
$member = lc_opmember::from_id($opmemberid);
$op = lc_op::from_id($opid);
$member->kicked = true;
$member->update();
$op->notes .= date($this->dateformat).": ".$member->name." kicked by ".$r->user->name."<br />";
$op->update();
$r->redirect('wormhole/op/'.$op->id);
}
function removeop(Request &$r, $opid, $opmemberid) {
$member = lc_opmember::from_id($opmemberid);
$member->delete();
$r->redirect('wormhole/op/'.$opid);
}
function closeop(Request &$r, $opid) {
$op = lc_op::from_id($opid);
$op->closed = date('Y-m-d H:i:s');
$op->notes .= date($this->dateformat).": ".$r->user->name." closed op<br />";
$op->update();
$r->redirect("wormhole/op/".$op->id);
}
function confirmop(Request &$r, $opid) {
$op = lc_op::from_id($opid);
$op->notes .= date($this->dateformat).": ".$r->user->name." confirmed op<br />";
$op->confirmed = true;
$op->update();
$r->redirect("wormhole/admin");
}
function easypricing(Request &$r, $optype="all", $order='name') {
$items = yapeal
::complexQuery("SELECT DISTINCT it.id, it.type_id, it.name, it.price, it.currently_buying FROM lc_item it INNER JOIN lc_item_optype io ON it.id = io.lc_item_id".$conditions.$ordering, array());
if ($r->get('prices') || $r->get('buying')) {
$prices = $r->get('prices');
$buying = $r->get('buying');
foreach ($items as &$item) {
if ($item->price != $prices[$item->id] || $item->currently_buying != $buying[$item->id]) {
$moditem = lc_item::from_id($item->id);
$moditem->price = $prices[$item->id];
$moditem->currently_buying = (isset($buying[$item->id]))?
true:false;
$item->price = $prices[$item->id];
$item->currently_buying = (isset($buying[$item->id]))?
true:false;
$moditem->update();
}
}
}
$r->set('items', $items);
$r->set('optypes', lc_optype::select());
$r->set('currenttype', $optype);
$r->set('currentorder', $order);
}
function pineeds(Request &$r) {
$needed = yapeal
::complexQuery("SELECT it.name, it.id, it.type_id, it.price, it.currently_buying FROM lc_item it INNER JOIN lc_item_optype io ON it.id = io.lc_item_id WHERE io.lc_optype_id = 5", array());
$r->set('needed', $needed);
}
}
?>