Server : Apache
System : Linux iZ2vcgyutqttsd1p850kl8Z 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/saimikebio.com/mobile/ecshopjcw/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/saimikebio.com/mobile/ecshopjcw/edit_languages.php
<?php



/**

 * ECSHOP 管理中心语言项编辑(前台语言项)

 * ============================================================================

 * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。

 * 网站地址: http://www.ecshop.com;

 * ----------------------------------------------------------------------------

 * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和

 * 使用;不允许对程序代码以任何形式任何目的的再发布。

 * ============================================================================

 * $Author: liubo $

 * $Id: edit_languages.php 17217 2011-01-19 06:29:08Z liubo $

 */



define('IN_ECTOUCH', true);



require(dirname(__FILE__) . '/includes/init.php');



/* act操作项的初始化 */

if (empty($_REQUEST['act']))

{

    $_REQUEST['act'] = 'list';

}

else

{

    $_REQUEST['act'] = trim($_REQUEST['act']);

}



admin_priv('lang_edit');



/*------------------------------------------------------ */

//-- 列表编辑 ?act=list

/*------------------------------------------------------ */

if ($_REQUEST['act'] == 'list')

{

    //从languages目录下获取语言项文件

    $lang_arr    = array();

    $lang_path   = '../lang/' .$_CFG['lang'];

    $lang_dir    = @opendir($lang_path);



    while ($file = @readdir($lang_dir))

    {

        if (substr($file, -3) == "php")

        {

            $filename = substr($file, 0, -4);

            $lang_arr[$filename] = $file. ' - ' .@$_LANG['language_files'][$filename];

        }

    }



    ksort($lang_arr);

    @closedir($lang_dir);



    /* 获得需要操作的语言包文件 */

    $lang_file = isset($_POST['lang_file']) ? trim($_POST['lang_file']) : '';

    if ($lang_file == 'common')

    {

        $file_path = '../lang/'.$_CFG['lang'].'/common.php';

    }

    elseif ($lang_file == 'shopping_flow')

    {

        $file_path = '../lang/'.$_CFG['lang'].'/shopping_flow.php';

    }

    else

    {

        $file_path = '../lang/'.$_CFG['lang'].'/user.php';

    }



    $file_attr = '';

    if (file_mode_info($file_path) < 7)

    {

        $file_attr = $lang_file .'.php:'. $_LANG['file_attribute'];

    }



    /* 搜索的关键字 */

    $keyword = !empty($_POST['keyword']) ? trim(stripslashes($_POST['keyword'])) : '';



    /* 调用函数 */

    $language_arr = get_language_item_list($file_path, $keyword);



    /* 模板赋值 */

    $smarty->assign('ur_here',      $_LANG['edit_languages']);

    $smarty->assign('keyword',      $keyword);  //关键字

    $smarty->assign('action_link',  array());

    $smarty->assign('file_attr',    $file_attr);//文件权限

    $smarty->assign('lang_arr',     $lang_arr); //语言文件列表

    $smarty->assign('file_path',    $file_path);//语言文件

    $smarty->assign('lang_file',    $lang_file);//语言文件

    $smarty->assign('language_arr', $language_arr); //需要编辑的语言项列表



    assign_query_info();

    $smarty->display('language_list.htm');

}



/*------------------------------------------------------ */

//-- 编辑语言项

/*------------------------------------------------------ */

elseif ($_REQUEST['act'] == 'edit')

{

    /* 语言项的路径 */

    $lang_file = isset($_POST['file_path']) ? trim($_POST['file_path']) : '';



    /* 替换前的语言项 */

    $src_items = !empty($_POST['item']) ? stripslashes_deep($_POST['item']) : '';



    /* 修改过后的语言项 */

    $dst_items = array();

    $_POST['item_id'] = stripslashes_deep($_POST['item_id']);



    for ($i = 0; $i < count($_POST['item_id']); $i++)

    {

        /* 语言项内容如果为空,不修改 */

        if (trim($_POST['item_content'][$i]) == '')

        {

            unset($src_items[$i]);

        }

        else

        {

            $_POST['item_content'][$i] = str_replace('\\\\n', '\\n', $_POST['item_content'][$i]);

            $dst_items[$i] = $_POST['item_id'][$i] .' = '. '\'' .$_POST['item_content'][$i]. '\';';

        }

    }



    /* 调用函数编辑语言项 */

    $result = set_language_items($lang_file, $src_items, $dst_items);



    if ($result === false)

    {

        /* 修改失败提示信息 */

        $link[] = array('text' => $_LANG['back_list'], 'href' => 'javascript:history.back(-1)');

        sys_msg($_LANG['edit_languages_false'], 0, $link);

    }

    else

    {

        /* 记录管理员操作 */

        admin_log('', 'edit', 'languages');



        /* 清除缓存 */

        clear_cache_files();



        /* 成功提示信息 */

        $link[] = array('text' => $_LANG['back_list'], 'href' => 'edit_languages.php?act=list');

        sys_msg($_LANG['edit_languages_success'], 0, $link);

    }

}



/*------------------------------------------------------ */

//-- 语言项的操作函数

/*------------------------------------------------------ */



/**

 * 获得语言项列表

 * @access  public

 * @exception           如果语言项中包含换行符,将发生异常。

 * @param   string      $file_path   存放语言项列表的文件的绝对路径

 * @param   string      $keyword    搜索时指定的关键字

 * @return  array       正确返回语言项列表,错误返回false

 */

function get_language_item_list($file_path, $keyword)

{

    if (empty($keyword))

    {

        return array();

    }



    /* 获取文件内容 */

    $line_array = file($file_path);

    if (!$line_array)

    {

        return false;

    }

    else

    {

        /* 防止用户输入敏感字符造成正则引擎失败 */

        $keyword = preg_quote($keyword, '/');



        $matches    = array();

        $pattern    = '/\\[[\'|"](.*?)'.$keyword.'(.*?)[\'|"]\\]\\s|=\\s?[\'|"](.*?)'.$keyword.'(.*?)[\'|"];/';

        $regx       = '/(?P<item>(?P<item_id>\\$_LANG\\[[\'|"].*[\'|"]\\])\\s*?=\\s*?[\'|"](?P<item_content>.*)[\'|"];)/';



        foreach ($line_array AS $lang)

        {

            if (preg_match($pattern, $lang))

            {

                $out = array();



                if (preg_match($regx, $lang, $out))

                {

                    $matches[] = $out;

                }

            }

        }



        return $matches;

   }

}



/**

 * 设置语言项

 * @access  public

 * @param   string      $file_path     存放语言项列表的文件的绝对路径

 * @param   array       $src_items     替换前的语言项

 * @param   array       $dst_items     替换后的语言项

 * @return  void        成功就把结果写入文件,失败返回false

 */

function set_language_items($file_path, $src_items, $dst_items)

{

    /* 检查文件是否可写(修改) */

    if (file_mode_info($file_path) < 2)

    {

        return false;

    }



    /* 获取文件内容 */

    $line_array = file($file_path);

    if (!$line_array)

    {

        return false;

    }

    else

    {

        $file_content = implode('', $line_array);

    }



    $snum = count($src_items);

    $dnum = count($dst_items);

    if ($snum != $dnum)

    {

        return false;

    }

    /* 对索引进行排序,防止错位替换 */

    ksort($src_items);

    ksort($dst_items);

    for ($i = 0; $i < $snum; $i++)

    {

        $file_content = str_replace($src_items[$i], $dst_items[$i], $file_content);



    }



    /* 写入修改后的语言项 */

    $f = fopen($file_path, 'wb');

    if (!$f)

    {

        return false;

    }

    if (!fwrite($f, $file_content))

    {

        return false;

    }

    else

    {

        return true;

    }

}



?>