PageRenderTime 56ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/wrike/functions.php

https://bitbucket.org/shopworksnl/wrike
PHP | 433 lines | 338 code | 92 blank | 3 comment | 5 complexity | a9f6ee97e2c33cfbaafa132afc46cf0f MD5 | raw file
  1. <?php
  2. include_once("/www/wrike/config.php");
  3. function urlencode_rfc3986($string) {
  4. return str_replace("%7E", "~", rawurlencode($string));
  5. }
  6. function getRequestToken() {
  7. global $consumer;
  8. $url = "https://www.wrike.com/rest/auth/request_token";
  9. $params = array(
  10. "oauth_callback" => '',
  11. "oauth_consumer_key" => $consumer,
  12. "oauth_nonce" => md5(microtime() . mt_rand()),
  13. "oauth_signature_method" => "HMAC-SHA1",
  14. "oauth_timestamp" => time(),
  15. "oauth_version" => "1.0"
  16. );
  17. $result = makeAPICall($url, $params);
  18. list($token, $token_secret) = explode("&", $result);
  19. list($label, $token) = explode("=", $token);
  20. list($label, $token_secret) = explode("=", $token_secret);
  21. // redirect to auth page
  22. $callback_url = "http://" . $_SERVER["HTTP_HOST"] . "/wrike/authorize.php?oauth_token_secret=" . $token_secret;
  23. header("Location: https://www.wrike.com/rest/auth/authorize?oauth_token=" . $token . "&oauth_callback=" . urlencode_rfc3986($callback_url));
  24. }
  25. function getAccessToken($token, $secret) {
  26. global $consumer;
  27. $url = "https://www.wrike.com/rest/auth/access_token";
  28. $params = array(
  29. "oauth_consumer_key" => $consumer,
  30. "oauth_nonce" => md5(microtime() . mt_rand()),
  31. "oauth_signature_method" => "HMAC-SHA1",
  32. "oauth_timestamp" => time(),
  33. "oauth_token" => $token,
  34. "oauth_version" => "1.0"
  35. );
  36. $result = makeAPICall($url, $params, $secret);
  37. list($access_token, $access_token_secret) = explode("&", $result);
  38. list($label, $access_token) = explode("=", $access_token);
  39. list($label, $access_token_secret) = explode("=", $access_token_secret);
  40. $_url = "http://" . $_SERVER["HTTP_HOST"] . "/wrike/authorize.php?access_token=" . $access_token . "&access_token_secret=" . $access_token_secret;
  41. header("Location: " . $_url);
  42. }
  43. function getAddNormalTask($token, $secret, $extraParams=array()) {
  44. global $consumer;
  45. $url = "https://www.wrike.com/api/json/v2/wrike.task.add";
  46. $params = array(
  47. "oauth_consumer_key" => $consumer,
  48. "oauth_nonce" => md5(microtime() . mt_rand()),
  49. "oauth_signature_method" => "HMAC-SHA1",
  50. "oauth_timestamp" => time(),
  51. "oauth_token" => $token,
  52. "oauth_version" => "1.0",
  53. "title" => $extraParams['title']
  54. );
  55. $params['description'] = str_replace(array("\r\n", "\n", "\r"), "", nl2br($extraParams['description']));
  56. $params['parents'] = $extraParams['parents'];
  57. ksort($params);
  58. $result = makeAPICall($url, $params, $secret, "POST");
  59. $object = json_decode($result);
  60. return $object->task->id;
  61. }
  62. function getAddTask($token, $secret, $extraParams=array()) {
  63. global $consumer;
  64. $url = "https://www.wrike.com/api/json/v2/wrike.task.add";
  65. $params = array(
  66. "oauth_consumer_key" => $consumer,
  67. "oauth_nonce" => md5(microtime() . mt_rand()),
  68. "oauth_signature_method" => "HMAC-SHA1",
  69. "oauth_timestamp" => time(),
  70. "oauth_token" => $token,
  71. "oauth_version" => "1.0",
  72. "title" => $extraParams['zendesk_id'].' - '.$extraParams['zendesk_title'].' -'.$extraParams['zendesk_organisation'],
  73. );
  74. $params['description'] = str_replace(array("\r\n", "\n", "\r"), "", nl2br($extraParams['zendesk_description']));
  75. $params['parents'] = '7281156';
  76. ksort($params);
  77. $result = makeAPICall($url, $params, $secret, "POST");
  78. $object = json_decode($result);
  79. if(is_object($object)){
  80. mysql_query("INSERT INTO wrike SET wrike_task_id='".$object->task->id."', zendesk_id='".$extraParams['zendesk_id']."'") or die(mysql_error());
  81. }
  82. }
  83. function getTaskUpdates($token, $secret, $tlast){
  84. $url = "https://www.wrike.com/api/json/v2/wrike.task.updates";
  85. $params = array(
  86. "oauth_consumer_key" => $consumer,
  87. "oauth_nonce" => md5(microtime() . mt_rand()),
  88. "oauth_signature_method" => "HMAC-SHA1",
  89. "oauth_timestamp" => time(),
  90. "oauth_token" => $token,
  91. "oauth_version" => "1.0",
  92. "tLast" => $tlast
  93. );
  94. ksort($params);
  95. $result = makeAPICall($url, $params, $secret, "POST");
  96. return $result;
  97. }
  98. function updateTask($token, $secret, $taskId){
  99. global $consumer;
  100. $url = "https://www.wrike.com/api/json/v2/wrike.task.update";
  101. $params = array(
  102. "oauth_consumer_key" => $consumer,
  103. "oauth_nonce" => md5(microtime() . mt_rand()),
  104. "oauth_signature_method" => "HMAC-SHA1",
  105. "oauth_timestamp" => time(),
  106. "oauth_token" => $token,
  107. "oauth_version" => "1.0",
  108. "id" => $taskId,
  109. "title" => '',
  110. "status" => "0"
  111. );
  112. ksort($params);
  113. $result = makeAPICall($url, $params, $secret, "POST");
  114. }
  115. function updateTaskCreator($token, $secret, $taskId, $userId){
  116. global $consumer;
  117. $url = "https://www.wrike.com/api/json/v2/wrike.task.update";
  118. $params = array(
  119. "oauth_consumer_key" => $consumer,
  120. "oauth_nonce" => md5(microtime() . mt_rand()),
  121. "oauth_signature_method" => "HMAC-SHA1",
  122. "oauth_timestamp" => time(),
  123. "oauth_token" => $token,
  124. "oauth_version" => "1.0",
  125. "id" => $taskId,
  126. "title" => '',
  127. "status" => "0"
  128. );
  129. ksort($params);
  130. $result = makeAPICall($url, $params, $secret, "POST");
  131. }
  132. function getUpdateComment($token, $secret, $extraParams=array()) {
  133. global $consumer;
  134. $q = mysql_query("SELECT * FROM wrike WHERE zendesk_id='".$extraParams['zendesk_id']."'");
  135. $r = mysql_fetch_assoc($q);
  136. $url = "https://www.wrike.com/api/json/v2/wrike.comment.add";
  137. $params = array(
  138. "oauth_consumer_key" => $consumer,
  139. "oauth_nonce" => md5(microtime() . mt_rand()),
  140. "oauth_signature_method" => "HMAC-SHA1",
  141. "oauth_timestamp" => time(),
  142. "oauth_token" => $token,
  143. "oauth_version" => "1.0",
  144. );
  145. $params['taskId'] = $r['wrike_task_id'];
  146. $params['text'] = str_replace(array("\r\n", "\n", "\r"), "", nl2br($extraParams['zendesk_description']));
  147. ksort($params);
  148. updateTask($token, $secret, $params['taskId']);
  149. $result = makeAPICall($url, $params, $secret, "POST");
  150. }
  151. function getCommentUpdates($token, $secret, $tlast){
  152. $url = "https://www.wrike.com/api/json/v2/wrike.comment.updates";
  153. $params = array(
  154. "oauth_consumer_key" => $consumer,
  155. "oauth_nonce" => md5(microtime() . mt_rand()),
  156. "oauth_signature_method" => "HMAC-SHA1",
  157. "oauth_timestamp" => time(),
  158. "oauth_token" => $token,
  159. "oauth_version" => "1.0",
  160. "tLast" => $tlast
  161. );
  162. ksort($params);
  163. $result = makeAPICall($url, $params, $secret, "POST");
  164. return $result;
  165. }
  166. function getTaks($token, $secret) {
  167. global $consumer;
  168. $url = "https://www.wrike.com/api/json/v2/wrike.task.get";
  169. $params = array(
  170. "oauth_consumer_key" => $consumer,
  171. "oauth_nonce" => md5(microtime() . mt_rand()),
  172. "oauth_signature_method" => "HMAC-SHA1",
  173. "oauth_timestamp" => time(),
  174. "oauth_token" => $token,
  175. "oauth_version" => "1.0",
  176. "id" => "7281868"
  177. );
  178. ksort($params);
  179. $result = makeAPICall($url, $params, $secret, "POST");
  180. list($headers, $body) = explode("\r\n\r\n", $result, 2);
  181. return $body;
  182. }
  183. function getContacts($token, $secret) {
  184. global $consumer;
  185. $url = "https://www.wrike.com/api/json/v2/wrike.contacts.list";
  186. $params = array(
  187. "oauth_consumer_key" => $consumer,
  188. "oauth_nonce" => md5(microtime() . mt_rand()),
  189. "oauth_signature_method" => "HMAC-SHA1",
  190. "oauth_timestamp" => time(),
  191. "oauth_token" => $token,
  192. "oauth_version" => "1.0"
  193. );
  194. ksort($params);
  195. $result = makeAPICall($url, $params, $secret, "POST");
  196. $body = json_decode($result);
  197. return $body;
  198. }
  199. function getFolders($token, $secret) {
  200. global $consumer;
  201. $url = "https://www.wrike.com/api/json/v2/wrike.folder.tree";
  202. $params = array(
  203. "oauth_consumer_key" => $consumer,
  204. "oauth_nonce" => md5(microtime() . mt_rand()),
  205. "oauth_signature_method" => "HMAC-SHA1",
  206. "oauth_timestamp" => time(),
  207. "oauth_token" => $token,
  208. "oauth_version" => "1.0"
  209. );
  210. ksort($params);
  211. $result = makeAPICall($url, $params, $secret, "POST");
  212. $body = json_decode($result);
  213. return $body;
  214. }
  215. function getFoldersDetails($token, $secret, $folderid) {
  216. global $consumer;
  217. $url = "https://www.wrike.com/api/json/v2/wrike.folder.get";
  218. $params = array(
  219. "oauth_consumer_key" => $consumer,
  220. "oauth_nonce" => md5(microtime() . mt_rand()),
  221. "oauth_signature_method" => "HMAC-SHA1",
  222. "oauth_timestamp" => time(),
  223. "oauth_token" => $token,
  224. "oauth_version" => "1.0"
  225. );
  226. $params['id'] = $folderid;
  227. ksort($params);
  228. $result = makeAPICall($url, $params, $secret, "POST");
  229. $body = json_decode($result);
  230. return $body;
  231. }
  232. function getProfile($token, $secret) {
  233. global $consumer;
  234. $url = "https://www.wrike.com/api/json/v2/wrike.profile.get";
  235. $params = array(
  236. "oauth_consumer_key" => $consumer,
  237. "oauth_nonce" => md5(microtime() . mt_rand()),
  238. "oauth_signature_method" => "HMAC-SHA1",
  239. "oauth_timestamp" => time(),
  240. "oauth_token" => $token,
  241. "oauth_version" => "1.0"
  242. );
  243. ksort($params);
  244. $result = makeAPICall($url, $params, $secret, "POST");
  245. list($headers, $body) = explode("\r\n\r\n", $result, 2);
  246. return $body;
  247. }
  248. function makeAPICall($url, $authParams, $token_secret = "", $method = "GET") {
  249. global $secret;
  250. $query_string = "";
  251. foreach($authParams as $key => $value) {
  252. $query_string .= $key . "=" . urlencode_rfc3986($value) . "&";
  253. }
  254. $query_string = rtrim($query_string, "&");
  255. $key_parts = array(
  256. urlencode_rfc3986($secret),
  257. $token_secret != ""? urlencode_rfc3986($token_secret): ""
  258. );
  259. $params = array(
  260. $method,
  261. urlencode_rfc3986($url),
  262. urlencode_rfc3986($query_string)
  263. );
  264. $base_string = implode("&", $params);
  265. $signature = base64_encode(hash_hmac("sha1", $base_string, implode("&", $key_parts), true));
  266. $authParams["oauth_signature"] = $signature;
  267. $query_string = "";
  268. foreach($authParams as $key => $value) {
  269. $query_string .= $key . "=" . urlencode_rfc3986($value) . "&";
  270. }
  271. $query_string = rtrim($query_string, "&");
  272. //echo $query_string;
  273. $ch = curl_init();
  274. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  275. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  276. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  277. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  278. curl_setopt( $ch, CURLOPT_HEADER, false);
  279. if ($method == "GET") {
  280. curl_setopt($ch, CURLOPT_URL, $url . "?" . $query_string);
  281. }
  282. else {
  283. curl_setopt($ch, CURLOPT_URL, $url);
  284. curl_setopt($ch, CURLOPT_POST, 1);
  285. curl_setopt($ch, CURLOPT_POSTFIELDS, $query_string);
  286. }
  287. $result = curl_exec($ch);
  288. curl_close($ch);
  289. return $result;
  290. }
  291. function getFilterTasks($token, $secret, $filter) {
  292. global $consumer;
  293. $url = "https://www.wrike.com/api/json/v2/wrike.task.filter";
  294. $params = array(
  295. "oauth_consumer_key" => $consumer,
  296. "oauth_nonce" => md5(microtime() . mt_rand()),
  297. "oauth_signature_method" => "HMAC-SHA1",
  298. "oauth_timestamp" => time(),
  299. "oauth_token" => $token,
  300. "oauth_version" => "1.0"
  301. );
  302. $params['fromStartDate'] = '2012-10-22';
  303. $params['toStartDate'] = '2012-10-26';
  304. //$params['statuses'] = '1';
  305. $params['fields'] = 'id,title,responsibleUsers,duration,startDate,dueDate,status';
  306. ksort($params);
  307. $result = makeAPICall($url, $params, $secret, "POST");
  308. $body = json_decode($result);
  309. return $body;
  310. }
  311. function curlWrap($url, $json, $action)
  312. {
  313. $ch = curl_init();
  314. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  315. curl_setopt($ch, CURLOPT_MAXREDIRS, 10 );
  316. curl_setopt($ch, CURLOPT_URL, ZDURL.$url);
  317. curl_setopt($ch, CURLOPT_USERPWD, ZDUSER."/token:".ZDAPIKEY);
  318. switch($action){
  319. case "POST":
  320. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
  321. curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
  322. break;
  323. case "GET":
  324. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
  325. break;
  326. case "PUT":
  327. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
  328. curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
  329. default:
  330. break;
  331. }
  332. curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
  333. curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
  334. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  335. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  336. $output = curl_exec($ch);
  337. curl_close($ch);
  338. $decoded = json_decode($output);
  339. return $decoded;
  340. }
  341. ?>