Added module descriptor and activation checks

Corrected 3 missing $error_occurred flags
This commit is contained in:
Ion Agorria 2014-10-31 04:59:57 +01:00
parent e875f0c2b8
commit 557cbaf3d7
2 changed files with 132 additions and 4 deletions

View File

@ -0,0 +1,121 @@
<?php
/* Copyright (C) 2014 Ion Agorria <ion@agorria.com>
*
* 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 3 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, see <http://www.gnu.org/licenses/>.
*/
/**
* \defgroup webservices Module webservices
* \brief Module to enable client for supplier WebServices
* \file htdocs/core/modules/modSyncSupplierWebServices.class.php
* \ingroup webservices
* \brief File to describe client for supplier webservices module
*/
include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php';
/**
* Class to describe a WebServices module
*/
class modSyncSupplierWebServices extends DolibarrModules
{
/**
* Constructor. Define names, constants, directories, boxes, permissions
*
* @param DoliDB $db Database handler
*/
function __construct($db)
{
$this->db = $db;
$this->numero = 2650;
$this->family = "technic";
// Module label (no space allowed), used if translation string 'ModuleXXXName' not found (where XXX is value of numeric property 'numero' of module)
$this->name = preg_replace('/^mod/i','',get_class($this));
$this->description = "Enable the client for external supplier web services";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
// Key used in llx_const table to save module status enabled/disabled (where MYMODULE is value of property name of module in uppercase)
$this->const_name = 'MAIN_MODULE_'.strtoupper($this->name);
// Where to store the module in setup page (0=common,1=interface,2=others,3=very specific)
$this->special = 1;
// Name of image file used for this module.
$this->picto='technic';
// Data directories to create when module is enabled
$this->dirs = array();
// Config pages
//-------------
//$this->config_page_url = array("webservices.php@webservices");
// Dependancies
//-------------
$this->depends = array();
$this->requiredby = array();
$this->langfiles = array("other");
// Constantes
//-----------
$this->const = array();
// New pages on tabs
// -----------------
$this->tabs = array();
// Boxes
//------
$this->boxes = array();
// Permissions
//------------
$this->rights = array();
$this->rights_class = 'syncsupplierwebservices';
$r=0;
}
/**
* Function called when module is enabled.
* The init function add constants, boxes, permissions and menus (defined in constructor) into Dolibarr database.
* It also creates data directories
*
* @param string $options Options when enabling module ('', 'noboxes')
* @return int 1 if OK, 0 if KO
*/
function init($options='')
{
// Prevent pb of modules not correctly disabled
//$this->remove($options);
$sql = array();
return $this->_init($sql,$options);
}
/**
* Function called when module is disabled.
* Remove from database constants, boxes and permissions from Dolibarr database.
* Data directories are not deleted
*
* @param string $options Options when enabling module ('', 'noboxes')
* @return int 1 if OK, 0 if KO
*/
function remove($options='')
{
$sql = array();
return $this->_remove($sql,$options);
}
}

View File

@ -7,6 +7,7 @@
* Copyright (C) 2011 Philippe Grand <philippe.grand@atoo-net.com>
* Copyright (C) 2012 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2014 Ion Agorria <ion@agorria.com>
*
* 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
@ -1065,8 +1066,10 @@ if ($action == 'webservice' && GETPOST('mode', 'alpha') == "send" && ! GETPOST('
'entity'=>$ws_entity
);
//Is everything filled?
if ($mode != "init" && (empty($ws_host) || empty($ws_key) || empty($ws_user) || empty($ws_password) || empty($ws_thirdparty))) {
//Is sync supplier web services module activated? and everything filled?
if (empty($conf->syncsupplierwebservices->enabled)) {
setEventMessage($langs->trans("WarningModuleNotActive",$langs->transnoentities("Module2650Name")));
} else if ($mode != "init" && (empty($ws_host) || empty($ws_key) || empty($ws_user) || empty($ws_password) || empty($ws_thirdparty))) {
setEventMessage($langs->trans("ErrorFieldsRequired"), 'errors');
}
else
@ -2054,6 +2057,7 @@ elseif (! empty($object->id))
if (empty($ws_thirdparty))
{
setEventMessage($langs->trans("RemoteUserMissingAssociatedSoc"), 'errors');
$error_occurred = true;
}
else
{
@ -2129,10 +2133,12 @@ elseif (! empty($object->id))
elseif ($user_status_code == "PERMISSION_DENIED")
{
setEventMessage($langs->trans("RemoteUserNotPermission"), 'errors');
$error_occurred = true;
}
else
{
setEventMessage($langs->trans("ResponseNonOK")." '".$user_status_code."'", 'errors');
$error_occurred = true;
}
//Form
@ -2242,8 +2248,9 @@ elseif (! empty($object->id))
//}
}
// Create a remote order using WebService
if ($object->statut >= 2) // 2 means accepted
// Create a remote order using WebService only if module is activated
if (! empty($conf->syncsupplierwebservices->enabled) && $object->statut >= 2) // 2 means accepted
{
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&amp;action=webservice&amp;mode=init">'.$langs->trans('CreateRemoteOrder').'</a>';
}