SimplePortal

Customization => Custom Coding => Topic started by: vbgamer45 on March 04, 2014, 02:34:54 PM

Title: SMF Classifieds custom block - SMF 2.0.x
Post by: vbgamer45 on March 04, 2014, 02:34:54 PM
Requested by one our users. Here is to share requires SMF Classifieds installed.
Works for SMF 2.0.x
Code below you must uncomment one of the blocks
Code: [Select]

//  ClassifiedsBlock(2,4, 'random','vertical');
//  ClassifiedsBlock(1,1, 'random','vertical');
  ClassifiedsBlock(2,4, 'random','horizonstal');



function ClassifiedsBlock($rows = 4, $listings = 4, $type = 'recent', $category = 0,  $format = 'vertical',  $startHtml = '', $endHtml = '')
{
global  $smcFunc, $scripturl, $txt, $modSettings, $boardurl, $user_info, $context, $sourcedir, $boarddir;

$rows = (int) $rows;
$listings = (int) $listings;
$category  = (int) $category;






// Html Header
echo $startHtml;


// Load the language files
if (loadlanguage('classifieds') == false)
loadLanguage('classifieds', 'english');

$g_manage = allowedTo('smfclassifieds_manage');

$groupsdata = implode($user_info['groups'],',');

if (empty($modSettings['class_url']))
$modSettings['class_url'] = $boardurl . '/classifieds/';

if (empty($modSettings['class_path']))
$modSettings['class_path'] = $boarddir . '/classifieds/';

$maxrowlevel = $rows;
echo '<table cellspacing="0" cellpadding="5" border="0" align="center" width="100%">

';
// Check what type it is
$query = ' ';
switch($type)
{
case 'recent':
$query = "SELECT i.ID_LISTING, i.commenttotal,
i.primaryID_PICTURE, i.title, p.thumbfilename, p.remotefilename, i.currentbid,i.currency,
i.datelisted, i.views, i.is_auction, i.totalbids, i.ID_CAT, c.noprice, i.expiredate
FROM {db_prefix}class_listing as i
LEFT JOIN {db_prefix}class_listing_pic as p ON (i.primaryID_PICTURE = p.ID_PICTURE)
LEFT JOIN {db_prefix}class_cat as c ON (i.ID_CAT = c.ID_CAT)
LEFT JOIN {db_prefix}class_catperm AS r ON (r.ID_GROUP IN ($groupsdata) AND r.ID_CAT = i.ID_CAT)
WHERE i.removed = 0 AND i.approved = 1  AND (r.view IS NULL || r.view =1) GROUP BY i.ID_LISTING ORDER BY i.ID_LISTING DESC LIMIT $listings";
break;

case 'viewed':
$query = "SELECT i.ID_LISTING, i.commenttotal,
i.primaryID_PICTURE, i.title, p.thumbfilename, p.remotefilename, i.currentbid,i.currency,
i.datelisted, i.views, i.is_auction, i.totalbids, i.ID_CAT, c.noprice, i.expiredate
FROM {db_prefix}class_listing as i
LEFT JOIN {db_prefix}class_listing_pic as p ON (i.primaryID_PICTURE = p.ID_PICTURE)
LEFT JOIN {db_prefix}class_cat as c ON (i.ID_CAT = c.ID_CAT)
LEFT JOIN {db_prefix}class_catperm AS r ON (r.ID_GROUP IN ($groupsdata) AND r.ID_CAT = i.ID_CAT)
WHERE i.removed = 0 AND i.approved = 1  AND (r.view IS NULL || r.view =1) GROUP BY i.ID_LISTING ORDER BY  i.views DESC LIMIT $listings";
break;
               
  case 'random':
$query = "SELECT i.ID_LISTING, i.commenttotal,
i.primaryID_PICTURE, i.title, p.thumbfilename, p.remotefilename, i.currentbid,i.currency,
i.datelisted, i.views, i.is_auction, i.totalbids, i.ID_CAT, c.noprice, i.expiredate
FROM {db_prefix}class_listing as i
LEFT JOIN {db_prefix}class_listing_pic as p ON (i.primaryID_PICTURE = p.ID_PICTURE)
LEFT JOIN {db_prefix}class_cat as c ON (i.ID_CAT = c.ID_CAT)
LEFT JOIN {db_prefix}class_catperm AS r ON (r.ID_GROUP IN ($groupsdata) AND r.ID_CAT = i.ID_CAT)
WHERE i.removed = 0 AND i.approved = 1  AND (r.view IS NULL || r.view =1) GROUP BY i.ID_LISTING ORDER BY  RAND() DESC LIMIT $listings";
break;
               

case 'mostcomments':
$query = "SELECT i.ID_LISTING, i.commenttotal,
i.primaryID_PICTURE, i.title, p.thumbfilename, p.remotefilename, i.currentbid,i.currency,
i.datelisted, i.views, i.is_auction, i.totalbids, i.ID_CAT, c.noprice, i.expiredate
FROM {db_prefix}class_listing as i
LEFT JOIN {db_prefix}class_listing_pic as p ON (i.primaryID_PICTURE = p.ID_PICTURE)
LEFT JOIN {db_prefix}class_cat as c ON (i.ID_CAT = c.ID_CAT)
LEFT JOIN {db_prefix}class_catperm AS r ON (r.ID_GROUP IN ($groupsdata) AND r.ID_CAT = i.ID_CAT)
WHERE i.removed = 0 AND i.approved = 1  AND (r.view IS NULL || r.view =1) GROUP BY i.ID_LISTING ORDER BY i.commenttotal DESC LIMIT $listings";
break;

case 'featured':
$query = "SELECT i.ID_LISTING, i.commenttotal,
i.primaryID_PICTURE, i.title, p.thumbfilename, p.remotefilename, i.currentbid,i.currency,
i.datelisted, i.views, i.is_auction, i.totalbids, i.ID_CAT, c.noprice, i.expiredate
FROM {db_prefix}class_listing as i
LEFT JOIN {db_prefix}class_listing_pic as p ON (i.primaryID_PICTURE = p.ID_PICTURE)
LEFT JOIN {db_prefix}class_cat as c ON (i.ID_CAT = c.ID_CAT)
LEFT JOIN {db_prefix}class_catperm AS r ON (r.ID_GROUP IN ($groupsdata) AND r.ID_CAT = i.ID_CAT)
WHERE i.removed = 0 AND i.approved = 1 AND i.featuredlisting = 1  AND (r.view IS NULL || r.view =1) GROUP BY i.ID_LISTING ORDER BY i.ID_LISTING DESC LIMIT $listings";
break;


}
// Execute the SQL query
$dbresult = $smcFunc['db_query']('', $query);
$rowlevel = 0;
while($row = $smcFunc['db_fetch_assoc']($dbresult))
{
if ($rowlevel == 0)
echo '<tr class="windowbg2">';

echo '<td align="center"><a href="', $scripturl, '?action=classifieds;sa=view;id=', $row['ID_LISTING'], '">', $row['title'], '</a><br />';

if (!empty($row['primaryID_PICTURE']) && $modSettings['class_catlist_showimage'])
{

if (empty($row['remotefilename']))
echo '<a href="', $scripturl, '?action=classifieds;sa=view;id=', $row['ID_LISTING'], '"><img src="', $modSettings['class_url'], $row['thumbfilename'], '" alt="" /></a><br />';
else
echo '<a href="', $scripturl, '?action=classifieds;sa=view;id=', $row['ID_LISTING'], '"><img src="', $row['remotefilename'], '" alt="" /></a><br />';

}

echo '<span class="smalltext">';


if (!empty($modSettings['class_catlist_currentprice']) && $row['noprice'] == 0)
echo $txt['class_text_price'] . SMFEzformatprice($row['currentbid'],$row['currency']) . '<br />';


if (!empty($modSettings['class_catlist_listingdate']))
            {
                if (!empty($modSettings['class_set_date_format_mdy']))
                    echo $txt['class_text_date'] .  date($modSettings['class_set_date_format_mdy'],$row['datelisted']), ' ', date($modSettings['class_set_date_format_hia'],$row['datelisted']) . '<br />';
                else
                    echo $txt['class_text_date'] . date("m/d/Y",$row['datelisted']) . ' ' . date("h:i a",$row['datelisted'])  . '<br />';
           
            }




if ($modSettings['class_catlist_timeleft'])
{
echo  $txt['class_txt_time_left'] ;

echo   ($row['expiredate'] == 0 ? $txt['class_expire_never'] :   SMFezblockclass_cattimeleft( date("Y",$row['expiredate']), date("m",$row['expiredate']), date("d",$row['expiredate']), date("H",$row['expiredate']), date("i",$row['expiredate']),date("s",$row['expiredate'])) ) , '<br />';

}



if (!empty($modSettings['class_catlist_numofbids']) && $row['noprice'] == 0 && $row['is_auction'] == 1)
echo $txt['class_text_totalbids'] . ' ' . $row['totalbids'] . '<br />';


if (!empty($modSettings['class_catlist_comments']))
echo $txt['class_text_comments'] . ' (<a href="' . $scripturl . '?action=classifieds;sa=view;id=' . $row['ID_LISTING'] . '">' . $row['commenttotal'] . '</a>)<br />';

if ($g_manage)
{
if ($row['is_auction'] == 0)
echo '&nbsp;<a href="' . $scripturl . '?action=classifieds;sa=editlisting;id=' . $row['ID_LISTING'] . '">' . $txt['class_text_edit'] . '</a>';
else
echo '&nbsp;<a href="' . $scripturl . '?action=classifieds;sa=editauction;id=' . $row['ID_LISTING'] . '">' . $txt['class_text_edit'] . '</a>';


echo '&nbsp;<a href="' . $scripturl . '?action=classifieds;sa=deletelisting;id=' . $row['ID_LISTING'] . '">' . $txt['class_text_delete'] . '</a>';

}

echo '</span></td>';


if($rowlevel < ($maxrowlevel-1))
$rowlevel++;
else
{
echo '</tr>';
$rowlevel = 0;
}
}
if($rowlevel !=0)
{
echo '</tr>';
}

echo '
      </table><br />';
// Free the Mysql Resoruces
$smcFunc['db_free_result']($dbresult);

// Html Footer
echo $endHtml;

}
function SMFEzformatprice($price,$currency)
{
if ($currency == 'USD')
return  '$' .  number_format($price, 2, '.', '');
else if ($currency == 'GBP')
return  '£' .  number_format($price, 2, '.', '');
elseif ($currency == 'CAD')
return  '$' .  number_format($price, 2, '.', '');
elseif ($currency == 'AUD')
return  '$' .  number_format($price, 2, '.', '');
  elseif ($currency == 'ZAR')
return  'R ' .  number_format($price, 2, '-', '');
else
return $price . ' ' . $currency;

}


function SMFezblockclass_cattimeleft($year, $month, $day, $hour, $minute, $seconds)
{
global $txt;
  // make a unix timestamp for the given date
  $the_countdown_date = mktime($hour, $minute, $seconds, $month, $day, $year, -1);

  // get current unix timestamp
  $today = forum_time(false);
 

  $difference = $the_countdown_date - $today;
  if ($difference < 0) $difference = 0;

  $days_left = floor($difference/60/60/24);
  $hours_left = floor(($difference - $days_left*60*60*24)/60/60);
  $minutes_left = floor(($difference - $days_left*60*60*24 - $hours_left*60*60)/60);
  $seconds_left = floor(($difference - $days_left*60*60*24 - $hours_left*60*60 - $minutes_left*60));


 
  if ($days_left == 0 && $hours_left == 0 &&  $minutes_left < 5  && ($minutes_left != 0 && $seconds_left  !=0))
  {
  echo '<font color="#FF0000">';
  }
 
  echo '<span class="smalltext">';
 
  if ($days_left > 0)
  {
  echo $days_left . 'd ' . $hours_left  . 'h ' . $minutes_left . 'm';
  }
  else
  {
  if ($hours_left > 0)
  echo $hours_left  . 'h ' . $minutes_left . 'm';
  else
  {
 
  if ($minutes_left > 0)
  echo $minutes_left . 'm ' . $seconds_left . 's';
  else
  {
  if ($seconds_left > 0)
  echo  $seconds_left . 's';
 
  }
 
 
  }
   
  }
 

  echo '</span>';
   
  if ($days_left == 0 && $hours_left == 0 &&  $minutes_left < 5  && ($minutes_left != 0 && $seconds_left  !=0))
  {
  echo '</font>';
  }
 
}
Title: Re: SMF Classifieds custom block - SMF 2.0.x
Post by: [SiNaN] on March 04, 2014, 02:50:18 PM
Thank you very much for sharing this! I really appreciate it. :)
Title: Re: SMF Classifieds custom block - SMF 2.0.x
Post by: vbgamer45 on March 04, 2014, 02:58:05 PM
Thank you very much for sharing this! I really appreciate it. :)
I can post more if needed pretty easy to convert over the functions I have.
Wasn't sure on the format: Looks like you have custom code php and plugins as well.
Title: Re: SMF Classifieds custom block - SMF 2.0.x
Post by: [SiNaN] on March 04, 2014, 03:10:05 PM
It'd be great if you could post the block codes for your other mods, particularly for the ones that are not available on the sm.org Mod Site. I know we got plenty of block code requests for those.

We just need your regular plain PHP code. So what you have above works pretty well.
Title: Re: SMF Classifieds custom block - SMF 2.0.x
Post by: USFA on May 27, 2014, 04:55:26 PM
Is there a free classifieds for smf ??
Title: Re: SMF Classifieds custom block - SMF 2.0.x
Post by: renoldscott on June 09, 2014, 03:31:25 AM
Thanks for share this amazing and useful code.
SimplePortal 2.3.8 © 2008-2024, SimplePortal