2006 => 2007 Happy New Year\!
[platal.git] / include / validations / photos.inc.php
index 0f8e75e..41a29b4 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2004 Polytechnique.org                              *
+ *  Copyright (C) 2003-2007 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
@@ -24,7 +24,7 @@
 class PhotoReq extends Validate
 {
     // {{{ properties
-    
+
     var $mimetype;
     var $data;
     var $x;
@@ -32,31 +32,39 @@ class PhotoReq extends Validate
 
     var $unique = true;
 
-    var $rules = "Refuser les photos copyrightées, de mineurs, ou ayant 
-    un caractère pornographique, violent, etc... Si une photo est mal 
-    cadrée (20% de photo et 80% de blanc par exemple), si c'est un 
-    camarade antique, on lui arrange sinon on lui 
-    refuse en lui expliquant gentiment le problème. Idem si les dimensions de 
+    var $rules = "Refuser les photos copyrightées, de mineurs, ou ayant
+    un caractère pornographique, violent, etc... Si une photo est mal
+    cadrée (20% de photo et 80% de blanc par exemple), si c'est un
+    camarade antique, on lui arrange sinon on lui
+    refuse en lui expliquant gentiment le problème. Idem si les dimensions de
     la photo sont archi trop grandes ou archi trop petites.";
 
     // }}}
     // {{{ constructor
-   
+
     function PhotoReq($_uid, $_data, $_stamp=0)
     {
-        global $globals, $page;
-
         $this->Validate($_uid, true, 'photo', $_stamp);
-        
+        $this->_get_image($_data);
+    }
+
+    // }}}
+    // {{{ function _get_image()
+
+    function _get_image($_data)
+    {
+        global $page;
+
+        VarStream::init();
+
         // calcul de la taille de l'image
-        require_once('xorg.varstream.inc.php');
         $GLOBALS['photoreq'] = $_data;
         $image_infos = getimagesize('var://photoreq');
         unset ($GLOBALS['photoreq']);
 
         if (empty($image_infos)) {
             $page->trig("Image invalide");
-            return ($this = null);
+            return false;
         }
         list($this->x, $this->y, $this->mimetype) = $image_infos;
 
@@ -66,14 +74,14 @@ class PhotoReq extends Validate
             case 3: $this->mimetype = "png";    break;
             default:
                 $page->trig("Type d'image invalide");
-                return ($this = null);
+                return false;
         }
 
         if (strlen($_data) > SIZE_MAX)  {
             $img = imagecreatefromstring($_data);
             if (!$img) {
                 $page->trig("image trop grande et impossible à retailler automatiquement");
-                return ($this = null);
+                return false;
             }
 
             $nx = $x = imagesx($img);
@@ -99,14 +107,15 @@ class PhotoReq extends Validate
             unlink($file);
         }
         $this->data = $_data;
+        return true;
     }
-    
+
     // }}}
     // {{{ function get_request()
 
     function get_request($uid)
     {
-        return parent::get_request($uid,'photo');
+        return parent::get_typed_request($uid,'photo');
     }
 
     // }}}
@@ -116,6 +125,32 @@ class PhotoReq extends Validate
     { return 'include/form.valid.photos.tpl'; }
 
     // }}}
+    // {{{ function editor()
+
+    function editor()
+    {
+        return 'include/form.valid.edit-photo.tpl';
+    }
+
+    // }}}
+    // {{{ function handle_editor()
+
+    function handle_editor()
+    {
+        if (isset($_FILES['userfile']['tmp_name'])) {
+            $file = $_FILES['userfile']['tmp_name'];
+            if ($data = file_get_contents($file)) {
+                if ($this->_get_image($data)) {
+                    return true;
+                }
+            } else {
+                $page->trig('Fichier inexistant ou vide');
+            }
+        }
+        return false; 
+    }
+
+    // }}}
     // {{{ function _mail_subj
 
     function _mail_subj()
@@ -125,7 +160,7 @@ class PhotoReq extends Validate
 
     // }}}
     // {{{ function _mail_body
-    
+
     function _mail_body($isok)
     {
         if ($isok) {
@@ -137,12 +172,10 @@ class PhotoReq extends Validate
 
     // }}}
     // {{{ function commit()
-    
+
     function commit()
     {
-        global $globals;
-        
-        $globals->xdb->execute('REPLACE INTO  photo (uid, attachmime, attach, x, y)
+        XDB::execute('REPLACE INTO  photo (uid, attachmime, attach, x, y)
                                       VALUES  ({?},{?},{?},{?},{?})',
                                       $this->uid, $this->mimetype, $this->data, $this->x, $this->y);
        require_once('notifs.inc.php');