Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
The function will add first image from the question content to the questions list
<?php
/**
* Add first image to the question list
*
* Declearation
* Base code is taken from Mouseover Layer plugin
*
* Than I have extracted content using preg_match_all to get first image
* and assing that to the q_list
*
* How to use it:
* Nothing complicated, just place 'q_list' method into your theme or plugin file and done.
*
* Important:
* Make sure your theme should not have this function already. If there is than add this code
* to that function and modify as needed
*
* @param array $q_list
* @category Hook
* @since 1.7
* @author Q2A Market <dev@q2amarket.com>
* @link http://www.q2amarket.com Q2A Market
* @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
*/
public function q_list($q_list)
{
if (!empty($q_list['qs'])) { // 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 (!empty($postids)) {
// Retrieve the content for these questions from the database and put into an array fetching
// the minimal amount of characters needed to determine the string should be shortened or not
$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();
// Now add the popup to the title for each question
foreach ($q_list['qs'] as $index => $question)
{
if (isset($postinfo[$question['raw']['postid']])) {
$thispost = $postinfo[$question['raw']['postid']];
$text = qa_viewer_html($thispost['content'], $thispost['format'], array('blockwordspreg' => $blockwordspreg));
// Extract image source from content
preg_match_all('/<img[^>]+src=[\'"]([^\'"]+)[\'"][^>]*>/i', $text, $matches);
// If content has image than show it!
if (!empty($matches[0])) {
// assign image to the variable
$image = '<img src="' . $matches[1][0] . '" alt="image" class="q-list-image" width="64"/>'; // change the size using attr or css
$q_list['qs'][$index]['content'] = $image;
}
}
}
}
}
qa_html_theme_base::q_list($q_list);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.