This repository was archived by the owner on Jan 13, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2k
Implementing new Birthday class to handle Graph API response variations #573
Merged
Merged
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
6547b91
Implementing new Birthday class to handle Graph API response variations
3ee3ac0
Correcting typos in Birthday docs
6b59698
Coding style violations, removing timezone
e4e6df7
Setting Birthday variables to private, moving Birthday docs link to m…
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| <card> | ||
| # Birthday for the Facebook SDK for PHP | ||
|
|
||
| Extends `\DateTime` and represents a user's birthday returned from the Graph API which can be returned omitting certain information. | ||
|
|
||
| Users may opt not to share birth day or month, or may not share birth year. Possible returns: | ||
|
|
||
| * MM/DD/YYYY | ||
| * MM/DD | ||
| * YYYY | ||
| </card> | ||
|
|
||
| <card> | ||
| ## Facebook\GraphNodes\Birthday {#overview} | ||
|
|
||
| After retrieving a GraphUser from the Graph API, the `getBirthday()` method will return the birthday in the form of a `Facebook\GraphNodes\Birthday` entity which indicates which aspects of the birthday the user opted to share. | ||
|
|
||
| The `Facebook\GraphNodes\Birthday` entity extends `DateTime` so `format` may be used to present the information appropriately depending on what information it contains. | ||
|
|
||
| Usage: | ||
|
|
||
| ~~~~ | ||
| $fb = new Facebook\Facebook(\* *\); | ||
| // Returns a `Facebook\FacebookResponse` object | ||
| $response = $fb->get('/me'); | ||
|
|
||
| // Get the response typed as a GraphUser | ||
| $user = $response->getGraphUser(); | ||
|
|
||
| // Gets birthday value, assume Graph return was format MM/DD | ||
| $birthday = $user->getBirthday(); | ||
|
|
||
| var_dump($birthday); | ||
| // class Facebook\GraphNodes\Birthday ... | ||
|
|
||
| var_dump($birthday->hasDate()); | ||
| // true | ||
|
|
||
| var_dump($birthday->hasYear()); | ||
| // false | ||
|
|
||
| var_dump($birthday->format('m/d')); | ||
| // 03/21 | ||
| ~~~~ | ||
| </card> | ||
|
|
||
| <card> | ||
| ## Instance Methods {#instance-methods} | ||
|
|
||
| ### hasDate() {#has-date} | ||
| ~~~~ | ||
| public boolean hasDate() | ||
| ~~~~ | ||
| Returns whether or not the birthday object contains the day and month of birth. | ||
| </card> | ||
|
|
||
| <card> | ||
| ### hasYear() {#has-year} | ||
| ~~~~ | ||
| public boolean hasYear() | ||
| ~~~~ | ||
| Returns whether or not the birthday object contains the year of birth. | ||
| </card> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| <?php | ||
| /** | ||
| * Copyright 2016 Facebook, Inc. | ||
| * | ||
| * You are hereby granted a non-exclusive, worldwide, royalty-free license to | ||
| * use, copy, modify, and distribute this software in source code or binary | ||
| * form for use in connection with the web services and APIs provided by | ||
| * Facebook. | ||
| * | ||
| * As with any software that integrates with the Facebook platform, your use | ||
| * of this software is subject to the Facebook Developer Principles and | ||
| * Policies [http://developers.facebook.com/policy/]. This copyright notice | ||
| * shall be included in all copies or substantial portions of the software. | ||
| * | ||
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | ||
| * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
| * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||
| * DEALINGS IN THE SOFTWARE. | ||
| * | ||
| */ | ||
| namespace Facebook\GraphNodes; | ||
|
|
||
| use DateTime; | ||
|
|
||
| /** | ||
| * Birthday object to handle various Graph return formats | ||
| * | ||
| * @package Facebook | ||
| */ | ||
| class Birthday extends DateTime | ||
| { | ||
| /** | ||
| * @var bool | ||
| */ | ||
| private $hasDate = false; | ||
|
|
||
| /** | ||
| * @var bool | ||
| */ | ||
| private $hasYear = false; | ||
|
|
||
| /** | ||
| * Parses Graph birthday format to set indication flags, possible values: | ||
| * | ||
| * MM/DD/YYYY | ||
| * MM/DD | ||
| * YYYY | ||
| * | ||
| * @link https://developers.facebook.com/docs/graph-api/reference/user | ||
| * | ||
| * @param string $date | ||
| */ | ||
| public function __construct($date) | ||
| { | ||
| $parts = explode('/', $date); | ||
|
|
||
| $this->hasYear = count($parts) === 3 || count($parts) === 1; | ||
| $this->hasDate = count($parts) === 3 || count($parts) === 2; | ||
|
|
||
| parent::__construct($date); | ||
| } | ||
|
|
||
| /** | ||
| * Returns whether date object contains birth day and month | ||
| * | ||
| * @return bool | ||
| */ | ||
| public function hasDate() | ||
| { | ||
| return $this->hasDate; | ||
| } | ||
|
|
||
| /** | ||
| * Returns whether date object contains birth year | ||
| * | ||
| * @return bool | ||
| */ | ||
| public function hasYear() | ||
| { | ||
| return $this->hasYear; | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍