This is an XML parser based on PHP's "xml" extension, based on the bundled expat library. Notes: - It requires PHP 4.0.4pl1 or greater - From revision 1.17, the function names used by the 'func' mode are in the format "xmltag_$elem", for example: use "xmltag_name" to handle the tags of your xml file.
Author: Stig Bakken (ssb@fast.no)
Author: Tomas V.V.Cox (cox@idecnet.com)
Author: Stephan Schmidt (schst@php-tools.net)
Inheritance: extends PEAR
 function setInput($fp)
 {
     if (in_array($fp, $this->aTables)) {
         $this->tableName = $fp;
     }
     parent::setInput(MAX_PATH . '/tests/data/testData_' . $fp . '.xml');
 }
 function __construct($variables, $fail_on_invalid_names = true, $structure = false, $valid_types = array(), $force_defaults = true)
 {
     // force ISO-8859-1 due to different defaults for PHP4 and PHP5
     // todo: this probably needs to be investigated some more andcleaned up
     parent::__construct('ISO-8859-1');
     $this->variables = $variables;
     $this->structure = $structure;
     //        $this->val = new MDB2_Schema_Validate($fail_on_invalid_names, $valid_types, $force_defaults);
 }
Beispiel #3
0
 /**
  * Constructor
  *
  * @access public
  * @param mixed File pointer, name of the RSS file, or an RSS string.
  * @param string  Source charset encoding, use null (default) to use
  *                default encoding (ISO-8859-1)
  * @param string  Target charset encoding, use null (default) to use
  *                default encoding (ISO-8859-1)
  * @return void
  */
 function __construct($handle = '', $srcenc = null, $tgtenc = null)
 {
     if ($srcenc === null && $tgtenc === null) {
         parent::__construct();
     } else {
         parent::__construct($srcenc, 'event', $tgtenc);
     }
     $this->setInput($handle);
     if ($handle == '') {
         $this->customRaiseError('No input passed.');
     }
 }
Beispiel #4
0
 /**
  * Parses the data of the given configuration file
  *
  * @access public
  * @param string $datasrc    path to the configuration file
  * @param object $obj        reference to a config object
  * @return mixed returns a PEAR_ERROR, if error occurs or true if ok
  */
 function &parseDatasrc($datasrc, &$obj)
 {
     $this->folding = false;
     $this->cdata = null;
     parent::__construct($this->options['encoding'], 'event');
     $this->containers[0] =& $obj->container;
     if (is_string($datasrc)) {
         if ($this->options['isFile']) {
             $err = $this->setInputFile($datasrc);
             if (PEAR::isError($err)) {
                 return $err;
             }
             $err = $this->parse();
         } else {
             $err = $this->parseString($datasrc, true);
         }
     } else {
         $this->setInput($datasrc);
         $err = $this->parse();
     }
     if (PEAR::isError($err)) {
         return $err;
     }
     return true;
 }
Beispiel #5
0
 function XML_Messages_Parser(&$i18n, $srcenc = 'UTF-8', $mode = 'func', $tgtenc = null)
 {
     parent::XML_Parser($srcenc, $mode, $tgtenc);
     $this->_i18n =& $i18n;
 }
Beispiel #6
0
 function Translator_XMLParser(&$translator)
 {
     parent::XML_Parser('iso-8859-1', 'event', 'iso-8859-1');
     $this->translator =& $translator;
 }
 function ReportParser(&$reportClass)
 {
     static $uc;
     static $ucd;
     static $ucf;
     $this->user_criteria =& $uc;
     $this->user_criteria_data =& $ucd;
     $this->user_criteria_fields =& $ucf;
     # Create the user criteria fields as static members
     if (!is_a($reportClass, 'Reporting')) {
         die('Parameter 1 must be a Reporting reference.');
     }
     # Save the Reporting reference
     $this->reportClass =& $reportClass;
     # Clear the cdata buffer
     $this->cdata = "";
     # Init the stack
     $this->stack = array();
     # Call into XML_Parser, to set us up the bomb. (See references on ALL YOUR BASE R BELONG TO US - Seriously, it's funny shit.)
     parent::XML_Parser();
     # Do NOT perform case foldering!
     $this->folding = false;
 }
Beispiel #8
0
 function __construct()
 {
     // force ISO-8859-1 due to different defaults for PHP4 and PHP5
     // todo: this probably needs to be investigated some more andcleaned up
     parent::XML_Parser('ISO-8859-1');
 }
 /**
  * Parses the XML text specified in the data argument.
  *
  * @param string $data the XML document to parse.
  */
 function parseXML($data)
 {
     // Strip white space
     $data = preg_replace("/>\\s+</i", "><", $data);
     $parser = new XML_Parser($this);
     $parser->parse($data);
 }
Beispiel #10
0
 function myParser()
 {
     parent::XML_Parser();
 }
Beispiel #11
0
 /**
  * Maps an XML string to an XML_Tree.
  *
  * @return mixed The XML tree root (an XML_Tree_Node), or PEAR_Error upon error.
  * @access public
  */
 function &getTreeFromString($str)
 {
     $this->i = null;
     $this->folding = false;
     parent::__construct(null, 'event');
     $this->cdata = null;
     $err = $this->parseString($str);
     if (PEAR::isError($err)) {
         return $err;
     }
     return $this->root;
 }
Beispiel #12
0
    /**
     * Outputs frontpage HTML
     *
     * @return       Nothing
     */
    function uploadConfirmPerl()
	{
	global $database, $my, $acl, $mosConfig_absolute_path, $mosConfig_mailfrom, $mosConfig_fromname, $mosConfig_live_site, $Itemid, $mosConfig_sitename;

	$c = hwd_vs_Config::get_instance();
	$db = & JFactory::getDBO();
	$my = & JFactory::getUser();
	$acl= & JFactory::getACL();

	// get server configuration data
	require_once(JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_hwdvideoshare'.DS.'serverconfig.hwdvideoshare.php');
	$s = hwd_vs_SConfig::get_instance();

	//******************************************************************************************************
	//   ATTENTION: THIS FILE HEADER MUST REMAIN INTACT. DO NOT DELETE OR MODIFY THIS FILE HEADER.
	//
	//   Name: ubr_finished.php
	//   Revision: 1.3
	//   Date: 2/18/2008 5:36:57 PM
	//   Link: http://uber-uploader.sourceforge.net
	//   Initial Developer: Peter Schmandra  http://www.webdice.org
	//   Description: Show successful file uploads.
	//
	//   Licence:
	//   The contents of this file are subject to the Mozilla Public
	//   License Version 1.1 (the "License"); you may not use this file
	//   except in compliance with the License. You may obtain a copy of
	//   the License at http://www.mozilla.org/MPL/
	//
	//   Software distributed under the License is distributed on an "AS
	//   IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
	//   implied. See the License for the specific language governing
	//   rights and limitations under the License.
	//
	//***************************************************************************************************************

	//***************************************************************************************************************
	// The following possible query string formats are assumed
	//
	// 1. ?upload_id=upload_id
	// 2. ?about=1
	//****************************************************************************************************************

	$THIS_VERSION = "1.3";                                // Version of this file
	$UPLOAD_ID = '';                                      // Initialize upload id

	require_once(JPATH_SITE.DS.'components'.DS.'com_hwdvideoshare'.DS.'assets'.DS.'uploads'.DS.'perl'.DS.'ubr_ini.php');
	require_once(JPATH_SITE.DS.'components'.DS.'com_hwdvideoshare'.DS.'assets'.DS.'uploads'.DS.'perl'.DS.'ubr_lib.php');
	require_once(JPATH_SITE.DS.'components'.DS.'com_hwdvideoshare'.DS.'assets'.DS.'uploads'.DS.'perl'.DS.'ubr_finished_lib.php');

	if($PHP_ERROR_REPORTING){ error_reporting(E_ALL); }

	header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
	header('Last-Modified: '.date('r'));
	header('Cache-Control: no-store, no-cache, must-revalidate');
	header('Cache-Control: post-check=0, pre-check=0', FALSE);
	header('Pragma: no-cache');

	if(preg_match("/^[a-zA-Z0-9]{32}$/", $_GET['upload_id'])){ $UPLOAD_ID = $_GET['upload_id']; }
	elseif(isset($_GET['about']) && $_GET['about'] == 1){ kak("<u><b>UBER UPLOADER FINISHED PAGE</b></u><br>UBER UPLOADER VERSION =  <b>" . $UBER_VERSION . "</b><br>UBR_FINISHED = <b>" . $THIS_VERSION . "<b><br>\n", 1 , __LINE__); }
	else{ kak("<font color='red'>ERROR</font>: Invalid parameters passed<br>", 1, __LINE__); }

	//Declare local values
	$_XML_DATA = array();                                          // Array of xml data read from the upload_id.redirect file
	$_CONFIG_DATA = array();                                       // Array of config data read from the $_XML_DATA array
	$_POST_DATA = array();                                         // Array of posted data read from the $_XML_DATA array
	$_FILE_DATA = array();                                         // Array of 'FileInfo' objects read from the $_XML_DATA array
	$_FILE_DATA_TABLE = '';                                        // String used to store file info results nested between <tr> tags
	$_FILE_DATA_EMAIL = '';                                        // String used to store file info results

	$xml_parser = new XML_Parser;                                  // XML parser
	$xml_parser->setXMLFile($TEMP_DIR, $_REQUEST['upload_id']);    // Set upload_id.redirect file
	$xml_parser->setXMLFileDelete($DELETE_REDIRECT_FILE);          // Delete upload_id.redirect file when finished parsing
	$xml_parser->parseFeed();                                      // Parse upload_id.redirect file

	// Display message if the XML parser encountered an error
	if($xml_parser->getError()){ kak($xml_parser->getErrorMsg(), 1, __LINE__); }

	$_XML_DATA = $xml_parser->getXMLData();                        // Get xml data from the xml parser
	$_CONFIG_DATA = getConfigData($_XML_DATA);                     // Get config data from the xml data
	$_POST_DATA  = getPostData($_XML_DATA);                        // Get post data from the xml data
	$_FILE_DATA = getFileData($_XML_DATA);                         // Get file data from the xml data

	// Output XML DATA, CONFIG DATA, POST DATA, FILE DATA to screen and exit if DEBUG_ENABLED.
	if($DEBUG_FINISHED){
		debug("<br><u>XML DATA</u>", $_XML_DATA);
		debug("<u>CONFIG DATA</u>", $_CONFIG_DATA);
		debug("<u>POST DATA</u>", $_POST_DATA);
		debug("<u>FILE DATA</u><br>", $_FILE_DATA);
		exit;
	}

	/////////////////////////////////////////////////////////////////////////////////////////////////
	//
	//           *** ATTENTION: ENTER YOUR CODE HERE !!! ***
	//
	// This is a good place to put your post upload code. Like saving the
	// uploaded file information to your DB or doing some image
	// manipulation. etc. Everything you need is in the
	// $XML DATA, $_CONFIG_DATA, $_POST_DATA and $_FILE_DATA arrays.
	//
	/////////////////////////////////////////////////////////////////////////////////////////////////
	// NOTE: You can now access all XML values below this comment. eg.
	//   $_XML_DATA['upload_dir']; or $_XML_DATA['link_to_upload'] etc
	/////////////////////////////////////////////////////////////////////////////////////////////////
	// NOTE: You can now access all config values below this comment. eg.
	//   $_CONFIG_DATA['upload_dir']; or $_CONFIG_DATA['link_to_upload'] etc
	/////////////////////////////////////////////////////////////////////////////////////////////////
	// NOTE: You can now access all post values below this comment. eg.
	//   $_POST_DATA['client_id']; or $_POST_DATA['check_box_1_'] etc
	/////////////////////////////////////////////////////////////////////////////////////////////////
	// NOTE: You can now access all file (slot, name, size, type) info below this comment. eg.
	//   $_FILE_DATA[0]->name  or  $_FILE_DATA[0]->getFileInfo('name')
	/////////////////////////////////////////////////////////////////////////////////////////////////

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	// Create thumnail example  (must uncomment line 34)
	// if( $_FILE_DATA[0]->type  == 'image/jpeg'){ $success = createThumbFile($_CONFIG_DATA['upload_dir'],  $_FILE_DATA[0]->name, $_CONFIG_DATA['upload_dir'],  120,  100);  }
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	//Create file upload table
	$_FILE_DATA_TABLE = getFileDataTable($_FILE_DATA, $_CONFIG_DATA);

	// Create and send email
	if($_CONFIG_DATA['send_email_on_upload']){ emailUploadResults($_FILE_DATA, $_CONFIG_DATA, $_POST_DATA); }

		$file_name = $_FILE_DATA[0]->name;
		$file_ext = substr($file_name, strrpos($file_name, '.') + 1);
		$file_ext = strtolower($file_ext);
		$file_video_name = $file_name;
		$file_video_id = substr($file_name, 0, -(strlen($file_ext)+1));

		$title 				= hwd_vs_tools::generatePostTitle($_POST_DATA['title']);
		$description 		= hwd_vs_tools::generatePostDescription($_POST_DATA['description']);
		$tags 				= hwd_vs_tools::generatePostTags($_POST_DATA['tags']);
		$category_id 		= intval ($_POST_DATA['category_id']);
		$public_private 	= $_POST_DATA['public_private'];
		$allow_comments 	= intval ($_POST_DATA['allow_comments']);
		$allow_embedding 	= intval ($_POST_DATA['allow_embedding']);
		$allow_ratings 		= intval ($_POST_DATA['allow_ratings']);

		$checkform = hwd_vs_tools::checkFormComplete($title, $description, $category_id, $tags, $public_private, $allow_comments, $allow_embedding, $allow_ratings);
		if (!$checkform) { return; }

		// initialise database
		$row = new hwdvids_video($db);

		if ($file_ext == "swf") {
			$_POST['video_type'] 		= "swf";
		} else if ($file_ext == "mp4") {
			$_POST['video_type'] 		= "mp4";
		} else {
			$_POST['video_type'] 		= "local";
		}

		$password = $_POST_DATA['hwdvspassword'];
		if (!empty($password))
		{
			$_POST['password'] 		= $password;
		}

		$_POST['title'] 			= $title;
		$_POST['description'] 		= $description;
		$_POST['category_id'] 		= $category_id;
		$_POST['tags'] 				= $tags;
		$_POST['public_private'] 	= $public_private;
		$_POST['allow_comments'] 	= $allow_comments;
		$_POST['allow_embedding'] 	= $allow_embedding;
		$_POST['allow_ratings'] 	= $allow_ratings;
		$_POST['date_uploaded'] 	= date('Y-m-d H:i:s');
		$_POST['user_id'] 			= $my->id;
		$_POST['published'] 		= 1;

		if ($c->requiredins == 1) {
			$_POST['video_id'] 		= $file_video_name;
			// check if we are reprocessing
			if ($c->reconvertflv == 0) {
				if ($file_ext == "flv") {
					$_POST['approved'] = "queuedforthumbnail";
				} else if ($file_ext == "swf") {
					$_POST['approved'] = "queuedforswf";
				} else if ($file_ext == "mp4") {
					$_POST['approved'] = "queuedformp4";
				} else {
					$_POST['approved'] = "queuedforconversion";
				}
			} else {
				if ($file_ext == "swf") {
					$_POST['approved'] = "queuedforswf";
				} else if ($file_ext == "mp4") {
					$_POST['approved'] = "queuedformp4";
				} else {
					$_POST['approved'] = "queuedforconversion";
				}
			}
		} else if ($c->requiredins == 0) {

			$originals_Dir = JPATH_SITE.DS.'hwdvideos'.DS.'uploads'.DS.'originals'.DS;
			$base_Dir = JPATH_SITE.DS.'hwdvideos'.DS.'uploads'.DS;

			if ($file_ext !== "flv" && $file_ext !== "mp4" && $file_ext !== "swf") {
				hwd_vs_tools::infomessage(4, 0, _HWDVIDS_TITLE_UPLDFAIL, _HWDVIDS_ERROR_UPLDERR04, "exclamation.png", 0);
				return;
			}

			if (!copy($originals_Dir.$file_name, $base_Dir.$file_video_id.".".strtolower($file_ext))) {

        		hwd_vs_tools::infomessage(4, 0, _HWDVIDS_TITLE_UPLDFAIL, _HWDVIDS_ERROR_UPLDERR01, "exclamation.png", 0);
				return;

			} else {

				if ($c->deleteoriginal == 1) {
					if (file_exists($base_Dir.$file_name)) {
						@unlink($originals_Dir.$file_name);
					}
				}

				if ($c->aav == 1) {
					$_POST['approved'] = "yes";
				} else {
					$_POST['approved'] = "pending";
				}
			}

			$_POST['video_id'] 		= $file_video_id;

		}

		//check if already exists
		$db->SetQuery( 'SELECT count(*)'
						. ' FROM #__hwdvidsvideos'
						. ' WHERE video_id = "'.$file_video_id.'"'
						);
		$duplicatecount = $db->loadResult();
		if ($duplicatecount > 0) {
        	hwd_vs_tools::infomessage(4, 0, _HWDVIDS_TITLE_UPLDFAIL, _HWDVIDS_ERROR_UPLDERR01, "exclamation.png", 0);
			return;
		}

		if(empty($_POST['video_id'])) {
        	hwd_vs_tools::infomessage(4, 0, _HWDVIDS_TITLE_UPLDFAIL, _HWDVIDS_ERROR_UPLDERR01, "exclamation.png", 0);
			return;
		}

		// bind it to the table
		if (!$row->bind($_POST))
		{
			echo "<script type=\"text/javascript\">alert('".$row->getError()."');window.history.go(-1);</script>\n";
			exit();
		}

		// store it in the db
		if (!$row->store())
		{
			echo "<script type=\"text/javascript\">alert('".$row->getError()."');window.history.go(-1);</script>\n";
			exit();
		}

		include_once(JPATH_SITE.DS.'administrator'.DS.'components'.DS.'com_hwdvideoshare'.DS.'helpers'.DS.'events.php');

		$params->title = $title;
		$params->id = $row->id;
		$params->category_id = $row->category_id;
		$params->type = $row->video_type;
		$params->user_id = $row->user_id;

		hwdvsEvent::onAfterVideoUpload($params);

		hwd_vs_html::uploadConfirm($title, $row);
	}
Beispiel #13
0
 /**
  * Constructor
  *
  * @access public
  * @param mixed File pointer or name of the RDF file.
  * @return void
  */
 function __construct($handle = '')
 {
     parent::__construct();
     if (!empty($handle)) {
         $this->setInput($handle);
     } else {
         $this->raiseError('No filename passed.');
     }
 }
Beispiel #14
0
 /**
  * Constructor
  *
  * @access  public
  * @return  void
  */
 function XML_Feed()
 {
     parent::__construct();
 }
Beispiel #15
0
 /**
  * Creates an XML parser.
  *
  * This is needed for PHP4 compatibility, it will
  * call the constructor, when a new instance is created.
  *
  * @param string $srcenc source charset encoding, use NULL (default) to use
  *                       whatever the document specifies
  * @param string $mode   how this parser object should work, "event" for
  *                       handleElement(), "func" to have it call functions
  *                       named after elements (handleElement_$name())
  * @param string $tgenc  a valid target encoding
  */
 function __construct($srcenc = null, $mode = 'event', $tgtenc = null)
 {
     parent::__construct($srcenc, $mode, $tgtenc);
 }
 /**
  * Sets the input xml file to be parsed
  *
  * @param    string      Filename (full path)
  * @return   boolean
  * @access   public
  */
 function setInputFile($file)
 {
     $this->_syntaxFile = $file;
     $ret = parent::setInputFile($file);
     if (PEAR::isError($ret)) {
         $this->_error(TEXT_HIGHLIGHTER_FILE_READ, $ret->message);
         return false;
     }
     return true;
 }
 function __construct()
 {
     parent::__construct('ISO-8859-1');
     //$this->__construct();
 }
 /** 
  * Constructor 
  * @access public
  */
 public function BasicXmlParser()
 {
     parent::XML_Parser();
 }
 function OA_UpgradePackageParser()
 {
     parent::XML_Parser('ISO-8859-1');
     //$this->__construct();
 }
 function __construct()
 {
     parent::__construct();
 }
Beispiel #21
0
header('Cache-Control: post-check=0, pre-check=0', FALSE);
header('Pragma: no-cache');

if(preg_match("/^[a-zA-Z0-9]{32}$/", $_GET['upload_id'])){ $UPLOAD_ID = $_GET['upload_id']; }
elseif(isset($_GET['about']) && $_GET['about'] == 1){ kak("<u><b>UBER UPLOADER FINISHED PAGE</b></u><br>UBER UPLOADER VERSION =  <b>" . $UBER_VERSION . "</b><br>UBR_FINISHED = <b>" . $THIS_VERSION . "<b><br>\n", 1 , __LINE__); }
else{ kak("<font color='red'>ERROR</font>: Invalid parameters passed<br>", 1, __LINE__); }

//Declare local values
$_XML_DATA = array();                                          // Array of xml data read from the upload_id.redirect file
$_CONFIG_DATA = array();                                       // Array of config data read from the $_XML_DATA array
$_POST_DATA = array();                                         // Array of posted data read from the $_XML_DATA array
$_FILE_DATA = array();                                         // Array of 'FileInfo' objects read from the $_XML_DATA array
$_FILE_DATA_TABLE = '';                                        // String used to store file info results nested between <tr> tags
$_FILE_DATA_EMAIL = '';                                        // String used to store file info results

$xml_parser = new XML_Parser;                                  // XML parser
$xml_parser->setXMLFile($TEMP_DIR, $_REQUEST['upload_id']);    // Set upload_id.redirect file
$xml_parser->setXMLFileDelete($DELETE_REDIRECT_FILE);          // Delete upload_id.redirect file when finished parsing
$xml_parser->parseFeed();                                      // Parse upload_id.redirect file

// Display message if the XML parser encountered an error
if($xml_parser->getError()){ kak($xml_parser->getErrorMsg(), 1, __LINE__); }

$_XML_DATA = $xml_parser->getXMLData();                        // Get xml data from the xml parser
$_CONFIG_DATA = getConfigData($_XML_DATA);                     // Get config data from the xml data
$_POST_DATA  = getPostData($_XML_DATA);                        // Get post data from the xml data
$_FILE_DATA = getFileData($_XML_DATA);                         // Get file data from the xml data


// Output XML DATA, CONFIG DATA, POST DATA, FILE DATA to screen and exit if DEBUG_ENABLED.
if($DEBUG_FINISHED){
Beispiel #22
0
    kak("<span class='ubrError'>ERROR</span>: Invalid parameters passed<br>", 1, __LINE__, $_INI['path_to_css_file']);
}
//Declare local values
$_XML_DATA = array();
// Array of xml data read from the upload_id.redirect file
$_CONFIG_DATA = array();
// Array of config data read from the $_XML_DATA array
$_POST_DATA = array();
// Array of posted data read from the $_XML_DATA array
$_FILE_DATA = array();
// Array of 'FileInfo' objects read from the $_XML_DATA array
$_FILE_DATA_TABLE = '';
// String used to store file info results nested between <tr> tags
$_FILE_DATA_EMAIL = '';
// String used to store file info results
$xml_parser = new XML_Parser();
// XML parser
$xml_parser->setXMLFile($TEMP_DIR, $_GET['upload_id']);
// Set upload_id.redirect file
$xml_parser->setXMLFileDelete($_INI['delete_redirect_file']);
// Delete upload_id.redirect file when finished parsing
$xml_parser->parseFeed();
// Parse upload_id.redirect file
// Display message if the XML parser encountered an error
if ($xml_parser->getError()) {
    kak($xml_parser->getErrorMsg(), 1, __LINE__, $_INI['path_to_css_file']);
}
$_XML_DATA = $xml_parser->getXMLData();
// Get xml data from the xml parser
$_CONFIG_DATA = getConfigData($_XML_DATA);
// Get config data from the xml data
 /**
  *  This function parses the XML data and retrieves the version and encoding.
  *
  *  @param $data   The XML data.
  */
 function parseXML($data)
 {
     // Strip white space
     $data = preg_replace("/>\\s+</i", "><", $data);
     $parser = new XML_Parser($this);
     $parser->encoding = YDConfig::get('YD_XML_ENCODING', 'UTF-8');
     $parser->parse($data);
     // Get version and encoding
     if (!is_null($parser->version)) {
         $this->version = $parser->version;
     }
     if (!is_null($parser->encoding)) {
         $this->encoding = $parser->encoding;
     }
 }
Beispiel #24
0
 /**
  * Creates an XML parser.
  *
  * This is needed for PHP4 compatibility, it will
  * call the constructor, when a new instance is created.
  *
  * @param string $srcenc source charset encoding, use NULL (default) to use
  *                       whatever the document specifies
  * @param string $mode   how this parser object should work, "event" for
  *                       startelement/endelement-type events, "func"
  *                       to have it call functions named after elements
  * @param string $tgenc  a valid target encoding
  */
 function XML_Parser($srcenc = null, $mode = 'event', $tgtenc = null)
 {
     XML_Parser::__construct($srcenc, $mode, $tgtenc);
 }
Beispiel #25
0
function ExecActions($action)
{
    /*=============*/
    Lib_myLog("action: ", $action);
    // On recupere la configuration issue de conf.php
    global $lang, $MSG, $secure;
    // On recupere tous les objet contenant les donnees
    global $data_in, $data_out, $data_srv, $session;
    // Initialization des variables
    global $message;
    switch ($action) {
        case "Admin_Utilisateurs":
            /*=============*/
            Lib_myLog("Recuperation de la liste des utilisateurs de la base");
            $data_out['tab_groupes'] = Groupes_chercher('*');
            $data_out['liste_utilisateurs'] = Utilisateurs_chercher('*');
            // On renseigne l'indicateur "code" pour piloter l'affichage du menu javascript
            $data_out['code'] = 'acces_client';
            $data_out['page'] = 'acces.php';
            break;
        case "Utilisateurs_ADD":
            $F5 = Lib_checkF5($session, $data_in['timestamp']);
            $continue = $F5 ? false : true;
            // On intialise une pseudo-transaction qui nous permettre de stocker tous les objets rajoutés à la base
            // pour pouvoir les supprimer si nécessaire
            $transaction = new Collection();
            if ($continue) {
                $utilisateur = Utilisateur_recuperer($data_in['nom_utilisateur']);
                if ($continue && $utilisateur->id_utilisateur) {
                    /*=============*/
                    Lib_myLog("Le code d'utilisateur existe deja");
                    $data_out['message_ko'] = 'Ce code utilisateur existe d&eacute;j&agrave';
                    $continue = false;
                }
                if ($continue) {
                    /*=============*/
                    Lib_myLog("Creation nouvel objet Utilisateur");
                    $utilisateur = new Utilisateur();
                    $utilisateur->societe = $data_in['societe'];
                    $utilisateur->nom_personne = $data_in['nom_personne'];
                    $utilisateur->prenom_personne = $data_in['prenom_personne'];
                    $utilisateur->email = $data_in['email'];
                    $utilisateur->nom_utilisateur = $data_in['nom_utilisateur'];
                    $utilisateur->nom_groupe = 'utilisateur';
                    $utilisateur->password = $data_in['password'];
                    $utilisateur->nb_connect = 10;
                    $utilisateur->etat = 'actif';
                    $id_utilisateur = $utilisateur->ADD();
                    /*=============*/
                    Lib_myLog("Creation d'un repertoire pour l'utilisateur");
                    mkdir("../../documents/{$id_utilisateur}");
                    chmod("../../documents/{$id_utilisateur}", 0705);
                    // On créé un fichier d'index pour que personne ne puisse voir directement le contenu du répertoire
                    $file = "../../documents/{$id_utilisateur}/index.php";
                    $index = fopen($file, "w");
                    fputs($index, "<?");
                    fputs($index, "header('HTTP/1.0 404 Not Found');");
                    fputs($index, "?>");
                    fclose($index);
                }
            }
            if ($continue) {
                $data_out['message_ok'] = "L'acc&eacute;s a bien &eacute;t&eacute; rajout&eacute;";
                ExecActions('Admin_Utilisateurs');
            } else {
                if ($F5) {
                    /*=============*/
                    Lib_myLog("Tentative de F5!");
                    $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
                    ExecActions('Admin_Utilisateurs');
                } else {
                    /*=============*/
                    Lib_myLog("Annulation de l'ajout suite a une erreur");
                    if (!isset($data_out['message_ko'])) {
                        $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Mysql%%'];
                    }
                    // On ré-affiche les données dans la page de saisie...
                    $data_out = array_merge($data_out, $data_in);
                    ExecActions('Admin_Utilisateurs');
                }
            }
            break;
        case "Utilisateurs_UPD":
            /*=============*/
            Lib_myLog("Mise a jour de l'utilisateur");
            $utilisateur = Utilisateur_recuperer($data_in['id_utilisateur']);
            $utilisateur->societe = $data_in['societe'];
            $utilisateur->nom_personne = $data_in['nom_personne'];
            $utilisateur->prenom_personne = $data_in['prenom_personne'];
            $utilisateur->email = $data_in['email'];
            $utilisateur->nom_utilisateur = $data_in['nom_utilisateur'];
            $utilisateur->password = $data_in['password'];
            $utilisateur->UPD();
            $data_out['message_ok'] = "L'utilisateur a bien &eacute;t&eacute; mis &agrave; jour";
            ExecActions("Admin_Utilisateurs");
            break;
        case "Utilisateurs_DEL":
            /*=============*/
            Lib_myLog("Suppression de l'utilisateur avec l'identifiant " . $data_in['id_utilisateur'] . " de la base");
            $utilisateur = Utilisateur_recuperer($data_in['id_utilisateur']);
            $utilisateur->DEL();
            /*=============*/
            Lib_myLog("Suppression du repertoire de l'utilisateur");
            deldir("../../documents/" . $utilisateur->id_utilisateur);
            $data_out['message_ok'] = "L'utilisateur a bien &eacute;t&eacute; &eacute;t&eacute; supprim&eacute;";
            ExecActions("Admin_Utilisateurs");
            break;
        case "POPUP_Utilisateur_UPD":
            // Action utilisée pour la saisie semi-automatique et appelée par la fonction AJAX
            /*=============*/
            Lib_myLog("Recuperation de l'utilisateur");
            $data_out = Utilisateurs_chercher('', $data_in['id_utilisateur']);
            $data_out['tab_groupes'] = Groupes_chercher('*');
            $data_out['page'] = 'acces_popup_utilisateur_upd.php';
            break;
        case "Documents_Accueil":
            /*=============*/
            Lib_myLog("Recuperation de l'arborescence");
            $data_out['liste_fils'] = Docs_construire($data_in['id_utilisateur']);
            $utilisateur = Utilisateur_recuperer($data_in['id_utilisateur']);
            $data_out['nom_personne'] = $utilisateur->nom_personne;
            $data_out['prenom_personne'] = $utilisateur->prenom_personne;
            $data_out['id_utilisateur'] = $data_in['id_utilisateur'];
            // On positionne par défaut les id_pere et les id_grand_pere
            $data_out['id_pere'] = 0;
            $data_out['id_fils'] = 0;
            if (isset($data_in['id_doc'])) {
                /*=============*/
                Lib_myLog("Recuperation de l'ascendance");
                $doc = Doc_recuperer($data_in['id_doc']);
                /*=============*/
                Lib_myLog("Famille: " . $doc->famille);
                $tab_famille = explode('-', $doc->famille);
                /*=============*/
                Lib_myLog("Nb elements: " . count($tab_famille));
                if (count($tab_famille) == 2) {
                    $data_out['id_pere'] = $tab_famille[0];
                }
                if (count($tab_famille) == 3) {
                    $data_out['id_pere'] = $tab_famille[0];
                    $data_out['id_fils'] = $tab_famille[1];
                }
            }
            // On renseigne l'indicateur "code" pour piloter l'affichage du menu javascript
            $data_out['code'] = 'acces_client';
            $data_out['page'] = 'documents.php';
            break;
        case "Element_Bouger":
            $tab_positions = explode("|", $data_in['tab_list']);
            $i = 1;
            foreach ($tab_positions as $position) {
                $projet = Doc_recuperer($position);
                $projet->ordre = $i;
                $projet->UPD();
                $i++;
            }
            $data_out['message_ok'] = $MSG['fr']['%%arbo_UPD%%'];
            ExecActions('Documents_Accueil');
            break;
        case "Element_DEL":
            /*=============*/
            Lib_myLog("Recuperation de l'element");
            $obj_element_initial = Doc_recuperer($data_in['id_doc']);
            $id_utilisateur = $obj_element_initial->id_utilisateur;
            $data_out['message_ok'] = "Le dossier a bien &eacute;t&eacute; supprim&eacute;";
            if ($obj_element_initial->type_pere == 'document') {
                $url = $obj_element_initial->intitule_canonize;
                /*=============*/
                Lib_myLog("Suppression physique du document");
                unlink("../../documents/{$id_utilisateur}/{$url}");
                $data_out['message_ok'] = "Le document a bien &eacute;t&eacute supprim&eacute";
            }
            /*=============*/
            Lib_myLog("Retablissement de l'ordre sans coupure");
            $args_elements['famille'] = $obj_element_initial->famille;
            $args_elements['sup_ordre'] = $obj_element_initial->ordre;
            $args_elements['id_utilisateur'] = $obj_element_initial->id_utilisateur;
            $elements = Docs_chercher($args_elements);
            foreach ($elements as $element) {
                $obj_element = Doc_recuperer($element['id_doc']);
                $obj_element->ordre--;
                $obj_element->UPD();
            }
            $obj_element_initial->DEL();
            $data_in['id_utilisateur'] = $id_utilisateur;
            ExecActions('Documents_Accueil');
            break;
        case "Categorie_ADD":
            $args_arbos['famille'] = '';
            if ($data_in['id_pere'] != '') {
                /*=============*/
                Lib_myLog("Il s'agit d'un ajout de sous-element !");
                $arbo_pere = Doc_recuperer($data_in['id_pere']);
                $args_arbos['famille'] = $arbo_pere->famille . $arbo_pere->id_pere . '-';
            }
            /*=============*/
            Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element");
            $arbos = Docs_chercher($args_arbos);
            $ordre = count($arbos);
            $ordre++;
            /*=============*/
            Lib_myLog("Rajout d'un nouvel element");
            $arbo = new Doc();
            $arbo->id_utilisateur = $data_in['id_utilisateur'];
            if ($data_in['id_pere'] != '') {
                $arbo->famille .= $arbo_pere->famille . $arbo_pere->id_pere . '-';
            }
            $arbo->type_pere = 'arbo';
            $arbo->ordre = $ordre;
            $arbo->etat = 'actif';
            $arbo->intitule = $data_in['intitule'];
            $id_doc = $arbo->ADD();
            // On positionne dans le "data_in" "id_doc" pour piloter l'affichage dans "Documents_Accueil"
            $data_in['id_doc'] = $id_doc;
            $data_out['message_ok'] = "Le dossier a bien &eacute;t&eacute; rajout&eacute;";
            $arbo->id_pere = $id_doc;
            $arbo->UPD();
            ExecActions('Documents_Accueil');
            break;
        case "Categorie_UPD":
            /*=============*/
            Lib_myLog("Modification de l'intitule d'un element");
            $arbo = Doc_recuperer($data_in['id_doc']);
            $arbo->intitule = $data_in['intitule'];
            $arbo->UPD();
            $data_out['message_ok'] = "Le nom du dossier a bien &eacute;t&eacute; modifi&eacute;";
            ExecActions('Documents_Accueil');
            break;
        case "AJAX_RechercherSousCategories":
            $data_out['liste_sous_categories'] = array();
            /*=============*/
            Lib_myLog("Recuperation du pere");
            $arbo_pere = Doc_recuperer($data_in['id_pere']);
            $args_sous['type_pere'] = 'arbo';
            $args_sous['famille'] = $arbo_pere->famille . $arbo_pere->id_pere . '-';
            $data_out['liste_sous_categories'] = Docs_chercher($args_sous);
            $cle = 'ordre';
            $val = usort($data_out['liste_sous_categories'], "Lib_compareUp");
            $data_out['page'] = 'ajax_sous_categories.php';
            break;
        case "Fichier_ADD":
            // DEBUT UBR
            // Je déclare en global les variables suivante intialisées lors du chargement des bibliothèques UBR
            global $TEMP_DIR, $_INI;
            //Declare local values
            $_XML_DATA = array();
            // Array of xml data read from the upload_id.redirect file
            $_CONFIG_DATA = array();
            // Array of config data read from the $_XML_DATA array
            $_POST_DATA = array();
            // Array of posted data read from the $_XML_DATA array
            $_FILE_DATA = array();
            // Array of 'FileInfo' objects read from the $_XML_DATA array
            $_FILE_DATA_TABLE = '';
            // String used to store file info results nested between <tr> tags
            $_FILE_DATA_EMAIL = '';
            // String used to store file info results
            $xml_parser = new XML_Parser();
            // XML parser
            $xml_parser->setXMLFile($TEMP_DIR, $_GET['upload_id']);
            // Set upload_id.redirect file
            $xml_parser->setXMLFileDelete($_INI['delete_redirect_file']);
            // Delete upload_id.redirect file when finished parsing
            $xml_parser->parseFeed();
            // Parse upload_id.redirect file
            // Display message if the XML parser encountered an error
            if ($xml_parser->getError()) {
                kak($xml_parser->getErrorMsg(), 1, __LINE__, $_INI['path_to_css_file']);
            }
            $_XML_DATA = $xml_parser->getXMLData();
            // Get xml data from the xml parser
            $_CONFIG_DATA = getConfigData($_XML_DATA);
            // Get config data from the xml data
            $_POST_DATA = getPostData($_XML_DATA);
            // Get post data from the xml data
            $_FILE_DATA = getFileData($_XML_DATA);
            // Get file data from the xml data
            /*=============*/
            Lib_myLog("UBR POST DATA :", $_POST_DATA);
            // On remet dans data_in les valeurs transmises par UBR
            foreach ($_POST_DATA as $key => $value) {
                $data_in[$key] = $value;
            }
            // On récupère les fichiers téléchargés
            for ($i = 0; $i < count($_FILE_DATA); $i++) {
                $file_slot = $_FILE_DATA[$i]->getFileInfo('slot');
                $file_name = $_FILE_DATA[$i]->getFileInfo('name');
                $file_size = $_FILE_DATA[$i]->getFileInfo('size');
                $file_type = $_FILE_DATA[$i]->getFileInfo('type');
                $file_status = $_FILE_DATA[$i]->getFileInfo('status');
                $file_status_desc = $_FILE_DATA[$i]->getFileInfo('status_desc');
                /*=============*/
                Lib_myLog("UBR Fichier telecharge : file_slot: {$file_slot}, file_name: {$file_name}, file_size: {$file_size}, file_type: {$file_type}, file_status: {$file_status}, file_status_desc: {$file_status_desc}");
            }
            // FIN UBR
            $F5 = Lib_checkF5($session, $data_in['timestamp']);
            $continue = $F5 ? false : true;
            if ($continue) {
                $args_arbos['famille'] = '';
                if ($data_in['id_pere'] != 0) {
                    $arbo = Doc_recuperer($data_in['id_pere']);
                    $args_arbos['famille'] = $arbo->famille . $arbo->id_pere . '-';
                    $args_arbo['id_doc'] = $data_in['id_pere'];
                    $id_categorie = $data_in['id_pere'];
                }
                // Si l'id_fils est positionné, il "surclasse" l'id_pere!
                if (isset($data_in['id_fils']) && $data_in['id_fils'] != 0) {
                    $arbo = Doc_recuperer($data_in['id_fils']);
                    $args_arbos['famille'] = $arbo->famille . $arbo->id_pere . '-';
                    $args_arbo['id_doc'] = $data_in['id_fils'];
                }
                /*=============*/
                Lib_myLog("On determine le nouvel ordre a attribuer au nouvel element dans l'arbo");
                $arbos = Docs_chercher($args_arbos);
                $ordre = count($arbos);
                $ordre++;
                /*=============*/
                Lib_myLog("On recupere le dossier dont va dependre le document");
                $arbo = Docs_chercher($args_arbo);
                if ($continue && $file_name != '') {
                    /*=============*/
                    Lib_myLog("Recuperation du fichier");
                    $nom_fichier = Lib_nettoie($file_name);
                    /*=============*/
                    Lib_myLog("Nom du fichier : {$nom_fichier}");
                    // On rajoute le document à ce niveau pour disposer de l'id_doc et le mettre dans le nom du document
                    /*=============*/
                    Lib_myLog("Rajout du document dans l'arbo");
                    $new_arbo = new Doc();
                    $new_arbo->id_utilisateur = $data_in['id_utilisateur'];
                    $new_arbo->famille .= $arbo['famille'] . $arbo['id_pere'] . '-';
                    $new_arbo->type_pere = 'document';
                    $new_arbo->ordre = $ordre;
                    $new_arbo->etat = 'actif';
                    $new_arbo->intitule = $data_in['intitule'];
                    $new_arbo->intitule_canonize = $nom_fichier;
                    $id_doc = $new_arbo->ADD();
                    $data_in['id_doc'] = $id_doc;
                    $nom_fichier = $id_doc . '_' . $nom_fichier;
                    $doc = Doc_recuperer($id_doc);
                    $doc->intitule_canonize = $nom_fichier;
                    $doc->UPD();
                    // On met le fichier récupéré avec UBR au bon endroit
                    rename("../ubr/ubr_uploads/{$file_name}", "../../documents/{$data_in['id_utilisateur']}/{$nom_fichier}");
                    $data_out['message_ok'] = "Le document a bien &eacute;t&eacute; rajout&eacute;";
                }
            }
            if ($continue) {
                ExecActions('Documents_Accueil');
            } else {
                if ($F5) {
                    /*=============*/
                    Lib_myLog("Tentative de F5!");
                    $data_out['message_ko'] = $MSG[$lang]['%%Erreur_Revalidation%%'];
                    ExecActions('Documents_Accueil');
                } else {
                    ExecActions('Documents_Accueil');
                }
            }
            break;
        case "Fichier_UPD":
            /*=============*/
            Lib_myLog("Modification de l'intitule du fichier");
            $arbo = Doc_recuperer($data_in['id_doc']);
            $arbo->intitule = $data_in['intitule'];
            $arbo->UPD();
            $data_out['message_ok'] = "La description du document a bien &eacute;t&eacute; modifi&eacute;e";
            ExecActions('Documents_Accueil');
            break;
        case "Fichier_Download":
            $doc = Doc_recuperer($data_in['id_doc']);
            $nom_fichier = $doc->intitule_canonize;
            $file = "../../documents/" . $doc->id_utilisateur . "/" . $doc->intitule_canonize;
            $size = filesize($file);
            header("Content-Type: application/octet-stream");
            header("Content-Length: {$size}");
            header("Content-Disposition: attachment; filename={$nom_fichier}");
            header("Content-Transfer-Encoding: binary");
            $fh = fopen("{$file}", "r");
            fpassthru($fh);
            break;
        default:
            ExecActions('Admin_Utilisateurs');
            break;
    }
}