<?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);
		}
	}
}
 
?>
np_alias_code.php.txt · Last modified: 2008/02/06 18:00 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki