public function getSocketConnect() { $userId = Mage::getSingleton('adminhtml/session')->getUserId(); $is_sesson = $this->checkConfigurationChange(); if (!$is_sesson || !is_int($userId)) { $sock = $this->getSocket(); $msg = new xmlrpcmsg('login'); $msg->addParam(new xmlrpcval(self::$odoo_db, "string")); $msg->addParam(new xmlrpcval(self::$odoo_user, "string")); $msg->addParam(new xmlrpcval(self::$odoo_pwd, "string")); $resp = $sock->send($msg); if ($resp->faultCode()) { $userId = $resp->faultString(); } else { $val = $resp->value(); $id = $val->scalarval(); if ($id > 0) { $userId = $id; } else { $userId = 'Invalid Odoo Login Details.'; } } Mage::getSingleton('adminhtml/session')->setUserId($userId); } }
function gFaultXmlRequest($faultCode, $faultString) { global $stylevar; $faultMethod = 'return_fault'; $xml = new xmlrpcmsg($faultMethod); $xml->addParam($faultCode); $xml->addParam($faultString); $rxml = $xml->serialize($stylevar['charset']); return $rxml; }
function __createXmlRpcMsg($server_method, $params_arr) { $xml_val = my_xmlrpc_encode($params_arr); $xml_msg = new xmlrpcmsg($server_method); $xml_msg->addParam($xml_val); return $xml_msg; }
public function syncStoreAtOdoo($store_data) { $response = 0; $auto_warehouse_generation = Mage::getStoreConfig('magerpsync/mobmultishop/auto_warehouse_generation'); $auto_pricelist_generation = Mage::getStoreConfig('magerpsync/mobmultishop/auto_pricelist_generation'); $store_data['auto_warehouse'] = $auto_warehouse_generation; $store_data['auto_pricelist'] = $auto_pricelist_generation; $store_array = php_xmlrpc_encode($store_data); $helper = Mage::helper('magerpsync/connection'); $context = $helper->getOdooContext(); $client = $helper->getClientConnect(); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); $msg = new xmlrpcmsg('execute'); $msg->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg->addParam(new xmlrpcval($userId, "int")); $msg->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg->addParam(new xmlrpcval("magento.store.view", "string")); $msg->addParam(new xmlrpcval("sync_store_view", "string")); $msg->addParam($store_array); $msg->addParam(new xmlrpcval($context, "struct")); $resp = $client->send($msg); if ($resp->faultCode()) { $error = "Sync Error, Store " . $store_data['name'] . " >>" . $resp->faultString(); Mage::log($error, null, 'odoo_connector.log'); } else { $response = 1; $odoo_id = $resp->value()->me["int"]; $store = Mage::getModel("mobmultishop/mobmultishop"); $store->setOdooStoreId($odoo_id); $store->setMageStoreId($store_data['store_id']); $store->setCreatedBy($helper::$mage_user); $store->save(); } return $response; }
public function exportAttributeSet($setName, $setId) { $helper = Mage::helper('magerpsync/connection'); $client = $helper->getClientConnect(); $context = $helper->getOdooContext(); $mapped_ids = $this->getMappedAttributeSetIds(); if (!in_array($setId, $mapped_ids)) { $userId = Mage::getSingleton('adminhtml/session')->getUserId(); $attributeset_array = array('name' => new xmlrpcval($setName, "string"), 'set_id' => new xmlrpcval($setId, "int"), 'created_by' => new xmlrpcval($helper::$mage_user, "string")); $msg = new xmlrpcmsg('execute'); $msg->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg->addParam(new xmlrpcval($userId, "int")); $msg->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg->addParam(new xmlrpcval("magento.attribute.set", "string")); $msg->addParam(new xmlrpcval("create", "string")); $msg->addParam(new xmlrpcval($attributeset_array, "struct")); $msg->addParam(new xmlrpcval($context, "struct")); $resp = $client->send($msg); if ($resp->faultCode()) { $error_message = $resp->faultString(); return array('erp_set_id' => 0, 'success' => false, 'message' => $error_message); } else { $odoo_id = $resp->value()->me["int"]; $mapping_data = array('name' => $setName, 'mage_id' => $setId, 'odoo_id' => $odoo_id, 'created_by' => $helper::$mage_user); $this->setmapping($mapping_data); return array('success' => true, 'erp_set_id' => $odoo_id); } } return array('success' => true); }
function doPing($title, $URI) { include "include/xmlrpc.inc"; $client = new xmlrpc_client("http://sindice.com/xmlrpc/api"); $payload = new xmlrpcmsg("weblogUpdates.ping"); $payload->addParam(new xmlrpcval($title)); $payload->addParam(new xmlrpcval($URI)); $response = $client->send($payload); $xmlresponsestr = $response->serialize(); $xml = simplexml_load_string($xmlresponsestr); $result = $xml->xpath("//value/boolean/text()"); if ($result) { if ($result[0] == "0") { // echo "<p>Submitting $URI to $servicetitle succeeded.</p>"; return; } } else { $err = "Error Code: " . $response->faultCode() . "<br /> Error Message: " . $response->faultString(); // echo "<p>Failed to submit $URI to $servicetitle.</p>"; } }
public function CheckOdooActiveConfig() { $helper = Mage::helper('magerpsync/connection'); $mage_url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB); /*$fields = array('magento_url'=>new xmlrpcval($mage_url, "string"),);*/ $helper->getSocketConnect(); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); if ($userId > 0) { $client = $helper->getClientConnect(); $fields = array('magento_url' => new xmlrpcval($mage_url, "string")); $msg2 = new xmlrpcmsg('execute'); $msg2->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg2->addParam(new xmlrpcval($userId, "int")); $msg2->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg2->addParam(new xmlrpcval("magento.configure", "string")); $msg2->addParam(new xmlrpcval("fetch_connection_info", "string")); $msg2->addParam(new xmlrpcval($fields, "struct")); $resp = $client->send($msg2); $data = $resp->value()->scalarval(); if ($data) { $this->ERP_CATEG = $data['category']->me['array'][0]->me['int']; $this->ERP_LANG = $data['language']->me['string']; $this->ERP_WAREHOUSE = $data['warehouse_id']->me['array'][0]->me['int']; $this->ERP_INSTANCE = $data['id']->me['int']; $this->setToSession(); return true; } } return false; }
public function CheckOdooActiveConfig() { $helper = Mage::helper('magerpsync/connection'); $helper->getSocketConnect(); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); if ($userId > 0) { $mage_url = Mage::getBaseUrl(); $client = $helper->getClientConnect(); $fields = array('magento_url' => new xmlrpcval($mage_url, "string")); $msg2 = new xmlrpcmsg('execute'); $msg2->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg2->addParam(new xmlrpcval($userId, "int")); $msg2->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg2->addParam(new xmlrpcval("magento.configure", "string")); $msg2->addParam(new xmlrpcval("fetch_connection_info", "string")); $msg2->addParam(new xmlrpcval($fields, "struct")); $resp = $client->send($msg2); if ($resp->faultcode()) { $error = $this->__("Fetch Odoo Config Error,") . $resp->faultString(); Mage::log($error, null, 'odoo_connector.log'); } else { $data = $resp->value()->scalarval(); if ($data) { $this->ERP_CATEG = $data['category']->me['array'][0]->me['int']; $this->ERP_LANG = $data['language']->me['string']; $this->ERP_WAREHOUSE = $data['warehouse_id']->me['array'][0]->me['int']; $this->ERP_INSTANCE = $data['id']->me['int']; $this->setToSession(); return true; } } } return false; }
function exec($method, $params = NULL) { $message = new xmlrpcmsg($method); if ($params && is_array($params)) { foreach ($params as $value) { $message->addParam(php_xmlrpc_encode($value)); } } $result = $this->db->send($message, 15); if ($result->faultCode()) { throw new Exception($result->faultString()); } return $result->value(); }
/** * Forward an xmlrpc request to another server, and return to client the response received. * @param xmlrpcmsg $m (see method docs below for a description of the expected parameters) * @return xmlrpcresp */ function forward_request($m) { // create client $timeout = 0; $url = php_xmlrpc_decode($m->getParam(0)); $c = new xmlrpc_client($url); if ($m->getNumParams() > 3) { // we have to set some options onto the client. // Note that if we do not untaint the received values, warnings might be generated... $options = php_xmlrpc_decode($m->getParam(3)); foreach ($options as $key => $val) { switch ($key) { case 'Cookie': break; case 'Credentials': break; case 'RequestCompression': $c->setRequestCompression($val); break; case 'SSLVerifyHost': $c->setSSLVerifyHost($val); break; case 'SSLVerifyPeer': $c->setSSLVerifyPeer($val); break; case 'Timeout': $timeout = (int) $val; break; } // switch } } // build call for remote server /// @todo find a weay to forward client info (such as IP) to server, either /// - as xml comments in the payload, or /// - using std http header conventions, such as X-forwarded-for... $method = php_xmlrpc_decode($m->getParam(1)); $pars = $m->getParam(2); $m = new xmlrpcmsg($method); for ($i = 0; $i < $pars->arraySize(); $i++) { $m->addParam($pars->arraymem($i)); } // add debug info into response we give back to caller xmlrpc_debugmsg("Sending to server {$url} the payload: " . $m->serialize()); return $c->send($m, $timeout); }
function atheme($hostname, $port, $path, $sourceip, $username, $password, $service, $command, $params) { $message = new xmlrpcmsg("atheme.login"); $message->addParam(new xmlrpcval($username, "string")); $message->addParam(new xmlrpcval($password, "string")); $client = new xmlrpc_client($path, $hostname, $port); $response = $client->send($message); $session = NULL; if (!$response->faultCode()) { $session = explode("<string>", $response->serialize()); $session = explode("</string", $session[1]); $session = $session[0]; } else { return "Authorisation failed"; } $message = new xmlrpcmsg("atheme.command"); $message->addParam(new xmlrpcval($session, "string")); $message->addParam(new xmlrpcval($username, "string")); $message->addParam(new xmlrpcval($sourceip, "string")); $message->addParam(new xmlrpcval($service, "string")); $message->addParam(new xmlrpcval($command, "string")); if ($params != NULL) { if (sizeof($params) < 2) { foreach ($params as $param) { $message->addParam(new xmlrpcval($param, "string")); } } else { $firstparam = $params[0]; $secondparam = ""; for ($i = 1; $i < sizeof($params); $i++) { $secondparam .= $params[$i] . " "; } $message->addParam(new xmlrpcval($firstparam, "string")); $message->addParam(new xmlrpcval($secondparam, "string")); } $response = $client->send($message); } if (!$response->faultCode()) { return $response->serialize(); } else { return "Command failed: " . $response->faultString(); } }
public function createOdooOrder($This_order, $pricelist_id, $erpAddressArray) { $odoo_order_id = 0; $partner_id = $erpAddressArray[0]; $partner_invoice_id = $erpAddressArray[1]; $partner_shipping_id = $erpAddressArray[2]; $increment_id = $This_order->getIncrementId(); $helper = Mage::helper('magerpsync/connection'); $client = $helper->getClientConnect(); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); $warehouse_id = Mage::getSingleton('adminhtml/session')->getErpWarehouse(); $order_array = array('partner_id' => new xmlrpcval($partner_id, "int"), 'partner_invoice_id' => new xmlrpcval($partner_invoice_id, "int"), 'partner_shipping_id' => new xmlrpcval($partner_shipping_id, "int"), 'pricelist_id' => new xmlrpcval($pricelist_id, "int"), 'date_order' => new xmlrpcval($This_order->getCreatedAt(), "string"), 'client_order_ref' => new xmlrpcval($increment_id, "string"), 'warehouse_id' => new xmlrpcval($warehouse_id, "int"), 'channel' => new xmlrpcval('magento', "string")); /* Adding Shipping Information*/ if ($This_order->getShippingMethod()) { $shipping_method = $This_order->getShippingMethod(); $shipping_code = explode('_', $shipping_method); if ($shipping_code) { $shipping_code = $shipping_code[0]; $erp_carrier_id = Mage::getModel('magerpsync/carrier')->checkSpecificCarrier($shipping_code); if ($erp_carrier_id > 0) { $order_array['carrier_id'] = new xmlrpcval($erp_carrier_id, "int"); } } } /* Adding Payment Information*/ $payment_method = $This_order->getPayment()->getMethodInstance()->getTitle(); if ($payment_method) { $payment_info = 'Payment Information:- ' . $payment_method; $order_array['note'] = new xmlrpcval($payment_info, "string"); } /* Adding Store Information */ $store_id = $This_order->getStoreId(); $collection = Mage::getModel('mobmultishop/mobmultishop')->getCollection()->addFieldToFilter('mage_store_id', array('eq' => $store_id)); foreach ($collection as $col) { $erp_store_id = $col->getOdooStoreId(); $order_array['wk_shop'] = new xmlrpcval($erp_store_id, "int"); } $msg = new xmlrpcmsg('execute'); $msg->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg->addParam(new xmlrpcval($userId, "int")); $msg->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg->addParam(new xmlrpcval("sale.order", "string")); $msg->addParam(new xmlrpcval("create", "string")); $msg->addParam(new xmlrpcval($order_array, "struct")); $resp = $client->send($msg); if ($resp->faultcode()) { $error = "Export Error, Order " . $increment_id . " >>" . $resp->faultString(); Mage::log($error, null, 'odoo_connector.log'); } else { $odoo_order_id = $resp->value()->me["int"]; } return $odoo_order_id; }
public function Erp_customer_create($customer_array, $mage_customer_id, $mage_address_id) { $odoo_id = 0; $helper = Mage::helper('magerpsync/connection'); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); $client = $helper->getClientConnect(); $context = $helper->getOdooContext(); $customer = Mage::getModel('customer/customer')->load($mage_customer_id); $mage_id = $customer->getStoreId(); $language_mapping = Mage::getModel('mobmultilang/mobmultilang')->getCollection()->addFieldToFilter('mage_store_id', array('eq' => $mage_id)); $erp_lang = ''; foreach ($language_mapping as $mapping) { $erp_lang = $mapping->getOdooLang(); } $customer_array['lang'] = new xmlrpcval($erp_lang, "string"); $msg = new xmlrpcmsg('execute'); $msg->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg->addParam(new xmlrpcval($userId, "int")); $msg->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg->addParam(new xmlrpcval("res.partner", "string")); $msg->addParam(new xmlrpcval("create", "string")); $msg->addParam(new xmlrpcval($customer_array, "struct")); $msg->addParam(new xmlrpcval($context, "struct")); $resp = $client->send($msg); if ($resp->faultCode()) { $error = "Export Error, Customer Id " . $mage_customer_id . "(" . $mage_address_id . ") >>" . $resp->faultString(); $response['odoo_id'] = 0; $response['error'] = $error; Mage::log($error, null, 'odoo_connector.log'); } else { $odoo_id = $resp->value()->me["int"]; /* entry inside Mapping table*/ if ($odoo_id && $mage_customer_id && $mage_address_id) { $mapping_data = array('erp_customer_id' => $odoo_id, 'mage_customer_id' => $mage_customer_id, 'mage_address_id' => $mage_address_id, 'created_by' => $helper::$mage_user); Mage::getModel("magerpsync/magerpsync")->mappingerp($mapping_data); if ($odoo_id > 0 && $mage_address_id) { $map_array = array('cus_name' => new xmlrpcval($odoo_id, "int"), 'oe_customer_id' => new xmlrpcval($odoo_id, "int"), 'mag_customer_id' => new xmlrpcval($mage_customer_id, "string"), 'mag_address_id' => new xmlrpcval($mage_address_id, "string"), 'created_by' => new xmlrpcval($helper::$mage_user, "string"), 'instance_id' => $context['instance_id']); $map = new xmlrpcmsg('execute'); $map->addParam(new xmlrpcval($helper::$odoo_db, "string")); $map->addParam(new xmlrpcval($userId, "int")); $map->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $map->addParam(new xmlrpcval("magento.customers", "string")); $map->addParam(new xmlrpcval("create", "string")); $map->addParam(new xmlrpcval($map_array, "struct")); $msg->addParam(new xmlrpcval($context, "struct")); $resp = $client->send($map); } } } return $odoo_id; }
private function run($service, $command, $params) { if (!$this->ci->config->item('atheme_enabled')) { return; } $hostname = $this->ci->config->item('atheme_server'); $port = $this->ci->config->item('atheme_port'); $path = $this->ci->config->item('atheme_path'); $username = $this->ci->config->item('atheme_username'); $password = $this->ci->config->item('atheme_password'); $sourceip = '127.0.0.1'; $message = new xmlrpcmsg("atheme.login"); $message->addParam(new xmlrpcval($username, "string")); $message->addParam(new xmlrpcval($password, "string")); $client = new xmlrpc_client($path, $hostname, $port); $response = $client->send($message); $session = NULL; if (!$response->faultCode()) { $session = explode("<string>", $response->serialize()); $session = explode("</string", $session[1]); $session = $session[0]; } else { return "Authorization failed"; } $message = new xmlrpcmsg("atheme.command"); $message->addParam(new xmlrpcval($session, "string")); $message->addParam(new xmlrpcval($username, "string")); $message->addParam(new xmlrpcval($sourceip, "string")); $message->addParam(new xmlrpcval($service, "string")); $message->addParam(new xmlrpcval($command, "string")); if ($params != NULL) { foreach ($params as $param) { $message->addParam(new xmlrpcval($param, "string")); } $response = $client->send($message); } if (!$response->faultCode()) { return $response->serialize(); } else { return "Command failed: " . $response->faultString(); } }
<html> <head><title>xmlrpc</title></head> <body> <?php include "xmlrpc.inc"; if ($HTTP_POST_VARS["server"]) { if ($server == "Userland") { $XP = "/RPC2"; $XS = "206.204.24.2"; } else { $XP = "/xmlrpc/server.php"; $XS = "pingu.heddley.com"; } $f = new xmlrpcmsg('mail.send'); $f->addParam(new xmlrpcval($mailto)); $f->addParam(new xmlrpcval($mailsub)); $f->addParam(new xmlrpcval($mailmsg)); $f->addParam(new xmlrpcval($mailfrom)); $f->addParam(new xmlrpcval($mailcc)); $f->addParam(new xmlrpcval($mailbcc)); $f->addParam(new xmlrpcval("text/plain")); $c = new xmlrpc_client($XP, $XS, 80); $c->setDebug(1); $r = $c->send($f); if (!$r) { die("send to {$XS}{$XP} port 80 failed: network OK?"); } $v = $r->value(); if (!$r->faultCode()) { print "Mail sent OK<BR>\n"; } else {
$whmcs->load_function("gateway"); $GATEWAY = getGatewayVariables("secpay"); if (!$GATEWAY['type']) { exit("Module Not Activated"); } require "../../includes/xmlrpc.php"; $testmode = $_REQUEST['testmode']; if (!$testmode) { $testmode = "live"; } $repeattrans = ""; if (!$_REQUEST['cardcvv']) { $repeattrans = "usage_type=R,repeat=true,"; } $f = new xmlrpcmsg("SECVPN.validateCardFull"); $f->addParam(new xmlrpcval($_REQUEST['merchantid'], "string")); $f->addParam(new xmlrpcval($_REQUEST['vpnpassword'], "string")); $f->addParam(new xmlrpcval($_REQUEST['invoiceid'], "string")); $f->addParam(new xmlrpcval($_REQUEST['ipaddress'], "string")); $f->addParam(new xmlrpcval($_REQUEST['name'], "string")); $f->addParam(new xmlrpcval($_REQUEST['cardnum'], "string")); $f->addParam(new xmlrpcval($_REQUEST['amount'], "string")); $f->addParam(new xmlrpcval("/" . substr($_REQUEST['cardexp'], 2, 2), "string")); $f->addParam(new xmlrpcval($_REQUEST['issuenum'], "string")); $f->addParam(new xmlrpcval("/" . substr($_REQUEST['startdate'], 2, 2), "string")); $f->addParam(new xmlrpcval("", "string")); $f->addParam(new xmlrpcval("", "string")); $f->addParam(new xmlrpcval("name=" . $_REQUEST['clientdetailsfirstname'] . " " . $_REQUEST['clientdetailslastname'] . ",company=" . $_REQUEST['clientdetailscompanyname'] . ",addr_1=" . $_REQUEST['clientdetailsaddress1'] . ",addr_2=" . $_REQUEST['clientdetailsaddress2'] . ",city=" . $_REQUEST['clientdetailscity'] . ",state=" . $_REQUEST['clientdetailstate'] . ",post_code=" . $_REQUEST['clientdetailspostcode'] . ",tel=" . $_REQUEST['clientdetailsphonenumber'] . ",email=" . $_REQUEST['clientdetailsemail'] . "", "string")); $f->addParam(new xmlrpcval($repeattrans . ("test_status=" . $testmode . ",dups=false,currency=") . $_REQUEST['currencycode'] . ",cv2=" . $_REQUEST['cardcvv'], "string")); $c = new xmlrpc_client("/secxmlrpc/make_call", "www.secpay.com", 443); $c->setSSLVerifyHost(0);
function _xmlrpcs_multicall_do_call($server, $call) { if ($call->kindOf() != 'struct') { return _xmlrpcs_multicall_error('notstruct'); } $methName = $call->structmem('methodName'); if (!$methName) { return _xmlrpcs_multicall_error('nomethod'); } if ($methName->kindOf() != 'scalar' || $methName->scalartyp() != 'string') { return _xmlrpcs_multicall_error('notstring'); } if ($methName->scalarval() == 'system.multicall') { return _xmlrpcs_multicall_error('recursion'); } $params = $call->structmem('params'); if (!$params) { return _xmlrpcs_multicall_error('noparams'); } if ($params->kindOf() != 'array') { return _xmlrpcs_multicall_error('notarray'); } $numParams = $params->arraysize(); $msg = new xmlrpcmsg($methName->scalarval()); for ($i = 0; $i < $numParams; $i++) { $msg->addParam($params->arraymem($i)); } $result = $server->execute($msg); if ($result->faultCode() != 0) { return _xmlrpcs_multicall_error($result); // Method returned fault. } return new xmlrpcval(array($result->value()), 'array'); }
/** * Parse an xml chunk containing an xmlrpc request and execute the corresponding * php function registered with the server * @param string $data the xml request * @param string $req_encoding (optional) the charset encoding of the xml request * @return xmlrpcresp * @access private */ function parseRequest($data, $req_encoding = '') { // 2005/05/07 commented and moved into caller function code //if($data=='') //{ // $data=$GLOBALS['HTTP_RAW_POST_DATA']; //} // G. Giunta 2005/02/13: we do NOT expect to receive html entities // so we do not try to convert them into xml character entities //$data = xmlrpc_html_entity_xlate($data); $GLOBALS['_xh'] = array(); $GLOBALS['_xh']['ac'] = ''; $GLOBALS['_xh']['stack'] = array(); $GLOBALS['_xh']['valuestack'] = array(); $GLOBALS['_xh']['params'] = array(); $GLOBALS['_xh']['pt'] = array(); $GLOBALS['_xh']['isf'] = 0; $GLOBALS['_xh']['isf_reason'] = ''; $GLOBALS['_xh']['method'] = false; // so we can check later if we got a methodname or not $GLOBALS['_xh']['rt'] = ''; // decompose incoming XML into request structure if ($req_encoding != '') { if (!in_array($req_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII'))) { error_log('XML-RPC: ' . __METHOD__ . ': invalid charset encoding of received request: ' . $req_encoding); $req_encoding = $GLOBALS['xmlrpc_defencoding']; } /// @BUG this will fail on PHP 5 if charset is not specified in the xml prologue, // the encoding is not UTF8 and there are non-ascii chars in the text... /// @todo use an empty string for php 5 ??? $parser = xml_parser_create($req_encoding); } else { $parser = xml_parser_create(); } xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true); // G. Giunta 2005/02/13: PHP internally uses ISO-8859-1, so we have to tell // the xml parser to give us back data in the expected charset // What if internal encoding is not in one of the 3 allowed? // we use the broadest one, ie. utf8 // This allows to send data which is native in various charset, // by extending xmlrpc_encode_entitites() and setting xmlrpc_internalencoding if (!in_array($GLOBALS['xmlrpc_internalencoding'], array('UTF-8', 'ISO-8859-1', 'US-ASCII'))) { xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, 'UTF-8'); } else { xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']); } if ($this->functions_parameters_type != 'xmlrpcvals') { xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee_fast'); } else { xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee'); } xml_set_character_data_handler($parser, 'xmlrpc_cd'); xml_set_default_handler($parser, 'xmlrpc_dh'); if (!xml_parse($parser, $data, 1)) { // return XML error as a faultCode $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerrxml'] + xml_get_error_code($parser), sprintf('XML error: %s at line %d, column %d', xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser), xml_get_current_column_number($parser))); xml_parser_free($parser); } elseif ($GLOBALS['_xh']['isf']) { xml_parser_free($parser); $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_request'], $GLOBALS['xmlrpcstr']['invalid_request'] . ' ' . $GLOBALS['_xh']['isf_reason']); } else { xml_parser_free($parser); // small layering violation in favor of speed and memory usage: // we should allow the 'execute' method handle this, but in the // most common scenario (xmlrpcvals type server with some methods // registered as phpvals) that would mean a useless encode+decode pass if ($this->functions_parameters_type != 'xmlrpcvals' || isset($this->dmap[$GLOBALS['_xh']['method']]['parameters_type']) && $this->dmap[$GLOBALS['_xh']['method']]['parameters_type'] == 'phpvals') { if ($this->debug > 1) { $this->debugmsg("\n+++PARSED+++\n" . var_export($GLOBALS['_xh']['params'], true) . "\n+++END+++"); } $r = $this->execute($GLOBALS['_xh']['method'], $GLOBALS['_xh']['params'], $GLOBALS['_xh']['pt']); } else { // build an xmlrpcmsg object with data parsed from xml $m = new xmlrpcmsg($GLOBALS['_xh']['method']); // now add parameters in for ($i = 0; $i < count($GLOBALS['_xh']['params']); $i++) { $m->addParam($GLOBALS['_xh']['params'][$i]); } if ($this->debug > 1) { $this->debugmsg("\n+++PARSED+++\n" . var_export($m, true) . "\n+++END+++"); } $r = $this->execute($m); } } return $r; }
public static function getErpTaxArray() { $Tax = array(); $helper = Mage::helper('magerpsync/connection'); $helper->getSocketConnect(); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); if ($userId > 0) { if (!Mage::helper('magerpsync')->CheckOdooActiveConfig()) { array_push($Category, array('label' => Mage::helper('magerpsync')->__('Check Odoo Configuration Default Settings'), 'value' => '')); return $Category; } $context = $helper->getOdooContext(); $client = $helper->getClientConnect(); $key = array(); $msg_ser = new xmlrpcmsg('execute'); $msg_ser->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg_ser->addParam(new xmlrpcval($userId, "int")); $msg_ser->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg_ser->addParam(new xmlrpcval("account.tax", "string")); $msg_ser->addParam(new xmlrpcval("search", "string")); $msg_ser->addParam(new xmlrpcval($key, "array")); $resp0 = $client->send($msg_ser); if ($resp0->faultCode()) { array_push($Tax, array('label' => Mage::helper('magerpsync')->__('Not Available(Error in Fetching)'), 'value' => '')); return $Tax; } else { $val = $resp0->value()->me['array']; $key1 = array(new xmlrpcval('id', 'int'), new xmlrpcval('name', 'string'), new xmlrpcval('amount', 'string')); $msg_ser1 = new xmlrpcmsg('execute'); $msg_ser1->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg_ser1->addParam(new xmlrpcval($userId, "int")); $msg_ser1->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg_ser1->addParam(new xmlrpcval("account.tax", "string")); $msg_ser1->addParam(new xmlrpcval("read", "string")); $msg_ser1->addParam(new xmlrpcval($val, "array")); $msg_ser1->addParam(new xmlrpcval($key1, "array")); $msg_ser1->addParam(new xmlrpcval($context, "struct")); $resp1 = $client->send($msg_ser1); if ($resp1->faultCode()) { $msg = Mage::helper('magerpsync')->__('Not Available- Error: ') . $resp1->faultString(); array_push($Tax, array('label' => $msg, 'value' => '')); return $Tax; } else { $value_array = $resp1->value()->scalarval(); $count = count($value_array); for ($x = 0; $x < $count; $x++) { $id = $value_array[$x]->me['struct']['id']->me['int']; $name = $value_array[$x]->me['struct']['name']->me['string'] . ' (' . $value_array[$x]->me['struct']['amount']->me['double'] * 100 . '%)'; array_push($Tax, array('value' => $id, 'label' => Mage::helper('adminhtml')->__($name))); } } } array_unshift($Tax, array('label' => Mage::helper('magerpsync')->__('--Select Odoo Tax--'), 'value' => '')); return $Tax; } else { array_push($Tax, array('label' => Mage::helper('magerpsync')->__('Not Available(Connection Error)'), 'value' => '')); return $Tax; } }
public function deliverOdooOrder($This_order, $erp_order_id) { $shipment_no = false; $tracknums = false; $trackCarrier = false; $trackArray = array(); $helper = Mage::helper('magerpsync/connection'); $client = $helper->getClientConnect(); $context = $helper->getOdooContext(); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); $increment_id = $This_order->getIncrementId(); $shipment = $This_order->getShipmentsCollection(); foreach ($shipment as $ship) { $shipment_no = $ship->getIncrementId(); foreach ($ship->getAllTracks() as $tracknum) { $tracknums = $tracknum->getNumber(); $trackCarrier = $tracknum->getCarrierCode(); $trackinfo = array('magento_carrier_tracking_ref' => new xmlrpcval($tracknums, "string"), 'magento_carrier_code' => new xmlrpcval($trackCarrier, "string")); array_push($trackArray, new xmlrpcval($trackinfo, "struct")); } break; } $shipment_array = array('order_id' => new xmlrpcval($erp_order_id, "int"), 'mage_ship_number' => new xmlrpcval($shipment_no, "string"), 'carrier_tracking_ref' => new xmlrpcval($tracknums, "string"), 'carrier_code' => new xmlrpcval($trackCarrier, "string"), 'track_array' => new xmlrpcval($trackArray, "array")); $msg = new xmlrpcmsg('execute'); $msg->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg->addParam(new xmlrpcval($userId, "int")); $msg->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg->addParam(new xmlrpcval("bridge.backbone", "string")); $msg->addParam(new xmlrpcval("order_shipped", "string")); $msg->addParam(new xmlrpcval($shipment_array, "struct")); $msg->addParam(new xmlrpcval($context, "struct")); $resp = $client->send($msg); if ($resp->faultcode()) { $error = "Sync Error, Order " . $increment_id . " During Shipment >>" . $resp->faultString(); Mage::log($error, null, 'odoo_connector.log'); return false; } return true; }
public static function getErpPaymentArray() { $Payment = array(); $helper = Mage::helper('magerpsync/connection'); $helper->getSocketConnect(); $context = $helper->getOdooContext(); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); if ($userId > 0) { if (!Mage::helper('magerpsync')->CheckOdooActiveConfig()) { array_push($Payment, array('label' => 'At Odoo Magento Connection Not Found', 'value' => '')); return $Payment; } $client = $helper->getClientConnect(); $key1 = array(new xmlrpcval('bank', 'string'), new xmlrpcval('cash', 'string')); $key = array(new xmlrpcval(array(new xmlrpcval('type', "string"), new xmlrpcval('in', "string"), new xmlrpcval($key1, "array")), "array")); $msg_ser = new xmlrpcmsg('execute'); $msg_ser->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg_ser->addParam(new xmlrpcval($userId, "int")); $msg_ser->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg_ser->addParam(new xmlrpcval("account.journal", "string")); $msg_ser->addParam(new xmlrpcval("search", "string")); $msg_ser->addParam(new xmlrpcval($key, "array")); $resp0 = $client->send($msg_ser); if ($resp0->faultCode()) { array_push($Payment, array('label' => 'Not Available(Error in Fetching)', 'value' => '')); return $Payment; } else { $val = $resp0->value()->me['array']; $key1 = array(new xmlrpcval('id', 'int'), new xmlrpcval('name', 'string')); $msg_ser1 = new xmlrpcmsg('execute'); $msg_ser1->addParam(new xmlrpcval($helper::$odoo_db, "string")); $msg_ser1->addParam(new xmlrpcval($userId, "int")); $msg_ser1->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $msg_ser1->addParam(new xmlrpcval("account.journal", "string")); $msg_ser1->addParam(new xmlrpcval("read", "string")); $msg_ser1->addParam(new xmlrpcval($val, "array")); $msg_ser1->addParam(new xmlrpcval($key1, "array")); $msg_ser1->addParam(new xmlrpcval($context, "struct")); $resp1 = $client->send($msg_ser1); if ($resp1->faultCode()) { $msg = 'Not Available- Error: ' . $resp1->faultString(); array_push($Payment, array('label' => $msg, 'value' => '')); return $Payment; } else { $value_array = $resp1->value()->scalarval(); $count = count($value_array); for ($x = 0; $x < $count; $x++) { $id = $value_array[$x]->me['struct']['id']->me['int']; $name = $value_array[$x]->me['struct']['name']->me['string']; array_push($Payment, array('value' => $id, 'label' => Mage::helper('adminhtml')->__($name))); } } } array_unshift($Payment, array('label' => '--Select Odoo Payment Method--', 'value' => '')); return $Payment; } else { array_push($Payment, array('label' => 'Not Available(Connection Error)', 'value' => '')); return $Payment; } }
print "<h3>Testing value serialization</h3>\n"; $v = new xmlrpcval(23, "int"); print "<PRE>" . htmlentities($v->serialize()) . "</PRE>"; $v = new xmlrpcval("What are you saying? >> << &&"); print "<PRE>" . htmlentities($v->serialize()) . "</PRE>"; $v = new xmlrpcval(array(new xmlrpcval("ABCDEFHIJ"), new xmlrpcval(1234, 'int'), new xmlrpcval(1, 'boolean')), "array"); print "<PRE>" . htmlentities($v->serialize()) . "</PRE>"; $v = new xmlrpcval(array("thearray" => new xmlrpcval(array(new xmlrpcval("ABCDEFHIJ"), new xmlrpcval(1234, 'int'), new xmlrpcval(1, 'boolean'), new xmlrpcval(0, 'boolean'), new xmlrpcval(true, 'boolean'), new xmlrpcval(false, 'boolean')), "array"), "theint" => new xmlrpcval(23, 'int'), "thestring" => new xmlrpcval("foobarwhizz"), "thestruct" => new xmlrpcval(array("one" => new xmlrpcval(1, 'int'), "two" => new xmlrpcval(2, 'int')), "struct")), "struct"); print "<PRE>" . htmlentities($v->serialize()) . "</PRE>"; $w = new xmlrpcval(array($v, new xmlrpcval("That was the struct!")), "array"); print "<PRE>" . htmlentities($w->serialize()) . "</PRE>"; $w = new xmlrpcval("Mary had a little lamb,\nWhose fleece was white as snow,\nAnd everywhere that Mary went\nthe lamb was sure to go.\n\nMary had a little lamb\nShe tied it to a pylon\nTen thousand volts went down its back\nAnd turned it into nylon", "base64"); print "<PRE>" . htmlentities($w->serialize()) . "</PRE>"; print "<PRE>Value of base64 string is: '" . $w->scalarval() . "'</PRE>"; $f->method(''); $f->addParam(new xmlrpcval("41", "int")); print "<h3>Testing request serialization</h3>\n"; $op = $f->serialize(); print "<PRE>" . htmlentities($op) . "</PRE>"; print "<h3>Testing ISO date format</h3><pre>\n"; $t = time(); $date = iso8601_encode($t); print "Now is {$t} --> {$date}\n"; print "Or in UTC, that is " . iso8601_encode($t, 1) . "\n"; $tb = iso8601_decode($date); print "That is to say {$date} --> {$tb}\n"; print "Which comes out at " . iso8601_encode($tb) . "\n"; print "Which was the time in UTC at " . iso8601_decode($date, 1) . "\n"; print "</pre>\n"; ?> <hr/>
/** * Attempt to boxcar $msgs via system.multicall. * Returns either an array of xmlrpcreponses, an xmlrpc error response * or false (when received response does not respect valid multicall syntax) * @access private */ function _try_multicall($msgs, $timeout, $method) { // Construct multicall message $calls = array(); foreach ($msgs as $msg) { $call['methodName'] = new xmlrpcval($msg->method(), 'string'); $numParams = $msg->getNumParams(); $params = array(); for ($i = 0; $i < $numParams; $i++) { $params[$i] = $msg->getParam($i); } $call['params'] = new xmlrpcval($params, 'array'); $calls[] = new xmlrpcval($call, 'struct'); } $multicall = new xmlrpcmsg('system.multicall'); $multicall->addParam(new xmlrpcval($calls, 'array')); // Attempt RPC call $result =& $this->send($multicall, $timeout, $method); if ($result->faultCode() != 0) { // call to system.multicall failed return $result; } // Unpack responses. $rets = $result->value(); if ($this->return_type == 'xml') { return $rets; } else { if ($this->return_type == 'phpvals') { ///@todo test this code branch... $rets = $result->value(); if (!is_array($rets)) { return false; // bad return type from system.multicall } $numRets = count($rets); if ($numRets != count($msgs)) { return false; // wrong number of return values. } $response = array(); for ($i = 0; $i < $numRets; $i++) { $val = $rets[$i]; if (!is_array($val)) { return false; } switch (count($val)) { case 1: if (!isset($val[0])) { return false; // Bad value } // Normal return value $response[$i] = new xmlrpcresp($val[0], 0, '', 'phpvals'); break; case 2: /// @todo remove usage of @: it is apparently quite slow $code = @$val['faultCode']; if (!is_int($code)) { return false; } $str = @$val['faultString']; if (!is_string($str)) { return false; } $response[$i] = new xmlrpcresp(0, $code, $str); break; default: return false; } } return $response; } else { $rets = $result->value(); if ($rets->kindOf() != 'array') { return false; // bad return type from system.multicall } $numRets = $rets->arraysize(); if ($numRets != count($msgs)) { return false; // wrong number of return values. } $response = array(); for ($i = 0; $i < $numRets; $i++) { $val = $rets->arraymem($i); switch ($val->kindOf()) { case 'array': if ($val->arraysize() != 1) { return false; // Bad value } // Normal return value $response[$i] = new xmlrpcresp($val->arraymem(0)); break; case 'struct': $code = $val->structmem('faultCode'); if ($code->kindOf() != 'scalar' || $code->scalartyp() != 'int') { return false; } $str = $val->structmem('faultString'); if ($str->kindOf() != 'scalar' || $str->scalartyp() != 'string') { return false; } $response[$i] = new xmlrpcresp(0, $code->scalarval(), $str->scalarval()); break; default: return false; } } return $response; } } }
for ($i = 0; $i < $v->arraysize(); $i++) { $mname = $v->arraymem($i); print "<H3>" . $mname->scalarval() . "</H3>\n"; $f = new xmlrpcmsg('system.methodHelp'); $f->addParam(new xmlrpcval($mname->scalarval(), "string")); $w = rpc_call($c, $f); if ($w) { $txt = $w->scalarval(); if ($txt != "") { print "<H4>Documentation</H4><P>{$txt}</P>\n"; } else { print "<P>No documentation available.</P>\n"; } } $f = new xmlrpcmsg('system.methodSignature'); $f->addParam(new xmlrpcval($mname->scalarval(), "string")); $w = rpc_call($c, $f); if ($w) { print "<H4>Signature</H4><P>\n"; if ($w->kindOf() == "array") { for ($j = 0; $j < $w->arraysize(); $j++) { $x = $w->arraymem($j); $ret = $x->arraymem(0); print "<CODE>" . $ret->scalarval() . " " . $mname->scalarval() . "("; if ($x->arraysize() > 1) { for ($k = 1; $k < $x->arraysize(); $k++) { $y = $x->arraymem($k); print $y->scalarval(); if ($k < $x->arraysize() - 1) { print ", "; }
protected function _mapOnErp($mage_id, $erp_id) { $helper = Mage::helper('magerpsync/connection'); $helper->getSocketConnect(); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); if ($userId > 0) { $client = $helper->getClientConnect(); $map_array = array('cat_name' => new xmlrpcval($erp_id, "int"), 'oe_category_id' => new xmlrpcval($erp_id, "int"), 'mag_category_id' => new xmlrpcval($mage_id, "int"), 'created_by' => new xmlrpcval('Manual Mapping', "string")); $catg_map = new xmlrpcmsg('execute'); $catg_map->addParam(new xmlrpcval($helper::$odoo_db, "string")); $catg_map->addParam(new xmlrpcval($userId, "int")); $catg_map->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $catg_map->addParam(new xmlrpcval("magento.category", "string")); $catg_map->addParam(new xmlrpcval("create", "string")); $catg_map->addParam(new xmlrpcval($map_array, "struct")); $catg_map_resp = $client->send($catg_map); } }
function snoop_remove_xmlrpc($rpcuser, $host, $remote = 0) { if ($remote == FALSE) { $snoop_setter = $_SERVER['USER']; } else { $snoop_setter = $remote; } $hostinfo = planworld_node_getinfo($host); $f = new xmlrpcmsg('planworld.snoop.remove'); $f->addParam(new xmlrpcval($rpcuser, "string")); $f->addParam(new xmlrpcval($snoop_setter . "@planwatch.org", "string")); $c = new xmlrpc_client($hostinfo["directory"], $hostinfo["server"], $hostinfo["port"]); $c->setDebug(0); $r = $c->send($f); if (!$r) { $success = FALSE; } else { $v = $r->value(); if (!$r->faultCode()) { if ($v->kindOf() == 'array') { $success = TRUE; } } else { $success = FALSE; } } // If the snoop remove failed for any reason, add it to the queue // for later sending. This is done by creating a TIMECODE.remsnoop file in // FILE_ROOT/stats which gets picked up by the queue processor in pt.php if ($success == FALSE) { $queue_array = array("snoop_setter" => $snoop_setter, "snoop_target" => $rpcuser, "snoop_host" => $host); file_put_contents("{$_SERVER['FILE_ROOT']}/stats/" . array_sum(explode(" ", microtime())) . ".remsnoop", serialize($queue_array)); } return $success; }
/** * Parse an xml chunk containing an xmlrpc request and execute the corresponding * php function registered with the server * @param string $data the xml request * @param string $req_encoding (optional) the charset encoding of the xml request * @return xmlrpcresp * @access private */ function parseRequest($data, $req_encoding = '') { // 2005/05/07 commented and moved into caller function code //if($data=='') //{ // $data=$GLOBALS['HTTP_RAW_POST_DATA']; //} // G. Giunta 2005/02/13: we do NOT expect to receive html entities // so we do not try to convert them into xml character entities //$data = xmlrpc_html_entity_xlate($data); $GLOBALS['_xh'] = array(); $GLOBALS['_xh']['ac'] = ''; $GLOBALS['_xh']['stack'] = array(); $GLOBALS['_xh']['valuestack'] = array(); $GLOBALS['_xh']['params'] = array(); $GLOBALS['_xh']['pt'] = array(); $GLOBALS['_xh']['isf'] = 0; $GLOBALS['_xh']['isf_reason'] = ''; $GLOBALS['_xh']['method'] = false; // so we can check later if we got a methodname or not $GLOBALS['_xh']['rt'] = ''; // decompose incoming XML into request structure if ($req_encoding != '') { if (!in_array($req_encoding, array('UTF-8', 'ISO-8859-1', 'US-ASCII'))) { error_log('XML-RPC: xmlrpc_server::parseRequest: invalid charset encoding of received request: ' . $req_encoding); $req_encoding = $GLOBALS['xmlrpc_defencoding']; } /// @BUG this will fail on PHP 5 if charset is not specified in the xml prologue, // the encoding is not UTF8 and there are non-ascii chars in the text... $parser = xml_parser_create($req_encoding); } else { $parser = xml_parser_create(); } xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, true); // G. Giunta 2005/02/13: PHP internally uses ISO-8859-1, so we have to tell // the xml parser to give us back data in the expected charset xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $GLOBALS['xmlrpc_internalencoding']); if ($this->functions_parameters_type != 'xmlrpcvals') { xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee_fast'); } else { xml_set_element_handler($parser, 'xmlrpc_se', 'xmlrpc_ee'); } xml_set_character_data_handler($parser, 'xmlrpc_cd'); xml_set_default_handler($parser, 'xmlrpc_dh'); if (!xml_parse($parser, $data, 1)) { // return XML error as a faultCode $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerrxml'] + xml_get_error_code($parser), sprintf('XML error: %s at line %d, column %d', xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser), xml_get_current_column_number($parser))); xml_parser_free($parser); } elseif ($GLOBALS['_xh']['isf']) { xml_parser_free($parser); $r = new xmlrpcresp(0, $GLOBALS['xmlrpcerr']['invalid_request'], $GLOBALS['xmlrpcstr']['invalid_request'] . ' ' . $GLOBALS['_xh']['isf_reason']); } else { xml_parser_free($parser); if ($this->functions_parameters_type != 'xmlrpcvals') { if ($this->debug > 1) { $this->debugmsg("\n+++PARSED+++\n" . var_export($GLOBALS['_xh']['params'], true) . "\n+++END+++"); } $r = $this->execute($GLOBALS['_xh']['method'], $GLOBALS['_xh']['params'], $GLOBALS['_xh']['pt']); } else { // build an xmlrpcmsg object with data parsed from xml $m = new xmlrpcmsg($GLOBALS['_xh']['method']); // now add parameters in for ($i = 0; $i < count($GLOBALS['_xh']['params']); $i++) { $m->addParam($GLOBALS['_xh']['params'][$i]); } if ($this->debug > 1) { $this->debugmsg("\n+++PARSED+++\n" . var_export($m, true) . "\n+++END+++"); } $r = $this->execute($m); } } return $r; }
<?php include "xmlrpc.inc"; // Play nice to PHP 5 installations with REGISTER_LONG_ARRAYS off if (!isset($HTTP_POST_VARS) && isset($_POST)) { $HTTP_POST_VARS = $_POST; } if (isset($HTTP_POST_VARS["server"]) && $HTTP_POST_VARS["server"]) { if ($HTTP_POST_VARS["server"] == "Userland") { $XP = "/RPC2"; $XS = "206.204.24.2"; } else { $XP = "/xmlrpc/server.php"; $XS = "pingu.heddley.com"; } $f = new xmlrpcmsg('mail.send'); $f->addParam(new xmlrpcval($HTTP_POST_VARS["mailto"])); $f->addParam(new xmlrpcval($HTTP_POST_VARS["mailsub"])); $f->addParam(new xmlrpcval($HTTP_POST_VARS["mailmsg"])); $f->addParam(new xmlrpcval($HTTP_POST_VARS["mailfrom"])); $f->addParam(new xmlrpcval($HTTP_POST_VARS["mailcc"])); $f->addParam(new xmlrpcval($HTTP_POST_VARS["mailbcc"])); $f->addParam(new xmlrpcval("text/plain")); $c = new xmlrpc_client($XP, $XS, 80); $c->setDebug(2); $r =& $c->send($f); if (!$r->faultCode()) { print "Mail sent OK<br/>\n"; } else { print "<fonr color=\"red\">"; print "Mail send failed<br/>\n"; print "Fault: ";
protected function _mapOnErp($mage_product_id, $erp_product_id) { $helper = Mage::helper('magerpsync/connection'); $helper->getSocketConnect(); $userId = Mage::getSingleton('adminhtml/session')->getUserId(); if ($userId > 0) { $client = $helper->getClientConnect(); $map_array = array('template_name' => new xmlrpcval($erp_product_id, "int"), 'erp_template_id' => new xmlrpcval($erp_product_id, "int"), 'mage_product_id' => new xmlrpcval($mage_product_id, "int"), 'created_by' => new xmlrpcval('Manual Mapping', "string")); $map_data = new xmlrpcmsg('execute'); $map_data->addParam(new xmlrpcval($helper::$odoo_db, "string")); $map_data->addParam(new xmlrpcval($userId, "int")); $map_data->addParam(new xmlrpcval($helper::$odoo_pwd, "string")); $map_data->addParam(new xmlrpcval("magento.product.template", "string")); $map_data->addParam(new xmlrpcval("create", "string")); $map_data->addParam(new xmlrpcval($map_array, "struct")); $resp = $client->send($map_data); if ($resp->errno != 0) { return false; } else { return true; } } }
public function send( $methodName, $functionArgs = array() ) { $message = new xmlrpcmsg($methodName); if ($methodName != 'system.connect') { $timestamp = (string)time(); $nonce = $this->getUniqueCode("10"); // prepare a hash $hash_parameters = array( $timestamp, $this->domain, $nonce, $methodName ); $hash = hash_hmac("sha256", implode(';', $hash_parameters), $this->kid); $message->addParam(new xmlrpcval($hash, "string")); $message->addParam(new xmlrpcval($this->domain, "string")); $message->addParam(new xmlrpcval($timestamp, "string")); $message->addParam(new xmlrpcval($nonce, "string")); $message->addParam(new xmlrpcval($this->session_id, "string")); foreach($functionArgs as $arg) { $message->addParam(new xmlrpcval($arg['value'], $arg['type'])); } } $result = $this->client->send($message); return rpcexample_rpc_convert($result->value()); }