Advertisement
Guest User

Untitled

a guest
Sep 13th, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.96 KB | None | 0 0
  1. #vim ValueLeaf.php
  2. include_once dirname(__FILE__) . '/../ISMSProvider.php';
  3. include_once 'vtlib/Vtiger/Net/Client.php';
  4.  
  5. class ValueLeaf implements ISMSProvider {
  6.  
  7. private $_username;
  8. private $_password;
  9. private $_parameters = array();
  10.  
  11. const SERVICE_URI = 'sms.valueleaf.com';
  12.  
  13. **//I added senderid and response to array to include in the url.**
  14. private static $REQUIRED_PARAMETERS = array('senderid','response');
  15.  
  16. function __construct() {
  17. }
  18.  
  19. public function setAuthParameters($username, $password) {
  20. $this->_username = $username;
  21. $this->_password = $password;
  22. }
  23.  
  24. public function setParameter($key, $value) {
  25. $this->_parameters[$key] = $value;
  26. }
  27.  
  28. public function getParameter($key, $defvalue = false) {
  29. if(isset($this->_parameters[$key])) {
  30. return $this->_parameters[$key];
  31. }
  32. return $defvalue;
  33. }
  34. public function getRequiredParams() {
  35. return self::$REQUIRED_PARAMETERS;
  36. }
  37.  
  38. public function getServiceURL($type = false) {
  39. if($type) {
  40. switch(strtoupper($type)) {
  41.  
  42. **//As I dont use authentication i commented it.**
  43. case self::SERVICE_AUTH: return self::SERVICE_URI; // . '/http/auth';
  44. case self::SERVICE_SEND: return self::SERVICE_URI . '/sms/user/urllongsms.php';
  45. case self::SERVICE_QUERY: return self::SERVICE_URI . '/sms/user/responce.php';
  46.  
  47. }
  48. }
  49. return false;
  50. }
  51.  
  52. protected function prepareParameters() {
  53. **//extended to get and set the additional parameters**
  54. $params = array('username' => $this->_username, 'pass' => $this->_password, 'senderid' => $this->senderid,'response'=> $this->response);
  55. //$params = array();
  56. foreach (self::$REQUIRED_PARAMETERS as $key) {
  57. $params[$key] = $this->getParameter($key);
  58. }
  59. return $params;
  60. }
  61.  
  62. **//Here I'm little confused.Actually in the actual file its $tonumbers. But in the http api its like dest_mobileno=91988000000. I dont know where to change it.**
  63. public function send($message, $tonumbers) {
  64. if(!is_array($tonumbers)) {
  65. $tonumbers = array($tonumbers);
  66. }
  67.  
  68. $params = $this->prepareParameters();
  69. $params['text'] = $message;
  70. $params['to'] = implode(',', $tonumbers);
  71.  
  72. $serviceURL = $this->getServiceURL(self::SERVICE_SEND);
  73. $httpClient = new Vtiger_Net_Client($serviceURL);
  74. $response = $httpClient->doPost($params);
  75.  
  76. $responseLines = split("n", $response);
  77.  
  78. $results = array();
  79. foreach($responseLines as $responseLine) {
  80.  
  81. $responseLine = trim($responseLine);
  82. if(empty($responseLine)) continue;
  83.  
  84. $result = array( 'error' => false, 'statusmessage' => '' );
  85. if(preg_match("/ERR:(.*)/", trim($responseLine), $matches)) {
  86. $result['error'] = true;
  87. $result['to'] = $tonumbers[$i++];
  88. $result['statusmessage'] = $matches[0]; // Complete error message
  89. } else if(preg_match("/ID: ([^ ]+)TO:(.*)/", $responseLine, $matches)) {
  90. $result['id'] = trim($matches[1]);
  91. $result['to'] = trim($matches[2]);
  92. $result['status'] = self::MSG_STATUS_PROCESSING;
  93.  
  94. } else if(preg_match("/ID: (.*)/", $responseLine, $matches)) {
  95. $result['id'] = trim($matches[1]);
  96. $result['to'] = $tonumbers[0];
  97. $result['status'] = self::MSG_STATUS_PROCESSING;
  98. }
  99. $results[] = $result;
  100. }
  101. return $results;
  102. }
  103.  
  104. **//I'm not checking the query fucntion now. First thing is to send and recieve.**
  105. public function query($messageid) {
  106.  
  107. //$params = $this->prepareParameters();
  108. $params['workingkey'] = $REQUIRED_PARAMETERS('workingkey');
  109. $params['messageid'] = $messageid;
  110.  
  111. $serviceURL = $this->getServiceURL(self::SERVICE_QUERY);
  112. $httpClient = new Vtiger_Net_Client($serviceURL);
  113. $response = $httpClient->doPost($params);
  114.  
  115. $response = trim($response);
  116.  
  117. $result = array( 'error' => false, 'needlookup' => 1 );
  118.  
  119. if(preg_match("/ERR: (.*)/", $response, $matches)) {
  120. $result['error'] = true;
  121. $result['needlookup'] = 0;
  122. $result['statusmessage'] = $matches[0];
  123.  
  124. } else if(preg_match("/ID: ([^ ]+) Status: ([^ ]+)/", $response, $matches)) {
  125. $result['id'] = trim($matches[1]);
  126. $status = trim($matches[2]);
  127.  
  128. // Capture the status code as message by default.
  129. $result['statusmessage'] = "CODE: $status";
  130.  
  131. if($status === '1') {
  132. $result['status'] = self::MSG_STATUS_PROCESSING;
  133. } else if($status === '2') {
  134. $result['status'] = self::MSG_STATUS_DISPATCHED;
  135. $result['needlookup'] = 0;
  136. }
  137. }
  138.  
  139. return $result;
  140. }
  141. }
  142. ?>
  143.  
  144. <?php
  145. /*+**********************************************************************************
  146. * The contents of this file are subject to the vtiger CRM Public License Version 1.0
  147. * ("License"); You may not use this file except in compliance with the License
  148. * The Original Code is: vtiger CRM Open Source
  149. * The Initial Developer of the Original Code is vtiger.
  150. * Portions created by vtiger are Copyright (C) vtiger.
  151. * All Rights Reserved.
  152. ************************************************************************************/
  153. include_once dirname(__FILE__) . '/../ISMSProvider.php';
  154. include_once 'vtlib/Vtiger/Net/Client.php';
  155.  
  156. class sms implements ISMSProvider {
  157.  
  158. private $_username;
  159. private $_password;
  160. private $_parameters = array();
  161.  
  162. const SERVICE_URI = 'http://sms.valueleaf.com';
  163. private static $REQUIRED_PARAMETERS = array('senderid','response');
  164. function __construct() {
  165. }
  166.  
  167. public function setAuthParameters($username, $password) {
  168. $this->_username = $username;
  169. $this->_password = $password;
  170. }
  171.  
  172. public function setParameter($key, $value) {
  173. $this->_parameters[$key] = $value;
  174. }
  175.  
  176. public function getParameter($key, $defvalue = false) {
  177. if(isset($this->_parameters[$key])) {
  178. return $this->_parameters[$key];
  179. }
  180. return $defvalue;
  181. }
  182.  
  183. public function getRequiredParams() {
  184. return self::$REQUIRED_PARAMETERS;
  185. }
  186.  
  187. public function getServiceURL($type = false) {
  188. if($type) {
  189. switch(strtoupper($type)) {
  190.  
  191. case self::SERVICE_AUTH: return self::SERVICE_URI; // . '/http/auth';
  192. case self::SERVICE_SEND: return self::SERVICE_URI . '/sms/user/urllongsms.php?';
  193. case self::SERVICE_QUERY: return self::SERVICE_URI . '/sms/user/responce.php?';
  194.  
  195. }
  196. }
  197. return false;
  198. }
  199.  
  200. protected function prepareParameters() {
  201. $params = array('username' => $this->_username, 'pass' => $this->_password);
  202. //$params = array();
  203. foreach (self::$REQUIRED_PARAMETERS as $key) {
  204. $params[$key] = $this->getParameter($key);
  205. }
  206. return $params;
  207. }
  208.  
  209. //$file0 = fopen("test0.txt","w");
  210. //echo fprintf($file0,"came before send");
  211. public function send($message, $tonumbers) {
  212. if(!is_array($tonumbers)) {
  213. $tonumbers = array($tonumbers);
  214. }
  215.  
  216. $params = $this->prepareParameters();
  217. //$params['text'] = $message;
  218. $params['message'] = $message;
  219. //$params['to'] = implode(',', $tonumbers);
  220. $params['dest_mobileno'] = implode(',', $tonumbers);
  221.  
  222. $serviceURL = $this->getServiceURL(self::SERVICE_SEND);
  223. $file = fopen("test.txt","w");
  224. echo fprintf($file,"url is %s.",$serviceURL);
  225. $httpClient = new Vtiger_Net_Client($serviceURL);
  226. $file1 = fopen("test1.txt","w");
  227. $response = $httpClient->doPost($params);
  228.  
  229. foreach (self::$REQUIRED_PARAMETERS as $key) {
  230. echo fprintf($file1,"String %s value is %s.",$key,$params[$key]);
  231. }
  232. echo fprintf($file1,"Message is: %s",$message);
  233. echo fprintf($file1,"dest_mobileno is: %s",$tonumbers[0]);
  234. echo fprintf($file1,"Response is %s.",$response);
  235. $responseLines = split("n", $response);
  236.  
  237. $results = array();
  238. foreach($responseLines as $responseLine) {
  239.  
  240. $responseLine = trim($responseLine);
  241. if(empty($responseLine)) continue;
  242.  
  243. $result = array( 'error' => false, 'statusmessage' => '' );
  244. if(preg_match("/ERR:(.*)/", trim($responseLine), $matches)) {
  245. $result['error'] = true;
  246. $result['to'] = $tonumbers[$i++];
  247. $result['statusmessage'] = $matches[0]; // Complete error message
  248. } else if(preg_match("/ID: ([^ ]+)TO:(.*)/", $responseLine, $matches)) {
  249. $result['id'] = trim($matches[1]);
  250. $result['to'] = trim($matches[2]);
  251. $result['status'] = self::MSG_STATUS_PROCESSING;
  252.  
  253. } else if(preg_match("/ID: (.*)/", $responseLine, $matches)) {
  254. $result['id'] = trim($matches[1]);
  255. $result['to'] = $tonumbers[0];
  256. $result['status'] = self::MSG_STATUS_PROCESSING;
  257. }
  258. $results[] = $result;
  259. }
  260. return $results;
  261. }
  262.  
  263.  
  264. public function query($messageid) {
  265.  
  266. //$params = $this->prepareParameters();
  267. // $params['workingkey'] = $REQUIRED_PARAMETERS('workingkey');
  268. $params['messageid'] = $messageid;
  269.  
  270. $serviceURL = $this->getServiceURL(self::SERVICE_QUERY);
  271. $httpClient = new Vtiger_Net_Client($serviceURL);
  272. $response = $httpClient->doPost($params);
  273.  
  274. $response = trim($response);
  275.  
  276. $result = array( 'error' => false, 'needlookup' => 1 );
  277.  
  278. if(preg_match("/ERR: (.*)/", $response, $matches)) {
  279. $result['error'] = true;
  280. $result['needlookup'] = 0;
  281. $result['statusmessage'] = $matches[0];
  282.  
  283. } else if(preg_match("/ID: ([^ ]+) Status: ([^ ]+)/", $response, $matches)) {
  284. $result['id'] = trim($matches[1]);
  285. $status = trim($matches[2]);
  286.  
  287. // Capture the status code as message by default.
  288. $result['statusmessage'] = "CODE: $status";
  289.  
  290. if($status === '1') {
  291. $result['status'] = self::MSG_STATUS_PROCESSING;
  292. } else if($status === '2') {
  293. $result['status'] = self::MSG_STATUS_DISPATCHED;
  294. $result['needlookup'] = 0;
  295. }
  296. }
  297.  
  298. return $result;
  299. }
  300. }
  301.  
  302. ?>
  303.  
  304. [root@ providers]# cat /var/www/html/vtigercrm/test.txt
  305. url is http://sms.valueleaf.com/sms/user/urllongsms.php?.
  306.  
  307. [root@ providers]# cat /var/www/html/vtigercrm/test1.txt
  308. String senderid value is 066645.String response value is Y.Message is: Vtiger test on 8.57dest_mobileno is: ArrayResponse is
  309. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  310. "http://www.w3.org/TR/html4/strict.dtd">
  311. <html>
  312.  
  313. <head>
  314. <title>sms.valueleaf.com</title>
  315.  
  316. </head>
  317. <frameset rows="100%,*" border="0">
  318. <frame src="http://203.129.203.254/sms/user/urllongsms.php" frameborder="0" />
  319. <frame frameborder="0" noresize />
  320. </frameset>
  321.  
  322. <!-- pageok -->
  323. <!-- 04 -->
  324. <!-- -->
  325. </html>.
  326.  
  327. private $username;
  328. private $password;
  329. private $parameters = array();
  330.  
  331. const SERVICE_URI = 'https://trans.springedge.com/api/';
  332.  
  333. private static $REQUIRED_PARAMETERS = array(
  334. array('name' => 'apikey', 'label' => 'API Key', 'type' => 'text'),
  335. array('name' => 'sender', 'label' => 'Sender ID', 'type' => 'text'),
  336. array('name' => 'unicode', 'label' => 'Character Set', 'type' => 'picklist', 'picklistvalues' => array('1' => 'Unicode', '0' => 'GSM', 'auto' => 'Auto Detect'))
  337. );
  338.  
  339. public function getName() {
  340. return 'SpringEdge';
  341. }
  342.  
  343. public function setAuthParameters($username, $password) {
  344. $this->username = $username;
  345. $this->password = $password;
  346. }
  347.  
  348. public function setParameter($key, $value) {
  349. $this->parameters[$key] = $value;
  350. }
  351.  
  352. public function getParameter($key, $defaultvalue = false) {
  353. if (isset($this->parameters[$key])) {
  354. return $this->parameters[$key];
  355. }
  356. return $defaultvalue;
  357. }
  358.  
  359. public function getRequiredParams() {
  360. return self::$REQUIRED_PARAMETERS;
  361. }
  362.  
  363. public function getServiceURL($type = false) {
  364. if ($type) {
  365. switch (strtoupper($type)) {
  366. case self::SERVICE_SEND : return self::SERVICE_URI . '/web/send/';
  367. case self::SERVICE_QUERY : return self::SERVICE_URI . '/status/message/';
  368. }
  369. }
  370. return false;
  371. }
  372.  
  373. protected function prepareParameters() {
  374. foreach (self::$REQUIRED_PARAMETERS as $requiredParam) {
  375. $paramName = $requiredParam['name'];
  376. $params[$paramName] = $this->getParameter($paramName);
  377. }
  378. $params['format'] = 'json';
  379. return $params;
  380. }
  381.  
  382. public function send($message, $tonumbers) {
  383. if (!is_array($tonumbers)) {
  384. $tonumbers = array($tonumbers);
  385. }
  386. foreach ($tonumbers as $i => $tonumber) {
  387. $tonumbers[$i] = str_replace(array('(', ')', ' ', '-'), '', $tonumber);
  388. }
  389.  
  390. $params = $this->prepareParameters();
  391. $params['message'] = $message;
  392. $params['to'] = implode(',', $tonumbers);
  393.  
  394. $serviceURL = $this->getServiceURL(self::SERVICE_SEND);
  395. $httpClient = new Vtiger_Net_Client($serviceURL);
  396. $response = $httpClient->doGet($params);
  397. $rows = json_decode($response, true);
  398.  
  399. $numbers = explode(',', $params['to']);
  400. $results = array();
  401. $i = 0;
  402.  
  403. if ($rows['status'] != 'OK') {
  404. foreach ($numbers as $number) {
  405. $result = array();
  406. $result['to'] = $number;
  407. $result['error'] = true;
  408. $result['statusmessage'] = $rows['message'];
  409. $result['id'] = $rows['data'][$i++]['id'];
  410. $result['status'] = self::MSG_STATUS_ERROR;
  411. $results[] = $result;
  412. }
  413. }else{
  414. foreach ($rows['data'] as $value) {
  415. if (is_array($value)) {
  416. $result = array();
  417. $result['error'] = false;
  418. $result['to'] = $value['mobile'];
  419. $result['id'] = $value['id'];
  420. $result['statusmessage'] = $rows['message'];
  421. $result['status'] = $this->checkstatus($value['status']);
  422. $results[] = $result;
  423. }
  424. }
  425. }
  426. return $results;
  427. }
  428.  
  429. public function checkstatus($status) {
  430. if ($status == 'AWAITED-DLR') {
  431. $result = self::MSG_STATUS_PROCESSING;
  432. } elseif ($status == 'DELIVRD') {
  433. $result = self::MSG_STATUS_DELIVERED;
  434. } else {
  435. $result = self::MSG_STATUS_FAILED;
  436. }
  437. return $result;
  438. }
  439.  
  440. public function query($messageid) {
  441. $params = $this->prepareParameters();
  442. $params['messageid'] = $messageid;
  443. $serviceURL = $this->getServiceURL(self::SERVICE_QUERY);
  444. $httpClient = new Vtiger_Net_Client($serviceURL);
  445. $response = $httpClient->doGet($params);
  446. $rows = json_decode($response, true);
  447. $result = array();
  448. if ($rows['status'] != 'OK') {
  449. $result['error'] = true;
  450. $result['status'] = self::MSG_STATUS_ERROR;
  451. $result['needlookup'] = 1;
  452. $result['statusmessage'] = $rows['message'];
  453. } else {
  454. $result['error'] = false;
  455. $result['status'] = $this->checkstatus($rows['data']['0']['status']);
  456. $result['needlookup'] = 0;
  457. $result['statusmessage'] = $rows['message'];
  458. }
  459. return $result;
  460. }
  461.  
  462. function getProviderEditFieldTemplateName() {
  463. return 'BaseProviderEditFields.tpl';
  464. }
  465. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement