enregistrement coté client parfois impossible avec spx

paysan hardipaysan hardi Member
juin 2014 modifié dans Entraide
Bonjour les Pluxmliens,
qui pourrais m'expliquer pourquoi l'enregistrement d'un formulaire coté client plante avec $plxShow->callHook('spxdatas::setData',$o,true);
la nouvelle ligne xml crée se résume à :
[== XML ==]
<data number="" user="004"  order="1">
	<column>
	</column>
</data>
alors que var_dump($o) et var_dump($_POST) contiennent pourtant les bonnes valeurs ?
je soupçonne un pb de droit que j'aurais zappé dans le code de spx?

je m'arrache d'autant les cheveux qu'en local la modification marche parfaitement (je n'arrive pas encore à créer un nouvel id coté client mais c'est un autre sujet)

- les droits sur la table sont ouverts (tableuserlevel="0,1,2,3,4" datauserlevel="0,1,2,3,4")
- j'ai testé en vidant le cookie de session ainsi que le cache de firefox
Si vous voulez tester, j'ai défini $_SESSION='004' pour permettre le test en ligne sur http://domainedebelleroche.free.fr/index.php?static106/test

si nécessaire, je peux vous mettre mon code, je ne voulais pas abuser de l'espace.

Réponses

  • je-evrardje-evrard Member
    juin 2014 modifié
    Il y a un bug dans spxdatas dans la version 4 de spx pour le setData.

    La version 1.46 de spxdatas corrige ce problème.

    Remplace la fontion de spxdatas
    [== Indéfini ==]
    private  function __getTableAutorized($table) {
    		$b=false;
    		$id_user = $_SESSION['user'];
    		# 0 to 4
    		$level_user = $_SESSION['profil'];
    		$auserlevel= $this->aTables[$table]["user"]["tableuserlevel"];
    		$auserinclude=$this->aTables[$table]["user"]["tableuserinclude"];
    		$auserexclude=$this->aTables[$table]["user"]["tableuserexclude"];
    	
    		for ($i=0;$i<count($auserlevel);$i++){
    			if ($level_user == $auserlevel[$i]) $b=true;
    		}
    		
    		for ($i=0;$i<count($auserinclude);$i++){
    			if ($id_user == $auserinclude[$i]) $b=true;
    		}
    		
    		for ($i=0;$i<count($auserexclude);$i++){
    			if ($id_user == $auserexclude[$i]) $b=false;
    		}
    		
    		return $b;
    	}
    


    Par celle-ci version 1.46 : Cette fonction autorise dans tous les cas l'écriture d'une table coté client via setData (PLX_ADMIN dans ce contexte n'est pas défini puisque nous sommes coté client et non dans l'admin de pluxml)
    [== Indéfini ==]
    private  function __getTableAutorized($table) {
    		if(defined('PLX_ADMIN')) {
    			$b=false;
    			$id_user = $_SESSION['user'];
    			# 0 to 4
    			$level_user = $_SESSION['profil'];
    			$auserlevel= $this->aTables[$table]["user"]["tableuserlevel"];
    			$auserinclude=$this->aTables[$table]["user"]["tableuserinclude"];
    			$auserexclude=$this->aTables[$table]["user"]["tableuserexclude"];
    		
    			for ($i=0;$i<count($auserlevel);$i++){
    				if ($level_user == $auserlevel[$i]) $b=true;
    			}
    			
    			for ($i=0;$i<count($auserinclude);$i++){
    				if ($id_user == $auserinclude[$i]) $b=true;
    			}
    			
    			for ($i=0;$i<count($auserexclude);$i++){
    				if ($id_user == $auserexclude[$i]) $b=false;
    			}
    			
    			return $b;
    		}else{
    			return true;	
    		}
    	}
    

    Tu me tiens au courant.

    Voici ce lien sur le forum spx : ici

    SPX5 arrive après les vacances.
  • Un grand Merci, ça marche impec !
    effectivement j'apprends à lire :cool:

    concernant l'accès direct aux enregistrements>1000 via ta console d'administration, je me suis permis de rajouter dans initconfiguration()
    [== PHP ==]
    if (isset($_GET['data_id'])and $_GET['data_id']!=""){
    			$this->setParam('nb_data_pagination','5000','numeric');
    			$this->setParam('data_id',$_GET['data_id'],'numeric');
    			$this->setParam('pager',($_GET['data_id']/30+1),'numeric');
    }
    

    bonne journée
  • paysan hardipaysan hardi Member
    juin 2014 modifié
    je cherche depuis 5min un bouton résolu, voire à éditer le titre...
    je ne dois pas y voir assez clair, désolé.

    Pour ceux qui l'auront cherché comme moi, je poste sur le forum dédié une modif de spxDatas pour saisir un nouvel enregistrement coté client.
    Encore merci.
Connectez-vous ou Inscrivez-vous pour répondre.