PageRenderTime 840ms CodeModel.GetById 23ms RepoModel.GetById 7ms app.codeStats 0ms

/wp-content/plugins/wp-lister-for-ebay/classes/WPL_Model.php

https://bitbucket.org/sanders_nick/my-maxi-skirt
PHP | 209 lines | 101 code | 48 blank | 60 comment | 33 complexity | 2609719ae7499643ef14d976e3b5f817 MD5 | raw file
Possible License(s): GPL-2.0, BSD-3-Clause, AGPL-1.0, GPL-3.0, LGPL-2.1
  1. <?php
  2. class WPL_Model {
  3. const OptionPrefix = 'wplister_';
  4. var $logger;
  5. public $result;
  6. public function __construct() {
  7. global $wpl_logger;
  8. $this->logger = &$wpl_logger;
  9. }
  10. // function loadEbayClasses()
  11. // {
  12. // // we want to be patient when talking to ebay
  13. // set_time_limit(600);
  14. // // add EbatNs folder to include path - required for SDK
  15. // $incPath = WPLISTER_PATH . '/includes/EbatNs';
  16. // set_include_path( get_include_path() . ':' . $incPath );
  17. // // use autoloader to load EbatNs classes
  18. // spl_autoload_register('WPL_Autoloader::autoloadEbayClasses');
  19. // }
  20. function initServiceProxy( $session )
  21. {
  22. // load required classes - moved to EbayController::initEbay()
  23. // $this->loadEbayClasses();
  24. // preparation - set up new ServiceProxy with given session
  25. $this->_session = $session;
  26. $this->_cs = new EbatNs_ServiceProxy($this ->_session, 'EbatNs_DataConverterUtf8');
  27. // attach custom DB Logger if enabled
  28. if ( get_option('wplister_log_to_db') == '1' ) {
  29. $this->_cs->attachLogger( new WPL_EbatNs_Logger( false, 'db' ) );
  30. }
  31. // attach Logger if log level is debug or greater
  32. // if ( get_option('wplister_log_level') > 6 ) {
  33. // $this->_cs->attachLogger( new EbatNs_Logger( false, $this->logger->file ) );
  34. // }
  35. }
  36. // flexible object encoder
  37. public function encodeObject( $obj ) {
  38. $str = json_encode( $obj );
  39. #$this->logger->info('json_encode - input: '.print_r($obj,1));
  40. #$this->logger->info('json_encode - output: '.$str);
  41. #$this->logger->info('json_last_error(): '.json_last_error() );
  42. if ( $str = '{}' ) return serialize( $obj );
  43. else return $str;
  44. }
  45. // flexible object decoder
  46. public function decodeObject( $str, $assoc = false, $loadEbayClasses = false ) {
  47. // load eBay classes if required
  48. if ( $loadEbayClasses ) EbayController::loadEbayClasses();
  49. if ( $str == '' ) return false;
  50. // json_decode
  51. $obj = json_decode( $str, $assoc );
  52. //$this->logger->info('json_decode: '.print_r($obj,1));
  53. if ( is_object($obj) || is_array($obj) ) return $obj;
  54. // unserialize fallback
  55. $obj = unserialize( $str );
  56. //$this->logger->info('unserialize: '.print_r($obj,1));
  57. if ( is_object($obj) || is_array($obj) ) return $obj;
  58. // log error
  59. $this->logger->error('decodeObject() - not an valid object: '.$str);
  60. return $str;
  61. }
  62. /* Generic message display */
  63. public function showMessage($message, $errormsg = false, $echo = false) {
  64. $class = ($errormsg) ? 'error' : 'updated fade';
  65. $message = '<div id="message" class="'.$class.'"><p>'.$message.'</p></div>';
  66. if ($echo) {
  67. echo $message;
  68. } else {
  69. $this->message .= $message;
  70. }
  71. }
  72. // handle eBay response
  73. // - check for request success (or warning)
  74. // - display any errors
  75. // - display any warning - except #21917103
  76. // - returns true on success (even with warnings) and false on failure
  77. function handleResponse( $res ) {
  78. $errors = array();
  79. // echo errors and warnings - call can be successful but with warnings
  80. if ( $res->getErrors() )
  81. foreach ($res->getErrors() as $error) {
  82. // hide warning #21917103 ("Delivery estimate based on shipping service and handling time")
  83. if ( $error->getErrorCode() == 21917103 ) continue;
  84. // #37 means soap error - and htmlentities have to be encoded (maybe not anymore?)
  85. if ( $error->getErrorCode() == 37 ) {
  86. // $longMessage = htmlspecialchars( $error->getLongMessage() );
  87. $longMessage = $error->getLongMessage();
  88. } else {
  89. $longMessage = htmlspecialchars( $error->getLongMessage() );
  90. // $longMessage = $error->getLongMessage();
  91. }
  92. // some errors like #240 may return an extra ErrorParameters array
  93. // deactivated for now since a copy of this will be found in $res->getMessage()
  94. // if ( isset( $error->ErrorParameters ) ) {
  95. // $extraMsg = '<div id="message" class="updated"><p>';
  96. // $extraMsg .= print_r( $error->ErrorParameters, 1 );
  97. // $extraMsg .= '</p></div>';
  98. // if ( ! $this->is_ajax() ) echo $extraMsg;
  99. // } else {
  100. // $extraMsg = '';
  101. // }
  102. // display error message - if this is not an ajax request
  103. $class = ( $error->SeverityCode == 'Error') ? 'error' : 'updated';
  104. $htmlMsg = '<div id="message" class="'.$class.'"><p>';
  105. $htmlMsg .= '<b>' . $error->SeverityCode . ': ' . $error->getShortMessage() . '</b>' . ' (#' . $error->getErrorCode() . ') ';
  106. $htmlMsg .= '<br>' . $longMessage . '';
  107. $htmlMsg .= '</p></div>';
  108. // $htmlMsg .= $extraMsg;
  109. if ( ! $this->is_ajax() ) echo $htmlMsg;
  110. // save errors and warnings as array of objects
  111. $errorObj = new stdClass();
  112. $errorObj->SeverityCode = $error->SeverityCode;
  113. $errorObj->ErrorCode = $error->getErrorCode();
  114. $errorObj->ShortMessage = $error->getShortMessage();
  115. $errorObj->LongMessage = $longMessage;
  116. $errorObj->HtmlMessage = $htmlMsg;
  117. $errors[] = $errorObj;
  118. }
  119. // some errors like #240 may trigger an extra Message field returned in the response
  120. if ( $res->getMessage() ) {
  121. $extraMsg = '<div id="message" class="updated">';
  122. $extraMsg .= $res->getMessage();
  123. $extraMsg .= '</div>';
  124. if ( ! $this->is_ajax() ) echo $extraMsg;
  125. // save errors and warnings as array of objects
  126. $errorObj = new stdClass();
  127. $errorObj->SeverityCode = 'Info';
  128. $errorObj->ErrorCode = 101;
  129. $errorObj->ShortMessage = __('Additional details about this error','wplister');
  130. $errorObj->LongMessage = $res->getMessage();
  131. $errorObj->HtmlMessage = $extraMsg;
  132. $errors[] = $errorObj;
  133. }
  134. // check if request was successful
  135. if ( ($res->getAck() == 'Success') || ($res->getAck() == 'Warning') ) {
  136. $success = true;
  137. } else {
  138. $success = false;
  139. }
  140. // save results as local property
  141. $this->result = new stdClass();
  142. $this->result->success = $success;
  143. $this->result->errors = $errors;
  144. // $this->logger->info('handleResponse() - result: '.print_r($this->result,1));
  145. return $success;
  146. } // handleResponse()
  147. function is_ajax() {
  148. return defined( 'DOING_AJAX' ) && DOING_AJAX;
  149. }
  150. // check if given WordPress plugin is active
  151. public function is_plugin_active( $plugin ) {
  152. if ( is_multisite() ) {
  153. // check for network activation
  154. if ( ! function_exists( 'is_plugin_active_for_network' ) )
  155. require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
  156. if ( function_exists('is_plugin_active_for_network') && is_plugin_active_for_network( $plugin ) )
  157. return true;
  158. }
  159. return in_array( $plugin, (array) get_option( 'active_plugins', array() ) );
  160. }
  161. }