From cfbc852eca05d53dccf957d9330ce56dc8dd6581 Mon Sep 17 00:00:00 2001
From: Florian Azizian <florian.azizian@maarch.org>
Date: Fri, 6 Feb 2015 16:43:04 +0000
Subject: [PATCH] FEAT #1944 checkUserMail + automatic field + activate chrono
 number

---
 core/trunk/core/class/resources_controler.php | 167 +++++++++++++-----
 core/trunk/core/class/users_controler.php     |  33 +++-
 core/trunk/core/class/ws.php                  |  17 +-
 3 files changed, 164 insertions(+), 53 deletions(-)

diff --git a/core/trunk/core/class/resources_controler.php b/core/trunk/core/class/resources_controler.php
index 601c0b451df..5796a58a1e7 100755
--- a/core/trunk/core/class/resources_controler.php
+++ b/core/trunk/core/class/resources_controler.php
@@ -1,6 +1,6 @@
 <?php
 /*
-*   Copyright 2011 Maarch
+*   Copyright 2011-2015 Maarch
 *
 *   This file is part of Maarch Framework.
 *
@@ -260,6 +260,9 @@ class resources_controler
         $typistFound = false;
         $typeIdFound = false;
         $toAddressFound = false;
+        $userPrimaryEntity = false;
+        $destinationFound = false;
+        $initiatorFound = false;
         $dbQuery = new dbquery();
         for ($i=0;$i<count($data);$i++) {
             if (strtoupper($data[$i]['type']) == 'INTEGER' || strtoupper($data[$i]['type']) == 'FLOAT') {
@@ -281,6 +284,12 @@ class resources_controler
             if (strtoupper($data[$i]['column']) == strtoupper('type_id')) {
                 $typeIdFound = true;
             }
+            if (strtoupper($data[$i]['column']) == strtoupper('destination')) {
+                $destinationFound = true;
+            }            
+            if (strtoupper($data[$i]['column']) == strtoupper('initiator')) {
+                $initiatorFound = true;
+            }
             if (strtoupper($data[$i]['column']) == strtoupper('custom_t10')) {
                 require_once 'core/class/class_db.php';
                 $dbQuery = new dbquery();
@@ -295,10 +304,18 @@ class resources_controler
                 if (!empty($userIdFound->user_id)) {
                     $toAddressFound = true;
                     $destUser = $userIdFound->user_id;
+
+	                $queryUserEntity = "select entity_id from users_entities where primary_entity = 'Y' and user_id = '".$destUser."'";
+	                $dbQuery->query($queryUserEntity);
+	                $userEntityId = $dbQuery->fetch_object();
+	                if (!empty($userEntityId->entity_id)) {
+	                	$userEntity = $userEntityId->entity_id;
+	                	$userPrimaryEntity = true;
+	                }
                 }
             }
         }
-        if (!$typistFound) {
+        if (!$typistFound && !$toAddressFound) {
             array_push(
                 $data,
                 array(
@@ -337,7 +354,35 @@ class resources_controler
                     'type' => 'string',
                 )
             );
+            array_push(
+                $data,
+                array(
+                    'column' => 'typist',
+                    'value' => $destUser,
+                    'type' => 'string',
+                )
+            );
         }
+        if ($userPrimaryEntity && !$destinationFound) {
+            array_push(
+                $data,
+                array(
+                    'column' => 'destination',
+                    'value' => $userEntity,
+                    'type' => 'string',
+                )
+            );
+        }
+        if ($userPrimaryEntity && !$initiatorFound) {
+            array_push(
+                $data,
+                array(
+                    'column' => 'initiator',
+                    'value' => $userEntity,
+                    'type' => 'string',
+                )
+            );
+        }        
         array_push(
             $data,
             array(
@@ -379,50 +424,84 @@ class resources_controler
     public function storeExtResource($resId, $data, $table)
     {
         try {
-            $func = new functions();
-            $data = $func->object2array($data);
-            $queryExtFields = '(';
-            $queryExtValues = '(';
-            for ($i=0;$i<count($data);$i++) {
-                if (strtoupper($data[$i]['type']) == 'INTEGER' || strtoupper($data[$i]['type']) == 'FLOAT') {
-                    if ($data[$i]['value'] == '') {
-                        $data[$i]['value'] = '0';
-                    }
-                    $data[$i]['value'] = str_replace(',' , '.', $data[$i]['value']);
-                }
-                //COLUMN
-                $data[$i]['column'] = strtolower($data[$i]['column']);
-                $queryExtFields .= $data[$i]['column'] . ',';
-                //VALUE
-                if ($data[$i]['type'] == 'string' || $data[$i]['type'] == 'date') {
-                    $queryExtValues .= "'" . $data[$i]['value'] . "',";
-                } else {
-                    $queryExtValues .= $data[$i]['value'] . ",";
-                }
-            }
-            $queryExtFields = preg_replace('/,$/', ',res_id)', $queryExtFields);
-            $queryExtValues = preg_replace(
-                '/,$/', ',' . $resId . ')', $queryExtValues
-            );
-            $queryExt = " insert into " . $table . " " . $queryExtFields
-                   . ' values ' . $queryExtValues ;
-            $returnCode = 0;
-            $db = new dbquery();
-            $db->connect();
-            if ($db->query($queryExt)) {
-                $returnResArray = array(
-                    'returnCode' => (int) 0,
-                    'resId' => $resId,
-                    'error' => '',
-                );
+        	if ($resId <> "") {
+	            $func = new functions();
+	            $data = $func->object2array($data);
+	            $queryExtFields = '(';
+	            $queryExtValues = '(';
+	            $db = new dbquery();
+	            $db->connect();
+	            for ($i=0;$i<count($data);$i++) {
+	                if (strtoupper($data[$i]['type']) == 'INTEGER' || strtoupper($data[$i]['type']) == 'FLOAT') {
+	                    if ($data[$i]['value'] == '') {
+	                        $data[$i]['value'] = '0';
+	                    }
+	                    $data[$i]['value'] = str_replace(',' , '.', $data[$i]['value']);
+	                }
+		            if (strtoupper($data[$i]['column']) == strtoupper('category_id')) {
+		                $categoryId = $data[$i]['value'];
+		            }
+		            if (strtoupper($data[$i]['column']) == strtoupper('alt_identifier') && $data[$i]['value'] == "") {
+		            	require_once 'apps' . DIRECTORY_SEPARATOR . $_SESSION['config']['app_id']
+    						. DIRECTORY_SEPARATOR . 'class' . DIRECTORY_SEPARATOR . 'class_chrono.php';
+		            	$chronoX = new chrono();
+		            	for ($iColl=0; $iColl<=count($_SESSION['collections']); $iColl++) {
+		            		if ($_SESSION['collections'][$iColl]['extensions'][0] == $table) {
+		            			$resViewTable = $_SESSION['collections'][$iColl]['view'];
+		            			break;
+		            		}
+		            	}
+		            	$db->query("SELECT destination, type_id FROM ".$resViewTable." WHERE res_id = " . $resId);
+		            	$resView = $db->fetch_object();
+				        $myVars = array(
+				            'entity_id' => $resView->destination,
+				            'arbox_id' => "",
+				            'type_id' => $resView->type_id,
+				            'category_id' => $categoryId,
+				            'folder_id' => "",
+				        );
+				        $myChrono = $chronoX->generate_chrono($categoryId, $myVars, 'false');
+				        $data[$i]['value'] = $db->protect_string_db($myChrono);		                
+		            }
+	                //COLUMN
+	                $data[$i]['column'] = strtolower($data[$i]['column']);
+	                $queryExtFields .= $data[$i]['column'] . ',';
+	                //VALUE
+	                if ($data[$i]['type'] == 'string' || $data[$i]['type'] == 'date') {
+	                    $queryExtValues .= "'" . $data[$i]['value'] . "',";
+	                } else {
+	                    $queryExtValues .= $data[$i]['value'] . ",";
+	                }
+	            }
+	            $queryExtFields = preg_replace('/,$/', ',res_id)', $queryExtFields);
+	            $queryExtValues = preg_replace(
+	                '/,$/', ',' . $resId . ')', $queryExtValues
+	            );
+	            $queryExt = " insert into " . $table . " " . $queryExtFields
+	                   . ' values ' . $queryExtValues ;
+	            $returnCode = 0;
+	            if ($db->query($queryExt)) {
+	                $returnResArray = array(
+	                    'returnCode' => (int) 0,
+	                    'resId' => $resId,
+	                    'error' => '',
+	                );
+	            } else {
+	                $returnResArray = array(
+	                    'returnCode' => (int) -2,
+	                    'resId' => '',
+	                    'error' => 'Pb with SQL insertion',
+	                );
+	            }
+	            return $returnResArray;
             } else {
-                $returnResArray = array(
-                    'returnCode' => (int) -2,
-                    'resId' => '',
-                    'error' => 'Pb with SQL insertion',
-                );
+	            $returnResArray = array(
+	                'returnCode' => (int) -3,
+	                'resId' => '',
+	                'error' => 'resId is not set',
+	            );
+	            return $returnResArray;            	
             }
-            return $returnResArray;
         } catch (Exception $e) {
             $returnResArray = array(
                 'returnCode' => (int) -1,
diff --git a/core/trunk/core/class/users_controler.php b/core/trunk/core/class/users_controler.php
index 4397585008d..4883a499c26 100644
--- a/core/trunk/core/class/users_controler.php
+++ b/core/trunk/core/class/users_controler.php
@@ -1,8 +1,8 @@
 <?php
 /*
-*    Copyright 2008-2011 Maarch
+*   Copyright 2008-2015 Maarch
 *
-*  This file is part of Maarch Framework.
+*   This file is part of Maarch Framework.
 *
 *   Maarch Framework is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
-*    along with Maarch Framework.  If not, see <http://www.gnu.org/licenses/>.
+*   along with Maarch Framework.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 /**
@@ -873,4 +873,31 @@ class users_controler extends ObjectControler implements ObjectControlerIF
           return false;
         }
     }
+
+    /**
+    * Check if the user exist in the database given his mail
+    *
+    * @param  $userMail string user mail
+    * @return bool true if user exists, false otherwise
+    */
+    public function checkUserMail($userMail)
+    {
+        self::$db = new dbquery();
+        self::$db->connect();
+        $func = new functions();
+
+        $queryUser = "select user_id from users where mail = "
+            . "'" . $func->protect_string_db($userMail) . "'";
+        self::$db->query($queryUser);
+        $userIdFound = self::$db->fetch_object();
+        if (!empty($userIdFound->user_id)) {
+            $isUser = true;
+        } else {
+            $isUser = false;
+        }
+
+        self::$db->disconnect();
+        return $isUser;
+    }
+
 }
diff --git a/core/trunk/core/class/ws.php b/core/trunk/core/class/ws.php
index bb38cc76392..a2cb989a8d5 100755
--- a/core/trunk/core/class/ws.php
+++ b/core/trunk/core/class/ws.php
@@ -21,7 +21,7 @@ $SOAP_typedef['returnArray'] = array(   'status'=>'string',
 $SOAP_typedef['docservers'] = array(    'docserver_id'=>'string',
                                         'docserver_type_id'=>'string',
                                         'device_label'=>'string',
-                                        'is_readonly'=>'string',
+                                        'is_readonly'=>'string',
                                         'size_limit_number'=>'string',
                                         'path_template'=>'string',
                                         'coll_id'=>'string',
@@ -106,15 +106,15 @@ $SOAP_dispatch_map['docserverLocationGet'] = array(
 // DOCSERVERS TYPES
 $SOAP_typedef['docserverTypes'] = array(    'docserver_type_id'=>'string',
                                             'docserver_type_label'=>'string',
-                                            'is_container'=>'string',
+                                            'is_container'=>'string',
                                             'container_max_number'=>'int',
-                                            'is_compressed'=>'string',
+                                            'is_compressed'=>'string',
                                             'compression_mode'=>'string',
-                                            'is_meta'=>'string',
+                                            'is_meta'=>'string',
                                             'meta_template'=>'string',
-                                            'is_logged'=>'string',
+                                            'is_logged'=>'string',
                                             'log_template'=>'string',
-                                            'is_signed'=>'string',
+                                            'is_signed'=>'string',
                                             'fingerprint_mode'=>'string'
                                             );
 $SOAP_dispatch_map['docserverTypeSave'] = array(
@@ -177,6 +177,11 @@ $SOAP_dispatch_map['userGet'] = array(
                                         'out' => array('out' => '{urn:MySoapServer}users'),
                                         'method' => "core#users::getWs"
                                     );
+$SOAP_dispatch_map['checkUserMail'] = array(
+                                        'in'  => array('userMail' => 'string'),
+                                        'out' => array('out' => 'boolean'),
+                                        'method' => "core#users::checkUserMail"
+                                        );
 
 #####################################
 ## Web Service de versement de données issue du gros scanner
-- 
GitLab