', 'process_Update' ); // body == { success: true } Helper::send_response_formatted_success( [ 'success' => true ] ); } else { Logger::log( 'action: delete_changes', 'Fail > ', 'process_Update' ); } } public static function enableApi() { update_option( 'woocommerce_api_enabled', 'yes' ); $savedValue = get_option( 'woocommerce_api_enabled' ); $saveSuccess = ( 'yes' === $savedValue ); if ( $saveSuccess ) { Logger::log( 'action: enable_api', 'Success > ', 'process_Update' ); // body == { success: true } Helper::send_response_formatted_success( [ 'success' => true ] ); } else { Logger::log( 'action: enable_api', 'Fail > ', 'process_Update' ); } } public static function disableApi() { update_option( 'woocommerce_api_enabled', 'no' ); $savedValue = get_option( 'woocommerce_api_enabled' ); $saveSuccess = ( 'no' === $savedValue ); if ( $saveSuccess ) { Logger::log( 'action: disable_api', 'Success > ', 'process_Update' ); // body == { success: true } Helper::send_response_formatted_success( [ 'success' => true ] ); } else { Logger::log( 'action: disable_api', 'Fail > ', 'process_Update' ); } } public static function createApiCredentials() { // clear existing credentials // -------------------------- $User = Helper::get_shop_user(); /* @var $User \WP_User API keys owner */ $user_id = $User instanceof \WP_User ? (int) $User->ID : 0; // delete api key if exists if ( $user_id ) { ShopKeys::delete_shop_keys_data_by_user_id( $user_id ); } // delete relative options delete_option( 'adscale__access_key_id' ); delete_option( 'adscale__access_consumer_key' ); delete_option( 'adscale__access_consumer_secret' ); delete_option( 'adscale__access_wp_user_id' ); // processing new credentials // -------------------------- $keyData = ShopKeys::process_shop_access_keys(); if ( ! empty( $keyData['key_id'] ) && (int) get_option( 'adscale__access_key_id' ) === (int) $keyData['key_id'] ) { Logger::log( 'action: create_api_credentials', 'Success > ', 'process_Update' ); $keys_data = ShopKeys::get_keys_data(); // body == json from the GetKeys endpoint Helper::send_response_formatted_success( [ 'shop_host' => Helper::get_shop_domain(), 'platform' => Helper::getConfigSetting( 'shop/platform', 'woo' ), 'consumer_key' => $keys_data['consumer_key'], 'consumer_secret' => $keys_data['consumer_secret'], 'version' => ADSCALE_INTERNAL_MODULE_VERSION, ] ); } else { Logger::log( 'action: create_api_credentials', 'Fail > ', 'process_Update' ); } } /** * Method uses for all Update 'modify' actions * * @param $propertyName * @param $propertyValue * * @throws ServiceApiException */ public static function modifyProperty( $propertyName, $propertyValue ) { $dbOptionName = self::getDbOptionNameByPropertyName( $propertyName ); if ( ! $dbOptionName ) { throw new ServiceApiException( 'Invalid argument value', 'I001', 'property' ); } // process update_option( $dbOptionName, $propertyValue ); $savedPropertyValue = get_option( $dbOptionName ); $saveSuccess = ( $savedPropertyValue === $propertyValue || maybe_serialize( $savedPropertyValue ) === maybe_serialize( $propertyValue ) || $savedPropertyValue === (string) $propertyValue ); if ( $saveSuccess ) { Logger::log( "action: modify, property: {$propertyName}, value: {$propertyValue}", 'Success > ', 'process_Update' ); //json format : {property: "%propertyName%", value: "%propertyValue%"} Helper::send_response_formatted_success( [ 'property' => $propertyName, 'value' => $propertyValue ] ); } Logger::log( "action: modify, property: {$propertyName}, value: {$propertyValue}", 'Fail > ' , 'process_Update' ); } /** * Option name resolver * * @param string $propertyName * * @return string|null DbOptionName */ public static function getDbOptionNameByPropertyName( $propertyName ) { $properties = [ 'shopHost' => 'adscale__shop_domain', 'googleVerificationCode' => 'adscale__gsv', 'facebookVerificationCode' => 'adscale__fdv', 'proxyEndpoint' => 'adscale__proxy_endpoint', 'considerPendingOrders' => 'adscale__consider_pending_orders', 'mode' => 'adscale__mode', ]; return isset( $properties[ $propertyName ] ) ? (string) $properties[ $propertyName ] : null; } }