Create widget – Socialengine

I am currently trying to learn the open source social engine  and would like to share  my finding with youall . Here I will explain how we can develop a widget that will display a text on a page .

1) Create a folder with a meaningful name in “application/widgets”. here I use “phpcodez”  .
Type the following commands from socialengine installation directory

cd  application

mkdir   phpcodez

2)  Then create 3 files “Controller.php” ,”index.tpl” and ”manifest.php” in the new folder “phpcodez”

gedit Controller.php
gedit index.tpl
gedit manifest.php

As you know the socialengine follows MVC structure . So controller lies in “Controller.php”
and view lies in “index.tpl” . The file “manifest.php“ ,will tell the system that a new widget has been added .

3) Paste the below given code in “Controller.php”

<?php
class Widget_phpcodezController extends Engine_Content_Widget_Abstract {
public function indexAction()  {
$this->view->title=’PHPCodez’;
}
}

?>

The “indexAction()” function will be invoked when the widget called .

So we must prepare the data to be passed to the view . Here variable are  declared and initialized as follows

$this->view->VARIABLE_NAME .

4) Paste the below given code in “index.tpl”

<?php
echo $this->title;
?>

We can print the values of the variable as shown above .

5) Paste the below given code in “manifest.php”

<?php

return array(
‘package’ => array(
‘type’ => ‘widget’,
‘name’ => ‘phpcodez’,
‘version’ => ‘4.0.0’,
‘revision’ => ‘$Revision: 8822 $’,
‘path’ => ‘application/widgets/phpcodez’,
‘repository’ => ‘socialengine.net’,
‘title’ => ‘PHPCodez’,
‘description’ => ‘Displays a “powered by PHPCodez” link.’,
‘author’ => ‘Webligo Developments’,
‘directories’ => array(
‘application/widgets/phpcodez’,
),
),

// Backwards compatibility
‘type’ => ‘widget’,
‘name’ => ‘phpcodez’,
‘version’ => ‘4.0.0’,
‘revision’ => ‘$PHPCodez: 8822 $’,
‘title’ => ‘phpcodez’,
‘description’ => ‘Displays a “powered by PHPCodez” link.’,
‘author’ => ‘Webligo Developments’,
‘category’ => ‘Widgets’,
)

?>

It tells the system that a new widget has been added .

NOTE : If any database operation is required , create a model and let the controller interact with it .

php_uname

It returns information about the operating system PHP is running on

Example

<?php
echo php_uname();
?>

Ouput

Linux phpcodez-System-Product-Name 2.6.35-22-generic #35-Ubuntu SMP Sat Oct 16 20:36:48 UTC 2010 i686

Installing ionCube

Run the below given commands to install ioncube in ubuntu linux

1) Chnage directory to /usr/local/

cd /usr/local/

2) Download ionCube loaders

wget http://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz

3) Extract the file

tar zxvf ioncube_loaders_lin_x86.tar.gz

4) Add reference to your php.ini file

a) Chnage sirectory to apache2

cd /etc/php5/apache2/

b) Make sure that you have the back up of php.ini file

sudo cp php.ini php.ini.bck

c) Edit the php.ini file and add the referance

sudo gedit php.ini

zend_extension = /usr/local/ioncube/ioncube_loader_lin_5.2.so

5) Restart apache

/etc/init.d/apache2 restart