/**
	 * prepare backend tools render
	 *
	 * @param moscomprofilerUser $user
	 * @param object $plugin
	 */
	private function showTools( $user, $plugin ) {
		global $_CB_database, $_PLUGINS;

		$msgs								=	new stdClass();
		$msgs->errors						=	array();
		$msgs->warnings						=	array();
		$msgs->info							=	array();

		$_PLUGINS->trigger( 'gj_onBeforeTools', array( $msgs, $user, $plugin ) );

		if ( file_exists( $plugin->imgsAbs ) ) {
			if ( ! is_writable( $plugin->imgsAbs ) ) {
				$msgs->errors[]				=	CBTxt::P( ':: Images :: directory not writable - [img_path]', array( '[img_path]' => $plugin->imgsAbs ) );
			}
		}

		if ( file_exists( str_replace( '/' . $plugin->folder, '', $plugin->imgsAbs ) ) ) {
			if ( ! is_writable( str_replace( '/' . $plugin->folder, '', $plugin->imgsAbs ) ) ) {
				$msgs->errors[]				=	CBTxt::P( ':: Images :: directory not writable - [img_path]', array( '[img_path]' => str_replace( '/' . $plugin->folder, '', $plugin->imgsAbs ) ) );
			}
		}

		$categories							=	cbgjData::getCategories();

		$cat_types							=	array();
		$cat_published						=	array();
		$cat_name							=	array();
		$cat_user							=	array();
		$cat_notification					=	array();

		if ( $categories ) foreach ( $categories as $category ) {
			$category_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'categories', 'edit', (int) $category->get( 'id' ) ) ) . '">' . $category->get( 'id' ) . '</a>';

			if ( ! $category->get( 'types' ) ) {
				$cat_types[]				=	$category_url;
			}

			if ( ! $category->get( 'published' ) ) {
				$cat_published[]			=	$category_url;
			}

			if ( $category->get( 'name' ) == '' ) {
				$cat_name[]					=	$category_url;
			}

			if ( ! $category->get( 'user_id' ) ) {
				$cat_user[]					=	$category_url;
			} else {
				$notification				=	cbgjData::getNotifications( null, array( array( 'type', '=', 'category' ), array( 'item', '=', (int) $category->get( 'id' ) ), array( 'user_id', '=', (int) $category->get( 'user_id' ) ) ), null, null, false );

				if ( ( ! $notification->get( 'id' ) ) && cbgjClass::hasAccess( 'cat_usr_notifications', cbgjClass::getAuthorization( $category, null, $category->getOwner() ) ) ) {
					$cat_notification[]		=	$category_url;
				}
			}
		}

		if ( ! empty( $cat_types ) ) {
			$fix_url						=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'categories', 'types' ) ) . '">' . CBTxt::T( 'Fix All' ) . '</a>';
			$msgs->errors[]					=	CBTxt::P( ':: Category :: Missing types - [cat] - [fixall]', array( '[cat]' => implode( ', ', $cat_types ), '[fixall]' => $fix_url ) );
		}

		if ( ! empty( $cat_published ) ) {
			$fix_url						=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'categories', 'published' ) ) . '">' . CBTxt::T( 'Fix All' ) . '</a>';
			$msgs->info[]					=	CBTxt::P( ':: Category :: Not published - [cat] - [fixall]', array( '[cat]' => implode( ', ', $cat_published ), '[fixall]' => $fix_url ) );
		}

		if ( ! empty( $cat_name ) ) {
			$msgs->errors[]					=	CBTxt::P( ':: Category :: Missing name - [cat]', array( '[cat]' => implode( ', ', $cat_name ) ) );
		}

		if ( ! empty( $cat_user ) ) {
			$fix_url						=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'categories', 'user_id' ) ) . '">' . CBTxt::T( 'Fix All' ) . '</a>';
			$msgs->errors[]					=	CBTxt::P( ':: Category :: Missing owner - [cat] - [fixall]', array( '[cat]' => implode( ', ', $cat_user ), '[fixall]' => $fix_url ) );
		}

		if ( ! empty( $cat_notification ) ) {
			$fix_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'categories', 'notifications' ) ) . '">' . CBTxt::T( 'Fix All' ) . '</a>';
			$msgs->errors[]				=	CBTxt::Ph( ':: Category :: Missing owner notifications - [cat] - [fixall]', array( '[cat]' => implode( ', ', $cat_notification ), '[fixall]' => $fix_url ) );
		}

		$groups								=	cbgjData::getGroups();

		$grp_cat_id							=	array();
		$grp_published						=	array();
		$grp_type							=	array();
		$grp_cat							=	array();
		$grp_name							=	array();
		$grp_user							=	array();
		$grp_owner							=	array();
		$grp_notification					=	array();

		if ( $groups ) foreach ( $groups as $group ) {
			$group_url						=	'<a href="' . cbgjClass::getPluginURL( array( 'groups', 'edit', (int) $group->get( 'id' ) ) ) . '">' . $group->get( 'id' ) . '</a>';

			if ( ! $group->get( 'published' ) ) {
				$grp_published[]			=	$group_url;
			}

			if ( ! $group->get( 'type' ) ) {
				$grp_type[]					=	$group_url;
			}

			if ( ! $group->get( 'category' ) ) {
				$grp_cat[]					=	$group_url;
			} else {
				if ( ! $group->getCategory()->get( 'id' ) ) {
					$grp_cat_id[]			=	$group_url;
				}
			}

			if ( $group->get( 'name' ) == '' ) {
				$grp_name[]					=	$group_url;
			}

			if ( ! $group->get( 'user_id' ) ) {
				$grp_user[]					=	$group_url;
			} else {
				if ( ! $group->getUser()->get( 'id' ) ) {
					$grp_owner[]			=	$group_url;
				} else {
					$notification			=	cbgjData::getNotifications( null, array( array( 'type', '=', 'group' ), array( 'item', '=', (int) $group->get( 'id' ) ), array( 'user_id', '=', (int) $group->get( 'user_id' ) ) ), null, null, false );

					if ( ( ! $notification->get( 'id' ) ) && cbgjClass::hasAccess( 'grp_usr_notifications', cbgjClass::getAuthorization( $group->getCategory(), $group, $group->getOwner() ) ) ) {
						$grp_notification[]	=	$group_url;
					}
				}
			}
		}

		if ( ! empty( $grp_cat_id ) ) {
			$msgs->errors[]				=	CBTxt::Ph( ':: Group :: Category does not exist in GroupJive - [grp]', array( '[grp]' => implode( ', ', $grp_cat_id ) ) );
		}

		if ( ! empty( $grp_published ) ) {
			$fix_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'groups', 'published' ) ) . '">' . CBTxt::Th( 'Fix All' ) . '</a>';
			$msgs->info[]				=	CBTxt::Ph( ':: Group :: Not published - [grp] - [fixall]', array( '[grp]' => implode( ', ', $grp_published ), '[fixall]' => $fix_url ) );
		}

		if ( ! empty( $grp_type ) ) {
			$fix_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'groups', 'type' ) ) . '">' . CBTxt::Th( 'Fix All' ) . '</a>';
			$msgs->errors[]				=	CBTxt::Ph( ':: Group :: Missing type - [grp] - [fixall]', array( '[grp]' => implode( ', ', $grp_type ), '[fixall]' => $fix_url ) );
		}

		if ( ! empty( $grp_cat ) ) {
			$msgs->errors[]				=	CBTxt::Ph( ':: Group :: Missing category - [grp]', array( '[grp]' => implode( ', ', $grp_cat ) ) );
		}

		if ( ! empty( $grp_name ) ) {
			$msgs->errors[]				=	CBTxt::Ph( ':: Group :: Missing name - [grp]', array( '[grp]' => implode( ', ', $grp_name ) ) );
		}

		if ( ! empty( $grp_user ) ) {
			$fix_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'groups', 'gj_user' ) ) . '">' . CBTxt::Th( 'Fix All' ) . '</a>';
			$msgs->errors[]				=	CBTxt::Ph( ':: Group :: Missing owner - [grp] - [fixall]', array( '[grp]' => implode( ', ', $grp_user ), '[fixall]' => $fix_url ) );
		}

		if ( ! empty( $grp_owner ) ) {
			$fix_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'groups', 'owner' ) ) . '">' . CBTxt::Th( 'Fix All' ) . '</a>';
			$msgs->errors[]				=	CBTxt::Ph( ':: Group :: Missing owner user - [grp] - [fixall]', array( '[grp]' => implode( ', ', $grp_owner ), '[fixall]' => $fix_url ) );
		}

		if ( ! empty( $grp_notification ) ) {
			$fix_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'groups', 'notifications' ) ) . '">' . CBTxt::T( 'Fix All' ) . '</a>';
			$msgs->errors[]				=	CBTxt::Ph( ':: Group :: Missing owner notifications - [grp] - [fixall]', array( '[grp]' => implode( ', ', $grp_notification ), '[fixall]' => $fix_url ) );
		}

		$users							=	cbgjData::getUsers();

		$usr_grp						=	array();
		$usr_grp_id						=	array();
		$usr_user						=	array();
		$usr_notification				=	array();

		if ( $users ) foreach ( $users as $usr ) {
			$user_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'users', 'edit', (int) $usr->get( 'id' ) ) ) . '">' . $usr->get( 'id' ) . '</a>';

			if ( ! $usr->get( 'group' ) ) {
				$usr_grp_id[]			=	$user_url;
			} else {
				if ( ! $usr->getGroup()->get( 'id' ) ) {
					$usr_grp[]			=	$user_url;
				}
			}

			if ( ! $usr->get( 'user_id' ) ) {
				$usr_user[]				=	$user_url;
			} else {
				$notification			=	cbgjData::getNotifications( null, array( array( 'type', '=', 'group' ), array( 'item', '=', (int) $usr->get( 'group' ) ), array( 'user_id', '=', (int) $usr->get( 'user_id' ) ) ), null, null, false );

				if ( ( ! $notification->get( 'id' ) ) && ( $usr->get( 'status' ) > 0 ) && cbgjClass::hasAccess( 'grp_usr_notifications', cbgjClass::getAuthorization( $usr->getCategory(), $usr->getGroup(), $usr->getOwner() ) ) ) {
					$usr_notification[]	=	$user_url;
				}
			}
		}

		if ( ! empty( $usr_grp ) ) {
			$msgs->errors[]				=	CBTxt::Ph( ':: User :: Group does not exist in GroupJive - [usr]', array( '[usr]' => implode( ', ', $usr_grp_id ) ) );
		}

		if ( ! empty( $usr_grp_id ) ) {
			$msgs->errors[]				=	CBTxt::Ph( ':: User :: Missing group - [usr]', array( '[usr]' => implode( ', ', $usr_grp_id ) ) );
		}

		if ( ! empty( $usr_user ) ) {
			$msgs->errors[]				=	CBTxt::Ph( ':: User :: Missing user - [usr]', array( '[usr]' => implode( ', ', $usr_user ) ) );
		}

		if ( ! empty( $usr_notification ) ) {
			$fix_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'fix', 'users', 'notifications' ) ) . '">' . CBTxt::T( 'Fix All' ) . '</a>';
			$msgs->errors[]				=	CBTxt::Ph( ':: User :: Missing notifications - [usr] - [fixall]', array( '[usr]' => implode( ', ', $usr_notification ), '[fixall]' => $fix_url ) );
		}

		$invites						=	cbgjData::getInvites();

		$inv_grp						=	array();
		$inv_grp_id						=	array();
		$inv_usr_id						=	array();
		$inv_user						=	array();

		if ( $invites ) foreach ( $invites as $invite ) {
			$invite_url					=	'<a href="' . cbgjClass::getPluginURL( array( 'invites' ) ) . '">' . $invite->get( 'id' ) . '</a>';

			if ( ! $invite->get( 'group' ) ) {
				$inv_grp_id[]			=	$invite_url;
			} else {
				if ( ! $invite->getGroup()->get( 'id' ) ) {
					$inv_grp[]			=	$invite_url;
				}
			}

			if ( ! $invite->get( 'user_id' ) ) {
				$inv_user[]				=	$invite_url;
			} else {
				if ( ! $invite->getUser()->get( 'id' ) ) {
					$inv_usr_id			=	$invite_url;
				}
			}
		}

		if ( ! empty( $inv_grp ) ) {
			$msgs->errors[]				=	CBTxt::Ph( ':: Invite :: Group does not exist in GroupJive - [inv]', array( '[inv]' => implode( ', ', $inv_grp ) ) );
		}

		if ( ! empty( $inv_grp_id ) ) {
			$msgs->errors[]				=	CBTxt::Ph( ':: Invite :: Missing group - [inv]', array( '[inv]' => implode( ', ', $inv_grp_id ) ) );
		}

		if ( ! empty( $inv_usr_id ) ) {
			$msgs->warnings[]			=	CBTxt::Ph( ':: Invite :: User does not exist in Group - [inv]', array( '[inv]' => implode( ', ', $inv_usr_id ) ) );
		}

		if ( ! empty( $inv_user ) ) {
			$msgs->errors[]				=	CBTxt::Ph( ':: Invite :: Missing user - [inv]', array( '[inv]' => implode( ', ', $inv_user ) ) );
		}

		$gj_categories					=	$_CB_database->getTableStatus( '#__gj_grcategory' );
		$gj_groups						=	$_CB_database->getTableStatus( '#__gj_groups' );
		$gj_users						=	$_CB_database->getTableStatus( '#__gj_users' );

		if ( $gj_categories || $gj_groups || $gj_users ) {
			$migrate_url				=	cbgjClass::getPluginURL( array( 'tools', 'migrate' ), CBTxt::Th( 'Are you sure you want to migrate your old GroupJive data?' ) );
			$migrate					=	'<a href="javascript: void(0);" onclick="' . $migrate_url . '">' . CBTxt::Th( 'Migrate' ) . '</a>';

			$delmigrate_url				=	cbgjClass::getPluginURL( array( 'tools', 'delmigrate' ), CBTxt::Th( 'Are you sure you want to delete your old GroupJive data?' ) );
			$delmigrate					=	'<a href="javascript: void(0);" onclick="' . $delmigrate_url . '">' . CBTxt::Th( 'Delete' ) . '</a>';

			$msgs->info[]				=	CBTxt::Ph( ':: GroupJive :: Previous release database found - [mig_url] | [del_url]', array( '[mig_url]' => $migrate, '[del_url]' => $delmigrate ) );
		}

		$_PLUGINS->trigger( 'gj_onAfterTools', array( $msgs, $user, $plugin ) );

		if ( empty( $msgs->errors ) ) {
			$msgs->errors[]				=	CBTxt::Th( 'No errors were found.' );
		}

		if ( empty( $msgs->warnings ) ) {
			$msgs->warnings[]			=	CBTxt::Th( 'No warnings were found.' );
		}

		if ( empty( $msgs->info ) ) {
			$msgs->info[]				=	CBTxt::Th( 'No info was found.' );
		}

		HTML_cbgjAdmin::showTools( $msgs, $user, $plugin );
	}