qa-mouseover-layer.php 2.46 KB
Newer Older
Gideon Greenspan committed
1 2 3 4 5 6 7
<?php

/*
	Question2Answer (c) Gideon Greenspan

	http://www.question2answer.org/

8

Gideon Greenspan committed
9 10 11 12 13 14 15 16 17
	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.
18

Gideon Greenspan committed
19 20 21 22 23 24 25 26 27
	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 {
28

29
		public function q_list($q_list)
Gideon Greenspan committed
30 31 32 33
		{
			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)
34

Gideon Greenspan committed
35 36 37 38
				$postids=array();
				foreach ($q_list['qs'] as $question)
					if (isset($question['raw']['postid']))
						$postids[]=$question['raw']['postid'];
39

Gideon Greenspan committed
40 41 42
				if (count($postids)) {

				//	Retrieve the content for these questions from the database and put into an array
43

Gideon Greenspan committed
44 45
					$result=qa_db_query_sub('SELECT postid, content, format FROM ^posts WHERE postid IN (#)', $postids);
					$postinfo=qa_db_read_all_assoc($result, 'postid');
46

Gideon Greenspan committed
47
				//	Get the regular expression fragment to use for blocked words and the maximum length of content to show
48

Gideon Greenspan committed
49 50
					$blockwordspreg=qa_get_block_words_preg();
					$maxlength=qa_opt('mouseover_content_max_len');
51

Gideon Greenspan committed
52
				//	Now add the popup to the title for each question
53

Gideon Greenspan committed
54 55
					foreach ($q_list['qs'] as $index => $question) {
						$thispost=@$postinfo[$question['raw']['postid']];
56

Gideon Greenspan committed
57 58 59
						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

Gideon Greenspan committed
66 67 68 69
			qa_html_theme_base::q_list($q_list); // call back through to the default function
		}

	}
70

Gideon Greenspan committed
71 72 73 74

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