Spade
Mini Shell
PK�z�[�{��communications.phpnu�[���<?php
/**
* @package Joomla.Platform
* @subpackage Linkedin
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
/**
* Linkedin API Social Communications class for the Joomla Platform.
*
* @since 3.2.0
*/
class JLinkedinCommunications extends JLinkedinObject
{
/**
* Method used to invite people.
*
* @param string $email A string containing email of the
recipient.
* @param string $firstName A string containing first name of the
recipient.
* @param string $lastName A string containing last name of the
recipient.
* @param string $subject The subject of the message that will be
sent to the recipient
* @param string $body A text of the message.
* @param string $connection Only connecting as a 'friend'
is supported presently.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function inviteByEmail($email, $firstName, $lastName, $subject,
$body, $connection = 'friend')
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base.
$base = '/v1/people/~/mailbox';
// Build the xml.
$xml = '<mailbox-item>
<recipients>
<recipient>
<person path="/people/email=' . $email .
'">
<first-name>' . $firstName . '</first-name>
<last-name>' . $lastName . '</last-name>
</person>
</recipient>
</recipients>
<subject>' . $subject . '</subject>
<body>' . $body . '</body>
<item-content>
<invitation-request>
<connect-type>' . $connection .
'</connect-type>
</invitation-request>
</item-content>
</mailbox-item>';
$header['Content-Type'] = 'text/xml';
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
/**
* Method used to invite people.
*
* @param string $id Member id.
* @param string $firstName A string containing first name of the
recipient.
* @param string $lastName A string containing last name of the
recipient.
* @param string $subject The subject of the message that will be
sent to the recipient
* @param string $body A text of the message.
* @param string $connection Only connecting as a 'friend'
is supported presently.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function inviteById($id, $firstName, $lastName, $subject, $body,
$connection = 'friend')
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base for people search.
$base =
'/v1/people-search:(people:(api-standard-profile-request))';
$data['format'] = 'json';
$data['first-name'] = $firstName;
$data['last-name'] = $lastName;
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
if (strpos($response->body, 'apiStandardProfileRequest') ===
false)
{
throw new RuntimeException($response->body);
}
// Get header value.
$value = explode('"value": "',
$response->body);
$value = explode('"', $value[1]);
$value = $value[0];
// Split on the colon character.
$value = explode(':', $value);
$name = $value[0];
$value = $value[1];
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base.
$base = '/v1/people/~/mailbox';
// Build the xml.
$xml = '<mailbox-item>
<recipients>
<recipient>
<person path="/people/id=' . $id . '">
</person>
</recipient>
</recipients>
<subject>' . $subject . '</subject>
<body>' . $body . '</body>
<item-content>
<invitation-request>
<connect-type>' . $connection .
'</connect-type>
<authorization>
<name>' . $name . '</name>
<value>' . $value . '</value>
</authorization>
</invitation-request>
</item-content>
</mailbox-item>';
$header['Content-Type'] = 'text/xml';
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
/**
* Method used to send messages via LinkedIn between two or more
individuals connected to the member sending the message..
*
* @param mixed $recipient A string containing the member id or an
array of ids.
* @param string $subject The subject of the message that will be
sent to the recipient
* @param string $body A text of the message.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function sendMessage($recipient, $subject, $body)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base.
$base = '/v1/people/~/mailbox';
// Build the xml.
$xml = '<mailbox-item>
<recipients>';
if (is_array($recipient))
{
foreach ($recipient as $r)
{
$xml .= '<recipient>
<person path="/people/' . $r . '"/>
</recipient>';
}
}
$xml .= '</recipients>
<subject>' . $subject . '</subject>
<body>' . $body . '</body>
</mailbox-item>';
$header['Content-Type'] = 'text/xml';
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
}
PK�z�[��2�+�+
companies.phpnu�[���<?php
/**
* @package Joomla.Platform
* @subpackage Linkedin
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
/**
* Linkedin API Companies class for the Joomla Platform.
*
* @since 3.2.0
*/
class JLinkedinCompanies extends JLinkedinObject
{
/**
* Method to retrieve companies using a company ID, a universal name, or
an email domain.
*
* @param integer $id The unique internal numeric company
identifier.
* @param string $name The unique string identifier for a company.
* @param string $domain Company email domains.
* @param string $fields Request fields beyond the default ones.
*
* @return array The decoded JSON response
*
* @since 3.2.0
* @throws RuntimeException
*/
public function getCompanies($id = null, $name = null, $domain = null,
$fields = null)
{
// At least one value is needed to retrieve data.
if ($id == null && $name == null && $domain == null)
{
// We don't have a valid entry
throw new RuntimeException('You must specify a company ID, a
universal name, or an email domain.');
}
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/companies';
if ($id && $name)
{
$base .= '::(' . $id . ',universal-name=' . $name .
')';
}
elseif ($id)
{
$base .= '/' . $id;
}
elseif ($name)
{
$base .= '/universal-name=' . $name;
}
// Set request parameters.
$data['format'] = 'json';
if ($domain)
{
$data['email-domain'] = $domain;
}
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to read shares for a particular company .
*
* @param string $id The unique company identifier.
* @param string $type Any valid Company Update Type from the table:
https://developer.linkedin.com/reading-company-updates.
* @param integer $count Maximum number of updates to return.
* @param integer $start The offset by which to start Network Update
pagination.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getUpdates($id, $type = null, $count = 0, $start = 0)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/companies/' . $id . '/updates';
// Set request parameters.
$data['format'] = 'json';
// Check if type is specified.
if ($type)
{
$data['event-type'] = $type;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to search across company pages.
*
* @param string $fields Request fields beyond the default ones.
* @param string $keywords Members who have all the keywords anywhere
in their profile.
* @param boolean $hq Matching companies by the headquarters
location. When this is set to "true" and a location facet is
used,
* this restricts returned companies to only those whose
headquarters resides in the specified location.
* @param string $facets Facet buckets to return, e.g. location.
* @param array $facet Array of facet values to search over.
Contains values for location, industry, network, company-size,
* num-followers-range and fortune, in exactly this order, null
must be specified for an element if no value.
* @param integer $start Starting location within the result set
for paginated returns.
* @param integer $count The number of results returned.
* @param string $sort Controls the search result order. There
are four options: relevance, relationship,
* followers and company-size.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function search($fields = null, $keywords = null, $hq = false,
$facets = null, $facet = null, $start = 0, $count = 0, $sort = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/company-search';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if keywords is specified.
if ($keywords)
{
$data['keywords'] = $keywords;
}
// Check if hq is true.
if ($hq)
{
$data['hq-only'] = $hq;
}
// Check if facets is specified.
if ($facets)
{
$data['facets'] = $facets;
}
// Check if facet is specified.
if ($facet)
{
$data['facet'] = array();
for ($i = 0, $iMax = count($facet); $i < $iMax; $i++)
{
if ($facet[$i])
{
if ($i == 0)
{
$data['facet'][] = 'location,' . $facet[$i];
}
if ($i == 1)
{
$data['facet'][] = 'industry,' . $facet[$i];
}
if ($i == 2)
{
$data['facet'][] = 'network,' . $facet[$i];
}
if ($i == 3)
{
$data['facet'][] = 'company-size,' . $facet[$i];
}
if ($i == 4)
{
$data['facet'][] = 'num-followers-range,' .
$facet[$i];
}
if ($i == 5)
{
$data['facet'][] = 'fortune,' . $facet[$i];
}
}
}
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Check if sort is specified.
if ($sort)
{
$data['sort'] = $sort;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to get a list of companies the current member is following.
*
* @param string $fields Request fields beyond the default ones.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getFollowed($fields = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/~/following/companies';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to follow a company.
*
* @param string $id The unique identifier for a company.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function follow($id)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base
$base = '/v1/people/~/following/companies';
// Build xml.
$xml = '<company><id>' . $id .
'</id></company>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
/**
* Method to unfollow a company.
*
* @param string $id The unique identifier for a company.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function unfollow($id)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/people/~/following/companies/id=' . $id;
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'DELETE',
$parameters);
return $response;
}
/**
* Method to get a collection of suggested companies for the current user.
*
* @param string $fields Request fields beyond the default ones.
* @param integer $start Starting location within the result set for
paginated returns.
* @param integer $count The number of results returned.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getSuggested($fields = null, $start = 0, $count = 0)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/~/suggestions/to-follow/companies';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to get a collection of suggested companies for the current user.
*
* @param string $id The unique identifier for a company.
* @param string $fields Request fields beyond the default ones.
* @param integer $start Starting location within the result set for
paginated returns.
* @param integer $count The number of results returned.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getProducts($id, $fields = null, $start = 0, $count = 0)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/companies/' . $id . '/products';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
}
PK�z�[n�9g9g
groups.phpnu�[���<?php
/**
* @package Joomla.Platform
* @subpackage Linkedin
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
/**
* Linkedin API Groups class for the Joomla Platform.
*
* @since 3.2.0
*/
class JLinkedinGroups extends JLinkedinObject
{
/**
* Method to get a group.
*
* @param string $id The unique identifier for a group.
* @param string $fields Request fields beyond the default ones.
* @param integer $start Starting location within the result set for
paginated returns.
* @param integer $count The number of results returned.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getGroup($id, $fields = null, $start = 0, $count = 5)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/groups/' . $id;
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count != 5)
{
$data['count'] = $count;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to find the groups a member belongs to.
*
* @param string $id The unique identifier for a user.
* @param string $fields Request fields beyond the default
ones.
* @param integer $start Starting location within the result
set for paginated returns.
* @param integer $count The number of results returned.
* @param string $membershipState The state of the caller’s
membership to the specified group.
* Values are: non-member,
awaiting-confirmation, awaiting-parent-group-confirmation, member,
moderator,
* manager, owner.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getMemberships($id = null, $fields = null, $start = 0,
$count = 5, $membershipState = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/';
// Check if id is specified.
if ($id)
{
$base .= $id . '/group-memberships';
}
else
{
$base .= '~/group-memberships';
}
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count != 5)
{
$data['count'] = $count;
}
// Check if membership_state is specified.
if ($membershipState)
{
$data['membership-state'] = $membershipState;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to find the groups a member belongs to.
*
* @param string $personId The unique identifier for a user.
* @param string $groupId The unique identifier for a group.
* @param string $fields Request fields beyond the default ones.
* @param integer $start Starting location within the result set
for paginated returns.
* @param integer $count The number of results returned.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getSettings($personId = null, $groupId = null, $fields =
null, $start = 0, $count = 5)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/';
// Check if person_id is specified.
if ($personId)
{
$base .= $personId . '/group-memberships';
}
else
{
$base .= '~/group-memberships';
}
// Check if group_id is specified.
if ($groupId)
{
$base .= '/' . $groupId;
}
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count != 5)
{
$data['count'] = $count;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to change a groups settings.
*
* @param string $groupId The unique identifier for a group.
* @param boolean $showLogo Show group logo in profile.
* @param string $digestFrequency Email digest frequency.
* @param boolean $announcements Email announcements from managers.
* @param boolean $allowMessages Allow messages from members.
* @param boolean $newPost Email for every new post.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function changeSettings($groupId, $showLogo = null,
$digestFrequency = null, $announcements = null,
$allowMessages = null, $newPost = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/~/group-memberships/' . $groupId;
// Build xml.
$xml = '<group-membership>';
if (!is_null($showLogo))
{
$xml .= '<show-group-logo-in-profile>' .
$this->booleanToString($showLogo) .
'</show-group-logo-in-profile>';
}
if ($digestFrequency)
{
$xml .= '<email-digest-frequency><code>' .
$digestFrequency .
'</code></email-digest-frequency>';
}
if (!is_null($announcements))
{
$xml .= '<email-announcements-from-managers>' .
$this->booleanToString($announcements) .
'</email-announcements-from-managers>';
}
if (!is_null($allowMessages))
{
$xml .= '<allow-messages-from-members>' .
$this->booleanToString($allowMessages) .
'</allow-messages-from-members>';
}
if (!is_null($newPost))
{
$xml .= '<email-for-every-new-post>' .
$this->booleanToString($newPost) .
'</email-for-every-new-post>';
}
$xml .= '</group-membership>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'PUT',
$parameters, $xml, $header);
return $response;
}
/**
* Method to join a group.
*
* @param string $groupId The unique identifier for a group.
* @param boolean $showLogo Show group logo in profile.
* @param string $digestFrequency Email digest frequency.
* @param boolean $announcements Email announcements from managers.
* @param boolean $allowMessages Allow messages from members.
* @param boolean $newPost Email for every new post.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function joinGroup($groupId, $showLogo = null, $digestFrequency =
null, $announcements = null,
$allowMessages = null, $newPost = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base
$base = '/v1/people/~/group-memberships';
// Build xml.
$xml = '<group-membership><group><id>' .
$groupId . '</id></group>';
if (!is_null($showLogo))
{
$xml .= '<show-group-logo-in-profile>' .
$this->booleanToString($showLogo) .
'</show-group-logo-in-profile>';
}
if ($digestFrequency)
{
$xml .= '<email-digest-frequency><code>' .
$digestFrequency .
'</code></email-digest-frequency>';
}
if (!is_null($announcements))
{
$xml .= '<email-announcements-from-managers>' .
$this->booleanToString($announcements) .
'</email-announcements-from-managers>';
}
if (!is_null($allowMessages))
{
$xml .= '<allow-messages-from-members>' .
$this->booleanToString($allowMessages) .
'</allow-messages-from-members>';
}
if (!is_null($newPost))
{
$xml .= '<email-for-every-new-post>' .
$this->booleanToString($newPost) .
'</email-for-every-new-post>';
}
$xml .=
'<membership-state><code>member</code></membership-state></group-membership>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
/**
* Method to leave a group.
*
* @param string $groupId The unique identifier for a group.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function leaveGroup($groupId)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/people/~/group-memberships/' . $groupId;
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'DELETE',
$parameters);
return $response;
}
/**
* Method to get dicussions for a group.
*
* @param string $id The unique identifier for a group.
* @param string $fields Request fields beyond the default
ones.
* @param integer $start Starting location within the result
set for paginated returns.
* @param integer $count The number of results returned.
* @param string $order Sort order for posts. Valid for:
recency, popularity.
* @param string $category Category of posts. Valid for:
discussion
* @param string $modifiedSince Timestamp filter for posts created
after the specified value.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getDiscussions($id, $fields = null, $start = 0, $count =
0, $order = null, $category = 'discussion', $modifiedSince =
null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/groups/' . $id . '/posts';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Check if order is specified.
if ($order)
{
$data['order'] = $order;
}
// Check if category is specified.
if ($category)
{
$data['category'] = $category;
}
// Check if modified_since is specified.
if ($modifiedSince)
{
$data['modified-since'] = $modifiedSince;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to get posts a user started / participated in / follows for a
group.
*
* @param string $groupId The unique identifier for a group.
* @param string $role Filter for posts related to the
caller. Valid for: creator, commenter, follower.
* @param string $personId The unique identifier for a user.
* @param string $fields Request fields beyond the default
ones.
* @param integer $start Starting location within the result
set for paginated returns.
* @param integer $count The number of results returned.
* @param string $order Sort order for posts. Valid for:
recency, popularity.
* @param string $category Category of posts. Valid for:
discussion
* @param string $modifiedSince Timestamp filter for posts created
after the specified value.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getUserPosts($groupId, $role, $personId = null, $fields =
null, $start = 0, $count = 0,
$order = null, $category = 'discussion', $modifiedSince = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/';
// Check if person_id is specified.
if ($personId)
{
$base .= $personId;
}
else
{
$base .= '~';
}
$base .= '/group-memberships/' . $groupId . '/posts';
$data['format'] = 'json';
$data['role'] = $role;
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Check if order is specified.
if ($order)
{
$data['order'] = $order;
}
// Check if category is specified.
if ($category)
{
$data['category'] = $category;
}
// Check if modified_since is specified.
if ($modifiedSince)
{
$data['modified-since'] = $modifiedSince;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to retrieve details about a post.
*
* @param string $postId The unique identifier for a post.
* @param string $fields Request fields beyond the default ones.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getPost($postId, $fields = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/posts/' . $postId;
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to retrieve all comments of a post.
*
* @param string $postId The unique identifier for a post.
* @param string $fields Request fields beyond the default ones.
* @param integer $start Starting location within the result set for
paginated returns.
* @param integer $count The number of results returned.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getPostComments($postId, $fields = null, $start = 0,
$count = 0)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/posts/' . $postId . '/comments';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to retrieve all comments of a post.
*
* @param string $groupId The unique identifier for a group.
* @param string $title Post title.
* @param string $summary Post summary.
*
* @return string The created post's id.
*
* @since 3.2.0
*/
public function createPost($groupId, $title, $summary)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base
$base = '/v1/groups/' . $groupId . '/posts';
// Build xml.
$xml = '<post><title>' . $title .
'</title><summary>' . $summary .
'</summary></post>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
// Return the post id.
$response = explode('posts/',
$response->headers['Location']);
return $response[1];
}
/**
* Method to like or unlike a post.
*
* @param string $postId The unique identifier for a group.
* @param boolean $like True to like post, false otherwise.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
private function _likeUnlike($postId, $like)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/posts/' . $postId .
'/relation-to-viewer/is-liked';
// Build xml.
$xml = '<is-liked>' . $this->booleanToString($like) .
'</is-liked>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'PUT',
$parameters, $xml, $header);
return $response;
}
/**
* Method used to like a post.
*
* @param string $postId The unique identifier for a group.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function likePost($postId)
{
return $this->_likeUnlike($postId, true);
}
/**
* Method used to unlike a post.
*
* @param string $postId The unique identifier for a group.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function unlikePost($postId)
{
return $this->_likeUnlike($postId, false);
}
/**
* Method to follow or unfollow a post.
*
* @param string $postId The unique identifier for a group.
* @param boolean $follow True to like post, false otherwise.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
private function _followUnfollow($postId, $follow)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/posts/' . $postId .
'/relation-to-viewer/is-following';
// Build xml.
$xml = '<is-following>' .
$this->booleanToString($follow) . '</is-following>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'PUT',
$parameters, $xml, $header);
return $response;
}
/**
* Method used to follow a post.
*
* @param string $postId The unique identifier for a group.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function followPost($postId)
{
return $this->_followUnfollow($postId, true);
}
/**
* Method used to unfollow a post.
*
* @param string $postId The unique identifier for a group.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function unfollowPost($postId)
{
return $this->_followUnfollow($postId, false);
}
/**
* Method to flag a post as a Promotion or Job.
*
* @param string $postId The unique identifier for a group.
* @param string $flag Flag as a 'promotion' or
'job'.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function flagPost($postId, $flag)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/posts/' . $postId . '/category/code';
// Build xml.
$xml = '<code>' . $flag . '</code>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'PUT',
$parameters, $xml, $header);
return $response;
}
/**
* Method to delete a post if the current user is the creator or flag it
as inappropriate otherwise.
*
* @param string $postId The unique identifier for a group.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function deletePost($postId)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/posts/' . $postId;
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'DELETE',
$parameters);
return $response;
}
/**
* Method to access the comments resource.
*
* @param string $commentId The unique identifier for a comment.
* @param string $fields Request fields beyond the default ones.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getComment($commentId, $fields = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/comments/' . $commentId;
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to add a comment to a post
*
* @param string $postId The unique identifier for a group.
* @param string $comment The post comment's text.
*
* @return string The created comment's id.
*
* @since 3.2.0
*/
public function addComment($postId, $comment)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base
$base = '/v1/posts/' . $postId . '/comments';
// Build xml.
$xml = '<comment><text>' . $comment .
'</text></comment>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
// Return the comment id.
$response = explode('comments/',
$response->headers['Location']);
return $response[1];
}
/**
* Method to delete a comment if the current user is the creator or flag
it as inappropriate otherwise.
*
* @param string $commentId The unique identifier for a group.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function deleteComment($commentId)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/comments/' . $commentId;
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'DELETE',
$parameters);
return $response;
}
/**
* Method to get suggested groups for a user.
*
* @param string $personId The unique identifier for a user.
* @param string $fields Request fields beyond the default ones.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getSuggested($personId = null, $fields = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/';
// Check if person_id is specified.
if ($personId)
{
$base .= $personId . '/suggestions/groups';
}
else
{
$base .= '~/suggestions/groups';
}
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to delete a group suggestion for a user.
*
* @param string $suggestionId The unique identifier for a suggestion.
* @param string $personId The unique identifier for a user.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function deleteSuggestion($suggestionId, $personId = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/people/';
// Check if person_id is specified.
if ($personId)
{
$base .= $personId . '/suggestions/groups/' . $suggestionId;
}
else
{
$base .= '~/suggestions/groups/' . $suggestionId;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'DELETE',
$parameters);
return $response;
}
}
PK�z�[��|�"�"jobs.phpnu�[���<?php
/**
* @package Joomla.Platform
* @subpackage Linkedin
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
/**
* Linkedin API Jobs class for the Joomla Platform.
*
* @since 3.2.0
*/
class JLinkedinJobs extends JLinkedinObject
{
/**
* Method to retrieve detailed information about a job.
*
* @param integer $id The unique identifier for a job.
* @param string $fields Request fields beyond the default ones.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getJob($id, $fields = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/jobs/' . $id;
// Set request parameters.
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to get a list of bookmarked jobs for the current member.
*
* @param string $fields Request fields beyond the default ones.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getBookmarked($fields = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/~/job-bookmarks';
// Set request parameters.
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to bookmark a job to the current user's account.
*
* @param integer $id The unique identifier for a job.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function bookmark($id)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base
$base = '/v1/people/~/job-bookmarks';
// Build xml.
$xml = '<job-bookmark><job><id>' . $id .
'</id></job></job-bookmark>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
/**
* Method to delete a bookmark.
*
* @param integer $id The unique identifier for a job.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function deleteBookmark($id)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/people/~/job-bookmarks/' . $id;
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'DELETE',
$parameters);
return $response;
}
/**
* Method to retrieve job suggestions for the current user.
*
* @param string $fields Request fields beyond the default ones.
* @param integer $start Starting location within the result set for
paginated returns.
* @param integer $count The number of results returned.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getSuggested($fields = null, $start = 0, $count = 0)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/~/suggestions/job-suggestions';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to search across LinkedIn's job postings.
*
* @param string $fields Request fields beyond the default ones.
* @param string $keywords Members who have all the keywords
anywhere in their profile.
* @param string $companyName Jobs with a matching company name.
* @param string $jobTitle Matches jobs with the same job title.
* @param string $countryCode Matches members with a location in a
specific country. Values are defined in by ISO 3166 standard.
* Country codes must be in all lower
case.
* @param integer $postalCode Matches members centered around a
Postal Code. Must be combined with the country-code parameter.
* Not supported for all countries.
* @param integer $distance Matches members within a distance from
a central point. This is measured in miles.
* @param string $facets Facet buckets to return, e.g. location.
* @param array $facet Array of facet values to search over.
Contains values for company, date-posted, location, job-function,
* industry, and salary, in exactly this
order, null must be specified for an element if no value.
* @param integer $start Starting location within the result set
for paginated returns.
* @param integer $count The number of results returned.
* @param string $sort Controls the search result order. There
are four options: R (relationship), DA (date-posted-asc),
* DD (date-posted-desc).
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function search($fields = null, $keywords = null, $companyName =
null, $jobTitle = null, $countryCode = null, $postalCode = null,
$distance = null, $facets = null, $facet = null, $start = 0, $count = 0,
$sort = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/job-search';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if keywords is specified.
if ($keywords)
{
$data['keywords'] = $keywords;
}
// Check if company-name is specified.
if ($companyName)
{
$data['company-name'] = $companyName;
}
// Check if job-title is specified.
if ($jobTitle)
{
$data['job-title'] = $jobTitle;
}
// Check if country_code is specified.
if ($countryCode)
{
$data['country-code'] = $countryCode;
}
// Check if postal_code is specified.
if ($postalCode)
{
$data['postal-code'] = $postalCode;
}
// Check if distance is specified.
if ($distance)
{
$data['distance'] = $distance;
}
// Check if facets is specified.
if ($facets)
{
$data['facets'] = $facets;
}
// Check if facet is specified.
if ($facet)
{
$data['facet'] = array();
for ($i = 0, $iMax = count($facet); $i < $iMax; $i++)
{
if ($facet[$i])
{
if ($i == 0)
{
$data['facet'][] = 'company,' .
$this->oauth->safeEncode($facet[$i]);
}
if ($i == 1)
{
$data['facet'][] = 'date-posted,' . $facet[$i];
}
if ($i == 2)
{
$data['facet'][] = 'location,' . $facet[$i];
}
if ($i == 3)
{
$data['facet'][] = 'job-function,' .
$this->oauth->safeEncode($facet[$i]);
}
if ($i == 4)
{
$data['facet'][] = 'industry,' . $facet[$i];
}
if ($i == 5)
{
$data['facet'][] = 'salary,' . $facet[$i];
}
}
}
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Check if sort is specified.
if ($sort)
{
$data['sort'] = $sort;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
}
PK�z�[a�o��linkedin.phpnu�[���<?php
/**
* @package Joomla.Platform
* @subpackage Linkedin
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
use Joomla\Registry\Registry;
/**
* Joomla Platform class for interacting with a Linkedin API instance.
*
* @since 3.2.0
*/
class JLinkedin
{
/**
* @var Registry Options for the Linkedin object.
* @since 3.2.0
*/
protected $options;
/**
* @var JHttp The HTTP client object to use in sending HTTP requests.
* @since 3.2.0
*/
protected $client;
/**
* @var JLinkedinOAuth The OAuth client.
* @since 3.2.0
*/
protected $oauth;
/**
* @var JLinkedinPeople Linkedin API object for people.
* @since 3.2.0
*/
protected $people;
/**
* @var JLinkedinGroups Linkedin API object for groups.
* @since 3.2.0
*/
protected $groups;
/**
* @var JLinkedinCompanies Linkedin API object for companies.
* @since 3.2.0
*/
protected $companies;
/**
* @var JLinkedinJobs Linkedin API object for jobs.
* @since 3.2.0
*/
protected $jobs;
/**
* @var JLinkedinStream Linkedin API object for social stream.
* @since 3.2.0
*/
protected $stream;
/**
* @var JLinkedinCommunications Linkedin API object for
communications.
* @since 3.2.0
*/
protected $communications;
/**
* Constructor.
*
* @param JLinkedinOauth $oauth OAuth object
* @param Registry $options Linkedin options object.
* @param JHttp $client The HTTP client object.
*
* @since 3.2.0
*/
public function __construct(JLinkedinOauth $oauth = null, Registry
$options = null, JHttp $client = null)
{
$this->oauth = $oauth;
$this->options = isset($options) ? $options : new Registry;
$this->client = isset($client) ? $client : new
JHttp($this->options);
// Setup the default API url if not already set.
$this->options->def('api.url',
'https://api.linkedin.com');
}
/**
* Magic method to lazily create API objects
*
* @param string $name Name of property to retrieve
*
* @return JLinkedinObject Linkedin API object (statuses, users,
favorites, etc.).
*
* @since 3.2.0
* @throws InvalidArgumentException
*/
public function __get($name)
{
$class = 'JLinkedin' . ucfirst($name);
if (class_exists($class))
{
if (false == isset($this->$name))
{
$this->$name = new $class($this->options, $this->client,
$this->oauth);
}
return $this->$name;
}
throw new InvalidArgumentException(sprintf('Argument %s produced an
invalid class name: %s', $name, $class));
}
/**
* Get an option from the JLinkedin instance.
*
* @param string $key The name of the option to get.
*
* @return mixed The option value.
*
* @since 3.2.0
*/
public function getOption($key)
{
return $this->options->get($key);
}
/**
* Set an option for the Linkedin instance.
*
* @param string $key The name of the option to set.
* @param mixed $value The option value to set.
*
* @return JLinkedin This object for method chaining.
*
* @since 3.2.0
*/
public function setOption($key, $value)
{
$this->options->set($key, $value);
return $this;
}
}
PK�z�[".��I
I
oauth.phpnu�[���<?php
/**
* @package Joomla.Platform
* @subpackage Linkedin
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
use Joomla\Registry\Registry;
/**
* Joomla Platform class for generating Linkedin API access token.
*
* @since 3.2.0
*/
class JLinkedinOauth extends JOAuth1Client
{
/**
* @var Registry Options for the JLinkedinOauth object.
* @since 3.2.0
*/
protected $options;
/**
* Constructor.
*
* @param Registry $options JLinkedinOauth options object.
* @param JHttp $client The HTTP client object.
* @param JInput $input The input object
*
* @since 3.2.0
*/
public function __construct(Registry $options = null, JHttp $client =
null, JInput $input = null)
{
$this->options = isset($options) ? $options : new Registry;
$this->options->def('accessTokenURL',
'https://www.linkedin.com/uas/oauth/accessToken');
$this->options->def('authenticateURL',
'https://www.linkedin.com/uas/oauth/authenticate');
$this->options->def('authoriseURL',
'https://www.linkedin.com/uas/oauth/authorize');
$this->options->def('requestTokenURL',
'https://www.linkedin.com/uas/oauth/requestToken');
// Call the JOauthV1aclient constructor to setup the object.
parent::__construct($this->options, $client, $input);
}
/**
* Method to verify if the access token is valid by making a request to an
API endpoint.
*
* @return boolean Returns true if the access token is valid and false
otherwise.
*
* @since 3.2.0
*/
public function verifyCredentials()
{
$token = $this->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
$data['format'] = 'json';
// Set the API url.
$path = 'https://api.linkedin.com/v1/people::(~)';
// Send the request.
$response = $this->oauthRequest($path, 'GET', $parameters,
$data);
// Verify response
if ($response->code == 200)
{
return true;
}
else
{
return false;
}
}
/**
* Method to validate a response.
*
* @param string $url The request URL.
* @param JHttpResponse $response The response to validate.
*
* @return void
*
* @since 3.2.0
* @throws DomainException
*/
public function validateResponse($url, $response)
{
if (!$code = $this->getOption('success_code'))
{
$code = 200;
}
if (strpos($url, '::(~)') === false &&
$response->code != $code)
{
if ($error = json_decode($response->body))
{
throw new DomainException('Error code ' .
$error->errorCode . ' received with message: ' .
$error->message . '.');
}
else
{
throw new DomainException($response->body);
}
}
}
/**
* Method used to set permissions.
*
* @param mixed $scope String or an array of string containing
permissions.
*
* @return JLinkedinOauth This object for method chaining
*
* @link https://developer.linkedin.com/documents/authentication
* @since 3.2.0
*/
public function setScope($scope)
{
$this->setOption('scope', $scope);
return $this;
}
/**
* Method to get the current scope
*
* @return string String or an array of string containing permissions.
*
* @since 3.2.0
*/
public function getScope()
{
return $this->getOption('scope');
}
}
PK�z�[V�p���
object.phpnu�[���<?php
/**
* @package Joomla.Platform
* @subpackage Linkedin
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
use Joomla\Registry\Registry;
/**
* Linkedin API object class for the Joomla Platform.
*
* @since 3.2.0
*/
abstract class JLinkedinObject
{
/**
* @var Registry Options for the Linkedin object.
* @since 3.2.0
*/
protected $options;
/**
* @var JHttp The HTTP client object to use in sending HTTP requests.
* @since 3.2.0
*/
protected $client;
/**
* @var JLinkedinOAuth The OAuth client.
* @since 3.2.0
*/
protected $oauth;
/**
* Constructor.
*
* @param Registry $options Linkedin options object.
* @param JHttp $client The HTTP client object.
* @param JLinkedinOAuth $oauth The OAuth client.
*
* @since 3.2.0
*/
public function __construct(Registry $options = null, JHttp $client =
null, JLinkedinOAuth $oauth = null)
{
$this->options = isset($options) ? $options : new Registry;
$this->client = isset($client) ? $client : new
JHttp($this->options);
$this->oauth = $oauth;
}
/**
* Method to convert boolean to string.
*
* @param boolean $bool The boolean value to convert.
*
* @return string String with the converted boolean.
*
* @since 3.2.0
*/
public function booleanToString($bool)
{
if ($bool)
{
return 'true';
}
else
{
return 'false';
}
}
/**
* Get an option from the JLinkedinObject instance.
*
* @param string $key The name of the option to get.
*
* @return mixed The option value.
*
* @since 3.2.0
*/
public function getOption($key)
{
return $this->options->get($key);
}
/**
* Set an option for the JLinkedinObject instance.
*
* @param string $key The name of the option to set.
* @param mixed $value The option value to set.
*
* @return JLinkedinObject This object for method chaining.
*
* @since 3.2.0
*/
public function setOption($key, $value)
{
$this->options->set($key, $value);
return $this;
}
}
PK�z�[u�6�((
people.phpnu�[���<?php
/**
* @package Joomla.Platform
* @subpackage Linkedin
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
/**
* Linkedin API People class for the Joomla Platform.
*
* @since 3.2.0
*/
class JLinkedinPeople extends JLinkedinObject
{
/**
* Method to get a member's profile.
*
* @param string $id Member id of the profile you want.
* @param string $url The public profile URL.
* @param string $fields Request fields beyond the default ones.
* @param string $type Choosing public or standard profile.
* @param string $language A comma separated list of locales ordered
from highest to lowest preference.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getProfile($id = null, $url = null, $fields = null, $type
= 'standard', $language = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/';
$data['format'] = 'json';
// Check if a member id is specified.
if ($id)
{
$base .= 'id=' . $id;
}
elseif (!$url)
{
$base .= '~';
}
// Check if profile url is specified.
if ($url)
{
$base .= 'url=' . $this->oauth->safeEncode($url);
// Choose public profile
if (!strcmp($type, 'public'))
{
$base .= ':public';
}
}
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if language is specified.
$header = array();
if ($language)
{
$header = array('Accept-Language' => $language);
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data, $header);
return json_decode($response->body);
}
/**
* Method to get a list of connections for a user who has granted access
to his/her account.
*
* @param string $fields Request fields beyond the default
ones.
* @param integer $start Starting location within the result
set for paginated returns.
* @param integer $count The number of results returned.
* @param string $modified Values are updated or new.
* @param string $modifiedSince Value as a Unix time stamp of
milliseconds since epoch.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getConnections($fields = null, $start = 0, $count = 500,
$modified = null, $modifiedSince = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/~/connections';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count != 500)
{
$data['count'] = $count;
}
// Check if modified is specified.
if ($modified)
{
$data['modified'] = $modified;
}
// Check if modified_since is specified.
if ($modifiedSince)
{
$data['modified-since'] = $modifiedSince;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to get information about people.
*
* @param string $fields Request fields beyond the default
ones. provide 'api-standard-profile-request'
* field for out of network profiles.
* @param string $keywords Members who have all the keywords
anywhere in their profile.
* @param string $firstName Members with a matching first name.
Matches must be exact.
* @param string $lastName Members with a matching last name.
Matches must be exactly.
* @param string $companyName Members who have a matching company
name on their profile.
* @param boolean $currentCompany A value of true matches members who
currently work at the company specified in the company-name
* parameter.
* @param string $title Matches members with that title on
their profile.
* @param boolean $currentTitle A value of true matches members
whose title is currently the one specified in the title-name parameter.
* @param string $schoolName Members who have a matching school
name on their profile.
* @param string $currentSchool A value of true matches members who
currently attend the school specified in the school-name parameter.
* @param string $countryCode Matches members with a location in a
specific country. Values are defined in by ISO 3166 standard.
* Country codes must be in all lower
case.
* @param integer $postalCode Matches members centered around a
Postal Code. Must be combined with the country-code parameter.
* Not supported for all countries.
* @param integer $distance Matches members within a distance
from a central point. This is measured in miles.
* @param string $facets Facet buckets to return, e.g.
location.
* @param array $facet Array of facet values to search
over. Contains values for location, industry, network, language,
* current-company, past-company and
school, in exactly this order,
* null must be specified for an
element if no value.
* @param integer $start Starting location within the result
set for paginated returns.
* @param integer $count The number of results returned.
* @param string $sort Controls the search result order.
There are four options: connections, recommenders,
* distance and relevance.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function search($fields = null, $keywords = null, $firstName =
null, $lastName = null, $companyName = null,
$currentCompany = null, $title = null, $currentTitle = null, $schoolName
= null, $currentSchool = null, $countryCode = null,
$postalCode = null, $distance = null, $facets = null, $facet = null,
$start = 0, $count = 10, $sort = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people-search';
$data['format'] = 'json';
// Check if fields is specified.
if ($fields)
{
$base .= ':' . $fields;
}
// Check if keywords is specified.
if ($keywords)
{
$data['keywords'] = $keywords;
}
// Check if first_name is specified.
if ($firstName)
{
$data['first-name'] = $firstName;
}
// Check if last_name is specified.
if ($lastName)
{
$data['last-name'] = $lastName;
}
// Check if company-name is specified.
if ($companyName)
{
$data['company-name'] = $companyName;
}
// Check if current_company is specified.
if ($currentCompany)
{
$data['current-company'] = $currentCompany;
}
// Check if title is specified.
if ($title)
{
$data['title'] = $title;
}
// Check if current_title is specified.
if ($currentTitle)
{
$data['current-title'] = $currentTitle;
}
// Check if school_name is specified.
if ($schoolName)
{
$data['school-name'] = $schoolName;
}
// Check if current_school is specified.
if ($currentSchool)
{
$data['current-school'] = $currentSchool;
}
// Check if country_code is specified.
if ($countryCode)
{
$data['country-code'] = $countryCode;
}
// Check if postal_code is specified.
if ($postalCode)
{
$data['postal-code'] = $postalCode;
}
// Check if distance is specified.
if ($distance)
{
$data['distance'] = $distance;
}
// Check if facets is specified.
if ($facets)
{
$data['facets'] = $facets;
}
// Check if facet is specified.
if ($facet)
{
$data['facet'] = array();
for ($i = 0, $iMax = count($facet); $i < $iMax; $i++)
{
if ($facet[$i])
{
if ($i == 0)
{
$data['facet'][] = 'location,' . $facet[$i];
}
if ($i == 1)
{
$data['facet'][] = 'industry,' . $facet[$i];
}
if ($i == 2)
{
$data['facet'][] = 'network,' . $facet[$i];
}
if ($i == 3)
{
$data['facet'][] = 'language,' . $facet[$i];
}
if ($i == 4)
{
$data['facet'][] = 'current-company,' .
$facet[$i];
}
if ($i == 5)
{
$data['facet'][] = 'past-company,' . $facet[$i];
}
if ($i == 6)
{
$data['facet'][] = 'school,' . $facet[$i];
}
}
}
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if count is specified.
if ($count != 10)
{
$data['count'] = $count;
}
// Check if sort is specified.
if ($sort)
{
$data['sort'] = $sort;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
if (strpos($fields, 'api-standard-profile-request') === false)
{
return json_decode($response->body);
}
// Get header name.
$name = explode('"name": "',
$response->body);
$name = explode('"', $name[1]);
$name = $name[0];
// Get header value.
$value = explode('"value": "',
$response->body);
$value = explode('"', $value[1]);
$value = $value[0];
// Get request url.
$url = explode('"url": "', $response->body);
$url = explode('"', $url[1]);
$url = $url[0];
// Build header for out of network profile.
$header[$name] = $value;
// Send the request.
$response = $this->oauth->oauthRequest($url, 'GET',
$parameters, $data, $header);
return json_decode($response->body);
}
}
PK�z�[;"�(99
stream.phpnu�[���<?php
/**
* @package Joomla.Platform
* @subpackage Linkedin
*
* @copyright Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die();
/**
* Linkedin API Social Stream class for the Joomla Platform.
*
* @since 3.2.0
*/
class JLinkedinStream extends JLinkedinObject
{
/**
* Method to add a new share. Note: post must contain comment and/or
(title and url).
*
* @param string $visibility One of anyone: all members or
connections-only: connections only.
* @param string $comment Text of member's comment.
* @param string $title Title of shared document.
* @param string $url URL for shared content.
* @param string $image URL for image of shared content.
* @param string $description Description of shared content.
* @param boolean $twitter True to have LinkedIn pass the status
message along to a member's tethered Twitter account.
*
* @return array The decoded JSON response
*
* @since 3.2.0
* @throws RuntimeException
*/
public function share($visibility, $comment = null, $title = null, $url =
null, $image = null, $description = null, $twitter = false)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base
$base = '/v1/people/~/shares';
// Check if twitter is true.
if ($twitter)
{
$base .= '?twitter-post=true';
}
// Build xml.
$xml = '<share>
<visibility>
<code>' . $visibility . '</code>
</visibility>';
// Check if comment specified.
if ($comment)
{
$xml .= '<comment>' . $comment .
'</comment>';
}
// Check if title and url are specified.
if ($title && $url)
{
$xml .= '<content>
<title>' . $title . '</title>
<submitted-url>' . $url .
'</submitted-url>';
// Check if image is specified.
if ($image)
{
$xml .= '<submitted-image-url>' . $image .
'</submitted-image-url>';
}
// Check if descrption id specified.
if ($description)
{
$xml .= '<description>' . $description .
'</description>';
}
$xml .= '</content>';
}
elseif (!$comment)
{
throw new RuntimeException('Post must contain comment and/or (title
and url).');
}
$xml .= '</share>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
/**
* Method to reshare an existing share.
*
* @param string $visibility One of anyone: all members or
connections-only: connections only.
* @param string $id The unique identifier for a share.
* @param string $comment Text of member's comment.
* @param boolean $twitter True to have LinkedIn pass the status
message along to a member's tethered Twitter account.
*
* @return array The decoded JSON response
*
* @since 3.2.0
* @throws RuntimeException
*/
public function reshare($visibility, $id, $comment = null, $twitter =
false)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base
$base = '/v1/people/~/shares';
// Check if twitter is true.
if ($twitter)
{
$base .= '?twitter-post=true';
}
// Build xml.
$xml = '<share>
<visibility>
<code>' . $visibility . '</code>
</visibility>';
// Check if comment specified.
if ($comment)
{
$xml .= '<comment>' . $comment .
'</comment>';
}
$xml .= ' <attribution>
<share>
<id>' . $id . '</id>
</share>
</attribution>
</share>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
/**
* Method to get a particular member's current share.
*
* @param string $id Member id of the profile you want.
* @param string $url The public profile URL.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getCurrentShare($id = null, $url = null)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/';
// Check if a member id is specified.
if ($id)
{
$base .= 'id=' . $id;
}
elseif (!$url)
{
$base .= '~';
}
// Check if profile url is specified.
if ($url)
{
$base .= 'url=' . $this->oauth->safeEncode($url);
}
$base .= ':(current-share)';
// Set request parameters.
$data['format'] = 'json';
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to get a particular member's current share.
*
* @param string $id Member id of the profile you want.
* @param string $url The public profile URL.
* @param boolean $self Used to return member's feed. Omitted to
return aggregated network feed.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getShareStream($id = null, $url = null, $self = true)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/';
// Check if a member id is specified.
if ($id)
{
$base .= $id;
}
elseif (!$url)
{
$base .= '~';
}
// Check if profile url is specified.
if ($url)
{
$base .= 'url=' . $this->oauth->safeEncode($url);
}
$base .= '/network';
// Set request parameters.
$data['format'] = 'json';
$data['type'] = 'SHAR';
// Check if self is true
if ($self)
{
$data['scope'] = 'self';
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to get the users network updates.
*
* @param string $id Member id.
* @param boolean $self Used to return member's feed. Omitted
to return aggregated network feed.
* @param mixed $type String containing any valid Network Update
Type from the table or an array of strings
* to specify more than one Network Update type.
* @param integer $count Number of updates to return, with a maximum
of 250.
* @param integer $start The offset by which to start Network Update
pagination.
* @param string $after Timestamp after which to retrieve updates.
* @param string $before Timestamp before which to retrieve updates.
* @param boolean $hidden Whether to display updates from people the
member has chosen to "hide" from their update stream.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getNetworkUpdates($id = null, $self = true, $type = null,
$count = 0, $start = 0, $after = null, $before = null,
$hidden = false)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/';
// Check if a member id is specified.
if ($id)
{
$base .= $id;
}
else
{
$base .= '~';
}
$base .= '/network/updates';
// Set request parameters.
$data['format'] = 'json';
// Check if self is true.
if ($self)
{
$data['scope'] = 'self';
}
// Check if type is specified.
if ($type)
{
$data['type'] = $type;
}
// Check if count is specified.
if ($count > 0)
{
$data['count'] = $count;
}
// Check if start is specified.
if ($start > 0)
{
$data['start'] = $start;
}
// Check if after is specified.
if ($after)
{
$data['after'] = $after;
}
// Check if before is specified.
if ($before > 0)
{
$data['before'] = $before;
}
// Check if hidden is true.
if ($hidden)
{
$data['hidden'] = $hidden;
}
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to get information about the current member's network.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getNetworkStats()
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/~/network/network-stats';
// Set request parameters.
$data['format'] = 'json';
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to get the users network updates.
*
* @param string $body The actual content of the update. You can use
HTML to include links to the user name and the content the user
* created. Other HTML tags are not supported. All
body text should be HTML entity escaped and UTF-8 compliant.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function postNetworkUpdate($body)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base
$base = '/v1/people/~/person-activities';
// Build the xml.
$xml = '<activity locale="en_US">
<content-type>linkedin-html</content-type>
<body>' . $body . '</body>
</activity>';
$header['Content-Type'] = 'text/xml';
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
/**
* Method to retrieve all comments for a given network update.
*
* @param string $key update/update-key representing an update.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getComments($key)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/~/network/updates/key=' . $key .
'/update-comments';
// Set request parameters.
$data['format'] = 'json';
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to post a new comment to an existing update.
*
* @param string $key update/update-key representing an update.
* @param string $comment Maximum length of 700 characters
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function postComment($key, $comment)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 201);
// Set the API base
$base = '/v1/people/~/network/updates/key=' . $key .
'/update-comments';
// Build the xml.
$xml = '<update-comment>
<comment>' . $comment . '</comment>
</update-comment>';
$header['Content-Type'] = 'text/xml';
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'POST',
$parameters, $xml, $header);
return $response;
}
/**
* Method to retrieve the complete list of people who liked an update.
*
* @param string $key update/update-key representing an update.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function getLikes($key)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the API base
$base = '/v1/people/~/network/updates/key=' . $key .
'/likes';
// Set request parameters.
$data['format'] = 'json';
// Build the request path.
$path = $this->getOption('api.url') . $base;
// Send the request.
$response = $this->oauth->oauthRequest($path, 'GET',
$parameters, $data);
return json_decode($response->body);
}
/**
* Method to like or unlike an update.
*
* @param string $key Update/update-key representing an update.
* @param boolean $like True to like update, false otherwise.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
private function _likeUnlike($key, $like)
{
$token = $this->oauth->getToken();
// Set parameters.
$parameters = array(
'oauth_token' => $token['key'],
);
// Set the success response code.
$this->oauth->setOption('success_code', 204);
// Set the API base
$base = '/v1/people/~/network/updates/key=' . $key .
'/is-liked';
// Build xml.
$xml = '<is-liked>' . $this->booleanToString($like) .
'</is-liked>';
// Build the request path.
$path = $this->getOption('api.url') . $base;
$header['Content-Type'] = 'text/xml';
// Send the request.
$response = $this->oauth->oauthRequest($path, 'PUT',
$parameters, $xml, $header);
return $response;
}
/**
* Method used to like an update.
*
* @param string $key Update/update-key representing an update.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function like($key)
{
return $this->_likeUnlike($key, true);
}
/**
* Method used to unlike an update.
*
* @param string $key Update/update-key representing an update.
*
* @return array The decoded JSON response
*
* @since 3.2.0
*/
public function unlike($key)
{
return $this->_likeUnlike($key, false);
}
}
PK�z�[�{��communications.phpnu�[���PK�z�[��2�+�+
companies.phpnu�[���PK�z�[n�9g9g
�Cgroups.phpnu�[���PK�z�[��|�"�"E�jobs.phpnu�[���PK�z�[a�o��z�linkedin.phpnu�[���PK�z�[".��I
I
��oauth.phpnu�[���PK�z�[V�p���
1�object.phpnu�[���PK�z�[u�6�((
�people.phpnu�[���PK�z�[;"�(99
Gstream.phpnu�[���PK ��S