You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

142 lines
5.8 KiB

<?php
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
/*
* AJAXified Shoutbox module (jonnybradley for mpvolt Aug/Sept 2008 - de-AJAXified for Tiki 7 Dec 2010 jb)
*
* Anonymous may need tiki_p_view_shoutbox and tiki_p_post_shoutbox setting (in Group admin)
* Enable Admin/Wiki/Wiki Features/feature_antibot to prevent spam ("Anonymous editors must input anti-bot code")
*
*/
/*
* Added twitter+facebook support (joernott for poiesipedia.com May 2010)
*
* Requires a site registration with twitter/facebook to receive site consumer key/secret.
* The user must authorize the site by requesting an oauth token via tiki-socialnetworks.php.
*
*/
//this script may only be included - so its better to die if called directly.
if (strpos($_SERVER['SCRIPT_NAME'], basename(__FILE__)) !== false) {
header('location: index.php');
exit;
}
/**
* @return array
*/
function module_shoutbox_info()
{
return [
'name' => tra('Shoutbox'),
'description' => tra('The shoutbox is a quick messaging tool. Messages reload each time the page changes. Anyone with the right permission can see all messages. Another permission allows messages to be sent..'),
'prefs' => ['feature_shoutbox'],
'documentation' => 'Module shoutbox',
'params' => [
'tooltip' => [
'name' => tra('Tooltip'),
'description' => tra('If set to "1", displays message post dates and times as tooltips instead of showing directly in the module content.') . " " . tr('Default:') . '"0".',
'filter' => 'word'
],
'buttontext' => [
'name' => tra('Button label'),
'description' => tra('Label on the button to post a message.') . ' ' . tra('Default:') . ' ' . tra('Post')
],
'waittext' => [
'name' => tra('Wait label'),
'description' => tra('Label on the button to post a message when the message is being posted if AJAX is enabled.') . ' ' . tra('Default:') . ' ' . tra('Please wait...')
],
'maxrows' => [
'name' => tra('Maximum messages shown'),
'description' => tra('Number of messages to display.') . ' ' . tra('Default:') . ' 5.',
'filter' => 'int'
],
'tweet' => [
'name' => tra('Tweet'),
'description' => tra('If set to "1" and the user has authorized us to tweet messages with Twitter, the user can decide, if he wants to shout via Twitter.'),
'filter' => 'word'
],
'facebook' => [
'name' => tra('Facebook'),
'description' => tra('If set to "1" and the user has authorized us with Facebook, the user can decide, if he wants to add the shout to his Facebook wall.'),
'filter' => 'word'
]
]
];
}
/**
* @param $inFormValues
*/
function doProcessShout($inFormValues)
{
global $shoutboxlib, $user, $prefs;
$captchalib = TikiLib::lib('captcha');
$smarty = TikiLib::lib('smarty');
// $smarty->assign('tweet',$inFormValues['tweet']);
if (array_key_exists('shout_msg', $inFormValues) && strlen($inFormValues['shout_msg']) > 2) {
if (empty($user) && $prefs['feature_antibot'] == 'y' && (! $captchalib->validate())) {
$smarty->assign('shout_error', $captchalib->getErrors());
$smarty->assign_by_ref('shout_msg', $inFormValues['shout_msg']);
} else {
$shoutboxlib->replace_shoutbox(0, $user, $inFormValues['shout_msg'], ($inFormValues['shout_tweet'] == 1), ($inFormValues['shout_facebook'] == 1));
}
}
}
/**
* @param $mod_reference
* @param $module_params
*/
function module_shoutbox($mod_reference, $module_params)
{
global $shoutboxlib, $prefs, $user, $tiki_p_view_shoutbox;
global $tiki_p_admin_shoutbox, $tiki_p_post_shoutbox, $base_url;
$access = TikiLib::lib('access');
$smarty = TikiLib::lib('smarty');
$tikilib = TikiLib::lib('tiki');
include_once('lib/shoutbox/shoutboxlib.php');
if ($tiki_p_view_shoutbox == 'y') {
if (isset($_REQUEST['shout_remove'])) {
$info = $shoutboxlib->get_shoutbox($_REQUEST['shout_remove']);
if ($tiki_p_admin_shoutbox == 'y' || $info['user'] == $user) {
$access->check_authenticity();
$shoutboxlib->remove_shoutbox($_REQUEST["shout_remove"]);
}
}
if ($tiki_p_post_shoutbox == 'y') {
if (isset($_REQUEST['shout_send'])) {
doProcessShout($_REQUEST);
}
}
$maxrows = isset($module_params['maxrows']) ? $module_params['maxrows'] : 5;
$shout_msgs = $shoutboxlib->list_shoutbox(0, $maxrows, 'timestamp_desc', '');
$smarty->assign('shout_msgs', $shout_msgs['data']);
// Subst module parameters
$smarty->assign('tooltip', isset($module_params['tooltip']) ? $module_params['tooltip'] : 0);
$smarty->assign('buttontext', isset($module_params['buttontext']) ? $module_params['buttontext'] : tra('Post'));
$smarty->assign('waittext', isset($module_params['waittext']) ? $module_params['waittext'] : tra('Please wait...'));
$smarty->assign(
'tweet',
isset($module_params['tweet']) && ($tikilib->get_user_preference($user, 'twitter_token') != '') ? $module_params['tweet'] : '0'
);
$smarty->assign(
'facebook',
isset($module_params['facebook']) && ($tikilib->get_user_preference($user, 'facebook_token') != '') ? $module_params['facebook'] : '0'
);
}
}