function calculateUserWeight($pUserId = NULL) { global $gBitUser, $gBitSystem; if ($gBitSystem->isFeatureActive('stars_user_weight')) { // allow overriding of currently loaded user if (@BitBase::verifyId($pUserId)) { $tmpUser = new BitPermUser($pUserId); $tmpUser->load(TRUE); } else { $tmpUser =& $gBitUser; } // age relative to site age $query = "SELECT MIN( `registration_date` ) FROM `" . BIT_DB_PREFIX . "users_users`"; $age['site'] = BitDate::getUTCTime() - $this->mDb->getOne($query); $age['user'] = BitDate::getUTCTime() - $tmpUser->getField('registration_date'); $userWeight['age'] = $age['user'] / $age['site']; // permissioning relative to full number of permissions $query = "SELECT COUNT( `perm_name` ) FROM `" . BIT_DB_PREFIX . "users_permissions`"; if ($tmpUser->isAdmin()) { $userWeight['permission'] = 1; } else { $userWeight['permission'] = count($tmpUser->mPerms) / $this->mDb->getOne($query); } // activity - we could to the same using the history as well. $query = "SELECT COUNT( `content_id` ) FROM `" . BIT_DB_PREFIX . "liberty_content` WHERE `user_id`=?"; $activity['user'] = $this->mDb->getOne($query, array($tmpUser->getField('user_id'))); $query = "SELECT COUNT( `content_id` ) FROM `" . BIT_DB_PREFIX . "liberty_content`"; $activity['site'] = $this->mDb->getOne($query); $userWeight['activity'] = $activity['user'] / $activity['site']; // here we can add some weight to various areas $custom['age'] = $gBitSystem->getConfig('stars_weight_age'); $custom['permission'] = $gBitSystem->getConfig('stars_weight_permission'); $custom['activity'] = $gBitSystem->getConfig('stars_weight_activity'); foreach ($userWeight as $type => $value) { ${$type} = 10 * $value * $custom[$type]; if (empty(${$type})) { ${$type} = 1; } } // TODO: run some tests to see if this is a good way of evaluating power of a user // ensure that we always have a positive number here to avoid chaos - this also makes sure new users have at least a bit of a say if (($ret = round(log($age * $permission * $activity, 2))) < 1) { $ret = 1; } } else { $ret = 1; } return $ret; }
<?php // $Id$ // if (!empty($_REQUEST['user_id']) && $_REQUEST['user_id'] != $gBitUser->mUserId) { $gQueryUser = new BitPermUser($_REQUEST['user_id']); $gQueryUser->load(); } else { $gQueryUser =& $gBitUser; } define('NAVBAR_TITLE', tra('Products by') . ' ' . $gQueryUser->getDisplayName(FALSE)); define('HEADING_TITLE', tra('Products by') . ' ' . $gQueryUser->getDisplayName(FALSE)); require_once DIR_FS_MODULES . 'require_languages.php'; $breadcrumb->add(NAVBAR_TITLE); if ($gQueryUser->mUserId == $gBitUser->mUserId) { $listHash['all_status'] = TRUE; } $listHash['user_id'] = $gQueryUser->mUserId; $listHash['thumbnail_size'] = 'small'; /* The cool bitweaver way will have to happen later... - spiderr */ $listHash['user_id'] = $gQueryUser->mUserId; $userProducts = $gBitProduct->getList($listHash); $gBitProduct->invokeServices('content_list_function', $listHash); $gBitSmarty->assign('listProducts', $userProducts); $gBitSmarty->assign('listTitle', tra('Products by') . ' ' . $gQueryUser->getDisplayName(TRUE)); $gBitSmarty->assign('listInfo', $listHash); $gBitSmarty->assign_by_ref('gQueryUser', $gQueryUser); print $gBitSmarty->fetch('bitpackage:bitcommerce/list_products.tpl');
/** * hasAdminBlock * * @access public * @return TRUE on success, FALSE on failure * @deprecated i think this isn't used any more */ function hasAdminBlock() { deprecated("i think this isn't used anymore."); global $gBitUser; // Let's find out if we are have admin perm or a root user $ret = TRUE; if (empty($gBitUser) || $gBitUser->isAdmin()) { $ret = FALSE; } else { // let's try to load up user_id - if successful, we know we have one. $rootUser = new BitPermUser(1); $rootUser->load(); if (!$rootUser->isValid()) { $ret = FALSE; } } return $ret; }
// $Header$ // Copyright (c) 2002-2003, Luis Argerich, Garland Foster, Eduardo Polidor, et. al. // All Rights Reserved. See below for details and a complete list of authors. // Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See http://www.gnu.org/copyleft/lesser.html for details. // This script is used to assign groups to a particular user // ASSIGN USER TO GROUPS // Initialization require_once '../../kernel/setup_inc.php'; $gBitSystem->verifyPermission('p_users_admin'); if (!$gBitUser->userExists(array('user_id' => $_REQUEST["assign_user"]))) { $gBitSystem->fatalError(tra("User doesnt exist")); } $assignUser = new BitPermUser($_REQUEST["assign_user"]); $assignUser->setCacheableObject(FALSE); $assignUser->load(TRUE); if ($assignUser->isAdmin() && !$gBitUser->isAdmin()) { $gBitSystem->fatalError(tra('You cannot modify a system administrator.')); } if (isset($_REQUEST["action"])) { $gBitUser->verifyTicket(); if ($_REQUEST["action"] == 'assign') { $assignUser->addUserToGroup($assignUser->mUserId, $_REQUEST["group_id"]); } elseif ($_REQUEST["action"] == 'removegroup') { $assignUser->removeUserFromGroup($_REQUEST["assign_user"], $_REQUEST["group_id"]); } header('Location: ' . $_SERVER['SCRIPT_NAME'] . '?assign_user='******'set_default'])) { $gBitUser->verifyTicket(); $assignUser->storeUserDefaultGroup($assignUser->mUserId, $_REQUEST['default_group']);
function store($pParamHash) { if ($this->verify($pParamHash)) { global $gBitSystem, $gBitSmarty; $now = $gBitSystem->getUTCTime(); $shoutSum = md5($pParamHash['shout_message']); if (!empty($pParamHash['shout_id'])) { // since this is an update, we need to make sure the cache file is removed $this->mCache->expungeCacheFile($pParamHash['shout_id']); $bindvars = array($pParamHash['shout_message'], $shoutSum, (int) $pParamHash['shout_id']); $query = "UPDATE `" . BIT_DB_PREFIX . "shoutbox` SET `shout_message`=?, `shout_sum`=?\n\t\t\t\t\t\t WHERE `shout_id`=?"; } else { $query = "DELETE FROM `" . BIT_DB_PREFIX . "shoutbox` where `shout_user_id`=? and `shout_time`=? and `shout_sum`=?"; $bindvars = array($pParamHash['shout_user_id'], (int) $now, $shoutSum); $this->mDb->query($query, $bindvars); $query = "INSERT INTO `" . BIT_DB_PREFIX . "shoutbox`( `shout_message`, `shout_user_id`, `to_user_id`, `shout_time`, `shout_sum`, `shout_ip`) VALUES (?,?,?,?,?,?)"; $bindvars = array($pParamHash['shout_message'], $pParamHash['shout_user_id'], $pParamHash['to_user_id'], (int) $now, $shoutSum, $_SERVER['REMOTE_ADDR']); // inform the user user that a message has been posted if ($pParamHash['to_user_id'] != ROOT_USER_ID && $pParamHash['to_user_id'] != ANONYMOUS_USER_ID && $gBitSystem->isFeatureActive('shoutbox_email_notice')) { $gToUser = new BitPermUser($pParamHash['to_user_id']); $gToUser->load(); $gFromUser = new BitPermUser($pParamHash['shout_user_id']); $gFromUser->load(); $gBitSmarty->assign('fromUser', $gFromUser->getDisplayName(TRUE)); $gBitSmarty->assign('sendShoutMessage', $pParamHash['shout_message']); $mail_data = $gBitSmarty->fetch('bitpackage:shoutbox/shoutbox_send_notice.tpl'); $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; $headers .= "From: " . $gBitSystem->getConfig('site_sender_email') . "\r\n"; mail($gToUser->mInfo['email'], tra('A new shoutbox message for you at') . ' ' . $_SERVER["SERVER_NAME"] . ' ' . date('Y-m-d'), $mail_data, $headers); } } $result = $this->mDb->query($query, $bindvars); } return count($this->mErrors) == 0; }
function amazon_process_order($pAmazonOrderId) { global $gAmazonMWS, $gBitUser, $gCommerceSystem, $gBitCustomer, $currencies, $order; $ret = NULL; $request = new MarketplaceWebServiceOrders_Model_GetOrderRequest(); $request->setSellerId(MERCHANT_ID); // @TODO: set request. Action can be passed as MarketplaceWebServiceOrders_Model_GetOrderRequest // object or array of parameters // Set the list of AmazonOrderIds $orderIds = new MarketplaceWebServiceOrders_Model_OrderIdList(); $orderIds->setId(array($pAmazonOrderId)); $request->setAmazonOrderId($orderIds); $holdUser = $gBitUser; $azUser = new BitPermUser($holdUser->lookupHomepage($gCommerceSystem->getConfig('MODULE_PAYMENT_AMAZONMWS_LOCAL_USERNAME', 'amazonmws'))); $azUser->load(); $gBitUser = $azUser; $gBitCustomer = new CommerceCustomer($gBitUser->mUserId); $gBitCustomer->syncBitUser($gBitUser->mInfo); $_SESSION['customer_id'] = $gBitUser->mUserId; try { $response = $gAmazonMWS->getOrder($request); if ($response->isSetGetOrderResult()) { $getOrderResult = $response->getGetOrderResult(); if ($getOrderResult->isSetOrders()) { $oldCwd = getcwd(); chdir(BITCOMMERCE_PKG_PATH); $azOrderList = $getOrderResult->getOrders(); if ($azOrders = $azOrderList->getOrder()) { require_once BITCOMMERCE_PKG_PATH . 'classes/CommerceOrder.php'; $order = new order(); $order->info = array('order_status' => DEFAULT_ORDERS_STATUS_ID, 'subtotal' => 0, 'tax' => 0, 'total' => 0, 'tax_groups' => array(), 'comments' => isset($_SESSION['comments']) ? $_SESSION['comments'] : '', 'ip_address' => $_SERVER['REMOTE_ADDR']); $azOrder = current($azOrders); // Setup delivery address if ($orderTotal = $azOrder->getOrderTotal()) { $order->info['total'] = $orderTotal->getAmount(); $order->info['currency'] = $orderTotal->getCurrencyCode(); $order->info['currency_value'] = $currencies->currencies[$order->info['currency']]['currency_value']; } if ($shippingAddress = $azOrder->getShippingAddress()) { $country = zen_get_countries(zen_get_country_id($shippingAddress->getCountryCode()), TRUE); $zoneName = zen_get_zone_name_by_code($country['countries_id'], $shippingAddress->getStateOrRegion()); $order->delivery = array('firstname' => substr($shippingAddress->getName(), 0, strpos($shippingAddress->getName(), ' ')), 'lastname' => substr($shippingAddress->getName(), strpos($shippingAddress->getName(), ' ') + 1), 'company' => NULL, 'street_address' => $shippingAddress->getAddressLine1(), 'suburb' => trim($shippingAddress->getAddressLine2() . ' ' . $shippingAddress->getAddressLine3()), 'city' => $shippingAddress->getCity(), 'postcode' => $shippingAddress->getPostalCode(), 'state' => $zoneName, 'country' => $country, 'format_id' => $country['address_format_id'], 'telephone' => $shippingAddress->getPhone(), 'email_address' => NULL); $order->customer = $order->delivery; $order->billing = $order->delivery; } // Setup shipping $shipping = array('cost' => 0); switch ($azOrder->getShipServiceLevel()) { case 'Std US Dom': $shipping['id'] = 'usps_MEDIA'; $shipping['title'] = 'United States Postal Service (USPS Media Mail (1 - 2 Weeks))'; $shipping['code'] = 'USPSREG'; break; } $azOrderItems = amazon_mws_get_order_items($azOrder->getAmazonOrderId()); $azOrderItem = $azOrderItems->getOrderItem(); foreach ($azOrderItem as $azi) { $testSku = $azi->getSellerSKU(); list($productsId, $attrString) = explode(':', $testSku, 2); $productsKey = $productsId . ':ASIN-' . $azi->getASIN(); $order->contents[$productsKey] = $gBitCustomer->mCart->getProductHash($productsKey); $order->contents[$productsKey]['products_quantity'] = $azi->getQuantityOrdered(); $order->contents[$productsKey]['products_name'] = $azi->getTitle(); if ($itemPrice = $azi->getItemPrice()) { // {$itemTax->getCurrencyCode()} $order->contents[$productsKey]['price'] = $itemPrice->getAmount(); $order->contents[$productsKey]['final_price'] = $itemPrice->getAmount(); } if ($itemTax = $azi->getItemTax()) { // {$itemTax->getCurrencyCode()} $order->contents[$productsKey]['tax'] = $itemTax->getAmount(); } if ($shippingPrice = $azi->getShippingPrice()) { // {$itemTax->getCurrencyCode()} $order->info['shipping_cost'] = $shippingPrice->getAmount(); } if (empty($attrString)) { $attrString = $gCommerceSystem->getConfig('MODULE_PAYMENT_AMAZONMWS_DEFAULT_ATTRIBUTES'); } // stock up the attributes if ($attrString && ($attrs = explode(',', $attrString))) { foreach ($attrs as $optionValueId) { $optionId = $order->mDb->getOne("SELECT cpa.`products_options_id` FROM " . TABLE_PRODUCTS_ATTRIBUTES . " cpa WHERE cpa.`products_options_values_id`=?", array($optionValueId)); $order->contents[$productsKey]['attributes'][$optionId . '_' . $optionValueId] = $optionValueId; } } if (!empty($order->contents[$productsKey]['attributes'])) { $attributes = $order->contents[$productsKey]['attributes']; $order->contents[$productsKey]['attributes'] = array(); $subindex = 0; foreach ($attributes as $option => $value) { $optionValues = zen_get_option_value(zen_get_options_id($option), (int) $value); // Determine if attribute is a text attribute and change products array if it is. if ($value == PRODUCTS_OPTIONS_VALUES_TEXT_ID) { $attr_value = $order->contents[$productsKey]['attributes_values'][$option]; } else { $attr_value = $optionValues['products_options_values_name']; } $order->contents[$productsKey]['attributes'][$subindex] = array('option' => $optionValues['products_options_name'], 'value' => $attr_value, 'option_id' => $option, 'value_id' => $value, 'prefix' => $optionValues['price_prefix'], 'price' => $optionValues['options_values_price']); $subindex++; } } $shown_price = zen_add_tax($order->contents[$productsKey]['final_price'], $order->contents[$productsKey]['tax']) * $order->contents[$productsKey]['products_quantity'] + zen_add_tax($order->contents[$productsKey]['onetime_charges'], $order->contents[$productsKey]['tax']); $order->subtotal += $shown_price; $products_tax = $order->contents[$productsKey]['tax']; $products_tax_description = $order->contents[$productsKey]['tax_description']; if (DISPLAY_PRICE_WITH_TAX == 'true') { $order->info['tax'] += $shown_price - $shown_price / ($products_tax < 10 ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)); if (isset($order->info['tax_groups']["{$products_tax_description}"])) { $order->info['tax_groups']["{$products_tax_description}"] += $shown_price - $shown_price / ($products_tax < 10 ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)); } else { $order->info['tax_groups']["{$products_tax_description}"] = $shown_price - $shown_price / ($products_tax < 10 ? "1.0" . str_replace('.', '', $products_tax) : "1." . str_replace('.', '', $products_tax)); } } else { $order->info['tax'] += $products_tax / 100 * $shown_price; if (isset($order->info['tax_groups']["{$products_tax_description}"])) { $order->info['tax_groups']["{$products_tax_description}"] += $products_tax / 100 * $shown_price; } else { $order->info['tax_groups']["{$products_tax_description}"] = $products_tax / 100 * $shown_price; } } $order->info['tax'] = zen_round($order->info['tax'], 2); if ($azi->isSetShippingPrice()) { $shippingPrice = $azi->getShippingPrice(); $shipping['cost'] += $shippingPrice->getAmount(); } } foreach (array('cc_type', 'cc_owner', 'cc_number', 'cc_expires', 'coupon_code') as $key) { $order->info[$key] = NULL; } $order->info['shipping_method'] = $shipping['title']; $order->info['shipping_method_code'] = $shipping['code']; $order->info['shipping_module_code'] = $shipping['id']; $order->info['payment_module_code'] = 'amazonmws'; $order->info['payment_method'] = 'Amazon Order'; $_SESSION['sendto'] = NULL; $_SESSION['shipping'] = $shipping; unset($_SESSION['cot_gv']); require_once DIR_FS_CLASSES . 'order_total.php'; global $order_total_modules; $order_total_modules = new order_total(); $order_totals = $order_total_modules->pre_confirmation_check(); require_once DIR_WS_MODULES . 'payment/amazonmws.php'; $amazon = new amazonmws($azOrder->getAmazonOrderId()); $amazonOutput = $amazon->process(); $order_totals = $order_total_modules->process(); array_splice($order_totals, count($order_totals) - 1, 0, array($amazonOutput)); if ($ordersId = $order->create($order_totals, 2)) { $order->create_add_products($ordersId); $ret = $ordersId; $order->updateStatus(array('status' => MODULE_PAYMENT_AMAZONMWS_INITIAL_ORDER_STATUS_ID)); } } chdir($oldCwd); } } } catch (MarketplaceWebServiceOrders_Exception $ex) { echo "Caught Exception: " . $ex->getMessage() . "\n"; echo "Response Status Code: " . $ex->getStatusCode() . "\n"; echo "Error Code: " . $ex->getErrorCode() . "\n"; echo "Error Type: " . $ex->getErrorType() . "\n"; echo "Request ID: " . $ex->getRequestId() . "\n"; echo "XML: " . $ex->getXML() . "\n"; } $gBitUser = $holdUser; $gBitCustomer = new CommerceCustomer($gBitUser->mUserId); $_SESSION['customer_id'] = $gBitUser->mUserId; return $ret; }
/** * verifyScore Make sure the data is safe to store * @param pParamHash be sure to pass by reference in case we need to make modifcations to the hash * * @param array $pParamHash reference to hash of values that will be used to store the score, they will be modified where necessary * @access private * @return boolean TRUE on success, FALSE on failure - $this->mErrors will contain reason for failure */ function verifyScore(&$pParamHash) { // make sure we're loaded up if editing an existing score if ($this->verifyId($this->mScoreId)) { $this->loadScore(); // make sure the score we're editing matches the game type we've loaded if ($this->mScore['game_type'] == $this->mGame->getGameType()) { $this->mErrors['store_score']['game_type'] = "Mismatched game type on existing score."; } } $pParamHash['store_score'] = array('game_type' => $this->mGame->getGameType()); if (!empty($pParamHash['user_id'])) { $user = new BitPermUser($pParamHash["user_id"]); $user->load(TRUE); if ($user->isValid()) { $pParamHash['store_score']['user_id'] = $pParamHash['user_id']; } else { $this->mErrors['user_id'] = tra('Invalid user id'); } } else { $this->mErrors['user_id'] = tra('Invalid user id'); } if (!empty($pParamHash['score'])) { $pParamHash['store_score']['score'] = (int) $pParamHash['score']; } else { $this->mErrors['score'] = tra('No score submitted'); } if (!empty($pParamHash['comment'])) { $pParamHash['store_score']['comment'] = $pParamHash['comment']; } return count($this->mErrors) == 0; }