diff options
-rw-r--r-- | README | 2 | ||||
-rw-r--r-- | classes/User.php | 14 | ||||
-rw-r--r-- | db/notice_source.sql | 2 | ||||
-rw-r--r-- | scripts/makegroupadmin.php | 89 | ||||
-rw-r--r-- | scripts/registeruser.php | 81 |
5 files changed, 179 insertions, 9 deletions
@@ -151,6 +151,8 @@ released Aug 26 2009. Notable changes this version: - Check for site servername config'd. - Compatibility fix for empty status updates with Twitter API. - Option to show files privately (EXPERIMENTAL! Use with caution.) +- a script to register a new user. +- a script to make a user admin of a group. Prerequisites ============= diff --git a/classes/User.php b/classes/User.php index 3fa9cc152..f060b57a8 100644 --- a/classes/User.php +++ b/classes/User.php @@ -117,15 +117,11 @@ class User extends Memcached_DataObject function allowed_nickname($nickname) { // XXX: should already be validated for size, content, etc. - - $blacklist = array(); - - //all directory and file names should be blacklisted - $d = dir(INSTALLDIR); - while (false !== ($entry = $d->read())) { - $blacklist[]=$entry; - } - $d->close(); + static $blacklist = array('rss', 'xrds', 'doc', 'main', + 'settings', 'notice', 'user', + 'search', 'avatar', 'tag', 'tags', + 'api', 'message', 'group', 'groups', + 'local'); $merged = array_merge($blacklist, common_config('nickname', 'blacklist')); return !in_array($nickname, $merged); } diff --git a/db/notice_source.sql b/db/notice_source.sql index 2657763f4..5c5c939dd 100644 --- a/db/notice_source.sql +++ b/db/notice_source.sql @@ -7,6 +7,7 @@ VALUES ('anyio', 'Any.IO', 'http://any.io/', now()), ('betwittered','BeTwittered','http://www.32hours.com/betwitteredinfo/', now()), ('bti','bti','http://gregkh.github.com/bti/', now()), + ('choqok', 'Choqok', 'http://choqok.gnufolks.org/', now()), ('cliqset', 'Cliqset', 'http://www.cliqset.com/', now()), ('deskbar','Deskbar-Applet','http://www.gnome.org/projects/deskbar-applet/', now()), ('Do','Gnome Do','http://do.davebsd.com/wiki/index.php?title=Microblog_Plugin', now()), @@ -43,6 +44,7 @@ VALUES ('rygh.no','rygh.no','http://rygh.no/', now()), ('ryghsms','ryghsms','http://sms.rygh.no/', now()), ('smob','SMOB','http://smob.sioc-project.org/', now()), + ('socialoomphBfD4pMqz31', 'SocialOomph', 'http://www.socialoomph.com/', now()), ('spaz','Spaz','http://funkatron.com/spaz', now()), ('tarpipe','tarpipe','http://tarpipe.com/', now()), ('tjunar','Tjunar','http://nederflash.nl/boek/titels/tjunar-air', now()), diff --git a/scripts/makegroupadmin.php b/scripts/makegroupadmin.php new file mode 100644 index 000000000..a68798451 --- /dev/null +++ b/scripts/makegroupadmin.php @@ -0,0 +1,89 @@ +#!/usr/bin/env php +<?php +/* + * StatusNet - a distributed open-source microblogging tool + * Copyright (C) 2008, 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/>. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); + +$shortoptions = 'g:n:'; +$longoptions = array('nickname=', 'group='); + +$helptext = <<<END_OF_MAKEGROUPADMIN_HELP +makegroupadmin.php [options] +makes a user the admin of a group + + -g --group group to add an admin to + -n --nickname nickname of the new admin + +END_OF_MAKEGROUPADMIN_HELP; + +require_once INSTALLDIR.'/scripts/commandline.inc'; + +$nickname = get_option_value('n', 'nickname'); +$groupname = get_option_value('g', 'group'); + +if (empty($nickname) || empty($groupname)) { + print "Must provide a nickname and group.\n"; + exit(1); +} + +try { + + $user = User::staticGet('nickname', $nickname); + + if (empty($user)) { + throw new Exception("No user named '$nickname'."); + } + + $group = User_group::staticGet('nickname', $groupname); + + if (empty($group)) { + throw new Exception("No group named '$groupname'."); + } + + $member = Group_member::pkeyGet(array('group_id' => $group->id, + 'profile_id' => $user->id)); + + if (empty($member)) { + $member = new Group_member(); + + $member->group_id = $group->id; + $member->profile_id = $user->id; + $member->created = common_sql_now(); + + if (!$member->insert()) { + throw new Exception("Can't add '$nickname' to '$groupname'."); + } + } + + if ($member->is_admin) { + throw new Exception("'$nickname' is already an admin of '$groupname'."); + } + + $orig = clone($member); + + $member->is_admin = 1; + + if (!$member->update($orig)) { + throw new Exception("Can't make '$nickname' admin of '$groupname'."); + } + +} catch (Exception $e) { + print $e->getMessage() . "\n"; + exit(1); +} diff --git a/scripts/registeruser.php b/scripts/registeruser.php new file mode 100644 index 000000000..5d9c8862d --- /dev/null +++ b/scripts/registeruser.php @@ -0,0 +1,81 @@ +#!/usr/bin/env php +<?php +/* + * StatusNet - a distributed open-source microblogging tool + * Copyright (C) 2008, 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/>. + */ + +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..')); + +$shortoptions = 'n:w:f:e:'; +$longoptions = array('nickname=', 'password=', 'fullname=', 'email='); + +$helptext = <<<END_OF_REGISTERUSER_HELP +registeruser.php [options] +registers a user in the database + + -n --nickname nickname of the new user + -w --password password of the new user + -f --fullname full name of the new user (optional) + -e --email email address of the new user (optional) + +END_OF_REGISTERUSER_HELP; + +require_once INSTALLDIR.'/scripts/commandline.inc'; + +$nickname = get_option_value('n', 'nickname'); +$password = get_option_value('w', 'password'); +$fullname = get_option_value('f', 'fullname'); + +$email = get_option_value('e', 'email'); + +if (empty($nickname) || empty($password)) { + print "Must provide a username and password.\n"; + exit(1); +} + +try { + + $user = User::staticGet('nickname', $nickname); + + if (!empty($user)) { + throw new Exception("A user named '$nickname' already exists."); + } + + $user = User::register(array('nickname' => $nickname, + 'password' => $password, + 'fullname' => $fullname)); + + if (empty($user)) { + throw new Exception("Can't register user '$nickname' with password '$password' and fullname '$fullname'."); + } + + if (!empty($email)) { + + $orig = clone($user); + + $user->email = $email; + + if (!$user->updateKeys($orig)) { + print "Failed!\n"; + throw new Exception("Can't update email address."); + } + } + +} catch (Exception $e) { + print $e->getMessage() . "\n"; + exit(1); +} |