function getItemTypeExtraInfo($itemtypedata) { global $vbphrase; $return = array(); $itemtypes = array(); $itemtypeids = explode(',', $itemtypedata['options']['itemtypeids']); if (count($itemtypeids)) { foreach ($itemtypeids as $itemtypeid) { if (!isset($itemtypes[$itemtypeid])) { $itemtypes[$itemtypeid] = array('itemtype' => newItemType($itemtypeid), 'count' => 1); } else { $itemtypes[$itemtypeid]['count']++; } } foreach ($itemtypes as $itemtypeid => $info) { $itemtype_obj =& $info['itemtype']; if ($itemtype_obj) { $itemtype_obj->getExtraInfo(); $itemtype = $itemtype_obj->data; $return[] = "<strong>{$itemtype['name']}</strong>" . iif($info['count'] > 1, " x<strong style=\"color:red;\">{$info['count']}</strong>") . iif($itemtype['options_processed_list'], "<ul>{$itemtype['options_processed_list']}</ul>"); } } } return $return; }
print_label_row($vbphrase['kbank_exp_base_duration']); print_select_row($vbphrase['kbank_item_duration'], 'duration', $durations); } else { print_radio_row('Item NEVER expires', 'forever', array(1 => 'Yes', 0 => 'No'), 0); print_time_row('Expire Date<dfn>Only work if select NO in "Item NEVER expires"</dfn>', 'exp', $item['expire_time'], false); } print_radio_row('Add Another Item', 'addmore', array(2 => 'Yes, with the same options (ItemType/Auction)', 1 => 'Yes', 0 => 'No'), 2); print_submit_row($vbphrase['add'], 0); } print_cp_footer(); } if ($_GET['do'] == "do_item_update") { $vbulletin->input->clean_array_gpc('p', array('auction' => TYPE_UINT, 'auction_exp' => TYPE_ARRAY, 'itemid' => TYPE_UINT, 'item' => TYPE_ARRAY, 'quantity' => TYPE_UINT, 'forever' => TYPE_UINT, 'exp' => TYPE_ARRAY, 'duration' => TYPE_INT, 'delete' => TYPE_UINT, 'addmore' => TYPE_UINT)); $item = $vbulletin->GPC['item']; $item['options'] = array(); $itemtype_obj = newItemType($item['type']); $itemtype = $itemtype_obj->data; if ($vbulletin->GPC['itemid']) { $edit = true; $item_obj =& newItem($vbulletin->GPC['itemid']); if (!$item_obj) { print_stop_message('kbank_no_permission'); } $item_tmp = $item_obj->data; $item['options'] = $item_tmp['options']; if ($vbulletin->GPC['delete']) { if ($item_obj) { $vbulletin->db->query_write("\n\t\t\t\t\tUPDATE `" . TABLE_PREFIX . "kbank_items`\n\t\t\t\t\tSET status = " . KBANK_ITEM_DELETED . "\n\t\t\t\t\tWHERE itemid = {$vbulletin->GPC[itemid]}"); logkBankAction('admin_item_delete', $vbulletin->GPC['itemid']); //Fix auction notices issue 30-12-2008 updateWarningItem();
} } } } } if (count($manufactures) > 1) { //more than 1 available $account_info = buildAccountChooser($manufactures); } eval('$tmp = "' . fetch_template('kbank_template_produce') . '";'); eval(standard_error($tmp, '', false)); } if ($_GET['do'] == 'do_produce') { $processed = true; $vbulletin->input->clean_array_gpc('p', array('itemtypeid' => TYPE_UINT, 'item' => TYPE_ARRAY, 'receiver' => TYPE_NOHTML, 'quantity' => TYPE_UINT, 'exp' => TYPE_ARRAY, 'duration' => TYPE_UINT)); $itemtype_obj =& newItemType($vbulletin->GPC['itemtypeid']); if (!$itemtype_obj) { print_no_permission(); } $itemtype_obj->getExtraInfo(); $itemtype = $itemtype_obj->data; if (!in_array($userinfo['userid'], $itemtype['manufactureids'])) { print_no_permission(); } $item = $vbulletin->GPC['item']; $item['type'] = $vbulletin->GPC['itemtypeid']; $item['userid'] = $userinfo['userid']; $item['creator'] = $userinfo['userid']; $item['create_time'] = TIMENOW; $item['status'] = KBANK_ITEM_SELLING; if ($itemtype_obj->options['use_duration']) {
function findItemsToWork($userids, $work = false, $allstatus = false, $query_hook = false) { global $vbulletin, $kbank_active_items; if (!$vbulletin->kbank['itemEnabled']) { return false; } $didsomething = false; $userids_query = array(); if ($query_hook['force']) { $userids_query[] = -1; } if (is_numeric($userids)) { $userids = array($userids); } if (is_array($userids)) { foreach ($userids as $userid) { if ($allstatus) { unset($kbank_active_items[$userid]); } if (is_numeric($userid) and $userid > 0 and !isset($kbank_active_items[$userid]) and !in_array($userid, $userids_query)) { $userids_query[] = intval($userid); $kbank_active_items[$userid] = array(); } } } if (count($userids_query) > 0) { $items = $vbulletin->db->query_read("\n\t\t\tSELECT \n\t\t\t\titems.*\n\t\t\t\t,user.username AS username\n\t\t\t" . iif($query_hook['fulljoin'], $query_hook['fulljoin'], "FROM `" . TABLE_PREFIX . "kbank_items` AS items\n\t\t\t\t{$query_hook['join']}\n\t\t\t\tLEFT JOIN `" . TABLE_PREFIX . "user` AS user ON (user.userid = items.userid)") . "\n\t\t\tWHERE (\n\t\t\t\t" . iif($query_hook['idcheckfield'] !== false, iif($query_hook['idcheckfield'], $query_hook['idcheckfield'], 'items.userid') . " in (" . implode(',', $userids_query) . ")") . "\n\t\t\t\t{$query_hook['where']}\n\t\t\t\t)\n\t\t\t\tAND items.status > " . iif(!$allstatus, KBANK_ITEM_AVAILABLE, KBANK_ITEM_DELETED) . "\n\t\t\t\tAND (items.expire_time > " . TIMENOW . "\n\t\t\t\t\tOR items.expire_time < 0)\n\t\t\tORDER BY items.userid ASC, items.type ASC, items.expire_time DESC\n\t\t"); DEVDEBUG('[kBank Item] findItemsToWorks query the database'); $itemdatas = array(); $itemtypeids = array(); while ($itemdata = $vbulletin->db->fetch_array($items)) { $itemdatas[] = $itemdata; $itemtypeids[] = $itemdata['type']; } $vbulletin->db->free_result($items); unset($item); //Prepare itemtypes newItemType($itemtypeids, false, true); //Load items $userids2sort = array(); foreach ($itemdatas as $itemdata) { $item =& newItem($itemdata['itemid'], $itemdata); $kbank_active_items[$itemdata['userid']][$itemdata['itemid']] = $item; if (!in_array($itemdata['userid'], $userids2sort)) { $userids2sort[] = $itemdata['userid']; } } //sorting foreach ($userids2sort as $userid) { if ($userid != -1 and is_array($kbank_active_items[$userid])) { usort($kbank_active_items[$userid], 'findItemsToWork_cmp'); if (count($kbank_active_items[$userid]) > 1) { //fix itemid, only work if more than 1 item $items = array(); foreach ($kbank_active_items[$userid] as $item) { if ($item) { $items[$item->data['itemid']] = $item; } } $kbank_active_items[$userid] = $items; } } } } if ($work) { foreach ($userids as $userid) { if (findItemToWork($userid)) { $didsomething = true; } } } return $didsomething; }
function Item($itemdata) { //create item global $vbulletin; $this->data = $itemdata; if (!is_array($this->data['options'])) { $this->data['options'] = unserialize($this->data['options']); } //load itemtype if (!($this->itemtype = newItemType($this->data['type']))) { trigger_error("Unable to load ItemType #{$this->data['type']}}", E_USER_ERROR); } $this->itemtypedata =& $this->itemtype->data; if ($this->itemtype->options['use_duration'] and !$this->data['options']['duration']) { $this->data['options']['duration'] = $vbulletin->kbank['ItemDurationStep']; //manually adjust duration if missing } //Setup variable for later use $this->vars = array_keys($this->getVars_use()); $this->errors = ''; //Contain errors message $this->skip = false; $this->priority = 5; //Default priority for each item is 5 }