<?php /** * Define an alias for each user on a per Blog basis. History: v1.0 - Initial release by Pedro Miguel Rodrigues v1.1 - mod by PiyoPiyoNaku, 04-Feb-2007 - also show the alias than the username in the comments v1.2 - PiyoPiyoNaku, 05-Feb-2007 - adding the skinvar <%Alias%> to show the alias in member's page - Example usage: replace <%member(name)%> to <%Alias%> - if there's no alias defined, will show member's username instead v1.3 - PiyoPiyoNaku, 10-Mar-2007 - function getAliasfromMemberName($membername, $blogid) and getAliasfromMemberID($membername, $blogid) so another plugin can call this plugin asking for the alias based on memberid (and blogid -> this is optional) v1.31 - PiyoPiyoNaku, 11-Mar-2007 - language support for Japanese-utf8 v1.32 - PiyoPiyoNaku, 14-Mar-2007 - bug fix for showing alias in comments */ class NP_Alias extends NucleusPlugin { // name of plugin function getName() { return 'Alias'; } // author of plugin function getAuthor() { return 'Pedro Miguel Rodrigues | PiyoPiyoNaku'; } // an URL to the plugin website // can also be of the form mailto:foo@bar.com function getURL() { return 'http://www.pitale.net'; } // version of the plugin function getVersion() { return '1.32'; } // a description to be shown on the installed plugins listing function getDescription() { return _ALIAS_DESC; } function supportsFeature ($what) { switch ($what) { case 'SqlTablePrefix': return 1; default: return 0; } } //<mod by PiyoPiyoNaku> function init() { $language = ereg_replace( '[\\|/]', '', getLanguageName()); if ($language == "japanese-utf8") { define(_ALIAS_DESC, "ブログ上の表示。 設定はブログの設定画面で"); define(_ALIAS_LABEL1, "ブログ上の表示"); define(_ALIAS_LABEL2, "ユーザエイリアスの更新"); } else { define(_ALIAS_DESC, "Alias on Blog. Configurable from blog setting menu"); define(_ALIAS_LABEL1, "Alias on Blog"); define(_ALIAS_LABEL2, "Update user alias"); } } //</mod by PiyoPiyoNaku> function event_BlogSettingsFormExtras(&$data) { $this->ShowAliasForm($data); } function event_PreItem(&$blog) { //<mod by PiyoPiyoNaku> $item =& $blog['item']; $item->author = $this->getAliasfromMemberID($item->authorid); $item->authorname = $item->author; //</mod by PiyoPiyoNaku> } //<mod by PiyoPiyoNaku> function doSkinVar($skinType) { global $memberid; $alias = $this->getAliasfromMemberID($memberid); echo $alias; } function event_PreComment($data) { $user = $data['comment']['user']; $data['comment']['user'] = $this->getAliasfromMemberName($user); } function getAliasfromMemberID($memberid, $blogid = '') { global $blog; if (!$blogid) { $blogid = $blog->getID(); } $sql = 'SELECT alias as result FROM ' . sql_table('team') . ' WHERE tmember="' . $memberid . '" AND tblog="' . $blogid . '"'; $alias = quickQuery($sql); if ($alias) { return $alias; } else { $sql = 'SELECT mname as result FROM ' . sql_table('member') . ' WHERE mnumber="' . $memberid . '"'; return quickQuery($sql); } } function getAliasfromMemberName($membername, $blogid = '') { global $blog; if (!$blogid) { $blogid = $blog->getID(); } $sql = 'SELECT mnumber as result FROM ' . sql_table('member') . ' WHERE mname="' . $membername . '"'; $memberid = quickQuery($sql); if ($memberid) { $sql = 'SELECT alias as result FROM ' . sql_table('team') . ' WHERE tmember="' . $memberid . '" AND tblog="' . $blogid . '"'; $alias = quickQuery($sql); if ($alias) { return $alias; } else { return $membername; } } else { return $membername; } } //</mod by PiyoPiyoNaku> function getEventList() { return array('BlogSettingsFormExtras', 'PreItem', 'PreComment'); } function doAction($type) { global $member, $conf; switch($type) { case 'define_alias': if (!$member->isAdmin()) return 'You\'re not allowed!'; $url = requestVar('url'); $blogid = requestVar('blogid'); $users = requestVar('user_id'); $alias = requestVar('alias'); $this->UpdateAlias($blogid, $users, $alias); break; default: return 'Bad action type!'; } header('Location: ' . $url); exit; } function install() { $sql = "ALTER TABLE `nucleus_team` ADD `alias` VARCHAR( 16 ) NOT NULL ;"; sql_query($sql); } function unInstall() { $sql = "ALTER TABLE `nucleus_team` DROP `alias` ;"; sql_query($sql); } function ShowAliasForm(&$data) { global $member, $conf; $sql = "SELECT mnumber, mname, alias FROM `nucleus_member` nm, `nucleus_team` nt where nt.tmember=nm.mnumber and nt.tblog=" . $data['blog']->blogid; $res = sql_query($sql); echo "\n<form name=\"updatealias\" method=\"post\" action=\"../action.php\">"; echo "\n<input type=\"hidden\" name=\"action\" value=\"plugin\" />"; echo "\n<input type=\"hidden\" name=\"name\" value=\"Alias\" />"; echo "\n<input type=\"hidden\" name=\"type\" value=\"define_alias\" />"; echo "\n<input type=\"hidden\" name=\"blogid\" value=\"" . $data['blog']->blogid . "\" />"; echo "\n<input type=\"hidden\" name=\"url\" value=\"" . $_SERVER['PHP_SELF'] . "?" . $_SERVER['QUERY_STRING'] . "\">"; echo "\n<table>"; echo "\n<tr>"; echo "\n<th colspan=\"2\">"._ALIAS_LABEL1."</th>"; echo "\n</tr>"; while (($line = mysql_fetch_object($res))) { echo "\n<tr>"; echo "\n<td>" . $line->mname . "</td>"; echo "\n<td><input type=\"text\" name=\"alias[" . $line->mnumber . "]\" value=\"" . $line->alias . "\" maxlength=\"16\" /></td>"; echo "\n<input type=\"hidden\" name=\"user_id[]\" value=\"" . $line->mnumber . "\" />"; echo "\n</tr>"; } echo "\n<tr>"; echo "\n<td>"._ALIAS_LABEL2."</td>"; echo "\n<td><input type=\"submit\" name=\"update_alias\" value=\""._ALIAS_LABEL2."\" /></td>"; echo "\n</tr>"; echo "\n</table>"; echo "\n</form>"; } function UpdateAlias($blogid, $users, $alias) { foreach($users as $user) { $sql = "UPDATE `nucleus_team` SET alias='$alias[$user]' WHERE tmember='$user' AND tblog='$blogid'"; sql_query($sql); } } } ?>