* * * This software is protected by copyright, please * read the file COPYRIGHT. * This program is distributed in the hope that it * will be useful, but without any warranty; without * even the implied warranty of merchantability or * fitness for a particular purpose. Please * read the file LICENCE. * * Fichier syndication.php * Ce fichier contient les classe de gestion de la syndication * Il est a inclure dans votre script avec l'instruction includePackage(upload.php) * * @author Rooty * @since 2005/03/09 * @link www.rooty.me * @version 0.3 * @package package * @subpackage syndication * @copyright Copyright © 2009-2018, Rooty */ if ( !defined('SYSTEM_IN') ) { die("Hacking attempt"); } /** * Temps autorisé pour l'upload */ define('CONF_SYNDICATION_KEY', "test"); define('CONF_SYNDICATION_DEFAULT_PAGE', "backend.php"); /** * Permet de la syndication (compte) * Cette classe n'est pas à utiliser directement
* voir SyndicationManager * Le fichier est a inclure dans votre script avec l'instruction includePackage(syndication.php) * @package package * @subpackage syndication */ class Syndication { /**#@+ * @access private */ /** * @var chaine * @desc identifiant du noeud de limitation */ var $oid=0; /** * @var chaine * @desc objet treeNode... */ var $id=0; /** * @var chaine * @desc identifiant de l'utilisateur courant */ var $dataSource=""; /** * @var chaine * @desc identifiant de l'utilisateur courant */ var $dataType="getRssFile"; /** * @var chaine * @desc identifiant de l'utilisateur courant */ var $dataOption=array(); /**#@-*/ /** *Constructeur de la classe Syndication PHP4 * * @access public */ function Syndication() { $this->__construct(); } /** *Constructeur de la classe Syndication PHP5 * * @access public */ function __construct() { $this->setOid(0); $this->setId(0); $this->setDataSource(""); $this->setDataType("getRssFile"); $this->setDataOption( array() ); } /** * setteur de l'oid * @access public * @param entier id du noeud */ function setOid($id) { $this->oid=$id; } /** * getteur de l'oid * @access public * @param entier id du noeud */ function getOid() { return $this->oid; } /** * setteur de l'id * @access public * @param entier id du noeud */ function setId($id) { $this->id=$id; } /** * getteur de l'id * @access public * @param entier id du noeud */ function getId() { return $this->id; } /** * setteur de l'id * @access public * @param entier id du noeud */ function setDataSource($source) { $this->dataSource=$source; } /** * getteur de l'id * @access public * @param entier id du noeud */ function getDataSource() { return $this->dataSource; } /** * affectation du nom de la methode a appeler * @access public * @param entier id du noeud */ function setDataType($source) { $this->dataType=$source; } /** * nom de la methode a appeler * @access public */ function getDataType() { return $this->dataType; } /** * affectation du nom de la methode a appeler * @access public * @param entier id du noeud */ function setDataOption($array) { $this->dataOption=serialize($array); } /** * nom de la methode a appeler * @access public */ function getDataOption() { return unserialize($this->dataOption); } /** * charge a partir d'un tableau l'objet * @access public * @param entier id du noeud */ function doLoad($array) { $this->setId($array["syndication_id"]); $this->setOid($array["oid"]); $this->setDataSource($array["syndication_data_source"]); $this->setDataType($array["syndication_data_type"]); $this->setDataOption(base64_decode($array["syndication_data_option"])); return true; } /** * function de création de l'url à partir des éléments courants * @access public * @param entier id du noeud */ function getUrl() { $id=$this->getId(); $dataSource=$this->getDataSource(); $tab=array($id, $dataSource); $str=new Chaine(serialize($tab)); $url= "http://".$_SERVER["HTTP_HOST"].str_replace($GLOBALS['CONF_PAGE_EXECUTION'], "", $_SERVER["SCRIPT_NAME"]). CONF_SYNDICATION_DEFAULT_PAGE ."?key=".urlencode($str->encrypt( CONF_SYNDICATION_KEY )); return $url; } function getIdFromUrl() { if (isset($_GET["key"])) { $str=new Chaine(urldecode($_GET["key"])); $key= unserialize($str->decrypt( CONF_SYNDICATION_KEY )); if (is_array($key) && is_numeric($key[0]) && $key[0]!=0) return $key[0]; } } function getDataSourceFromUrl() { if (isset($_GET["key"])) { $str=new Chaine(urldecode($_GET["key"])); $key= unserialize($str->decrypt( CONF_SYNDICATION_KEY )); if (is_array($key)) return $key[1]; } } /** * affichage des info de la syndication+ Url d'acces * @access public * @param entier id du noeud */ function MxPrintData($blockPath) { $GLOBALS["SYSTEM_TEMPLATE"]->MxText($blockPath.".id", $this->getId() ); $GLOBALS["SYSTEM_TEMPLATE"]->MxAttribut($blockPath.".id", $this->getId() ); $GLOBALS["SYSTEM_TEMPLATE"]->MxText($blockPath.".dataSource", htmlentitiesconv($this->getDataSource() )); $GLOBALS["SYSTEM_TEMPLATE"]->MxText($blockPath.".dataType", htmlentitiesconv($this->getDataType() )); $GLOBALS["SYSTEM_TEMPLATE"]->MxText($blockPath.".dataOption", (is_array($this->getDataOption()))?htmlentitiesconv(implode(",", $this->getDataOption())):"" ); $GLOBALS["SYSTEM_TEMPLATE"]->MxText($blockPath.".url", htmlentitiesconv($this->getUrl()) ); $GLOBALS["SYSTEM_TEMPLATE"]->MxAttribut($blockPath.".url", htmlentitiesconv($this->getUrl()) ); } } /** * Permet de la syndicationManager * Cette classe n'est pas à utiliser directement
* voir SyndicationManager * Le fichier est a inclure dans votre script avec l'instruction includePackage(syndication.php) * @package package * @subpackage file */ class SyndicationManager { /** *Constructeur de la classe Upload PHP4 * * @access public */ function Syndication() { $this->__construct(); } /** *Constructeur de la classe Upload PHP5 * * @access public */ function __construct() { } /** * destruction des comptes pour un objet * @access public * @param entier oid * @return booleen */ function createSyndicationFromId($id) { //$prefixe=(!defined("DATA_ACCES_TABLE_PREFIX"))?"": DATA_ACCES_TABLE_PREFIX ; $sql ="SELECT * FROM ".DATA_ACCES_TABLE_PREFIX.DATA_ACCES_PACKAGE_PREFIX."syndication WHERE "; $sql.=" syndication_id=".$id." "; # l'ordre permet de gérer si l'uid de l'utilisateur existe /* gestion du resultat */ $GLOBALS["SYSTEM_DATABASE_CONN"]->sql_query($sql); if ($GLOBALS["SYSTEM_DATABASE_CONN"]->sql_numrows()>0) { $syndic=new Syndication(); $syndic->doLoad($GLOBALS['SYSTEM_DATABASE_CONN']->sql_fetchrow()); return $syndic; }else{ addError(1,"Syndication", "Element non existant?!",__LINE__,__FILE__); return (new Syndication()); } } /** * destruction des comptes pour un objet * @access public * @param entier oid * @return booleen */ function getSyndicationFromOid($oid) { //$prefixe=(!defined("DATA_ACCES_TABLE_PREFIX"))?"": DATA_ACCES_TABLE_PREFIX ; $sql ="SELECT * FROM ".DATA_ACCES_TABLE_PREFIX.DATA_ACCES_PACKAGE_PREFIX."syndication WHERE "; $sql.=" syndication_oid=".$oid." "; # l'ordre permet de gérer si l'uid de l'utilisateur existe /* gestion du resultat */ $GLOBALS["SYSTEM_DATABASE_CONN"]->sql_query($sql); if ($GLOBALS["SYSTEM_DATABASE_CONN"]->sql_numrows()>0) { for ($i=0; $i<$GLOBALS["SYSTEM_DATABASE_CONN"]->sql_numrows(); $i++) { $tabSyndic[$i]=new Syndication(); $tabSyndic[$i]->doLoad($GLOBALS['SYSTEM_DATABASE_CONN']->sql_fetchrow()); } return $tabSyndic; }else{ addError(1,"Syndication", "Element non existant?!",__LINE__,__FILE__); return array(); } } /** * insertion d'un élément de syndication * @access public * @param entier oid * @param chaine source de données de l'élément (voir DataCoordination) * @return booleen */ function insertSyndication($oid, $dataSource, $dataType, $dataOption="") { //$prefixe=(!defined("DATA_ACCES_TABLE_PREFIX"))?"": DATA_ACCES_TABLE_PREFIX ; $sql="INSERT INTO ".DATA_ACCES_TABLE_PREFIX.DATA_ACCES_PACKAGE_PREFIX."syndication (syndication_oid, syndication_data_source, syndication_data_type, syndication_data_option) VALUES (".$oid.", '".addslashes($dataSource)."', '".addslashes($dataType)."', '".addslashes($dataOption)."')"; /* gestion du resultat */ $GLOBALS["SYSTEM_DATABASE_CONN"]->sql_query($sql); return $GLOBALS["SYSTEM_DATABASE_CONN"]->sql_nextid(); } /** * destruction des comptes pour un objet * @access public * @param entier oid * @return booleen */ function deleteSyndicationForOid($oid) { //$prefixe=(!defined("DATA_ACCES_TABLE_PREFIX"))?"": DATA_ACCES_TABLE_PREFIX ; $sql="DELETE FROM ".DATA_ACCES_TABLE_PREFIX.DATA_ACCES_PACKAGE_PREFIX."syndication WHERE syndication_oid=".$oid; $GLOBALS["SYSTEM_DATABASE_CONN"]->sql_query($sql); return true; } /** * destruction des comptes pour un objet * @access public * @param entier id de la syndication * @return booleen */ function deleteSyndicationForId($id) { //$prefixe=(!defined("DATA_ACCES_TABLE_PREFIX"))?"": DATA_ACCES_TABLE_PREFIX ; $sql="DELETE FROM ".DATA_ACCES_TABLE_PREFIX.DATA_ACCES_PACKAGE_PREFIX."syndication WHERE syndication_id=".$id; $GLOBALS["SYSTEM_DATABASE_CONN"]->sql_query($sql); return true; } /** * destruction des comptes pour un objet * @access public * @param entier id de la syndication * @return booleen */ function deleteSyndicationForDataSource($id, $dataSource) { //$prefixe=(!defined("DATA_ACCES_TABLE_PREFIX"))?"": DATA_ACCES_TABLE_PREFIX ; $sql="DELETE FROM ".DATA_ACCES_TABLE_PREFIX.DATA_ACCES_PACKAGE_PREFIX."syndication WHERE syndication_id=".$id." AND syndication_data_source='".$dataSource."'"; $GLOBALS["SYSTEM_DATABASE_CONN"]->sql_query($sql); return true; } /** * destruction des comptes pour un objet * @access public * @param entier id de la syndication * @return booleen */ function MxPrintDataForOid($oid, $blockPath) { $tab=$this->getSyndicationFromOid($oid); for ($i=0; $iMxPrintData($blockPath); $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc($blockPath, "loop"); } return true; } /** * destruction des comptes pour un objet * @access public * @param entier id de la syndication * @return booleen */ function __execSyndication() { $syndication=new Syndication(); $id=$syndication->getIdFromUrl(); $syndication=$this->createSyndicationFromId($id); if ( ($syndication->getId()==$id) && ($id!=0) ) { $GLOBALS["SYSTEM_CONTROL"]->currentCoordinationObject=$GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]->createInstance($syndication->getOid()); $dataCoord=$GLOBALS["SYSTEM_CONTROL"]->currentCoordinationObject->__getDataCoordination(); $tabMethod=get_class_methods($dataCoord); /* Vérification de la methode d'export */ if (in_array(strtolower($syndication->getDataType()), $tabMethod)) { $opt =""; $tabOption=(is_array($syndication->getDataOption()))?$syndication->getDataOption():array(); for ($i=0; $i'.$syndication->getDataType().'('.$syndication->getDataSource().$opt.');'); return $fileData; }else{ return ""; } }else{ return ""; } } } ?>