Code cleaning : remove Fic_Attr , replace by Attr_Def_SQL

This commit is contained in:
sparkyx 2021-08-11 17:07:56 +02:00
parent 4b913f1e88
commit 07fedf5178
10 changed files with 68 additions and 189 deletions

View file

@ -65,14 +65,14 @@ if ($action=="enable_search")
}
else
{
$obj=new Fiche_Attr($cn);
$obj=new Attr_Def_SQL($cn);
$mtable=new Card_Attribut_MTable($obj);
$mtable->add_json_param("op", "card");
$mtable->add_json_param("op2", "attribute");
$mtable->set_callback("ajax_misc.php");
$mtable->set_object_name($http->request("ctl"));
$ad_id=$http->request("p_id");
$mtable->get_table()->set_parameter("id", $ad_id);
$mtable->get_table()->setp("ad_id", $ad_id);
switch ($action)
{
case "input":

View file

@ -24,7 +24,7 @@
*/
if ( ! defined ('ALLOWED') ) die('Appel direct ne sont pas permis');
$obj=new Fiche_Attr($cn);
$obj=new Attr_Def_SQL($cn);
$mtable=new Card_Attribut_MTable($obj);
$mtable->add_json_param("op", "card");
$mtable->add_json_param("op2", "attribute");

View file

@ -148,13 +148,11 @@ class Card_Attribut_MTable extends Manage_Table_SQL
function check()
{
$nb_error=0;
$object_sql=$this->get_table();
if ($object_sql->get("ad_id")<9000 && $object_sql->get("ad_id")!=-1)
{
$this->set_error("ad_id",_("Bloqué"));
return false;
}
// Duplicate
@ -168,30 +166,70 @@ class Card_Attribut_MTable extends Manage_Table_SQL
if ($count_duplicate>0)
{
$this->set_error("ad_text", _("Doublon"));
$nb_error++;
}
// type
if (in_array($object_sql->get("ad_type"),
array('date', 'text', 'numeric', 'zone', 'poste', 'card', 'select','check'))==false)
{
$this->set_error("ad_type", _("Type invalide"));
}
// Name empty
if (trim($object_sql->ad_text)=="")
{
$this->set_error("ad_text", _("Description ne peut pas être vide"));
$nb_error++;
}
// select protect
if ( $object_sql->ad_size=="") {
$object_sql->ad_size=22;
}
if ($object_sql->ad_type=='numeric')
{
$object_sql->ad_extra=(trim($object_sql->ad_extra)=='')?'2':$object_sql->ad_extra;
if (isNumber($object_sql->ad_extra)==0)
{
$this->set_error("ad_text",_("La précision doit être un chiffre"));
}
}
if ($object_sql->ad_type=='select')
{
if (trim($object_sql->ad_extra)=="") {
$this->set_error("ad_extra",_("La requête SQL est vide "));
}
if (preg_match('/^\h*select/i', $object_sql->ad_extra)==0)
{
$this->set_error("ad_extra",_("La requête SQL doit commencer par SELECT "));
}
if ($nb_error>0)
}
if ($this->count_error()>0) {
return false;
}
return true;
}
function delete() {
$object_sql=$this->get_table();
if ( $object_sql->getp("ad_id") < 9000 ) {
throw new Exception (_("Effacement bloqué"));
}
$db=$object_sql->cn;
try {
$db->start();
$object_sql=$this->get_table()->delete();
$db->commit();
$sql=$db->exec_sql("delete from fiche_detail where ad_id=$1 ", array($object_sql->ad_id));
$sql="delete from jnt_fic_attr where ad_id=$1";
$res=$db->exec_sql($sql, array($object_sql->ad_id));
$sql="delete from attr_def where ad_id=$1";
$res=$db->exec_sql($sql, array($object_sql->ad_id));
$object_sql=$this->get_table()->delete();
$db->commit();
} catch (Exception $ex) {
$db->rollback();
throw new Exception (_("Effacement bloqué : attribut utilisé"));

View file

@ -146,7 +146,8 @@ class Card_Property
return;
} elseif ($fiche->id==0 && $fiche->fiche_def ==0 )
{
throw new Exception("CP147. Card category cannot be empty (fiche->set_fiche_def)",EXC_PARAM_VALUE);
return;
// throw new Exception("CP147. Card category cannot be empty (fiche->set_fiche_def)",EXC_PARAM_VALUE);
}
$sql="select *
from

View file

@ -244,7 +244,7 @@ class Document
{
if (mkdir($temp_dir)==false)
{
$msg=sprintf(_("Ne peut pas créer le répertoire %s", $temp_dir));
$msg=sprintf("D221."._("Ne peut pas créer le répertoire %s", $temp_dir));
record_log("D221".$msg);
throw new Exception($msg);
}
@ -255,13 +255,13 @@ class Document
// check if the opening is sucessfull
if ($h===false)
{
$msg=sprintf(_("Ne peut pas ouvrir [%s] [%s]"), $p_dir, $p_file);
$msg=sprintf("D232"._("Ne peut pas ouvrir [%s] [%s]"), $p_dir, $p_file);
record_log("D232".$msg);
throw new Exception($msg);
}
if ($output_file==false)
{
$msg=sprintf(_("Ne peut pas ouvrir [%s] [%s]"), $p_dir, $output_name);
$msg=sprintf("D264."._("Ne peut pas ouvrir [%s] [%s]"), $p_dir, $output_name);
record_log($msg);
throw new Exception($msg);
}

View file

@ -1,162 +0,0 @@
<?php
//This file is part of NOALYSS and is under GPL
//see licence.txt
/**
* @brief Manage the table attr_def
*
*
*/
require_once NOALYSS_INCLUDE.'/lib/ac_common.php';
require_once NOALYSS_INCLUDE."/database/attr_def_sql.class.php";
class Fiche_Attr extends Attr_Def_SQL
{
/* example private $variable=array("easy_name"=>column_name,"email"=>"column_name_email","val3"=>0); */
function __construct($p_cn, $p_id=0)
{
parent::__construct($p_cn, $p_id);
}
public function get_parameter($p_string)
{
return $this->getp($p_string);
}
public function set_parameter($p_string, $p_value)
{
$this->setp($p_string, $p_value);
}
public function verify()
{
// Verify that the elt we want to add is correct
/* verify only the datatype */
if (strlen(trim($this->ad_text))==0)
throw new Exception('La description ne peut pas être vide', 1);
if (strlen(trim($this->ad_type))==0)
throw new Exception('Le type ne peut pas être vide', 1);
$this->ad_type=strtolower($this->ad_type);
if (in_array($this->ad_type, array('date', 'text', 'numeric', 'zone', 'poste', 'card', 'select','check'))==false)
throw new Exception('Le type doit être text, numeric,poste, card, select ou date', 1);
if (trim($this->ad_size)==''||isNumber($this->ad_size)==0||$this->ad_size>22)
{
switch ($this->ad_type)
{
case 'text':
$this->ad_size=22;
break;
case 'numeric':
$this->ad_size=9;
break;
case 'date':
$this->ad_size=8;
break;
case 'zone':
$this->ad_size=22;
break;
default:
$this->ad_size=22;
}
}
if ($this->ad_type=='numeric')
{
$this->ad_extra=(trim($this->ad_extra)=='')?'2':$this->ad_extra;
if (isNumber($this->ad_extra)==0)
throw new Exception("La précision doit être un chiffre");
}
if ($this->ad_type=='select')
{
if (trim($this->ad_extra)=="")
throw new Exception("La requête SQL est vide ");
if (preg_match('/^\h*select/i', $this->ad_extra)==0)
throw new Exception("La requête SQL doit commencer par SELECT ");
try
{
$this->cn->exec_sql($this->ad_extra);
}
catch (Exception $e)
{
record_log($e);
throw new Exception("La requête SQL ".h($this->ad_extra)." est invalide ");
}
}
}
public function update()
{
try
{
$this->verify();
if ($this->ad_id<9000)
return;
/* please adapt */
parent::update();
}
catch (Exception $e)
{
record_log($e);
throw $e;
}
}
public function delete()
{
if ($this->ad_id<9000)
return;
$sql=$this->cn->exec_sql("delete from fiche_detail where ad_id=$1 ", array($this->ad_id));
$sql="delete from jnt_fic_attr where ad_id=$1";
$res=$this->cn->exec_sql($sql, array($this->ad_id));
$sql="delete from attr_def where ad_id=$1";
$res=$this->cn->exec_sql($sql, array($this->ad_id));
}
/* !
* @brief used with a usort function, to sort an array of Attribut on the attribut_id (ad_id)
*/
static function sort_by_id($o1, $o2)
{
if ($o1->ad_id>$o2->ad_id)
return 1;
if ($o1->ad_id==$o2->ad_id)
return 0;
return -1;
}
public function save()
{
/* please adapt */
if ($this->ad_id < 1)
{
$this->ad_id=-1;
$this->insert();
}
else
$this->update();
}
public function to_array($prefix="")
{
$array=array();
foreach ($this->name as $key=> $value)
{
$nkey=$prefix.$value;
$array[$nkey]=$this->$value;
//
}
return $array;
}
}
//Fiche_Attr::test_me();

View file

@ -437,7 +437,6 @@ function noalyss_class_autoloader($class) {
"dossier" => "class/dossier.class.php",
"exercice" => "class/exercice.class.php",
"extension" => "class/extension.class.php",
"fiche_attr" => "class/fiche_attr.class.php",
"fiche" => "class/fiche.class.php",
"fiche_def" => "class/fiche_def.class.php",
"fiche_def_ref" => "class/fiche_def_ref.class.php",

View file

@ -40,12 +40,12 @@ class Attr_Def_SQL extends Table_Data_SQL
* List of columns
*/
$this->name=array(
"id"=>"ad_id"
, "desc"=>"ad_text"
, "type"=>"ad_type"
, "size"=>"ad_size"
, "extra"=>"ad_extra"
, "search_followup"=>"ad_search_followup"
"ad_id"=>"ad_id"
, "ad_text"=>"ad_text"
, "ad_type"=>"ad_type"
, "ad_size"=>"ad_size"
, "ad_extra"=>"ad_extra"
, "ad_search_followup"=>"ad_search_followup"
);
/*
* Type of columns

View file

@ -88,7 +88,6 @@ class Card_PropertyTest extends TestCase
public static function tearDownAfterClass()
{
return;
require_once 'global.php';
global $g_connection;
$g_connection=Dossier::connect();

View file

@ -121,7 +121,7 @@ class DocumentTest extends TestCase
$this->assertTrue ( $document->replace('CUST_NAME',$array) == 'Client 1','CUST_NAME');
}
/**
* @testdox Document::generate(), Document::parseDocument(),Document::replace(); require unoconv -l in another session
* @testdox Generate Document::generate(), Document::parseDocument(),Document::replace(); require unoconv -l in another session
* @covers Document::generate(), Document::parseDocument(),Document::replace();
*/
function testGenerate()
@ -136,12 +136,12 @@ class DocumentTest extends TestCase
$document->md_id=$md_id;
$cnt_before=$cn->get_value("select count(*) from document");
$document->generate($array);
var_dump($document);
$this->assertEquals($document->d_filename ,'all-tags.odt','Generated File ');
$cnt_after=$cn->get_value("select count(*) from document");
$this->assertTrue ($cnt_after == $cnt_before+1,"One file generated");
}
/**
* @testdox test $_ENV['TMP']
*/
@ -155,11 +155,15 @@ class DocumentTest extends TestCase
$document->ag_id=2;
$document->md_id=$md_id;
$cnt_before=$cn->get_value("select count(*) from document");
$tEnv=$_ENV['TMP'];
$_ENV['TMP']='/not.exist';
$this->assertContains ('échoué',$document->generate($array));
$_ENV['TMP']= $tEnv;
}
/**
* @testdox export PDF tests Document::export_pdf, Document::transform2pdf()
* @testdox ExtractPdf export PDF tests Document::export_pdf, Document::transform2pdf()
*
*/
function testExtractPdf()