Code Improve : Extension , Fix : php8.1
This commit is contained in:
parent
4496e09703
commit
ea2b77465c
5 changed files with 273 additions and 11 deletions
|
|
@ -335,7 +335,7 @@ class Acc_Bilan
|
|||
}
|
||||
catch(Exception $Ex)
|
||||
{
|
||||
record_log($e);
|
||||
record_log($Ex);
|
||||
echo $Ex->getMessage();
|
||||
throw $Ex;
|
||||
}
|
||||
|
|
@ -437,7 +437,7 @@ class Acc_Bilan
|
|||
$zip->close();
|
||||
} else
|
||||
{
|
||||
echo __FILE__.":".__LINE__."cannot unzip model ".$filename;
|
||||
echo __FILE__.":".__LINE__."cannot unzip model ".$file_base;
|
||||
}
|
||||
|
||||
ob_end_clean();
|
||||
|
|
@ -738,7 +738,7 @@ class Acc_Bilan
|
|||
}
|
||||
else
|
||||
{
|
||||
echo __FILE__.":".__LINE__."cannot unzip model ".$filename;
|
||||
echo __FILE__.":".__LINE__."cannot unzip model ".$file_base;
|
||||
}
|
||||
|
||||
// Remove the file we do not need anymore
|
||||
|
|
|
|||
|
|
@ -253,7 +253,7 @@ class Extension extends Menu_Ref_sql
|
|||
}
|
||||
|
||||
/**
|
||||
* remove all the schema from the plugins
|
||||
* @brief remove all the standard plugins schema
|
||||
* @param Database $p_cn
|
||||
*/
|
||||
static function clean(Database $p_cn)
|
||||
|
|
@ -269,7 +269,7 @@ class Extension extends Menu_Ref_sql
|
|||
}
|
||||
|
||||
/**
|
||||
* compare the version of the plugin and the last version , propose to update it if a new version exists
|
||||
* @brief compare the version of the plugin and the last version , propose to update it if a new version exists
|
||||
* @todo add a mechanism to check once a day
|
||||
* @global User $g_user
|
||||
* @global number $version_plugin
|
||||
|
|
@ -327,6 +327,9 @@ class Extension extends Menu_Ref_sql
|
|||
throw new Exception(_('Manque répertoire racine'), 1);
|
||||
if (!isset($xml->plugin[$i]->file))
|
||||
throw new Exception(_('Manque fichier à inclure'), 1);
|
||||
if (!isset($xml->plugin[$i]->version))
|
||||
throw new Exception(_("Manque version de l'extension"), 1);
|
||||
|
||||
if (!isset($xml->plugin[$i]->depend))
|
||||
$xml->plugin[$i]->depend="EXT";
|
||||
if (!isset($xml->plugin[$i]->order))
|
||||
|
|
@ -340,8 +343,9 @@ class Extension extends Menu_Ref_sql
|
|||
}
|
||||
|
||||
/**
|
||||
* Parse a XML file to complete an array of extension objects
|
||||
* @brief Create extension from XML.
|
||||
* @brief Parse a XML file to complete an array of extension objects, in the plugin.xml file , you can find
|
||||
* several plugins sharing some parts.
|
||||
*
|
||||
* @param string $p_file filename
|
||||
* @return array array of Extension
|
||||
*/
|
||||
|
|
@ -363,7 +367,7 @@ class Extension extends Menu_Ref_sql
|
|||
}
|
||||
catch (Exception $ex)
|
||||
{
|
||||
echo_warning($e->getMessage());
|
||||
echo_warning($ex->getMessage());
|
||||
if ($ex->getCode()==1)
|
||||
{
|
||||
continue;
|
||||
|
|
@ -378,14 +382,46 @@ class Extension extends Menu_Ref_sql
|
|||
$extension->me_parameter='plugin_code='.trim($xml->plugin[$i]->code);
|
||||
$extension->depend=(isset($xml->plugin[$i]->depend))?trim($xml->plugin[$i]->depend):"EXT";
|
||||
$extension->order=(isset($xml->plugin[$i]->order))?trim($xml->plugin[$i]->order):9000;
|
||||
$extension->version=trim($xml->plugin[$i]->version);
|
||||
$extension->noalyss_version=(isset($xml->plugin[$i]->noalyss_version))?trim($xml->plugin[$i]->noalyss_version):8000;
|
||||
$a_extension[]=clone $extension;
|
||||
}
|
||||
return $a_extension;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief find the extension with the me_code = last part of access_code
|
||||
* @param $a_extension
|
||||
* @param $access_code find the ME_CODE (normally last part )
|
||||
* @return the extension or null
|
||||
*/
|
||||
public static function find_extension_code($a_extension,$access_code):Extension|null
|
||||
{
|
||||
$a_me_code=explode("/", $access_code);
|
||||
if (empty($a_me_code ) ) return null;
|
||||
$nb_me_code=count($a_me_code);
|
||||
$me_code=$a_me_code[$nb_me_code-1];
|
||||
foreach ($a_extension as $extension) {
|
||||
if ($extension->me_code==$me_code) return $extension;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public function __toString(): string
|
||||
{
|
||||
return "Extension";
|
||||
$r = "";
|
||||
$r .= " me_code " . $this->me_code.PHP_EOL;
|
||||
$r .= " me_menu.".$this->me_menu.PHP_EOL;
|
||||
$r .= " version".$this->version.PHP_EOL;
|
||||
$r .= " noalyss_version".$this->noalyss_version.PHP_EOL;
|
||||
$r .= " me_file" . $this->me_file.PHP_EOL;
|
||||
$r .= " me_url" . $this->me_url.PHP_EOL;
|
||||
$r .= " me_description" . $this->me_description.PHP_EOL;
|
||||
$r .= " me_parameter" . $this->me_parameter.PHP_EOL;
|
||||
$r .= " me_javascript" . $this->me_javascript.PHP_EOL;
|
||||
$r .= " me_type" . $this->me_type.PHP_EOL;
|
||||
$r .= " me_descrition_etendue" . $this->me_description_etendue.PHP_EOL;
|
||||
return "Extension $r";
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -175,9 +175,10 @@ having count(*) > 1
|
|||
|
||||
</li>
|
||||
<ul>
|
||||
<?php $all_dep=Database::fetch_all($poste);
|
||||
<?php
|
||||
$all_dep=Database::fetch_all($poste);
|
||||
$nb_dep = ($all_dep == FALSE ) ? 0 :count($all_dep);
|
||||
for ($e=0;$e<count($nb_dep);$e++):
|
||||
for ($e=0;$e<$nb_dep;$e++):
|
||||
?>
|
||||
<li>
|
||||
<?php echo HtmlInput::history_account($all_dep[$e]['j_poste'],$all_dep[$e]['j_poste'],' display:inline ')?>
|
||||
|
|
|
|||
86
unit-test/include/class/data/plugin.xml
Normal file
86
unit-test/include/class/data/plugin.xml
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><!--
|
||||
/*
|
||||
* This file is part of NOALYSS.
|
||||
*
|
||||
* NOALYSS is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* NOALYSS is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with NOALYSS; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
// Copyright (c) 2002-2014 Author Dany De Bontridder danydb@aevalys.eu
|
||||
-->
|
||||
<plugins>
|
||||
<plugin>
|
||||
<name>
|
||||
Skeleton for plugin
|
||||
</name>
|
||||
<description>
|
||||
Example of an XML File for developing a plugin.
|
||||
|
||||
</description>
|
||||
<code>
|
||||
SKEL
|
||||
</code>
|
||||
<root>
|
||||
skel
|
||||
</root>
|
||||
<file>
|
||||
index.php
|
||||
</file>
|
||||
<author>
|
||||
Dany De Bontridder
|
||||
</author>
|
||||
<noalyss_version>9000</noalyss_version>
|
||||
<order>
|
||||
9000
|
||||
</order>
|
||||
<depend>
|
||||
EXT
|
||||
</depend>
|
||||
<schema>
|
||||
skeleton
|
||||
</schema>
|
||||
<version>2000</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<name>
|
||||
Second Skeleton for plugin
|
||||
</name>
|
||||
<description>
|
||||
Example of an XML File for developing a plugin.
|
||||
Second plugin inside
|
||||
</description>
|
||||
<code>
|
||||
PLUGIN_TEST
|
||||
</code>
|
||||
<root>
|
||||
skel
|
||||
</root>
|
||||
<file>
|
||||
index-plugin_test.php
|
||||
</file>
|
||||
<author>
|
||||
Dany De Bontridder
|
||||
</author>
|
||||
<noalyss_version>8111</noalyss_version>
|
||||
<order>
|
||||
9000
|
||||
</order>
|
||||
<depend>
|
||||
EXT
|
||||
</depend>
|
||||
<schema>
|
||||
skeleton
|
||||
</schema>
|
||||
<version>9019</version>
|
||||
</plugin>
|
||||
</plugins>
|
||||
139
unit-test/include/class/extensiontest.php
Normal file
139
unit-test/include/class/extensiontest.php
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* * Copyright (C) 2022 Dany De Bontridder <dany@alchimerys.be>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*
|
||||
* Author : Dany De Bontridder danydb@noalyss.eu $(DATE)
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief noalyss
|
||||
*/
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
require DIRTEST . '/global.php';
|
||||
|
||||
/**
|
||||
* @testdox Class ExtensionTest : used for ...
|
||||
* @backupGlobals enabled
|
||||
* @coversDefaultClass
|
||||
*/
|
||||
class ExtensionTest extends TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* @var Fiche
|
||||
*/
|
||||
protected $object;
|
||||
protected $connection;
|
||||
|
||||
/**
|
||||
* Sets up the fixture, for example, opens a network connection.
|
||||
* This method is called before a test method is executed.
|
||||
*/
|
||||
protected function setUp(): void
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Tears down the fixture, for example, closes a network connection.
|
||||
* This method is called after a test method is executed.
|
||||
*/
|
||||
protected function tearDown(): void
|
||||
{
|
||||
/**
|
||||
* example
|
||||
* if ( ! is_object($this->object->fiche_def)) return;
|
||||
* include_once DIRTEST.'/global.php';
|
||||
* $g_connection=Dossier::connect();
|
||||
* $sql=new ArrayObject();
|
||||
* $sql->append("delete from fiche_detail where f_id in (select f_id from fiche where fd_id =\$1 )");
|
||||
* $sql->append("delete from fiche where f_id not in (select f_id from fiche_detail where \$1=\$1)");
|
||||
* $sql->append("delete from jnt_fic_attr where fd_id = \$1 ");
|
||||
* $sql->append("delete from fiche_def where fd_id = \$1");
|
||||
* foreach ($sql as $s) {
|
||||
* $g_connection->exec_sql($s,[$this->object->fiche_def->id]);
|
||||
* }
|
||||
*/
|
||||
}
|
||||
|
||||
/**
|
||||
* the setUpBeforeClass() template methods is called before the first test of the test case
|
||||
* class is run
|
||||
*/
|
||||
public static function setUpBeforeClass(): void
|
||||
{
|
||||
// include 'global.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* tearDownAfterClass() template methods is calleafter the last test of the test case class is run,
|
||||
*
|
||||
*/
|
||||
static function tearDownAfterClass(): void
|
||||
{
|
||||
// include 'global.php';
|
||||
}
|
||||
//
|
||||
// public function dataExample()
|
||||
// {
|
||||
// return array([1], [2], [3]);
|
||||
// }
|
||||
|
||||
/**
|
||||
* @testdox check the load of plugin and find the plugin from an access_code
|
||||
* @covers \Extension::find_extension_code \Extension:read_definition , \Extension::verify
|
||||
* @backupGlobals on
|
||||
*/
|
||||
function testFind_extension_file()
|
||||
{
|
||||
global $cn;
|
||||
require DIRTEST . '/global.php';
|
||||
$cn=$g_connection;
|
||||
$a_extension=\Extension::read_definition(__DIR__."/data/plugin.xml");
|
||||
$access_code="EXT/TOOLS/PLUGIN_TEST";
|
||||
$extension=\Extension::find_extension_code($a_extension, $access_code);
|
||||
|
||||
$this->assertTrue($extension->me_file=="skel/index-plugin_test.php");
|
||||
$this->assertTrue($extension->version==9019, " ne peut retrouver la version");
|
||||
$this->assertTrue($extension->noalyss_version==8111," ne peut pas retrouver la version de noalyss");
|
||||
}
|
||||
|
||||
/**
|
||||
* @testdox check the load of plugin and find the plugin from an access_code
|
||||
* @covers \Extension::find_extension_code \Extension:read_definition\Extension::verify
|
||||
* @backupGlobals on
|
||||
*/
|
||||
function testFind_extension_version()
|
||||
{
|
||||
global $cn;
|
||||
require DIRTEST . '/global.php';
|
||||
$cn=$g_connection;
|
||||
$a_extension=\Extension::read_definition(__DIR__."/data/plugin.xml");
|
||||
$access_code="EXT/TOOLS/SKEL";
|
||||
$extension=\Extension::find_extension_code($a_extension, $access_code);
|
||||
|
||||
$this->assertTrue($extension->version==2000, " ne peut retrouver la version");
|
||||
$this->assertTrue($extension->noalyss_version==9000," ne peut pas retrouver la version de noalyss");
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue