PageRenderTime 53ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 0ms

/php/janrain-engage-php-sdk/library/engage.activity.lib.php

https://github.com/kevinelong/Janrain-Sample-Code
PHP | 327 lines | 265 code | 15 blank | 47 comment | 58 complexity | 584fe27447cc94b419e88e7ab6ea8da3 MD5 | raw file
  1. <?php
  2. /**
  3. * Copyright 2011
  4. * Janrain Inc.
  5. * All rights reserved.
  6. */
  7. /**
  8. * Requires engage.api.lib.php
  9. */
  10. if ( !defined('ENGAGE_LIB_INIT') ) {
  11. require_once('engage.api.lib.php');
  12. }
  13. //init
  14. engage_define('ENGAGE_ACTIVITY_EP', 'activity');
  15. engage_define('ENGAGE_ACT_IMAGE_MAX_COUNT', 5);
  16. engage_define('ENGAGE_ACT_MP3_MAX_COUNT', 1);
  17. engage_define('ENGAGE_ACT_FLASH_MAX_COUNT', 1);
  18. engage_define('ENGAGE_ACT_FLASH_MIN_WIDTH', 30);
  19. engage_define('ENGAGE_ACT_FLASH_MAX_WIDTH', 90);
  20. engage_define('ENGAGE_ACT_FLASH_MIN_HEIGHT', 30);
  21. engage_define('ENGAGE_ACT_FLASH_MAX_HEIGHT', 90);
  22. engage_define('ENGAGE_ACT_FLASH_MIN_EWIDTH', 30);
  23. engage_define('ENGAGE_ACT_FLASH_MAX_EWIDTH', 398);
  24. engage_define('ENGAGE_ACT_FLASH_MIN_EHEIGHT', 30);
  25. engage_define('ENGAGE_ACT_FLASH_MAX_EHEIGHT', 398);
  26. engage_define('ENGAGE_TRUNCATE', 'true');
  27. engage_define('ENGAGE_URLSHORT', 'true');
  28. engage_define('ENGAGE_PRENAME', 'true');
  29. engage_define('ENGAGE_ACTIVITY_PROVIDERS', 'LinkedIn,Twitter,Facebook,Yahoo!,MySpace');
  30. engage_define('ENGAGE_KEY_ACTIVITY', 'activity');
  31. engage_define('ENGAGE_KEY_TRUNCATE', 'truncate');
  32. engage_define('ENGAGE_KEY_LOCATION', 'location');
  33. engage_define('ENGAGE_KEY_URLSHORT', 'url_shortening');
  34. engage_define('ENGAGE_KEY_PRENAME', 'prepend_name');
  35. engage_define('ENGAGE_ACT_KEY_MEDIA', 'media');
  36. engage_define('ENGAGE_ACT_KEY_URL', 'url');
  37. engage_define('ENGAGE_ACT_KEY_SRC', 'src');
  38. engage_define('ENGAGE_ACT_KEY_HREF', 'href');
  39. engage_define('ENGAGE_ACT_KEY_TYPE', 'type');
  40. engage_define('ENGAGE_ACT_KEY_TITLE', 'title');
  41. engage_define('ENGAGE_ACT_KEY_ALBUM', 'album');
  42. engage_define('ENGAGE_ACT_KEY_WIDTH', 'width');
  43. engage_define('ENGAGE_ACT_KEY_HEIGHT', 'height');
  44. engage_define('ENGAGE_ACT_KEY_EWIDTH', 'expanded_width');
  45. engage_define('ENGAGE_ACT_KEY_EHEIGHT', 'expanded_height');
  46. engage_define('ENGAGE_ACT_KEY_SWFSRC', 'swfsrc');
  47. engage_define('ENGAGE_ACT_KEY_IMGSRC', 'imgsrc');
  48. engage_define('ENGAGE_ACT_KEY_ACTION', 'action');
  49. engage_define('ENGAGE_ACT_KEY_ARTIST', 'artist');
  50. engage_define('ENGAGE_ACT_KEY_PROPERTIES', 'properties');
  51. engage_define('ENGAGE_ACT_KEY_USERCONTENT', 'user_generated_content');
  52. engage_define('ENGAGE_ACT_KEY_ACTIONLINKS', 'action_links');
  53. engage_define('ENGAGE_ACT_KEY_DESCRIPTION', 'description');
  54. engage_define('ENGAGE_ACT_TYPE_IMAGE', 'image');
  55. engage_define('ENGAGE_ACT_TYPE_FLASH', 'flash');
  56. engage_define('ENGAGE_ACT_TYPE_MP3', 'mp3');
  57. /* begin engage_activity */
  58. /**
  59. * http://documentation.janrain.com/activity
  60. * To use activity requires a subscription level of Pro or better.
  61. *
  62. * You must setup the provider(s) for sharing on the Engage dashboard.
  63. * (rpxnow.com - Deployment - Configure Providers)
  64. *
  65. * The following fields are only used by Facebook and are ignored by other providers:
  66. * title, description, action_links, media, properties
  67. *
  68. * Read more about the Facebook extras at the URL below.
  69. * http://developers.facebook.com/docs/guides/attachments
  70. *
  71. * If more than one media type is included the "media" array Facebook will
  72. * choose only one of these types. This is the order Facebook will use to select:
  73. * image, flash, mp3 (a.k.a. music)
  74. */
  75. function engage_activity($api_key, $identifier, $activity, $location=NULL, $truncate=ENGAGE_TRUNCATE, $url_shortening=ENGAGE_URLSHORT, $prepend_name=ENGAGE_PRENAME) {
  76. $ready = true;
  77. if (strlen($api_key) != ENGAGE_API_KEY_LEN) {
  78. engage_error(ENGAGE_ERROR_APIKEY, __FUNCTION__);
  79. $ready = false;
  80. }
  81. if (empty($identifier)) {
  82. engage_error(ENGAGE_ERROR_IDENT, __FUNCTION__);
  83. $ready = false;
  84. }
  85. if (!is_array($activity)) {
  86. engage_error(ENGAGE_ERROR_ARRAY, __FUNCTION__);
  87. $ready = false;
  88. }
  89. if ($ready === true){
  90. $url = ENGAGE_API_BASE_URL.ENGAGE_ACTIVITY_EP;
  91. $activity = json_encode($activity);
  92. $parameters = array(
  93. ENGAGE_KEY_APIKEY => $api_key,
  94. ENGAGE_KEY_IDENTIFIER => $identifier,
  95. ENGAGE_KEY_ACTIVITY => $activity,
  96. ENGAGE_KEY_TRUNCATE => $truncate,
  97. ENGAGE_KEY_URLSHORT => $url_shortening,
  98. ENGAGE_KEY_PRENAME => $prepend_name
  99. );
  100. if ($location !== NULL) {
  101. $parameters[ENGAGE_KEY_LOCATION] = $location;
  102. }
  103. $result = engage_post($url, $parameters);
  104. if ($result !== false) {
  105. $response = engage_parse_result($result);
  106. if (is_array($response)) {
  107. if ($response[ENGAGE_KEY_STAT] != ENGAGE_STAT_OK) {
  108. engage_error(ENGAGE_ERROR_STAT.$result, __FUNCTION__);
  109. return false;
  110. }
  111. }
  112. }
  113. return $result;
  114. }
  115. return false;
  116. }
  117. /* end engage_activity */
  118. /* begin engage_activity_item */
  119. function engage_activity_item($base, $media=NULL, $action_links=NULL, $properties=NULL) {
  120. $ready = true;
  121. if (!is_array($base)) {
  122. engage_error(ENGAGE_ERROR_ARRAY, __FUNCTION__);
  123. $ready = false;
  124. }
  125. if ($ready === true){
  126. $activity = $base;
  127. $activity[ENGAGE_ACT_KEY_MEDIA] = $media;
  128. $activity[ENGAGE_ACT_KEY_ACTIONLINKS] = $action_links;
  129. $activity[ENGAGE_ACT_KEY_PROPERTIES] = $properties;
  130. return $activity;
  131. }
  132. return false;
  133. }
  134. /* end engage_activity_item */
  135. /* begin engage_activity_base */
  136. function engage_activity_base($url, $action, $user_content=NULL, $title=NULL, $description=NULL) {
  137. $ready = true;
  138. if (!is_string($url) || !is_string($action)) {
  139. engage_error(ENGAGE_ERROR_STRING, __FUNCTION__);
  140. $ready = false;
  141. }
  142. if ($ready === true){
  143. $base = array (
  144. ENGAGE_ACT_KEY_URL => $url,
  145. ENGAGE_ACT_KEY_ACTION => $action,
  146. );
  147. if ($user_content !== NULL) {
  148. $base[ENGAGE_ACT_KEY_USERCONTENT] = $user_content;
  149. }
  150. if ($title !== NULL) {
  151. $base[ENGAGE_ACT_KEY_TITLE] = $title;
  152. }
  153. if ($description !== NULL) {
  154. $base[ENGAGE_ACT_KEY_DESCRIPTION] = $description;
  155. }
  156. return $base;
  157. }
  158. return false;
  159. }
  160. /* end enage_activity_base */
  161. /* begin engage_activity_media_image */
  162. function engage_activity_media_image($src_url, $href_url, $media_image=NULL) {
  163. $ready = true;
  164. if (!is_string($src_url) || !is_string($href_url)) {
  165. engage_error(ENGAGE_ERROR_STRING, __FUNCTION__);
  166. $ready = false;
  167. }
  168. if ($ready === true){
  169. $image_array = array();
  170. if (is_array($media_image)) {
  171. if (count($media_image) < ENGAGE_ACT_IMAGE_MAX_COUNT) {
  172. $image_array = $media_image;
  173. } else {
  174. engage_error(ENGAGE_ERROR_COUNT, __FUNCTION__, ENGAGE_ETYPE_DEBUG);
  175. return $media_image;
  176. }
  177. }
  178. $image_array[] = array(
  179. ENGAGE_ACT_KEY_TYPE => ENGAGE_ACT_TYPE_IMAGE,
  180. ENGAGE_ACT_KEY_SRC => $src_url,
  181. ENGAGE_ACT_KEY_HREF => $href_url
  182. );
  183. return $image_array;
  184. }
  185. return false;
  186. }
  187. /* end engage_activity_media_image */
  188. /* begin engage_activity_media_flash */
  189. function engage_activity_media_flash($swf_url, $thumb_url, $width, $height, $ewidth, $eheight, $media_flash=NULL) {
  190. $ready = true;
  191. if (!is_string($swf_url) || !is_string($thumb_url)) {
  192. engage_error(ENGAGE_ERROR_STRING, __FUNCTION__);
  193. $ready = false;
  194. }
  195. if (!is_int($width) || !is_int($height) || !is_int($ewidth) || !is_int($eheight)) {
  196. enagage_error(ENGAGE_ERROR_INT, __FUNCTION__);
  197. $ready = false;
  198. }
  199. if (ENGAGE_ACT_FLASH_MIN_WIDTH >= $width && $width <= ENGAGE_ACT_FLASH_MAX_WIDTH) {
  200. engage_error(ENGAGE_ERROR_RANGE.$width, __FUNCTION__);
  201. $ready = false;
  202. }
  203. if (ENGAGE_ACT_FLASH_MIN_HEIGHT >= $height && $height <= ENGAGE_ACT_FLASH_MAX_HEIGHT) {
  204. engage_error(ENGAGE_ERROR_RANGE.$height, __FUNCTION__);
  205. $ready = false;
  206. }
  207. if (ENGAGE_ACT_FLASH_MIN_EWIDTH >= $ewidth && $ewidth <= ENGAGE_ACT_FLASH_MAX_EWIDTH) {
  208. engage_error(ENGAGE_ERROR_RANGE.$ewidth, __FUNCTION__);
  209. $ready = false;
  210. }
  211. if (ENGAGE_ACT_FLASH_MIN_EHEIGHT >= $eheight && $eheight <= ENGAGE_ACT_FLASH_MAX_EHEIGHT) {
  212. engage_error(ENGAGE_ERROR_RANGE.$eheight, __FUNCTION__);
  213. $ready = false;
  214. }
  215. if ($ready === true){
  216. $flash_array = array();
  217. if (is_array($media_flash)) {
  218. if (count($media_flash) < ENGAGE_ACT_FLASH_MAX_COUNT) {
  219. $flash_array = $media_flash;
  220. } else {
  221. engage_error(ENGAGE_ERROR_COUNT, __FUNCTION__, ENGAGE_ETYPE_DEBUG);
  222. return $media_flash;
  223. }
  224. }
  225. $flash_array[] = array(
  226. ENGAGE_ACT_KEY_TYPE => ENGAGE_ACT_TYPE_FLASH,
  227. ENGAGE_ACT_KEY_SWFSRC => $swf_url,
  228. ENGAGE_ACT_KEY_IMGSRC => $thumb_url,
  229. ENGAGE_ACT_KEY_WIDTH => $width,
  230. ENGAGE_ACT_KEY_HEIGHT => $height,
  231. ENGAGE_ACT_KEY_EWIDTH => $ewidth,
  232. ENGAGE_ACT_KEY_EHEIGHT => $eheight
  233. );
  234. return $flash_array;
  235. }
  236. return false;
  237. }
  238. /* end engage_activity_media_flash */
  239. /* begin engage_activity_media_mp3 */
  240. function engage_activity_media_mp3($mp3_url, $title, $artist, $album, $media_mp3=NULL) {
  241. $ready = true;
  242. if (!is_string($mp3_url) || !is_string($title) || !is_string($artist) || !is_string($album)) {
  243. engage_error(ENGAGE_ERROR_STRING, __FUNCTION__);
  244. $ready = false;
  245. }
  246. if ($ready === true){
  247. $mp3_array = array();
  248. if (is_array($media_mp3)) {
  249. if (count($media_mp3) < ENGAGE_ACT_MP3_MAX_COUNT) {
  250. $mp3_array = $media_mp3;
  251. } else {
  252. engage_error(ENGAGE_ERROR_COUNT, __FUNCTION__, ENGAGE_ETYPE_DEBUG);
  253. return $media_mp3;
  254. }
  255. }
  256. $mp3_array[] = array(
  257. ENGAGE_ACT_KEY_TYPE => ENGAGE_ACT_TYPE_MP3,
  258. ENGAGE_ACT_KEY_SRC => $mp3_url,
  259. ENGAGE_ACT_KEY_TITLE => $title,
  260. ENGAGE_ACT_KEY_ARTIST => $artist,
  261. ENGAGE_ACT_KEY_ALBUM => $album
  262. );
  263. return $mp3_array;
  264. }
  265. return false;
  266. }
  267. /* end engage_activity_media_mp3 */
  268. /* begin engage_activity_action_link */
  269. function engage_activity_action_link($action_url, $action_text) {
  270. $ready = true;
  271. if (!is_string($action_url) || !is_string($action_text)) {
  272. engage_error(ENGAGE_ERROR_STRING, __FUNCTION__);
  273. $ready = false;
  274. }
  275. if ($ready === true) {
  276. $action_link = array(
  277. array(
  278. ENGAGE_ACT_KEY_TITLE => $action_text,
  279. ENGAGE_ACT_KEY_HREF => $action_url
  280. )
  281. );
  282. return $action_link;
  283. }
  284. return false;
  285. }
  286. /* end engage_activity_action_link */
  287. /* begin engage_activity_properties */
  288. function engage_activity_properties($properties_array) {
  289. $ready = true;
  290. if (!is_array($properties_array) || empty($properties_array)) {
  291. engage_error(ENGAGE_ERROR_ARRAY, __FUNCTION__);
  292. $ready = false;
  293. }
  294. if ($ready === true) {
  295. return $properties_array;
  296. }
  297. return false;
  298. }
  299. /* end engage_activity_properties */
  300. /* begin engage_activity_provider */
  301. /**
  302. * Test if provider is valid for activity
  303. */
  304. function engage_activity_provider($provider) {
  305. $provider_array = explode(',', ENGAGE_ACTIVITY_PROVIDERS);
  306. if (in_array($provider, $provider_array)) {
  307. return true;
  308. }
  309. return false;
  310. }
  311. /* end engage_activity_provider */
  312. ?>