<?php
/**
* [PHPFOX_HEADER]
*/
defined('PHPFOX') or exit('NO DICE!');
/**
*
*
* @copyright [PHPFOX_COPYRIGHT]
* @author Raymond_Benc
* @package Phpfox_Component
* @version $Id: add.class.php 6304 2013-07-19 06:13:17Z Miguel_Espinoza $
*/
class Ad_Component_Controller_Add extends Phpfox_Component
{
/**
* Controller
*/
public function process()
{
Phpfox::isUser(true);
Phpfox::getUserParam('ad.can_create_ad_campaigns', true);
$aAllCountries = Core_Service_Country_Country::instance()->getCountriesAndChildren();
$bIsEdit = false;
$bCompleted = ($this->request()->get('req3') == 'completed' ? true : false);
if (($iId = $this->request()->getInt('id')) && ($aAd = Ad_Service_Ad::instance()->getForEdit($iId)))
{
if ($aAd['user_id'] != Phpfox::getUserId())
{
return Phpfox_Error::display(_p('unable_to_edit_purchase_this_ad'));
}
if (!$bCompleted)
{
$bIsEdit = true;
}
$aAd['country_iso_custom'] = $aAd['country_iso'];
$this->template()
->assign(array(
'aForms' => $aAd,
'aAllCountries' => $aAllCountries
)
);
$this->template()->setHeader(array(
'add.js' => 'module_ad',
'<script type="text/javascript">$Behavior.loadAdJs = function() { $Core.Ad.isEdit = true; $Core.Ad.setCountries(\''. json_encode($aAllCountries) .'\'); }</script>'
)
);
}
if ($bIsEdit)
{
$aValidation = array();
}
else
{
$aValidation = array(
'url_link' => array(
'def' => 'url'
)
);
}
$aValidation['name'] = _p('provide_a_campaign_name');
if (!$bIsEdit)
{
$aValidation['total_view'] = _p('define_how_many_impressions_for_this_ad');
}
$oValidator = Phpfox_Validator::instance()->set(array('sFormName' => 'js_form', 'aParams' => $aValidation));
if (($aVals = $this->request()->getArray('val')))
{
if ($oValidator->isValid($aVals))
{
if (isset($aVals['location']))
{
if (Phpfox::getParam('ad.multi_ad'))
{
if (!empty($aVals['placement_id']))
{
$aPlan = Ad_Service_Ad::instance()->getPlan( $aVals['placement_id'] , false );
}
else
{
$aPlan = Ad_Service_Ad::instance()->getPlan( 50 , true );
}
}
else
{
$aPlan = Ad_Service_Ad::instance()->getPlan($aVals['block_id'], false);
}
$aVals = array_merge($aPlan, $aVals);
}
if ($bIsEdit)
{
if (($iId = Phpfox::getService('ad.process')->updateCustom($aAd['ad_id'], $aVals)))
{
$this->url()->send('ad.manage', null, _p('ad_successfully_updated'));
}
}
else
{
if (($iId =Ad_Service_Process::instance()->addCustom($aVals)))
{
$this->url()->send('ad.add.completed', array('id' => $iId));
}
}
}
}
$aAge = array();
$iAgeEnd = date('Y')-Phpfox::getParam('user.date_of_birth_start');
$iAgeStart = date('Y')-Phpfox::getParam('user.date_of_birth_end');
for ($i = $iAgeStart; $iAgeStart <= $iAgeEnd; $iAgeStart++)
{
$aAge[$i] = $i;
}
$aPlacements = (array) Ad_Service_Ad::instance()->getPlacements();
$iPlacementCount = count($aPlacements);
if (!$bCompleted && !$bIsEdit)
{
if ($iPlacementCount)
{
$this->template()->setHeader(array(
'add.js' => 'module_ad',
'<script type="text/javascript">$Behavior.loadAdJs = function() { $Core.Ad.setCountries(\''. json_encode($aAllCountries) .'\'); };</script>'
)
);
}
}
else
{
if($cache = storage()->get('placement_ad_'.$iId))
{
$aPlan = Ad_Service_Ad::instance()->getPlan($cache->value, false);
}
else
{
$aPlan = Ad_Service_Ad::instance()->getPlan($aAd['location'], true);
}
if (!isset($aPlan['plan_id']))
{
return Phpfox_Error::display(_p('not_a_valid_ad_plan'));
}
// is it free?
$aCosts = unserialize($aPlan['cost']);
$bIsFree = true;
foreach ($aCosts as $sCurrency => $fCost)
{
if ($fCost > 0)
{
$bIsFree = false;
break;
}
}
$this->template()->assign(array('bIsFree' => $bIsFree));
$this->setParam('gateway_data', array(
'item_number' => 'ad|' . $aAd['ad_id'],
'currency_code' => $aPlan['default_currency_id'],
'amount' => $aPlan['is_cpm']? (($aPlan['default_cost'] * $aAd['total_view']) / 1000) : (($aPlan['default_cost'] * $aAd['total_view'])),
'item_name' => $aPlan['title'],
'return' => $this->url()->makeUrl('ad.manage', array('view' => 'pending', 'payment' => 'done')),
'recurring' => '',
'recurring_cost' => '',
'alternative_cost' => '',
'alternative_recurring_cost' => ''
)
);
$aGatewayData = $this->getParam('gateway_data');
}
$this->template()->setTitle(($bIsEdit ? _p('updating_an_ad') : _p('creating_an_ad')))
->setBreadCrumb(_p('advertise'), $this->url()->makeUrl('ad'))
->setBreadCrumb(($bIsEdit ? _p('updating_an_ad') : _p('creating_an_ad')), $this->url()->makeUrl('ad.add'), true)
->setPhrase(array(
'select_an_ad_placement',
'there_is_minimum_of_1000_impressions'
)
)
->assign(array(
'aAge' => $aAge,
'bIsEdit' => $bIsEdit,
'sCreateJs' => $oValidator->createJS(),
'sGetJsForm' => $oValidator->getJsForm(),
'bCompleted' => $bCompleted,
'iPlacementCount' => $iPlacementCount,
'aPlacements' => $aPlacements,
'aAllCountries' => $aAllCountries
)
)
->setPhrase(array(
'you_cannot_write_more_then_limit_characters',
'you_have_limit_character_s_left',
'amount_currency_per_1000_impressions',
'amount_currency_per_click'
)
)
->setHeader('cache', array(
'jquery/plugin/jquery.limitTextarea.js' => 'static_script',
'add.css' => 'module_ad',
'<script type="text/javascript">$Behavior.setMulti = function(){ oParams[\'ad.multi_ad\'] = ' . (Phpfox::getParam('ad.multi_ad') ? 'true': 'false'). ';};</script>'
)
)
->setFullSite();
}
/**
* Garbage collector. Is executed after this class has completed
* its job and the template has also been displayed.
*/
public function clean()
{
(($sPlugin = Phpfox_Plugin::get('ad.component_controller_add_clean')) ? eval($sPlugin) : false);
}
}