noalyss
Version-6.7.2
|
manage the extension, it involves the table extension More...
Public Member Functions | |
can_request ($p_login) | |
return 1 if the user given in parameter can access this extension otherwise returns 0 | |
check_xml (SimpleXMLElement $xml) | |
Check that the xml contains all the needed information to change them into a extension, the exception code is 0 if the element is optional. | |
insert_plugin () | |
Insert a plugin into the given profile, by default always insert into EXT. | |
insert_profile_menu ($p_id=1, $p_module='EXT') | |
insert into the table profile_menu for the given profile id and depending of the module $p_module type $cn | |
remove_from_profile_menu ($p_id) | |
remove_plugin () | |
search ($p_what) | |
search a extension, the what is the column (extends_code | |
update_plugin () | |
verify () | |
Static Public Member Functions | |
static | check_plugin_version () |
static | check_version ($i) |
static | clean (Database $p_cn) |
remove all the schema from the plugins | |
static | make_array ($cn) |
make an array of the available plugin for the current user | |
static | read_definition ($p_file) |
Parse a XML file to complete an array of extension objects. |
manage the extension, it involves the table extension
Data member
Definition at line 43 of file class_extension.php.
Extension::can_request | ( | $ | p_login | ) |
return 1 if the user given in parameter can access this extension otherwise returns 0
$p_login | the user login |
Definition at line 66 of file class_extension.php.
References cn.
{ $cnt=$this->cn->get_value("select count(*) from menu_ref join profile_menu using (me_code) join profile_user using (p_id) where me_code=$1 and user_name=$2", array($this->me_code,$p_login)); if ( $cnt > 0) return 1; return 0; }
static Extension::check_plugin_version | ( | ) | [static] |
Definition at line 210 of file class_extension.php.
Referenced by check_version().
{ global $g_user,$version_plugin; if ($g_user->Admin() == 1) { if (SITE_UPDATE_PLUGIN != "") { $update = @file_get_contents(SITE_UPDATE_PLUGIN); if ($update > $version_plugin) { echo '<div class="inner_box" style="position:absolute;zindex:2;top:5px;left:360px">'; echo '<p class="notice">'; echo "Mise à jour disponible des plugins pour NOALYSS, version actuelle : $update votre version $version_plugin"; echo '</p>'; echo '</div>'; } } } }
static Extension::check_version | ( | $ | i | ) | [static] |
Definition at line 91 of file class_extension.php.
References $version_noalyss, alert(), and check_plugin_version().
{ global $version_noalyss; if ( ! isset ($version_noalyss) || $version_noalyss < $i ) { alert('Cette extension ne fonctionne pas sur cette version de NOALYSS'. ' Veuillez mettre votre programme a jour. Version minimum '.$i); return; } Extension::check_plugin_version(); }
Extension::check_xml | ( | SimpleXMLElement $ | xml | ) |
Check that the xml contains all the needed information to change them into a extension, the exception code is 0 if the element is optional.
Check XML.
SimpleXMLElement | $xml |
Exception |
Definition at line 236 of file class_extension.php.
References $ex, and $nb_plugin.
{ try { if ( !isset ($xml->plugin)) throw new Exception(_('Manque plugin'),1); $nb_plugin=count($xml->plugin); for ($i=0;$i<$nb_plugin;$i++) { if ( !isset ($xml->plugin[$i]->name)) throw new Exception(_('Manque nom'),1); if ( !isset ($xml->plugin[$i]->description)) throw new Exception(_('Manque description'),0); if ( !isset ($xml->plugin[$i]->code)) throw new Exception(_('Manque code'),1); if ( !isset ($xml->plugin[$i]->author)) throw new Exception(_('Manque auteur'),0); if ( !isset ($xml->plugin[$i]->root)) throw new Exception(_('Manque répertoire racine'),1); if ( !isset ($xml->plugin[$i]->file)) throw new Exception(_('Manque fichier à inclure'),1); } } catch (Exception $ex) { throw $ex; } }
static Extension::clean | ( | Database $ | p_cn | ) | [static] |
remove all the schema from the plugins
Database | $p_cn |
Definition at line 201 of file class_extension.php.
References Database\exec_sql(), and Database\exist_schema().
{ $a_ext=array("tva_belge","amortissement","impdol","coprop","importbank"); for($i=0;$i<count($a_ext);$i++){ if ($p_cn->exist_schema($a_ext[$i])) { $p_cn->exec_sql("drop schema ".$a_ext[$i]." cascade"); } } }
Insert a plugin into the given profile, by default always insert into EXT.
type | $p_id | profile.p_id |
Exception | if duplicate or error db |
Definition at line 149 of file class_extension.php.
References $count, alert(), cn, echo, and verify().
{ try { $this->cn->start(); $this->verify(); // check if duplicate $this->me_code = strtoupper($this->me_code); $count = $this->cn->get_value("select count(*) from menu_ref where me_code=$1", array($this->me_code)); if ($count != 0) throw new Exception("Doublon"); $this->me_type = 'PL'; $this->insert(); $this->cn->commit(); } catch (Exception $exc) { echo alert($exc->getMessage()); } }
Extension::insert_profile_menu | ( | $ | p_id = 1 , |
$ | p_module = 'EXT' |
||
) |
insert into the table profile_menu for the given profile id and depending of the module $p_module type $cn
type | $p_id | profile.p_id |
type | $p_module | menu_ref.me_code |
Exception | 10 : profile absent 20 module absent |
Definition at line 110 of file class_extension.php.
References $cn, $module, and $profile.
{ global $cn; //profile exists ? $profile=new Profile_sql($cn,$p_id); if ( $profile->p_id != $p_id) { throw new Exception(_('Profil inexistant'),10); } // Menu exists $module=new Menu_Ref($cn,$p_module); if ($module->me_code==null) { throw new Exception(_('Module inexistant'),20); } $profil_menu=new Profile_Menu($cn); $profil_menu->me_code=$this->me_code; $profil_menu->me_code_dep=$p_module; $profil_menu->p_type_display='S'; $profil_menu->p_id=$p_id; $cnt=$profil_menu->count(' where p_id=$1 and me_code = $2',array($p_id,$this->me_code)); if ( $cnt==0) { $profil_menu->insert(); } }
static Extension::make_array | ( | $ | cn | ) | [static] |
make an array of the available plugin for the current user
Definition at line 82 of file class_extension.php.
static Extension::read_definition | ( | $ | p_file | ) | [static] |
Parse a XML file to complete an array of extension objects.
Create extension from XML.
type | $p_file | filename |
Definition at line 261 of file class_extension.php.
References $cn, $e, $ex, $nb_plugin, $xml, echo_warning(), and trim().
{ global $cn; $dom=new DomDocument('1.0'); $dom->load($p_file); $xml=simplexml_import_dom($dom); $nb_plugin=count($xml->plugin); $a_extension=array(); for ($i=0;$i<$nb_plugin;$i++) { $extension=new Extension($cn); try { $extension->check_xml($xml); } catch (Exception $ex) { echo_warning($e->getMessage()); if ( $ex->getCode()==1) { continue; } } $extension->me_file=trim($xml->plugin[$i]->root).'/'.trim($xml->plugin[$i]->file); $extension->me_code=trim($xml->plugin[$i]->code); $extension->me_description=(isset ($xml->plugin[$i]->description))?$xml->plugin[$i]->description:""; $extension->me_description_etendue=($xml->plugin[$i]->author)?$xml->plugin[$i]->author:""; $extension->me_type='PL'; $extension->me_menu=$xml->plugin[$i]->name; $extension->me_parameter='plugin_code='.trim($xml->plugin[$i]->code); $a_extension[]=clone $extension; } return $a_extension; }
Extension::remove_from_profile_menu | ( | $ | p_id | ) |
Definition at line 136 of file class_extension.php.
References $cn.
{ global $cn; $cn->exec_sql('delete from profile_menu where (me_code = $1 or me_code in (select me_code from menu_ref where me_file=$2)) and p_id=$3',array($this->me_code,$this->me_file,$p_id)); }
Extension::search | ( | $ | p_what | ) |
search a extension, the what is the column (extends_code
Definition at line 55 of file class_extension.php.
{ $this->me_code=strtoupper($p_what); if ( $this->load() == -1) return null; return 1; }
Definition at line 45 of file class_extension.php.
References trim().
Referenced by insert_plugin(), and update_plugin().
{ // Verify that the elt we want to add is correct if (trim($this->me_code)=="") throw new Exception('Le code ne peut pas être vide'); if (trim($this->me_menu)=="") throw new Exception('Le nom ne peut pas être vide'); if (trim($this->me_file)=="") throw new Exception('Chemin incorrect'); if (file_exists('..'.DIRECTORY_SEPARATOR.'include'.DIRECTORY_SEPARATOR.'ext'.DIRECTORY_SEPARATOR.$this->me_file) == false) throw new Exception ('Extension non trouvée, le chemin est-il correct?'); }