tools = new helper_plugin_blogtng_tools();
if(is_array($row)) {
$this->init($row);
}
}
/**
* @param array $row row of table 'comments'
*/
public function init($row){
foreach ($row as $key => $item) {
if(property_exists($this, $key)) {
$this->{$key} = $item;
}
}
//old data row, for backward compatibility in existing templates
$this->data = $row;
}
/**
* Render a comment using the templates comments file.
*
* @param string $name of template
* @return bool
*/
public function output($name){
global $INFO;
$name = preg_replace('/[^a-zA-Z_\-]+/','',$name);
$tpl = $this->tools->getTplFile($name,'comments');
if($tpl === false){
return false;
}
$comment = $this;
if($comment->status == 'visible' || ($comment->status == 'hidden' && $INFO['isadmin'])) {
$comment->num++;
include($tpl);
}
return true;
}
/**
* Get translated string for @$name
*
* @param string $name id of the string to be retrieved
* @return string string in appropriate language or english if not available
*/
public function getLang($name){
return $this->tools->getLang($name);
}
/**
* Render the text/content of a single comment
*/
public function tpl_comment(){
//FIXME add caching
$inst = p_get_instructions($this->text);
echo p_render('blogtng_comment',$inst,$info);
}
/**
* Render the cid of a single comment
*/
public function tpl_cid(){
echo $this->cid;
}
/**
* Render the number of a comment.
*
* @param bool $link whether wrapped with link element
* @param string $fmt format of number
* @param string $title null or alternative title
*/
public function tpl_number($link = true, $fmt = '%d', $title = null) {
if($title === null) $title = sprintf($fmt, $this->num);
if($link) echo '';
echo $title;
if($link) echo '';
}
/**
* Render the hcard/userdata of a single comment
*/
public function tpl_hcard(){
echo '
';
}
/**
* Render the name of a single comment
*/
public function tpl_name(){
echo hsc($this->name);
}
/**
* Render the type of a single comment
*/
public function tpl_type(){
echo hsc($this->type);
}
/**
* Render the mail of a single comment
*/
public function tpl_mail(){
echo hsc($this->mail);
}
/**
* Render the web address of a single comment
*/
public function tpl_web(){
echo hsc($this->web);
}
/**
* Render the creation date of a single comment
*
* @param string $fmt date format, empty string default to $conf['dformat']
*/
public function tpl_created($fmt=''){
echo hsc(dformat($this->created,$fmt));
}
/**
* Render the status of a single comment
*/
public function tpl_status() {
echo $this->status;
}
/**
* Render the avatar of a single comment
*
* @param int $w avatar width
* @param int $h avatar height
* @param bool $return whether the url is returned or printed
* @return void|string url of avatar
*/
public function tpl_avatar($w=0,$h=0,$return=false){
global $conf;
$img = '';
if($this->avatar) {
$img = $this->avatar;
//FIXME add hook for additional methods
} elseif ($this->mail) {
$dfl = $conf['plugin']['blogtng']['comments_gravatar_default'];
if(!isset($dfl) || $dfl == 'blank') $dfl = DOKU_URL . 'lib/images/blank.gif';
$img = 'https://gravatar.com/avatar.php'
. '?gravatar_id=' . md5($this->mail)
. '&size=' . $w
. '&rating=' . $conf['plugin']['blogtng']['comments_gravatar_rating']
. '&default='.rawurlencode($dfl)
. '&.png';
} elseif ($this->web){
$img = 'https://getfavicon.appspot.com/'.rawurlencode($this->web).'?.png';
}
//use fetch for caching and resizing
if($img){
$img = ml($img,array('w'=>$w,'h'=>$h,'cache'=>'recache'));
}
if($return) {
return $img;
} else {
print $img;
}
}
/**
* @return string
*/
public function getStatus()
{
return $this->status;
}
/**
* @param string $status
*/
public function setStatus($status)
{
$this->status = $status;
}
/**
* @return string
*/
public function getText()
{
return $this->text;
}
/**
* @param string $text
*/
public function setText($text)
{
$this->text = $text;
}
/**
* @return string
*/
public function getCid()
{
return $this->cid;
}
/**
* @param string $cid
*/
public function setCid($cid)
{
$this->cid = $cid;
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getWeb()
{
return $this->web;
}
/**
* @param string $web
*/
public function setWeb($web)
{
$this->web = $web;
}
/**
* @return string
*/
public function getMail()
{
return $this->mail;
}
/**
* @param string $mail
*/
public function setMail($mail)
{
$this->mail = $mail;
}
/**
* @return string
*/
public function getType()
{
return $this->type;
}
/**
* @param string $type
*/
public function setType($type)
{
$this->type = $type;
}
/**
* @return string
*/
public function getCreated()
{
return $this->created;
}
/**
* @param string $created
*/
public function setCreated($created)
{
$this->created = $created;
}
/**
* @return string
*/
public function getAvatar()
{
return $this->avatar;
}
/**
* @param string $avatar
*/
public function setAvatar($avatar)
{
$this->avatar = $avatar;
}
/**
* @return string
*/
public function getSource()
{
return $this->source;
}
/**
* @param string $source
*/
public function setSource($source)
{
$this->source = $source;
}
/**
* @return string
*/
public function getIp()
{
return $this->ip;
}
/**
* @param string $ip
*/
public function setIp($ip)
{
$this->ip = $ip;
}
/**
* @return string
*/
public function getPid()
{
return $this->pid;
}
/**
* @param string $pid
*/
public function setPid($pid)
{
$this->pid = $pid;
}
/**
* @return string
*/
public function getSubscribe()
{
return $this->subscribe;
}
/**
* @param string $subscribe
*/
public function setSubscribe($subscribe)
{
$this->subscribe = $subscribe;
}
}