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
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
- 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.
- 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. - 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()
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()
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()
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()
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()