phpbb-auction.com Forum Index phpbb-auction.com
Download, Support, Documentation
 
Donate to phpbb-auction.com to support the project


phpbb-Auction
  Home
   - News
   - Bug report/Patches
   - Future Features
  Demo
  Downloads
   - Version 1.3m  (Core /Lang /Mods)
   - Version 1.2m  (Core /Lang /Mods)
   - Version 1.0m  (Core /Lang /Mods)
   - All
  Services
  Documentation
   - Features
   - Documents
   - How-Tos
   - About
  Support
   - English
   - German
  Development
   - Changlog
   - Requests
   - Team
   - CVS
  Community
   - Website of the Month
   - Websites
   - Community Forum
   - Member

Navigation
FAQFAQ
SearchSearch
UsergroupsUsergroups
RegisterRegister
ProfileProfile
Log in to check your private messagesLog in to check your private messages
Log inLog in

Forum
Changing start time auctions
Sun Feb 07, 2010 4:33 am FR
Easy: what code to use to update sql table?
Fri Oct 16, 2009 8:39 am guyb
Unlimited products(downloads)
Wed Oct 14, 2009 7:09 pm hoimyr
Seller chooses currency
Sun Oct 11, 2009 8:00 pm hoimyr
Cant select end date without getting error
Sun Oct 11, 2009 6:43 pm hoimyr

About
Author: FR
Credits:
Brookfresh, Brad Lawryk, Crogon, DaMysterious, EklipzeDesigns, ML, musashi, phpBB Group, phpBB-Auction-Team, php-styles, sanman, Tel, Vampy, wGEric

Supported Sites





Statistics
User: 17015
Posts: 18401
Latest User: geico car insurance

Attempted "Reserve" Patch (need help)

 
Post new topic   Reply to topic    phpbb-auction.com Forum Index -> Support
View previous topic :: View next topic  
Author Message
guyb
Small-Cap Auctioneer
Small-Cap Auctioneer


Joined: 22 Oct 2008
Posts: 21

PostPosted: Sat Oct 25, 2008 6:22 pm    Post subject: Attempted "Reserve" Patch (need help) Reply with quote

I'm trying to add an element of 'excitement' to the auction presentation: in many auctions starting prices are presented as a range, like "$70-100".

In mailbid auctions I've run offline I usually set my asking price about 30% above the minimum acceptable price (i.e. I ask $100, but accept bids as low as $70). This is an excellent sales tactic.

With the auction mod I'd like to allow bidders to bid under the starting price by having the mod's algorythm see that, say 70% (or whatever %), of the starting price is the true base starting price: if I posted an object for $100, by this hack, I would accept bids of $70 and up even though $100 would be the published start price.

Any idea how to tweak the code to work this way?


Last edited by guyb on Mon Oct 27, 2008 11:22 pm; edited 1 time in total
Back to top
View user's profile Send private message
guyb
Small-Cap Auctioneer
Small-Cap Auctioneer


Joined: 22 Oct 2008
Posts: 21

PostPosted: Sat Oct 25, 2008 6:27 pm    Post subject: Reply with quote

I'm trying to push this forward with two possible solutions I've been thinking of (but both ignore trying to charge users for using reserves, so no suggested changes are mentioned in that regard):

1. A fixed variable inserted into the mod: setting the minimum acceptible bid on an object as 70% of the starting price, I'd use something like "0.70" as a factor in the mod's calculation of minimum acceptible bid.

The code below doesn't include this "fix", but I'm assuming this is the code I'd have to tweak (from auction_offer.php):

Code:
===>ON LINE 1329 I NEED TO RECONFIGURE BELOW TO TAKE INTO ACCOUNT THE RESERVE:

                 // if no bid exists, the new bid needs to be higher than the initial price
                 $last = $auction_corresponding_bids_start_stop_row['auction_offer_last_bid_price'];
                 if ( ($auction_corresponding_bids_start_stop_row['auction_offer_last_bid_price'] == 0 ) || ($auction_corresponding_bids_start_stop_row['auction_offer_last_bid_price']=""))
                      {
                           if ( $HTTP_POST_VARS['auction_your_amount'] < $auction_corresponding_bids_start_stop_row['auction_offer_price_start'])
                                  {
                                      $message = $lang['auction_bid_to_low'] . "<br><br>" . sprintf($lang['Click_return_offer'], "<a href="" ao=" . $HTTP_GET_VARS[POST_AUCTION_OFFER_URL]) . ">", "</a>");
                                      message_die(GENERAL_MESSAGE, $message);
                                  }
                      } // if


Question: Would this be the only place to apply the reserve factor and can someone suggest how I would write the code?


Last edited by guyb on Mon Oct 27, 2008 11:22 pm; edited 1 time in total
Back to top
View user's profile Send private message
guyb
Small-Cap Auctioneer
Small-Cap Auctioneer


Joined: 22 Oct 2008
Posts: 21

PostPosted: Sat Oct 25, 2008 6:36 pm    Post subject: Reply with quote

2. The other idea I thought of was a full-scale inclusion of a "reserve factor" field which the seller fills in. The maximum reserve would be "100%" (or "1.00"; i.e. the full amount of the starting price); minimum reserve could be anything except zero or a negative number (no zeros, so "reserve" x "start price" doesn't yield us a zero result).


I'm not a programming whizz so I'm presenting for scrutiny what I think I'd need to change. Any feedback would be greatly appreciated:

* I'm using these names below as the new variables I'd be using:
- auction_offer_reserve_factor
- 'auction_offer_reserve_factor_max'
- 'auction_offer_reserve_too_high'
- 'auction_offer_reserve_not_negative'


**** STEP 1: ADD NEW SQL FIELD, based on below style
Code:

$sql[] = "CREATE TABLE `" . $table_prefix . "auction_offer` (
  `PK_auction_offer_id` mediumint(8) unsigned NOT NULL auto_increment,
  `FK_auction_offer_user_id` mediumint(8) unsigned NOT NULL default '0',
  `FK_auction_offer_room_id` mediumint(8) unsigned NOT NULL default '0',
  `auction_offer_title` varchar(100) NOT NULL default '',
  `auction_offer_text` text,
  `auction_offer_time_start` int(11) NOT NULL default '0',
  `auction_offer_time_stop` int(11) NOT NULL default '0',
  `auction_offer_state` int(1) NOT NULL default '0',
  `auction_offer_price_start` decimal(15,2) NOT NULL default '0.00',

  `auction_offer_reserve_factor` decimal(3,2) NOT NULL default '1.00',

* I assume the SQL command to add the field would be:
ALTER TABLE auction_offer
ADD `auction_offer_reserve_factor` decimal(3,2) NOT NULL default '1.00';



***STEP 2: MAKE SIMILAR SETTING AS BELOW (in what file do I set the auction_config_data?); SET MY PATCH SO MAX IS "1.00":

Code:

$auction_config_data['auction_offer_amount_max'])
$auction_config_data['auction_offer_reserve_factor_max'])

ALSO SET these in lang_auction.php:
'auction_offer_reserve_too_high'
'auction_offer_reserve_not_negative'


edit: it looks like the original "auction_offer_amount_max" parameter was set in the install_db.php file, so I'm supposing I likewise have to set a _factor_max and _factor_min parameter like this, and call them up individually through mysqladmin:

Code:

$sql[] = "INSERT INTO `" . $table_prefix . "auction_config` VALUES ('auction_offer_amount_max', '10000')";
$sql[] = "INSERT INTO `" . $table_prefix . "auction_config` VALUES ('auction_offer_amount_min', '1')";


$sql[] = "INSERT INTO `" . $table_prefix . "auction_config` VALUES ('auction_offer_reserve_factor_max', '1.00')";
$sql[] = "INSERT INTO `" . $table_prefix . "auction_config` VALUES ('auction_offer_reserve_factor_min', '0.01')";




***STEP 3: ADD MY CUSTOMIZED INFO INTO AUCTION OFFER PAGE:
===>FOR auction_offer.php (line 327), add my version of:
Code:

                       'L_AUCTION_OFFER_PRICE_START' => $lang['auction_offer_price_start'] . "( " . $auction_config_data['currency'] . " )",

as

                       'L_AUCTION_OFFER_RESERVE_FACTOR' => $lang['auction_offer_reserve_factor'],



===>AND ON Line 371:
Code:

                                  'AUCTION_OFFER_PRICE_START' => $auction_offer_row['auction_offer_price_start'],

as
                                  'AUCTION_OFFER_RESERVE_FACTOR' => $auction_offer_row['auction_offer_reserve_factor'],




===>AND ON LINE 396, ADD VARIATION OF BELOW AFTER THIS PART:
Code:

$auction_offer_price = 0;

                 if ( empty($HTTP_POST_VARS['auction_offer_title']))
                      {
                           message_die(GENERAL_MESSAGE, $lang['auction_no_title']);
                      }

                 if ($HTTP_POST_VARS['auction_offer_price_start']>$auction_config_data['auction_offer_amount_max'])
                      {
                           message_die(GENERAL_MESSAGE, $lang['auction_offer_amount_to_high']);
                      }

                 if ($HTTP_POST_VARS['auction_offer_price_start']=="")
                      {
                           $auction_offer_initial_price = $auction_config_data['auction_offer_amount_min'];
                      }
                 else
                      {
                           $auction_offer_initial_price = $HTTP_POST_VARS['auction_offer_price_start'];
                      }

                 if ($HTTP_POST_VARS['auction_offer_price_start']<0)
                      {
                           message_die(GENERAL_MESSAGE, $lang['auction_offer_amount_not_negative']);
                      }


Last edited by guyb on Thu Oct 30, 2008 8:02 pm; edited 8 times in total
Back to top
View user's profile Send private message
guyb
Small-Cap Auctioneer
Small-Cap Auctioneer


Joined: 22 Oct 2008
Posts: 21

PostPosted: Sat Oct 25, 2008 6:54 pm    Post subject: Reply with quote

(the board isn't receiving the following code well, so I'm posting it in this separate post on its own).

The above code would be followed by this:
Code:
                 if ($HTTP_POST_VARS['auction_offer_reserve_factor']>$auction_config_data['auction_offer_reserve_factor_max'])
                      {
                           message_die(GENERAL_MESSAGE, $lang['auction_offer_reserve_too_high']);
                      }

                 if ($HTTP_POST_VARS['auction_offer_reserve_factor']=="")
                      {
                           $auction_offer_reserve_factor = $auction_config_data['auction_offer_reserve_factor_max'];
                      }

                 if ($HTTP_POST_VARS['auction_offer_reserve_factor']<0)
                      {
                           message_die(GENERAL_MESSAGE, $lang['auction_offer_reserve_not_negative']);
                      }
Back to top
View user's profile Send private message
guyb
Small-Cap Auctioneer
Small-Cap Auctioneer


Joined: 22 Oct 2008
Posts: 21

PostPosted: Sat Oct 25, 2008 6:59 pm    Post subject: Reply with quote

AND ON LINE 675, ADD VARIATION OF BELOW AFTER THIS PART:
Code:

                 $sql = "INSERT INTO
                        " . AUCTION_OFFER_TABLE . " (FK_auction_offer_room_id,
                                                     FK_auction_offer_user_id,
                                                     auction_offer_title,
                                                     auction_offer_text,
                                                     auction_offer_time_start,
                                                     auction_offer_time_stop,
                                                     auction_offer_price_start,

                                                     auction_offer_reserve_factor,





===>ON LINE 1300 MAY NEED TO ADD MY PATCH HERE TOO:
Code:

                 // Grab offer data
                 $sql = "SELECT auction_offer_time_start,
                                auction_offer_time_stop,
                                FK_auction_offer_user_id,
                                auction_offer_price_start,

                                auction_offer_reserve_factor,





===>ON LINE 1329 I NEED TO RECONFIGURE BELOW TO TAKE INTO ACCOUNT THE RESERVE (how would I do this?):
Code:

                 // if no bid exists, the new bid needs to be higher than the initial price
                 $last = $auction_corresponding_bids_start_stop_row['auction_offer_last_bid_price'];
                 if ( ($auction_corresponding_bids_start_stop_row['auction_offer_last_bid_price'] == 0 ) || ($auction_corresponding_bids_start_stop_row['auction_offer_last_bid_price']=""))
                      {
                           if ( $HTTP_POST_VARS['auction_your_amount'] < $auction_corresponding_bids_start_stop_row['auction_offer_price_start'])
                                  {
                                      $message = $lang['auction_bid_to_low'] . "<br><br>" . sprintf($lang['Click_return_offer'], "<a href="" ao=" . $HTTP_GET_VARS[POST_AUCTION_OFFER_URL]) . ">", "</a>");
                                      message_die(GENERAL_MESSAGE, $message);
                                  }
                      } // if



***STEP 4: DO I HAVE TO MODIFY ANYTHING IN auction_offer_view.php?
Back to top
View user's profile Send private message
guyb
Small-Cap Auctioneer
Small-Cap Auctioneer


Joined: 22 Oct 2008
Posts: 21

PostPosted: Mon Oct 27, 2008 11:04 pm    Post subject: Reply with quote

To my last question about "step 4" I think I don't have to change anything there, but I did find a few more files which would need 'tweaking':

***STEP 5: in "auction_myauctions.php"
and
***STEP 6: in "auction_my_auctions.php"

both have the same kinds of commands called up which would need to be edited to account for the effect of the reserve factor:

Code:
'AUCTION_OFFER_PRICE_LAST' => ( $auction_myoffers[$i]['auction_offer_last_bid_price'] > $auction_myoffers[$i]['auction_offer_price_start'] ) ?

$auction_myoffers[$i]['auction_offer_last_bid_price'] . " " . $auction_config_data['currency'] : $lang['auction_no_bid'],

and
Code:
'AUCTION_OFFER_PRICE_LAST' => ( $auction_myoffers[$i]['auction_offer_last_bid_price'] > $auction_myoffers[$i]['auction_offer_price_start'] ) ?

"<span class="genmed\"><span>" . $auction_myoffers[$i]['auction_offer_last_bid_price'] . " " . $auction_config_data['currency'] .

"</font></span>" : "<span class="genmed\"><span>" . $lang['auction_no_bid'] . "</font></span>",

and
Code:
$template->assign_vars(array(
     'TOTAL_POSTS' => sprintf($l_total_post_s, $total_posts),                                 
     'L_AUCTION_OFFER_PRICE_LAST' => $lang['auction_offer_last_price'],
     'L_AUCTION_OFFER_PRICE_MYBID' => $lang['auction_offer_price_mybid'],

and
Code:
'AUCTION_OFFER_PRICE_LAST' => ( $auction_mywatchlist[$i]['auction_offer_last_bid_price'] > $auction_mywatchlist[$i]['auction_offer_price_start']

) ?  $auction_mywatchlist[$i]['auction_offer_last_bid_price'] . " " . $auction_config_data['currency'] : $auction_mywatchlist[$i]['auction_offer_price_start'] . " " .

$auction_config_data['currency'],
Back to top
View user's profile Send private message
guyb
Small-Cap Auctioneer
Small-Cap Auctioneer


Joined: 22 Oct 2008
Posts: 21

PostPosted: Mon Oct 27, 2008 11:12 pm    Post subject: Reply with quote

Two more to go (so far):

***STEP 7: in "auction_my_account.php":

the same piece of code appears twice, and in two places of that section it may need to reference the reserve factor. Here, at the end:
Code:

                 // Selection auction-offer credit
                 $sql = "SELECT o.auction_offer_title,
                                o.pk_auction_offer_id,
                                u.username,
                                o.FK_auction_offer_last_bid_user_id,
                                o.auction_offer_last_bid_price,

and here, in the conditional statement:
Code:
         
WHERE o.FK_auction_offer_user_id=" . $userdata['user_id' ] . " AND
                               ( o.auction_offer_time_start<time> $lang['auction_offer_first_price'],



***STEP 8: in "auction_room.php", the reserve factor may need to be called up here as another declaration in a series of them:
Code:

'L_AUCTION_FIRST_PRICE' => $lang['auction_offer_first_price'],

and here:
Code:
'AUCTION_OFFER_FIRST_PRICE' => $auction_offer_rowset[$i]['auction_offer_price_start']  . " " . $auction_config_data['currency'],



question: what I haven't figured out yet is where the winning bid is calculated, to make sure it takes the reserve factor into account: i.e. ask price was $100, reserve was $70, winning bid was $80 (which is below the starting price).

I see in "lang_auction.php" two text strings:
Code:

$lang['auction_highest_current_auction'] = 'Highest bid:';
$lang['auction_offer_you_have_highest'] = 'You have the highest bid';

But these aren't called up in "auction_offer.php" where it seems the bulk of the mod's bid analysis is. The 2nd string is called up in "auction_my_auctions.php" - perhaps that's the only place.


Last edited by guyb on Fri Oct 31, 2008 9:21 am; edited 2 times in total
Back to top
View user's profile Send private message
guyb
Small-Cap Auctioneer
Small-Cap Auctioneer


Joined: 22 Oct 2008
Posts: 21

PostPosted: Tue Oct 28, 2008 9:26 pm    Post subject: Reply with quote

In the meantime here are the patched codes I tried to create for the above steps. Any feedback/corrections would be much appreciated:

step 1 and 2 with SQL:
Code:

ALTER TABLE phpbb_auction_offer
ADD `auction_offer_reserve_factor` decimal(3,2) NOT NULL default '1.00';


INSERT INTO phpbb_auction_config (config_name, config_value) VALUES ('auction_offer_reserve_factor_min','0.01');

INSERT INTO phpbb_auction_config (config_name, config_value) VALUES ('auction_offer_reserve_factor_max','1.00');

update: I installed these into SQL just fine as they appear above.

setp 2 declarations for lang_auction.php; these are modeled on other similar comments, some of which are necessary error messages and others may only be intended for the ACP (which my patch is ignoring, as I'm not charging for the use of reserves), but still - just so that they exist. The "_reserve_factor_explain" is extra text I intend to display on the "auction_offer.php" page like with the title and coupon fields there, so sellers know how to use the field:
Code:

$lang['auction_offer_reserve_factor'] = 'Set a Reserve (from 0.01 to 1.00):';
$lang['auction_offer_reserve_factor_explain'] = 'This is the absolute minimum price you are willing to receive, from 1% to 100% of the initial price';
$lang['auction_offer_reserve_factor_min'] = 'Minimum reserve amount';
$lang['auction_offer_reserve_factor_min_explain'] = 'This amount will be set as the minimum possible reserve level';
$lang['auction_offer_reserve_factor_max'] = 'Maximum reserve amount';
$lang['auction_offer_reserve_factor_max_explain'] = 'This amount will be set as the maximum possible reserve level';
$lang['auction_offer_reserve_too_high'] = 'Reserves cannot be set above 100% (1.00) of the initial price';
$lang['auction_offer_reserve_not_negative'] = 'Reserves cannot be a negative number or zero. The minimum is 0.01 (1%) of initial price';


for step 3, I'd use the suggestions I posted above plus this variation of the bid_start code:
* my big concern hotwiring these kinds of codes was the insertion of a multiplier - whether this gets considered before the ">" or "<" operator in an equation. If yes, super, if no - I have to use some kind of bracket...
Code:

      // if no bid exists, the new bid needs to be higher than the initial price
                 $last = $auction_corresponding_bids_start_stop_row['auction_offer_last_bid_price'];
                 if ( ($auction_corresponding_bids_start_stop_row['auction_offer_last_bid_price'] == 0 ) || ($auction_corresponding_bids_start_stop_row

['auction_offer_last_bid_price']=""))
                      {
                           if ( $HTTP_POST_VARS['auction_your_amount'] < $auction_corresponding_bids_start_stop_row['auction_offer_price_start']*$auction_corresponding_bids_start_stop_row['auction_offer_reserve_factor'])
                                  {
                                      $message = $lang['auction_bid_to_low'] . "<br><br>" . sprintf($lang['Click_return_offer'], "<a href="" ao=" . $HTTP_GET_VARS[POST_AUCTION_OFFER_URL]) . ">", "</a>");
                                      message_die(GENERAL_MESSAGE, $message);
                                  }
                      } // if


in step 5 and 6 I have these 3 'fixes' for the recurring statements in "auction_myauctions.php" and "auction_my_auctions.php" - I'm not sure if that 1st file is actually used by this mod (1.3m) at all... I think the "$template->assign_vars" snippets I posted above for these files could be ignored for this patch
Code:

use:

                                 'AUCTION_OFFER_PRICE_LAST' => ( $auction_myoffers[$i]['auction_offer_last_bid_price'] > $auction_myoffers[$i]['auction_offer_price_start']*$auction_myoffers[$i]['auction_offer_reserve_factor'] ) ? $auction_myoffers[$i]['auction_offer_last_bid_price'] . " " . $auction_config_data['currency'] : $lang['auction_no_bid'],

and

                                 'AUCTION_OFFER_PRICE_LAST' => ( $auction_myoffers[$i]['auction_offer_last_bid_price'] > $auction_myoffers[$i]['auction_offer_price_start']*$auction_myoffers[$i]['auction_offer_reserve_factor'] ) ? "<span class=\"genmed\"><span style=\"color:#" . $theme['fontcolor2'] . "\">" . $auction_myoffers[$i]['auction_offer_last_bid_price'] . " " . $auction_config_data['currency'] . "</font></span>" : "<span class=\"genmed\"><span style=\"color:#" . $theme['fontcolor2'] . "\">" . $lang['auction_no_bid'] . "</font></span>",

and

                                 'AUCTION_OFFER_PRICE_LAST' => ( $auction_mywatchlist[$i]['auction_offer_last_bid_price'] > $auction_mywatchlist[$i]['auction_offer_price_start']*$auction_mywatchlist[$i]['auction_offer_reserve_factor'] ) ?  $auction_mywatchlist[$i]['auction_offer_last_bid_price'] . " " . $auction_config_data['currency'] : $auction_mywatchlist[$i]['auction_offer_price_start'] . " " . $auction_config_data['currency'],


step 7 for "auction_my_account.php" CAN BE SKIPPED as it related to charging for the usage of presentation functions (my patch ignores all that)

And step 8 with "auction_room.php" CAN ALSO BE SKIPPED - the room presentation has nothing to do with the reserves.

new: step 9 - can't forget the physical presentation! The seller has to see the Reserves field somewhere in order to fill it in. In "templates/xxx/auction_add_offer.tpl"

find
Code:

                     <tr>
                         <td class="row1">
                             <span class="forumlink">{L_AUCTION_OFFER_PRICE_START}</span>      
                         </td>
                         <td colspan="2" class="row1">
                             <input class="post" type="number" name="auction_offer_price_start" size="10" value="{AUCTION_OFFER_PRICE_START}"/>
                         </td>
                     </tr>
                     <tr>
                         <td class="row1">
                             <span class="forumlink">{L_AUCTION_OFFER_BID_INCREASE}</span>
                         </td>
                         <td colspan="2" class="row1">
                             {DD_AUCTION_OFFER_BID_INCREASE}
                         </td>
                     </tr>

and add after it
Code:

            <tr>
                         <td class="row1">
                             <span class="forumlink">{L_AUCTION_OFFER_RESERVE_FACTOR}</span></br>
                             <span class="genmed">{L_AUCTION_OFFER_RESERVE_FACTOR_EXPLAIN}</span>
                         </td>
                         <td colspan="2" class="row1">
                             <input class="post" type="number" name="auction_offer_reserve_factor" size="4" value="{AUCTION_OFFER_RESERVE_FACTOR}"/>
                         </td>
                     </tr>


I am mulling over a "Step 10" for "auction_myauction_my_auctions.tpl" - so sellers can see both their starting price and reserve factors for listed materials in the "My Offers" box. Not a biggie - but something practical to see as a seller.

Also a "Step 11" whereby a seller could see his Reserve factor on the "auction_offer_view.php" page - that would require a switch code such that only of the person logged in is also the seller, would that field be visible to him. I'm "working" on it...

In all, maybe 7 steps and 5 files to patch. But I may also be wrong - any feedbacks?
Back to top
View user's profile Send private message
guyb
Small-Cap Auctioneer
Small-Cap Auctioneer


Joined: 22 Oct 2008
Posts: 21

PostPosted: Sat Nov 01, 2008 9:03 pm    Post subject: Reply with quote

good news: I got the whole patch to work including a few extra bits (like a switch toggle so admins and the seller can see the reserves set on the offer_view page).

There were a few things missing above and one *tiny* but vital and time consuming hangup.

If anyone's interested in the whole code for this, post back here and I'll prepare all the comments for upload.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    phpbb-auction.com Forum Index -> Support All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


phpbb-auction.com - Developed by www.digital-media-lab.com
Sponsored by: www.globibo.com - www.learn2go.de - www.talentone.org - www.language-school.in - www.ping-ke.cn