fonction php qui plante dans joomla 1.7

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] fonction php qui plante dans joomla 1.7

    Bonjour

    J'ai utiliser un programme php qui fonctionne très bien de base.
    Ce programme serre a l'envois de fichier sur mon site, mais voila le souci, si je le laisse comme ca de basse tout le monde va envoyer ces fichier dans le même répertorie au début ça va aller mais dans un mois ces le gros souc on sera plus qui a envoyer quoi.
    Donc ces là que ça ce corse j'ai trouver comment atribuer a chaque utilisateur un dossier, j'arrive a retrouver ce dossier.
    Mais est oui ces pas si simple , quand je veux utiliser la fonction que j'ai créer est qui fonctionne très bien toute seul
    Je l'ai mi dans un dossier fonction.php
    Code:
    <?php
        function selectRepertoir() {
            echo '<script type="text/javascript">alert ("selectRepertoir");</script>';
            $user = &JFactory::getuser();
            $db = &JFactory::getDBO();
            $query = "SELECT * FROM #__users WHERE id=".$user->id;
            $db->setQuery($query);
            $row = $db->loadObjectList();
            $repertoir = array();
            foreach ($row as $rows) {
                $repertoir[] = $rows->dossier ;
            }
            return $repertoir[0];
        }
    ?>
    et quand je la mes dans le programme d'upload
    qui est dans le le fichier upload.php
    Code:
    error_reporting(E_ALL | E_STRICT);
    class UploadHandler
    {
    private $options;
    function __construct($options=null) {
    $files = '/files/Fournisseur/truc2/';
    $this->options = array(
    'script_url' => $_SERVER['PHP_SELF'],
    'upload_dir' => dirname(__FILE__).$files,
    'upload_url' => dirname($_SERVER['PHP_SELF']).$files,
    'param_name' => 'files',
    'max_file_size' => null,
    'min_file_size' => 1,
    'accept_file_types' => '/.+$/i',
    'max_number_of_files' => null,
    'discard_aborted_uploads' => true,
    'image_versions' => array(
    'thumbnail' => array(
    'upload_dir' => dirname(__FILE__).'/thumbnails/',
    'upload_url' => dirname($_SERVER['PHP_SELF']).'/thumbnails/',
    'max_width' => 80,
    'max_height' => 80
    )
    )
    );
    if ($options) {
    $this->options = array_merge_recursive($this->options, $options);
    }
    }
    private function get_file_object($file_name) {
    $file_path = $this->options['upload_dir'].$file_name;
    if (is_file($file_path) && $file_name[0] !== '.') {
    $file = new stdClass();
    $file->name = $file_name;
    $file->size = filesize($file_path);
    $file->url = $this->options['upload_url'].rawurlencode($file->name);
    foreach($this->options['image_versions'] as $version => $options) {
    if (is_file($options['upload_dir'].$file_name)) {
    $file->{$version.'_url'} = $options['upload_url']
    .rawurlencode($file->name);
    }
    }
    $file->delete_url = $this->options['script_url']
    .'?file='.rawurlencode($file->name);
    $file->delete_type = 'DELETE';
    return $file;
    }
    return null;
    }
    private function get_file_objects() {
    return array_values(array_filter(array_map(
    array($this, 'get_file_object'),
    scandir($this->options['upload_dir'])
    )));
    }
    private function create_scaled_image($file_name, $options) {
    $file_path = $this->options['upload_dir'].$file_name;
    $new_file_path = $options['upload_dir'].$file_name;
    list($img_width, $img_height) = @getimagesize($file_path);
    if (!$img_width || !$img_height) {
    return false;
    }
    $scale = min(
    $options['max_width'] / $img_width,
    $options['max_height'] / $img_height
    );
    if ($scale > 1) {
    $scale = 1;
    }
    $new_width = $img_width * $scale;
    $new_height = $img_height * $scale;
    $new_img = @imagecreatetruecolor($new_width, $new_height);
    switch (strtolower(substr(strrchr($file_name, '.'), 1))) {
    case 'jpg':
    case 'jpeg':
    $src_img = @imagecreatefromjpeg($file_path);
    $write_image = 'imagejpeg';
    break;
    case 'gif':
    $src_img = @imagecreatefromgif($file_path);
    $write_image = 'imagegif';
    break;
    case 'png':
    $src_img = @imagecreatefrompng($file_path);
    $write_image = 'imagepng';
    break;
    default:
    $src_img = $image_method = null;
    }
    $success = $src_img && @imagecopyresampled(
    $new_img,
    $src_img,
    0, 0, 0, 0,
    $new_width,
    $new_height,
    $img_width,
    $img_height
    ) && $write_image($new_img, $new_file_path);
    @imagedestroy($src_img);
    @imagedestroy($new_img);
    return $success;
    }
    private function has_error($uploaded_file, $file, $error) {
    if ($error) {
    return $error;
    }
    if (!preg_match($this->options['accept_file_types'], $file->name)) {
    return 'acceptFileTypes';
    }
    if ($uploaded_file && is_uploaded_file($uploaded_file)) {
    $file_size = filesize($uploaded_file);
    } else {
    $file_size = $_SERVER['CONTENT_LENGTH'];
    }
    if ($this->options['max_file_size'] && (
    $file_size > $this->options['max_file_size'] ||
    $file->size > $this->options['max_file_size'])
    ) {
    return 'maxFileSize';
    }
    if ($this->options['min_file_size'] &&
    $file_size < $this->options['min_file_size']) {
    return 'minFileSize';
    }
    if (is_int($this->options['max_number_of_files']) && (
    count($this->get_file_objects()) >= $this->options['max_number_of_files'])
    ) {
    return 'maxNumberOfFiles';
    }
    return $error;
    }
    private function handle_file_upload($uploaded_file, $name, $size, $type, $error) {
    $file = new stdClass();
    $file->name = basename(stripslashes($name));
    $file->size = intval($size);
    $file->type = $type;
    $error = $this->has_error($uploaded_file, $file, $error);
    if (!$error && $file->name) {
    if ($file->name[0] === '.') {
    $file->name = substr($file->name, 1);
    }
    $file_path = $this->options['upload_dir'].$file->name;
    $append_file = is_file($file_path) && $file->size > filesize($file_path);
    clearstatcache();
    if ($uploaded_file && is_uploaded_file($uploaded_file)) {
    // multipart/formdata uploads (POST method uploads)
    if ($append_file) {
    file_put_contents(
    $file_path,
    fopen($uploaded_file, 'r'),
    FILE_APPEND
    );
    } else {
    move_uploaded_file($uploaded_file, $file_path);
    }
    } else {
    file_put_contents(
    $file_path,
    fopen('php://input', 'r'),
    $append_file ? FILE_APPEND : 0
    );
    }
    $file_size = filesize($file_path);
    if ($file_size === $file->size) {
    $file->url = $this->options['upload_url'].rawurlencode($file->name);
    foreach($this->options['image_versions'] as $version => $options) {
    if ($this->create_scaled_image($file->name, $options)) {
    $file->{$version.'_url'} = $options['upload_url']
    .rawurlencode($file->name);
    }
    }
    } else if ($this->options['discard_aborted_uploads']) {
    unlink($file_path);
    $file->error = 'abort';
    }
    $file->size = $file_size;
    $file->delete_url = $this->options['script_url']
    .'?file='.rawurlencode($file->name);
    $file->delete_type = 'DELETE';
    } else {
    $file->error = $error;
    }
    return $file;
    }
    public function get() {
    $file_name = isset($_REQUEST['file']) ?
    basename(stripslashes($_REQUEST['file'])) : null; 
    if ($file_name) {
    $info = $this->get_file_object($file_name);
    } else {
    $info = $this->get_file_objects();
    }
    header('Content-type: application/json');
    echo json_encode($info);
    }
    public function post() {
    $upload = isset($_FILES[$this->options['param_name']]) ?
    $_FILES[$this->options['param_name']] : array(
    'tmp_name' => null,
    'name' => null,
    'size' => null,
    'type' => null,
    'error' => null
    );
    $info = array();
    if (is_array($upload['tmp_name'])) {
    foreach ($upload['tmp_name'] as $index => $value) {
    $info[] = $this->handle_file_upload(
    $upload['tmp_name'][$index],
    isset($_SERVER['HTTP_X_FILE_NAME']) ?
    $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
    isset($_SERVER['HTTP_X_FILE_SIZE']) ?
    $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
    isset($_SERVER['HTTP_X_FILE_TYPE']) ?
    $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
    $upload['error'][$index]
    );
    }
    } else {
    $info[] = $this->handle_file_upload(
    $upload['tmp_name'],
    isset($_SERVER['HTTP_X_FILE_NAME']) ?
    $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'],
    isset($_SERVER['HTTP_X_FILE_SIZE']) ?
    $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'],
    isset($_SERVER['HTTP_X_FILE_TYPE']) ?
    $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'],
    $upload['error']
    );
    }
    header('Vary: Accept');
    if (isset($_SERVER['HTTP_ACCEPT']) &&
    (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) {
    header('Content-type: application/json');
    } else {
    header('Content-type: text/plain');
    }
    echo json_encode($info);
    }
    public function delete() {
    $file_name = isset($_REQUEST['file']) ?
    basename(stripslashes($_REQUEST['file'])) : null;
    $file_path = $this->options['upload_dir'].$file_name;
    $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
    if ($success) {
    foreach($this->options['image_versions'] as $version => $options) {
    $file = $options['upload_dir'].$file_name;
    if (is_file($file)) {
    unlink($file);
    }
    }
    }
    header('Content-type: application/json');
    echo json_encode($success);
    }
    }
    $upload_handler = new UploadHandler();
    header('Pragma: no-cache');
    header('Cache-Control: private, no-cache');
    header('Content-Disposition: inline; filename="files.json"');
    switch ($_SERVER['REQUEST_METHOD']) {
    case 'HEAD':
    case 'GET':
    $upload_handler->get();
    break;
    case 'POST':
    $upload_handler->post();
    break;
    case 'DELETE':
    $upload_handler->delete();
    break;
    default:
    header('HTTP/1.0 405 Method Not Allowed');
    }
    ?>
    le programme de base ne fonctionne plus j'ai une erreur Json qui m'est retourner
    J'ai beau retourner le problème dans tout les sens rien a faire je trouve pas d'où vien le souci
    Alors si quelqu'un a une solution
    Merci d'avance
    Dernière édition par gandalf91 à 01/09/2011, 16h37

  • #2
    Re : fonction php qui plante dans joomla 1.7

    Bon personne ne peut m'aider ???

    Moi j'ai avancer un peut ...
    code du fichier fonction.php
    Code:
    function selectDossier() {
    echo '<script type="text/javascript">alert ("selectDossier")</script>';
    $user = &JFactory::getuser();
    $db = &JFactory::getDBO();
    $query = "SELECT * FROM #__users WHERE id=".$user->id;
    $db->setQuery($query);
    $row = $db->loadObjectList();
    $emplacement = array();
    foreach ($row as $rows) {
    $emplacement[] = $rows->dossier ;
    }
    return $emplacement[0];
    }
    ?>
    code du fichier upload.php
    Code:
    <?php
    /*
    * jQuery File Upload Plugin PHP Example 5.2.2
    * https://github.com/blueimp/jQuery-File-Upload
    *
    * Copyright 2010, Sebastian Tschan
    * https://blueimp.net
    *
    * Licensed under the MIT license:
    * http://creativecommons.org/licenses/MIT/
    */
    
    error_reporting(E_ALL | E_STRICT);
    
    class UploadHandler
    {
    private $options;
    private $fichier;
    
    function __construct($options=null) {
    include_once ('fonction.php');
    $fichier = '[B]C:/wamp/www/joomla/components/com_graph/views/fichier/tmpl/upload/files/Fournisseur/truc2/'[/B] ;
    $this->options = array(
    'script_url' => $_SERVER['PHP_SELF'],
    'upload_dir' => $fichier,
    'upload_url' => $fichier,
    'param_name' => 'files',
    // The php.ini settings upload_max_filesize and post_max_size
    // take precedence over the following max_file_size setting:
    'max_file_size' => null,
    'min_file_size' => 1,
    'accept_file_types' => '/.+$/i',
    'max_number_of_files' => null,
    'discard_aborted_uploads' => true,
    'image_versions' => array(
    // Uncomment the following version to restrict the size of
    // uploaded images. You can also add additional versions with
    // their own upload directories:
    /*
    'large' => array(
    'upload_dir' => dirname(__FILE__).'/files/',
    'upload_url' => dirname($_SERVER['PHP_SELF']).'/files/',
    'max_width' => 1920,
    'max_height' => 1200
    ),
    */
    'thumbnail' => array(
    'upload_dir' => dirname(__FILE__).'/thumbnails/',
    'upload_url' => dirname($_SERVER['PHP_SELF']).'/thumbnails/',
    'max_width' => 80,
    'max_height' => 80
    )
    )
    );
    if ($options) {
    $this->options = array_merge_recursive($this->options, $options);
    }
    }
    
    private function get_file_object($file_name) {
    $file_path = $this->options['upload_dir'].$file_name;
    if (is_file($file_path) && $file_name[0] !== '.') {
    $file = new stdClass();
    $file->name = $file_name;
    $file->size = filesize($file_path);
    $file->url = $this->options['upload_url'].rawurlencode($file->name);
    foreach($this->options['image_versions'] as $version => $options) {
    if (is_file($options['upload_dir'].$file_name)) {
    $file->{$version.'_url'} = $options['upload_url']
    .rawurlencode($file->name);
    }
    }
    $file->delete_url = $this->options['script_url']
    .'?file='.rawurlencode($file->name);
    $file->delete_type = 'DELETE';
    return $file;
    }
    return null;
    }
    
    private function get_file_objects() {
    return array_values(array_filter(array_map(
    array($this, 'get_file_object'),
    scandir($this->options['upload_dir'])
    )));
    }
    
    private function create_scaled_image($file_name, $options) {
    $file_path = $this->options['upload_dir'].$file_name;
    $new_file_path = $options['upload_dir'].$file_name;
    list($img_width, $img_height) = @getimagesize($file_path);
    if (!$img_width || !$img_height) {
    return false;
    }
    $scale = min(
    $options['max_width'] / $img_width,
    $options['max_height'] / $img_height
    );
    if ($scale > 1) {
    $scale = 1;
    }
    $new_width = $img_width * $scale;
    $new_height = $img_height * $scale;
    $new_img = @imagecreatetruecolor($new_width, $new_height);
    switch (strtolower(substr(strrchr($file_name, '.'), 1))) {
    case 'jpg':
    case 'jpeg':
    $src_img = @imagecreatefromjpeg($file_path);
    $write_image = 'imagejpeg';
    break;
    case 'gif':
    $src_img = @imagecreatefromgif($file_path);
    $write_image = 'imagegif';
    break;
    case 'png':
    $src_img = @imagecreatefrompng($file_path);
    $write_image = 'imagepng';
    break;
    default:
    $src_img = $image_method = null;
    }
    $success = $src_img && @imagecopyresampled(
    $new_img,
    $src_img,
    0, 0, 0, 0,
    $new_width,
    $new_height,
    $img_width,
    $img_height
    ) && $write_image($new_img, $new_file_path);
    // Free up memory (imagedestroy does not delete files):
    @imagedestroy($src_img);
    @imagedestroy($new_img);
    return $success;
    }
    
    private function has_error($uploaded_file, $file, $error) {
    if ($error) {
    return $error;
    }
    if (!preg_match($this->options['accept_file_types'], $file->name)) {
    return 'acceptFileTypes';
    }
    if ($uploaded_file && is_uploaded_file($uploaded_file)) {
    $file_size = filesize($uploaded_file);
    } else {
    $file_size = $_SERVER['CONTENT_LENGTH'];
    }
    if ($this->options['max_file_size'] && (
    $file_size > $this->options['max_file_size'] ||
    $file->size > $this->options['max_file_size'])
    ) {
    return 'maxFileSize';
    }
    if ($this->options['min_file_size'] &&
    $file_size < $this->options['min_file_size']) {
    return 'minFileSize';
    }
    if (is_int($this->options['max_number_of_files']) && (
    count($this->get_file_objects()) >= $this->options['max_number_of_files'])
    ) {
    return 'maxNumberOfFiles';
    }
    return $error;
    }
    
    private function handle_file_upload($uploaded_file, $name, $size, $type, $error) {
    $file = new stdClass();
    $file->name = basename(stripslashes($name));
    $file->size = intval($size);
    $file->type = $type;
    $error = $this->has_error($uploaded_file, $file, $error);
    if (!$error && $file->name) {
    if ($file->name[0] === '.') {
    $file->name = substr($file->name, 1);
    }
    $file_path = $this->options['upload_dir'].$file->name;
    $append_file = is_file($file_path) && $file->size > filesize($file_path);
    clearstatcache();
    if ($uploaded_file && is_uploaded_file($uploaded_file)) {
    // multipart/formdata uploads (POST method uploads)
    if ($append_file) {
    file_put_contents(
    $file_path,
    fopen($uploaded_file, 'r'),
    FILE_APPEND
    );
    } else {
    move_uploaded_file($uploaded_file, $file_path);
    }
    } else {
    // Non-multipart uploads (PUT method support)
    file_put_contents(
    $file_path,
    fopen('php://input', 'r'),
    $append_file ? FILE_APPEND : 0
    );
    }
    $file_size = filesize($file_path);
    if ($file_size === $file->size) {
    $file->url = $this->options['upload_url'].rawurlencode($file->name);
    foreach($this->options['image_versions'] as $version => $options) {
    if ($this->create_scaled_image($file->name, $options)) {
    $file->{$version.'_url'} = $options['upload_url']
    .rawurlencode($file->name);
    }
    }
    } else if ($this->options['discard_aborted_uploads']) {
    unlink($file_path);
    $file->error = 'abort';
    }
    $file->size = $file_size;
    $file->delete_url = $this->options['script_url']
    .'?file='.rawurlencode($file->name);
    $file->delete_type = 'DELETE';
    } else {
    $file->error = $error;
    }
    return $file;
    }
    
    public function get() {
    $file_name = isset($_REQUEST['file']) ?
    basename(stripslashes($_REQUEST['file'])) : null; 
    if ($file_name) {
    $info = $this->get_file_object($file_name);
    } else {
    $info = $this->get_file_objects();
    }
    header('Content-type: application/json');
    echo json_encode($info);
    }
    
    public function post() {
    $upload = isset($_FILES[$this->options['param_name']]) ?
    $_FILES[$this->options['param_name']] : array(
    'tmp_name' => null,
    'name' => null,
    'size' => null,
    'type' => null,
    'error' => null
    );
    $info = array();
    if (is_array($upload['tmp_name'])) {
    foreach ($upload['tmp_name'] as $index => $value) {
    $info[] = $this->handle_file_upload(
    $upload['tmp_name'][$index],
    isset($_SERVER['HTTP_X_FILE_NAME']) ?
    $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
    isset($_SERVER['HTTP_X_FILE_SIZE']) ?
    $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
    isset($_SERVER['HTTP_X_FILE_TYPE']) ?
    $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
    $upload['error'][$index]
    );
    }
    } else {
    $info[] = $this->handle_file_upload(
    $upload['tmp_name'],
    isset($_SERVER['HTTP_X_FILE_NAME']) ?
    $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'],
    isset($_SERVER['HTTP_X_FILE_SIZE']) ?
    $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'],
    isset($_SERVER['HTTP_X_FILE_TYPE']) ?
    $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'],
    $upload['error']
    );
    }
    header('Vary: Accept');
    if (isset($_SERVER['HTTP_ACCEPT']) &&
    (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) {
    header('Content-type: application/json');
    } else {
    header('Content-type: text/plain');
    }
    echo json_encode($info);
    }
    
    public function delete() {
    $file_name = isset($_REQUEST['file']) ?
    basename(stripslashes($_REQUEST['file'])) : null;
    $file_path = $this->options['upload_dir'].$file_name;
    $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
    if ($success) {
    foreach($this->options['image_versions'] as $version => $options) {
    $file = $options['upload_dir'].$file_name;
    if (is_file($file)) {
    unlink($file);
    }
    }
    }
    header('Content-type: application/json');
    echo json_encode($success);
    }
    }
    
    $upload_handler = new UploadHandler();
    
    header('Pragma: no-cache');
    header('Cache-Control: private, no-cache');
    header('Content-Disposition: inline; filename="files.json"');
    
    switch ($_SERVER['REQUEST_METHOD']) {
    case 'HEAD':
    case 'GET':
    $upload_handler->get();
    break;
    case 'POST':
    $upload_handler->post();
    break;
    case 'DELETE':
    $upload_handler->delete();
    break;
    default:
    header('HTTP/1.0 405 Method Not Allowed');
    }
    ?>
    Quand je met le chemin en dure ça fonctionne
    $fichier = 'C:/wamp/www/joomla/components/com_graph/views/fichier/tmpl/upload/files/Fournisseur/truc2/' ;
    Mais quand je mes $fichier = selectDossier();
    ça ne fonctionne plus
    Erreur retourner : Error: SyntaxError: JSON.parse: unexpected character
    quelqu'un a une idée ???
    Merci d'avance
    Dernière édition par gandalf91 à 26/08/2011, 11h02

    Commentaire


    • #3
      Re : fonction php qui plante dans joomla 1.7

      Quand je fait un echo selectDossier();
      ça me donne bien
      'C:/wamp/www/joomla/components/com_graph/views/fichier/tmpl/upload/files/Fournisseur/truc2/'
      Donc je comprend pas d'ou vien le souci

      Commentaire


      • #4
        Re : fonction php qui plante dans joomla 1.7

        J'ai tenter en viens de tout mettre dans le même fichier
        comme ça
        Code:
        <?php
        
        error_reporting(E_ALL | E_STRICT);
        
        class UploadHandler {
        
        private $options;
        
        function __construct($options=null) {
        
        $emplacement = array();
        
        function selectDossier() {
        /*
        $user = &JFactory::getuser();
        $db = &JFactory::getDBO();
        $query = "SELECT * FROM #__users WHERE id=".$user->id;
        $db->setQuery($query);
        $row = $db->loadObjectList();
        foreach ($row as $rows) {
        $emplacement[] = $rows->dossier ;
        } 
        */
        $dossier = 'C:/wamp/www/joomla/components/com_graph/views/fichier/tmpl/upload/files/Fournisseur/truc2/' ;
        return $dossier ;
        }
        
        $fichier = selectDossier() ;
        
        $this->options = array(
        'script_url' => $_SERVER['PHP_SELF'],
        'upload_dir' => $fichier,
        'upload_url' => $fichier,
        'param_name' => 'files',
        'max_file_size' => null,
        'min_file_size' => 1,
        'accept_file_types' => '/.+$/i',
        'max_number_of_files' => null,
        'discard_aborted_uploads' => true,
        'image_versions' => array(
        'thumbnail' => array(
        'upload_dir' => dirname(__FILE__).'/thumbnails/',
        'upload_url' => dirname($_SERVER['PHP_SELF']).'/thumbnails/',
        'max_width' => 80,
        'max_height' => 80
        )
        )
        );
        
        if ($options) {
        $this->options = array_merge_recursive($this->options, $options);
        }
        }
        
        private function get_file_object($file_name) {
        $file_path = $this->options['upload_dir'].$file_name;
        if (is_file($file_path) && $file_name[0] !== '.') {
        $file = new stdClass();
        $file->name = $file_name;
        $file->size = filesize($file_path);
        $file->url = $this->options['upload_url'].rawurlencode($file->name);
        foreach($this->options['image_versions'] as $version => $options) {
        if (is_file($options['upload_dir'].$file_name)) {
        $file->{$version.'_url'} = $options['upload_url']
        .rawurlencode($file->name);
        }
        }
        $file->delete_url = $this->options['script_url']
        .'?file='.rawurlencode($file->name);
        $file->delete_type = 'DELETE';
        return $file;
        }
        return null;
        }
        
        private function get_file_objects() {
        return array_values(array_filter(array_map(
        array($this, 'get_file_object'),
        scandir($this->options['upload_dir'])
        )));
        }
        
        private function create_scaled_image($file_name, $options) {
        $file_path = $this->options['upload_dir'].$file_name;
        $new_file_path = $options['upload_dir'].$file_name;
        list($img_width, $img_height) = @getimagesize($file_path);
        if (!$img_width || !$img_height) {
        return false;
        }
        $scale = min(
        $options['max_width'] / $img_width,
        $options['max_height'] / $img_height
        );
        if ($scale > 1) {
        $scale = 1;
        }
        $new_width = $img_width * $scale;
        $new_height = $img_height * $scale;
        $new_img = @imagecreatetruecolor($new_width, $new_height);
        switch (strtolower(substr(strrchr($file_name, '.'), 1))) {
        case 'jpg':
        case 'jpeg':
        $src_img = @imagecreatefromjpeg($file_path);
        $write_image = 'imagejpeg';
        break;
        case 'gif':
        $src_img = @imagecreatefromgif($file_path);
        $write_image = 'imagegif';
        break;
        case 'png':
        $src_img = @imagecreatefrompng($file_path);
        $write_image = 'imagepng';
        break;
        default:
        $src_img = $image_method = null;
        }
        $success = $src_img && @imagecopyresampled(
        $new_img,
        $src_img,
        0, 0, 0, 0,
        $new_width,
        $new_height,
        $img_width,
        $img_height
        ) && $write_image($new_img, $new_file_path);
        @imagedestroy($src_img);
        @imagedestroy($new_img);
        return $success;
        }
        
        private function has_error($uploaded_file, $file, $error) {
        if ($error) {
        return $error;
        }
        if (!preg_match($this->options['accept_file_types'], $file->name)) {
        return 'acceptFileTypes';
        }
        if ($uploaded_file && is_uploaded_file($uploaded_file)) {
        $file_size = filesize($uploaded_file);
        } else {
        $file_size = $_SERVER['CONTENT_LENGTH'];
        }
        if ($this->options['max_file_size'] && (
        $file_size > $this->options['max_file_size'] ||
        $file->size > $this->options['max_file_size'])
        ) {
        return 'maxFileSize';
        }
        if ($this->options['min_file_size'] &&
        $file_size < $this->options['min_file_size']) {
        return 'minFileSize';
        }
        if (is_int($this->options['max_number_of_files']) && (
        count($this->get_file_objects()) >= $this->options['max_number_of_files'])
        ) {
        return 'maxNumberOfFiles';
        }
        return $error;
        }
        
        private function handle_file_upload($uploaded_file, $name, $size, $type, $error) {
        $file = new stdClass();
        $file->name = basename(stripslashes($name));
        $file->size = intval($size);
        $file->type = $type;
        $error = $this->has_error($uploaded_file, $file, $error);
        if (!$error && $file->name) {
        if ($file->name[0] === '.') {
        $file->name = substr($file->name, 1);
        }
        $file_path = $this->options['upload_dir'].$file->name;
        $append_file = is_file($file_path) && $file->size > filesize($file_path);
        clearstatcache();
        if ($uploaded_file && is_uploaded_file($uploaded_file)) {
        if ($append_file) {
        file_put_contents(
        $file_path,
        fopen($uploaded_file, 'r'),
        FILE_APPEND
        );
        } else {
        move_uploaded_file($uploaded_file, $file_path);
        }
        } else {
        file_put_contents(
        $file_path,
        fopen('php://input', 'r'),
        $append_file ? FILE_APPEND : 0
        );
        }
        $file_size = filesize($file_path);
        if ($file_size === $file->size) {
        $file->url = $this->options['upload_url'].rawurlencode($file->name);
        foreach($this->options['image_versions'] as $version => $options) {
        if ($this->create_scaled_image($file->name, $options)) {
        $file->{$version.'_url'} = $options['upload_url']
        .rawurlencode($file->name);
        }
        }
        } else if ($this->options['discard_aborted_uploads']) {
        unlink($file_path);
        $file->error = 'abort';
        }
        $file->size = $file_size;
        $file->delete_url = $this->options['script_url']
        .'?file='.rawurlencode($file->name);
        $file->delete_type = 'DELETE';
        } else {
        $file->error = $error;
        }
        return $file;
        }
        
        public function get() {
        $file_name = isset($_REQUEST['file']) ?
        basename(stripslashes($_REQUEST['file'])) : null; 
        if ($file_name) {
        $info = $this->get_file_object($file_name);
        } else {
        $info = $this->get_file_objects();
        }
        header('Content-type: application/json');
        echo json_encode($info);
        }
        
        public function post() {
        $upload = isset($_FILES[$this->options['param_name']]) ?
        $_FILES[$this->options['param_name']] : array(
        'tmp_name' => null,
        'name' => null,
        'size' => null,
        'type' => null,
        'error' => null
        );
        $info = array();
        if (is_array($upload['tmp_name'])) {
        foreach ($upload['tmp_name'] as $index => $value) {
        $info[] = $this->handle_file_upload(
        $upload['tmp_name'][$index],
        isset($_SERVER['HTTP_X_FILE_NAME']) ?
        $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'][$index],
        isset($_SERVER['HTTP_X_FILE_SIZE']) ?
        $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'][$index],
        isset($_SERVER['HTTP_X_FILE_TYPE']) ?
        $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'][$index],
        $upload['error'][$index]
        );
        }
        } else {
        $info[] = $this->handle_file_upload(
        $upload['tmp_name'],
        isset($_SERVER['HTTP_X_FILE_NAME']) ?
        $_SERVER['HTTP_X_FILE_NAME'] : $upload['name'],
        isset($_SERVER['HTTP_X_FILE_SIZE']) ?
        $_SERVER['HTTP_X_FILE_SIZE'] : $upload['size'],
        isset($_SERVER['HTTP_X_FILE_TYPE']) ?
        $_SERVER['HTTP_X_FILE_TYPE'] : $upload['type'],
        $upload['error']
        );
        }
        header('Vary: Accept');
        if (isset($_SERVER['HTTP_ACCEPT']) &&
        (strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false)) {
        header('Content-type: application/json');
        } else {
        header('Content-type: text/plain');
        }
        echo json_encode($info);
        }
        
        public function delete() {
        $file_name = isset($_REQUEST['file']) ?
        basename(stripslashes($_REQUEST['file'])) : null;
        $file_path = $this->options['upload_dir'].$file_name;
        $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path);
        if ($success) {
        foreach($this->options['image_versions'] as $version => $options) {
        $file = $options['upload_dir'].$file_name;
        if (is_file($file)) {
        unlink($file);
        }
        }
        }
        header('Content-type: application/json');
        echo json_encode($success);
        }
        }
        
        $upload_handler = new UploadHandler();
        
        header('Pragma: no-cache');
        header('Cache-Control: private, no-cache');
        header('Content-Disposition: inline; filename="files.json"');
        
        switch ($_SERVER['REQUEST_METHOD']) {
        case 'HEAD':
        case 'GET':
        $upload_handler->get();
        break;
        case 'POST':
        $upload_handler->post();
        break;
        case 'DELETE':
        $upload_handler->delete();
        break;
        default:
        header('HTTP/1.0 405 Method Not Allowed');
        }
        ?>
        Mais marche pas j'ai l'impression que ces mon code ci-dessous qui plante
        Code:
        $user = &JFactory::getuser();
        $db = &JFactory::getDBO();
        $query = "SELECT * FROM #__users WHERE id=".$user->id;
        $db->setQuery($query);
        $row = $db->loadObjectList();
        foreach ($row as $rows) {
        $emplacement[] = $rows->dossier ;
        }
        Quand il est en commentaire comme dans le premier code ça marche
        alors si quelqu'un a une idée je suis preneur
        Merci d'avance

        Commentaire


        • #5
          Re : fonction php qui plante dans joomla 1.7

          je ne sais pas si ca peut t'aider
          Pour choper l'id utilisateur il semblerait que ce soit:
          $user =& JFactory::getUser();
          $id_utilisateur = $user->get('id');
          Sc_Sitecréa: steeve-cordier.fr
          Portoflio: Mon portflio

          Commentaire

          Annonce

          Réduire
          Aucune annonce pour le moment.

          Partenaire de l'association

          Réduire

          Hébergeur Web PlanetHoster
          Travaille ...
          X