/** * Create a wikiplace from homepage, owned by this user * @param int $homepage_id The Article id of the homepage * @param WpSubscription $subscription * @return WpWikiplace The created Wikiplace, or null if a db error occured */ public static function create($homepage_id, $subscription) { if (!is_int($homepage_id) || !$subscription instanceof WpSubscription) { throw new MWException('Cannot create Wikiplace, invalid argument.'); } $user_id = $subscription->getBuyerUserId(); $wps_id = $subscription->getId(); $wpw_report_updated = WpSubscription::now(); $wpw_date_expires = self::calculateNextDateExpiresFromSubscription($subscription); $dbw = wfGetDB(DB_MASTER); $dbw->begin(); $id = $dbw->nextSequenceValue('wpw_id'); $success = $dbw->insert('wp_wikiplace', array('wpw_id' => $id, 'wpw_owner_user_id' => $user_id, 'wpw_home_page_id' => $homepage_id, 'wpw_wps_id' => $wps_id, 'wpw_previous_total_page_hits' => 0, 'wpw_monthly_page_hits' => 0, 'wpw_previous_total_bandwidth' => 0, 'wpw_monthly_bandwidth' => 0, 'wpw_report_updated' => $wpw_report_updated, 'wpw_date_expires' => $wpw_date_expires)); // Setting id from auto incremented id in DB $id = $dbw->insertId(); $dbw->commit(); if (!$success) { return null; } $wp = new self($id, $user_id, $homepage_id, $wps_id, 0, 0, 0, 0, $wpw_report_updated, $wpw_date_expires); return $wp; }