Вход Регистрация
Файл: oc-admin/pages.php
Строк: 390
<?php if ( ! defined('ABS_PATH')) exit('ABS_PATH is not loaded. Direct access is not allowed.');

/*
 * Copyright 2014 Osclass
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

    
class CAdminPages extends AdminSecBaseModel
    
{
        
//specific for this class
        
private $pageManager;

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

            
//specific things for this class
            
$this->pageManager Page::newInstance();
        }

        
//Business Layer...
        
function doModel()
        {
            
parent::doModel();

            
//specific things for this class
            
switch($this->action) {
                case 
'edit':
                    if(
Params::getParam("id")=='') {
                        
$this->redirectTo(osc_admin_base_url(true)."?page=pages");
                    }

                    
$form     count(Session::newInstance()->_getForm());
                    
$keepForm count(Session::newInstance()->_getKeepForm());
                    if(
$form == || $form == $keepForm) {
                        
Session::newInstance()->_dropKeepForm();
                    }

                    
$templates osc_apply_filter('page_templates'WebThemes::newInstance()->getAvailableTemplates());
                    
$this->_exportVariableToView('templates'$templates);
                    
$this->_exportVariableToView("page"$this->pageManager->findByPrimaryKey(Params::getParam("id")));
                    
$this->doView("pages/frm.php");
                    break;
                case 
'edit_post':
                    
osc_csrf_check();
                    
$id Params::getParam("id");
                    
$b_link = (Params::getParam("b_link") != '') ? 0;
                    
$s_internal_name Params::getParam("s_internal_name");
                    
$s_internal_name osc_sanitizeString($s_internal_name);

                    
$meta Params::getParam('meta');
                    
$this->pageManager->updateMeta($idjson_encode($meta));

                    
$aFieldsDescription = array();
                    
$postParams Params::getParamsAsArray(''false);
                    
$not_empty false;
                    foreach (
$postParams as $k => $v) {
                        if(
preg_match('|(.+?)#(.+)|'$k$m)) {
                            if(
$m[2]=='s_title' && $v!='') { $not_empty true; };
                            
$aFieldsDescription[$m[1]][$m[2]] = $v;
                        }
                    }
                    
Session::newInstance()->_setForm('aFieldsDescription',$aFieldsDescription);

                    if( 
$s_internal_name == '' ) {
                        
osc_add_flash_error_message(_m('You have to set an internal name'), 'admin');
                        
$this->redirectTo(osc_admin_base_url(true)."?page=pages&action=edit&id=" $id);
                    }

                    if( !
WebThemes::newInstance()->isValidPage($s_internal_name) ) {
                        
osc_add_flash_error_message(_m('You have to set a different internal name'), 'admin');
                        
$this->redirectTo(osc_admin_base_url(true)."?page=pages&action=edit&id=" $id);
                    }
                    
Session::newInstance()->_setForm('s_internal_name',$s_internal_name);

                    if(
$not_empty) {
                        foreach(
$aFieldsDescription as $k => $_data) {
                            
$this->pageManager->updateDescription($id$k$_data['s_title'], $_data['s_text']);
                        }

                        if(!
$this->pageManager->internalNameExists($id$s_internal_name)) {
                            if(!
$this->pageManager->isIndelible($id)) {
                                
$this->pageManager->updateInternalName($id$s_internal_name);
                                
$this->pageManager->updateLink($id,$b_link);
                            }
                            
osc_run_hook('edit_page'$id);
                            
Session::newInstance()->_clearVariables();
                            
osc_add_flash_ok_message(_m('The page has been updated'), 'admin');
                            
$this->redirectTo(osc_admin_base_url(true)."?page=pages");
                        }
                        
osc_add_flash_error_message(_m("You can't repeat internal name"), 'admin');
                    } else {
                        
osc_add_flash_error_message(_m("The page couldn't be updated, at least one title should not be empty"), 'admin');
                    }
                    
$this->redirectTo(osc_admin_base_url(true)."?page=pages&action=edit&id=" $id);
                    break;
                case 
'add':
                    
$form     count(Session::newInstance()->_getForm());
                    
$keepForm count(Session::newInstance()->_getKeepForm());
                    if(
$form == || $form == $keepForm) {
                        
Session::newInstance()->_dropKeepForm();
                    }

                    
$templates osc_apply_filter('page_templates'WebThemes::newInstance()->getAvailableTemplates());
                    
$this->_exportVariableToView('templates'$templates);
                    
$this->_exportVariableToView("page", array());
                    
$this->doView("pages/frm.php");
                    break;
                case 
'add_post':
                    
osc_csrf_check();
                    
$s_internal_name Params::getParam("s_internal_name");
                    
$b_link = (Params::getParam("b_link") != '') ? 0;
                    
$s_internal_name osc_sanitizeString($s_internal_name);

                    
$meta Params::getParam('meta');

                    
$aFieldsDescription = array();
                    
$postParams Params::getParamsAsArray(''false);
                    
$not_empty false;
                    foreach(
$postParams as $k => $v) {
                        if(
preg_match('|(.+?)#(.+)|'$k$m)) {
                            if(
$m[2]=='s_title' && $v!='') {
                                
$not_empty true;
                            }
                            
$aFieldsDescription[$m[1]][$m[2]] = $v;
                        }
                    }
                    
Session::newInstance()->_setForm('aFieldsDescription',$aFieldsDescription);

                    if( 
$s_internal_name == '' ) {
                        
osc_add_flash_error_message(_m('You have to set an internal name'), 'admin');
                        
$this->redirectTo(osc_admin_base_url(true)."?page=pages&action=add");
                    }

                    if( !
WebThemes::newInstance()->isValidPage($s_internal_name) ) {
                        
osc_add_flash_error_message(_m('You have to set a different internal name'), 'admin');
                        
$this->redirectTo(osc_admin_base_url(true)."?page=pages&action=add");
                    }
                    
$aFields = array('s_internal_name' => $s_internal_name'b_indelible' => '0''s_meta' => json_encode($meta), 'b_link' => $b_link);
                    
Session::newInstance()->_setForm('s_internal_name',$s_internal_name);

                    
$page $this->pageManager->findByInternalName($s_internal_name);
                    if(!isset(
$page['pk_i_id'])) {
                        if(
$not_empty) {
                            
$result $this->pageManager->insert($aFields$aFieldsDescription);
                            
Session::newInstance()->_clearVariables();
                            
osc_add_flash_ok_message(_m('The page has been added'), 'admin');
                            
$this->redirectTo(osc_admin_base_url(true)."?page=pages");
                        } else {
                            
osc_add_flash_error_message(_m("The page couldn't be added, at least one title should not be empty"), 'admin');
                        }
                    } else {
                        
osc_add_flash_error_message(_m("Oops! That internal name is already in use. We can't make the changes"), 'admin');
                    }
                    
$this->redirectTo(osc_admin_base_url(true)."?page=pages&action=add");
                    break;
                case 
'delete':
                    
osc_csrf_check();
                    
$id Params::getParam("id");
                    
$page_deleted_correcty 0;
                    
$page_deleted_error 0;
                    
$page_indelible 0;

                    if(!
is_array($id)) {
                        
$id = array($id);
                    }

                    foreach(
$id as $_id) {
                        
$result = (int) $this->pageManager->deleteByPrimaryKey($_id);
                        switch (
$result) {
                            case -
1:
                                
$page_indelible++;
                                break;
                            case 
0:
                                
$page_deleted_error++;
                                break;
                            case 
1:
                                
$page_deleted_correcty++;
                        }
                    }

                    if(
$page_indelible 0) {
                        if(
$page_indelible == 1) {
                            
osc_add_flash_error_message_m("One page can't be deleted because it is indelible"), 'admin');
                        } else {
                            
osc_add_flash_error_message(sprintf(_m("%s pages couldn't be deleted because they are indelible"), $page_indelible), 'admin');
                        }
                    }
                    if(
$page_deleted_error 0) {
                        if(
$page_deleted_error == 1) {
                            
osc_add_flash_error_message(_m("One page couldn't be deleted"), 'admin');
                        } else {
                            
osc_add_flash_error_message(sprintf(_m("%s pages couldn't be deleted"), $page_deleted_error), 'admin');
                        }
                    }
                    if(
$page_deleted_correcty 0) {
                        if(
$page_deleted_correcty == 1) {
                            
osc_add_flash_ok_message(_m('One page has been deleted correctly'), 'admin');
                        } else {
                            
osc_add_flash_ok_message(sprintf(_m('%s pages have been deleted correctly'), $page_deleted_correcty), 'admin');
                        }
                    }
                    
$this->redirectTo(osc_admin_base_url(true) . "?page=pages");
                    break;
                default:

                    if(
Params::getParam("action")!="") {
                        
osc_run_hook("page_bulk_".Params::getParam("action"), Params::getParam('id'));
                    }

                    require_once 
osc_lib_path()."osclass/classes/datatables/PagesDataTable.php";

                    
// set default iDisplayLength
                    
if( Params::getParam('iDisplayLength') != '' ) {
                        
Cookie::newInstance()->push('listing_iDisplayLength'Params::getParam('iDisplayLength'));
                        
Cookie::newInstance()->set();
                    } else {
                        
// set a default value if it's set in the cookie
                        
$listing_iDisplayLength = (int) Cookie::newInstance()->get_value('listing_iDisplayLength');
                        if (
$listing_iDisplayLength == 0$listing_iDisplayLength 10;
                        
Params::setParam('iDisplayLength'$listing_iDisplayLength );
                    }
                    
$this->_exportVariableToView('iDisplayLength'Params::getParam('iDisplayLength'));

                    
// Table header order by related
                    
if( Params::getParam('sort') == '') {
                        
Params::setParam('sort''date');
                    }
                    if( 
Params::getParam('direction') == '') {
                        
Params::setParam('direction''desc');
                    }

                    
$page  = (int)Params::getParam('iPage');
                    if(
$page==0) { $page 1; };
                    
Params::setParam('iPage'$page);

                    
$params Params::getParamsAsArray();

                    
$pagesDataTable = new PagesDataTable();
                    
$pagesDataTable->table($params);
                    
$aData $pagesDataTable->getData();

                    if(
count($aData['aRows']) == && $page!=1) {
                        
$total = (int)$aData['iTotalDisplayRecords'];
                        
$maxPage ceil$total / (int)$aData['iDisplayLength'] );

                        
$url osc_admin_base_url(true).'?'.Params::getServerParam('QUERY_STRING'falsefalse);

                        if(
$maxPage==0) {
                            
$url preg_replace('/&iPage=(d)+/''&iPage=1'$url);
                            
$this->redirectTo($url);
                        }

                        if(
$page 1) {
                            
$url preg_replace('/&iPage=(d)+/''&iPage='.$maxPage$url);
                            
$this->redirectTo($url);
                        }
                    }


                    
$this->_exportVariableToView('aData'$aData);
                    
$this->_exportVariableToView('aRawRows'$pagesDataTable->rawRows());

                    
$bulk_options = array(
                        array(
'value' => '''data-dialog-content' => '''label' => __('Bulk actions')),
                        array(
'value' => 'delete''data-dialog-content' => sprintf(__('Are you sure you want to %s the selected pages?'), strtolower(__('Delete'))), 'label' => __('Delete'))
                    );
                    
$bulk_options osc_apply_filter("page_bulk_filter"$bulk_options);
                    
$this->_exportVariableToView('bulk_options'$bulk_options);

                    
$this->doView("pages/index.php");
                break;
            }
        }

        
//hopefully generic...
        
function doView($file)
        {
            
osc_run_hook("before_admin_html");
            
osc_current_admin_theme_path($file);
            
Session::newInstance()->_clearVariables();
            
osc_run_hook("after_admin_html");
        }
    }

    
/* file end: ./oc-admin/pages.php */
?>
Онлайн: 2
Реклама