function mx_xmlshow($msgid, $like = '0', $dislike = '0') { global $mxdb, $mxuser; if ($like || $dislike) { if ($like && $dislike) { return; } $numlikes = $mxdb->setlikes($mxuser->id, $msgid, $like, $dislike); echo 'var totlikes=' . $numlikes->likes . '; var totdislikes=' . $numlikes->dislikes . '; //' . $like . ' / ' . $dislike; return; } $comments = $mxdb->getcomments($msgid); if (!$comments) { __('No comments.'); return; } $str = '<table class="wcomment">'; while ($comment = $mxdb->getcomments($msgid, $comments)) { $comment->mylikes = $mxuser->getlikes($comment->msgid); $str .= '<tr class="wcommentline">'; $str .= '<td class="showspic"><img src="' . mx_fanpic($comment->authid) . '" /></td>'; $str .= '<td>'; $str .= $comment->body; $str .= '<div class="wclikes">'; $str .= mx_likeicon($comment->msgid, MXLIKEIT, $comment->mylikes, $mxuser->id) . '<div name="ln_' . $comment->msgid . '">' . sprintf('%d', $comment->likes ? $comment->likes : 0) . '</div>' . mx_likeicon($comment->msgid, MXDISLIKEIT, $comment->mylikes, $mxuser->id) . '<div name="dn_' . $comment->msgid . '">' . sprintf('%d', $comment->dislikes ? $comment->dislikes : 0) . '</div>'; $str .= '</div>'; // wlikes $str .= '<div class="wcommentdate">' . mx_difftime($comment->date) . '</div>'; $str .= '</td>'; $str .= '</tr>'; } $yrcomment = array(1, _('Your comment'), 'memo', 1, null, _('Speak your heart...')); $str .= '<tr class="wcommentline"><!-- <td class="showspic"><img src="' . mx_fanpic($mxuser->id) . '" /></td> -->' . '<td colspan="2">' . mx_formfield('mc_' . $msgid, '', $yrcomment) . '<br/>' . '<input class="sendcomment" type="button" onclick="sendcomment(' . $msgid . ');" value="' . _('Send') . '">' . '</td>' . '</tr>'; $str .= '</table>'; $str .= '<a class="close" href="javascript:switchcomments(\'' . $msgid . '\');">' . mx_icon('close', 'Close', '16px') . '</a>'; echo $str; }
function mx_infofield($field, $value, $fldinfo) { global $mxdb, $mxuser, $defaultprivacy; if (is_array($fldinfo)) { $fldtype = $fldinfo[2]; } else { $fldtype = $fldinfo; } //error_log('infofield: '.$fldtype.' '.print_r($value,true)); switch ($fldtype) { case 'percent': return ($value > 100 ? 100 : floor($value)) . '%'; case 'playtime': $hr = floor($value / 3600); $mn = floor(($value - 3600 * $hr) / 60); $sc = $value - 3600 * hr - 60 * $mn; return ($hr ? $hr . ':' : '') . sprintf('%02d:%02d', $mn, $sc); case 'mediaplay': $media = $mxuser->getmediainfo($value); $fanship = $mxuser->getfanship($media->owner_id, $media->id); mx_medialist($media, $fanship); $str = $media->mediadatalight; $str = str_replace('{PRICE}', '<table class="buymedia"><tr><td>', $str); $str = str_replace('{PRICE2}', '</td><td>', $str); $str = str_replace('{PRICE3}', '</td></tr></table>', $str); return $str; break; case 'playtype': global $playtypes; return $playtypes[$value + 0]; break; case 'genre': $genres = $mxdb->listgenres(); $cats = array(); $subgenres = array(); foreach ($genres as $genre) { if (!$genre->cat) { $cats[$genre->hash] = $genre->id; $subgenres[$genre->id] = array(); } } foreach ($genres as $genre) { if ($genre->cat) { $subgenres[$cats[$genre->cat]][] = $genre->id; $catgenre[$genre->id] = $cats[$genre->cat]; } } $str = '<table class="genres">'; $ok = 0; for ($i = 0; $i < 5; $i++) { $genre = $value[$i]; if ($genre) { $cat = $catgenre[$genre]; $str .= '<tr><th>' . (!$i ? _('Primary') : ($i == 1 ? _('Secondary') : _('Other'))) . ':</th><td>' . $genres[$genre]->genre . ($cat ? ' (' . $genres[$cat]->genre . ')' : '') . '</td></tr>'; $ok = 1; } } $str .= '</table>'; if (!$ok) { return _('Not informed'); } return $str; break; case 'pagepic': if (!$value) { return ''; } return '<img class="fanpic" src="' . $value . '">'; break; case 'size': return mx_size($value); break; case 'invites': return sprintf(_('So far, %d of your referrees registered'), $value); break; case 'agreement': if ($value == "0000-00-00 00:00:00") { return sprintf(_('%s not yet accepted.'), mx_windowedpage('terms', _('Terms & Conditions'))); } return sprintf(_('%s Accepted: %s.'), mx_windowedpage('terms', _('Terms & Conditions')), mx_difftime($value)); break; case 'proid': if ($value == MXNOPROYET) { return _('Not Affiliated Yet'); } if (!$value) { return _('Undefined'); } $pro = $mxdb->listpros($value); if ($pro[0]) { return $pro[0]->name . ' (' . $pro[0]->website . ')'; } else { return _('Undefined'); } break; case 'editbutton': return '<input type="' . ($field == 'submit' ? 'submit' : ($field == 'clear' ? 'reset' : 'button')) . '"' . ' name="' . $field . '" value="' . $value . '"' . ' onclick="if (buttonclick(\'' . $field . '\')) submit();"' . (strpos($field, '-') === 0 ? ' disabled' : '') . '>'; break; case 'mediabtns': //$str='<div class="media">'; //$str.='<div class="icons">'. $str = mx_icon('playmedia', _('Play'), 24, 'pm_' . $value, 'pausemedia') . ' ' . mx_icon('downmedia', _('Download'), 24, 'dm_' . $value, 'downmedia_active') . mx_icon('addmedia', _('Add'), 24, 'am_' . $value, 'addedmedia'); return $str; break; case 'mediainfo': //$str='<div class="media">'; //$str.='<div class="icons">'. $str = mx_icon('infomedia', _('Info'), 16, 'im_' . $value, 'infomedia_down'); return $str; break; case 'wall': $userinfo = $mxuser->getuserinfo($value->authid); $str = '<div class="wall wid_' . $value->msgid . '">'; $str .= '<div class="wauth">'; /*$str.= '<img class="wallpic" src="'.mx_fanpic($value->authid,'square').'" />' .' '.mx_getartistname($userinfo); */ $str .= '<table><tr><td class="subline"><img class="wallpic" src="' . mx_fanpic($value->authid, 'square') . '" /></td>' . '<td>'; if ($value->type == 'artist') { $name = mx_getartistname($userinfo); $str .= '<a href="' . mx_actionurl('artists', 'artprof', $userinfo->id) . '" alt="' . $name . '">' . $name . '</a>'; } else { $name = mx_getname($userinfo); $str .= '<a href="' . mx_actionurl('fans', 'fanprof', $userinfo->id) . '" alt="' . $name . '">' . $name . '</a>'; } $str .= '</td></tr></table>'; $str .= '</div>'; //$filters=str_replace(', ','<br/>',mx_sharefilter($value->filter)); $filters = mx_sharefilter($value->filter); if ($value->flags & MXWALLDELETED) { $str .= '<div class="canwall">' . _('DELETED') . '</div>'; } else { $str .= '<div class="wfilter">' . $filters . '</div>'; } $str .= '<div class="wdate">' . mx_difftime($value->date) . '</div>'; $str .= '<div class="wbody">'; if ($value->refid) { $str .= '<div class="refwall">Ref. Wall#' . $value->refid . _(' (will be shown later)') . '</div><br/>'; } $body = mx_urls2anchors(htmlspecialchars($value->body)); $str .= preg_replace('%\\n%', '<br/>', $body); $str .= '</div>'; // class body if ($mxuser->id) { if ($value->authid == $mxuser->id) { $str .= '<div class="wdelete" onclick="javascript:deletewall(\'' . $value->msgid . '\');">'; $str .= _('Delete'); $str .= '</div>'; // wdelete } else { $str .= '<div class="wreport">'; $str .= _('Flag This'); $str .= '</div>'; // wreport } $str .= '<div class="wcomments" onclick="javascript:switchcomments(\'' . $value->type . '\',\'' . $value->msgid . '\');">'; if (!$value->comments) { $str .= _('Any comment?'); } else { $str .= sprintf($value->comments == 1 ? _('%d comment.') : _('%d comments.'), $value->comments); } $str .= '</div>'; // wcomments $str .= '<div class="wlikes">'; $str .= mx_likeicon($value->msgid, MXLIKEIT, $value->mylikes, $mxuser->id) . '<div name="ln_' . $value->msgid . '">' . sprintf('%d', $value->likes ? $value->likes : 0) . '</div>' . mx_likeicon($value->msgid, MXDISLIKEIT, $value->mylikes, $mxuser->id) . '<div name="dn_' . $value->msgid . '">' . sprintf('%d', $value->dislikes ? $value->dislikes : 0) . '</div>'; $str .= '</div>'; // wlikes $str .= '<div class="wcommentspanel" id="' . $value->type . 'cm_' . $value->msgid . '">'; $str .= '</div>'; } $str .= '</div>'; // class wall return $str; break; case 'fan': $userinfo = $mxuser->getuserinfo($value); $name = mx_getname($userinfo); /*return '<div class="subline"><img class="subpic" src="'.mx_fanpic($userinfo->id).'" />' .'<a href="'.mx_actionurl('artists','artprof',$userinfo->id).'" alt="'.$name.'">' .$name .'</a>' .'</div>';*/ return '<table class="name"><tr><td class="subline"><img tag="' . $userinfo->id . '" class="subpic" src="' . mx_fanpic($userinfo->id, 'square', $userinfo->gender) . '" itemprop="image" /></td>' . '<td><a href="' . mx_actionurl('fans', 'fanprof', $userinfo->id) . '" alt="' . $name . '" itemprop="url">' . '<span itemprop="name">' . $name . '</span>' . '</a>' . '</td></tr></table>'; break; case 'artist': $userinfo = $mxuser->getuserinfo($value); $name = mx_getartistname($userinfo); /*return '<div class="subline"><img class="subpic" src="'.mx_fanpic($userinfo->id).'" />' .'<a href="'.mx_actionurl('artists','artprof',$userinfo->id).'" alt="'.$name.'">' .$name .'</a>' .'</div>';*/ return '<table class="name"><tr><td class="subline"><img tag="' . $userinfo->id . '" class="subpic" src="' . mx_artpic($userinfo->id, 'square', $userinfo->gender) . '" itemprop="image" /></td>' . '<td><a href="' . mx_actionurl('artists', 'artprof', $userinfo->id) . '" alt="' . $name . '" itemprop="url">' . '<span itemprop="name">' . $name . '</span>' . '</a></td></tr></table>'; break; case 'subcat': // subscriptions types only global $prodtypes; return $prodtypes[$value][0]; break; case 'subtype': // subscriptions types only global $prodtypes; return $prodtypes[MXARTSUB][1][$value]; break; case 'newsubtype': // subscriptions types only global $prodtypes; return $prodtypes[$value['subcat']][1][$value['subtype']]; break; case 'substatus': // subscriptions statuses global $substatuses; $status = $substatuses[$value]; if ($value == MXNEWSUB || $value == MXRENEWEDSUB) { $status = '<span class="newsub">' . $status . '</span>'; } return $status; break; case 'subrenewal': // subscriptions statuses global $subrenewals; if (!$value) { return MXNONAPPLICABLE; } $status = $subrenewals[$value]; //if ($value==MXNEWSUB || $value==MXRENEWEDSUB) // $status='<span class="newsub">'.$status.'</span>'; return $status; break; case 'hidden': return '[invisible:' . $field . ']'; break; case 'price': return str_replace(' ', ' ', sprintf('US$ %6.2f', $value)); /* case 'prodtype': global $prodtypes; return $prodtypes[$value][0]; case 'prodvar': global $prodtypes; return $prodtypes[$value[0]][0]; case 'artistid': $user=$mxuser->getuserinfo($value); return mx_getartistname($user); */ /* case 'prodtype': global $prodtypes; return $prodtypes[$value][0]; case 'prodvar': global $prodtypes; return $prodtypes[$value[0]][0]; case 'artistid': $user=$mxuser->getuserinfo($value); return mx_getartistname($user); */ case 'hiddenmemo': return '<textarea id="' . $field . '" rows="' . $fldinfo[3] . '" cols="50" name="' . $field . '"' . ' disabled>' . ($value ? $value : _('No history available')) . '</textarea>'; break; case 'html': return $value; case 'text': return $value ? $value : '<i>' . _('Undefined') . '</i>'; break; case 'friends': return $value ? $value : '<i>' . _('Undefined') . '</i>'; break; case 'quote': return '<span class="codinoma">' . $value . '</span>'; break; case 'password': $str = $value != '' ? '[' . $value . '] (' . _('generated') . ')' : str_repeat('•', 12); return $str; break; case 'integer': return $value; break; case 'boolean': global $bools; return $bools[$value]; break; case 'memo': $value = htmlspecialchars($value); $value = mx_urls2anchors($value); /*$value=preg_replace('%(https?://([^ \n,.]|(\.[a-zA-Z0-9]))+)([ .,\n]|$)%i', '<a href="\1" target="_blank">\1</a>\4',$value);*/ $value = preg_replace('%\\n%', '<br/>', $value); return $value; break; case 'simplememo': $value = htmlspecialchars($value); $value = preg_replace('%\\n%', '<br/>', $value); return $value; break; case 'update': $str = _('Updated:<br/>'); if (!$value || $value == '0000-00-00') { return $str . _('Unspecified'); } return $str . mx_difftime($value); break; case 'date': case 'timestamp': if (!$value || $value == '0000-00-00') { return _('Unspecified'); } return mx_difftime($value); break; case 'expdate': if ($value == '0000-00-00') { return _('Unspecified'); } if ($value == '9999-01-01') { return _('Never'); } if (!$value) { return _('None'); } preg_match_all('%([0-9]+)%', $value, $datevalues); $datefields = mx_infofield($field . '_d', $datevalues[1][2], array(1, $datevalues[1][2], 'integer', 2)) . '-' . mx_infofield($field . '_m', $datevalues[1][1], array(1, $datevalues[1][1], 'month')) . '-' . mx_infofield($field . '_y', $datevalues[1][0], array(1, $datevalues[1][0], 'integer', 4)); if ($fldtype == 'expdate' && $value != '9999-01-01') { $vtime = strtotime($value); if ($vtime > time() && $vtime < time() + 86400 * 7) { return '<span class="expiring">' . $datefields . '</span>'; } if ($vtime < time()) { return '<span class="expired">' . $datefields . '</span>'; } } return $datefields; break; case 'month': global $months; return $months[$value + 0]; break; case 'locale': global $languages; return $languages[$value]; break; case 'gender': global $genders; return $genders[$value]; break; case 'url': $value = mx_urls($value); return $value; break; case 'submit': return '[' . $value . ']'; break; case 'reset': return '[' . $value . ']'; break; case 'acctype': global $acctypes; return $acctypes[$value]; break; case 'status': global $statuses; return $statuses[$value]; break; case 'island': $islcnt = $mxdb->islcnt($value); if ($value == 0) { return sprintf(_('Nowhere Island [%d souls]'), $islcnt); } break; case 'archipelago': $archicnt = $mxdb->archicnt($value); if ($value == 0) { return sprintf(_('Middle Of The Sea [%d souls]'), $archicnt); } break; case 'privacy': global $privlevels; $col = 0; $privfield = '<table class="privacy"><tr>'; foreach ($privlevels as $lname => $ldesc) { $privfield .= '<td>'; if (array_search($lname, explode(',', $value)) !== false || array_search($lname, $defaultprivacy)) { $privfield .= '<span class="priv">' . $ldesc . '</span>' . (array_search($lname, $defaultprivacy) ? '<span class="mandatory"><sup>*</sup></span>' : ''); } else { $privfield .= '<span class="nopriv">' . $ldesc . '</span>'; } $privfield .= '</td>'; $col = ++$col % 4; if (!$col) { $privfield .= '</tr><tr>'; } } $privfield .= '</tr></table>'; $privfield .= '<span class="mandatoryhelp"><sup>*</sup>' . _('This information is always visible') . '</span>'; return $privfield; break; case 'filetype': global $filetypes; $ft = $filetypes[$value]; $ftfile = '/icons/mediatype_' . $value . '.png'; if (file_exists(mx_option('templatedir') . $ftfile)) { return '<img class="mediatype" src="' . mx_option('templateURL') . $ftfile . '"' . ' alt="' . $ft . '"/>'; } return $ft; break; case 'mediatype': global $filetypes; $ft = $filetypes[$value]; return $ft; break; case 'completion': global $completions; if (!$value) { $value = MXMEDIANOSTATUS; } return $completions[$value]; break; case 'mediastatus': global $mediastatuses; return $mediastatuses[$value]; break; case 'pubstatus': global $pubstatuses; return $pubstatuses[$value]; break; case 'media': global $filetypes; switch ($fldinfo[3]) { case MXMEDIAPIC: case MXMEDIABG: $w = $fldinfo[4]['video']['resolution_x']; $h = $fldinfo[4]['video']['resolution_y']; if (!$w || $w > 320) { $w = '320'; $h = ''; } return '<img src="' . $value . '"' . ($w ? ' width="' . $w . '"' : '') . ($h ? ' height="' . $h . '"' : '') . '>'; case MXMEDIAINSTR: case MXMEDIASONG: return mx_soundplayerbutton($value, $fldinfo[6]) . mx_soundplayertrack($value, $fldinfo[6]); case MXMEDIAVIDEO: return mx_videoplayerbutton($value, $fldinfo[6]) . mx_videoplayertrack($value, $fldinfo[6], $fldinfo[4], $fldinfo[5]); default: return '(Media type not yet handled)'; } break; case 'array': return mx_arraytotable($value); case 'background': $bg = $mxuser->getbackground($value); if (!$bg) { $bgpic = _('Standard'); } else { $bgpic = $bg->title; } return $bgpic . '<div class="bgtest"><img id="bgpic" src="' . $mxuser->getbackgroundurl($value) . '" /></div>'; case 'transparency': global $transparencies; return $transparencies[$value]; break; case 'bandrole': global $bandroles; if ($value == null || !array_key_exists($value, $bandroles)) { $value = MXBANDROLEOTHER; } return $bandroles[$value]; break; case 'priority': global $priorities; if ($value == null || !array_key_exists($value, $priorities)) { $value = MXLOW; } return $priorities[$value]; break; /*case 'timestamp': $today=date("%Y-m-d%"); $yesterday=date("%Y-m-d%",time()-86400); $value=preg_replace($today,_('Today'),$value); $value=preg_replace($yesterday,_('Yesterday'),$value); return $value; break;*/ /*case 'timestamp': $today=date("%Y-m-d%"); $yesterday=date("%Y-m-d%",time()-86400); $value=preg_replace($today,_('Today'),$value); $value=preg_replace($yesterday,_('Yesterday'),$value); return $value; break;*/ case 'picture': //return '<img src="'.mx_fanpic($mxuser->id,'large',$mxuser->gender,is_artist()).'"/>'; if (!$value) { return ''; } if (!is_object($value)) { return '<img class="dirpic" src="' . $value . '"/>'; } else { return '<img class="' . ($value->type == 'person' ? 'dirpic' : 'bundlepic') . '" tag="' . $value->id . '" src="' . $value->pic . '"/>'; } break; case 'dragdroppic': //return '<img src="'.mx_fanpic($mxuser->id,'large',$mxuser->gender,is_artist()).'"/>'; if (!$value) { return ''; } return '<img class="dirpic' . ($value->type == MXMEDIAPIC || $value->type == MXMEDIABG ? ' dragpic' : ' droppic') . '" tag="' . $value->id . '" src="' . $value->pic . '"/>'; break; case 'actions': $str = '<div class="actionmenu"><ul>'; if ($value) { foreach ($value as $vaction) { $str .= '<li><a href="' . $vaction[1] . '" alt="' . $vaction[0] . '">' . $vaction[0] . '</a></li>'; } } else { $str .= '<li class="inactive"><span class="inactive">' . _('No action') . '</span></li>'; } $str .= '</ul></div>'; return $str; break; case 'msgfld': return $value . '<div class="hidden" id="' . $field . '">' . $value . '</div>'; break; case 'msgflags': $str = ''; if ($value & MXFRIENDREQUEST) { $str .= _('Friendship'); } return $str ? $str : _('Message'); break; case 'notif': global $notifs; return $notifs[$value ? $value : MXEMAILNOTIF]; break; default: return mx_infofield($field, $value, 'text'); break; } }