/catharsis-widgets-php

PHP5 library, which provides useful social media widgets to include on web pages of your site

Primary LanguagePHPGNU Lesser General Public License v3.0LGPL-3.0

This library is a PHP 5 port of Catharsis Social Web Widgets library.

It provides useful social media widgets to include on web pages of your site.

Web widgets are implemented as PHP 5 objects that provide convenient fluent interface to work with. Factory classes for generation of web widgets are also provided for more convenience.


Support

This project needs your support for further developments ! Please consider donating.

  • Yandex.Money : 41001577953208

  • WebMoney (WMR) : R399275865890

Image


Project directory structure

/src : Contains all required source code along with .js files.

--/scripts : JavaScript .js files, required by some groups of widgets for rendering.

--/widgets : Source code of widgets, divided by groups. Each subdirectory represents a set of related files for a group of widgets (Cackle, Facebook, YouTube, etc.).

/tests : Contains PHPUnit tests, divided by groups. Each subdirectory represents a set of related files for a group of widgets.


Installation and usage

  1. Copy /src directory to any directory under document root of your web server. Rename it to whatever you desire. Let's call this new directory "widgets", for example.
  2. If you want to move JavaScript files from former /src/scripts directory to another (for example, a dedicated directory where all JavaScript files in your website reside), please set a new path to it in the define('WEB_WIDGETS_SCRIPTS_PATH', '') instruction, located in the /src/Widgets.php file. Otherwise, leave this instruction commented.
  3. You are ready to rock. Read on for detailed code usage examples.

Code Example

The simplest PHP file that makes use of the library may look like the following :

<?php

/**

* Include widgets bootstrap file (Widgets.php).

* Assuming that this currently executing script is located in the root of the library's /src directory.

* Change the path depending on where you have copied contents of /src directory.

*/

include_once "./Widgets.php";

?>

<html>

<head>

</head>

<body>

`<?php`

  `Catharsis\Web\Widgets::cackle()->comments()->account("20049")->render(); // Render HTML code for Cackle Comments widget.`

  `echo Catharsis\Web\WebWidgetsScripts::cackle(); // Include required local Cackle javascript file from /scripts directory. Note : not all widgets require JavaScript files.`

`?>`

</body>

</html>


API examples

Cackle

1. Comments

Requirements: Catharsis\Web\WebWidgetsScripts::cackle() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::cackle()->comments()->account("20049")->render()

2. Comments count hyperlink

Requirements: Catharsis\Web\WebWidgetsScripts::cackle() JavaScript bundle (head or body section)

Note: Hyperlinks must have a specific CSS class for this to work, as described in Cackle documentation.

Code:

Catharsis\Web\Widgets::cackle()->commentsCount()->account("20049")->render()

3. Latest comments

Requirements: Catharsis\Web\WebWidgetsScripts::cackle() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::cackle()->latestComments()->account("20049")->render()

Catharsis\Web\Widgets::cackle()->latestComments()->account("20049")->max(15)->avatarSize(32)->titleSize(50)->textSize(255)->render()

4. OAuth login

Requirements: Catharsis\Web\WebWidgetsScripts::cackle() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::cackle()->login()->account("20049")->render()

Disqus

1. Comments

Requirements: Catharsis\Web\WebWidgetsScripts::disqus() JavaScript bundle (body section)

Code:

Catharsis\Web\Widgets::disqus()->comments()->account("v-svete-snov")->render()

Facebook

1. JS API initialization

Requirements: None

Code:

Catharsis\Web\Widgets::facebook()->initialize()->appId("1437917246425293")->render()

2. Activity Feed

Requirements: Call to Catharsis\Web\Widgets::facebook()->initialize()

Code:

Catharsis\Web\Widgets::facebook()->activityFeed()->render()

Catharsis\Web\Widgets::facebook()->activityFeed()->domain("yandex.ru")->render()

Catharsis\Web\Widgets::facebook()->activityFeed()->domain("yandex.ru")->header(false)->recommendations(true)->colorScheme(Catharsis\Web\FacebookColorScheme::DARK)->render()

3. Recommendations Feed

Requirements: Call to Catharsis\Web\Widgets::facebook()->initialize()

Code:

Catharsis\Web\Widgets::facebook()->recommendationsFeed()->render()

Catharsis\Web\Widgets::facebook()->recommendationsFeed()->domain("yandex.ru")->render()

Catharsis\Web\Widgets::facebook()->recommendationsFeed()->domain("yandex.ru")->header(false)->colorScheme(Catharsis\Web\FacebookColorScheme::DARK)->render()

4. Comments

Requirements: Call to Catharsis\Web\Widgets::facebook()->initialize()

Code:

Catharsis\Web\Widgets::facebook()->comments()->render()

Catharsis\Web\Widgets::facebook()->comments()->url("http://yandex.ru")->render()

Catharsis\Web\Widgets::facebook()->comments()->url("http://yandex.ru")->order(Catharsis\Web\FacebookCommentsOrder::REVERSE_TIME)->posts(1)->width("500")->render()

5. Facepile

Requirements: Call to Catharsis\Web\Widgets::facebook()->initialize()

Code:

Catharsis\Web\Widgets::facebook()->facepile()->render()

Catharsis\Web\Widgets::facebook()->facepile()->url("http://yandex.ru")->render()

Catharsis\Web\Widgets::facebook()->facepile()->url("http://yandex.ru")->maxRows(5)->photoSize(Catharsis\Web\FacebookFacepileSize::LARGE)->height("300")->render()

6. Follow Button

Requirements: Call to Catharsis\Web\Widgets::facebook()->initialize()

Code:

Catharsis\Web\Widgets::facebook()->followButton()->url("http://www.facebook.com/zuck")->render()

Catharsis\Web\Widgets::facebook()->followButton()->url("http://www.facebook.com/zuck")->kidsMode(true)->faces(true)->layout(Catharsis\Web\FacebookButtonLayout::BOX_COUNT)->render()

7. Like Box

Requirements: Call to Catharsis\Web\Widgets::facebook()->initialize()

Code:

Catharsis\Web\Widgets::facebook()->likeBox()->url("https://www.facebook.com/pages/Clear-Words/515749945120070")->render()

Catharsis\Web\Widgets::facebook()->likeBox()->url("https://www.facebook.com/pages/Clear-Words/515749945120070")->header(false)->border(false)->faces(false)->stream(true)->width("500")->render()

8. Like Button

Requirements: Call to Catharsis\Web\Widgets::facebook()->initialize()

Code:

Catharsis\Web\Widgets::facebook()->likeButton()->url("http://yandex.ru")->render()

Catharsis\Web\Widgets::facebook()->likeButton()->url("http://yandex.ru")->render()

Catharsis\Web\Widgets::facebook()->likeButton()->url("http://yandex.ru")->layout(Catharsis\Web\FacebookLikeButtonLayout::BOX_COUNT)->faces(true)->verb(Catharsis\Web\FacebookLikeButtonVerb::RECOMMEND)->render()

9. Embedded post

Requirements: Call to Catharsis\Web\Widgets::facebook()->initialize()

Code:

Catharsis\Web\Widgets::facebook()->post()->url("https://www.facebook.com/prokhor.ozornin/posts/10203109769053557")->width(640)->render()

10. Send Button

Requirements: Call to Catharsis\Web\Widgets::facebook()->initialize()

Code:

Catharsis\Web\Widgets::facebook()->sendButton()->render()

Catharsis\Web\Widgets::facebook()->sendButton()->url("http://yandex.ru")->render()

Catharsis\Web\Widgets::facebook()->sendButton()->url("http://yandex.ru")->colorScheme(Catharsis\Web\FacebookColorScheme::DARK)->kidsMode()->render()

11. Embedded video

Requirements: None

Code:

Catharsis\Web\Widgets::facebook()->video()->height("480")->width("640")->id("10203121281421359")->render()

Google

1. Analytics

Requirements: None

Code:

Catharsis\Web\Widgets::google()->analytics()->domain("v-svete-snov.ru")->account("UA-27123759-16")->render()

2. +1 Button

Requirements: Catharsis\Web\WebWidgetsScripts::google() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::google()->plusOneButton()->render()

Catharsis\Web\Widgets::google()->plusOneButton()->url("http://yandex.ru")->alignment(Catharsis\Web\GooglePlusOneButtonAlignment::RIGHT)->size(Catharsis\Web\GooglePlusOneButtonSize::TALL)->annotation(Catharsis\Web\GooglePlusOneButtonAnnotation::INLINE)->recommendations(false)->render()

Gravatar

1. Avatar image URL

Requirements: None

Code:

Catharsis\Web\Widgets::gravatar()->imageUrl()->email("prokhor.ozornin@yandex.ru")->render()

Catharsis\Web\Widgets::gravatar()->imageUrl()->email("prokhor.ozornin@yandex.ru")->extension("jpg")->forceDefault(true)->size(320)->render()

2. User profile URL

Requirements: None

Code:

Catharsis\Web\Widgets::gravatar()->profileUrl()->email("prokhor.ozornin@yandex.ru")->render()

Catharsis\Web\Widgets::gravatar()->profileUrl()->email("prokhor.ozornin@yandex.ru")->xml()->render()

IntenseDebate

1. Comments

Requirements: None

Code:

Catharsis\Web\Widgets::intensedebate()->comments()->account("a639ec3507d53023d4f213666651b6c2")->render()

2. Comments count hyperlink

Requirements: None

Code:

Catharsis\Web\Widgets::intensedebate()->link()->account("a639ec3507d53023d4f213666651b6c2")->render()

LiveJournal

1. Like Button

Requirements: None

Code:

Catharsis\Web\Widgets::livejournal()->likeButton()->render()

2. Repost Button

Requirements: None

Code:

Catharsis\Web\Widgets::livejournal()->repostButton()->render()

Catharsis\Web\Widgets::livejournal()->repostButton()->title("title")->text("text")->render()

Mail.ru

1. ICQ On-Site

Requirements: None

Code:

Catharsis\Web\Widgets::mailru()->icq()->render()

Catharsis\Web\Widgets::mailru()->icq()->account("12345678")->language("en")->render()

2. Embedded video

Requirements: None

Code:

Catharsis\Web\Widgets::mailru()->video()->id("i.v.sosnin62/3023/3027.html")->height("480")->width("640")->render()

3. Like Button

Requirements: Catharsis\Web\WebWidgetsScripts::mailru() JavaScript bundle (body section)

Code:

Catharsis\Web\Widgets::mailru()->likeButton()->render()

Catharsis\Web\Widgets::mailru()->likeButton()->layout(Catharsis\Web\MailRuLikeButtonLayout::SECOND)->text(false)->counterPosition(Catharsis\Web\MailRuLikeButtonCounterPosition::UPPER)->size(30)->render()

4. Faces

Requirements: Catharsis\Web\WebWidgetsScripts::mailru() JavaScript bundle (body section)

Code:

Catharsis\Web\Widgets::mailru()->faces()->domain("mail.ru")->width(640)->height(480)->render()

Catharsis\Web\Widgets::mailru()->faces()->domain("mail.ru")->width(640)->height(480)->font(Catharsis\Web\MailRuFacesFont::TAHOMA)->title(false)->backgroundColor("aaffaa")->hyperlinkColor("ffaaff")->borderColor("aaaaaa")->render()

5. Groups

Requirements: Catharsis\Web\WebWidgetsScripts::mailru() JavaScript bundle (body section)

Code:

Catharsis\Web\Widgets::mailru()->groups()->account("mail_ru")->width(640)->height(480)->render()

Catharsis\Web\Widgets::mailru()->groups()->account("mail_ru")->width(640)->height(480)->backgroundColor("aaffaa")->buttonColor("ffaaff")->subscribers(false)->textColor("aaaadd")->render()

Pinterest

1. Follow Button

Requirements: Catharsis\Web\WebWidgetsScripts::pinterest() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::pinterest()->followButton()->account("pinterest")->render()

Catharsis\Web\Widgets::pinterest()->followButton()->account("pinterest")->label("Pinterest")->render()

2. Embedded Pin

Requirements: Catharsis\Web\WebWidgetsScripts::pinterest() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::pinterest()->pin()->id("99360735500167749")->render()

3. Board

Requirements: Catharsis\Web\WebWidgetsScripts::pinterest() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::pinterest()->board()->account("pinterest")->id("pin-pets")->render()

Catharsis\Web\Widgets::pinterest()->board()->account("pinterest")->id("pin-pets")->sidebar()->render()

4. Profile

Requirements: Catharsis\Web\WebWidgetsScripts::pinterest() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::pinterest()->profile()->account("pinterest")->render()

Catharsis\Web\Widgets::pinterest()->profile()->account("pinterest")->sidebar()->render()

5. Pin It Button

Requirements: Catharsis\Web\WebWidgetsScripts::pinterest() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::pinterest()->pinItButton()->url("http://www.flickr.com/photos/kentbrew/6851755809")->image("http://farm8.staticflickr.com/7027/6851755809_df5b2051c9_z.jpg")->description("Next stop: Pinterest")->render()

Catharsis\Web\Widgets::pinterest()->pinItButton()->url("http://www.flickr.com/photos/kentbrew/6851755809")->image("http://farm8.staticflickr.com/7027/6851755809_df5b2051c9_z.jpg")->description("Next stop: Pinterest")->counter(Catharsis\Web\PinterestPinItButtonPinCountPosition::NONE)->size(Catharsis\Web\PinterestPinItButtonSize::LARGE)->red()->shape(Catharsis\Web\PinterestPinItButtonShape::RECTANGULAR)->language("ja")->render()

RuTube

1. Embedded video

Requirements: None

Code:

Catharsis\Web\Widgets::rutube()->video()->id("6785018")->height("480")->width("640")->render()

SoundCloud

1. User's profile icon

Requirements: None

Code:

Catharsis\Web\Widgets::soundcloud()->profileIcon()->account("prokhor-ozornin")->render()

Catharsis\Web\Widgets::soundcloud()->profileIcon()->account("prokhor-ozornin")->blackWhite()->size(Catharsis\Web\SoundCloudProfileIconSize::SIZE_64)->render()

Surfingbird

1. Surf Button

Requirements: Catharsis\Web\WebWidgetsScripts::surfingbird() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::surfingbird()->surfButton()->render()

Catharsis\Web\Widgets::surfingbird()->surfButton()->color(Catharsis\Web\SurfingbirdSurfButtonColor::BLUE)->counter(true)->label("Share")->url("http://yandex.ru")->layout(Catharsis\Web\SurfingbirdSurfButtonLayout::COMMON)->render()

Tumblr

1. Follow Button

Requirements: None

Code:

Catharsis\Web\Widgets::tumblr()->followButton()->account("clear-words-en")->render()

Catharsis\Web\Widgets::tumblr()->followButton()->account("clear-words-en")->colorScheme(Catharsis\Web\TumblrFollowButtonColorScheme::DARK)->type(Catharsis\Web\TumblrFollowButtonType::SECOND)->render()

2. Share Button

Requirements: Catharsis\Web\WebWidgetsScripts::tumblr() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::tumblr()->shareButton()->render()

Catharsis\Web\Widgets::tumblr()->shareButton()->colorScheme(Catharsis\Web\TumblrShareButtonColorScheme::GRAY)->type(Catharsis\Web\TumblrShareButtonType::THIRD)->render()

Twitter

1. Tweet Button

Requirements: Catharsis\Web\WebWidgetsScripts::twitter() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::twitter()->tweetButton()->render()

Catharsis\Web\Widgets::twitter()->tweetButton()->hashTags(array("first", "second", "third"))->url("http://yandex.ru")->text("Let's share it !")->via("Prokhor")->suggestions(false)->render()

2. Follow Button

Requirements: Catharsis\Web\WebWidgetsScripts::twitter() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::twitter()->followButton()->account("prokhor_ozornin")->render()

Catharsis\Web\Widgets::twitter()->followButton()->account("prokhor_ozornin")->suggestions(true)->counter(false)->screenName(false)->render()

Vimeo

1. Embedded video

Requirements: None

Code:

Catharsis\Web\Widgets::vimeo()->video()->id("55456906")->width("640")->height("480")->render()

Vkontakte

1. Embedded video

Requirements: None

Code:

Catharsis\Web\Widgets::vkontakte()->video()->id("167533148")->hash("7a0cdf6ef7a69e67")->user("5707198")->width("607")->height("360")->hd(true)->render()

2. JS API initialization

Requirements: Catharsis\Web\WebWidgetsScripts::vkontakte() JavaScript bundle (head section)

Code:

Catharsis\Web\Widgets::vkontakte()->initialize()->apiId("3816272")->render()

3. OAuth Button

Requirements: Call to Catharsis\Web\Widgets::vkontakte()->initialize()

Code:

Catharsis\Web\Widgets::vkontakte()->authButton()->standard('http://yandex.ru')->render()

Catharsis\Web\Widgets::vkontakte()->authButton()->dynamic('onAuth')->width(640)->render()

4. Comments

Requirements: Call to Catharsis\Web\Widgets::vkontakte()->initialize()

Code:

Catharsis\Web\Widgets::vkontakte()->comments()->render()

Catharsis\Web\Widgets::vkontakte()->comments()->attach(Catharsis\Web\VkontakteCommentsAttach::ALL)->limit(Catharsis\Web\VkontakteCommentsLimit::LIMIT_15)->autoPublish(true)->autoUpdate(true)->mini(true)->render()

5. Community

Requirements: Call to Catharsis\Web\Widgets::vkontakte()->initialize()

Code:

Catharsis\Web\Widgets::vkontakte()->community()->account("44545550")->render()

Catharsis\Web\Widgets::vkontakte()->community()->account("44545550")->mode(Catharsis\Web\VkontakteCommunityMode::NEWS)->height(400)->width(600)->backgroundColor("AABBCC")->textColor("FF0000")->buttonColor("00FF00")->render()

6. Like Button

Requirements: Call to Catharsis\Web\Widgets::vkontakte()->initialize()

Code:

Catharsis\Web\Widgets::vkontakte()->likeButton()->render()

7. Poll

Requirements: Call to Catharsis\Web\Widgets::vkontakte()->initialize()

Code:

Catharsis\Web\Widgets::vkontakte()->poll()->id('6564504_c2a6ccb7df15aff473')->render()

Catharsis\Web\Widgets::vkontakte()->poll()->id('6564504_c2a6ccb7df15aff473')->width(640)->render()

8. Wall Post

Requirements: Call to Catharsis\Web\Widgets::vkontakte()->initialize()

Code:

Catharsis\Web\Widgets::vkontakte()->post()->id(45616)->owner(1)->hash('Yss6aNhrrQhOL5FfXZeuga8yKA')->render()

Catharsis\Web\Widgets::vkontakte()->post()->id(45616)->owner(1)->hash('Yss6aNhrrQhOL5FfXZeuga8yKA')->width(640)->render()

9. Recommendations Feed

Requirements: Call to Catharsis\Web\Widgets::vkontakte()->initialize()

Code:

Catharsis\Web\Widgets::vkontakte()->recommendations()->render()

Catharsis\Web\Widgets::vkontakte()->recommendations()->limit(VkontakteRecommendationsLimit.Ten)->max(50)->period(VkontakteRecommendationsPeriod.Month)->sorting(VkontakteRecommendationsSorting.Likes)->verb(VkontakteRecommendationsVerb.Like)->target('_blank')->render()

10. Subscription

Requirements: Call to Catharsis\Web\Widgets::vkontakte()->initialize()

Code:

Catharsis\Web\Widgets::vkontakte()->subscription()->account("5707198")->render()

Catharsis\Web\Widgets::vkontakte()->subscription()->account("5707198")->onlyButton(true)->render()

Yandex

1. Metrika

Requirements: None

Code:

Catharsis\Web\Widgets::yandex()->analytics()->account("12066574")->render()

2. Like Button

Requirements: None

Code:

Catharsis\Web\Widgets::yandex()->likeButton()->render()

Catharsis\Web\Widgets::yandex()->likeButton()->title("Yandex Main Page")->text("Share")->url("http://yandex.ru")->size(Catharsis\Web\YandexLikeButtonSize::SMALL)->render()

3. Embedded video

Requirements: None

Code:

Catharsis\Web\Widgets::yandex()->video()->id("6ea0ugstkx.2528")->user("leonevskiy")->width("450")->height("253")->render()

4. Yandex.Money payment button

Requirements: None

Code:

Catharsis\Web\Widgets::yandex()->moneyButton()->account("41001577953208")->sum(15.5)->description("Test Payment")->render()

Catharsis\Web\Widgets::yandex()->moneyButton()->account("41001577953208")->sum(15.5)->description("Test Payment")->type(Catharsis\Web\YandexMoneyButtonType::CARD)->text(Catharsis\Web\YandexMoneyButtonText::BUY)->size(Catharsis\Web\YandexMoneyButtonSize::MEDIUM)->color(Catharsis\Web\YandexMoneyButtonColor::WHITE)->askPayerAddress(true)->askPayerEmail(true)->askPayerFullName(true)->askPayerPhone(true)->render()

5. Yandex.Money donation form

Requirements: None

Code:

Catharsis\Web\Widgets::yandex()->moneyDonateForm()->account("41001577953208")->descriptionText("Test Donation")->render()

Catharsis\Web\Widgets::yandex()->moneyDonateForm()->account("41001577953208")->descriptionText("Test Donation")->description()->sum(15.5)->cards(true)->projectName("Yandex")->projectSite("http://yandex.ru")->text(Catharsis\Web\YandexMoneyDonateFormText::GIVE)->askPayerPhone(true)->askPayerFullName(true)->askPayerComment(true)->askPayerEmail(true)->render()

6. Yandex.Money payment form

Requirements: None

Code:

Catharsis\Web\Widgets::yandex()->money_payment_form()->account("41001577953208")->description("Test Payment")->render()

Catharsis\Web\Widgets::Yandex()->money_payment_form()->account("41001577953208")->description("Test Payment")->sum(15.5)->cards(false)->text(Catharsis\Web\YandexMoneyPaymentFormText::TRANSFER)->askPayerComment(true)->askPayerEmail(true)->askPayerFullName(true)->askPayerAddress(true)->askPayerPhone(true)->askPayerPurpose(true)->render()

7. Share Button

Requirements: Catharsis\Web\WebWidgetsScripts::yandex() JavaScript bundle (head or body section)

Code:

Catharsis\Web\Widgets::yandex()->shareButton()->render()

Catharsis\Web\Widgets::yandex()->shareButton()->services("facebook")->language("en")->render()

YouTube

1. Embedded video

Requirements: None

Code:

Catharsis\Web\Widgets::youtube()->video()->id("eYJSlHiXegI")->width("100%")->height("480")->render()

VideoJS

1. Media Player

Requirements:

  • Catharsis\Web\WebWidgetsScripts::videojs() JavaScript bundle (head or body section)

  • Catharsis\Web\WebWidgetsStyles::videojs() CSS bundle (head section)

Code:

Catharsis\Web\Widgets::videojs()->player()->width("640")->height("480")->videos(array("http://vjs.zencdn.net/v/oceans.mp4" => Catharsis\Web\VideoContentTypes::MP4, "http://vjs.zencdn.net/v/oceans.webm" => Catharsis\Web\VideoContentTypes::WebM))->extra('<track kind="captions" src="http://www.videojs.com/vtt/captions.vtt" srclang="en" label="English"/>')->render()