Version 3.4.6
This commit is contained in:
1 parent
e4478369d8
commit
b45ea0dffb
1568 files changed
+155104
-161665
No files matched your search
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Admin Bookmarks Model
|
||||
* Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Advertisements
|
||||
* </pre>
|
||||
*
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Archive: Reader
|
||||
* By Matt Mecham
|
||||
* </pre>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Archive: Writer
|
||||
* By Matt Mecham
|
||||
* </pre>
|
||||
|
||||
@@ -1,442 +1,441 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* Archive: Reader
|
||||
* By Matt Mecham
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: ips_terabyte $
|
||||
* @copyright (c) 2010 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/company/standards.php#license
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @since 18th November 2011
|
||||
* @version $Revision: 8644 $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Restores topics that are either manually flagged or via settings
|
||||
* from the Admin CP.
|
||||
*
|
||||
* Manually flagged topics are always restored first.
|
||||
* @author matt
|
||||
*
|
||||
*/
|
||||
class classes_archive_restore
|
||||
{
|
||||
/**#@+
|
||||
* Registry objects
|
||||
*
|
||||
* @access protected
|
||||
* @var object
|
||||
*/
|
||||
protected $registry;
|
||||
protected $DB;
|
||||
protected $settings;
|
||||
protected $request;
|
||||
protected $lang;
|
||||
protected $member;
|
||||
protected $memberData;
|
||||
protected $cache;
|
||||
protected $caches;
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* Set current app
|
||||
*/
|
||||
private $_app = '';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
/* Make registry objects */
|
||||
$this->registry = ipsRegistry::instance();
|
||||
$this->DB = $this->registry->DB();
|
||||
$this->settings =& $this->registry->fetchSettings();
|
||||
$this->request =& $this->registry->fetchRequest();
|
||||
$this->lang = $this->registry->getClass('class_localization');
|
||||
$this->member = $this->registry->member();
|
||||
$this->memberData =& $this->registry->member()->fetchMemberData();
|
||||
$this->cache = $this->registry->cache();
|
||||
$this->caches =& $this->registry->cache()->fetchCaches();
|
||||
|
||||
/* Check for class_forums */
|
||||
if ( ipsRegistry::isClassLoaded('class_forums') !== TRUE )
|
||||
{
|
||||
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/forums/class_forums.php", 'class_forums', 'forums' );
|
||||
$this->registry->setClass( 'class_forums', new $classToLoad( $this->registry ) );
|
||||
$this->registry->class_forums->forumsInit();
|
||||
}
|
||||
|
||||
/* Language class */
|
||||
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'public_global' ), 'core' );
|
||||
|
||||
/* Fetch engine class */
|
||||
$this->settings['archive_engine'] = ( $this->settings['archive_engine'] ) ? $this->settings['archive_engine'] : 'sql';
|
||||
|
||||
/* Load up archive class */
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/restore/' . $this->settings['archive_engine'] . '.php', 'classes_archive_restore_' . $this->settings['archive_engine'] );
|
||||
$this->engine = new $classToLoad();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current application
|
||||
* @param string $app
|
||||
*/
|
||||
public function setApp( $app )
|
||||
{
|
||||
$this->_app = $app;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the application
|
||||
* @return string
|
||||
*/
|
||||
public function getApp()
|
||||
{
|
||||
return $this->_app;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore posts to the topic
|
||||
* @param array INTS
|
||||
*/
|
||||
public function restore( $pids=array() )
|
||||
{
|
||||
if ( ! count( $pids ) )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
$topics = array();
|
||||
$forumIds = array();
|
||||
$completedTopics = array();
|
||||
$workingTopics = array();
|
||||
$maxes = array();
|
||||
|
||||
/* Load the attachments stuff */
|
||||
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' );
|
||||
$class_attach = new $classToLoad( $this->registry );
|
||||
$class_attach->type = 'post';
|
||||
$class_attach->init();
|
||||
|
||||
/* Load the attachments stuff */
|
||||
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . '/sources/classes/topics.php', 'app_forums_classes_topics' );
|
||||
$topicClass = new $classToLoad( $this->registry );
|
||||
|
||||
/* Fetch data based on PIDs */
|
||||
$posts = $topicClass->getPosts( array( 'postId' => $pids,
|
||||
'sortField' => 'pid',
|
||||
'sortOrder' => 'asc',
|
||||
'isArchivedTopic' => true ,
|
||||
'skipForumCheck' => true,
|
||||
'postType' => array('sdelete', 'visible', 'hidden', 'pdeleted')
|
||||
|
||||
) );
|
||||
foreach( $posts as $pid => $post )
|
||||
{
|
||||
/* Write it */
|
||||
$this->engine->set( $post );
|
||||
|
||||
/* Collect some data */
|
||||
if ( ! in_array( $post['tid'], $topics ) )
|
||||
{
|
||||
$post['_pids'] = 1;
|
||||
$post['_lowPid'] = $post['archive_id'];
|
||||
$post['_maxPid'] = $post['archive_id'];
|
||||
$post['_topicCount'] = ( intval( $post['posts'] ) + intval( $post['topic_deleted_posts'] ) + intval( $post['topic_queuedposts'] ) + 1 );
|
||||
$topics[ $post['tid'] ] = $post;
|
||||
}
|
||||
else
|
||||
{
|
||||
$topics[ $post['tid'] ]['_maxPid'] = $post['archive_id'];
|
||||
$topics[ $post['tid'] ]['_pids']++;
|
||||
}
|
||||
|
||||
/* Collect fids */
|
||||
$forums[ $post['forum_id'] ] = $post['forum_id'];
|
||||
}
|
||||
|
||||
/* Get the maxes */
|
||||
/* junk!!!
|
||||
$this->DB->build( array( 'select' => 'topic_id, MAX(pid) as i',
|
||||
'from' => 'posts',
|
||||
'where' => 'topic_id IN (' . implode( ',', array_keys( $topics ) ) . ')',
|
||||
'group' => 'topic_id' ) );
|
||||
|
||||
$o = $this->DB->execute();
|
||||
|
||||
while( $t = $this->DB->fetch( $o ) )
|
||||
{
|
||||
$maxes[ $t['topic_id'] ] = intval( $t['i'] );
|
||||
}
|
||||
*/
|
||||
foreach( array_keys( $topics ) as $t )
|
||||
{
|
||||
$maxes[ $t ] = intval( $this->engine->getMaxPidInTid( $t ) );
|
||||
}
|
||||
/* Figure out how many topics have been completed */
|
||||
foreach( $topics as $tid => $data )
|
||||
{
|
||||
/* First pid matches topic first pid, so we have the first post in the topic
|
||||
* but have we got all the posts in this topic?
|
||||
*/
|
||||
if ( $maxes[ $tid ] == $data['_maxPid'] )
|
||||
{
|
||||
$completedTopics[] = $data['tid'];
|
||||
}
|
||||
else if ( $maxes[ $tid ] > $data['_maxPid'] )
|
||||
{
|
||||
/* If this is true, the local post table has a higher PID than the archive table
|
||||
and this should never happen, so lets investigate */
|
||||
$_topic = $this->DB->buildAndFetch( array( 'select' => 'posts', 'from' => 'topics', 'where' => 'tid=' . intval( $tid ) ) );
|
||||
$_post = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as count', 'from' => 'posts', 'where' => 'topic_id=' . intval( $tid ) ) );
|
||||
|
||||
/* Local database has all the data.. so lets call it done */
|
||||
if ( ( $_topic['posts'] + 1 ) == $_post['count'] )
|
||||
{
|
||||
$completedTopics[] = $data['tid'];
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Be cautious */
|
||||
$workingTopics[] = $data['tid'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$workingTopics[] = $data['tid'];
|
||||
}
|
||||
}
|
||||
|
||||
/* Update completed */
|
||||
if ( count( $completedTopics ) )
|
||||
{
|
||||
$this->DB->update( 'topics', array( 'topic_archive_status' => $this->registry->class_forums->fetchTopicArchiveFlag( 'exclude' ) ), 'tid IN(' . implode( ',', $completedTopics ) . ')' );
|
||||
|
||||
/* Archive attachments */
|
||||
$class_attach->bulkUnarchive( $completedTopics, 'attach_parent_id' );
|
||||
|
||||
/* Remove posts */
|
||||
$this->engine->removePostsByTids( $completedTopics );
|
||||
}
|
||||
|
||||
/* Flag as archived */
|
||||
$this->engine->setAsRestoredByPids( array_keys ( $posts ) );
|
||||
|
||||
/* Do forums */
|
||||
foreach( $forums as $id )
|
||||
{
|
||||
$this->registry->class_forums->forumRebuild( $id );
|
||||
}
|
||||
|
||||
/* Log it */
|
||||
$this->log( array_keys ( $posts ), true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a batch. Genius.
|
||||
* $options is an array of keys and values:
|
||||
* process - INT - number of items to process in this batch
|
||||
* @return int count of topics archived
|
||||
*/
|
||||
public function processBatch( $options=array() )
|
||||
{
|
||||
$restoreData = $this->getRestoreData();
|
||||
$topics = array();
|
||||
$forums = array();
|
||||
$pids = array();
|
||||
|
||||
/* Fix up options */
|
||||
$options['process'] = ( is_numeric( $options['process'] ) && $options['process'] > 0 ) ? $options['process'] : 250;
|
||||
|
||||
if ( ! $restoreData['restore_min_tid'] && ! $restoreData['restore_max_tid'] && ! count( $restoreData['restore_manual_tids'] ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Any manually flagged? */
|
||||
if ( count( $restoreData['restore_manual_tids'] ) )
|
||||
{
|
||||
/* Select remaining Pids */
|
||||
$pids = $this->engine->getPidsInTids( IPSLib::cleanIntArray( array_keys( $restoreData['restore_manual_tids'] ) ), $options['process'] );
|
||||
|
||||
/* Did we complete topics? */
|
||||
foreach( $restoreData['restore_manual_tids'] as $tid => $maxPid )
|
||||
{
|
||||
if ( in_array( $maxPid, array_keys( $pids ) ) )
|
||||
{
|
||||
$this->deleteManualId( $tid );
|
||||
}
|
||||
}
|
||||
|
||||
/* All done? */
|
||||
if ( ! count( $pids ) )
|
||||
{
|
||||
$restoreData['restore_manual_tids'] = array();
|
||||
|
||||
$this->setRestoreData( $restoreData );
|
||||
}
|
||||
|
||||
/* Update process for below */
|
||||
$options['process'] -= count( $pids );
|
||||
}
|
||||
|
||||
/* Now fetch the max/min if archiver is on */
|
||||
if ( $this->settings['archive_on'] && $options['process'] > 0 && $restoreData['restore_min_tid'] && $restoreData['restore_max_tid'] )
|
||||
{
|
||||
$date = IPS_UNIX_TIME_NOW - ( 86400 * intval( $this->settings['archive_restore_days'] ) );
|
||||
|
||||
$pids = $this->engine->getPidsBetweenTidsAndDate( $restoreData['restore_min_tid'], $restoreData['restore_max_tid'], $date, $options['process'] );
|
||||
|
||||
/* All done? */
|
||||
if ( ! count( $pids ) )
|
||||
{
|
||||
$restoreData['restore_min_tid'] = 0;
|
||||
$restoreData['restore_max_tid'] = 0;
|
||||
|
||||
$this->setRestoreData( $restoreData );
|
||||
}
|
||||
}
|
||||
|
||||
/* Process */
|
||||
$this->restore( $pids );
|
||||
|
||||
return count( $pids );
|
||||
}
|
||||
|
||||
/**
|
||||
* Flag an item for manual unarchive
|
||||
* @param int $id
|
||||
*/
|
||||
public function setManualUnarchive( $id )
|
||||
{
|
||||
/* Init */
|
||||
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/topics.php", 'app_forums_classes_topics', 'forums' );
|
||||
$topicClass = new $classToLoad( $this->registry );
|
||||
|
||||
$topic = $topicClass->getTopicById( $id );
|
||||
|
||||
if ( $topic['tid'] && $this->registry->class_forums->fetchArchiveTopicType( $topic ) == 'archived' )
|
||||
{
|
||||
$topicClass->updateTopic( $topic['tid'], array( 'topic_archive_status' => $this->registry->class_forums->fetchTopicArchiveFlag('restore') ) );
|
||||
|
||||
$this->insertManualId( $id );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an ID to the manual restore filter
|
||||
*/
|
||||
public function insertManualId( $id )
|
||||
{
|
||||
$data = $this->getRestoreData();
|
||||
$max = $this->engine->getMaxPidInTid( $id );
|
||||
|
||||
$data['restore_manual_tids'][ $id ] = $max;
|
||||
|
||||
$this->setRestoreData( $data );
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete an ID from the manual restore filter
|
||||
*/
|
||||
public function deleteManualId( $id )
|
||||
{
|
||||
$data = $this->getRestoreData();
|
||||
|
||||
if ( in_array( $id, array_keys( $data['restore_manual_tids'] ) ) )
|
||||
{
|
||||
unset( $data['restore_manual_tids'][ $id ] );
|
||||
|
||||
$this->setRestoreData( $data );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get restore data
|
||||
*/
|
||||
public function getRestoreData()
|
||||
{
|
||||
$data = $this->DB->buildAndFetch( array( 'select' => '*',
|
||||
'from' => 'core_archive_restore' ) );
|
||||
|
||||
if ( IPSLib::isSerialized( $data['restore_manual_tids'] ) )
|
||||
{
|
||||
$data['restore_manual_tids'] = unserialize( $data['restore_manual_tids'] );
|
||||
}
|
||||
else
|
||||
{
|
||||
$data['restore_manual_tids'] = array();
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set restore data
|
||||
* @param array
|
||||
*/
|
||||
public function setRestoreData( $data )
|
||||
{
|
||||
if ( is_array( $data['restore_manual_tids'] ) )
|
||||
{
|
||||
$data['restore_manual_tids'] = serialize( $data['restore_manual_tids'] );
|
||||
}
|
||||
|
||||
$data['restore_min_tid'] = intval( $data['restore_min_tid'] );
|
||||
$data['restore_max_tid'] = intval( $data['restore_max_tid'] );
|
||||
|
||||
$this->DB->delete( 'core_archive_restore');
|
||||
$this->DB->insert( 'core_archive_restore', $data );
|
||||
}
|
||||
|
||||
/**
|
||||
* Take an archive row and returned native friendly array
|
||||
* @param array $post
|
||||
* @return array
|
||||
*/
|
||||
public function archiveToNativeFields( $post )
|
||||
{
|
||||
$native = array( 'pid' => intval( $post['archive_id'] ),
|
||||
'author_id' => intval( $post['archive_author_id'] ),
|
||||
'author_name' => $post['archive_author_name'],
|
||||
'ip_address' => $post['archive_ip_address'],
|
||||
'post_date' => intval( $post['archive_content_date'] ),
|
||||
'post' => $post['archive_content'],
|
||||
'queued' => $post['archive_queued'],
|
||||
'topic_id' => intval( $post['archive_topic_id'] ),
|
||||
'new_topic' => intval( $post['archive_is_first'] ),
|
||||
'post_bwoptions' => $post['archive_bwoptions'],
|
||||
'post_key' => $post['archive_attach_key'],
|
||||
'post_htmlstate' => $post['archive_html_mode'],
|
||||
'use_sig' => $post['archive_show_signature'],
|
||||
'use_emo' => $post['archive_show_emoticons'],
|
||||
'append_edit' => $post['archive_show_edited_by'],
|
||||
'edit_time' => $post['archive_edit_time'],
|
||||
'edit_name' => $post['archive_edit_name'],
|
||||
'post_edit_reason' => $post['archive_edit_reason'] );
|
||||
|
||||
return $native;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs archive action
|
||||
* @param array $ids
|
||||
*/
|
||||
public function log( $ids )
|
||||
{
|
||||
$this->DB->insert( 'core_archive_log', array( 'archlog_date' => IPS_UNIX_TIME_NOW,
|
||||
'archlog_app' => $this->getApp(),
|
||||
'archlog_ids' => serialize( $ids ),
|
||||
'archlog_is_restore' => 1,
|
||||
'archlog_count' => count( $ids ) ) );
|
||||
}
|
||||
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.6
|
||||
* Archive: Reader
|
||||
* By Matt Mecham
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: ips_terabyte $
|
||||
* @copyright (c) 2010 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/company/standards.php#license
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @since 18th November 2011
|
||||
* @version $Revision: 8644 $
|
||||
*/
|
||||
|
||||
/**
|
||||
* Restores topics that are either manually flagged or via settings
|
||||
* from the Admin CP.
|
||||
*
|
||||
* Manually flagged topics are always restored first.
|
||||
* @author matt
|
||||
*
|
||||
*/
|
||||
class classes_archive_restore
|
||||
{
|
||||
/**#@+
|
||||
* Registry objects
|
||||
*
|
||||
* @access protected
|
||||
* @var object
|
||||
*/
|
||||
protected $registry;
|
||||
protected $DB;
|
||||
protected $settings;
|
||||
protected $request;
|
||||
protected $lang;
|
||||
protected $member;
|
||||
protected $memberData;
|
||||
protected $cache;
|
||||
protected $caches;
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* Set current app
|
||||
*/
|
||||
private $_app = '';
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
/* Make registry objects */
|
||||
$this->registry = ipsRegistry::instance();
|
||||
$this->DB = $this->registry->DB();
|
||||
$this->settings =& $this->registry->fetchSettings();
|
||||
$this->request =& $this->registry->fetchRequest();
|
||||
$this->lang = $this->registry->getClass('class_localization');
|
||||
$this->member = $this->registry->member();
|
||||
$this->memberData =& $this->registry->member()->fetchMemberData();
|
||||
$this->cache = $this->registry->cache();
|
||||
$this->caches =& $this->registry->cache()->fetchCaches();
|
||||
|
||||
/* Check for class_forums */
|
||||
if ( ipsRegistry::isClassLoaded('class_forums') !== TRUE )
|
||||
{
|
||||
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/forums/class_forums.php", 'class_forums', 'forums' );
|
||||
$this->registry->setClass( 'class_forums', new $classToLoad( $this->registry ) );
|
||||
$this->registry->class_forums->forumsInit();
|
||||
}
|
||||
|
||||
/* Language class */
|
||||
$this->registry->getClass('class_localization')->loadLanguageFile( array( 'public_global' ), 'core' );
|
||||
|
||||
/* Fetch engine class */
|
||||
$this->settings['archive_engine'] = ( $this->settings['archive_engine'] ) ? $this->settings['archive_engine'] : 'sql';
|
||||
|
||||
/* Load up archive class */
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/archive/restore/' . $this->settings['archive_engine'] . '.php', 'classes_archive_restore_' . $this->settings['archive_engine'] );
|
||||
$this->engine = new $classToLoad();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current application
|
||||
* @param string $app
|
||||
*/
|
||||
public function setApp( $app )
|
||||
{
|
||||
$this->_app = $app;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the application
|
||||
* @return string
|
||||
*/
|
||||
public function getApp()
|
||||
{
|
||||
return $this->_app;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore posts to the topic
|
||||
* @param array INTS
|
||||
*/
|
||||
public function restore( $pids=array() )
|
||||
{
|
||||
if ( ! count( $pids ) )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
$topics = array();
|
||||
$forumIds = array();
|
||||
$completedTopics = array();
|
||||
$workingTopics = array();
|
||||
$maxes = array();
|
||||
|
||||
/* Load the attachments stuff */
|
||||
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'core' ) . '/sources/classes/attach/class_attach.php', 'class_attach' );
|
||||
$class_attach = new $classToLoad( $this->registry );
|
||||
$class_attach->type = 'post';
|
||||
$class_attach->init();
|
||||
|
||||
/* Load the attachments stuff */
|
||||
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . '/sources/classes/topics.php', 'app_forums_classes_topics' );
|
||||
$topicClass = new $classToLoad( $this->registry );
|
||||
|
||||
/* Fetch data based on PIDs */
|
||||
$posts = $topicClass->getPosts( array( 'postId' => $pids,
|
||||
'sortField' => 'pid',
|
||||
'sortOrder' => 'asc',
|
||||
'postType' => array('visible', 'sdelete', 'hidden', 'pdelete', 'oktoremove'),
|
||||
'skipForumCheck' => true,
|
||||
'isArchivedTopic' => true ) );
|
||||
|
||||
foreach( $posts as $pid => $post )
|
||||
{
|
||||
/* Write it */
|
||||
$this->engine->set( $post );
|
||||
|
||||
/* Collect some data */
|
||||
if ( ! in_array( $post['tid'], $topics ) )
|
||||
{
|
||||
$post['_pids'] = 1;
|
||||
$post['_lowPid'] = $post['archive_id'];
|
||||
$post['_maxPid'] = $post['archive_id'];
|
||||
$post['_topicCount'] = ( intval( $post['posts'] ) + intval( $post['topic_deleted_posts'] ) + intval( $post['topic_queuedposts'] ) + 1 );
|
||||
$topics[ $post['tid'] ] = $post;
|
||||
}
|
||||
else
|
||||
{
|
||||
$topics[ $post['tid'] ]['_maxPid'] = $post['archive_id'];
|
||||
$topics[ $post['tid'] ]['_pids']++;
|
||||
}
|
||||
|
||||
/* Collect fids */
|
||||
$forums[ $post['forum_id'] ] = $post['forum_id'];
|
||||
}
|
||||
|
||||
foreach( $topics AS $k => $v )
|
||||
{
|
||||
$topics[$k]['_realMaxPid'] = $this->engine->getMaxPidInTid( $k );
|
||||
}
|
||||
|
||||
/* Get the maxes */
|
||||
$this->DB->build( array( 'select' => 'topic_id, MAX(pid) as i',
|
||||
'from' => 'posts',
|
||||
'where' => 'topic_id IN (' . implode( ',', array_keys( $topics ) ) . ')',
|
||||
'group' => 'topic_id' ) );
|
||||
|
||||
$o = $this->DB->execute();
|
||||
|
||||
while( $t = $this->DB->fetch( $o ) )
|
||||
{
|
||||
$maxes[ $t['topic_id'] ] = intval( $t['i'] );
|
||||
}
|
||||
|
||||
/* Figure out how many topics have been completed */
|
||||
foreach( $topics as $tid => $data )
|
||||
{
|
||||
/* First pid matches topic first pid, so we have the first post in the topic
|
||||
* but have we got all the posts in this topic?
|
||||
*/
|
||||
if ( $maxes[ $tid ] == $data['_realMaxPid'] )
|
||||
{
|
||||
$completedTopics[] = $data['tid'];
|
||||
}
|
||||
else if ( $maxes[ $tid ] > $data['_realMaxPid'] )
|
||||
{
|
||||
/* If this is true, the local post table has a higher PID than the archive table
|
||||
and this should never happen, so lets investigate */
|
||||
$_topic = $this->DB->buildAndFetch( array( 'select' => 'posts', 'from' => 'topics', 'where' => 'tid=' . intval( $tid ) ) );
|
||||
$_post = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as count', 'from' => 'posts', 'where' => 'topic_id=' . intval( $tid ) ) );
|
||||
|
||||
/* Local database has all the data.. so lets call it done */
|
||||
if ( ( $_topic['posts'] + 1 ) == $_post['count'] )
|
||||
{
|
||||
$completedTopics[] = $data['tid'];
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Be cautious */
|
||||
$workingTopics[] = $data['tid'];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$workingTopics[] = $data['tid'];
|
||||
}
|
||||
}
|
||||
|
||||
/* Update completed */
|
||||
if ( count( $completedTopics ) )
|
||||
{
|
||||
$this->DB->update( 'topics', array( 'topic_archive_status' => $this->registry->class_forums->fetchTopicArchiveFlag( 'exclude' ) ), 'tid IN(' . implode( ',', $completedTopics ) . ')' );
|
||||
|
||||
/* Archive attachments */
|
||||
$class_attach->bulkUnarchive( $completedTopics, 'attach_parent_id' );
|
||||
|
||||
/* Remove posts */
|
||||
$this->engine->removePostsByTids( $completedTopics );
|
||||
}
|
||||
|
||||
/* Flag as archived */
|
||||
$this->engine->setAsRestoredByPids( $pids );
|
||||
|
||||
/* Do forums */
|
||||
foreach( $forums as $id )
|
||||
{
|
||||
$this->registry->class_forums->forumRebuild( $id );
|
||||
}
|
||||
|
||||
/* Log it */
|
||||
$this->log( $pids, true );
|
||||
}
|
||||
|
||||
/**
|
||||
* Process a batch. Genius.
|
||||
* $options is an array of keys and values:
|
||||
* process - INT - number of items to process in this batch
|
||||
* @return int count of topics archived
|
||||
*/
|
||||
public function processBatch( $options=array() )
|
||||
{
|
||||
$restoreData = $this->getRestoreData();
|
||||
$topics = array();
|
||||
$forums = array();
|
||||
$pids = array();
|
||||
|
||||
/* Fix up options */
|
||||
$options['process'] = ( is_numeric( $options['process'] ) && $options['process'] > 0 ) ? $options['process'] : 250;
|
||||
|
||||
if ( ! $restoreData['restore_min_tid'] && ! $restoreData['restore_max_tid'] && ! count( $restoreData['restore_manual_tids'] ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Any manually flagged? */
|
||||
if ( count( $restoreData['restore_manual_tids'] ) )
|
||||
{
|
||||
/* Select remaining Pids */
|
||||
$pids = $this->engine->getPidsInTids( IPSLib::cleanIntArray( array_keys( $restoreData['restore_manual_tids'] ) ), $options['process'] );
|
||||
|
||||
/* Did we complete topics? */
|
||||
foreach( $restoreData['restore_manual_tids'] as $tid => $maxPid )
|
||||
{
|
||||
if ( in_array( $maxPid, array_keys( $pids ) ) )
|
||||
{
|
||||
$this->deleteManualId( $tid );
|
||||
}
|
||||
}
|
||||
|
||||
/* All done? */
|
||||
if ( ! count( $pids ) )
|
||||
{
|
||||
$restoreData['restore_manual_tids'] = array();
|
||||
|
||||
$this->setRestoreData( $restoreData );
|
||||
}
|
||||
|
||||
/* Update process for below */
|
||||
$options['process'] -= count( $pids );
|
||||
}
|
||||
|
||||
/* Now fetch the max/min if archiver is on */
|
||||
if ( $this->settings['archive_on'] && $options['process'] > 0 && $restoreData['restore_min_tid'] && $restoreData['restore_max_tid'] )
|
||||
{
|
||||
$date = IPS_UNIX_TIME_NOW - ( 86400 * intval( $this->settings['archive_restore_days'] ) );
|
||||
|
||||
$pids = $this->engine->getPidsBetweenTidsAndDate( $restoreData['restore_min_tid'], $restoreData['restore_max_tid'], $date, $options['process'] );
|
||||
|
||||
/* All done? */
|
||||
if ( ! count( $pids ) )
|
||||
{
|
||||
$restoreData['restore_min_tid'] = 0;
|
||||
$restoreData['restore_max_tid'] = 0;
|
||||
|
||||
$this->setRestoreData( $restoreData );
|
||||
}
|
||||
}
|
||||
|
||||
/* Process */
|
||||
$this->restore( $pids );
|
||||
|
||||
return count( $pids );
|
||||
}
|
||||
|
||||
/**
|
||||
* Flag an item for manual unarchive
|
||||
* @param int $id
|
||||
*/
|
||||
public function setManualUnarchive( $id )
|
||||
{
|
||||
/* Init */
|
||||
$classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/topics.php", 'app_forums_classes_topics', 'forums' );
|
||||
$topicClass = new $classToLoad( $this->registry );
|
||||
|
||||
$topic = $topicClass->getTopicById( $id );
|
||||
|
||||
if ( $topic['tid'] && $this->registry->class_forums->fetchArchiveTopicType( $topic ) == 'archived' )
|
||||
{
|
||||
$topicClass->updateTopic( $topic['tid'], array( 'topic_archive_status' => $this->registry->class_forums->fetchTopicArchiveFlag('restore') ) );
|
||||
|
||||
$this->insertManualId( $id );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an ID to the manual restore filter
|
||||
*/
|
||||
public function insertManualId( $id )
|
||||
{
|
||||
$data = $this->getRestoreData();
|
||||
$max = $this->engine->getMaxPidInTid( $id );
|
||||
|
||||
$data['restore_manual_tids'][ $id ] = $max;
|
||||
|
||||
$this->setRestoreData( $data );
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete an ID from the manual restore filter
|
||||
*/
|
||||
public function deleteManualId( $id )
|
||||
{
|
||||
$data = $this->getRestoreData();
|
||||
|
||||
if ( in_array( $id, array_keys( $data['restore_manual_tids'] ) ) )
|
||||
{
|
||||
unset( $data['restore_manual_tids'][ $id ] );
|
||||
|
||||
$this->setRestoreData( $data );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get restore data
|
||||
*/
|
||||
public function getRestoreData()
|
||||
{
|
||||
$data = $this->DB->buildAndFetch( array( 'select' => '*',
|
||||
'from' => 'core_archive_restore' ) );
|
||||
|
||||
if ( IPSLib::isSerialized( $data['restore_manual_tids'] ) )
|
||||
{
|
||||
$data['restore_manual_tids'] = unserialize( $data['restore_manual_tids'] );
|
||||
}
|
||||
else
|
||||
{
|
||||
$data['restore_manual_tids'] = array();
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set restore data
|
||||
* @param array
|
||||
*/
|
||||
public function setRestoreData( $data )
|
||||
{
|
||||
if ( is_array( $data['restore_manual_tids'] ) )
|
||||
{
|
||||
$data['restore_manual_tids'] = serialize( $data['restore_manual_tids'] );
|
||||
}
|
||||
|
||||
$data['restore_min_tid'] = intval( $data['restore_min_tid'] );
|
||||
$data['restore_max_tid'] = intval( $data['restore_max_tid'] );
|
||||
|
||||
$this->DB->delete( 'core_archive_restore');
|
||||
$this->DB->insert( 'core_archive_restore', $data );
|
||||
}
|
||||
|
||||
/**
|
||||
* Take an archive row and returned native friendly array
|
||||
* @param array $post
|
||||
* @return array
|
||||
*/
|
||||
public function archiveToNativeFields( $post )
|
||||
{
|
||||
$native = array( 'pid' => intval( $post['archive_id'] ),
|
||||
'author_id' => intval( $post['archive_author_id'] ),
|
||||
'author_name' => $post['archive_author_name'],
|
||||
'ip_address' => $post['archive_ip_address'],
|
||||
'post_date' => intval( $post['archive_content_date'] ),
|
||||
'post' => $post['archive_content'],
|
||||
'queued' => $post['archive_queued'],
|
||||
'topic_id' => intval( $post['archive_topic_id'] ),
|
||||
'new_topic' => intval( $post['archive_is_first'] ),
|
||||
'post_bwoptions' => $post['archive_bwoptions'],
|
||||
'post_key' => $post['archive_attach_key'],
|
||||
'post_htmlstate' => $post['archive_html_mode'],
|
||||
'use_sig' => $post['archive_show_signature'],
|
||||
'use_emo' => $post['archive_show_emoticons'],
|
||||
'append_edit' => $post['archive_show_edited_by'],
|
||||
'edit_time' => $post['archive_edit_time'],
|
||||
'edit_name' => $post['archive_edit_name'],
|
||||
'post_edit_reason' => $post['archive_edit_reason'] );
|
||||
|
||||
return $native;
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs archive action
|
||||
* @param array $ids
|
||||
*/
|
||||
public function log( $ids )
|
||||
{
|
||||
$this->DB->insert( 'core_archive_log', array( 'archlog_date' => IPS_UNIX_TIME_NOW,
|
||||
'archlog_app' => $this->getApp(),
|
||||
'archlog_ids' => serialize( $ids ),
|
||||
'archlog_is_restore' => 1,
|
||||
'archlog_count' => count( $ids ) ) );
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,175 +1,175 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* Archive: Restore
|
||||
* By Matt Mecham
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: ips_terabyte $
|
||||
* @copyright (c) 2010 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/company/standards.php#license
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @since 17th February 2010
|
||||
* @version $Revision: 8644 $
|
||||
*/
|
||||
|
||||
class classes_archive_restore_sql extends classes_archive_restore
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
/* Make registry objects */
|
||||
$this->registry = ipsRegistry::instance();
|
||||
$this->DB = $this->registry->DB();
|
||||
$this->settings =& $this->registry->fetchSettings();
|
||||
$this->request =& $this->registry->fetchRequest();
|
||||
$this->lang = $this->registry->getClass('class_localization');
|
||||
$this->member = $this->registry->member();
|
||||
$this->memberData =& $this->registry->member()->fetchMemberData();
|
||||
$this->cache = $this->registry->cache();
|
||||
$this->caches =& $this->registry->cache()->fetchCaches();
|
||||
|
||||
/* Do we have a remote DB? */
|
||||
if ( $this->settings['archive_remote_sql_database'] && $this->settings['archive_remote_sql_user'] )
|
||||
{
|
||||
if ( ! is_object( $this->registry->dbFunctions()->getDB('remoteArchive') ) )
|
||||
{
|
||||
|
||||
$this->registry->dbFunctions()->setDB( 'mysql', 'remoteArchive', array( 'sql_database' => $this->settings['archive_remote_sql_database'],
|
||||
'sql_user' => $this->settings['archive_remote_sql_user'],
|
||||
'sql_pass' => $this->settings['archive_remote_sql_pass'],
|
||||
'sql_host' => $this->settings['archive_remote_sql_host'],
|
||||
'sql_charset' => $this->settings['archive_remote_sql_charset'],
|
||||
'sql_tbl_prefix' => $this->settings['sql_tbl_prefix'],
|
||||
'catchConnectionError' => true ) );
|
||||
|
||||
|
||||
$this->remoteDB = $this->registry->dbFunctions()->getDB('remoteArchive');
|
||||
|
||||
/* Check for connection issue */
|
||||
if ( $this->remoteDB->error )
|
||||
{
|
||||
$this->connectError = $this->remoteDB->error;
|
||||
$this->remoteDB = null;
|
||||
|
||||
$this->registry->dbFunctions()->unsetDB('remoteArchive');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->remoteDB = $this->registry->dbFunctions()->getDB('remoteArchive');
|
||||
|
||||
/* Check for connection issue */
|
||||
if ( $this->remoteDB->error )
|
||||
{
|
||||
$this->connectError = $this->remoteDB->error;
|
||||
$this->remoteDB = null;
|
||||
|
||||
$this->registry->dbFunctions()->unsetDB('remoteArchive');
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->remoteDB = $this->DB;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get max PID in a TID
|
||||
*/
|
||||
public function getMaxPidInTid( $tid )
|
||||
{
|
||||
$max = $this->remoteDB->buildAndFetch( array( 'select' => 'MAX(archive_id) as i', 'from' => 'forums_archive_posts', 'where' => 'archive_topic_id=' . intval( $tid ) ) );
|
||||
|
||||
return $max['i'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch by TIDS
|
||||
*/
|
||||
public function getPidsInTids( array $tids, $limit=50 )
|
||||
{
|
||||
$pids = array();
|
||||
|
||||
/* Select remaining Pids */
|
||||
$this->remoteDB->build( array( 'select' => 'archive_id',
|
||||
'from' => 'forums_archive_posts',
|
||||
'where' => 'archive_topic_id IN(' . implode( ',', $tids ) . ') AND archive_restored=0',
|
||||
'order' => 'archive_topic_id ASC, archive_id ASC',
|
||||
'limit' => array( 0, $limit ) ) );
|
||||
|
||||
$o = $this->remoteDB->execute();
|
||||
|
||||
while( $post = $this->remoteDB->fetch( $o ) )
|
||||
{
|
||||
$pids[ $post['archive_id'] ] = $post['archive_id'];
|
||||
}
|
||||
|
||||
return $pids;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch between TIDS and date
|
||||
*
|
||||
*/
|
||||
public function getPidsBetweenTidsAndDate( $min, $max, $date=0, $limit=50 )
|
||||
{
|
||||
$this->remoteDB->build( array( 'select' => 'archive_id',
|
||||
'from' => 'forums_archive_posts',
|
||||
'where' => 'archive_content_date > ' . $date . ' AND archive_topic_id BETWEEN ' . intval( $min ) . ' AND ' . intval( $max ) . ' AND archive_restored = 0',
|
||||
'order' => 'archive_topic_id ASC, archive_id ASC',
|
||||
'limit' => array( 0, $limit ) ) );
|
||||
|
||||
$o = $this->remoteDB->execute();
|
||||
|
||||
while( $post = $this->remoteDB->fetch( $o ) )
|
||||
{
|
||||
$pids[ $post['archive_id'] ] = $post['archive_id'];
|
||||
}
|
||||
|
||||
return $pids;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove posts by TIDs
|
||||
* @param array TIDS
|
||||
*/
|
||||
public function removePostsByTids( array $tids )
|
||||
{
|
||||
if ( count( $tids ) )
|
||||
{
|
||||
$this->remoteDB->delete( 'forums_archive_posts', 'archive_topic_id IN(' . implode( ',', $tids ) . ')' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove posts by PIDs
|
||||
* @param array PIDs
|
||||
*/
|
||||
public function setAsRestoredByPids( array $pids )
|
||||
{
|
||||
if ( count( $pids ) )
|
||||
{
|
||||
$this->DB->update( 'forums_archive_posts', array( 'archive_restored' => 1 ), 'archive_id IN (' . implode( ',', $pids ) .')' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write single entry to DB
|
||||
* @param array INTS
|
||||
*/
|
||||
public function set( $data=array() )
|
||||
{
|
||||
if ( ! count( $data ) )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
$this->DB->replace( 'posts', $this->archiveToNativeFields( $data ), array( 'pid' ) );
|
||||
}
|
||||
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.6
|
||||
* Archive: Restore
|
||||
* By Matt Mecham
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: ips_terabyte $
|
||||
* @copyright (c) 2010 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/company/standards.php#license
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @since 17th February 2010
|
||||
* @version $Revision: 8644 $
|
||||
*/
|
||||
|
||||
class classes_archive_restore_sql extends classes_archive_restore
|
||||
{
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
/* Make registry objects */
|
||||
$this->registry = ipsRegistry::instance();
|
||||
$this->DB = $this->registry->DB();
|
||||
$this->settings =& $this->registry->fetchSettings();
|
||||
$this->request =& $this->registry->fetchRequest();
|
||||
$this->lang = $this->registry->getClass('class_localization');
|
||||
$this->member = $this->registry->member();
|
||||
$this->memberData =& $this->registry->member()->fetchMemberData();
|
||||
$this->cache = $this->registry->cache();
|
||||
$this->caches =& $this->registry->cache()->fetchCaches();
|
||||
|
||||
/* Do we have a remote DB? */
|
||||
if ( $this->settings['archive_remote_sql_database'] && $this->settings['archive_remote_sql_user'] )
|
||||
{
|
||||
if ( ! is_object( $this->registry->dbFunctions()->getDB('remoteArchive') ) )
|
||||
{
|
||||
|
||||
$this->registry->dbFunctions()->setDB( 'mysql', 'remoteArchive', array( 'sql_database' => $this->settings['archive_remote_sql_database'],
|
||||
'sql_user' => $this->settings['archive_remote_sql_user'],
|
||||
'sql_pass' => $this->settings['archive_remote_sql_pass'],
|
||||
'sql_host' => $this->settings['archive_remote_sql_host'],
|
||||
'sql_charset' => $this->settings['archive_remote_sql_charset'],
|
||||
'sql_tbl_prefix' => $this->settings['sql_tbl_prefix'],
|
||||
'catchConnectionError' => true ) );
|
||||
|
||||
|
||||
$this->remoteDB = $this->registry->dbFunctions()->getDB('remoteArchive');
|
||||
|
||||
/* Check for connection issue */
|
||||
if ( $this->remoteDB->error )
|
||||
{
|
||||
$this->connectError = $this->remoteDB->error;
|
||||
$this->remoteDB = null;
|
||||
|
||||
$this->registry->dbFunctions()->unsetDB('remoteArchive');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->remoteDB = $this->registry->dbFunctions()->getDB('remoteArchive');
|
||||
|
||||
/* Check for connection issue */
|
||||
if ( $this->remoteDB->error )
|
||||
{
|
||||
$this->connectError = $this->remoteDB->error;
|
||||
$this->remoteDB = null;
|
||||
|
||||
$this->registry->dbFunctions()->unsetDB('remoteArchive');
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->remoteDB = $this->DB;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get max PID in a TID
|
||||
*/
|
||||
public function getMaxPidInTid( $tid )
|
||||
{
|
||||
$max = $this->remoteDB->buildAndFetch( array( 'select' => 'MAX(archive_id) as i', 'from' => 'forums_archive_posts', 'where' => 'archive_topic_id=' . intval( $tid ) ) );
|
||||
|
||||
return $max['i'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch by TIDS
|
||||
*/
|
||||
public function getPidsInTids( array $tids, $limit=50 )
|
||||
{
|
||||
$pids = array();
|
||||
|
||||
/* Select remaining Pids */
|
||||
$this->remoteDB->build( array( 'select' => 'archive_id',
|
||||
'from' => 'forums_archive_posts',
|
||||
'where' => 'archive_topic_id IN(' . implode( ',', $tids ) . ') AND archive_restored=0',
|
||||
'order' => 'archive_topic_id ASC, archive_id ASC',
|
||||
'limit' => array( 0, $limit ) ) );
|
||||
|
||||
$o = $this->remoteDB->execute();
|
||||
|
||||
while( $post = $this->remoteDB->fetch( $o ) )
|
||||
{
|
||||
$pids[ $post['archive_id'] ] = $post['archive_id'];
|
||||
}
|
||||
|
||||
return $pids;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch between TIDS and date
|
||||
*
|
||||
*/
|
||||
public function getPidsBetweenTidsAndDate( $min, $max, $date=0, $limit=50 )
|
||||
{
|
||||
$this->remoteDB->build( array( 'select' => 'archive_id',
|
||||
'from' => 'forums_archive_posts',
|
||||
'where' => 'archive_restored = 0 AND archive_content_date > ' . $date . ' AND archive_topic_id BETWEEN ' . intval( $min ) . ' AND ' . intval( $max ),
|
||||
'order' => 'archive_topic_id ASC, archive_id ASC',
|
||||
'limit' => array( 0, $limit ) ) );
|
||||
|
||||
$o = $this->remoteDB->execute();
|
||||
|
||||
while( $post = $this->remoteDB->fetch( $o ) )
|
||||
{
|
||||
$pids[ $post['archive_id'] ] = $post['archive_id'];
|
||||
}
|
||||
|
||||
return $pids;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove posts by TIDs
|
||||
* @param array TIDS
|
||||
*/
|
||||
public function removePostsByTids( array $tids )
|
||||
{
|
||||
if ( count( $tids ) )
|
||||
{
|
||||
$this->remoteDB->delete( 'forums_archive_posts', 'archive_topic_id IN(' . implode( ',', $tids ) . ')' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove posts by PIDs
|
||||
* @param array PIDs
|
||||
*/
|
||||
public function setAsRestoredByPids( array $pids )
|
||||
{
|
||||
if ( count( $pids ) )
|
||||
{
|
||||
$this->remoteDB->update( 'forums_archive_posts', array( 'archive_restored' => 1 ), 'archive_id IN (' . implode( ',', $pids ) .')' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write single entry to DB
|
||||
* @param array INTS
|
||||
*/
|
||||
public function set( $data=array() )
|
||||
{
|
||||
if ( ! count( $data ) )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
$this->DB->replace( 'posts', $this->archiveToNativeFields( $data ), array( 'pid' ) );
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Archive: Writer
|
||||
* By Matt Mecham
|
||||
* </pre>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Back Up Model
|
||||
* Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
@@ -410,7 +410,7 @@ class ipsBackup
|
||||
|
||||
if ( ! file_put_contents( $this->_getBackUpKeyCacheFilename(), $contents ) )
|
||||
{
|
||||
trigger_error( 'Не удалось записать файл кэша системы резервного копиования' );
|
||||
trigger_error( 'Could not save cache file for back up system' );
|
||||
}
|
||||
|
||||
/* Reset table pkeys */
|
||||
@@ -726,7 +726,7 @@ class ipsBackup
|
||||
*/
|
||||
private function _getBackupServerUrl()
|
||||
{
|
||||
return 'http://gateway.backuptest.lw.ipslink.com/index.php';
|
||||
//return 'http://gateway.backuptest.lw.ipslink.com/index.php';
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Back Up Model
|
||||
* Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* IP.Content custom bbcode
|
||||
* Last Updated: $Date: 2012-06-01 13:11:08 -0400 (Fri, 01 Jun 2012) $
|
||||
* </pre>
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Simple caching class
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Control Panel Functions
|
||||
* Last Updated: $Date: 2012-11-21 14:26:15 -0500 (Wed, 21 Nov 2012) $
|
||||
* </pre>
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* ACP Restrictions
|
||||
* Last Updated: $Date: 2013-01-22 16:10:36 -0500 (Tue, 22 Jan 2013) $
|
||||
* </pre>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Manages public permissions
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Facilitates reputation plugins
|
||||
* Last Updated: $Date: 2013-03-05 09:42:55 -0500 (Tue, 05 Mar 2013) $
|
||||
* </pre>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Task Manager Library
|
||||
* Last Updated: $Date: 2012-09-18 10:15:15 -0400 (Tue, 18 Sep 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* @license http://www.invisionpower.com/company/standards.php#license
|
||||
* @package Core
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Rev: 12266 $
|
||||
* @version $Rev: 12380 $
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -23,7 +23,7 @@ class classes_comments_bootstrap
|
||||
|
||||
/**
|
||||
* Construct
|
||||
*
|
||||
*
|
||||
* @param string Comment class key (app-section)
|
||||
* @param mixed Optional extra data to pass to init() method
|
||||
*/
|
||||
@@ -80,7 +80,7 @@ abstract class classes_comments_renderer
|
||||
protected $memberData;
|
||||
protected $cache;
|
||||
protected $caches;
|
||||
/**#@-*/
|
||||
/**#@-*/
|
||||
|
||||
protected $_cache = array();
|
||||
/**
|
||||
@@ -362,6 +362,7 @@ abstract class classes_comments_renderer
|
||||
$data['thisApp'] = $app;
|
||||
$data['repType'] = $_remap['comment_id'];
|
||||
$data['enableRep'] = $this->reputationEnabled();
|
||||
$data['baseUrl'] = "app=core&module=global&section=comments&parentId={$parent['parent_id']}&fromApp={$data['fromApp']}";
|
||||
|
||||
/* Give plugin a chance to adjust */
|
||||
$adjusted = $this->preOutputAdjustment( 'commentSingle', array( 'comment' => $comment, 'data' => $data, 'parent' => $parent ) );
|
||||
@@ -527,7 +528,7 @@ abstract class classes_comments_renderer
|
||||
/* Ignored users */
|
||||
foreach( $this->member->ignored_users as $_i )
|
||||
{
|
||||
if( $_i['ignore_topics'] AND $_i['ignore_ignore_id'] == $row['author_id'] )
|
||||
if( $_i['ignore_topics'] AND $_i['ignore_ignore_id'] == $row['comment_author_id'] )
|
||||
{
|
||||
if ( ! strstr( $this->settings['cannot_ignore_groups'], ','.$row['member_group_id'].',' ) )
|
||||
{
|
||||
@@ -543,6 +544,15 @@ abstract class classes_comments_renderer
|
||||
$row['pp_reputation_points'] = $row['pp_reputation_points'] ? $row['pp_reputation_points'] : 0;
|
||||
$row['has_given_rep'] = $row['has_given_rep'] ? $row['has_given_rep'] : 0;
|
||||
$row['rep_points'] = $this->registry->repCache->getRepPoints( array( 'app' => $app, 'type' => $_remap['comment_id'], 'type_id' => $row['comment_id'], 'rep_points' => $row['rep_points'] ) );
|
||||
|
||||
if ( ! ( $this->settings['reputation_protected_groups'] && in_array( $this->memberData['member_group_id'], explode( ',', $this->settings['reputation_protected_groups'] ) ) ) && $this->memberData['_members_cache']['rep_filter'] !== '*' )
|
||||
{
|
||||
if ( $this->settings['reputation_show_content'] && $row['rep_points'] < $this->memberData['_members_cache']['rep_filter'] && $this->settings['reputation_point_types'] != 'like' )
|
||||
{
|
||||
$row['_repignored'] = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* View */
|
||||
@@ -761,7 +771,7 @@ abstract class classes_comments_renderer
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unhide a comment
|
||||
@@ -913,7 +923,7 @@ abstract class classes_comments_renderer
|
||||
* @return nowt lad
|
||||
*/
|
||||
public function sendNotifications( array $array, $comment )
|
||||
{
|
||||
{
|
||||
list( $_app, $_area ) = explode( '-', $this->whoAmI() );
|
||||
|
||||
/* Send them if they are approved */
|
||||
@@ -1109,7 +1119,7 @@ abstract class classes_comments_renderer
|
||||
/* Delete */
|
||||
$this->DB->delete( $this->table(), $_remap['comment_id'] . ' IN (' . implode( ",", $cids ) . ')' );
|
||||
|
||||
/* We also need to delete rep - Bug #37686 */
|
||||
/* We also need to delete rep - Bug #37686 */
|
||||
list( $app, $_where ) = explode( '-', $this->whoAmI() );
|
||||
|
||||
foreach( $cids as $cid )
|
||||
@@ -1203,7 +1213,7 @@ abstract class classes_comments_renderer
|
||||
|
||||
/* If we have anything.. */
|
||||
if ( count( $cids ) )
|
||||
{
|
||||
{
|
||||
/* Update array */
|
||||
$array = array( 'comment_approved' => ( $toggle == 'on' ? 1 : 0 ) );
|
||||
|
||||
@@ -1453,7 +1463,7 @@ abstract class classes_comments_renderer
|
||||
$pages = ceil( $number);
|
||||
}
|
||||
|
||||
$st = ($pages - 1) * $this->perPage();
|
||||
$st = ($pages - 1) * $this->perPage();
|
||||
|
||||
if( $showApprovalMessage )
|
||||
{
|
||||
@@ -1697,7 +1707,7 @@ abstract class classes_comments_renderer
|
||||
public function can( $type, array $array )
|
||||
{
|
||||
/* Default, so return least permissive */
|
||||
return 'NO_PERMISSION';
|
||||
return 'NO_PERMISSION';
|
||||
}
|
||||
/**
|
||||
* Unpack the repuation cache, yo.
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Editor Library: Core Class
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Editor Library: RTE (WYSIWYG) Class
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
@@ -962,7 +962,7 @@ class class_editor_module extends class_editor
|
||||
|
||||
while ( $tag_begin_loc !== FALSE )
|
||||
{
|
||||
$lowtext = mb_strtolower($text);
|
||||
$lowtext = strtolower($text);
|
||||
$tag_begin_loc = @strpos( $lowtext, $open_tag, $start_search_pos );
|
||||
$lentext = strlen($text);
|
||||
$quoted = '';
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Editor Library: Standard Class
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -3,18 +3,18 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Editor Library: RTE (WYSIWYG) Class
|
||||
* Last Updated: $Date: 2013-05-21 20:51:17 -0400 (Tue, 21 May 2013) $
|
||||
* Last Updated: $Date: 2013-10-15 10:08:51 -0400 (Tue, 15 Oct 2013) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @author $Author: AndyMillne $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/company/standards.php#license
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @since 9th March 2005 11:03
|
||||
* @version $Revision: 12263 $
|
||||
* @version $Revision: 12378 $
|
||||
*/
|
||||
|
||||
if ( ! defined( 'IN_IPB' ) )
|
||||
@@ -25,30 +25,30 @@ if ( ! defined( 'IN_IPB' ) )
|
||||
|
||||
/**
|
||||
* In an effort to simplify all the bbcode routines:
|
||||
*
|
||||
*
|
||||
* This class will take CKEditor HTML, clean it up and pass it on.
|
||||
* This means [b] will be converted to <strong>, URLs auto-linked and so on.
|
||||
* App specific BBCode ([entry] [topic]) and complex BBCode (CODE, QUOTE, MEDIA) are not parsed.
|
||||
*
|
||||
*
|
||||
* Likewise, when showing the editor, you should supply it with data in the same format: that is, parsed HTML
|
||||
* with complex app specific BBCode unparsed. A good example of this would be:
|
||||
* <strong>I am strong!</strong><br />[quote]I am a quote![/quote]
|
||||
*
|
||||
*
|
||||
* -- Legacy Issues --
|
||||
* If the setContent method detects legacy markup (that is, unparsed basic BBCode such as [b]) then it
|
||||
* will first convert it to the standard that it expects for input (HTML parsed, complex or app specific bbcode not parsed)
|
||||
*
|
||||
*
|
||||
* If setLegacyMode is true, this class will return BBCode mark-up as expected of 3.3.x and older.
|
||||
* This is recommended for code in transition as it's largely buggy and rather annoying.
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
* Test input: < > ' " & ¦ $ \ ! & ' " < > ¶
|
||||
* Should be processed as: < > ' " & ¦ $ \ ! &amp; &#39; &quot; &lt; &gt; &para;
|
||||
*/
|
||||
/**
|
||||
*
|
||||
*
|
||||
* IP.Board PHP work to display an editor
|
||||
* @author Matt
|
||||
*
|
||||
@@ -134,7 +134,7 @@ class classes_editor_composite
|
||||
* Registry objects
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
*/
|
||||
protected $registry;
|
||||
protected $DB;
|
||||
protected $settings;
|
||||
@@ -468,9 +468,9 @@ class classes_editor_composite
|
||||
|
||||
if ( isset( $options['recover'] ) )
|
||||
{
|
||||
$content = $_POST['Post'];
|
||||
$content = IPSText::xssMakeJavascriptSafe( $_POST['Post'] );
|
||||
}
|
||||
|
||||
|
||||
/* Try and sniff out entered HTML */
|
||||
if ( IN_ACP AND empty( $options['isHtml'] ) )
|
||||
{
|
||||
@@ -613,7 +613,7 @@ class classes_editor_composite
|
||||
{
|
||||
$moredetails = "<a href='{$this->registry->getClass('output')->buildUrl( "app=members&module=profile&section=warnings" )}'>{$this->lang->words['warnings_moreinfo']}</a>";
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$moredetails = "<a href='javascript:void(0);' onclick='warningPopup( this, {$warn['wl_id']} )'>{$this->lang->words['warnings_moreinfo']}</a>";
|
||||
}
|
||||
@@ -687,8 +687,11 @@ class classes_editor_composite
|
||||
$content = $parser->htmlToEditor( $content );
|
||||
}
|
||||
|
||||
$bbcodeVersion = '';
|
||||
/* Make sure the textarea isn't terminated early */
|
||||
$content = str_ireplace( '</textarea>', '</textarea>', $content );
|
||||
|
||||
$bbcodeVersion = '';
|
||||
|
||||
if ( $content )
|
||||
{
|
||||
$bbcodeVersion = $this->toPlainTextArea( $parser->postEditor( $content ) );
|
||||
@@ -748,7 +751,7 @@ class classes_editor_composite
|
||||
{
|
||||
$parser = new class_text_parser_legacy();
|
||||
$this->passSettings( $parser );
|
||||
|
||||
|
||||
$content = $parser->postEditor( $content );
|
||||
|
||||
// @link http://community.invisionpower.com/resources/bugs.html/_/ip-board/encoded-text-is-replaced-when-quoting-on-mobile-devices-r40540
|
||||
@@ -781,7 +784,7 @@ class classes_editor_composite
|
||||
{
|
||||
/* Some areas of IPB add quotes as HTML so turn it into BBCode so fromPlainTextArea can convert it back instead of htmlizing the < > chars */
|
||||
if ( stristr( $content, '<blockquote' ) )
|
||||
{
|
||||
{
|
||||
$content = $this->toPlainTextArea( $content );
|
||||
}
|
||||
|
||||
@@ -836,10 +839,14 @@ class classes_editor_composite
|
||||
$cleanContent = $this->protectMedia( $cleanContent );
|
||||
|
||||
/* Like nice neat code? Look away now */
|
||||
if ( $this->getIsHtml() AND IN_ACP )
|
||||
if ( $this->getIsHtml() AND IN_ACP AND str_replace( '<!-- isHtml:1 -->', '', $cleanContent ) !== '' )
|
||||
{
|
||||
$cleanContent = '<!-- isHtml:1 -->' . $cleanContent;
|
||||
}
|
||||
else
|
||||
{
|
||||
$cleanContent = str_replace( '<!-- isHtml:1 -->', '', $cleanContent );
|
||||
}
|
||||
|
||||
/* Reset */
|
||||
$this->setIsHtml( false );
|
||||
@@ -965,7 +972,7 @@ class classes_editor_composite
|
||||
|
||||
/**
|
||||
* Remove auto saved content
|
||||
* @param array $where options member_id = x , app = x, time = x
|
||||
* @param array $where options member_id = x , app = x, time = x
|
||||
*/
|
||||
public function removeAutoSavedContent( $where=array() )
|
||||
{
|
||||
@@ -1068,9 +1075,7 @@ class classes_editor_composite
|
||||
*/
|
||||
protected function protectMedia( $content )
|
||||
{
|
||||
$content = preg_replace( '#<a\s+?([^>]*?)href=["\']([^"\']+?)?["\']([^>]*?)?>(.+?)</a>#is', "<a data-ipb='nomediaparse' $1href='$2'$3>$4</a>" , $content );
|
||||
|
||||
//print htmlspecialchars($content);exit;
|
||||
$content = preg_replace( '#<a\s+?([^>|data-ipb=\'nomediaparse\']*?)href=["\']([^"\']+?)?["\']([^>]*?)?>(.+?)</a>#is', "<a data-ipb='nomediaparse' $1href='$2'$3>$4</a>" , $content );
|
||||
|
||||
return $content;
|
||||
}
|
||||
@@ -1612,7 +1617,7 @@ class classes_editor_composite
|
||||
. 'b,strong,i,em,u,strike,del,sup,sub,'
|
||||
/* LISTS */
|
||||
. 'ol[type|start|class],ul[type|class],li,'
|
||||
/* IMG, A */
|
||||
/* IMG, A */
|
||||
. 'img[src|width|height|title],a[href|target|title|class|rel]';
|
||||
|
||||
if ( count( $disabledTags ) )
|
||||
@@ -1715,7 +1720,7 @@ class classes_editor_composite
|
||||
* @return object
|
||||
*/
|
||||
private function _newParserObject()
|
||||
{
|
||||
{
|
||||
/* Load parser */
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser' );
|
||||
$parser = new $classToLoad();
|
||||
@@ -1861,7 +1866,7 @@ class classes_editor_composite
|
||||
if ( stristr( $content, '<' . $tag ) || stristr( $content, '<' . $tag ) )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Parse Incoming Emails
|
||||
* Last Updated: $Date: 2013-05-08 17:43:20 -0400 (Wed, 08 May 2013) $
|
||||
* </pre>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Item Marking
|
||||
* Owner: Matt "Oh Lord, why did I get assigned this?" Mecham
|
||||
* Last Updated: $Date: 2012-11-06 15:14:35 -0500 (Tue, 06 Nov 2012) $
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -4,11 +4,11 @@
|
||||
*~TERABYTE_DOC_READY~
|
||||
* $Copyright: (c) 2001 - 2011 Invision Power Services, Inc.$
|
||||
* $License: http://www.invisionpower.com/company/standards.php#license$
|
||||
* $Author: bfarber $
|
||||
* $Author: mmecham $
|
||||
* @since 11th October 2010
|
||||
* $LastChangedDate: 2013-05-17 19:05:15 -0400 (Fri, 17 May 2013) $
|
||||
* @version v3.4.5
|
||||
* $Revision: 12259 $
|
||||
* $LastChangedDate: 2013-08-14 06:45:49 -0400 (Wed, 14 Aug 2013) $
|
||||
* @version v3.4.6
|
||||
* $Revision: 12334 $
|
||||
*
|
||||
* <b>Example Usage:</b>
|
||||
* @code
|
||||
@@ -658,6 +658,9 @@ abstract class classes_like_composite
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . '/sources/classes/member/notifications.php', 'notifications' );
|
||||
$notifyLibrary = new $classToLoad( $this->registry );
|
||||
|
||||
$htmlMessage = array();
|
||||
$textMessage = array();
|
||||
|
||||
foreach( $data as $row )
|
||||
{
|
||||
if ( ! $row['like_notify_freq'] OR ! in_array( $row['like_notify_freq'], $type ) )
|
||||
@@ -689,44 +692,71 @@ abstract class classes_like_composite
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Expensively process HTML/Text versions once per language.. <#NAME#> is converted to -members:members_display_name- for processing later */
|
||||
if ( ! isset( $htmlMessage[ $row['language'] ] ) )
|
||||
{
|
||||
$buildMessage = array();
|
||||
|
||||
if ( is_array( $notificationOpts['build_message_array'] ) and count( $notificationOpts['build_message_array'] ) )
|
||||
{
|
||||
foreach( $notificationOpts['build_message_array'] as $k => $v )
|
||||
{
|
||||
$buildMessage[ $k ] = $v;
|
||||
}
|
||||
}
|
||||
|
||||
$buildMessage = array();
|
||||
$buildMessage['UNSUBCRIBE_URL'] = '-member:unsubscribe_url-';
|
||||
$notificationOpts['build_message_array']['UNSUBCRIBE_URL'] = '-member:unsubscribe_url-';
|
||||
|
||||
IPSText::getTextClass('email')->setPlainTextTemplate( IPSText::getTextClass('email')->getTemplate( $notificationOpts['email_template'], $row['language'], trim($notificationOpts['email_lang_file']), trim($notificationOpts['email_lang_app']) ) );
|
||||
|
||||
$textMessage[ $row['language'] ] = IPSText::getTextClass('email')->buildPlainTextContent( $buildMessage );
|
||||
$htmlMessage[ $row['language'] ] = IPSText::getTextClass('email')->buildHtmlContent( $buildMessage );
|
||||
}
|
||||
|
||||
$thisTextMessage = $textMessage[ $row['language'] ];
|
||||
$thisHtmlMessage = $htmlMessage[ $row['language'] ];
|
||||
|
||||
/* Add in unsubscribe link */
|
||||
$unsubKey = $row['like_app'] . ';' . $row['like_area'] . ';' . $row['like_rel_id'] . ';' . $row['like_member_id'] . ';' . $row['member_id'] . ';' . $row['email'];
|
||||
$unsubUrl = $this->registry->output->buildSEOUrl( 'app=core&module=global&section=like&do=unsubscribe&key=' . IPSText::base64_encode_urlSafe( $unsubKey ), 'publicNoSession', 'unsubscribe', 'likeunsubscribe' );
|
||||
|
||||
/* Now process the dynamic replacements */
|
||||
if ( is_array( $notificationOpts['build_message_array'] ) and count( $notificationOpts['build_message_array'] ) )
|
||||
{
|
||||
foreach( $notificationOpts['build_message_array'] as $k => $v )
|
||||
{
|
||||
if ( preg_match( '/\-member:(.+?)\-/', $v, $_matches ) )
|
||||
{
|
||||
$v = str_replace( $_matches[0], $row[$_matches[1]], $v );
|
||||
if ( $_matches[1] == 'unsubscribe_url' )
|
||||
{
|
||||
$thisHtmlMessage = str_replace( $_matches[0], $unsubUrl, $thisHtmlMessage );
|
||||
$thisTextMessage = str_replace( $_matches[0], $unsubUrl, $thisTextMessage );
|
||||
}
|
||||
else
|
||||
{
|
||||
$thisHtmlMessage = str_replace( $_matches[0], $row[ $_matches[1] ], $thisHtmlMessage );
|
||||
$thisTextMessage = str_replace( $_matches[0], $row[ $_matches[1] ], $thisTextMessage );
|
||||
}
|
||||
}
|
||||
|
||||
$buildMessage[ $k ] = $v;
|
||||
}
|
||||
}
|
||||
|
||||
$sentToIds[] = $row['like_member_id'];
|
||||
|
||||
/* Add in unsubscribe link */
|
||||
$key = $row['like_app'] . ';' . $row['like_area'] . ';' . $row['like_rel_id'] . ';' . $row['like_member_id'] . ';' . $row['member_id'] . ';' . $row['email'];
|
||||
$buildMessage['UNSUBCRIBE_URL'] = $this->registry->output->buildSEOUrl( 'app=core&module=global&section=like&do=unsubscribe&key=' . IPSText::base64_encode_urlSafe( $key ), 'publicNoSession', 'unsubscribe', 'likeunsubscribe' );
|
||||
|
||||
IPSText::getTextClass('email')->setPlainTextTemplate( IPSText::getTextClass('email')->getTemplate( $notificationOpts['email_template'], $row['language'], trim($notificationOpts['email_lang_file']), trim($notificationOpts['email_lang_app']) ) );
|
||||
IPSText::getTextClass('email')->buildPlainTextContent( $buildMessage );
|
||||
|
||||
$notifyLibrary->setMember( $row );
|
||||
$notifyLibrary->setFrom( $notificationOpts['from'] ? $notificationOpts['from'] : $this->memberData );
|
||||
$notifyLibrary->setNotificationKey( $notificationOpts['notification_key'] );
|
||||
$notifyLibrary->setNotificationUrl( $notificationOpts['notification_url'] );
|
||||
$notifyLibrary->setNotificationText( IPSText::getTextClass('email')->getPlainTextContent() );
|
||||
$notifyLibrary->setNotificationTitle( $notificationOpts['email_subject'] ? $notificationOpts['email_subject'] : IPSText::getTextClass('email')->subject );
|
||||
$notifyLibrary->setNotificationHtml( IPSText::getTextClass('email')->buildHtmlContent( $buildMessage ) );
|
||||
$notifyLibrary->setNotificationText( $thisTextMessage );
|
||||
$notifyLibrary->setNotificationHtml( $thisHtmlMessage );
|
||||
|
||||
if ( ! empty( $notificationOpts['email_only_subject'] ) && $notificationOpts['email_only_subject'] != IPSText::getTextClass('email')->subject )
|
||||
{
|
||||
$notifyLibrary->setEmailSubject( $notificationOpts['email_only_subject'], $row['language'], trim($notificationOpts['email_lang_file']), trim($notificationOpts['email_lang_app']) );
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
$notifyLibrary->sendNotification();
|
||||
@@ -1455,10 +1485,7 @@ abstract class classes_like_composite
|
||||
/* Need to apply secondary groups and grab g_perm_id if $parseMembers is false (default)
|
||||
@link http://community.invisionpower.com/tracker/issue-34691-digest-notifications-not-going-out/ */
|
||||
$row['mgroup_others'] = ($row['mgroup_others'] != '') ? IPSText::cleanPermString($row['mgroup_others']) : '';
|
||||
//by denchu
|
||||
if (is_array($this->caches['group_cache'][ $row['member_group_id'] ])){
|
||||
$row = array_merge( $row, $this->caches['group_cache'][ $row['member_group_id'] ] );
|
||||
}
|
||||
$row = $this->registry->member()->setUpSecondaryGroups( $row );
|
||||
|
||||
if( $row['topic_last_post'] )
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Generic Mapping Class
|
||||
* Owner: Matt Mecham
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Bing mapping class
|
||||
* Owner: Matt Mecham
|
||||
* Last Updated: $Date: 2013-04-30 21:56:42 -0400 (Tue, 30 Apr 2013) $
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Bing mapping class
|
||||
* Owner: Matt Mecham
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -3,9 +3,9 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Notification library
|
||||
* Last Updated: $Date: 2012-10-30 18:24:46 -0400 (Tue, 30 Oct 2012) $
|
||||
* Last Updated: $Date: 2013-10-16 12:57:41 -0400 (Wed, 16 Oct 2013) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: AndyMillne $ (Original: bfarber)
|
||||
@@ -14,7 +14,7 @@
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @since Thursday Jan 7, 2010
|
||||
* @version $Revision: 11530 $
|
||||
* @version $Revision: 12380 $
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -395,7 +395,7 @@ class notifications
|
||||
* @return array
|
||||
*/
|
||||
public function getNotificationData( $checkCallbacks=FALSE )
|
||||
{
|
||||
{
|
||||
//-----------------------------------------
|
||||
// Already stored the data?
|
||||
//-----------------------------------------
|
||||
@@ -554,7 +554,7 @@ class notifications
|
||||
|
||||
foreach( $missingTypes as $_type )
|
||||
{
|
||||
$_cache['notifications'][ $_type ] = $_default[ $_type ]['selected'];
|
||||
$_cache['notifications'][ $_type ] = array( 'selected' => $_default[ $_type ]['selected'] );
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
@@ -845,7 +845,7 @@ class notifications
|
||||
{
|
||||
$this->DB->update( 'members', 'notification_cnt=notification_cnt+1', 'member_id=' . $member['member_id'], true, true );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1006,7 +1006,7 @@ class notifications
|
||||
if ( count( $members ) )
|
||||
{
|
||||
foreach( $return as $key => $data )
|
||||
{
|
||||
{
|
||||
if ( in_array( $data['notify_from_id'], array_keys( $members ) ) )
|
||||
{
|
||||
$return[ $key ]['member'] = IPSMember::buildProfilePhoto( $members[ $data['notify_from_id'] ] );
|
||||
@@ -1321,7 +1321,7 @@ class notifications
|
||||
}
|
||||
|
||||
return intval( $_limit );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Do we have an application class?
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -3,7 +3,7 @@
|
||||
* <pre>
|
||||
* Status Updates Class
|
||||
* Holds various functions
|
||||
* Last Updated: $Date: 2013-02-13 11:25:39 -0500 (Wed, 13 Feb 2013) $
|
||||
* Last Updated: $Date: 2013-10-16 12:57:41 -0400 (Wed, 16 Oct 2013) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $author$
|
||||
@@ -12,7 +12,7 @@
|
||||
* @package IP.Board
|
||||
* @author MattMecham
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Rev: 11985 $
|
||||
* @version $Rev: 12380 $
|
||||
*
|
||||
* Example: Create new status update
|
||||
* <code>
|
||||
@@ -59,7 +59,7 @@ class memberStatus
|
||||
{
|
||||
/**
|
||||
* Registry Object Shortcuts
|
||||
*
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
protected $registry;
|
||||
@@ -90,7 +90,7 @@ class memberStatus
|
||||
* Bypass all permission checks
|
||||
*
|
||||
* Use with care, this will allow the class to be used within an API
|
||||
*
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_bypassPermChecks = false;
|
||||
@@ -194,7 +194,7 @@ class memberStatus
|
||||
* Fetch status actions
|
||||
* Default filters are last 10 status actions from everyone sorted in desc date order.
|
||||
* 'not_theirs' pulls all actions that are not on their own statuses
|
||||
* @param mixed [Array of member data OR member ID INT for member updating their status - will use ->getAuthor() if null]
|
||||
* @param mixed [Array of member data OR member ID INT for member updating their status - will use ->getAuthor() if null]
|
||||
* @param array Array of sort/filter data ( member_id [int], status_id [int], offset [int], limit [int], unix_cutoff [int], sort_dir [asc,desc], sort_field [string], 'not_theirs' [0,1] )
|
||||
*/
|
||||
public function fetchActions( $author=null, $filters=array() )
|
||||
@@ -302,8 +302,8 @@ class memberStatus
|
||||
* The 'isApproved' flag can contain true, false or null (true, approved only, false, unapproved only, null both)
|
||||
* The 'ignorePermissions' flag can be set to true (do not verify we can view) or false (pull only statuses we can see based on other filters), defaulting to false
|
||||
* getCount - returns a count of all matches without the limit
|
||||
*
|
||||
* @param mixed [Array of member data OR member ID INT for member updating their status - will use ->getAuthor() if null]
|
||||
*
|
||||
* @param mixed [Array of member data OR member ID INT for member updating their status - will use ->getAuthor() if null]
|
||||
* @param array Array of sort/filter data ( member_id [int], latest_only [0,1], offset [int], limit [int], unix_cutoff [int], sort_dir [asc,desc], sort_field [string], type [string] )
|
||||
*/
|
||||
public function fetch( $author=null, $filters=array() )
|
||||
@@ -330,7 +330,7 @@ class memberStatus
|
||||
|
||||
if ( isset( $filters['relatedTo'] ) && ! empty( $filters['relatedTo'] ) )
|
||||
{
|
||||
$where[] = "s.status_member_id=" . intval( $filters['relatedTo'] ) . ' OR s.status_author_id=' . intval( $filters['relatedTo'] );
|
||||
$where[] = "s.status_member_id=" . intval( $filters['relatedTo'] ) . ' OR s.status_author_id=' . intval( $filters['relatedTo'] );
|
||||
}
|
||||
|
||||
if ( isset( $filters['ownerOnly'] ) )
|
||||
@@ -418,7 +418,7 @@ class memberStatus
|
||||
'from' => array( 'members' => 'm' ),
|
||||
'where' => 'm.member_id=s.status_author_id',
|
||||
'type' => 'left' ),
|
||||
array(
|
||||
array(
|
||||
'from' => array( 'profile_portal' => 'pp' ),
|
||||
'where' => 'pp.pp_member_id=m.member_id',
|
||||
'type' => 'left' ) ) ) );
|
||||
@@ -508,7 +508,7 @@ class memberStatus
|
||||
if ( is_array( $row['replies'] ) )
|
||||
{
|
||||
foreach( $row['replies'] as $rid => $r )
|
||||
{
|
||||
{
|
||||
if ( $members[ $r['reply_member_id'] ] )
|
||||
{
|
||||
if ( ! isset( $members[ $r['reply_member_id'] ]['_done'] ) )
|
||||
@@ -532,7 +532,7 @@ class memberStatus
|
||||
* Fetch all replies to a status
|
||||
* Default filters are sorted on reply_date ASC
|
||||
*
|
||||
* @param mixed [Array of member data OR member ID INT for member updating their status - will use ->getAuthor() if null]
|
||||
* @param mixed [Array of member data OR member ID INT for member updating their status - will use ->getAuthor() if null]
|
||||
* @param array Array of sort/filter data ( member_id [int], latest_only [0,1], offset [int], limit [int], unix_cutoff [int], sort_dir [asc,desc], sort_field [string] )
|
||||
*/
|
||||
public function fetchAllReplies( $status=null, $filters=array() )
|
||||
@@ -697,7 +697,7 @@ class memberStatus
|
||||
IPSText::getTextClass('email')->getTemplate( 'new_status', $friend['language'] );
|
||||
IPSText::getTextClass('email')->buildMessage( $ndata );
|
||||
|
||||
$_subject = sprintf( IPSText::getTextClass('email')->subject,
|
||||
$_subject = sprintf( IPSText::getTextClass('email')->subject,
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $owner['member_id'], 'publicNoSession', $owner['members_seo_name'], 'showuser' ),
|
||||
$owner['members_display_name'],
|
||||
$statusUrl );
|
||||
@@ -765,7 +765,7 @@ class memberStatus
|
||||
|
||||
$this->_recordAction( 'reply', $author, $status, $data );
|
||||
|
||||
$this->rebuildStatus( $status );
|
||||
$this->rebuildStatus( $status );
|
||||
$this->rebuildOwnerLatest( $author );
|
||||
|
||||
$this->_sendNotification( $author, $status, $data );
|
||||
@@ -784,10 +784,10 @@ class memberStatus
|
||||
* @param int Status ID just posted
|
||||
* @param array [Array of member data for member updating their status - will use ->getAuthor() if null]
|
||||
* @param string [Content to update]
|
||||
* @todo [Future] At some point it could be expanded into a mini framework with plugins
|
||||
* @todo [Future] At some point it could be expanded into a mini framework with plugins
|
||||
*/
|
||||
protected function _triggerExternalUpdates( $updates, $status_id=0, $author=null, $content=null )
|
||||
{
|
||||
{
|
||||
$author = ( $author === null ) ? $this->getAuthor() : $author;
|
||||
$content = ( $content ) ? $this->_cleanContent( $content ) : $this->_cleanContent( $this->getContent() );
|
||||
|
||||
@@ -815,7 +815,7 @@ class memberStatus
|
||||
if ( $updates['facebook'] )
|
||||
{
|
||||
if ( IPSLib::fbc_enabled() AND $author['fb_uid'] )
|
||||
{
|
||||
{
|
||||
$classToLoad = IPSLib::loadLibrary( IPS_ROOT_PATH . 'sources/classes/facebook/connect.php', 'facebook_connect' );
|
||||
$facebook = new $classToLoad( $this->registry );
|
||||
$facebook->updateStatusWithUrl( $content, $url, FALSE );
|
||||
@@ -874,9 +874,9 @@ class memberStatus
|
||||
|
||||
IPSText::getTextClass('email')->buildMessage( $data );
|
||||
|
||||
IPSText::getTextClass('email')->subject = sprintf(
|
||||
IPSText::getTextClass('email')->subject,
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $_replier['member_id'], 'public', $_replier['members_seo_name'], 'showuser' ),
|
||||
IPSText::getTextClass('email')->subject = sprintf(
|
||||
IPSText::getTextClass('email')->subject,
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $_replier['member_id'], 'public', $_replier['members_seo_name'], 'showuser' ),
|
||||
$_replier['members_display_name'],
|
||||
$statusUrl
|
||||
);
|
||||
@@ -904,7 +904,7 @@ class memberStatus
|
||||
while( $row = $this->DB->fetch() )
|
||||
{
|
||||
$_ids[ $row['reply_member_id'] ] = $row['reply_member_id'];
|
||||
}
|
||||
}
|
||||
|
||||
if ( count( $_ids ) )
|
||||
{
|
||||
@@ -951,20 +951,20 @@ class memberStatus
|
||||
|
||||
if ( $_replier['member_id'] == $_owner['member_id'] )
|
||||
{
|
||||
IPSText::getTextClass('email')->subject = sprintf(
|
||||
$this->lang->words['subject__their_status_reply'],
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $_replier['member_id'], 'public', $_replier['members_seo_name'], 'showuser' ),
|
||||
IPSText::getTextClass('email')->subject = sprintf(
|
||||
$this->lang->words['subject__their_status_reply'],
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $_replier['member_id'], 'public', $_replier['members_seo_name'], 'showuser' ),
|
||||
$_replier['members_display_name'],
|
||||
$statusUrl
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
IPSText::getTextClass('email')->subject = sprintf(
|
||||
$this->lang->words['subject__other_status_reply'],
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $_replier['member_id'], 'public', $_replier['members_seo_name'], 'showuser' ),
|
||||
IPSText::getTextClass('email')->subject = sprintf(
|
||||
$this->lang->words['subject__other_status_reply'],
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $_replier['member_id'], 'public', $_replier['members_seo_name'], 'showuser' ),
|
||||
$_replier['members_display_name'],
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $_owner['member_id'], 'public', $_owner['members_seo_name'], 'showuser' ),
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $_owner['member_id'], 'public', $_owner['members_seo_name'], 'showuser' ),
|
||||
$_owner['members_display_name'],
|
||||
$statusUrl
|
||||
);
|
||||
@@ -1017,9 +1017,9 @@ class memberStatus
|
||||
'LINK' => $memberUrl
|
||||
) );
|
||||
|
||||
IPSText::getTextClass('email')->subject = sprintf( IPSText::getTextClass('email')->subject,
|
||||
IPSText::getTextClass('email')->subject = sprintf( IPSText::getTextClass('email')->subject,
|
||||
$memberUrl,
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $author['member_id'], 'public', $author['members_seo_name'], 'showuser' ),
|
||||
$this->registry->output->buildSEOUrl( 'showuser=' . $author['member_id'], 'public', $author['members_seo_name'], 'showuser' ),
|
||||
$author['members_display_name'] );
|
||||
|
||||
$notifyLibrary->setMember( $owner );
|
||||
@@ -1125,7 +1125,7 @@ class memberStatus
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all user's status'
|
||||
@@ -1229,7 +1229,7 @@ class memberStatus
|
||||
foreach( $statusIds as $sid )
|
||||
{
|
||||
/* Rebuild this status */
|
||||
$this->rebuildStatus( $sid );
|
||||
$this->rebuildStatus( $sid );
|
||||
|
||||
/* Rebuild latest */
|
||||
$this->rebuildOwnerLatest( $members[ $stom[ $sid ] ] );
|
||||
@@ -1296,7 +1296,7 @@ class memberStatus
|
||||
$this->DB->delete( 'member_status_actions', 'action_reply_id=' . $reply['reply_id'] );
|
||||
|
||||
/* Rebuild this status */
|
||||
$this->rebuildStatus( $status );
|
||||
$this->rebuildStatus( $status );
|
||||
|
||||
/* Rebuild latest */
|
||||
$this->rebuildOwnerLatest( $author );
|
||||
@@ -1565,7 +1565,7 @@ class memberStatus
|
||||
* @return bool
|
||||
*/
|
||||
public function canComment( $author=null, $owner=null, $status=null )
|
||||
{
|
||||
{
|
||||
$author = ( $author === null ) ? $this->getAuthor() : $author;
|
||||
$owner = ( $owner === null ) ? $this->_internalData['StatusOwner'] : $owner;
|
||||
|
||||
@@ -1890,7 +1890,7 @@ class memberStatus
|
||||
$author = ( $author === null ) ? $this->getAuthor() : $author;
|
||||
|
||||
if ( $author['member_id'] AND $custom['text'] )
|
||||
{
|
||||
{
|
||||
$this->DB->insert( 'member_status_actions', array( 'action_member_id' => $author['member_id'],
|
||||
'action_date' => time(),
|
||||
'action_custom' => 1,
|
||||
@@ -1916,7 +1916,7 @@ class memberStatus
|
||||
$reply = ( $reply === null ) ? $this->_internalData['ReplyData'] : ( ( is_array( $reply ) ) ? $reply : $this->_loadReply( $reply ) );
|
||||
|
||||
if ( $author['member_id'] AND $status['status_id'] )
|
||||
{
|
||||
{
|
||||
$this->DB->insert( 'member_status_actions', array( 'action_status_id' => $status['status_id'],
|
||||
'action_reply_id' => intval( $reply['reply_id'] ),
|
||||
'action_member_id' => $author['member_id'],
|
||||
@@ -2069,7 +2069,7 @@ class memberStatus
|
||||
|
||||
/**
|
||||
* Callback to auto-parse @names
|
||||
*
|
||||
*
|
||||
* @param array Matches from the regular expression
|
||||
* @return string Converted text
|
||||
*/
|
||||
@@ -2080,19 +2080,19 @@ class memberStatus
|
||||
|
||||
/**
|
||||
* Callback to auto-parse #tags
|
||||
*
|
||||
*
|
||||
* @param array Matches from the regular expression
|
||||
* @return string Converted text
|
||||
*/
|
||||
protected function _autoParseTags( $matches )
|
||||
{
|
||||
return $this->_autoParseUrls( array( '', $matches[1], 'http://search.twitter.com/search?q=%23' . urlencode( $matches[3] ), $matches[2] ) );
|
||||
return $this->_autoParseUrls( array( '', $matches[1], 'http://twitter.com/search?q=%23' . urlencode( $matches[3] ), $matches[2] ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback to auto-parse urls
|
||||
* I totally stole this from Brandon's code but do NOT tell him.
|
||||
*
|
||||
*
|
||||
* @param array Matches from the regular expression
|
||||
* @return string Converted text
|
||||
*/
|
||||
@@ -2159,7 +2159,7 @@ class memberStatus
|
||||
}
|
||||
}
|
||||
|
||||
/* Moderated Posting */
|
||||
/* Moderated Posting */
|
||||
if ( $author['mod_posts'] )
|
||||
{
|
||||
if ( $author['mod_posts'] == 1 )
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Mobile iOS App image class
|
||||
* Owner: Matt Mecham
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Navigation Builder
|
||||
* Owner: Matt Mecham
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,17 +3,17 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Admin Output Library
|
||||
* Last Updated: $LastChangedDate: 2013-05-20 16:38:23 -0400 (Mon, 20 May 2013) $
|
||||
* Last Updated: $LastChangedDate: 2013-10-16 12:57:41 -0400 (Wed, 16 Oct 2013) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: bfarber $
|
||||
* @author $Author: AndyMillne $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/company/standards.php#license
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Rev: 12261 $
|
||||
* @version $Rev: 12380 $
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -218,7 +218,7 @@ class adminOutput extends output
|
||||
else
|
||||
{
|
||||
foreach( ipsRegistry::$applications as $app_dir => $app_data )
|
||||
{
|
||||
{
|
||||
if ( in_array( $app_data['app_directory'], array( 'core', 'forums', 'members' ) ) || in_array( $app_data['app_directory'], $mainTabKeys ) || $this->registry->getClass('class_permissions')->checkForAppAccess( $app_data['app_directory'] ) !== TRUE || ! $app_data['app_enabled'] )
|
||||
{
|
||||
continue;
|
||||
@@ -227,6 +227,14 @@ class adminOutput extends output
|
||||
$this->otherTabKeys[] = $app_data['app_directory'];
|
||||
|
||||
}
|
||||
|
||||
foreach( array( 'lookfeel', 'support', 'reports' ) AS $v )
|
||||
{
|
||||
if ( ! in_array( $v, $this->tabKeys ) )
|
||||
{
|
||||
$this->otherTabKeys[] = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,7 +283,7 @@ class adminOutput extends output
|
||||
{
|
||||
$fakeAppActive[ $fa ] = true;
|
||||
|
||||
$fakeActive = true;
|
||||
$fakeActive = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -656,8 +664,10 @@ class adminOutput extends output
|
||||
* @param string Text to display
|
||||
* @return @e void
|
||||
*/
|
||||
public function multipleRedirectFinish($text='Завершено!')
|
||||
public function multipleRedirectFinish($text='')
|
||||
{
|
||||
$text = ( $text ) ? $text : $this->lang->words['mr_completed'];
|
||||
|
||||
print $this->global_template->global_redirect_done( $text );
|
||||
exit();
|
||||
}
|
||||
@@ -828,7 +838,7 @@ class adminOutput extends output
|
||||
$_bookmarkData = array( 'url' => $bookmarks->cleanUrl( $this->settings['query_string_safe'] ),
|
||||
'can' => ( $this->_canBookmark ? 'true' : 'false' ),
|
||||
'has' => ( $bookmarks->hasBookmarked( $this->settings['query_string_safe'] ) ? 'true' : 'false' ),
|
||||
'jsn' => $bookmarks->asJson() );
|
||||
'jsn' => $bookmarks->asJson() );
|
||||
|
||||
//-----------------------------------------
|
||||
// Get tab order
|
||||
@@ -1662,7 +1672,7 @@ class adminOutput extends output
|
||||
$this->lang->loadLanguageFile( array( 'admin_menulang' ), $app_dir );
|
||||
|
||||
foreach( $data as $_current_module => $module_data )
|
||||
{
|
||||
{
|
||||
$_thisApp = $app_dir;
|
||||
$__current_module = $_current_module;
|
||||
$_current_module = preg_replace( '/^\d+?_(.*)$/', "\\1", $_current_module );
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Ouput format: HTML
|
||||
* (Matt Mecham)
|
||||
* Last Updated: $Date: 2013-03-12 16:14:42 -0400 (Tue, 12 Mar 2013) $
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Ouput format: HTML
|
||||
* (Matt Mecham)
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Ouput format: XML
|
||||
* (Matt Mecham)
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Ouput format: HTML
|
||||
* (Matt Mecham)
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
@@ -314,8 +314,8 @@ class xmlOutput extends coreOutput implements interface_output
|
||||
{
|
||||
$copyright = "<!-- Copyright Information -->
|
||||
<p id='copyright'>
|
||||
Powered By <a href='http://www.invisionboard.com' title='IP.Board Homepage'>IP.Board</a>
|
||||
{$version} © ".date("Y")." <a href='http://www.invisionpower.com' title='IPS Homepage'>IPS, <abbr title='Incorporated'>Inc</abbr></a>.
|
||||
Powered By <a href='' title='IP.Board Homepage'>IP.Board</a>
|
||||
{$version} © ".date("Y")." IPS, <abbr title='Incorporated'>Inc</abbr>.
|
||||
";
|
||||
|
||||
if ( $this->settings['ipb_reg_name'] )
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Public output methods
|
||||
* Last Updated: $Date: 2013-05-20 16:38:23 -0400 (Mon, 20 May 2013) $
|
||||
* </pre>
|
||||
@@ -2043,8 +2043,6 @@ class output
|
||||
return $url;
|
||||
}
|
||||
|
||||
$seoTitle = IPSText::makeSeoTransliterate( $seoTitle );
|
||||
|
||||
$_template = FALSE;
|
||||
$seoTitle = ( ! empty( $seoTitle ) && ! is_array( $seoTitle ) ) ? array( $seoTitle ) : $seoTitle;
|
||||
$_seoTitleForCache = ( is_array( $seoTitle ) ) ? implode( ';', $seoTitle ) : '';
|
||||
@@ -2464,7 +2462,6 @@ class output
|
||||
|
||||
|
||||
#print '#\d+?' . $_st . preg_quote( $seoTitle, '#' ) . '(' . $_end . "$|" . $_end . "\w+?" . $_end . "$|" . preg_quote( $_blk, '#' ) . ")#";exit;
|
||||
|
||||
if ( is_array($seoTitle) OR ! preg_match( '#\d+?' . $_st . preg_quote( $seoTitle, '#' ) . '(' . $_end . "$|" . $_end . '\w+?' . $_end . '$|/\?|' . preg_quote( $_blk, '#' ) . ")#", $_toTest ) )
|
||||
{
|
||||
if ( $return === TRUE )
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* System Templates
|
||||
* Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* RSS Import
|
||||
* Owner: Matt Mecham
|
||||
* Last Updated: $Date: 2013-05-16 11:23:35 -0400 (Thu, 16 May 2013) $
|
||||
* Last Updated: $Date: 2013-09-26 22:37:28 -0400 (Thu, 26 Sep 2013) $
|
||||
* </pre>
|
||||
*
|
||||
* @author Matt Mecham
|
||||
@@ -15,7 +15,7 @@
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @since 24th November 2009
|
||||
* @version $Revision: 12255 $
|
||||
* @version $Revision: 12370 $
|
||||
*/
|
||||
|
||||
/**
|
||||
@@ -219,26 +219,26 @@ class rss_import
|
||||
|
||||
ipsRegistry::getClass('class_localization')->loadLanguageFile( array( 'public_global' ), 'core' );
|
||||
|
||||
/* Are we checking for external links */
|
||||
$rels = array();
|
||||
$rel = '';
|
||||
|
||||
if( ipsRegistry::$settings['posts_add_nofollow'] )
|
||||
{
|
||||
$rels[] = "nofollow";
|
||||
}
|
||||
|
||||
if( ipsRegistry::$settings['links_external'] )
|
||||
{
|
||||
$rels[] = "external";
|
||||
}
|
||||
|
||||
if( count($rels) )
|
||||
{
|
||||
$rel = " rel='" . implode( ' ', $rels ) . "'";
|
||||
/* Are we checking for external links */
|
||||
$rels = array();
|
||||
$rel = '';
|
||||
|
||||
if( ipsRegistry::$settings['posts_add_nofollow'] )
|
||||
{
|
||||
$rels[] = "nofollow";
|
||||
}
|
||||
|
||||
$this->_settings['LinkBack'] = "<a href=\"{url}\" {$rel}>" . $this->registry->getClass('class_localization')->words['_rssimportsource'] . "</a>";
|
||||
if( ipsRegistry::$settings['links_external'] )
|
||||
{
|
||||
$rels[] = "external";
|
||||
}
|
||||
|
||||
if( count($rels) )
|
||||
{
|
||||
$rel = " rel='" . implode( ' ', $rels ) . "'";
|
||||
}
|
||||
|
||||
$this->_settings['LinkBack'] = "<a href=\"{url}\" class='bbc_url' {$rel}>" . $this->registry->getClass('class_localization')->words['_rssimportsource'] . "</a>";
|
||||
|
||||
/* Reset class */
|
||||
$this->_reset();
|
||||
@@ -566,7 +566,7 @@ class rss_import
|
||||
if ( ! $this->_settings['ParseHtml'] )
|
||||
{
|
||||
$_raw = stripslashes($content);
|
||||
|
||||
|
||||
$content = IPSText::getTextClass( 'bbcode' )->preDbParse( $editor->process( $_raw ) );
|
||||
}
|
||||
else
|
||||
@@ -579,7 +579,7 @@ class rss_import
|
||||
{
|
||||
$the_link = str_replace( '{url}', trim( $link ), $this->_settings['LinkBack'] );
|
||||
|
||||
if ( $this->_settings['ParseHtml'] )
|
||||
if ( !$this->_settings['ParseHtml'] )
|
||||
{
|
||||
$_raw = IPSText::getTextClass( 'bbcode' )->preEditParse( stripslashes($the_link) );
|
||||
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Sabre classes by Matt Mecham
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Sabre classes by Matt Mecham
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Sabre classes by Matt Mecham
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Sabre classes by Matt Mecham
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com/">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Sabre classes by Matt Mecham
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Global Search
|
||||
* Last Updated: $Date: 2012-10-09 12:16:32 -0400 (Tue, 09 Oct 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Global Search
|
||||
* Last Updated: $Date: 2012-12-03 14:03:02 -0500 (Mon, 03 Dec 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Global Search
|
||||
* Last Updated: $Date: 2012-12-03 14:03:02 -0500 (Mon, 03 Dec 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Global Search
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Admin session handler
|
||||
* Last Updated: $Date: 2012-08-21 11:56:40 -0400 (Tue, 21 Aug 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* $Author: mmecham $
|
||||
* @since Friday 12th November 2010 16:58
|
||||
* $LastChangedDate: 2012-08-22 05:05:53 -0400 (Wed, 22 Aug 2012) $
|
||||
* @version v3.4.5
|
||||
* @version v3.4.6
|
||||
* $Revision: 11245 $
|
||||
*/
|
||||
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Sample SSO Class
|
||||
* Last Updated: $Date: 2012-05-10 16:10:13 -0400 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Sample Mobile App SSO Class
|
||||
* Last Updated: $Date: 2012-05-10 21:10:13 +0100 (Thu, 10 May 2012) $
|
||||
* </pre>
|
||||
|
||||
@@ -5,6 +5,6 @@
|
||||
<hr>
|
||||
You have reached this page in error, please use your back button to return to the forum.
|
||||
<hr>
|
||||
<a href="http://www.invisionpower.com">IP.Board</a>
|
||||
IP.Board
|
||||
</body>
|
||||
</html>
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Share links library.
|
||||
* Created by Matt Mecham
|
||||
* Last Updated: $Date: 2013-05-08 13:48:52 -0400 (Wed, 08 May 2013) $
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Blog This plug in for share links library.
|
||||
*
|
||||
* Created by Mark Wade
|
||||
@@ -77,16 +77,7 @@ class sl_blogthis
|
||||
|
||||
foreach ( ipsRegistry::$applications as $app )
|
||||
{
|
||||
$furltemplatesfile = IPSLib::getAppDir( $app['app_directory'] );
|
||||
if(IPB_USE_ONLY_ID_FURL && is_file( $furltemplatesfile.'/extensions/furlTemplatesID.php'))
|
||||
{
|
||||
$furltemplatesfile.='/extensions/furlTemplatesID.php';
|
||||
}
|
||||
else
|
||||
{
|
||||
$furltemplatesfile.='/extensions/furlTemplates.php';
|
||||
}
|
||||
$_file = $furltemplatesfile;
|
||||
$_file = IPSLib::getAppDir( $app['app_directory'] ) . '/extensions/furlTemplates.php';
|
||||
|
||||
if ( is_file( $_file ) )
|
||||
{
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
<?php
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.1.0 Beta 2
|
||||
* Bobrdobr plug in for share links library.
|
||||
* This is just the basic fallback bobrdobr share, the front end has JS to do something more fancy
|
||||
*
|
||||
* Created by Matt Mecham
|
||||
* Last Updated: $Date: 2010-01-25 13:21:25 +0000 (Mon, 25 Jan 2010) $
|
||||
* </pre>
|
||||
*
|
||||
* @author $Author: matt $
|
||||
* @copyright (c) 2001 - 2009 Invision Power Services, Inc.
|
||||
* @license http://www.invisionpower.com/community/board/license.html
|
||||
* @package IP.Board
|
||||
* @link http://www.invisionpower.com
|
||||
* @version $Rev: 5746 $
|
||||
*
|
||||
*/
|
||||
|
||||
/* Class name must be in the format of:
|
||||
sl_{key}
|
||||
Where {key}, place with the value of: core_share_links.share_key
|
||||
*/
|
||||
class sl_bobrdobr
|
||||
{
|
||||
/**#@+
|
||||
* Registry Object Shortcuts
|
||||
*
|
||||
* @access protected
|
||||
* @var object
|
||||
*/
|
||||
protected $DB;
|
||||
protected $settings;
|
||||
protected $lang;
|
||||
protected $member;
|
||||
protected $memberData;
|
||||
protected $cache;
|
||||
protected $caches;
|
||||
/**#@-*/
|
||||
|
||||
/**
|
||||
* Construct.
|
||||
* @access public
|
||||
* @param object Registry
|
||||
* @return void
|
||||
*/
|
||||
public function __construct( $registry )
|
||||
{
|
||||
/* Make object */
|
||||
$this->registry = $registry;
|
||||
$this->DB = $this->registry->DB();
|
||||
$this->settings =& $this->registry->fetchSettings();
|
||||
$this->request =& $this->registry->fetchRequest();
|
||||
$this->lang = $this->registry->getClass('class_localization');
|
||||
$this->member = $this->registry->member();
|
||||
$this->memberData =& $this->registry->member()->fetchMemberData();
|
||||
$this->cache = $this->registry->cache();
|
||||
$this->caches =& $this->registry->cache()->fetchCaches();
|
||||
}
|
||||
|
||||
/**
|
||||
* Requires a permission check
|
||||
*
|
||||
* @access public
|
||||
* @param array Data array
|
||||
* @return boolean
|
||||
*/
|
||||
public function requiresPermissionCheck( $array )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirect to Twitter
|
||||
* Exciting, isn't it.
|
||||
*
|
||||
* @access private
|
||||
* @param string Plug in
|
||||
*/
|
||||
public function share( $title, $url )
|
||||
{
|
||||
$title = IPSText::convertCharsets( $title, IPS_DOC_CHAR_SET, 'utf-8' );
|
||||
$url = "http://bobrdobr.ru/addext.html?url=" . urlencode( $url ) . '&title=' . urlencode( $title );
|
||||
|
||||
$this->registry->output->silentRedirect( $url );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Twitter plug in for share links library.
|
||||
* This is just the basic fallback twitter share, the front end has JS to do something more fancy
|
||||
*
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/**
|
||||
* <pre>
|
||||
* Invision Power Services
|
||||
* IP.Board v3.4.5
|
||||
* IP.Board v3.4.6
|
||||
* Twitter plug in for share links library.
|
||||
* This is just the basic fallback twitter share, the front end has JS to do something more fancy
|
||||
*
|
||||
|
||||
Loaded 100 of 1568 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user