Вход Регистрация
Файл: plugins/advertisement/controllers/admin.php
Строк: 688
<?php

class ADS_CTRL_Admin extends ADMIN_CTRL_Abstract
{
 
    private 
$menu;
  
    private 
$adsService;

 
    public function 
__construct()
    {
        
parent::__construct();

        
$language PEEP::getLanguage();

        
$menu = new BASE_CMP_ContentMenu();

        
$menuItem = new BASE_MenuItem();
        
$menuItem->setKey('index');
        
$menuItem->setLabel($language->text('ads''advertisement_menu_banner_list'));
        
$menuItem->setUrl(PEEP::getRouter()->urlForRoute('ads.admin_index'));
        
$menuItem->setIconClass('peep_ic_files');
        
$menuItem->setOrder(1);
        
$menu->addElement($menuItem);

        
$menuItem = new BASE_MenuItem();
        
$menuItem->setKey('manage');
        
$menuItem->setLabel($language->text('ads''advertisement_menu_manage_banners'));
        
$menuItem->setUrl(PEEP::getRouter()->urlForRoute('ads.admin_manage'));
        
$menuItem->setIconClass('peep_ic_gear_wheel');
        
$menuItem->setOrder(2);
        
$menu->addElement($menuItem);

        
$this->addComponent('menu'$menu);
        
$this->menu $menu;
        
$this->adsService ADS_BOL_Service::getInstance();

        
$this->setPageTitle($language->text('ads''page_title_ads'));
        
$this->setPageHeading($language->text('ads''page_heading_ads'));
        
$this->setPageHeadingIconClass('peep_ic_star');

        
PEEP::getNavigation()->activateMenuItem('admin_plugins''admin''sidebar_menu_plugins_installed');
    }

    public function 
index()
    {
        
$this->menu->getElement('index')->setActive(true);
        
$this->assign('addUrl'PEEP::getRouter()->urlFor('ADS_CTRL_Admin''add'));
        
$banners $this->adsService->findAllBannersInfo();

        foreach ( 
$banners as $key => $banner )
        {
            
$banners[$key]['editUrl'] = PEEP::getRouter()->urlForRoute('ads.banner_edit', array('bannerId' => $key));
            
$banners[$key]['deleteUrl'] = PEEP::getRouter()->urlForRoute('ads.banner_delete', array('bannerId' => $key));
        }

        
$this->assign('banners'$banners);
    }

    public function 
add()
    {
        
$language PEEP::getLanguage();

        
$this->menu->getElement('index')->setActive(true);

        
$form $this->getAdsForm('banner_add_form');

        
$this->addForm($form);

        if ( 
PEEP::getRequest()->isPost() )
        {
            if ( 
$form->isValid($_POST) )
            {
                
$data $form->getValues();
                
$banner = new ADS_BOL_Banner();
                
$banner->setLabel($data['title']);
                
$banner->setCode($data['code']);
                
$this->adsService->saveBanner($banner);

                if ( 
$data['select_country'] !== null && sizeof($data['select_country']) > )
                {
                    foreach ( 
$data['select_country'] as $loc )
                    {
                        
$bannerLocation = new ADS_BOL_BannerLocation();
                        
$bannerLocation->setBannerId($banner->getId());
                        
$bannerLocation->setLocation($loc);
                        
$this->adsService->saveBannerLocation($bannerLocation);
                    }
                }

                
PEEP::getFeedback()->info($language->text('ads''ads_banner_add_success_message'));
                
$this->redirectToAction('index');
            }
        }
    }

    public function 
edit$params )
    {
        
$language PEEP::getLanguage();

        
$this->menu->getElement('index')->setActive(true);

        if ( empty(
$params['bannerId']) )
        {
            
$this->redirectToAction('index');
        }

        
$bannerId = (int) $params['bannerId'];
        
$banner $this->adsService->findBannerById($bannerId);

        if ( 
$banner === null )
        {
            
$this->redirectToAction('index');
        }

        
$form $this->getAdsForm('banner_edit_form');
        
$form->getSubmitElement('submit')->setValue($language->text('ads''ads_edit_banner_submit_label'));
        
$form->getElement('title')->setValue($banner->getLabel());
        
$form->getElement('code')->setValue($banner->getCode());

        if ( 
$this->adsService->getLocationEnabled() )
        {
        
$bannerLocations $this->adsService->findBannerLocations($banner->getId());
        
$locationCodes = array();
        if ( !empty(
$bannerLocations) )
        {
            
/* @var $bannerLocation ADS_BOL_BannerLocation */
            
foreach ( $bannerLocations as $bannerLocation )
            {
                
$locationCodes[] = $bannerLocation->getLocation();
            }
        }
        
$form->getElement('select_country')->setValue($locationCodes);
        }

        
$this->addForm($form);

        if ( 
PEEP::getRequest()->isPost() )
        {
            if ( 
$form->isValid($_POST) )
            {
                
$data $form->getValues();
                
$banner->setLabel($data['title']);
                
$banner->setCode($data['code']);
                
$this->adsService->saveBanner($banner);
                
$this->adsService->resetBannerLocations($banner->getId());

                if ( 
$data['select_country'] !== null && sizeof($data['select_country']) > )
                {
                    foreach ( 
$data['select_country'] as $loc )
                    {
                        
$bannerLocation = new ADS_BOL_BannerLocation();
                        
$bannerLocation->setBannerId($banner->getId());
                        
$bannerLocation->setLocation($loc);
                        
$this->adsService->saveBannerLocation($bannerLocation);
                    }
                }

                
PEEP::getFeedback()->info($language->text('ads''ads_banner_edit_success_message'));
                
$this->redirectToAction('index');
            }
        }
    }

    public function 
delete$params )
    {
        if ( empty(
$params['bannerId']) )
        {
            
$this->redirectToAction('index');
        }

        
$bannerId = (int) $params['bannerId'];
        
$banner $this->adsService->findBannerById($bannerId);

        if ( 
$banner === null )
        {
            
$this->redirectToAction('index');
        }

        
$this->adsService->deleteBanner($banner->getId());
        
PEEP::getFeedback()->info(PEEP::getLanguage()->text('ads''ads_banner_delete_success_message'));
        
$this->redirectToAction('index');
    }

    public function 
manage()
    {
        
$this->menu->getElement('manage')->setActive(true);

        
$language PEEP::getLanguage();

        
$event = new BASE_CLASS_EventCollector('ads.enabled_plugins');
        
PEEP::getEventManager()->trigger($event);

        
$pluginList $event->getData();

        
$pluginsArray = array();
        
$first false;
        
        foreach ( 
$pluginList as $plugin )
        {
            
$pluginObj PEEP::getPluginManager()->getPlugin($plugin);

            if ( 
$pluginObj === null )
            {
                continue;
            }

            
$pluginsArray[$pluginObj->getDto()->getKey()] = strtolower($pluginObj->getDto()->getKey()) === 'base' $language->text('ads''ads_manage_global_label') : $pluginObj->getDto()->getTitle();

            if ( !
$first )
            {
                
$first $pluginObj->getDto()->getKey();
            }
        }

        
$selected = ( isset($_GET['plugin']) && in_array(trim($_GET['plugin']), array_keys($pluginsArray)) ) ? trim($_GET['plugin']) : $first;

        
$topForm $this->getManageForm('top_form');
        
$this->addForm($topForm);
        
$topForm->getElement('plugin_key')->setValue($selected);
        
$topForm->getElement('banners')->setValue($this->adsService->findBannerIdList(ADS_BOL_Service::BANNER_POSITION_TOP$selected));
        
$rightForm $this->getManageForm('right_form');
        
$rightForm->getElement('plugin_key')->setValue($selected);
        
$rightForm->getElement('banners')->setValue($this->adsService->findBannerIdList(ADS_BOL_Service::BANNER_POSITION_RIGHT$selected));
        
$this->addForm($rightForm);
        
        
$leftForm $this->getManageForm('left_form');
        
$leftForm->getElement('plugin_key')->setValue($selected);
        
$leftForm->getElement('banners')->setValue($this->adsService->findBannerIdList(ADS_BOL_Service::BANNER_POSITION_LEFT$selected));
        
$this->addForm($leftForm);

        
$bottomForm $this->getManageForm('bottom_form');
        
$bottomForm->getElement('plugin_key')->setValue($selected);
        
$bottomForm->getElement('banners')->setValue($this->adsService->findBannerIdList(ADS_BOL_Service::BANNER_POSITION_BOTTOM$selected));
        
$this->addForm($bottomForm);

        
$this->assign('plugins'$pluginsArray);
        
$this->assign('selected'$selected);

        
$this->assign('top_link_label'$language->text('ads''ads_banners_count_label', array('count' => $this->adsService->findBannersCount('top'$selected))));
        
$this->assign('right_link_label'$language->text('ads''ads_banners_count_label', array('count' => $this->adsService->findBannersCount('right'$selected))));
        
$this->assign('left_link_label'$language->text('ads''ads_banners_count_label', array('count' => $this->adsService->findBannersCount('left'$selected))));
        
$this->assign('bottom_link_label'$language->text('ads''ads_banners_count_label', array('count' => $this->adsService->findBannersCount('bottom'$selected))));

       

        
$floatboxCapLabel $language->text('ads''ads_banners_add_floatbox_label');

        
$script "$('#top_link').click(function(){window.adsForm = new PEEP_FloatBox({$title:'" . $floatboxCapLabel . "'$contents: $('#top_form'), width'550px'})});";
        
$script .= "$('#bottom_link').click(function(){window.adsForm = new PEEP_FloatBox({$title:'" . $floatboxCapLabel . "'$contents: $('#bottom_form'), width'550px'})});";
        
$script .= "$('#right_link').click(function(){window.adsForm = new PEEP_FloatBox({$title:'" . $floatboxCapLabel . "'$contents: $('#right_form'), width'550px'})});";
        
$script .= "$('#left_link').click(function(){window.adsForm = new PEEP_FloatBox({$title:'" . $floatboxCapLabel . "'$contents: $('#left_form'), width'550px'})});";
        
PEEP::getDocument()->addOnloadScript($script);
    }

    public function 
processBannerForm()
    {
        if ( !
PEEP::getRequest()->isAjax() )
        {
            throw new 
Redirect404Exception();
        }

        
$form $this->getManageForm($_POST['form_name']);

        if ( 
$form->isValid($_POST) )
        {
            
$data $form->getValues();

            switch ( 
$data['form_name'] )
            {
                case 
'top_form':
                    
$position ADS_BOL_Service::BANNER_POSITION_TOP;
                    break;

                case 
'right_form':
                    
$position ADS_BOL_Service::BANNER_POSITION_RIGHT;
                    break;

               case 
'left_form':
                    
$position ADS_BOL_Service::BANNER_POSITION_LEFT;
                    break;

                case 
'bottom_form':
                    
$position ADS_BOL_Service::BANNER_POSITION_BOTTOM;
                    break;
            }

            
$pluginKey trim($data['plugin_key']);

            
$this->adsService->resetBannersForPlugin($position$pluginKey);

            if ( 
$data['banners'] !== null )
            {
                foreach ( 
$data['banners'] as $banner )
                {
                    
$bannerPosition = new ADS_BOL_BannerPosition();
                    
$bannerPosition->setPosition($position);
                    
$bannerPosition->setPluginKey($pluginKey);
                    
$bannerPosition->setBannerId($banner);
                    
$this->adsService->saveBannerPosition($bannerPosition);
                }
            }

            echo 
json_encode(
                array(
                    
'message' => PEEP::getLanguage()->text('ads''ads_manage_add_banners_message'),
                    
'id' => $position '_link',
                    
'html' => PEEP::getLanguage()->text('ads''ads_banners_count_label', array('count' => $this->adsService->findBannersCount($position$pluginKey)))
                )
            );
            exit;
        }
    }
 
    private 
$banners;

    private function 
getManageForm$name )
    {
        if ( 
$this->banners === null )
        {
            
$banners $this->adsService->findAllBanners();
            
$bannerInfo = array();

            foreach ( 
$banners as $banner )
            {
                
                
$this->banners[$banner->getId()] = $banner->getLabel();
            }
        }

        
$form = new Form($name);
        
$form->setAjax(true);
        
$form->setAction(PEEP::getRouter()->urlFor('ADS_CTRL_Admin''processBannerForm'));
        
$form->setAjaxResetOnSuccess(false);
        
$form->bindJsFunction(Form::BIND_SUCCESS"function(data){PEEP.info(data.message);window.adsForm.close();$('#'+data.id).html(data.html);}");

        
$multiCheckbox = new CheckboxGroup('banners');
        
$multiCheckbox->setOptions($this->banners === null ? array() : $this->banners);
        
$form->addElement($multiCheckbox);
        
$submit = new Submit('submit');
        
$submit->setValue(PEEP::getLanguage()->text('ads''banner_position_submit_label'));
        
$form->addElement($submit);
        
$pluginHidden = new HiddenField('plugin_key');
        
$form->addElement($pluginHidden);

        return 
$form;
    }

    private function 
getAdsForm$name )
    {
        
$language PEEP::getLanguage();

        
$form = new Form($name);

        
$title = new TextField('title');
        
$title->setLabel($language->text('ads''ads_add_banner_title_label'));
        
$title->setRequired(true);
        
$form->addElement($title);

        
$bannerCode = new Textarea('code');
        
$bannerCode->setRequired(true);
        
$bannerCode->setLabel($language->text('ads''ads_add_banner_code_label'));
        
$bannerCode->setDescription($language->text('ads''ads_add_banner_code_desc'));
        
$form->addElement($bannerCode);

        if ( 
$this->adsService->getLocationEnabled() )
        {
        
$countSelect = new Multiselect('select_country');
        
$countSelect->setLabel($language->text('ads''ads_add_banner_country_label'));
        
$countSelect->setDescription($language->text('ads''ads_add_banner_country_desc'));
        
$countSelect->setOptions(BOL_GeolocationService::getInstance()->getAllCountryNameListForCC3());
        
$form->addElement($countSelect);
        }
        else
        {
            
$this->assign('locDisabled'true);
        }

        
$submit = new Submit('submit');
        
$submit->setValue($language->text('ads''ads_add_banner_submit_label'));
        
$form->addElement($submit);

        return 
$form;
    }
}
Онлайн: 0
Реклама