Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gnu-social
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
194
Issues
194
List
Boards
Labels
Milestones
Merge Requests
12
Merge Requests
12
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gnu.io
gnu-social
Commits
69722257
Commit
69722257
authored
Mar 25, 2010
by
Evan Prodromou
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'blacklisttable' into testing
parents
920acf8d
6e644f77
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
437 additions
and
33 deletions
+437
-33
plugins/Blacklist/BlacklistPlugin.php
plugins/Blacklist/BlacklistPlugin.php
+51
-10
plugins/Blacklist/Homepage_blacklist.php
plugins/Blacklist/Homepage_blacklist.php
+189
-0
plugins/Blacklist/Nickname_blacklist.php
plugins/Blacklist/Nickname_blacklist.php
+180
-0
plugins/Blacklist/blacklistadminpanel.php
plugins/Blacklist/blacklistadminpanel.php
+17
-23
No files found.
plugins/Blacklist/BlacklistPlugin.php
View file @
69722257
...
...
@@ -62,13 +62,56 @@ class BlacklistPlugin extends Plugin
{
$confNicknames
=
$this
->
_configArray
(
'blacklist'
,
'nicknames'
);
$dbNicknames
=
Nickname_blacklist
::
getPatterns
();
$this
->
_nicknamePatterns
=
array_merge
(
$this
->
nicknames
,
$confNicknames
);
$confNicknames
,
$dbNicknames
);
$confURLs
=
$this
->
_configArray
(
'blacklist'
,
'urls'
);
$dbURLs
=
Homepage_blacklist
::
getPatterns
();
$this
->
_urlPatterns
=
array_merge
(
$this
->
urls
,
$confURLs
);
$confURLs
,
$dbURLs
);
}
/**
* Database schema setup
*
* @return boolean hook value
*/
function
onCheckSchema
()
{
$schema
=
Schema
::
get
();
// For storing blacklist patterns for nicknames
$schema
->
ensureTable
(
'nickname_blacklist'
,
array
(
new
ColumnDef
(
'pattern'
,
'varchar'
,
255
,
false
,
'PRI'
),
new
ColumnDef
(
'created'
,
'datetime'
,
null
,
false
)));
$schema
->
ensureTable
(
'homepage_blacklist'
,
array
(
new
ColumnDef
(
'pattern'
,
'varchar'
,
255
,
false
,
'PRI'
),
new
ColumnDef
(
'created'
,
'datetime'
,
null
,
false
)));
return
true
;
}
/**
...
...
@@ -280,6 +323,10 @@ class BlacklistPlugin extends Plugin
{
switch
(
strtolower
(
$cls
))
{
case
'nickname_blacklist'
:
case
'homepage_blacklist'
:
include_once
INSTALLDIR
.
'/plugins/Blacklist/'
.
ucfirst
(
$cls
)
.
'.php'
;
return
false
;
case
'blacklistadminpanelaction'
:
$base
=
strtolower
(
mb_substr
(
$cls
,
0
,
-
6
));
include_once
INSTALLDIR
.
'/plugins/Blacklist/'
.
$base
.
'.php'
;
...
...
@@ -391,20 +438,14 @@ class BlacklistPlugin extends Plugin
function
onEndDeleteUser
(
$action
,
$user
)
{
common_debug
(
"Action args: "
.
print_r
(
$action
->
args
,
true
));
if
(
$action
->
boolean
(
'blacklisthomepage'
))
{
$pattern
=
$action
->
trimmed
(
'blacklisthomepagepattern'
);
$confURLs
=
$this
->
_configArray
(
'blacklist'
,
'urls'
);
$confURLs
[]
=
$pattern
;
Config
::
save
(
'blacklist'
,
'urls'
,
implode
(
"
\r\n
"
,
$confURLs
));
Homepage_blacklist
::
ensurePattern
(
$pattern
);
}
if
(
$action
->
boolean
(
'blacklistnickname'
))
{
$pattern
=
$action
->
trimmed
(
'blacklistnicknamepattern'
);
$confNicknames
=
$this
->
_configArray
(
'blacklist'
,
'nicknames'
);
$confNicknames
[]
=
$pattern
;
Config
::
save
(
'blacklist'
,
'nicknames'
,
implode
(
"
\r\n
"
,
$confNicknames
));
Nickname_blacklist
::
ensurePattern
(
$pattern
);
}
return
true
;
...
...
plugins/Blacklist/Homepage_blacklist.php
0 → 100644
View file @
69722257
<?php
/**
* Data class for homepage blacklisting
*
* PHP version 5
*
* @category Data
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if
(
!
defined
(
'STATUSNET'
))
{
exit
(
1
);
}
require_once
INSTALLDIR
.
'/classes/Memcached_DataObject.php'
;
/**
* Data class for Homepage blacklist
*
* @category Action
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*
* @see DB_DataObject
*/
class
Homepage_blacklist
extends
Memcached_DataObject
{
public
$__table
=
'homepage_blacklist'
;
// table name
public
$pattern
;
// string pattern
public
$created
;
// datetime
/**
* Get an instance by key
*
* This is a utility method to get a single instance with a given key value.
*
* @param string $k Key to use to lookup (usually 'user_id' for this class)
* @param mixed $v Value to lookup
*
* @return Homepage_blacklist object found, or null for no hits
*
*/
function
staticGet
(
$k
,
$v
=
null
)
{
return
Memcached_DataObject
::
staticGet
(
'Homepage_blacklist'
,
$k
,
$v
);
}
/**
* return table definition for DB_DataObject
*
* DB_DataObject needs to know something about the table to manipulate
* instances. This method provides all the DB_DataObject needs to know.
*
* @return array array of column definitions
*/
function
table
()
{
return
array
(
'pattern'
=>
DB_DATAOBJECT_STR
+
DB_DATAOBJECT_NOTNULL
,
'created'
=>
DB_DATAOBJECT_STR
+
DB_DATAOBJECT_DATE
+
DB_DATAOBJECT_TIME
+
DB_DATAOBJECT_NOTNULL
);
}
/**
* return key definitions for DB_DataObject
*
* DB_DataObject needs to know about keys that the table has; this function
* defines them.
*
* @return array key definitions
*/
function
keys
()
{
return
array
(
'pattern'
=>
'K'
);
}
/**
* return key definitions for Memcached_DataObject
*
* Our caching system uses the same key definitions, but uses a different
* method to get them.
*
* @return array key definitions
*/
function
keyTypes
()
{
return
$this
->
keys
();
}
/**
* Return a list of patterns to check
*
* @return array string patterns to check
*/
static
function
getPatterns
()
{
$patterns
=
self
::
cacheGet
(
'homepage_blacklist:patterns'
);
if
(
$patterns
===
false
)
{
$patterns
=
array
();
$nb
=
new
Homepage_blacklist
();
$nb
->
find
();
while
(
$nb
->
fetch
())
{
$patterns
[]
=
$nb
->
pattern
;
}
self
::
cacheSet
(
'homepage_blacklist:patterns'
,
$patterns
);
}
return
$patterns
;
}
/**
* Save new list of patterns
*
* @return array of patterns to check
*/
static
function
saveNew
(
$newPatterns
)
{
$oldPatterns
=
self
::
getPatterns
();
// Delete stuff that's old that not in new
$toDelete
=
array_diff
(
$oldPatterns
,
$newPatterns
);
// Insert stuff that's in new and not in old
$toInsert
=
array_diff
(
$newPatterns
,
$oldPatterns
);
foreach
(
$toDelete
as
$pattern
)
{
$nb
=
Homepage_blacklist
::
staticGet
(
'pattern'
,
$pattern
);
if
(
!
empty
(
$nb
))
{
$nb
->
delete
();
}
}
foreach
(
$toInsert
as
$pattern
)
{
$nb
=
new
Homepage_blacklist
();
$nb
->
pattern
=
$pattern
;
$nb
->
created
=
common_sql_now
();
$nb
->
insert
();
}
self
::
blow
(
'homepage_blacklist:patterns'
);
}
static
function
ensurePattern
(
$pattern
)
{
$hb
=
Homepage_blacklist
::
staticGet
(
'pattern'
,
$pattern
);
if
(
empty
(
$nb
))
{
$hb
=
new
Homepage_blacklist
();
$hb
->
pattern
=
$pattern
;
$hb
->
created
=
common_sql_now
();
$hb
->
insert
();
self
::
blow
(
'homepage_blacklist:patterns'
);
}
}
}
plugins/Blacklist/Nickname_blacklist.php
0 → 100644
View file @
69722257
<?php
/**
* Data class for nickname blacklisting
*
* PHP version 5
*
* @category Data
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*
* StatusNet - the distributed open-source microblogging tool
* Copyright (C) 2009, StatusNet, Inc.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
if
(
!
defined
(
'STATUSNET'
))
{
exit
(
1
);
}
require_once
INSTALLDIR
.
'/classes/Memcached_DataObject.php'
;
/**
* Data class for Nickname blacklist
*
* @category Action
* @package StatusNet
* @author Evan Prodromou <evan@status.net>
* @license http://www.fsf.org/licensing/licenses/agpl.html AGPLv3
* @link http://status.net/
*
* @see DB_DataObject
*/
class
Nickname_blacklist
extends
Memcached_DataObject
{
public
$__table
=
'nickname_blacklist'
;
// table name
public
$pattern
;
// string pattern
public
$created
;
// datetime
/**
* Get an instance by key
*
* This is a utility method to get a single instance with a given key value.
*
* @param string $k Key to use to lookup
* @param mixed $v Value to lookup
*
* @return Nickname_blacklist object found, or null for no hits
*
*/
function
staticGet
(
$k
,
$v
=
null
)
{
return
Memcached_DataObject
::
staticGet
(
'Nickname_blacklist'
,
$k
,
$v
);
}
/**
* return table definition for DB_DataObject
*
* @return array array of column definitions
*/
function
table
()
{
return
array
(
'pattern'
=>
DB_DATAOBJECT_STR
+
DB_DATAOBJECT_NOTNULL
,
'created'
=>
DB_DATAOBJECT_STR
+
DB_DATAOBJECT_DATE
+
DB_DATAOBJECT_TIME
+
DB_DATAOBJECT_NOTNULL
);
}
/**
* return key definitions for DB_DataObject
*
* @return array key definitions
*/
function
keys
()
{
return
array
(
'pattern'
=>
'K'
);
}
/**
* return key definitions for Memcached_DataObject
*
* @return array key definitions
*/
function
keyTypes
()
{
return
$this
->
keys
();
}
/**
* Return a list of patterns to check
*
* @return array string patterns to check
*/
static
function
getPatterns
()
{
$patterns
=
self
::
cacheGet
(
'nickname_blacklist:patterns'
);
if
(
$patterns
===
false
)
{
$patterns
=
array
();
$nb
=
new
Nickname_blacklist
();
$nb
->
find
();
while
(
$nb
->
fetch
())
{
$patterns
[]
=
$nb
->
pattern
;
}
self
::
cacheSet
(
'nickname_blacklist:patterns'
,
$patterns
);
}
return
$patterns
;
}
/**
* Save new list of patterns
*
* @return array of patterns to check
*/
static
function
saveNew
(
$newPatterns
)
{
$oldPatterns
=
self
::
getPatterns
();
// Delete stuff that's old that not in new
$toDelete
=
array_diff
(
$oldPatterns
,
$newPatterns
);
// Insert stuff that's in new and not in old
$toInsert
=
array_diff
(
$newPatterns
,
$oldPatterns
);
foreach
(
$toDelete
as
$pattern
)
{
$nb
=
Nickname_blacklist
::
staticGet
(
'pattern'
,
$pattern
);
if
(
!
empty
(
$nb
))
{
$nb
->
delete
();
}
}
foreach
(
$toInsert
as
$pattern
)
{
$nb
=
new
Nickname_blacklist
();
$nb
->
pattern
=
$pattern
;
$nb
->
created
=
common_sql_now
();
$nb
->
insert
();
}
self
::
blow
(
'nickname_blacklist:patterns'
);
}
static
function
ensurePattern
(
$pattern
)
{
$nb
=
Nickname_blacklist
::
staticGet
(
'pattern'
,
$pattern
);
if
(
empty
(
$nb
))
{
$nb
=
new
Nickname_blacklist
();
$nb
->
pattern
=
$pattern
;
$nb
->
created
=
common_sql_now
();
$nb
->
insert
();
self
::
blow
(
'nickname_blacklist:patterns'
);
}
}
}
plugins/Blacklist/blacklistadminpanel.php
View file @
69722257
...
...
@@ -88,35 +88,24 @@ class BlacklistadminpanelAction extends AdminPanelAction
function
saveSettings
()
{
static
$settings
=
array
(
'blacklist'
=>
array
(
'nicknames'
,
'urls'
),
);
$nickPatterns
=
array
();
$
values
=
array
(
);
$
rawNickPatterns
=
explode
(
"
\n
"
,
$this
->
trimmed
(
'blacklist-nicknames'
)
);
foreach
(
$settings
as
$section
=>
$parts
)
{
foreach
(
$parts
as
$setting
)
{
$values
[
$section
][
$setting
]
=
$this
->
trimmed
(
"
$section
-
$setting
"
);
}
foreach
(
$rawNickPatterns
as
$raw
)
{
$nickPatterns
[]
=
trim
(
$raw
);
}
// This throws an exception on validation errors
Nickname_blacklist
::
saveNew
(
$nickPatterns
);
$this
->
validate
(
$values
);
$rawUrlPatterns
=
explode
(
"
\n
"
,
$this
->
trimmed
(
'blacklist-urls'
));
$urlPatterns
=
array
();
// assert(all values are valid);
$config
=
new
Config
();
$config
->
query
(
'BEGIN'
);
foreach
(
$settings
as
$section
=>
$parts
)
{
foreach
(
$parts
as
$setting
)
{
Config
::
save
(
$section
,
$setting
,
$values
[
$section
][
$setting
]);
}
foreach
(
$rawUrlPatterns
as
$raw
)
{
$urlPatterns
[]
=
trim
(
$raw
);
}
$config
->
query
(
'COMMIT'
);
Homepage_blacklist
::
saveNew
(
$urlPatterns
);
return
;
}
...
...
@@ -191,14 +180,19 @@ class BlacklistAdminPanelForm extends Form
$this
->
out
->
elementStart
(
'ul'
,
'form_data'
);
$this
->
out
->
elementStart
(
'li'
);
$nickPatterns
=
Nickname_blacklist
::
getPatterns
();
$this
->
out
->
textarea
(
'blacklist-nicknames'
,
_m
(
'Nicknames'
),
common_config
(
'blacklist'
,
'nicknames'
),
implode
(
"
\r\n
"
,
$nickPatterns
),
_
(
'Patterns of nicknames to block, one per line'
));
$this
->
out
->
elementEnd
(
'li'
);
$urlPatterns
=
Homepage_blacklist
::
getPatterns
();
$this
->
out
->
elementStart
(
'li'
);
$this
->
out
->
textarea
(
'blacklist-urls'
,
_m
(
'URLs'
),
common_config
(
'blacklist'
,
'urls'
),
implode
(
"
\r\n
"
,
$urlPatterns
),
_
(
'Patterns of URLs to block, one per line'
));
$this
->
out
->
elementEnd
(
'li'
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment