getDb();
$defaultItemId = $config->sobi2Itemid;
// define ItemId for which you will execute mambots
if ( isset($_REQUEST['Itemid']) ) {
$n_ItemId = $_REQUEST['Itemid'];
}
else {
$n_ItemId = $defaultItemId;
}
//prepare content: set $row main text variable;
$row = new stdClass();
$row->text = $text;
//initialize $params variable
$menu =& sobi2bridge::jMenu( $database );
$menu->load( $n_ItemId );
$params =& sobi2bridge::jParams( $menu->params );
$_MAMBOTS->loadBotGroup("content");
//call on function onPrepareContent of all mambots in the group content
//pass parameters '1'=published, $row, $params to those functions
$args = array( 1, &$row, &$params );
$_MAMBOTS->trigger( 'onPrepareContent', $args, false );
//store parsed content in the original variable;
$text = $row->text;
return $text;
}
/**
* executing Joomla 1.5 plugins for a field
* @author Radek Suski
* @param string $text
* @return string
*/
function execJPlugins( $text )
{
$row = new stdClass();
$row->text = $text;
JPluginHelper::importPlugin( 'content' );
$dispatcher =& JDispatcher::getInstance();
$mainframe =& JFactory::getApplication( 'site' );
$params =& $mainframe->getParams( 'com_content' );
$results = $dispatcher->trigger( 'onPrepareContent', array ( &$row, & $params, 0 ) );
$text = $row->text;
return $text;
}
/**
* Returning array or string of selected categories
*
* @param sobi2 $mySobi
* @return array
*/
function getMyCategories( $mySobi, $string = false, $wholePath = false )
{
$config =& sobi2Config::getInstance();
$database = &$config->getDb();
if( $wholePath && $string ) {
sobi2Config::import( "category.class" );
$catSep = $config->key( "frontpage", "entry_show_cat_func_cat_sep", "
" );
$pathSep = $config->key( "frontpage", "entry_show_cat_func_path_sep", " >> " );
$catsString = null;
$mySobiCategories = array_flip( $mySobi->myCategories );
foreach ( $mySobiCategories as $cid ) {
$cats = array();
$config->getParentCats( $cid, $cats );
if( is_array( $cats ) && !empty( $cats ) ) {
$catParts = array();
foreach ( $cats as $catid ) {
$category = new sobi2Category( $catid );
$url = sobi2Config::sef( "index.php?option=com_sobi2&catid={$category->catid}&Itemid={$config->sobi2Itemid}" );
$catParts[] = "name}\">{$category->name}";
}
$catParts = array_reverse( $catParts );
$catsString .= implode( $pathSep, $catParts );
}
$catsString .= $catSep;
}
return $catsString;
}
else {
$cids = is_array( $mySobi->myCategories ) && !empty( $mySobi->myCategories ) ? implode(" , ", array_flip( $mySobi->myCategories ) ) : null;
if( !$cids ) {
return null;
}
$selectedCats = array();
$catsString = array();
$query = "SELECT name, icon, catid, introtext FROM `#__sobi2_categories` AS cat WHERE catid IN ({$cids}) AND cat.published = 1";
$database->setQuery($query);
$database->query();
$categories = $database->loadObjectList();
if ($database->getErrorNum()) {
trigger_error("HTML_SOBI::getMyCategories(): DB reports: ".$database->stderr(), E_USER_WARNING);
}
foreach ($categories as $category) {
$category->name = stripslashes(stripslashes($category->name));
$category->introtext = stripslashes($category->introtext);
if($category->icon) {
$img = "liveSite}{$config->catImagesFolder}{$category->icon}\" alt=\"{$category->name}\" title=\"{$category->introtext}\" />";
}
else {
$img = null;
}
$href = sobi2Config::sef("index.php?option=com_sobi2&catid={$category->catid}&Itemid={$config->sobi2Itemid}");
$selectedCats[] = array('name' => $category->name, 'href' => $href, 'icon' => $img, 'introtext' => $category->introtext);
$catsString[] = "introtext}\">{$category->name}";
}
if(!$string) {
return $selectedCats;
}
return implode( " | ", $catsString );
}
}
/**
* displaying hits
*
* @param sobi2Config $config
* @param sobi2 $mySobi
*/
function showHits($config,$mySobi)
{
if($config->showHits) {
if( $config->key( "details_view", "show_hits_label", true ) ) {
echo _SOBI2_HITS." ".$mySobi->hits;
}
else {
echo $mySobi->hits;
}
}
}
/**
* displaying added date
*
* @param sobi2Config $config
* @param sobi2 $mySobi
*/
function addedDate($config,$mySobi)
{
if($config->showAddedDate) {
$date = date( $config->key( "details_view", "added_date_format", "F j, Y, g:i a" ), strtotime( $mySobi->publish_up ) );
if( $config->key( "details_view", "show_added_date_label", true ) ) {
echo _SOBI2_DATE_ADDED." ".$date;
}
else {
echo $date;
}
}
}
/**
* displaying selected tags for an entry
*
* @param array $metaKeys
* @param int $count
* @return string
*/
function showTags($metaKeys, $count = 5)
{
$config =& sobi2Config::getInstance();
if( is_a( $metaKeys, "sobi2" ) ) {
$metaKeys = $metaKeys->metakey;
}
if(!$metaKeys || empty($metaKeys)) {
return null;
}
$tags = explode(",",$metaKeys);
if( $config->key( "details_view", "show_tagged_label", true ) ) {
$string = _SOBI2_ENTRY_TAGGED_WITH;
}
else {
$string = null;
}
for ($i = 0; $i < $count; $i++) {
if(isset($tags[$i]) && !empty($tags[$i])) {
$tag = trim($tags[$i]);
$href = sobi2Config::sef("index.php?option=com_sobi2&tag={$tag}&Itemid={$config->sobi2Itemid}");
$title = _SOBI2_ENTRIES_TAGGED_WITH." '{$tag}'";
$string .= "{$tag}";
if($i != $count && isset($tags[$i + 1]) && !empty($tags[$i +1 ])) {
$string .= ", ";
}
}
else {
break;
}
}
return $string;
}
/**
* @param sobi2 $mySobi
* @param int $days
*/
function newLabel( $mySobi, $days = 3 )
{
if(strtotime($mySobi->publish_up) > mktime() - ($days * 86400)) {
return ''._SOBI2_NEW_LABEL.'';
}
}
/**
* @param sobi2 $mySobi
* @param int $days
*/
function updatedLabel( $mySobi, $days = 3 )
{
if(strtotime($mySobi->lastUpdate) > mktime() - ($days * 86400)) {
return ''._SOBI2_UPDATED_LABEL.'';
}
}
/**
* @param sobi2 $mySobi
* @param int $hits
*/
function hotLabel( $mySobi, $hits = 500 )
{
if($mySobi->hits > $hits) {
return ''._SOBI2_HOT_LABEL.'';
}
}
/**
* @param sobi2 $mySobi
* @param string $name
*/
function userHref( $mySobi, $name = "real" )
{
if(!$mySobi->owner) {
return null;
}
$config =& sobi2Config::getInstance();
$db =& $config->getDb();
$user =& sobi2bridge::jUser( $db );
$user->load( $mySobi->owner );
$userLink = "index.php?option=com_sobi2&sobi2Task=usersListing&uid={$mySobi->owner}&Itemid={$config->sobi2Itemid}";
$userLink = sobi2Config::sef( $userLink );
if( $name == 'real' ) {
$uname = $user->name;
}
else {
$uname = $user->username;
}
$title = str_replace( array( "%username%" ,"%name%" ), array( $user->username, $user->name ), _SOBI2_USER_OWN_LISTING );
$userLink = "{$uname}";
return $userLink;
}
/**
* @param sobi2 $mySobi
* @param string $name
*/
function userCBHref( $mySobi, $name = "real" )
{
if(!$mySobi->owner) {
return null;
}
if( !sobi2Config::translatePath( "components|com_comprofiler|comprofiler", "root" ) ) {
trigger_error( "Community Builder seems not to be installed.", E_USER_WARNING );
return self::userHref( $mySobi, $name );
}
$config =& sobi2Config::getInstance();
$db =& $config->getDb();
$user =& sobi2bridge::jUser( $db );
$user->load( $mySobi->owner );
if( !( class_exists( 'JFactory' ) ) ) {
$query = "SELECT `id` FROM `#__menu` WHERE `link` LIKE '%index.php?option=com_comprofiler%' AND `type` = 'components' AND `published` = '1' LIMIT 1";
}
else {
$query = "SELECT `id` FROM `#__menu` WHERE `link` LIKE '%index.php?option=com_comprofiler%' AND `type` = 'component' AND `published` = '1' LIMIT 1";
}
$db->setQuery( $query );
$mid = $db->loadResult();
if( $mid && is_int( $mid ) ) {
$mid = "&Itemid={$mid}";
}
else {
$mid = null;
}
$userLink = "index.php?option=com_comprofiler&task=userProfile&user={$user->id}{$mid}";
$userLink = sobi2Config::sef( $userLink );
if( $name == "real") {
$uname = $user->name;
}
else {
$uname = $user->username;
}
$title = str_replace( array( "%username%" ,"%name%" ), array( $user->username, $user->name ), _SOBI2_USER_OWN_LISTING );
$userLink = "{$uname}";
return $userLink;
}
/**
* Enter description here...
*
* @param string $txt
*/
function replace( $txt, $key = null )
{
static $def = array();
if( empty( $def ) ) {
$config =& sobi2Config::getInstance();
if( $file = sobi2Config::translatePath( $config->key( "string", "replace_definion", null ), "front", true, ".ini" ) ) {
$def = parse_ini_file( $file );
}
else {
trigger_error( "Cannot find replace definition file", E_USER_WARNING );
return $txt;
}
}
if( !$key ) {
foreach ( $def as $replace => $with ) {
$txt = preg_replace( "/\b{$replace}\b/", $with, $txt );
}
}
else {
if( key_exists( $key, $def ) ) {
$txt = preg_replace( "/\b{$def[$key]}\b/", $with, $txt );
//$txt = sobi2_ereg_replace( "[[:<:]]{$def[$key]}[[:>:]]", $with, $txt );
}
else {
trigger_error( "Replacement key '{$key}' does not exist ", E_USER_WARNING );
}
}
return $txt;
}
function addedDateOnly($config,$mySobi)
{
if($config->showAddedDate) {
echo _SOBI2_DATE_ADDED." ".date("j.n.Y",strtotime ($mySobi->publish_up));
}
}
/**
* Enter description here...
*
* @param sobiField $field
* @param sobi2 $mySobi
*/
function countClick( $field, $mySobi, $showCounter = true )
{
$config =& sobi2Config::getInstance();
$database =& $config->getDb();
$value = null;
$count = null;
static $script = false;
if( $field->isUrl && strlen( $field->data ) ) {
$onclick = "onclick=\"SobiCC( {$mySobi->id}, {$field->fieldid} );\"";
$field->data_int = $field->data_int ? $field->data_int : 0;
if( $showCounter ) {
$count = str_replace( '%count%', $field->data_int, _CCOUNT_VISITED );
}
if( $field->isUrl == 1 ) {
$value = "data}\" {$onclick} title=\"{$mySobi->title}\" target=\"_blank\">{$field->label}{$count}";
}
elseif( $field->isUrl == 2 ) {
$value = "data}\" {$onclick} title=\"{$mySobi->title}\" target=\"_blank\">{$field->label}{$count}";
}
}
if( !$script ) {
$script = true;
$config->addCustomScript( 'function SobiCC( sid, fid ) { url = "index2.php?option=com_sobi2&no_html=1&sobi2&sobi2Task=countVisit&fid="+fid+"&sid="+sid+"&Itemid='.$config->sobi2Itemid.'"; if ( window.XMLHttpRequest ) { SCCReq = new XMLHttpRequest(); if ( SCCReq.overrideMimeType ) { SCCReq.overrideMimeType( "text/xml" ); } } else if ( window.ActiveXObject ) { try { SCCReq = new ActiveXObject( "Msxml2.XMLHTTP" ); } catch ( e ) { try { SCCReq = new ActiveXObject( "Microsoft.XMLHTTP" ); } catch ( e ) {} } } SCCReq.open( "GET",url , true ); SCCReq.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" ); SCCReq.setRequestHeader( "Connection", "close" ); SCCReq.send( null ); } ' );
}
return $value;
}
/**
* Enter description here...
*
* @param sobiField $field
* @param sobi2 $mySobi
*/
function toQuickEdit( $field, $mySobi )
{
$config =& sobi2Config::getInstance();
$database = &$config->getDb();
$sobi2Frontend = &$config->getFrontend();
$my =& $config->getUser();
static $loaded = false;
static $admFields = array();
$onclick = null;
$data = $field->data;
if( ( ($my->id != 0 && $my->id == $mySobi->owner && $config->allowUserToEditEntry ) || $config->checkPerm() ) && $config->key( "details_view", "allow_quick_edit" ) ) {
if( !$config->checkPerm() && !$loaded ) {
$query = "SELECT fieldid FROM `#__sobi2_fields` WHERE displayed = 1";
$database->setQuery( $query );
$admFields = $database->loadResultArray();
if ($database->getErrorNum()) {
trigger_error("DB reports: ".$database->stderr(), E_USER_WARNING);
}
$fieldsIgnore = $config->key("details_view","quickedit_fields_ignore");
if( strlen($fieldsIgnore) ) {
// $fieldsIgnore = explode(",", $fieldsIgnore );
array_push($admFields,$fieldsIgnore);
}
}
if( !in_array( $field->fieldid, $admFields ) ) {
$t = _JS_SOBI2_QFIELD_DBL_CLK_TO_EDIT;
$onclick = "ondblclick=\"sobiEditField('sobi2Details_{$field->fieldname}', {$field->fieldid})\" title=\"{$t}\"";
}
}
$data = "\n\t\tfieldname}\">{$data}";
return $data;
}
/**
* PHP Function to Locally store website images from http://www.thumshots.org
* Code is free. No guarantees or warranties.
* Based on code by Daniel Schulman
* @param string $url
* @param string $alt
* @param string $style
* @param string $params
* @return string
*/
function getThumbshotsOrg( $url, $alt = '', $style = 'border-style:none;', $params = null )
{
$config =& sobi2Config::getInstance();
//Where Thumbnail images are stored locally
$subDir = $config->key( "thumshots.org", "subdir_name", "thumbs" );
$defImg = $config->key( "thumshots.org", "no_thumb" );
$local_thumb_dir = sobi2Config::translateDirPath( "{$config->imagesFolder}|{$subDir}", "root", false );
//How many days till check if new thumbnail
$days_to_keep = $config->key( "thumshots.org", "days_to_keep", 60 );;
//To use if no thumbnail exists
$return_img = sobi2Config::translatePath( "{$config->imagesFolder}|{$subDir}|{$defImg}", "root", false, '' );
if( !file_exists( $local_thumb_dir ) ) {
sobi2Config::sobiMakePath( $local_thumb_dir );
}
if ( substr( $url, 0, 4 ) != 'http' ) {
$url = 'http://' . $url; //Make sure URL proper
}
$url = urlencode( $url );
$fname = str_replace( array( '%3A', '%2F', '%3F', '%3D', '%26' ), '_', $url );
$full_img_path = sobi2Config::translatePath( "{$config->imagesFolder}|{$subDir}|{$fname}", "root", false, '.jpg' );
if( file_exists( $full_img_path ) ) {
//check age
$diff =( time() - filemtime( $full_img_path) ) /60 /60 /24 ;
if ( $diff > $days_to_keep ) {
unlink( $full_img_path );
}
else {
$return_img = "{$config->liveSite}/{$config->imagesFolder}/{$subDir}/{$fname}.jpg";
}
}
if( !file_exists( $full_img_path ) ) {
//get from thumbshots.org
$buff = file_get_contents( "http://open.thumbshots.org/image.pxf?url={$url}" );
if( strlen( $buff ) ) {
$fp = fopen( $full_img_path, "wb" );
fwrite( $fp,$buff );
fclose( $fp );
$return_img = "{$config->liveSite}/{$config->imagesFolder}/{$subDir}/{$fname}.jpg";
}
}
$html = "";
return $html;
}
function createWaySearchUrl( $sobi2Id )
{
$config =& sobi2Config::getInstance();
if(!$config->useWaySearch) {
return null;
}
$waySearchLink = $config->waySearchUrl;
$fields = array();
$counter = 0;
sobi2Config::import("field.class");
foreach ( $config->waySearchFields as $k => $fid ) {
if( $fid ) {
$field = new sobiField( $fid, $sobi2Id );
$fields[ $k ] = urlencode( $config->getSobiStr( $field->data ) );
if( !empty( $field->data ) ) {
$counter++;
}
}
}
if( $counter < $config->key( "url", "way_search_min_fields", 2 ) ) {
return null;
}
$WSstreet = isset($fields['STREET']) ? $fields['STREET'] : null;
$WScity = isset($fields['CITY']) ? $fields['CITY'] : null;
$WSpostcode = isset($fields['ZIPCODE']) ? $fields['ZIPCODE'] : null;
$WScounty = isset($fields['COUNTY']) ? $fields['COUNTY'] : null;
$WSfstate = isset($fields['FEDSTATE']) ? $fields['FEDSTATE'] : null;
$WScountry = isset($fields['COUNTRY']) ? $fields['COUNTRY'] : null;
$waySearchLink = str_replace(
array( "STREET", "CITY", "ZIPCODE", "COUNTY", "FEDSTATE", "COUNTRY" ),
array( $WSstreet, $WScity, $WSpostcode, $WScounty, $WSfstate, $WScountry ),
$waySearchLink
);
$waySearchLink = str_replace('&', '&', $waySearchLink );
$waySearchLink = str_replace('\\', null, $waySearchLink );
$waySearchLink = html_entity_decode( $waySearchLink );
$waySearchLink = "{$config->waySearchLabel}";
return $waySearchLink;
}
/**
*
* @param sobi2 $mySobi
* @param sobi2config $config
* @return string
*/
function showGoogleMaps($mySobi, $config)
{
if( !$config->useGoogleMaps || !isset( $config->googleMapsApiKey ) ) {
return null;
}
$title = $config->jsAddSlashes( $mySobi->title );
$GeoPos = $config->getGeoPosition( $mySobi->id );
if( $GeoPos['lat'] && $GeoPos['long'] && is_numeric( $GeoPos['lat'] ) && is_numeric( $GeoPos['lat'] ) ) {
$map_type = $mySobi->customFieldsData['field_maptype'];
if($map_type == 'Yandexmap')
{
?>