. * * @category Action * @package StatusNet * @author Sarven Capadisli * @copyright 2010 StatusNet, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } /** * Outputs the following ad types (based on UAP): * Medium Rectangle 300x250 * Rectangle 180x150 * Leaderboard 728x90 * Wide Skyscraper 160x600 * * Any number of ad types can be used. Enable all using example: * addPlugin('UAP', array( * 'MediumRectangle' => '', * 'Rectangle' => '', * 'Leaderboard' => '', * 'WideSkyscraper' => '' * ) * ); * * @category Plugin * @package StatusNet * @author Sarven Capadisli * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 * @link http://status.net/ */ class UAPPlugin extends Plugin { public $MediumRectangle = null; public $Rectangle = null; public $Leaderboard = null; public $WideSkyscraper = null; function __construct($uap = array()) { $this->uap = $uap; parent::__construct(); } function onInitializePlugin() { foreach($this->uap as $key => $value) { switch(strtolower($key)) { case 'mediumrectangle': default: $this->MediumRectangle = $value; break; case 'rectangle': $this->Rectangle = $value; break; case 'leaderboard': $this->Leaderboard = $value; break; case 'wideskyscraper': $this->WideSkyscraper = $value; break; } } } function onEndShowStatusNetStyles($action) { $action->cssLink(common_path('plugins/UAP/uap.css'), null, 'screen, projection, tv'); return true; } //MediumRectangle ad function onStartShowAside($action) { if (!$this->MediumRectangle) { return true; } $this->showAd($action, array('id' => 'ad_medium-rectangle'), $this->MediumRectangle); return true; } /* //Rectangle ad function onEndShowSiteNotice($action) { if (!$this->Rectangle) { return true; } $this->showAd($action, array('id' => 'ad_rectangle'), $this->Rectangle); return true; } */ //Leaderboard and Rectangle ad function onStartShowHeader($action) { if ($this->Leaderboard) { $this->showAd($action, array('id' => 'ad_leaderboard'), $this->Leaderboard); } if ($this->Rectangle) { $this->showAd($action, array('id' => 'ad_rectangle'), $this->Rectangle); } return true; } //WideSkyscraper ad function onEndShowAside($action) { if (!$this->WideSkyscraper) { return true; } $this->showAd($action, array('id' => 'ad_wide-skyscraper'), $this->WideSkyscraper); return true; } //Output ad container function showAd($action, $attr=array(), $value) { $classes = ($attr['class']) ? $attr['class'].' ' : ''; $action->elementStart('div', array('id' => $attr['id'], 'class' => $classes.'ad')); $action->raw($value); $action->elementEnd('div'); } function onPluginVersion(&$versions) { $versions[] = array('name' => 'UAP', 'version' => STATUSNET_VERSION, 'author' => 'Sarven Capadisli', 'homepage' => 'http://status.net/wiki/Plugin:UAP', 'rawdescription' => _m('Outputs ad placements based on Universal Ad Package')); return true; } }