Google+

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rezolvat Se poate face un astfel de plugin
#1
La useri inregistrati noi (1 zi) sa nu li se posteze posturile pina nu le accepta un administrator cum este si moderate posts din acp


Edit: Utilitatea acestui plugin ar fi sa oprim posturile nedorite pe twitter si pe facebook cum am eu sa le publice pe tw si fb cind un post nou este facut
#2
Da se poate si este foarte usor de facut o asemenea modificare. In urmatoarele ore/zile voi face una.
Users : collective term for those who use computers. Users are divided into three types : novice, intermediate and expert.
Novice users : people who are afraid that simply pressing a key might break their computer.
Intermediate users : people who don`t know how to fix their computer after they`ve just pressed a key that broke it.
Expert users : people who break other people`s computers.
#3
mersi mult
#4
Salut. M-am gândit că ar fi mai bine sa fac un tutorial cu această modificare decât să pun un simplu fișier ca atașament. Așa poate vor înțelege mai mulți ce face pluginul și poate, la o adică, să îl modifice așa cum doresc ei.
Va trebui să realizăm un fișier php care va fi plasat în directorul inc/plugins. Conținutul acestuia îl voi prezenta, pas cu pas, în rândurile de mai jos.
Prima secțiune importantă din cadrul oricărei modificări este plasarea unui cod ce ne permite să verificăm dacă nu cumva se încearcă accesarea aplicației din browser. În acest fel ne asigurăm că datele modificării sunt folosite doar de core-ul MyBB. Codul este :

PHP Code:
if(!defined("IN_MYBB")) {
    	die("This file cannot be accessed directly.");
}

Urmează să specificăm cârligele modificării noastre. În cazul de față cârligele nu sunt altceva decât apelul unor funcții, definite de noi, în diferite momente importante ale utilizării platformei MyBB. Concret, va trebui să utilizăm 2 cârlige care să realizeze apelul unor funcții în momentul postării unei replici și a unui mesaj. Acestea sunt :

PHP Code:
$plugins->add_hook('newreply_do_newreply_start', 'moduser_run');
$plugins->add_hook('newthread_do_newthread_start', 'moduser_run');

Funcția apelată trebuie să fie moduser_run. Corpul funcției îl vom discuta la finalul acestui tutorial.
La pasul următor creăm funcția care întoarce informațiile despre modificare și le afișează pe pagina Plugins din Admin CP. Ea va întoarce un vector cu numele, versiunea, compatibilitatea și detaliile celui care a realizat pluginul. Un exemplu poate fi văzut mai jos :

PHP Code:
1
2
3
4
5
6
7
8
9
10
11
function moduser_info()
{
	return array(
		'name' => 'Modereaza mesajelor unor utilizatori',
                'description' => 'Aceasta modificare permite moderarea unor mesaje.',
		'website' => 'http://www.mybb.ro',
		'author' => 'Surdeanu Mihai',
		'authorsite'	=> 'http://www.mybb.ro',
		'version' => '1.0'
	);
}

Mai departe va trebui să scriem funcțiile de activare și dezactivare a modificării. M-am gândit să fac această modificare cu 3 setări. Prima va permite introducerea unui număr de posturi până când autorul unui mesaj necesită aprobarea unui moderator pentru ca mesajul său să apară pe forum. A doua setare îți va da posibilitatea de a introduce numărul de zile minime trecute de la înregistrarea unui user după care el poate posta, iar mesajul să apară imediat pe forum. În fine ultima setare va permite să specifici id-urile forumurilor unde va funcționa această restricție. Funcția de activare va arata astfel :

PHP Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function moduser_activate()
{
        global $db, $mybb;
        // se defineste grupul de setari
	$group = array(
		"gid"	=> "NULL",
		"name" => "moduser",
		"title" => "Setarile modificarii \"Modereaza mesajelor unor utilizatori\"",
		"description" => "Seteaza modificarea asa cum doresti!",
		"disporder"	 => "1",
		"isdefault" => "no",
	);
        // se introduce grupul in baza de date
	$db->insert_query("settinggroups", $group);
	$gid = $db->insert_id();
        // se definesc setarile modificarii
	$setting = array(
		"sid" => "NULL",
		'name' => 'moduser_setting_postnum',
		'title'	=> 'Numar de posturi minime :',
		'description' => 'Cate mesaje aprobate trebuie sa aiba un membru pentru a putea posta fara aprobare?',
		'optionscode' => 'text',
		'value' => '1',
		'disporder'	=> '1',
		'gid' => intval($gid),
	);
        // se introduce setarea in baza de date
	$db->insert_query('settings', $setting);
	// se defineste o noua setare
	$setting = array(
		"sid"	=> "NULL",
		'name' => 'moduser_setting_time',
		'title'	=> 'Perioada de timp :',
		'description' => 'Ce perioada de timp (in zile) trebuie sa se scurga de la inregistrarea unui membru pentru ca acesta sa posteze fara a necesita aprobarea mesajului?',
		'optionscode' => 'text',
		'value' => '1',
		'disporder'	=> '2',
		'gid' => intval($gid),
	);
        // se introduce setarea in baza de date
	$db->insert_query('settings', $setting);
	// se defineste o noua setare
	$setting = array(
		"sid"	=> "NULL",
		'name' => 'moduser_setting_forums',
		'title'	=> 'Forumurile in care va fi activ acest plugin :',
		'description' => 'Introdu id-urile forumurilor in care doresti ca acest plugin sa isi faca treaba. Poti utiliza virgula ca si separator dintre doua id-uri de forumuri.',
		'optionscode' => 'text',
		'value' => '',
		'disporder'	=> '3',
		'gid' => intval($gid),
	);
        // se introduce setarea in baza de date
	$db->insert_query('settings', $setting);
	// se reconstruiesc toate setarile
	rebuild_settings();
}

În momentul dezactivării modificării se va apela funcția de mai jos : (ea permite ștergerea grupului de setări și a celor 3 setări create de funcția de mai sus!)

PHP Code:
1
2
3
4
5
6
7
8
9
function moduser_deactivate()
{
        global $db, $mybb;
        // se sterge grupul de setari definit mai sus
        $db->delete_query("settinggroups","name='moduser'");
	$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name LIKE 'moduser_setting_%'");
	// se reconstruiesc setarile
	rebuild_settings();
}

Și iată că am ajuns și la ultima funcție a modificării. Ea este și cea mai importantă.

PHP Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function moduser_run() 
{
    global $mybb, $fid;
    // se construieste un vector cu id-urile forumurilor specificate de admin
    $forums = explode(',', $mybb->settings['moduser_setting_forums']);
    if (function_exists('date_default_timezone_set')) {
        date_default_timezone_set('UTC');
        // se da timpul inapoi cu un numar de x zile
        $interval = "-".intval($mybb->settings['moduser_setting_time'])." day";
        $min_time = strtotime($interval, TIME_NOW);
    }
    else {
        // daca nu exista functia atunci modulul nu functioneaza
        $min_time = 0;
    }
    // este restrictionat userul?
    if((intval($mybb->settings['moduser_setting_postnum']) > $mybb->user['postnum'] || $min_time < $mybb->user['regdate']) && in_array($fid, $forums))
    {
        // atunci userul e restrictionat si posturile sale necesita moderare
        $mybb->user['moderateposts'] = 1;
    }
}

Aș dori să mai fac niște precizări. Dacă doriți să nu realizați verificarea pentru numărul de posturi (prima setare) atunci va trebui să o completați cu 0, adică să aibă valoarea 0, iar dacă nu doriți să utilizați a doua verificare atunci va trebui să introduceți valoarea 0 pentru setarea cu numărul 2. Condiția de test (acel if din ultima funcție) vă permite să realizați concomitent teste pentru ambele setări. În cazul în care cel puțin una este îndeplinită atunci mesajul userului va necesita aprobare.
Modificarea nu am testat-o, dar ar trebui să meargă fără probleme. Numele fișierului modificării va trebui să fie moduser.php, iar conținutul său va fi format din toate porțiunile de cod afișate în acest mesaj, adăugate exact în ordinea prezentată aici.
Pentru probleme/ sugestii vă rog să postați aici o replică. Vă mulțumesc pentru înțelegerea acordată.

Users : collective term for those who use computers. Users are divided into three types : novice, intermediate and expert.
Novice users : people who are afraid that simply pressing a key might break their computer.
Intermediate users : people who don`t know how to fix their computer after they`ve just pressed a key that broke it.
Expert users : people who break other people`s computers.
#5
Sa o luam ca la prosti (eu sunt in materie de script php) asta este pluginul ?

PHP Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
if(!defined("IN_MYBB")) {
    	die("This file cannot be accessed directly.");
}
$plugins->add_hook('newreply_do_newreply_start', 'moduser_run');
$plugins->add_hook('newthread_do_newthread_start', 'moduser_run');

function moduser_info()
{
	return array(
		'name' => 'Modereaza mesajelor unor utilizatori',
                'description' => 'Aceasta modificare permite moderarea unor mesaje.',
		'website' => 'http://www.mybb.ro',
		'author' => 'Surdeanu Mihai',
		'authorsite'	=> 'http://www.mybb.ro',
		'version' => '1.0'
	);
}
function moduser_activate()
{
        global $db, $mybb;
        // se defineste grupul de setari
	$group = array(
		"gid"	=> "NULL",
		"name" => "moduser",
		"title" => "Setarile modificarii \"Modereaza mesajelor unor utilizatori\"",
		"description" => "Seteaza modificarea asa cum doresti!",
		"disporder"	 => "1",
		"isdefault" => "no",
	);
        // se introduce grupul in baza de date
	$db->insert_query("settinggroups", $group);
	$gid = $db->insert_id();
        // se definesc setarile modificarii
	$setting = array(
		"sid" => "NULL",
		'name' => 'moduser_setting_postnum',
		'title'	=> 'Numar de posturi minime :',
		'description' => 'Cate mesaje aprobate trebuie sa aiba un membru pentru a putea posta fara aprobare?',
		'optionscode' => 'text',
		'value' => '1',
		'disporder'	=> '1',
		'gid' => intval($gid),
	);
        // se introduce setarea in baza de date
	$db->insert_query('settings', $setting);
	// se defineste o noua setare
	$setting = array(
		"sid"	=> "NULL",
		'name' => 'moduser_setting_time',
		'title'	=> 'Perioada de timp :',
		'description' => 'Ce perioada de timp (in zile) trebuie sa se scurga de la inregistrarea unui membru pentru ca acesta sa posteze fara a necesita aprobarea mesajului?',
		'optionscode' => 'text',
		'value' => '1',
		'disporder'	=> '2',
		'gid' => intval($gid),
	);
        // se introduce setarea in baza de date
	$db->insert_query('settings', $setting);
	// se defineste o noua setare
	$setting = array(
		"sid"	=> "NULL",
		'name' => 'moduser_setting_forums',
		'title'	=> 'Forumurile in care va fi activ acest plugin :',
		'description' => 'Introdu id-urile forumurilor in care doresti ca acest plugin sa isi faca treaba. Poti utiliza virgula ca si separator dintre doua id-uri de forumuri.',
		'optionscode' => 'text',
		'value' => '',
		'disporder'	=> '3',
		'gid' => intval($gid),
	);
        // se introduce setarea in baza de date
	$db->insert_query('settings', $setting);
	// se reconstruiesc toate setarile
	rebuild_settings();
}
function moduser_deactivate()
{
        global $db, $mybb;
        // se sterge grupul de setari definit mai sus
        $db->delete_query("settinggroups","name='moduser'");
	$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name LIKE 'moduser_setting_%'");
	// se reconstruiesc setarile
	rebuild_settings();
}
function moduser_run() 
{
    global $mybb, $fid;
    // se construieste un vector cu id-urile forumurilor specificate de admin
    $forums = explode(',', $mybb->settings['moduser_setting_forums']);
    if (function_exists('date_default_timezone_set')) {
        date_default_timezone_set('UTC');
        // se da timpul inapoi cu un numar de x zile
        $interval = "-".intval($mybb->settings['moduser_setting_time'])." day";
        $min_time = strtotime($interval, TIME_NOW);
    }
    else {
        // daca nu exista functia atunci modulul nu functioneaza
        $min_time = 0;
    }
    // este restrictionat userul?
    if((intval($mybb->settings['moduser_setting_postnum']) > $mybb->user['postnum'] || $min_time < $mybb->user['regdate']) && in_array($fid, $forums))
    {
        // atunci userul e restrictionat si posturile sale necesita moderare
        $mybb->user['moderateposts'] = 1;
    }
}


eu vreau ca in momentul in care se inregistreaza un user nou sa puna posturile in Moderation Queue (pentru cateva zile daca este sau cu posibilitatea sa il scot eu moderation queue in momentul in care vad ca nu este vreun bot cu porno....)

Si nu in ultimul rand multumesc mult de plugin si de timpul acordat

#6
Modificarea facea ceea ce ai dorit tu in primul post si mai mult decat atat iti ofera posibilitatea sa setezi si un numar de mesaje pe care trebuie sa il aiba userul.
Multumesc pentru idee si sper ca nu exista probleme in administrarea lui!
Users : collective term for those who use computers. Users are divided into three types : novice, intermediate and expert.
Novice users : people who are afraid that simply pressing a key might break their computer.
Intermediate users : people who don`t know how to fix their computer after they`ve just pressed a key that broke it.
Expert users : people who break other people`s computers.
#7
Eu vreau sa le dau eu accept la posturi la useri noi pentru 2-3 zile dau la 2,3 posturi dupa aia poate sa scrie fara aprobarea mea este buna sursa asa cum am puso eu ?
#8
Da e buna sursa!
Users : collective term for those who use computers. Users are divided into three types : novice, intermediate and expert.
Novice users : people who are afraid that simply pressing a key might break their computer.
Intermediate users : people who don`t know how to fix their computer after they`ve just pressed a key that broke it.
Expert users : people who break other people`s computers.
#9
multumesc mult de tot si revin cu un replay daca este vreo problema sau nu
#10
asta imi da cind dau pe plugin

Plugins
Plugin Updates
Browse Plugins

This section allows you to activate, deactivate, and manage the plugins that you have uploaded to your forum's inc/plugins directory. To hide a plugin from view, but not lose any stored information from it, click the Deactivate link.
if(!defined("IN_MYBB")) { die("This file cannot be accessed directly."); } $plugins->add_hook('newreply_do_newreply_start', 'moduser_run'); $plugins->add_hook('newthread_do_newthread_start', 'moduser_run'); function moduser_info() { return array( 'name' => 'Modereaza mesajelor unor utilizatori', 'description' => 'Aceasta modificare permite moderarea unor mesaje.', 'website' => 'http://www.mybb.ro', 'author' => 'Surdeanu Mihai', 'authorsite' => 'http://www.mybb.ro', 'version' => '1.0' ); } function moduser_activate() { global $db, $mybb; // se defineste grupul de setari $group = array( "gid" => "NULL", "name" => "moduser", "title" => "Setarile modificarii \"Modereaza mesajelor unor utilizatori\"", "description" => "Seteaza modificarea asa cum doresti!", "disporder" => "1", "isdefault" => "no", ); // se introduce grupul in baza de date $db->insert_query("settinggroups", $group); $gid = $db->insert_id(); // se definesc setarile modificarii $setting = array( "sid" => "NULL", 'name' => 'moduser_setting_postnum', 'title' => 'Numar de posturi minime :', 'description' => 'Cate mesaje aprobate trebuie sa aiba un membru pentru a putea posta fara aprobare?', 'optionscode' => 'text', 'value' => '1', 'disporder' => '1', 'gid' => intval($gid), ); // se introduce setarea in baza de date $db->insert_query('settings', $setting); // se defineste o noua setare $setting = array( "sid" => "NULL", 'name' => 'moduser_setting_time', 'title' => 'Perioada de timp :', 'description' => 'Ce perioada de timp (in zile) trebuie sa se scurga de la inregistrarea unui membru pentru ca acesta sa posteze fara a necesita aprobarea mesajului?', 'optionscode' => 'text', 'value' => '1', 'disporder' => '2', 'gid' => intval($gid), ); // se introduce setarea in baza de date $db->insert_query('settings', $setting); // se defineste o noua setare $setting = array( "sid" => "NULL", 'name' => 'moduser_setting_forums', 'title' => 'Forumurile in care va fi activ acest plugin :', 'description' => 'Introdu id-urile forumurilor in care doresti ca acest plugin sa isi faca treaba. Poti utiliza virgula ca si separator dintre doua id-uri de forumuri.', 'optionscode' => 'text', 'value' => '', 'disporder' => '3', 'gid' => intval($gid), ); // se introduce setarea in baza de date $db->insert_query('settings', $setting); // se reconstruiesc toate setarile rebuild_settings(); } function moduser_deactivate() { global $db, $mybb; // se sterge grupul de setari definit mai sus $db->delete_query("settinggroups","name='moduser'"); $db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE name LIKE 'moduser_setting_%'"); // se reconstruiesc setarile rebuild_settings(); } function moduser_run() { global $mybb, $fid; // se construieste un vector cu id-urile forumurilor specificate de admin $forums = explode(',', $mybb->settings['moduser_setting_forums']); if (function_exists('date_default_timezone_set')) { date_default_timezone_set('UTC'); // se da timpul inapoi cu un numar de x zile $interval = "-".intval($mybb->settings['moduser_setting_time'])." day"; $min_time = strtotime($interval, TIME_NOW); } else { // daca nu exista functia atunci modulul nu functioneaza $min_time = 0; } // este restrictionat userul? if((intval($mybb->settings['moduser_setting_postnum']) > $mybb->user['postnum'] || $min_time < $mybb->user['regdate']) && in_array($fid, $forums)) { // atunci userul e restrictionat si posturile sale necesita moderare $mybb->user['moderateposts'] = 1; } }

am pus exact ce ti-am pus eu mai sus


Forum Jump:


Users browsing this thread: 1 Guest(s)