<?php
if(!defined("__XE__")) exit();
 
if(Context::get("content")&&strpos(Context::get("act"), "proc")>-1&&$called_position=="before_module_proc")
{
    class mta
    {
        /**
         * @author Lalafell (a.k.a Laighlinne)
         * @brief reset preg_match_all result like C#
         */
        public function match_to_array($a)
        {
            $b = array();
            foreach($a as $key=>$val)
            {
                foreach($val as $k=>$v)
                {
                    $b[$k][$key] = $v;
                }
            }
            return $b;
        }
    }
 
    $mta = new mta();
    $content = Context::get("content");
    $allow = TRUE;
    $class_pattern = array("sound_only", "wfsr", "ui-helper-hidden");
    $style_pattern = array("display"=>"none");
 
    $reg = "/class=\"([^\"]+)\"/im";
    $style_reg = "/style=\"([^\"]+)\"/im";
    preg_match_all($reg, $content, $matches);
    $matches = $mta->match_to_array($matches);
    // using class check
    foreach($matches as $key=>$val) // class
    {
        if(strpos($val[1], " ") > -1)
        {
            $items = explode(" ", $val[1]);
            foreach($items as $v)
            {
                if(in_array($v, $class_pattern))
                {
                    $allow = FALSE;
                }
            }
        }
        else
        {
            if(in_array($val[1], $class_pattern))
            {
                $allow = FALSE;
            }
        }
    }
    preg_match_all($style_reg, $content, $matches);
    $matches = $mta->match_to_array($matches);
 
    // using style check
    foreach($matches as $key=>$val)
    {
        if(strpos($val[1], ";") > -1)
        {
            $items = explode(";", $val[1]);
            foreach($items as $v)
            {
                $styles = explode(":", $v);
                foreach($style_pattern as $rk=>$rv)
                {
                    if($styles[0] == trim($rk) && $styles[1] == trim($rv))
                    {
                        $allow = FALSE;
                    }
                }
            }
        }
        else
        {
            $styles = explode(":", $v);
            foreach($style_pattern as $rk=>$rv)
            {
                if($styles[0] == trim($rk) && $styles[1] == trim($rv))
                {
                    $allow = FALSE;
                }
            }
        }
    }
 
    if(!$allow)
    {
        echo "<msg>작성불가</msg>";
        exit();
    }
}

 

일단 글 몇개 검색해서 해당 내용으로 작성했을때는 안 되는데용...

상황이 다양하다 보니 잘 모르겠네요 작성이 아예 안되게 막습니다.

 

일반 이용자가 글 내에 클래스를 넣을 일도 없고 display:none를 넣을 일이 거의 없어서 아마 문제없이 될거 같네요...

애드온으로 만들어서 넣으시면 됩니다. 배포해도 되는데 음 버전관리가 귀찮은 작품이라서용...

 

일단 마켓에 올려놓겠습니다 ㅋㅋ;

  • profile
    슥삭슥삭 뚝딱 ~~~ 완성 ... 라라펠님은 찍어내는 수준이네요 ㅋㅋ 그냥 부러울 뿐입니다. 저는 코드를 아무리 뜯어봐도 모르겠는뎅 ㅠㅠ
  • ?
    https://xetown.com/rxe_point/926257 에서 받으실 수 있습니다.