qa-mouseover-layer.php 2.5 KB
Newer Older
Gideon Greenspan committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
<?php

/*
	Question2Answer (c) Gideon Greenspan

	http://www.question2answer.org/

	
	File: qa-plugin/mouseover-layer/qa-mouseover-layer.php
	Version: See define()s at top of qa-include/qa-base.php
	Description: Theme layer class for mouseover layer plugin


	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU General Public License
	as published by the Free Software Foundation; either version 2
	of the License, or (at your option) any later version.
	
	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	More about this license: http://www.question2answer.org/license.php
*/

	class qa_html_theme_layer extends qa_html_theme_base {
		
		function q_list($q_list)
		{
			if (count(@$q_list['qs']) && qa_opt('mouseover_content_on')) { // first check it is not an empty list and the feature is turned on

			//	Collect the question ids of all items in the question list (so we can do this in one DB query)
	
				$postids=array();
				foreach ($q_list['qs'] as $question)
					if (isset($question['raw']['postid']))
						$postids[]=$question['raw']['postid'];
				
				if (count($postids)) {

				//	Retrieve the content for these questions from the database and put into an array
				
					$result=qa_db_query_sub('SELECT postid, content, format FROM ^posts WHERE postid IN (#)', $postids);
					$postinfo=qa_db_read_all_assoc($result, 'postid');
					
				//	Get the regular expression fragment to use for blocked words and the maximum length of content to show
					
					$blockwordspreg=qa_get_block_words_preg();
					$maxlength=qa_opt('mouseover_content_max_len');
					
				//	Now add the popup to the title for each question
Gideon Greenspan committed
53
			
Gideon Greenspan committed
54 55 56 57 58 59
					foreach ($q_list['qs'] as $index => $question) {
						$thispost=@$postinfo[$question['raw']['postid']];
						
						if (isset($thispost)) {
							$text=qa_viewer_text($thispost['content'], $thispost['format'], array('blockwordspreg' => $blockwordspreg));
							$text=qa_shorten_string_line($text, $maxlength);
Gideon Greenspan committed
60
							$q_list['qs'][$index]['title']='<span title="'.qa_html($text).'">'.@$question['title'].'</span>';
Gideon Greenspan committed
61 62 63 64 65 66 67 68 69 70 71 72 73 74
						}
					}
				}
			}
			
			qa_html_theme_base::q_list($q_list); // call back through to the default function
		}

	}
	

/*
	Omit PHP closing tag to help avoid accidental output
*/