-
Author
-
June 30, 2015 at 20:02 #65821
apeedks
ParticipantHello there – suddenly an error has occurred. I am trying to log in to my wordpress admin a/c and it is showing only this –
Fatal error: Cannot use object of type WP_Error as array in /public_html/wp-content/themes/kleo/kleo-framework/inc/pixelentity-themes-updater/class-envato-protected-api.php on line 344Kindly help asap because we are unable to access our website admin.
June 30, 2015 at 20:24 #65827sharmstr
ModeratorI gave you the wrong link the first time. Someone else reported this, but never told me if my fix worked. See this and let me know
https://archived.seventhqueen.com/forums/topic/fatal-error-6#post-63716
Hi there!!! Help others from the community and mark any reply as solution if it solved your question. Mark as a solutionJuly 1, 2015 at 04:07 #65916apeedks
ParticipantHello Sharmstr
I couldnot find the line you have mentioned see below the code for both the
1.
/home/penderie/public_html/wp-content/themes/kleo/kleo-framework/inc/pixelentity-themes-updater/class-envato-protected-api.php<?php
/**
* Envato Protected API
*
* Wrapper class for the Envato marketplace protected API methods specific
* to the Envato WordPress Toolkit plugin.
*
* @package WordPress
* @subpackage Envato WordPress Toolkit
* @author Derek Herman <derek@envato.com>
* @since 1.0
*/
class Envato_Protected_API {
/**
* The buyer’s Username
*
* @var string
*
* @access public
* @since 1.0
*/
public $user_name;/**
* The buyer’s API Key
*
* @var string
*
* @access public
* @since 1.0
*/
public $api_key;/**
* The default API URL
*
* @var string
*
* @access private
* @since 1.0
*/
protected $public_url = ‘http://marketplace.envato.com/api/edge/set.json’;/**
* Error messages
*
* @var array
*
* @access public
* @since 1.0
*/
public $errors = array( ‘errors’ => ” );/**
* Class contructor method
*
* @param string The buyer’s Username
* @param string The buyer’s API Key can be accessed on the marketplaces via My Account -> My Settings -> API Key
* @return void Sets error messages if any.
*
* @access public
* @since 1.0
*/
public function __construct( $user_name = ”, $api_key = ” ) {if ( $user_name == ” ) {
$this->set_error( ‘user_name’, __( ‘Please enter your Envato Marketplace Username.’, ‘envato’ ) );
}if ( $api_key == ” ) {
$this->set_error( ‘api_key’, __( ‘Please enter your Envato Marketplace API Key.’, ‘envato’ ) );
}$this->user_name = $user_name;
$this->api_key = $api_key;}
/**
* Get private user data.
*
* @param string Available sets: ‘vitals’, ‘earnings-and-sales-by-month’, ‘statement’, ‘recent-sales’, ‘account’, ‘verify-purchase’, ‘download-purchase’, ‘wp-list-themes’, ‘wp-download’
* @param string The buyer/author username to test against.
* @param string Additional set data such as purchase code or item id.
* @param bool Allow API calls to be cached. Default false.
* @param int Set transient timeout. Default 300 seconds (5 minutes).
* @return array An array of values (possibly cached) from the requested set, or an error message.
*
* @access public
* @since 1.0
* @updated 1.3
*/
public function private_user_data( $set = ”, $user_name = ”, $set_data = ”, $allow_cache = false, $timeout = 300 ) {if ( $set == ” ) {
$this->set_error( ‘set’, __( ‘The API “set” is a required parameter.’, ‘envato’ ) );
}if ( $user_name == ” ) {
$user_name = $this->user_name;
}if ( $set_data !== ” ) {
$set_data = “:$set_data”;
}$url = “http://marketplace.envato.com/api/edge/$user_name/$this->api_key/$set$set_data.json”;
/* set transient ID for later */
$transient = $user_name . ‘_’ . $set . $set_data;if ( $allow_cache ) {
$cache_results = $this->set_cache( $transient, $url, $timeout );
$results = $cache_results;
} else {
$results = $this->remote_request( $url );
}if ( isset( $results->error ) ) {
$this->set_error( ‘error_’ . $set, $results->error );
}if ( $errors = $this->api_errors() ) {
$this->clear_cache( $transient );
return $errors;
}if ( isset( $results->$set ) ) {
return $results->$set;
}return false;
}
/**
* Used to list purchased themes.
*
* @param bool Allow API calls to be cached. Default true.
* @param int Set transient timeout. Default 300 seconds (5 minutes).
* @return object If user has purchased themes, returns an object containing those details.
*
* @access public
* @since 1.0
* @updated 1.3
*/
public function wp_list_themes( $allow_cache = true, $timeout = 300 ) {return $this->private_user_data( ‘wp-list-themes’, $this->user_name, ”, $allow_cache, $timeout );
}
/**
* Used to download a purchased item.
*
* This method does not allow caching.
*
* @param string The purchased items id
* @return string|bool If item purchased, returns the download URL.
*
* @access public
* @since 1.0
*/
public function wp_download( $item_id ) {if ( ! isset( $item_id ) ) {
$this->set_error( ‘item_id’, __( ‘The Envato Marketplace “item ID” is a required parameter.’, ‘envato’ ) );
}$download = $this->private_user_data( ‘wp-download’, $this->user_name, $item_id );
if ( $errors = $this->api_errors() ) {
return $errors;
} else if ( isset( $download->url ) ) {
return $download->url;
}return false;
}/**
* Retrieve the details for a specific marketplace item.
*
* @param string $item_id The id of the item you need information for.
* @return object Details for the given item.
*
* @access public
* @since 1.0
* @updated 1.3
*/
public function item_details( $item_id, $allow_cache = true, $timeout = 300 ) {$url = preg_replace( ‘/set/i’, ‘item:’ . $item_id, $this->public_url );
/* set transient ID for later */
$transient = ‘item_’ . $item_id;if ( $allow_cache ) {
$cache_results = $this->set_cache( $transient, $url, $timeout );
$results = $cache_results;
} else {
$results = $this->remote_request( $url );
}if ( isset( $results->error ) ) {
$this->set_error( ‘error_item_’ . $item_id, $results->error );
}if ( $errors = $this->api_errors() ) {
$this->clear_cache( $transient );
return $errors;
}if ( isset( $results->item ) ) {
return $results->item;
}return false;
}
/**
* Set cache with the Transients API.
*
* @link http://codex.wordpress.org/Transients_API
*
* @param string Transient ID.
* @param string The URL of the API request.
* @param int Set transient timeout. Default 300 seconds (5 minutes).
* @return mixed
*
* @access public
* @since 1.3
*/
public function set_cache( $transient = ”, $url = ”, $timeout = 300 ) {if ( $transient == ” || $url == ” ) {
return false;
}/* keep the code below cleaner */
$transient = $this->validate_transient( $transient );
$transient_timeout = ‘_transient_timeout_’ . $transient;/* set original cache before we destroy it */
$old_cache = get_option( $transient_timeout ) < time() ? get_option( $transient ) : ”;/* look for a cached result and return if exists */
if ( false !== $results = get_transient( $transient ) ) {
return $results;
}/* create the cache and allow filtering before it’s saved */
if ( $results = apply_filters( ‘envato_api_set_cache’, $this->remote_request( $url ), $transient ) ) {
set_transient( $transient, $results, $timeout );
return $results;
}return false;
}
/**
* Clear cache with the Transients API.
*
* @link http://codex.wordpress.org/Transients_API
*
* @param string Transient ID.
* @return void
*
* @access public
* @since 1.3
*/
public function clear_cache( $transient = ” ) {delete_transient( $transient );
}
/**
* Helper function to validate transient ID’s.
*
* @param string The transient ID.
* @return string Returns a DB safe transient ID.
*
* @access public
* @since 1.3
*/
public function validate_transient( $id = ” ) {return preg_replace( ‘/[^A-Za-z0-9\_\-]/i’, ”, str_replace( ‘:’, ‘_’, $id ) );
}
/**
* Helper function to set error messages.
*
* @param string The error array id.
* @param string The error message.
* @return void
*
* @access public
* @since 1.0
*/
public function set_error( $id, $error ) {$this->errors[‘errors’][$id] = $error;
}
/**
* Helper function to return the set errors.
*
* @return array The errors array.
*
* @access public
* @since 1.0
*/
public function api_errors() {if ( ! empty( $this->errors[‘errors’] ) ) {
return $this->errors[‘errors’];
}}
/**
* Helper function to query the marketplace API via wp_remote_request.
*
* @param string The url to access.
* @return object The results of the wp_remote_request request.
*
* @access private
* @since 1.0
*/
protected function remote_request( $url ) {if ( empty( $url ) ) {
return false;
}$request = wp_remote_request( $url );
$data = json_decode( $request[‘body’] );
if ( $request[‘response’][‘code’] == 200 ) {
return $data;
} else {
$this->set_error( ‘http_code’, $request[‘response’][‘code’] );
}if ( isset( $data->error ) ) {
$this->set_error( ‘api_error’, $data->error );
}return false;
}/**
* Helper function to print arrays to the screen ofr testing.
*
* @param array The array to print out
* @return string
*
* @access public
* @since 1.0
*/
public function pretty_print( $array ) {echo ‘
COPY CODE'; print_r( $array ); echo '‘;
}
}/* End of file class-envato-api.php */
/* Location: ./includes/class-envato-api.php */
_______________________Code 2
1. class-pixelentity-themes-updater.php
<?php
/**
* Envato Protected API
*
* Wrapper class for the Envato marketplace protected API methods specific
* to the Envato WordPress Toolkit plugin.
*
* @package WordPress
* @subpackage Envato WordPress Toolkit
* @author Derek Herman <derek@envato.com>
* @since 1.0
*/
class Envato_Protected_API {
/**
* The buyer’s Username
*
* @var string
*
* @access public
* @since 1.0
*/
public $user_name;/**
* The buyer’s API Key
*
* @var string
*
* @access public
* @since 1.0
*/
public $api_key;/**
* The default API URL
*
* @var string
*
* @access private
* @since 1.0
*/
protected $public_url = ‘http://marketplace.envato.com/api/edge/set.json’;/**
* Error messages
*
* @var array
*
* @access public
* @since 1.0
*/
public $errors = array( ‘errors’ => ” );/**
* Class contructor method
*
* @param string The buyer’s Username
* @param string The buyer’s API Key can be accessed on the marketplaces via My Account -> My Settings -> API Key
* @return void Sets error messages if any.
*
* @access public
* @since 1.0
*/
public function __construct( $user_name = ”, $api_key = ” ) {if ( $user_name == ” ) {
$this->set_error( ‘user_name’, __( ‘Please enter your Envato Marketplace Username.’, ‘envato’ ) );
}if ( $api_key == ” ) {
$this->set_error( ‘api_key’, __( ‘Please enter your Envato Marketplace API Key.’, ‘envato’ ) );
}$this->user_name = $user_name;
$this->api_key = $api_key;}
/**
* Get private user data.
*
* @param string Available sets: ‘vitals’, ‘earnings-and-sales-by-month’, ‘statement’, ‘recent-sales’, ‘account’, ‘verify-purchase’, ‘download-purchase’, ‘wp-list-themes’, ‘wp-download’
* @param string The buyer/author username to test against.
* @param string Additional set data such as purchase code or item id.
* @param bool Allow API calls to be cached. Default false.
* @param int Set transient timeout. Default 300 seconds (5 minutes).
* @return array An array of values (possibly cached) from the requested set, or an error message.
*
* @access public
* @since 1.0
* @updated 1.3
*/
public function private_user_data( $set = ”, $user_name = ”, $set_data = ”, $allow_cache = false, $timeout = 300 ) {if ( $set == ” ) {
$this->set_error( ‘set’, __( ‘The API “set” is a required parameter.’, ‘envato’ ) );
}if ( $user_name == ” ) {
$user_name = $this->user_name;
}if ( $set_data !== ” ) {
$set_data = “:$set_data”;
}$url = “http://marketplace.envato.com/api/edge/$user_name/$this->api_key/$set$set_data.json”;
/* set transient ID for later */
$transient = $user_name . ‘_’ . $set . $set_data;if ( $allow_cache ) {
$cache_results = $this->set_cache( $transient, $url, $timeout );
$results = $cache_results;
} else {
$results = $this->remote_request( $url );
}if ( isset( $results->error ) ) {
$this->set_error( ‘error_’ . $set, $results->error );
}if ( $errors = $this->api_errors() ) {
$this->clear_cache( $transient );
return $errors;
}if ( isset( $results->$set ) ) {
return $results->$set;
}return false;
}
/**
* Used to list purchased themes.
*
* @param bool Allow API calls to be cached. Default true.
* @param int Set transient timeout. Default 300 seconds (5 minutes).
* @return object If user has purchased themes, returns an object containing those details.
*
* @access public
* @since 1.0
* @updated 1.3
*/
public function wp_list_themes( $allow_cache = true, $timeout = 300 ) {return $this->private_user_data( ‘wp-list-themes’, $this->user_name, ”, $allow_cache, $timeout );
}
/**
* Used to download a purchased item.
*
* This method does not allow caching.
*
* @param string The purchased items id
* @return string|bool If item purchased, returns the download URL.
*
* @access public
* @since 1.0
*/
public function wp_download( $item_id ) {if ( ! isset( $item_id ) ) {
$this->set_error( ‘item_id’, __( ‘The Envato Marketplace “item ID” is a required parameter.’, ‘envato’ ) );
}$download = $this->private_user_data( ‘wp-download’, $this->user_name, $item_id );
if ( $errors = $this->api_errors() ) {
return $errors;
} else if ( isset( $download->url ) ) {
return $download->url;
}return false;
}/**
* Retrieve the details for a specific marketplace item.
*
* @param string $item_id The id of the item you need information for.
* @return object Details for the given item.
*
* @access public
* @since 1.0
* @updated 1.3
*/
public function item_details( $item_id, $allow_cache = true, $timeout = 300 ) {$url = preg_replace( ‘/set/i’, ‘item:’ . $item_id, $this->public_url );
/* set transient ID for later */
$transient = ‘item_’ . $item_id;if ( $allow_cache ) {
$cache_results = $this->set_cache( $transient, $url, $timeout );
$results = $cache_results;
} else {
$results = $this->remote_request( $url );
}if ( isset( $results->error ) ) {
$this->set_error( ‘error_item_’ . $item_id, $results->error );
}if ( $errors = $this->api_errors() ) {
$this->clear_cache( $transient );
return $errors;
}if ( isset( $results->item ) ) {
return $results->item;
}return false;
}
/**
* Set cache with the Transients API.
*
* @link http://codex.wordpress.org/Transients_API
*
* @param string Transient ID.
* @param string The URL of the API request.
* @param int Set transient timeout. Default 300 seconds (5 minutes).
* @return mixed
*
* @access public
* @since 1.3
*/
public function set_cache( $transient = ”, $url = ”, $timeout = 300 ) {if ( $transient == ” || $url == ” ) {
return false;
}/* keep the code below cleaner */
$transient = $this->validate_transient( $transient );
$transient_timeout = ‘_transient_timeout_’ . $transient;/* set original cache before we destroy it */
$old_cache = get_option( $transient_timeout ) < time() ? get_option( $transient ) : ”;/* look for a cached result and return if exists */
if ( false !== $results = get_transient( $transient ) ) {
return $results;
}/* create the cache and allow filtering before it’s saved */
if ( $results = apply_filters( ‘envato_api_set_cache’, $this->remote_request( $url ), $transient ) ) {
set_transient( $transient, $results, $timeout );
return $results;
}return false;
}
/**
* Clear cache with the Transients API.
*
* @link http://codex.wordpress.org/Transients_API
*
* @param string Transient ID.
* @return void
*
* @access public
* @since 1.3
*/
public function clear_cache( $transient = ” ) {delete_transient( $transient );
}
/**
* Helper function to validate transient ID’s.
*
* @param string The transient ID.
* @return string Returns a DB safe transient ID.
*
* @access public
* @since 1.3
*/
public function validate_transient( $id = ” ) {return preg_replace( ‘/[^A-Za-z0-9\_\-]/i’, ”, str_replace( ‘:’, ‘_’, $id ) );
}
/**
* Helper function to set error messages.
*
* @param string The error array id.
* @param string The error message.
* @return void
*
* @access public
* @since 1.0
*/
public function set_error( $id, $error ) {$this->errors[‘errors’][$id] = $error;
}
/**
* Helper function to return the set errors.
*
* @return array The errors array.
*
* @access public
* @since 1.0
*/
public function api_errors() {if ( ! empty( $this->errors[‘errors’] ) ) {
return $this->errors[‘errors’];
}}
/**
* Helper function to query the marketplace API via wp_remote_request.
*
* @param string The url to access.
* @return object The results of the wp_remote_request request.
*
* @access private
* @since 1.0
*/
protected function remote_request( $url ) {if ( empty( $url ) ) {
return false;
}$request = wp_remote_request( $url );
$data = json_decode( $request[‘body’] );
if ( $request[‘response’][‘code’] == 200 ) {
return $data;
} else {
$this->set_error( ‘http_code’, $request[‘response’][‘code’] );
}if ( isset( $data->error ) ) {
$this->set_error( ‘api_error’, $data->error );
}return false;
}/**
* Helper function to print arrays to the screen ofr testing.
*
* @param array The array to print out
* @return string
*
* @access public
* @since 1.0
*/
public function pretty_print( $array ) {echo ‘
COPY CODE'; print_r( $array ); echo '‘;
}
}/* End of file class-envato-api.php */
/* Location: ./includes/class-envato-api.php */July 1, 2015 at 05:03 #65924sharmstr
ModeratorPlease read it again. I said nothing about editing those files. I said to edit kleo/kleo-framework/kleo.php
Hi there!!! Help others from the community and mark any reply as solution if it solved your question. Mark as a solution -
AuthorPosts
The forum ‘KLEO’ is closed to new topics and replies.