Last active
August 29, 2015 14:16
-
-
Save q2amarket/6d20aa07ccc321022b73 to your computer and use it in GitHub Desktop.
The function will add first image from the question content to the questions list
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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