function editlisting($link_id, $option) { global $savantConf, $Itemid, $mtconf; $database =& JFactory::getDBO(); $my =& JFactory::getUser(); $document =& JFactory::getDocument(); require_once JPATH_COMPONENT_ADMINISTRATOR . DS . 'mfields.class.php'; # Get cat_id if user is adding new listing. $cat_id = JRequest::getInt('cat_id', 0); // This var retrieve the link_id for adding listing $link_id_passfromurl = JRequest::getInt('link_id', 0); if ($link_id_passfromurl > 0 && $cat_id == 0) { $database->setQuery("SELECT cat_id FROM (#__mt_links AS l, #__mt_cl AS cl) WHERE l.link_id ='" . $link_id_passfromurl . "' AND cl.link_id = l.link_id"); $cat_id = $database->loadResult(); } $link = new mtLinks($database); # Do not allow Guest to edit listing if ($link_id > 0 && $my->id <= 0) { $link->load(0); } else { $link->load($link_id); } # Load all published CORE & custom fields $sql = "SELECT cf.*, " . ($link_id ? $link_id : 0) . " AS link_id, cfv.value AS value, cfv.attachment, cfv.counter, ft.ft_class FROM #__mt_customfields AS cf " . "\nLEFT JOIN #__mt_cfvalues AS cfv ON cf.cf_id=cfv.cf_id AND cfv.link_id = " . $link_id . "\nLEFT JOIN #__mt_fieldtypes AS ft ON ft.field_type=cf.field_type" . "\nWHERE cf.hidden ='0' AND cf.published='1' ORDER BY ordering ASC"; $database->setQuery($sql); $fields = new mFields(); $fields->setCoresValue($link->link_name, $link->link_desc, $link->address, $link->city, $link->state, $link->country, $link->postcode, $link->telephone, $link->fax, $link->email, $link->website, $link->price, $link->link_hits, $link->link_votes, $link->link_rating, $link->link_featured, $link->link_created, $link->link_modified, $link->link_visited, $link->publish_up, $link->publish_down, $link->metakey, $link->metadesc, $link->user_id, ''); $fields->loadFields($database->loadObjectList()); # Load images $database->setQuery("SELECT img_id, filename FROM #__mt_images WHERE link_id = '" . $link_id . "' ORDER BY ordering ASC"); $images = $database->loadObjectList(); # Get current category's template $database->setQuery("SELECT cat_name, cat_parent, cat_template, metakey, metadesc FROM #__mt_cats WHERE cat_id='" . $cat_id . "' AND cat_published='1' LIMIT 1"); $cat = $database->loadObject(); if ($link->link_id == 0) { if ($cat) { $document->setTitle(sprintf(JText::_('Add listing2'), $cat->cat_name)); } else { $document->setTitle(JText::_('Add listing')); } } else { $document->setTitle(sprintf(JText::_('Edit listing2'), $link->link_name)); } if (isset($cat->cat_template) && $cat->cat_template != '') { loadCustomTemplate(null, $savantConf, $cat->cat_template); } # Get other categories $database->setQuery("SELECT cl.cat_id FROM #__mt_cl AS cl WHERE cl.link_id = '{$link_id}' AND cl.main = '0'"); $other_cats = $database->loadResultArray(); # Pathway $pathWay = new mtPathWay($cat_id); $pw_cats = $pathWay->getPathWayWithCurrentCat($cat_id); $pathWayToCurrentCat = ''; $mtCats = new mtCats($database); $pathWayToCurrentCat = ' <a href="' . JRoute::_("index.php?option=com_mtree&task=listcats&Itemid=" . $Itemid) . '">' . JText::_('Root') . "</a>"; foreach ($pw_cats as $pw_cat) { $pathWayToCurrentCat .= JText::_('Arrow') . ' <a href="' . JRoute::_("index.php?option=com_mtree&task=listcats&cat_id=" . $pw_cat . "&Itemid=" . $Itemid) . '">' . $mtCats->getName($pw_cat) . "</a>"; } # Savant Template $savant = new Savant2($savantConf); assignCommonVar($savant); $savant->assign('pathway', $pathWay); $savant->assign('pathWayToCurrentCat', $pathWayToCurrentCat); $savant->assign('cat_id', $link_id == 0 ? $cat_id : $link->cat_id); $savant->assign('other_cats', $other_cats); $savant->assignRef('link', $link); $savant->assignRef('fields', $fields); $savant->assignRef('images', $images); if ($mtconf->get('image_maxsize') > 1048576) { $savant->assign('image_size_limit', round($mtconf->get('image_maxsize') / 1048576, 1) . 'MB'); } else { $savant->assign('image_size_limit', round($mtconf->get('image_maxsize') / 1024) . 'KB'); } # Check permission if ($mtconf->get('user_addlisting') == 1 && $my->id < 1 || $link_id > 0 && $my->id == 0) { $savant->assign('error_msg', JText::_('Please login before addlisting')); $savant->display('page_error.tpl.php'); } elseif ($link_id > 0 && $my->id != $link->user_id || $mtconf->get('user_allowmodify') == 0 && $link_id > 0 || $mtconf->get('user_addlisting') == -1 && $link_id == 0 || $mtconf->get('user_addlisting') == 1 && $my->id == 0) { echo _NOT_EXIST; } else { // OK, you can edit $database->setQuery("SELECT CONCAT('cust_',cf_id) as varname, caption As value, field_type, prefix_text_mod, suffix_text_mod FROM #__mt_customfields WHERE hidden <> '1' AND published = '1'"); $custom_fields = $database->loadObjectList('varname'); $savant->assign('custom_fields', $custom_fields); # Load custom fields' value from #__mt_cfvalues to $link $database->setQuery("SELECT CONCAT('cust_',cf_id) as varname, value FROM #__mt_cfvalues WHERE link_id = '" . $link_id . "'"); $cfvalues = $database->loadObjectList('varname'); foreach ($custom_fields as $cfkey => $value) { if (isset($cfvalues[$cfkey])) { $savant->custom_data[$cfkey] = $cfvalues[$cfkey]->value; } else { $savant->custom_data[$cfkey] = ''; } } // Get category's tree if ($mtconf->get('allow_changing_cats_in_addlisting')) { getCatsSelectlist($cat_id, $cat_tree, 1); if ($cat_id > 0) { $cat_options[] = JHTML::_('select.option', $cat->cat_parent, JText::_('Arrow back')); } if ($mtconf->get('allow_listings_submission_in_root')) { $cat_options[] = JHTML::_('select.option', '0', JText::_('Root')); } if (count($cat_tree) > 0) { foreach ($cat_tree as $ct) { if ($ct["cat_allow_submission"] == 1) { $cat_options[] = JHTML::_('select.option', $ct["cat_id"], str_repeat(" ", $ct["level"] * 3) . ($ct["level"] > 0 ? " -" : '') . $ct["cat_name"]); } else { $cat_options[] = JHTML::_('select.option', $ct["cat_id"] * -1, str_repeat(" ", $ct["level"] * 3) . ($ct["level"] > 0 ? " -" : '') . "(" . $ct["cat_name"] . ")"); } } } $catlist = JHTML::_('select.genericlist', $cat_options, 'new_cat_id', 'size=8 class="inputbox"', 'value', 'text', '', 'browsecat'); $savant->assignRef('catlist', $catlist); } // Give warning is there is already a pending approval for modification. if ($link_id > 0) { $database->setQuery("SELECT link_id FROM #__mt_links WHERE link_approved = '" . -1 * $link_id . "'"); if ($database->loadResult() > 0) { $savant->assign('warn_duplicate', 1); } else { $savant->assign('warn_duplicate', 0); } } $savant->assign('pathWay', $pathWay); $savant->display('page_addListing.tpl.php'); } }
function rss($option, $type, $cat_id = 0) { global $mtconf; $database =& JFactory::getDBO(); $info = null; $rss = null; $jdate = JFactory::getDate(); $now = $jdate->toMySQL(); $nullDate = $database->getNullDate(); $rss = new MTRSSCreator20(); if ($type == 'new') { $filename = $mtconf->getjconf('cachepath') . '/mtreeNew' . ($cat_id ? '-' . $cat_id : '') . '.xml'; } else { $filename = $mtconf->getjconf('cachepath') . '/mtreeUpdated' . ($cat_id ? '-' . $cat_id : '') . '.xml'; } $rss->useCached($filename); switch ($type) { case 'updated': $rss->title = $mtconf->getjconf('sitename') . $mtconf->get('rss_title_separator') . JText::_('Recently updated listing'); break; case 'new': default: $rss->title = $mtconf->getjconf('sitename') . $mtconf->get('rss_title_separator') . JText::_('New listing'); break; } if ($cat_id > 0) { $mtCats = new mtCats($database); $cat_name = $mtCats->getName($cat_id); $rss->title .= $mtconf->get('rss_title_separator') . $cat_name; } $rss->link = JURI::root(); $rss->cssStyleSheet = NULL; $rss->feedURL = $mtconf->getjconf('live_site') . $_SERVER['PHP_SELF']; $database->setQuery("SELECT id FROM #__menu WHERE link='index.php?option=com_mtree' AND published='1' LIMIT 1"); $Itemid = $database->loadResult(); $sql = "SELECT l.*, u.username, u.name AS owner, c.cat_id, c.cat_name FROM (#__mt_links AS l, #__mt_cl AS cl, #__users AS u, #__mt_cats AS c) " . "WHERE link_published='1' && link_approved='1' " . "\n AND ( publish_up = " . $database->Quote($nullDate) . " OR publish_up <= '{$now}' ) " . "\n AND ( publish_down = " . $database->Quote($nullDate) . " OR publish_down >= '{$now}' ) " . "\n AND l.link_id = cl.link_id " . "\n AND cl.main = 1 " . "\n AND cl.cat_id = c.cat_id " . "\n AND l.user_id = u.id "; if ($cat_id > 0) { $subcats = getSubCats_Recursive($cat_id); if (count($subcats) > 1) { $sql .= ' AND cl.cat_id IN (' . implode(',', $subcats) . ')'; } } switch ($type) { case 'updated': $sql .= "ORDER BY l.link_modified DESC "; break; case 'new': default: $sql .= "ORDER BY l.link_created DESC "; break; } if ($mtconf->get('rss_' . $type . '_limit') > 0) { $sql .= "LIMIT " . intval($mtconf->get('rss_' . $type . '_limit')); } $database->setQuery($sql); $links = $database->loadObjectList(); # Get first image of each listings if ($mtconf->get('show_image_rss') && !empty($links)) { foreach ($links as $link) { $link_ids[] = $link->link_id; } $database->setQuery('SELECT link_id, filename FROM #__mt_images WHERE link_id IN (' . implode(', ', $link_ids) . ') AND ordering = 1 LIMIT ' . count($link_ids)); $link_images = $database->loadObjectList('link_id'); } # Get arrays if link_ids foreach ($links as $link) { $link_ids[] = $link->link_id; } # Additional elements from core fields $core_fields = array('cat_name', 'cat_url', 'link_votes', 'link_rating', 'address', 'city', 'postcode', 'state', 'country', 'email', 'website', 'telephone', 'fax', 'metakey', 'metadesc'); $additional_elements = array(); foreach ($core_fields as $core_field) { if ($mtconf->get('rss_' . $core_field)) { $additional_elements[] = $core_field; } } # Additional elements from custom fields $custom_fields = trim($mtconf->get('rss_custom_fields')); $custom_fields_values = array(); if (!empty($custom_fields) && count($link_ids) > 0) { $array_custom_fields = explode(',', $custom_fields); foreach ($array_custom_fields as $key => $value) { if (intval($value) > 0) { $array_custom_fields[$key] = intval($value); $additional_elements[] = 'cust_' . $array_custom_fields[$key]; } else { unset($array_custom_fields[$key]); } } if (count($array_custom_fields) > 0) { $database->setQuery('SELECT cf_id, link_id, value FROM #__mt_cfvalues WHERE cf_id IN (' . implode(',', $array_custom_fields) . ') AND link_id IN (' . implode(',', $link_ids) . ') LIMIT ' . count($array_custom_fields) * count($link_ids)); $array_custom_fields_values = $database->loadObjectList(); foreach ($array_custom_fields_values as $array_custom_fields_value) { $custom_fields_values[$array_custom_fields_value->link_id][$array_custom_fields_value->cf_id] = $array_custom_fields_value->value; } } } $uri =& JURI::getInstance(JURI::base()); $host = $uri->toString(array('scheme', 'host', 'port')); $thumbnail_path = $mtconf->get('relative_path_to_listing_small_image'); foreach ($links as $link) { $item = new FeedItem(); $item->title = $link->link_name; $item->link = $host . JRoute::_("index.php?option=com_mtree&task=viewlink&link_id=" . $link->link_id . "&Itemid=" . $Itemid); $item->guid = $host . JRoute::_("index.php?option=com_mtree&task=viewlink&link_id=" . $link->link_id . "&Itemid=" . $Itemid); $item->description = ''; if ($mtconf->get('show_image_rss') && isset($link_images[$link->link_id]) && !empty($link_images[$link->link_id]->filename)) { $item->description .= '<img align="right" src="' . $mtconf->getjconf('live_site') . $thumbnail_path . $link_images[$link->link_id]->filename . '" alt="' . $link->link_name . '" />'; } $item->description .= $link->link_desc; //optional $item->descriptionHtmlSyndicated = true; switch ($type) { case 'updated': $item->date = strtotime($link->link_modified); break; case 'new': default: $item->date = strtotime($link->link_created); break; } $item->source = $mtconf->getjconf('live_site'); // $item->author = $link->owner; $item->author = $link->username; if (count($additional_elements) > 0) { $ae = array(); foreach ($additional_elements as $additional_element) { if (in_array($additional_element, $core_fields)) { if ($additional_element == 'cat_url') { $ae['mtree:' . $additional_element] = htmlspecialchars(JRoute::_('index.php?option=com_mtree&task=listcats&cat_id=' . $link->cat_id . '&Itemid=' . $Itemid)); } else { $ae['mtree:' . $additional_element] = '<![CDATA[' . $link->{$additional_element} . ']]>'; } } else { $cf_id = substr($additional_element, 5); if (array_key_exists($link->link_id, $custom_fields_values) && array_key_exists($cf_id, $custom_fields_values[$link->link_id])) { $ae['mtree:' . $additional_element] = '<![CDATA[' . str_replace('|', ',', $custom_fields_values[$link->link_id][$cf_id]) . ']]>'; } } } $item->additionalElements = $ae; } $rss->addItem($item); } echo $rss->saveFeed($filename); }