<?php
/**
* [PHPFOX_HEADER]
*/
defined('PHPFOX') or exit('NO DICE!');
/**
*
*
* @copyright [PHPFOX_COPYRIGHT]
* @author Raymond Benc
* @package Phpfox_Ajax
* @version $Id: ajax.class.php 7092 2014-02-05 21:42:42Z Fern $
*/
class Feed_Component_Ajax_Ajax extends Phpfox_Ajax
{
public function checkNew()
{
$iLastFeedUpdate = $this->get('iLastFeedUpdate');
//Make sure feed loaded
if ($iLastFeedUpdate > 0 ){
define('PHPFOX_CHECK_FOR_UPDATE_FEED',true);
define('PHPFOX_CHECK_FOR_UPDATE_FEED_UPDATE', $iLastFeedUpdate);
Phpfox::getBlock('feed.checknew');
$this->html('#js_new_feed_update', $this->getContent(false));
$this->call('$Core.loadInit();');
}
}
public function loadNew()
{
$iLastFeedUpdate = $this->get('iLastFeedUpdate');
define('FEED_LOAD_MORE_NEWS', false);
define('FEED_LOAD_NEW_NEWS', true);
define('PHPFOX_CHECK_FOR_UPDATE_FEED',true);
define('PHPFOX_CHECK_FOR_UPDATE_FEED_UPDATE', $iLastFeedUpdate);
if ($this->get('callback_module_id') == 'pages' && Pages_Service_Pages::instance()->isTimelinePage($this->get('callback_item_id')))
{
define('PAGE_TIME_LINE', true);
}
Phpfox::getBlock('feed.display');
if (!$this->get('forceview') && !$this->get('resettimeline'))
{
$this->html('#js_new_feed_comment','');
$this->insertAfter('#js_new_feed_comment', $this->getContent(false));
}
else
{
$this->html('#js_new_feed_comment','');
$this->insertAfter('#js_new_feed_comment', $this->getContent(false));
}
$this->call('$Core.loadInit();');
}
public function loadDropDates()
{
Phpfox::getBlock('feed.loaddates');
$sContent = $this->getContent(false);
$sContent = str_replace(array("\n", "\t"), '', $sContent);
$this->html('.timeline_date_holder_share', $sContent);
}
public function share()
{
$aPost = $this->get('val');
if ($aPost['post_type'] == '2')
{
if (!isset($aPost['friends']) || (isset($aPost['friends']) && !count($aPost['friends'])))
{
Phpfox_Error::set(_p('select_a_friend_to_share_this_with_dot'));
}
else
{
$iCnt = 0;
foreach ($aPost['friends'] as $iFriendId)
{
$aVals = array(
'user_status' => $aPost['post_content'],
'parent_user_id' => $iFriendId,
'parent_feed_id' => $aPost['parent_feed_id'],
'parent_module_id' => $aPost['parent_module_id']
);
if (User_Service_Privacy_Privacy::instance()->hasAccess($iFriendId, 'feed.share_on_wall') && Phpfox::getUserParam('profile.can_post_comment_on_profile'))
{
$iCnt++;
Feed_Service_Process::instance()->addComment($aVals);
}
}
$sMessage = '<div class="message">' . str_replace("'", "\\'", _p('successfully_shared_this_item_on_your_friends_wall')) . '</div>';
if (!$iCnt)
{
$sMessage = '<div class="error_message">' . str_replace("'", "\\'", _p('unable_to_share_this_post_due_to_privacy_settings')) . '</div>';
}
$this->call('$(\'#\' + tb_get_active()).find(\'.js_box_content:first\').html(\'' . $sMessage . '\');');
if ($iCnt)
{
$this->call('setTimeout(\'tb_remove();\', 2000);');
}
}
$this->call('$("#btnShareFeed").removeAttr("disabled");');
return null;
}
$aVals = array(
'user_status' => $aPost['post_content'],
'privacy' => '0',
'privacy_comment' => '0',
'parent_feed_id' => $aPost['parent_feed_id'],
'parent_module_id' => $aPost['parent_module_id'],
'no_check_empty_user_status' => true,
);
if (($iId = User_Service_Process::instance()->updateStatus($aVals)))
{
$this->call('$(\'#\' + tb_get_active()).find(\'.js_box_content:first\').html(\'<div class="message">' . str_replace("'", "\\'", _p('successfully_shared_this_item')) . '</div>\'); setTimeout(\'tb_remove();\', 2000);');
}
else {
$this->call("$('#btnShareFeed').attr('disabled', false); $('#imgShareFeedLoading').hide();");
}
}
public function addComment()
{
Phpfox::isUser(true);
$aVals = (array) $this->get('val');
if (Phpfox::getLib('parse.format')->isEmpty($aVals['user_status']))
{
$this->alert(_p('add_some_text_to_share'));
$this->call('$Core.activityFeedProcess(false);');
return false;
}
if (isset($aVals['parent_user_id']) && $aVals['parent_user_id'] > 0 && !($aVals['parent_user_id'] == Phpfox::getUserId() || (Phpfox::getUserParam('profile.can_post_comment_on_profile') && User_Service_Privacy_Privacy::instance()->hasAccess('' . $aVals['parent_user_id'] . '', 'feed.share_on_wall')))) {
$this->alert(_p('You don\'t have permission to post comment on this profile.'));
$this->call('$Core.activityFeedProcess(false);');
return false;
}
/* Check if user chose an egift */
if (Phpfox::isModule('egift') && isset($aVals['egift_id']) && !empty($aVals['egift_id']))
{
/* is this gift a free one? */
$aGift = Egift_Service_Egift::instance()->getEgift($aVals['egift_id']);
if (!empty($aGift))
{
$bIsFree = true;
foreach ($aGift['price'] as $sCurrency => $fVal)
{
if ($fVal > 0)
{
$bIsFree = false;
}
}
/* This is an important change, in v2 birthday_id was the mail_id, in v3
* birthday_id is the feed_id
*/
$aVals['feed_type'] = 'feed_egift';
$iId = Feed_Service_Process::instance()->addComment($aVals);
// Always make an invoice, so the feed can check on the state
$iInvoice = Egift_Service_Process::instance()->addInvoice($iId, $aVals['parent_user_id'], $aGift);
if (!$bIsFree)
{
Phpfox::getBlock('api.gateway.form', [
'gateway_data' => [
'item_number' => 'egift|' . $iInvoice,
'currency_code' => User_Service_User::instance()->getCurrency(),
'amount' => $aGift['price'][User_Service_User::instance()->getCurrency()],
'item_name' => _p('egift_card_with_message') . ': ' . $aVals['user_status'] . '',
'return' => Phpfox_Url::instance()->makeUrl('friend.invoice'),
'recurring' => 0,
'recurring_cost' => '',
'alternative_cost' => 0,
'alternative_recurring_cost' => 0
]
]);
$this->call('$("#js_activity_feed_form").hide().after("' . $this->getContent(true) . '");');
}
else
{
// egift is free
Feed_Service_Feed::instance()->processAjax($iId);
}
}
}
else
{
if (isset($aVals['user_status']) && ($iId = Feed_Service_Process::instance()->addComment($aVals)))
{
Feed_Service_Feed::instance()->processAjax($iId);
}
else
{
$this->call('$Core.activityFeedProcess(false);');
}
}
}
public function viewMore()
{
define('FEED_LOAD_MORE_NEWS', true);
if ($this->get('callback_module_id') == 'pages' && Pages_Service_Pages::instance()->isTimelinePage($this->get('callback_item_id')))
{
define('PAGE_TIME_LINE', true);
}
Phpfox::getBlock('feed.display');
$this->remove('#feed_view_more');
if (!$this->get('forceview') && !$this->get('resettimeline'))
{
$this->append('#js_feed_content', $this->getContent(false));
}
else
{
$this->call('$.scrollTo(\'.timeline_left\', 800);');
$this->html('#js_feed_content', $this->getContent(false));
}
$this->call('$Core.loadInit();');
}
public function rate()
{
Phpfox::isUser(true);
list($sRating, $iLastVote) = Feed_Service_Process::instance()->rate($this->get('id'), $this->get('type'));
Phpfox::getBlock('feed.rating', array(
'sRating' => (int) $sRating,
'iFeedId' => $this->get('id'),
'bHasRating' => true,
'iLastVote' => $iLastVote
)
);
$this->html('#js_feed_rating' . $this->get('id'), $this->getContent(false));
}
public function delete()
{
if (Feed_Service_Process::instance()->deleteFeed($this->get('id'), $this->get('module', $this->get('type_id')), $this->get('item')))
{
$this->slideUp('#js_item_feed_' . $this->get('id'));
if(Phpfox::getParam('feed.refresh_activity_feed') > 0)
{
$aRows = Feed_Service_Feed::instance()->get(null, null, 0);
$aFeed = array_pop($aRows);
$this->template()->assign(array(
'aFeed' => $aFeed
)
);
$this->template()->getTemplate('feed.block.entry');
$sHtml = '<div class="js_feed_view_more_entry_holder">' . $this->getContent(true) . '</div>';
$this->call("$('#feed_view_more').before('" . $sHtml . "');");
}
$this->alert(_p('feed_successfully_deleted'), _p('feed_deletion'), 300, 150, true);
}
else
{
$this->alert(_p('unable_to_delete_this_entry'));
}
}
/* Loads Pages and results from Google Places Autocomplete given a latitude and longitude
* This function populates $Core.Feed.aPlaces with new items by passing parameters in jSon format */
public function loadEstablishments()
{
$aPages = array();
if (Phpfox::isModule('pages'))
{
$aPages = Pages_Service_Pages::instance()->getPagesByLocation( $this->get('latitude'), $this->get('longitude') );
}
if (count($aPages))
{
foreach ($aPages as $iKey => $aPage)
{
$aPages[$iKey]['geometry'] = array('latitude' => $aPage['location_latitude'], 'longitude' => $aPage['location_longitude']);
$aPages[$iKey]['name'] = $aPage['title'];
unset($aPages[$iKey]['location_latitude']);
unset($aPages[$iKey]['location_longitude']);
}
}
if (!empty($aPages))
{
$jPages = json_encode($aPages);
$this->call('$Core.Feed.storePlaces(\'' . $jPages .'\');');
}
}
public function editUserStatus(){
$iFeedId = $this->get('id');
Phpfox::getBlock('feed.edit-user-status',['id' => $iFeedId]);
}
}