PageRenderTime 66ms CodeModel.GetById 9ms RepoModel.GetById 0ms app.codeStats 0ms

/inc/amfphp/Amfphp/Services/ec_admin_subscriptions.php

https://github.com/EmranAhmed/wp-easycart
PHP | 335 lines | 203 code | 64 blank | 68 comment | 60 complexity | 71233bae7cad52457cc86bc0cf6f6f94 MD5 | raw file
  1. <?php
  2. /*
  3. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  4. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  5. //All Code and Design is copyrighted by Level Four Development, llc
  6. //
  7. //Level Four Development, LLC provides this code "as is" without warranty of any kind, either express or implied,
  8. //including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.
  9. //
  10. //Only licnesed users may use this code and storfront for live purposes. All other use is prohibited and may be
  11. //subject to copyright violation laws. If you have any questions regarding proper use of this code, please
  12. //contact Level Four Development, llc and EasyCart prior to use.
  13. //
  14. //All use of this storefront is subject to our terms of agreement found on Level Four Development, llc's website.
  15. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  16. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  17. */
  18. class ec_admin_subscriptions
  19. {
  20. function ec_admin_subscriptions() {
  21. /*load our connection settings
  22. if( file_exists( '../../../../wp-easycart-data/connection/ec_conn.php' ) ) {
  23. require_once('../../../../wp-easycart-data/connection/ec_conn.php');
  24. } else {
  25. require_once('../../../connection/ec_conn.php');
  26. };*/
  27. //set our connection variables
  28. $dbhost = DB_HOST;
  29. $dbname = DB_NAME;
  30. $dbuser = DB_USER;
  31. $dbpass = DB_PASSWORD;
  32. global $wpdb;
  33. define ('WP_PREFIX', $wpdb->prefix);
  34. //make a connection to our database
  35. $this->conn = mysql_connect($dbhost, $dbuser, $dbpass);
  36. mysql_select_db ($dbname);
  37. mysql_query("SET CHARACTER SET utf8", $this->conn);
  38. mysql_query("SET NAMES 'utf8'", $this->conn);
  39. }
  40. //secure all of the services for logged in authenticated users only
  41. public function _getMethodRoles($methodName){
  42. if($methodName == 'cancelstripesubscription') return array('admin');
  43. else if($methodName == 'updatestripesubscription') return array('admin');
  44. else if($methodName == 'getsubscriptions') return array('admin');
  45. else if($methodName == 'getsubscriptionplans') return array('admin');
  46. else if($methodName == 'getcustomerpayments') return array('admin');
  47. else if($methodName == 'getsubscriptionplanrecords') return array('admin');
  48. else if($methodName == 'deletesubscriptionplanrecord') return array('admin');
  49. else if($methodName == 'updatesubscriptionplanrecord') return array('admin');
  50. else if($methodName == 'addsubscriptionplanrecord') return array('admin');
  51. else return null;
  52. }
  53. //HELPER - used to escape out SQL calls
  54. function escape($sql)
  55. {
  56. $args = func_get_args();
  57. foreach($args as $key => $val)
  58. {
  59. $args[$key] = mysql_real_escape_string($val);
  60. }
  61. $args[0] = $sql;
  62. return call_user_func_array('sprintf', $args);
  63. }
  64. ///////////////////////////////////////////////////////////////////////
  65. //SUBSCRIPTIONS
  66. //////////////////////////////////////////////////////////////////////
  67. function getcustomerpayments($subscription_id, $user_id) {
  68. //Create SQL Query
  69. $query= mysql_query("SELECT SQL_CALC_FOUND_ROWS ec_order.*, UNIX_TIMESTAMP(ec_order.order_date) AS order_date FROM ec_order WHERE ec_order.user_id = '".mysql_real_escape_string($user_id)."' AND ec_order.subscription_id = '".mysql_real_escape_string($subscription_id)."'");
  70. $totalquery=mysql_query("SELECT FOUND_ROWS()");
  71. $totalrows = mysql_fetch_object($totalquery);
  72. // return mysql_num_rows($query);
  73. //if results, convert to an array for use in flash
  74. if(mysql_num_rows($query) > 0) {
  75. while ($row=mysql_fetch_object($query)) {
  76. $row->totalrows=$totalrows;
  77. $returnArray[] = $row;
  78. }
  79. return($returnArray); //return array results if there are some
  80. } else {
  81. $returnArray[] = "noresults";
  82. return $returnArray; //return noresults if there are no results
  83. }
  84. }
  85. function getsubscriptions($startrecord, $limit, $orderby, $ordertype, $filter) {
  86. //Create SQL Query
  87. $query= mysql_query("SELECT SQL_CALC_FOUND_ROWS ec_subscription.*, ec_user.stripe_customer_id, ec_user.default_card_type, ec_user.default_card_last4, UNIX_TIMESTAMP(ec_subscription.start_date) AS start_date FROM ec_subscription LEFT JOIN ec_user ON ec_subscription.email = ec_user.email WHERE ec_subscription.subscription_id != '' ".$filter." ORDER BY ". $orderby ." ". $ordertype . " LIMIT ". $startrecord .", ". $limit."");
  88. $totalquery=mysql_query("SELECT FOUND_ROWS()");
  89. $totalrows = mysql_fetch_object($totalquery);
  90. // return mysql_num_rows($query);
  91. //if results, convert to an array for use in flash
  92. if(mysql_num_rows($query) > 0) {
  93. while ($row=mysql_fetch_object($query)) {
  94. $row->totalrows=$totalrows;
  95. $returnArray[] = $row;
  96. }
  97. return($returnArray); //return array results if there are some
  98. } else {
  99. $returnArray[] = "noresults";
  100. return $returnArray; //return noresults if there are no results
  101. }
  102. }
  103. function cancelstripesubscription($user, $subscription_id) {
  104. //create an object for call to stripe
  105. $stripe_user = (object)array( "stripe_customer_id" => $user);
  106. $stripe = new ec_stripe;
  107. $response = $stripe->cancel_subscription( $stripe_user, $subscription_id);
  108. if($response != false) {
  109. //Create SQL Query
  110. $sql = sprintf("UPDATE ec_subscription SET ec_subscription.subscription_status = 'Canceled' WHERE ec_subscription.stripe_subscription_id = '%s'",
  111. mysql_real_escape_string($subscription_id));
  112. mysql_query($sql);
  113. if (!mysql_error()) {
  114. $returnArray[] = "success";
  115. return($returnArray); //return array results if there are some
  116. } else {
  117. $returnArray[] = "failed";
  118. return $returnArray; //return noresults if there are no results
  119. }
  120. } else {
  121. $returnArray[] = "failed";
  122. return $returnArray; //return noresults if there are no results
  123. }
  124. }
  125. function updatestripesubscription($user, $subscription_id, $product_id) {
  126. //create an object for call to stripe
  127. $stripe_user = (object)array( "stripe_customer_id" => $user);
  128. $stripe_product = (object)array( "product_id" => $product_id);
  129. $stripe = new ec_stripe;
  130. $response = $stripe->update_subscription( $stripe_product, $stripe_user, NULL ,$subscription_id);
  131. if($response != false) {
  132. //get current subscription plan id
  133. $currentplansql = mysql_query("SELECT ec_product.* FROM ec_product WHERE ec_product.product_id = '".$product_id."'");
  134. $currentplanid = mysql_fetch_object($currentplansql);
  135. //Create SQL Query
  136. $sql = sprintf("UPDATE ec_subscription SET ec_subscription.title = '%s', ec_subscription.product_id = '%s', ec_subscription.model_number = '%s', ec_subscription.price = '%s', ec_subscription.payment_length = '%s', ec_subscription.payment_period = '%s' WHERE ec_subscription.stripe_subscription_id = '%s'",
  137. mysql_real_escape_string($currentplanid->title),
  138. mysql_real_escape_string($product_id),
  139. mysql_real_escape_string($currentplanid->model_number),
  140. mysql_real_escape_string($currentplanid->price),
  141. mysql_real_escape_string($currentplanid->subscription_bill_length),
  142. mysql_real_escape_string($currentplanid->subscription_bill_period),
  143. mysql_real_escape_string($subscription_id));
  144. mysql_query($sql);
  145. //now get the newest product request
  146. $query= mysql_query("SELECT ec_subscription.*, ec_user.stripe_customer_id, ec_user.default_card_type, ec_user.default_card_last4, UNIX_TIMESTAMP(ec_subscription.start_date) AS start_date FROM ec_subscription LEFT JOIN ec_user ON ec_subscription.email = ec_user.email WHERE ec_subscription.stripe_subscription_id = '".$subscription_id."'");
  147. if (!mysql_error()) {
  148. $row = mysql_fetch_object($query);
  149. $returnArray[] = $row;
  150. return($returnArray); //return array results if there are some
  151. } else {
  152. $returnArray[] = "failed";
  153. return $returnArray; //return noresults if there are no results
  154. }
  155. } else {
  156. $returnArray[] = "failed";
  157. return $returnArray; //return noresults if there are no results
  158. }
  159. }
  160. ///////////////////////////////////////////////////////////////////////
  161. //SUBSCRIPTION COMBO CALL
  162. //////////////////////////////////////////////////////////////////////
  163. function getsubscriptionplans() {
  164. //Create SQL Query
  165. $query= mysql_query("SELECT SQL_CALC_FOUND_ROWS ec_subscription_plan.* FROM ec_subscription_plan");
  166. // return mysql_num_rows($query);
  167. //if results, convert to an array for use in flash
  168. if(mysql_num_rows($query) > 0) {
  169. while ($row=mysql_fetch_object($query)) {
  170. $row->totalrows=$totalrows;
  171. $returnArray[] = $row;
  172. }
  173. return($returnArray); //return array results if there are some
  174. } else {
  175. $returnArray[] = "noresults";
  176. return $returnArray; //return noresults if there are no results
  177. }
  178. }
  179. function getcommonplans($productid) {
  180. //get current subscription plan id
  181. $currentplansql = mysql_query("SELECT ec_product.subscription_plan_id FROM ec_product WHERE ec_product.product_id = '".$productid."'");
  182. //now get the related items with similar subscription plan ids
  183. $currentplanid = mysql_fetch_object($currentplansql);
  184. $query= mysql_query("SELECT ec_product.product_id, ec_product.title FROM ec_product WHERE ec_product.is_subscription_item = '1' AND ec_product.subscription_plan_id = '".$currentplanid->subscription_plan_id."'");
  185. if(mysql_num_rows($query) > 0) {
  186. while ($row = mysql_fetch_object($query)) {
  187. $returnArray[] = $row;
  188. }
  189. return($returnArray); //return array results if there are some
  190. } else {
  191. $returnArray[] = "noresults";
  192. return $returnArray; //return noresults if there are no results
  193. }
  194. }
  195. ///////////////////////////////////////////////////////////////////////
  196. //SUBSCRIPTION PLANS
  197. //////////////////////////////////////////////////////////////////////
  198. function getsubscriptionplanrecords($startrecord, $limit, $orderby, $ordertype, $filter) {
  199. //Create SQL Query
  200. $query= mysql_query("SELECT SQL_CALC_FOUND_ROWS ec_subscription_plan.* FROM ec_subscription_plan WHERE ec_subscription_plan.subscription_plan_id != '' ".$filter." ORDER BY ". $orderby ." ". $ordertype . " LIMIT ". $startrecord .", ". $limit."");
  201. $totalquery=mysql_query("SELECT FOUND_ROWS()");
  202. $totalrows = mysql_fetch_object($totalquery);
  203. // return mysql_num_rows($query);
  204. //if results, convert to an array for use in flash
  205. if(mysql_num_rows($query) > 0) {
  206. while ($row=mysql_fetch_object($query)) {
  207. $row->totalrows=$totalrows;
  208. $returnArray[] = $row;
  209. }
  210. return($returnArray); //return array results if there are some
  211. } else {
  212. $returnArray[] = "noresults";
  213. return $returnArray; //return noresults if there are no results
  214. }
  215. }
  216. function deletesubscriptionplanrecord($subscriptionid) {
  217. //Create SQL Query
  218. $deletesql = $this->escape("DELETE FROM ec_subscription_plan WHERE ec_subscription_plan.subscription_plan_id = '%s'", $subscriptionid);
  219. //Run query on database;
  220. mysql_query($deletesql);
  221. //if no errors, return their current Client ID
  222. //if results, convert to an array for use in flash
  223. if(!mysql_error()) {
  224. $returnArray[] ="success";
  225. return($returnArray); //return array results if there are some
  226. } else {
  227. $returnArray[] = "error";
  228. return $returnArray; //return noresults if there are no results
  229. }
  230. }
  231. function updatesubscriptionplanrecord($subscriptionid, $subscription) {
  232. //convert object to array
  233. $subscription = (array)$subscription;
  234. //Create SQL Query
  235. $sql = sprintf("Replace into ec_subscription_plan(ec_subscription_plan.subscription_plan_id, ec_subscription_plan.plan_title, ec_subscription_plan.can_downgrade)
  236. values('".$subscriptionid."', '%s', '%s')",
  237. mysql_real_escape_string($subscription['subscriptionplantitle']),
  238. mysql_real_escape_string($subscription['candowngrade']));
  239. //Run query on database;
  240. mysql_query($sql);
  241. //if no errors, return their current Client ID
  242. //if results, convert to an array for use in flash
  243. if(!mysql_error()) {
  244. $returnArray[] ="success";
  245. return($returnArray); //return array results if there are some
  246. } else {
  247. $returnArray[] = "error";
  248. return $returnArray; //return noresults if there are no results
  249. }
  250. }
  251. function addsubscriptionplanrecord($subscription) {
  252. //convert object to array
  253. $subscription = (array)$subscription;
  254. //Create SQL Query
  255. $sql = sprintf("Insert into ec_subscription_plan(ec_subscription_plan.subscription_plan_id, ec_subscription_plan.plan_title, ec_subscription_plan.can_downgrade)
  256. values(Null, '%s', '%s')",
  257. mysql_real_escape_string($subscription['subscriptionplantitle']),
  258. mysql_real_escape_string($subscription['candowngrade']));
  259. mysql_query($sql);
  260. //if no errors, return their current Client ID
  261. //if results, convert to an array for use in flash
  262. if(!mysql_error()) {
  263. $returnArray[] ="success";
  264. return($returnArray); //return array results if there are some
  265. } else {
  266. $returnArray[] = "error";
  267. return $returnArray; //return noresults if there are no results
  268. }
  269. }
  270. }//close class
  271. ?>