Перейти к содержимому


Фотография
- - - - -

Изменить скрипт Хайд для ipb


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 26

#1 Онлайн   usergeuv

    Пользователь


  • Пользователи
  • Репутация
    1
    • Cообщений: 35
    • Форум:3.3.х
    • Город:Винница

Отправлено 05 Июль 2013 - 18:29

Что сюда и куда дописать чтобы было - ''текст доступен только пользователям, набравшим ''n'' количество спасибок''
Имеется хук Ajax Thanks


<?php

if ( ! defined( 'IN_IPB' ) )
{
    print "<h1>Incorrect access</h1>You cannot access this file directly. If you have recently upgraded, make sure you upgraded all the relevant files.";
    exit();
}

class public_forums_ajax_ritsu_hide_text extends ipsAjaxCommand
{


    public function doExecute( ipsRegistry $registry )
    {

$this->registry = ipsRegistry::instance();

        $this->settings['no_print_header'] = 0;

    
        switch( $this->request['do'] )
        {
            case 'load_data':
                return $this->loadData();
             break;
            default:
$this->returnJsonError( 'no_permission' );
             break;
        }

    }

    private function loadData( )
    {

$error = true;

if(isset($_POST["dataset"]))
{

$in = explode(".", $_POST["dataset"]);

$keys = array();

while(list($key, $val) = each($in))

if (preg_match("/^[0-9a-z]+$/D", $val))

$keys[] = $val;


if(sizeof($keys) > 0)
{

$this->DB->build( array(
'select'    => "r.*",
'from'        => array('ritsu_hide_text' => 'r'),
'where'     => 'r.key IN ("'.implode('","', $keys).'")'
)    );

$query = $this->DB->execute();

$response = array( );

while($block = $this->DB->fetch($query))
{

$conditions = unserialize( $block["condition"] );

$allow = true; $why = array( );


// -------------------------------------------------------------------------------------------------------------------------------
// AUTH

if($conditions["auth"] != "0" && $this->memberData['member_id'] == 0)
{
$allow = false;
$why[] = "текст доступен только авторизованным пользователям;";
}

// -------------------------------------------------------------------------------------------------------------------------------
// NICK


if( !(in_array("any", $conditions["nick"])) && !(in_array($this->memberData['member_id'], $conditions["nick"])) )
{

$allowed = array( );

$this->DB->build( array(
                     'select' => "m.name",
             'from' => array('members' => 'm'),
                     'where'    => 'member_id IN("'.implode('", "', $conditions["nick"]).'")'
         )    );        

$subquery = $this->DB->execute();

while($member = $this->DB->fetch($subquery))
{

$allowed[] = htmlspecialchars($member["name"]);

}

$allow = false;
$why[] = "текст доступен только пользователям с никами: <b>".implode(", ", $allowed)."</b>;";
}

// -------------------------------------------------------------------------------------------------------------------------------
// THANK & REPLY


if($conditions["thank"] != "0" || $conditions["reply"] != "0")
{

if($this->memberData['member_id'] == 0)
{

$allow = false;

if($conditions["thank"] != "0")

$why[] = "текст доступен только авторизованным пользователям, поставившим автору плюс в репутацию за данное сообщение;<br />";

if($conditions["reply"] != "0")

$why[] = "текст доступен только авторизованным пользователям, ответившим в данную тему;<br />";

}

$pid = $this->fetchPID( $block["key"] );


if($pid == 0)
{

$allow = false;
$why[] = "скрытый текст не доступен в данной форме отображения, перейдите к просмотру темы с этим сообщением;<br />";

} else {

$author = $this->fetchAuthor( $pid );

if($this->memberData['member_id'] != $author && $this->memberData['member_id'] > 0)

if($conditions["thank"] != "0")
{

$this->DB->build( array(
                     'select' => "r.id",
             'from' => array('reputation_index' => 'r'),
                     'where'    => 'r.app = "forums" AND r.type = "pid" AND r.rep_rating = "1" AND r.type_id = "'.$pid.'" AND r.member_id = "'.$this->memberData['member_id'].'"'
         )    );        

$subquery = $this->DB->execute();



if($rep = $this->DB->fetch($subquery))
{

} else {

$allow = false;
$why[] = "текст доступен только пользователям, поставившим автору плюс в репутацию за данное сообщение;<br />";

}

}

if($this->memberData['member_id'] != $author && $this->memberData['member_id'] > 0)

if($conditions["reply"] != "0")
{

$this->DB->build( array(
                     'select' => "p.*",
             'from' => array('posts' => 'p'),
                     'where'    => 'p.pid = "'.$pid.'"'
         )    );        

$subquery = $this->DB->execute();

if($post = $this->DB->fetch($subquery))
{


$this->DB->build( array(
                     'select' => "p.topic_id",
             'from' => array('posts' => 'p'),
                     'where'    => 'p.topic_id = "'.$post['topic_id'].'" AND p.post_date > "'.$post["post_date"].'"'
         )    );        

$subquery = $this->DB->execute();

if(!($rep = $this->DB->fetch($subquery)))
{

$allow = false;
$why[] = "текст доступен только пользователям, ответившим в данную тему;<br />";

}


} else {

$allow = false;
$why[] = "сообщение потерялось;<br />";

}



}

}

}

// -------------------------------------------------------------------------------------------------------------------------------
// rep

if($conditions["rep"] != "0")
{

if($this->memberData['member_id'] == 0)
{

$allow = false;
$why[] = "текст доступен только пользователям, набравшим ".$conditions["rep"]." баллов репутации;";

} else {

if($this->memberData['pp_reputation_points'] < $conditions["rep"])
{

$allow = false;
$why[] = "текст доступен только пользователям, набравшим ".$conditions["rep"]." баллов репутации;";

}

}

}


// -------------------------------------------------------------------------------------------------------------------------------
// posts

if($conditions["posts"] != "0")
{

if($this->memberData['member_id'] == 0)
{

$allow = false;
$why[] = "текст доступен только пользователям, оставившим больше ".$conditions["posts"]." сообщений на форуме;";

} else {

if($this->memberData['posts'] < $conditions["posts"])
{

$allow = false;
$why[] = "текст доступен только пользователям, оставившим больше ".$conditions["posts"]." сообщений на форуме;";

}

}

}



// -------------------------------------------------------------------------------------------------------------------------------
// group

if( !(in_array("any", $conditions["group"])) && !(in_array($this->memberData['member_group_id'], $conditions["nick"])) )
{

$allowed = array( );

$this->DB->build( array(
                     'select' => "g.g_title",
             'from' => array('groups' => 'g'),
                     'where'    => 'lower(g.g_id) IN("'.implode('", "', $conditions["group"]).'")'
         )    );        

$subquery = $this->DB->execute();

while($group = $this->DB->fetch($subquery))
{

$allowed[] = htmlspecialchars($group["g_title"]);

}

$allow = false;
$why[] = "текст доступен только пользователям из групп: <b>".implode(", ", $allowed)."</b>;";
}



/*
$condition = array (
'auth' => '1', //
'thank' => '0', //
'rep' => '0', //
'reply' => '0', //
'posts' => '0', //
'group' => '0',
'nick' => array('any') //
);
*/ if($allow)
{

                                    IPSText::getTextClass( 'bbcode' )->parse_smilies            = 1;
                                    IPSText::getTextClass( 'bbcode' )->parse_html                 = 0;
                                    IPSText::getTextClass( 'bbcode' )->parse_nl2br                = 0;
                                    IPSText::getTextClass( 'bbcode' )->parse_bbcode                = 1;
                                    IPSText::getTextClass( 'bbcode' )->parsing_section        = 'topics';
                                    IPSText::getTextClass( 'bbcode' )->parsing_mgroup            = $this->memberdata['member_group_id'];
                                    IPSText::getTextClass( 'bbcode' )->parsing_mgroup_others    = $this->memberData['mgroup_others'];

                                    $block["data"] = IPSText::getTextClass( 'bbcode' )->preDisplayParse( $block["data"] );

$response[$block["key"]] = $block["data"];

} else {

$response[$block["key"]] = "<p>Необходимо выполнить следующие условия:</p><ul class='bbcol decimal'><li>".implode("</li><li>", $why)."</li></ul>";

}

}

if(sizeof($response) > 0)
{
$error = false;

$this->returnJsonArray( $response );

}

}

}

if($error) $this->returnJsonError( 'no_permission' );

    }

    private function fetchPID( $key )
    {

$string = "<div class='ristu_hide_text' id='hide_{$key}'";

$this->DB->build( array(
'select' => "c.cache_content_id",
'from' => array('content_cache_posts' => 'c'),
'where'    => 'c.cache_content LIKE "%'.$string.'%"'
)    );        

$subquery = $this->DB->execute();

if($post = $this->DB->fetch($subquery))
{

return $post["cache_content_id"];

} else

return 0;

}


    private function fetchAuthor( $pid )
    {


$this->DB->build( array(
'select' => "p.author_id",
'from' => array('posts' => 'p'),
'where'    => 'p.pid = "'.$pid.'"'
)    );        

$subquery = $this->DB->execute();

if($post = $this->DB->fetch($subquery))
{

return $post["author_id"];

} else

return 0;

}

}

Прикрепляю сам файл Хайда

Прикрепленные файлы

  • Прикрепленный файл  Hide.rar   8,88К    скачиваний 15

Сообщение отредактировал usergeuv: 05 Июль 2013 - 18:30

  • 0

#2 Оффлайн   Санек_1996

    Пользователь


  • Пользователи
  • Репутация
    4
    • Cообщений: 46
    • Форум:3.4.х

Отправлено 05 Июль 2013 - 19:03

Такие вещи под спойлер кидать надо...

Щас гляну


  • 0

#3 Оффлайн   Санек_1996

    Пользователь


  • Пользователи
  • Репутация
    4
    • Cообщений: 46
    • Форум:3.4.х

Отправлено 05 Июль 2013 - 19:08

$why[] = "текст доступен только пользователям, набравшим ".$conditions["rep"]." баллов репутации;";

Ищите это, и заменяйте на что хотите. 

 

: Найдется 2 строки, изменяйте обе!


Сообщение отредактировал Санек_1996: 05 Июль 2013 - 19:10

  • 0

#4 Онлайн   usergeuv

    Пользователь


  • Пользователи
  • Репутация
    1
    • Cообщений: 35
    • Форум:3.3.х
    • Город:Винница

Отправлено 05 Июль 2013 - 19:16

$why[] = "текст доступен только пользователям, набравшим ".$conditions["rep"]." баллов репутации;";

Ищите это, и заменяйте на что хотите. 

 

: Найдется 2 строки, изменяйте обе!

 

И что после єтого в тегах хайд писать


  • 0

#5 Онлайн   usergeuv

    Пользователь


  • Пользователи
  • Репутация
    1
    • Cообщений: 35
    • Форум:3.3.х
    • Город:Винница

Отправлено 05 Июль 2013 - 19:34

$why[] = "текст доступен только пользователям, набравшим ".$conditions["rep"]." баллов репутации;";

Ищите это, и заменяйте на что хотите. 

 

: Найдется 2 строки, изменяйте обе!

 

Если можно поподробней!! Как он будет работать с Ajax Thanks. Что куда вставлять? Помогите Вставьте готовый измененный скрипт. Заранее спасибо 


  • 0

#6 Оффлайн   киссc

    Пользователь


  • Пользователи
  • Репутация
    8
    • Cообщений: 32
    • Форум:3.4.х
    • Город:http://bothack.ru

Отправлено 06 Июль 2013 - 01:17

Ребята тож очень нужна эта функция хайда.Помогите


  • 0

#7 Онлайн   usergeuv

    Пользователь


  • Пользователи
  • Репутация
    1
    • Cообщений: 35
    • Форум:3.3.х
    • Город:Винница

Отправлено 07 Июль 2013 - 01:45

Некому помочь?? Я думаю все такой хук хотят!! Будет работать- сразу выложу на http://ipbzona.ru


  • 0

#8 Онлайн   usergeuv

    Пользователь


  • Пользователи
  • Репутация
    1
    • Cообщений: 35
    • Форум:3.3.х
    • Город:Винница

Отправлено 07 Июль 2013 - 23:32

Разве тут нет экспертов ?


  • -1

#9 Онлайн   usergeuv

    Пользователь


  • Пользователи
  • Репутация
    1
    • Cообщений: 35
    • Форум:3.3.х
    • Город:Винница

Отправлено 13 Июль 2013 - 11:19

Помощи нет ,только минусуют. Техподдержка никакая 


  • 0

#10 Оффлайн   Law AC vs. Finch

    Гуру


  • Пользователи
  • Репутация
    890
    • Cообщений: 3 004
    • Форум:Нет

Отправлено 13 Июль 2013 - 11:47

Лично мне этот хайд вообще не упирается.
Прятать от юзера инфу - себе дороже?

Техподдержка никакая

Так никто Вам тут ни чем не обязан. Вы даже не удосужились указать ссылку на хук "Ajax Thanks". Лично мне известно 2 таких хука от разных разработчиков.
Предоставьте доступ в АЦ, чтобы можно было посмотреть данные, тогда и помогу.
  • 0