Ejemplo n.º 1
0
	/**
	 * @param TagTable[]      $rows
	 * @param Tags            $stream
	 * @param int             $output 0: Normal, 1: Raw, 2: Inline, 3: Load , 4: Save
	 * @param UserTable       $user
	 * @param UserTable       $viewer
	 * @param cbPluginHandler $plugin
	 * @return null|string
	 */
	static public function showTags( $rows, $stream, $output, $user, $viewer, $plugin )
	{
		global $_PLUGINS;

		CBActivity::loadHeaders( $output );

		$sourceClean			=	htmlspecialchars( $stream->source() );

		$tags					=	array();
		$return					=	null;

		$_PLUGINS->trigger( 'activity_onBeforeDisplayTags', array( &$return, &$rows, $stream, $output ) );

		if ( $rows ) foreach ( $rows as $row ) {
			$rowId				=	$sourceClean . 'Tag' . (int) $row->get( 'id' );

			if ( is_numeric( $row->get( 'user' ) ) ) {
				$name			=	CBuser::getInstance( (int) $row->get( 'user' ), false )->getField( 'formatname', null, 'html', 'none', 'list', 0, true );
			} else {
				$name			=	htmlspecialchars( $row->get( 'user' ) );
			}

			if ( ! $name ) {
				continue;
			}

			$tags[]				=	'<span id="' . $rowId . '" class="streamTag">'
								.		$name
								.	'</span>';
		}

		if ( $tags ) {
			$return				.=	( ! in_array( $output, array( 1, 4 ) ) ? '<span class="' . $sourceClean . 'Tags streamTags">' : null );

			if ( count( $tags ) > 2 ) {
				$tagOne			=	array_shift( $tags );
				$tagTwo			=	array_shift( $tags );

				$moreTooltip	=	cbTooltip( null, '<div class="streamTagRow">' . implode( '</div><div class="streamTagRow">', $tags ) . '</div>', null, 'auto', null, null, null, 'data-hascbtooltip="true" data-cbtooltip-position-my="bottom center" data-cbtooltip-position-at="top center" data-cbtooltip-open-event="click" data-cbtooltip-close-event="click unfocus" data-cbtooltip-button-hide="true"' );
				$more			=	'<a href="javascript: void(0);"' . $moreTooltip . '>' . CBTxt::T( 'TAGS_MORE', '%%COUNT%% more', array( '%%COUNT%%' => count( $tags ) ) ) . '</a>';

				$return			.=		CBTxt::T( 'TAGS_MORE_THAN_TWO', '[tag_1], [tag_2], and [more]', array( '[tag_1]' => $tagOne, '[tag_2]' => $tagTwo, '[more]' => $more ) );
			} elseif ( count( $tags ) > 1 ) {
				$return			.=		CBTxt::T( 'TAGS_TWO', '[tag_1] and [tag_2]', array( '[tag_1]' => $tags[0], '[tag_2]' => $tags[1] ) );
			} else {
				$return			.=		$tags[0];
			}

			$return				.=	( ! in_array( $output, array( 1, 4 ) ) ? '</span>' : null );
		}

		$return					.=	CBActivity::reloadHeaders( $output );

		$_PLUGINS->trigger( 'activity_onAfterDisplayTags', array( &$return, $rows, $stream, $output ) );

		return $return;
	}
Ejemplo n.º 2
0
	/**
	 * @param string         $source
	 * @param null|UserTable $user
	 * @return Tags|null
	 */
	public function tags( $source = 'stream', $user = null )
	{
		$params				=	$this->params()->subTree( 'tags' );

		if ( ! $params->get( 'display', 1 ) ) {
			return null;
		}

		/** @var Tags[] $cache */
		static $cache		=	array();

		if ( $this->get( 'item' ) && $params->get( 'source', 1 ) ) {
			$id				=	$this->get( 'type' ) . $this->get( 'subtype' ) . $this->get( 'item' ) . $this->get( 'parent' );
		} else {
			$id				=	$this->get( 'id' );
		}

		$id					=	md5( $id . $source . ( $user ? $user->get( 'id' ) : null ) . Application::MyUser()->getUserId() );

		if ( ! isset( $cache[$id] ) ) {
			$stream			=	new Tags( $source, $user );

			if ( $this->get( 'item' ) && $params->get( 'source', 1 ) ) {
				$stream->set( 'type', $this->get( 'type' ) );
				$stream->set( 'subtype', $this->get( 'subtype' ) );
				$stream->set( 'item', $this->get( 'item' ) );
				$stream->set( 'parent', $this->get( 'parent' ) );
			} else {
				$stream->set( 'type', 'activity' );
				$stream->set( 'item', (int) $this->get( 'id' ) );
			}

			$object			=	array(	'source'	=>	'activity',
										'id'		=>	(int) $this->get( 'id' ),
										'user_id'	=>	(int) $this->get( 'user_id' ),
										'type'		=>	$this->get( 'type' ),
										'subtype'	=>	$this->get( 'subtype' ),
										'item'		=>	$this->get( 'item' ),
										'parent'	=>	$this->get( 'parent' )
									);

			$stream->set( 'object', $object );

			$cache[$id]		=	$stream;
		}

		return $cache[$id];
	}
	/**
	 * Displays tags stream
	 *
	 * @param int       $id
	 * @param Tags      $stream
	 * @param int       $output
	 * @param bool      $data
	 * @param UserTable $user
	 * @param UserTable $viewer
	 */
	private function showTags( $id, $stream, $output, $data, $user, $viewer )
	{
		CBActivity::getTemplate( 'tags', false, false );

		if ( $id ) {
			$stream->set( 'id', $id );

			$rows			=	$stream->data();
		} else {
			if ( $data ) {
				$count		=	$stream->data( true );

				if ( ! $count ) {
					$rows	=	array();
				} else {
					$rows	=	$stream->data();
				}
			} else {
				$rows		=	array();
			}
		}

		if ( $rows ) {
			CBActivity::preFetchUsers( $rows );
		}

		echo HTML_cbactivityTags::showTags( $rows, $stream, $output, $user, $viewer, $this );
	}