Перейти к содержимому


Фотография

RSS Как прописать вывод присоеденённых картинок.

Форумы IBResource

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7
gogamus
  • Участники
  • Cообщений: 74

Отправлено

RSS Как прописать вывод присоеденённых картинок. Показываютса только смайлы, но присоеденённые картинки не выводит? Кто поможет? :(


<?
/*  --------------------------------------------------------
   < setting [paramètres] >
-------------------------------------------------------- */
// IPB's setting [Paramètres d'IPB] :
$RSS['FORUM_ID']   = array(1,2,3,4,5,6,7,8);		  // News forum id		   [ID du forum contenant les news].
$RSS['NEWS_LIMIT']    = 30;		    // Show a max of x news		 [Nombre maximum de news à afficher].
$RSS['BOARD_URL']   = '';    // IPB board's url		   [URL du forum IPB].
$RSS['BOARD_PATH']   = './';		 // Board PATH		    [PATH du forum].
$RSS['CHARSET']    = 'iso-8859-1';		 // Charset		    [Encodage des caractères].
$RSS['TRUNCATE_NEWS']  = null;		    // Truncate news to x characters(null for full news)  [Tronquer les news à x caractères].
// Website [Site web] :
$RSS['HOME_NAME']   = 'l';		 // Website's name		   [Nom du site web].
$RSS['HOME_DESCRIPTION'] = ' too';	   // Website's description		 [Description du site].
$RSS['HOME_URL']   = 't';	  // Website's url		   [URL du site web].
$RSS['LANGUAGE']   = 'en';		   // Website's language		 [Langue du site].
$RSS['COPYRIGHT']   = '(c) 2005 by VJ All Rights Reserved';	    // Your copyright		  [Copyright de votre flux].
$RSS['DOCS']    = '';		   // RSS documentations		 [Documentation explicative].	   
$RSS['WEBMASTER']   = '';	    // Admin's email		  [Email de l'admin].
// Website's logo (null for not) [Le logo de votre site (mettre null pour aucun)] :
$RSS['HOME_LOGO']   = $RSS['HOME_URL'].'/style_images/1/logo.gif';   // Websites's logo		  [Image pour illustrer vos flux].
$RSS['HOME_LOGO_WIDTH']  = 144;		   // Logo's width (beetween 1 and 144)	 [Largeur du logo].
$RSS['HOME_LOGO_HEIGHT'] = 56;		   // Logo's hieght		  [Hauteur du logo].
/*  --------------------------------------------------------
   < / setting [paramètres] >
-------------------------------------------------------- */

define( 'ROOT_PATH'  , $RSS['BOARD_PATH'] );
define( 'USE_SHUTDOWN', 1 );
define( 'IN_IPB', 1 );
define( 'IN_DEV', 0 );
error_reporting  (E_ERROR | E_WARNING | E_PARSE);
set_magic_quotes_runtime(0);
$backend = new backend();
echo $backend->getRSS();

/**
* Classe générant le fichier backend.
* @author LLaumgui <>
*/
class backend{

var $DB;			 // Connexion à la base de données.
var $RSS = array (		  // Paramètre du backend.
	   'FORUM_ID'    => '', // Paramètres d'IPB
	   'NEWS_LIMIT'   => '',
	   'BOARD_URL'    => '',
	   'BOARD_PATH'   => '',
	   'CHARSET'    => '',
	   'TRUNCATE_NEWS'   => '',
	   'HOME_NAME'    => '', // Site web
	   'HOME_DESCRIPTION'  => '',
	   'HOME_URL'    => '',
	   'LANGUAGE'    => '',
	   'COPYRIGHT'    => '',
	   'DOCS'	 => '',
	   'WEBMASTER'    => '',
	   'HOME_LOGO'    => '', // Logo
	   'HOME_LOGO_WIDTH'   => '',
	   'HOME_LOGO_HEIGHT'  => '',
	   'RSS_version'   => '',
	   'RSS_IPB_VERSION'  => '1.5',
	  );

/**
  * Constructeur de la classe.
  * @author LLaumgui <madromas@yahoo.com>
  * @since 1.5.
  */
function backend(){
  global $RSS;
 
  /*
   * Récupération & détermination des paramètres :
   */
  foreach ( $RSS as $_OPTION => $_SETTING )
   { $this->RSS[$_OPTION]   = $_SETTING; }
  /*
   * Détermination du nombre de news à afficher via le paramètre $_GET['limit'].
   * /!\ Ne peut être supérieur à la valeur définie dans la configuration ($RSS['NEWS_LIMIT']).
   */
  if ( !empty($_GET['limit']) && intval($_GET['limit']) <= $this->RSS['NEWS_LIMIT'] )
   { $this->RSS['NEWS_LIMIT'] = intval($_GET['limit']); }
 
  /*
   * Détermination de la version de RSS à utiliser (RSS1 ou RSS2) récupérée par le paramètre
   * $_GET['rss']. Si les news sont tronquées, le code HTML est alors converti en texte et ce
   * paramètre ne sert à rien <img src='http://forums.ibresource.ru/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt=';)' />.
   */
  if ( intval($_GET['rss']) == 1 )   { $this->RSS['RSS_version'] = 1; }
  else		  { $this->RSS['RSS_version'] = 2; }
  
  $this->connection(); 
}
/**
  * Connexion à la base de données made in SSI.php.
  * @author MadRomas
  * @since 1.5
  */
function connection() {
  require_once ROOT_PATH.'conf_global.php';
 
  require ( ROOT_PATH.'sources/Drivers/'.$INFO['sql_driver'].'.php' );
  $this->DB = new db_driver;
   $this->DB->obj['sql_database']	 = $INFO['sql_database'];
   $this->DB->obj['sql_user']		 = $INFO['sql_user'];
   $this->DB->obj['sql_pass']		 = $INFO['sql_pass'];
   $this->DB->obj['sql_host']		 = $INFO['sql_host'];
   $this->DB->obj['sql_tbl_prefix']   = $INFO['sql_tbl_prefix'];
   $this->DB->obj['query_cache_file'] = ROOT_PATH.'sources/sql/'.$INFO['sql_driver'].'_queries.php';
   $this->DB->obj['use_shutdown']	 = USE_SHUTDOWN;
  $this->DB->connect();
}

/**
  * Récupération des différentes news (item).
  * @author MadRomas
  * @since 1.5.
  * @return String Code XML des items.
  */
function getItem() {
  $item = '';
 
  // Récupération de la liste des forum :
  $forum_id = implode( ",", $this->RSS['FORUM_ID'] );
  //Requête :
  $this->DB->query(" SELECT t.tid, t.title, p.post_date, p.post, p.pid
			 FROM ".$this->DB->obj['sql_tbl_prefix']."topics t
			    LEFT JOIN ".$this->DB->obj['sql_tbl_prefix']."posts p ON (p.new_topic = 1 AND p.topic_id = t.tid)
	   WHERE t.forum_id IN (".$forum_id.")
	    AND t.approved=1
	   ORDER BY t.tid DESC
	   LIMIT 0, ".$this->RSS['NEWS_LIMIT']);
  while ( $row = $this->DB->fetch_row() )
   {
    $item .= "<item>
			  <pubDate>".gmdate('r', $row['post_date'])."</pubDate>
			  <title>".$row['title']."</title>
	 <description>".$this->html2text($row['post'])."</description>
			  <link>".$this->RSS['BOARD_URL']."/topic".$row['tid'].".html</link>
		   </item>";
   }
  return $item;
}

/**
  * Permettant de convertir de l'HTML en texte afin de ne pas couper une balise en plein milieu.
  * Permet aussi via cette conversion de passer en RSS 1.0.
  * @author MadRomas
  * @since 1.5.
  * @param $text String HTML à convertir en texte.
  * @return String Texte brut.
  */
function html2text($text){
  global $RSS;
 
  if ( $this->RSS['TRUNCATE_NEWS'] != null || $this->RSS['RSS_version'] == 1 )
   {
    /*
	 * Afin de ne pas couper une balise HTML en plein milieu, je passe tout en texte brut...
	 */
    $text = preg_replace( '#\[(.+?)\](.+?)\[/(.+?)\]#is',    '' ,  $text );  // Vire le bbCode.
    $text = preg_replace( '#<!--emo(.*?)-->(.*?)<!--endemo-->#ie', '',  $text );  // Vire les émoticons.
    $text = preg_replace( '#<a (.+?)>(.*?)</a>#is',	 '\\2',  $text );  // Vire le HTML.
    $text = preg_replace( '#<b>(.*?)</b>#is',	   '\\1',  $text );
    $text = preg_replace( '#<u>(.*?)</u>#is',	   '\\1',  $text );
    $text = preg_replace( '#<i>(.*?)</i>#is',	   '\\1',  $text );
    $text = preg_replace( '#<div (.+?)>(.*?)</div>#is',    '\\2',  $text );
    $text = preg_replace( '#<span (.+?)>(.*?)</span>#is',   '\\2',  $text );
    $text = preg_replace( '#<!--(.+?)-->#is',	  '',  $text );  // Vire d'autre chose <img src='http://forums.ibresource.ru/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt=';)' />.
    $text = str_replace ( '<br />',		 "\n",  $text );
    $text = str_replace ( '€',		   'Euro', $text );
   
    /*
	 * On coupe :
	 */
    if ( strlen($text) >= $this->RSS['TRUNCATE_NEWS'] && $this->RSS['TRUNCATE_NEWS'] != null )
	 {
	  $text   = substr($text, 0, $this->RSS['TRUNCATE_NEWS']);
	  $espace  = strrpos($text, " ");   
	  $text   = substr($text, 0, $espace);
	  $text   .= '...';
	 }
   }
  else
   {
    /*
	 * Je passe en mode HTML :
	 */
    $text = preg_replace( '#\[(.+?)\](.+?)\[/(.+?)\]#is',    '' ,  $text );  // Vire le bbCode.
    $text = preg_replace( '#<!--emo(.*?)-->(.*?)<!--endemo-->#ie', '',  $text );  // Vire les émoticons.
    $text = preg_replace( '#<!--(.+?)-->#is',	  '',  $text );  // Vire d'autre chose <img src='http://forums.ibresource.ru/public/style_emoticons/<#EMO_DIR#>/wink.png' class='bbc_emoticon' alt=';)' />.
    $text = str_replace ( '€',		   '&euro;', $text );
    $text = '<![CDATA['.$text.']]>'; 
   }
  
  return $text;
}

/**
   * Génération du fichier RSS.
  * @author LLaumgui <llaumgui@xperience-fr.net>
  * @since 1.5.
  * @return String Code XML du fichier backend.
   */
function getRSS() {

  /*
   * Header et partie décrivant le site :
   */
  header("Content-Type: text/xml; charset=".$this->RSS['CHARSET']);
  header("Cache-Control: no-cache");
   
  /* <?xml-stylesheet href='rss.css' type='text/css'?> */
  $backend = "<?xml version='1.0' encoding='".$this->RSS['CHARSET']."'?>
  <rss version='".$this->RSS['RSS_version'].".0'>
   <channel>
    <title>".$this->RSS['HOME_NAME']."</title>
    <link>".$this->RSS['HOME_URL']."</link>
    <generator>RSS VJ v".$this->RSS['RSS_IPB_VERSION']."</generator>
    <description>".$this->RSS['HOME_DESCRIPTION']."</description>
    <lastBuildDate>".gmdate('r')."</lastBuildDate>";
    if ( !empty($this->RSS['LANGUAGE']) ) { $backend .= "<language>".$this->RSS['LANGUAGE']."</language>"; }
    if ( !empty($this->RSS['COPYRIGHT']) ) { $backend .= "<copyright>".$this->RSS['COPYRIGHT']."</copyright>"; }
    if ( !empty($this->RSS['DOCS']) )  { $backend .= "<docs>".$this->RSS['DOCS']."</docs>"; }
    if ( !empty($this->RSS['WEBMASTER']) )
	 {
	  $backend .= "
    <managingEditor>".$this->RSS['WEBMASTER']."</managingEditor> 
<webMaster>".$this->RSS['WEBMASTER']."</webMaster>";
	 }
    if ( $this->RSS['HOME_LOGO'] != null && $this->RSS['RSS_version'] > 1 )
	 {
	  $backend .= "<image>
	   <url>".$this->RSS['HOME_LOGO']."</url>
	   <link>".$this->RSS['HOME_URL']."</link>
	   <title>".$this->RSS['HOME_NAME']."</title>
	   <width>".$this->RSS['HOME_LOGO_WIDTH']."</width>
	   <height>".$this->RSS['HOME_LOGO_HEIGHT']."</height>
	   <description>".$this->RSS['HOME_DESCRIPTION']."</description>
	  </image>";
	 }
  /*
   * Item : les news :
   */
  $backend .= $this->getItem();

  /*
   * Fin du fichier RSS :
   */
  $backend .= "</channel>
  </rss>";
 
  $this->destructor();
 
  return $backend;
}
/**
   * Pseudo destructeur, sert à rien mais peut servir plus tard en php5.
  * @author LLaumgui <llaumgui@xperience-fr.net>
  * @since 1.5.
   */
  function destructor(){
  
   $this->DB->close_DB();
}

} // EOC
?>


gogamus
  • Участники
  • Cообщений: 74

Отправлено

Так никто не подскажет? Смайлики выводятса, видео тоже, почему же не прикреплённые картинки?

Arhar
  • Команда форума
  • Cообщений: 5 631

Отправлено

присоединенные картинки всегда парсились отдельной функцией, ее нужно поискать

gogamus
  • Участники
  • Cообщений: 74

Отправлено

Ну где выводятса аттачи то я знаю. Вот как её к рсс привязать.

Arhar
  • Команда форума
  • Cообщений: 5 631

Отправлено

в функции function getItem()
переписать алгоритм
в цикле
while ( $row = $this->DB->fetch_row() )
не формировать рсс, а подготавливать массив данных для (1)формирования рсс, (2)запроса к таблице аттачей
затем делать запрос к таблице аттачей по (2), формировать данные по картинкам (3) и сращивать для вывода (1) и (3) и возвращать результат

gogamus
  • Участники
  • Cообщений: 74

Отправлено

Не селён я в php, такого не осилю. В премере то и я знаю как это сделать. А вот как в реальность изобразить?

Arhar
  • Команда форума
  • Cообщений: 5 631

Отправлено

оказалось в 1.3 все настолько просто, что стыд и позор
function getItem() {
  $item = '';
 
  // Récupération de la liste des forum :
  $forum_id = implode( ",", $this->RSS['FORUM_ID'] );
  //Requête :
  $this->DB->query(" SELECT t.tid, t.title, p.post_date, p.post, p.pid, p.attach_id
						 FROM ".$this->DB->obj['sql_tbl_prefix']."topics t
						    LEFT JOIN ".$this->DB->obj['sql_tbl_prefix']."posts p ON (p.new_topic = 1 AND p.topic_id = t.tid)
		   WHERE t.forum_id IN (".$forum_id.")
		    AND t.approved=1
		   ORDER BY t.tid DESC
		   LIMIT 0, ".$this->RSS['NEWS_LIMIT']);
  while ( $row = $this->DB->fetch_row() )
   {
    $attach="";
    if($row['attach_id']) $attach="<br/><img src='{$this->RSS['HOME_URL']}/uploads/{$row['attach_id']}' alt='img' />";
    $item .= "<item>
						  <pubDate>".gmdate('r', $row['post_date'])."</pubDate>
						  <title>".$row['title']."</title>
		 <description>".$this->html2text($row['post'].$attach)."</description>
						  <link>".$this->RSS['BOARD_URL']."/topic".$row['tid'].".html</link>
				   </item>";
   }
  return $item;
}


gogamus
  • Участники
  • Cообщений: 74

Отправлено

БРАВО!!! Спасибо большое.

Да кастати, если кто то будет использовать этот рсс, то знайте, смайлики не прописываютса, хотя должны. Мне это не нужно, так, чтоб знали. :x:

Сообщение отредактировал Roman A Zagorodni: 06 Март 2013 - 00:49





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных