From 2b07d8f13256edfd7e55ccb2139b5235e6d63f85 Mon Sep 17 00:00:00 2001 From: Chl Date: Sat, 1 Dec 2018 23:26:49 +0100 Subject: [PATCH] =?UTF-8?q?Premi=C3=A8re=20passe=20de=20config.=20et=20net?= =?UTF-8?q?toyage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog.md | 2 +- class/api_sendfacrecmail.class.php | 324 ------------------ core/boxes/README.md | 1 - core/boxes/sendfacrecmailwidget1.php | 211 ------------ ...nglist_sendfacrecmail_myobject.modules.php | 204 ----------- core/modules/modsendfacrecmail.class.php | 39 ++- core/tpl/mytemplate.tpl.php | 35 -- core/triggers/README.md | 1 - ...acrecmail_sendfacrecmailTriggers.class.php | 313 ----------------- css/sendfacrecmail.css.php | 74 ---- js/sendfacrecmail.js.php | 62 ---- lib/sendfacrecmail_myobject.lib.php | 83 ----- sendfacrecmailindex.php | 238 ------------- sql/data.sql | 18 - sql/llx_sendfacrecmail_myobject.key.sql | 24 -- sql/llx_sendfacrecmail_myobject.sql | 28 -- ...lx_sendfacrecmail_myobject_extrafields.sql | 23 -- sql/update_x.x.x-y.y.y.sql | 14 - 18 files changed, 22 insertions(+), 1672 deletions(-) delete mode 100644 class/api_sendfacrecmail.class.php delete mode 100644 core/boxes/README.md delete mode 100644 core/boxes/sendfacrecmailwidget1.php delete mode 100644 core/modules/mailings/mailinglist_sendfacrecmail_myobject.modules.php delete mode 100644 core/tpl/mytemplate.tpl.php delete mode 100644 core/triggers/README.md delete mode 100644 core/triggers/interface_99_modsendfacrecmail_sendfacrecmailTriggers.class.php delete mode 100644 css/sendfacrecmail.css.php delete mode 100644 js/sendfacrecmail.js.php delete mode 100644 lib/sendfacrecmail_myobject.lib.php delete mode 100644 sendfacrecmailindex.php delete mode 100644 sql/data.sql delete mode 100644 sql/llx_sendfacrecmail_myobject.key.sql delete mode 100644 sql/llx_sendfacrecmail_myobject.sql delete mode 100644 sql/llx_sendfacrecmail_myobject_extrafields.sql delete mode 100644 sql/update_x.x.x-y.y.y.sql diff --git a/ChangeLog.md b/ChangeLog.md index 92ce79c..7f54ede 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,5 +1,5 @@ # CHANGELOG SENDFACRECMAIL FOR DOLIBARR ERP CRM -## 1.0 +## 0.1 Initial version diff --git a/class/api_sendfacrecmail.class.php b/class/api_sendfacrecmail.class.php deleted file mode 100644 index 6e1d6fc..0000000 --- a/class/api_sendfacrecmail.class.php +++ /dev/null @@ -1,324 +0,0 @@ - - * Copyright (C) 2018 SuperAdmin - * - * 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 . - */ - -use Luracast\Restler\RestException; - -dol_include_once('/sendfacrecmail/class/myobject.class.php'); - - - -/** - * \file sendfacrecmail/class/api_sendfacrecmail.class.php - * \ingroup sendfacrecmail - * \brief File for API management of myobject. - */ - -/** - * API class for sendfacrecmail myobject - * - * @smart-auto-routing false - * @access protected - * @class DolibarrApiAccess {@requires user,external} - */ -class sendfacrecmailApi extends DolibarrApi -{ - /** - * @var array $FIELDS Mandatory fields, checked when create and update object - */ - static $FIELDS = array( - 'name', - ); - - - /** - * @var MyObject $myobject {@type MyObject} - */ - public $myobject; - - /** - * Constructor - * - * @url GET / - * - */ - function __construct() - { - global $db, $conf; - $this->db = $db; - $this->myobject = new MyObject($this->db); - } - - /** - * Get properties of a myobject object - * - * Return an array with myobject informations - * - * @param int $id ID of myobject - * @return array|mixed data without useless information - * - * @url GET myobjects/{id} - * @throws RestException - */ - function get($id) - { - if(! DolibarrApiAccess::$user->rights->myobject->read) { - throw new RestException(401); - } - - $result = $this->myobject->fetch($id); - if( ! $result ) { - throw new RestException(404, 'MyObject not found'); - } - - if( ! DolibarrApi::_checkAccessToResource('myobject',$this->myobject->id)) { - throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); - } - - return $this->_cleanObjectDatas($this->myobject); - } - - - /** - * List myobjects - * - * Get a list of myobjects - * - * @param string $sortfield Sort field - * @param string $sortorder Sort order - * @param int $limit Limit for list - * @param int $page Page number - * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" - * @return array Array of order objects - * - * @throws RestException - * - * @url GET /myobjects/ - */ - function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '') - { - global $db, $conf; - - $obj_ret = array(); - - $socid = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : ''; - - $restictonsocid = 0; // Set to 1 if there is a field socid in table of object - - // If the internal user must only see his customers, force searching by him - $search_sale = 0; - if ($restictonsocid && ! DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) $search_sale = DolibarrApiAccess::$user->id; - - $sql = "SELECT t.rowid"; - if ($restictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) - $sql.= " FROM ".MAIN_DB_PREFIX."myobject_mytable as t"; - - if ($restictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale - $sql.= " WHERE 1 = 1"; - - // Example of use $mode - //if ($mode == 1) $sql.= " AND s.client IN (1, 3)"; - //if ($mode == 2) $sql.= " AND s.client IN (2, 3)"; - - $tmpobject = new MyObject($db); - if ($tmpobject->ismultientitymanaged) $sql.= ' AND t.entity IN ('.getEntity('myobject').')'; - if ($restictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= " AND t.fk_soc = sc.fk_soc"; - if ($restictonsocid && $socid) $sql.= " AND t.fk_soc = ".$socid; - if ($restictonsocid && $search_sale > 0) $sql.= " AND t.rowid = sc.fk_soc"; // Join for the needed table to filter by sale - // Insert sale filter - if ($restictonsocid && $search_sale > 0) - { - $sql .= " AND sc.fk_user = ".$search_sale; - } - if ($sqlfilters) - { - if (! DolibarrApi::_checkFilters($sqlfilters)) - { - throw new RestException(503, 'Error when validating parameter sqlfilters '.$sqlfilters); - } - $regexstring='\(([^:\'\(\)]+:[^:\'\(\)]+:[^:\(\)]+)\)'; - $sql.=" AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; - } - - $sql.= $db->order($sortfield, $sortorder); - if ($limit) { - if ($page < 0) - { - $page = 0; - } - $offset = $limit * $page; - - $sql.= $db->plimit($limit + 1, $offset); - } - - $result = $db->query($sql); - if ($result) - { - $num = $db->num_rows($result); - while ($i < $num) - { - $obj = $db->fetch_object($result); - $myobject_static = new MyObject($db); - if($myobject_static->fetch($obj->rowid)) { - $obj_ret[] = $this->_cleanObjectDatas($myobject_static); - } - $i++; - } - } - else { - throw new RestException(503, 'Error when retrieve myobject list'); - } - if( ! count($obj_ret)) { - throw new RestException(404, 'No myobject found'); - } - return $obj_ret; - } - - /** - * Create myobject object - * - * @param array $request_data Request datas - * @return int ID of myobject - * - * @url POST myobjects/ - */ - function post($request_data = null) - { - if(! DolibarrApiAccess::$user->rights->myobject->create) { - throw new RestException(401); - } - // Check mandatory fields - $result = $this->_validate($request_data); - - foreach($request_data as $field => $value) { - $this->myobject->$field = $value; - } - if( ! $this->myobject->create(DolibarrApiAccess::$user)) { - throw new RestException(500); - } - return $this->myobject->id; - } - - /** - * Update myobject - * - * @param int $id Id of myobject to update - * @param array $request_data Datas - * @return int - * - * @url PUT myobjects/{id} - */ - function put($id, $request_data = null) - { - if(! DolibarrApiAccess::$user->rights->myobject->create) { - throw new RestException(401); - } - - $result = $this->myobject->fetch($id); - if( ! $result ) { - throw new RestException(404, 'MyObject not found'); - } - - if( ! DolibarrApi::_checkAccessToResource('myobject',$this->myobject->id)) { - throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); - } - - foreach($request_data as $field => $value) { - $this->myobject->$field = $value; - } - - if($this->myobject->update($id, DolibarrApiAccess::$user)) - return $this->get($id); - - return false; - } - - /** - * Delete myobject - * - * @param int $id MyObject ID - * @return array - * - * @url DELETE myobject/{id} - */ - function delete($id) - { - if(! DolibarrApiAccess::$user->rights->myobject->delete) { - throw new RestException(401); - } - $result = $this->myobject->fetch($id); - if( ! $result ) { - throw new RestException(404, 'MyObject not found'); - } - - if( ! DolibarrApi::_checkAccessToResource('myobject',$this->myobject->id)) { - throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); - } - - if( !$this->myobject->delete(DolibarrApiAccess::$user, 0)) - { - throw new RestException(500); - } - - return array( - 'success' => array( - 'code' => 200, - 'message' => 'MyObject deleted' - ) - ); - } - - - /** - * Clean sensible object datas - * - * @param object $object Object to clean - * @return array Array of cleaned object properties - */ - function _cleanObjectDatas($object) - { - $object = parent::_cleanObjectDatas($object); - - /*unset($object->note); - unset($object->address); - unset($object->barcode_type); - unset($object->barcode_type_code); - unset($object->barcode_type_label); - unset($object->barcode_type_coder);*/ - - return $object; - } - - /** - * Validate fields before create or update object - * - * @param array $data Data to validate - * @return array - * - * @throws RestException - */ - function _validate($data) - { - $myobject = array(); - foreach (MyObjectApi::$FIELDS as $field) { - if (!isset($data[$field])) - throw new RestException(400, "$field field missing"); - $myobject[$field] = $data[$field]; - } - return $myobject; - } -} diff --git a/core/boxes/README.md b/core/boxes/README.md deleted file mode 100644 index b641e71..0000000 --- a/core/boxes/README.md +++ /dev/null @@ -1 +0,0 @@ -Directory where widgets files are stored. \ No newline at end of file diff --git a/core/boxes/sendfacrecmailwidget1.php b/core/boxes/sendfacrecmailwidget1.php deleted file mode 100644 index e882322..0000000 --- a/core/boxes/sendfacrecmailwidget1.php +++ /dev/null @@ -1,211 +0,0 @@ - - * Copyright (C) 2018 Frédéric France - * Copyright (C) 2018 SuperAdmin - * - * 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 . - */ - -/** - * \file modulebuilder/template/core/boxes/sendfacrecmailwidget1.php - * \ingroup sendfacrecmail - * \brief Widget provided by sendfacrecmail - * - * Put detailed description here. - */ - -/** Includes */ -include_once DOL_DOCUMENT_ROOT . "/core/boxes/modules_boxes.php"; - -/** - * Class to manage the box - * - * Warning: for the box to be detected correctly by dolibarr, - * the filename should be the lowercase classname - */ -class sendfacrecmailwidget1 extends ModeleBoxes -{ - /** - * @var string Alphanumeric ID. Populated by the constructor. - */ - public $boxcode = "sendfacrecmailbox"; - - /** - * @var string Box icon (in configuration page) - * Automatically calls the icon named with the corresponding "object_" prefix - */ - public $boximg = "sendfacrecmail@sendfacrecmail"; - - /** - * @var string Box label (in configuration page) - */ - public $boxlabel; - - /** - * @var string[] Module dependencies - */ - public $depends = array('sendfacrecmail'); - - /** - * @var DoliDb Database handler - */ - public $db; - - /** - * @var mixed More parameters - */ - public $param; - - /** - * @var array Header informations. Usually created at runtime by loadBox(). - */ - public $info_box_head = array(); - - /** - * @var array Contents informations. Usually created at runtime by loadBox(). - */ - public $info_box_contents = array(); - - /** - * Constructor - * - * @param DoliDB $db Database handler - * @param string $param More parameters - */ - public function __construct(DoliDB $db, $param = '') - { - global $user, $conf, $langs; - $langs->load("boxes"); - $langs->load('sendfacrecmail@sendfacrecmail'); - - parent::__construct($db, $param); - - $this->boxlabel = $langs->transnoentitiesnoconv("MyWidget"); - - $this->param = $param; - - //$this->enabled = $conf->global->FEATURES_LEVEL > 0; // Condition when module is enabled or not - //$this->hidden = ! ($user->rights->sendfacrecmail->myobject->read); // Condition when module is visible by user (test on permission) - } - - /** - * Load data into info_box_contents array to show array later. Called by Dolibarr before displaying the box. - * - * @param int $max Maximum number of records to load - * @return void - */ - public function loadBox($max = 5) - { - global $langs; - - // Use configuration value for max lines count - $this->max = $max; - - //include_once DOL_DOCUMENT_ROOT . "/sendfacrecmail/class/sendfacrecmail.class.php"; - - // Populate the head at runtime - $text = $langs->trans("sendfacrecmailBoxDescription", $max); - $this->info_box_head = array( - // Title text - 'text' => $text, - // Add a link - 'sublink' => 'http://example.com', - // Sublink icon placed after the text - 'subpicto' => 'object_sendfacrecmail@sendfacrecmail', - // Sublink icon HTML alt text - 'subtext' => '', - // Sublink HTML target - 'target' => '', - // HTML class attached to the picto and link - 'subclass' => 'center', - // Limit and truncate with "…" the displayed text lenght, 0 = disabled - 'limit' => 0, - // Adds translated " (Graph)" to a hidden form value's input (?) - 'graph' => false - ); - - // Populate the contents at runtime - $this->info_box_contents = array( - 0 => array( // First line - 0 => array( // First Column - // HTML properties of the TR element. Only available on the first column. - 'tr' => 'align="left"', - // HTML properties of the TD element - 'td' => '', - - // Main text for content of cell - 'text' => 'First cell of first line', - // Link on 'text' and 'logo' elements - 'url' => 'http://example.com', - // Link's target HTML property - 'target' => '_blank', - // Fist line logo (deprecated. Include instead logo html code into text or text2, and set asis property to true to avoid HTML cleaning) - //'logo' => 'monmodule@monmodule', - // Unformatted text, added after text. Usefull to add/load javascript code - 'textnoformat' => '', - - // Main text for content of cell (other method) - //'text2' => '

Another text

', - - // Truncates 'text' element to the specified character length, 0 = disabled - 'maxlength' => 0, - // Prevents HTML cleaning (and truncation) - 'asis' => false, - // Same for 'text2' - 'asis2' => true - ), - 1 => array( // Another column - // No TR for n≠0 - 'td' => '', - 'text' => 'Second cell', - ) - ), - 1 => array( // Another line - 0 => array( // TR - 'tr' => 'align="left"', - 'text' => 'Another line' - ), - 1 => array( // TR - 'tr' => 'align="left"', - 'text' => '' - ) - ), - 2 => array( // Another line - 0 => array( // TR - 'tr' => 'align="left"', - 'text' => '' - ), - 0 => array( // TR - 'tr' => 'align="left"', - 'text' => '' - ) - ), - ); - } - - /** - * Method to show box. Called by Dolibarr eatch time it wants to display the box. - * - * @param array $head Array with properties of box title - * @param array $contents Array with properties of box lines - * @param int $nooutput No print, only return string - * @return void - */ - public function showBox($head = null, $contents = null, $nooutput = 0) - { - // You may make your own code here… - // … or use the parent's class function using the provided head and contents templates - parent::showBox($this->info_box_head, $this->info_box_contents); - } -} diff --git a/core/modules/mailings/mailinglist_sendfacrecmail_myobject.modules.php b/core/modules/mailings/mailinglist_sendfacrecmail_myobject.modules.php deleted file mode 100644 index da1a026..0000000 --- a/core/modules/mailings/mailinglist_sendfacrecmail_myobject.modules.php +++ /dev/null @@ -1,204 +0,0 @@ - - * - * This file is an example to follow to add your own email selector inside - * the Dolibarr email tool. - * Follow instructions given in README file to know what to change to build - * your own emailing list selector. - * Code that need to be changed in this file are marked by "CHANGE THIS" tag. - */ - -include_once DOL_DOCUMENT_ROOT.'/core/modules/mailings/modules_mailings.php'; -dol_include_once("/sendfacrecmail/class/myobject.class.php"); - - -/** - * mailing_mailinglist_sendfacrecmail - */ -class mailing_mailinglist_sendfacrecmail_myobject extends MailingTargets -{ - // CHANGE THIS: Put here a name not already used - var $name='mailinglist_sendfacrecmail_myobject'; - // CHANGE THIS: Put here a description of your selector module - var $desc='My object emailing target selector'; - // CHANGE THIS: Set to 1 if selector is available for admin users only - var $require_admin=0; - - var $enabled=0; - var $require_module=array(); - var $picto='sendfacrecmail@sendfacrecmail'; - - /** - * @var DoliDB Database handler. - */ - public $db; - - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - function __construct($db) - { - global $conf; - - $this->db=$db; - if (is_array($conf->modules)) - { - $this->enabled=in_array('sendfacrecmail',$conf->modules)?1:0; - } - } - - - /** - * Affiche formulaire de filtre qui apparait dans page de selection des destinataires de mailings - * - * @return string Retourne zone select - */ - function formFilter() - { - global $langs; - $langs->load("members"); - - $form=new Form($this->db); - - $arraystatus=array(1=>'Option 1', 2=>'Option 2'); - - $s=''; - $s.=$langs->trans("Status").': '; - $s.=''; - $s.='
'; - - return $s; - } - - - /** - * Renvoie url lien vers fiche de la source du destinataire du mailing - * - * @param int $id ID - * @return string Url lien - */ - function url($id) - { - return ''.img_object('',"generic").''; - } - - - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.NotCamelCaps - /** - * This is the main function that returns the array of emails - * - * @param int $mailing_id Id of emailing - * @param array $filtersarray Requete sql de selection des destinataires - * @return int <0 if error, number of emails added if ok - */ - function add_to_target($mailing_id,$filtersarray=array()) - { - // phpcs:enable - $target = array(); - $cibles = array(); - $j = 0; - - - $sql = " select rowid as id, email, firstname, lastname, plan, partner"; - $sql.= " from ".MAIN_DB_PREFIX."myobject"; - $sql.= " where email IS NOT NULL AND email != ''"; - if (! empty($_POST['filter']) && $_POST['filter'] != 'none') $sql.= " AND status = '".$this->db->escape($_POST['filter'])."'"; - $sql.= " ORDER BY email"; - - // Stocke destinataires dans cibles - $result=$this->db->query($sql); - if ($result) - { - $num = $this->db->num_rows($result); - $i = 0; - - dol_syslog("mailinglist_sendfacrecmail_myobject.modules.php: mailing ".$num." targets found"); - - $old = ''; - while ($i < $num) - { - $obj = $this->db->fetch_object($result); - if ($old <> $obj->email) - { - $cibles[$j] = array( - 'email' => $obj->email, - 'name' => $obj->lastname, - 'id' => $obj->id, - 'firstname' => $obj->firstname, - 'other' => $obj->plan.';'.$obj->partner, - 'source_url' => $this->url($obj->id), - 'source_id' => $obj->id, - 'source_type' => 'dolicloud' - ); - $old = $obj->email; - $j++; - } - - $i++; - } - } - else - { - dol_syslog($this->db->error()); - $this->error=$this->db->error(); - return -1; - } - - // You must fill the $target array with record like this - // $target[0]=array('email'=>'email_0','name'=>'name_0','firstname'=>'firstname_0'); - // ... - // $target[n]=array('email'=>'email_n','name'=>'name_n','firstname'=>'firstname_n'); - - // Example: $target[0]=array('email'=>'myemail@mydomain.com','name'=>'Doe','firstname'=>'John'); - - // ----- Your code end here ----- - - return parent::add_to_target($mailing_id, $cibles); - } - - - /** - * On the main mailing area, there is a box with statistics. - * If you want to add a line in this report you must provide an - * array of SQL request that returns two field: - * One called "label", One called "nb". - * - * @return array - */ - function getSqlArrayForStats() - { - // CHANGE THIS: Optionnal - - //var $statssql=array(); - //$this->statssql[0]="SELECT field1 as label, count(distinct(email)) as nb FROM mytable WHERE email IS NOT NULL"; - - return array(); - } - - - /** - * Return here number of distinct emails returned by your selector. - * For example if this selector is used to extract 500 different - * emails from a text file, this function must return 500. - * - * @param string $filter Filter - * @param string $option Options - * @return int Nb of recipients or -1 if KO - */ - function getNbOfRecipients($filter=1,$option='') - { - $a=parent::getNbOfRecipients("select count(distinct(email)) as nb from ".MAIN_DB_PREFIX."myobject as p where email IS NOT NULL AND email != ''"); - - if ($a < 0) return -1; - return $a; - } -} diff --git a/core/modules/modsendfacrecmail.class.php b/core/modules/modsendfacrecmail.class.php index 5afba09..baeba87 100644 --- a/core/modules/modsendfacrecmail.class.php +++ b/core/modules/modsendfacrecmail.class.php @@ -46,7 +46,7 @@ class modsendfacrecmail extends DolibarrModules // Id for module (must be unique). // Use here a free id (See in Home -> System information -> Dolibarr for list of used modules id). - $this->numero = 500000; // TODO Go on page https://wiki.dolibarr.org/index.php/List_of_modules_id to reserve id number for your module + $this->numero = 500331; // TODO Go on page https://wiki.dolibarr.org/index.php/List_of_modules_id to reserve id number for your module // Key text used to identify module (for permissions, menus, etc...) $this->rights_class = 'sendfacrecmail'; @@ -61,15 +61,15 @@ class modsendfacrecmail extends DolibarrModules // Module label (no space allowed), used if translation string 'ModulesendfacrecmailName' not found (sendfacrecmail is name of module). $this->name = preg_replace('/^mod/i','',get_class($this)); // Module description, used if translation string 'ModulesendfacrecmailDesc' not found (sendfacrecmail is name of module). - $this->description = "sendfacrecmailDescription"; + $this->description = "Send generated invoice by email"; // Used only if file README.md and README-LL.md not found. - $this->descriptionlong = "sendfacrecmail description (Long)"; + $this->descriptionlong = "This module hooks onto the recurring invoice generation to send automatically send the generated PDF."; - $this->editor_name = 'Editor name'; - $this->editor_url = 'https://www.example.com'; + $this->editor_name = 'Bugness'; + $this->editor_url = 'https://www.bugness.org'; // Possible values for version are: 'development', 'experimental', 'dolibarr', 'dolibarr_deprecated' or a version string like 'x.y.z' - $this->version = '1.0'; + $this->version = '0.1'; //Url to the file with your last numberversion of this module //$this->url_last_version = 'http://www.example.com/versionmodule.txt'; @@ -82,17 +82,17 @@ class modsendfacrecmail extends DolibarrModules // Define some features supported by module (triggers, login, substitutions, menus, css, etc...) $this->module_parts = array( - 'triggers' => 1, // Set this to 1 if module has its own trigger directory (core/triggers) + 'triggers' => 0, // Set this to 1 if module has its own trigger directory (core/triggers) 'login' => 0, // Set this to 1 if module has its own login method file (core/login) - 'substitutions' => 1, // Set this to 1 if module has its own substitution function file (core/substitutions) + 'substitutions' => 0, // Set this to 1 if module has its own substitution function file (core/substitutions) 'menus' => 0, // Set this to 1 if module has its own menus handler directory (core/menus) 'theme' => 0, // Set this to 1 if module has its own theme directory (theme) - 'tpl' => 0, // Set this to 1 if module overwrite template dir (core/tpl) + 'tpl' => 0, // Set this to 1 if module overwrite template dir (core/tpl) 'barcode' => 0, // Set this to 1 if module has its own barcode directory (core/modules/barcode) 'models' => 0, // Set this to 1 if module has its own models directory (core/modules/xxx) - 'css' => array('/sendfacrecmail/css/sendfacrecmail.css.php'), // Set this to relative path of css file if module has its own css file - 'js' => array('/sendfacrecmail/js/sendfacrecmail.js.php'), // Set this to relative path of js file if module must load a js on all pages - 'hooks' => array('data'=>array('hookcontext1','hookcontext2'), 'entity'=>'0'), // Set here all hooks context managed by module. To find available hook context, make a "grep -r '>initHooks(' *" on source code. You can also set hook context 'all' + //'css' => array('/sendfacrecmail/css/sendfacrecmail.css.php'), // Set this to relative path of css file if module has its own css file + //'js' => array('/sendfacrecmail/js/sendfacrecmail.js.php'), // Set this to relative path of js file if module must load a js on all pages + 'hooks' => array('data'=>array('createrecurringinvoices'), 'entity'=>'0'), // Set here all hooks context managed by module. To find available hook context, make a "grep -r '>initHooks(' *" on source code. You can also set hook context 'all' 'moduleforexternal' => 0 // Set this to 1 if feature of module are opened to external users ); @@ -105,12 +105,12 @@ class modsendfacrecmail extends DolibarrModules // Dependencies $this->hidden = false; // A condition to hide module - $this->depends = array(); // List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...) + $this->depends = array('facture'); // List of module class names as string that must be enabled if this module is enabled. Example: array('always1'=>'modModuleToEnable1','always2'=>'modModuleToEnable2', 'FR1'=>'modModuleToEnableFR'...) $this->requiredby = array(); // List of module class names as string to disable if this one is disabled. Example: array('modModuleToDisable1', ...) $this->conflictwith = array(); // List of module class names as string this module is in conflict with. Example: array('modModuleToDisable1', ...) $this->langfiles = array("sendfacrecmail@sendfacrecmail"); //$this->phpmin = array(5,4); // Minimum version of PHP required by module - $this->need_dolibarr_version = array(4,0); // Minimum version of Dolibarr required by module + $this->need_dolibarr_version = array(9,0); // Minimum version of Dolibarr required by module $this->warnings_activation = array(); // Warning to show when we activate module. array('always'='text') or array('FR'='textfr','ES'='textes'...) $this->warnings_activation_ext = array(); // Warning to show when we activate an external module. array('always'='text') or array('FR'='textfr','ES'='textes'...) //$this->automatic_activation = array('FR'=>'sendfacrecmailWasAutomaticallyActivatedBecauseOfYourCountryChoice'); @@ -122,7 +122,7 @@ class modsendfacrecmail extends DolibarrModules // 1=>array('SENDFACRECMAIL_MYNEWCONST2','chaine','myvalue','This is another constant to add',0, 'current', 1) // ); $this->const = array( - 1=>array('SENDFACRECMAIL_MYCONSTANT', 'chaine', 'avalue', 'This is a constant to add', 1, 'allentities', 1) + //1=>array('SENDFACRECMAIL_MYCONSTANT', 'chaine', 'avalue', 'This is a constant to add', 1, 'allentities', 1) ); // Some keys to add into the overwriting translation tables @@ -188,7 +188,7 @@ class modsendfacrecmail extends DolibarrModules // Boxes/Widgets // Add here list of php file(s) stored in sendfacrecmail/core/boxes that contains class to show a widget. $this->boxes = array( - 0=>array('file'=>'sendfacrecmailwidget1.php@sendfacrecmail','note'=>'Widget provided by sendfacrecmail','enabledbydefaulton'=>'Home'), + //0=>array('file'=>'sendfacrecmailwidget1.php@sendfacrecmail','note'=>'Widget provided by sendfacrecmail','enabledbydefaulton'=>'Home'), //1=>array('file'=>'sendfacrecmailwidget2.php@sendfacrecmail','note'=>'Widget provided by sendfacrecmail'), //2=>array('file'=>'sendfacrecmailwidget3.php@sendfacrecmail','note'=>'Widget provided by sendfacrecmail') ); @@ -197,7 +197,7 @@ class modsendfacrecmail extends DolibarrModules // Cronjobs (List of cron jobs entries to add when module is enabled) // unit_frequency must be 60 for minute, 3600 for hour, 86400 for day, 604800 for week $this->cronjobs = array( - 0=>array('label'=>'MyJob label', 'jobtype'=>'method', 'class'=>'/sendfacrecmail/class/myobject.class.php', 'objectname'=>'MyObject', 'method'=>'doScheduledJob', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>2, 'unitfrequency'=>3600, 'status'=>0, 'test'=>'$conf->sendfacrecmail->enabled', 'priority'=>50) + //0=>array('label'=>'MyJob label', 'jobtype'=>'method', 'class'=>'/sendfacrecmail/class/myobject.class.php', 'objectname'=>'MyObject', 'method'=>'doScheduledJob', 'parameters'=>'', 'comment'=>'Comment', 'frequency'=>2, 'unitfrequency'=>3600, 'status'=>0, 'test'=>'$conf->sendfacrecmail->enabled', 'priority'=>50) ); // Example: $this->cronjobs=array(0=>array('label'=>'My label', 'jobtype'=>'method', 'class'=>'/dir/class/file.class.php', 'objectname'=>'MyClass', 'method'=>'myMethod', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>2, 'unitfrequency'=>3600, 'status'=>0, 'test'=>'$conf->sendfacrecmail->enabled', 'priority'=>50), // 1=>array('label'=>'My label', 'jobtype'=>'command', 'command'=>'', 'parameters'=>'param1, param2', 'comment'=>'Comment', 'frequency'=>1, 'unitfrequency'=>3600*24, 'status'=>0, 'test'=>'$conf->sendfacrecmail->enabled', 'priority'=>50) @@ -206,7 +206,7 @@ class modsendfacrecmail extends DolibarrModules // Permissions $this->rights = array(); // Permission array used by this module - + /* $r=0; $this->rights[$r][0] = $this->numero + $r; // Permission id (must not be already used) $this->rights[$r][1] = 'Read myobject of sendfacrecmail'; // Permission label @@ -227,6 +227,7 @@ class modsendfacrecmail extends DolibarrModules $this->rights[$r][3] = 1; // Permission by default for new user (0/1) $this->rights[$r][4] = 'delete'; // In php code, permission will be checked by test if ($user->rights->sendfacrecmail->level1->level2) $this->rights[$r][5] = ''; // In php code, permission will be checked by test if ($user->rights->sendfacrecmail->level1->level2) + */ // Main menu entries @@ -236,6 +237,7 @@ class modsendfacrecmail extends DolibarrModules // Add here entries to declare new menus /* BEGIN MODULEBUILDER TOPMENU */ + /* $this->menu[$r++]=array('fk_menu'=>'', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode 'type'=>'top', // This is a Top menu entry 'titre'=>'sendfacrecmail', @@ -248,6 +250,7 @@ class modsendfacrecmail extends DolibarrModules 'perms'=>'1', // Use 'perms'=>'$user->rights->sendfacrecmail->level1->level2' if you want your menu with a permission rules 'target'=>'', 'user'=>2); // 0=Menu for internal users, 1=external users, 2=both + */ /* END MODULEBUILDER TOPMENU */ diff --git a/core/tpl/mytemplate.tpl.php b/core/tpl/mytemplate.tpl.php deleted file mode 100644 index 8b0eb66..0000000 --- a/core/tpl/mytemplate.tpl.php +++ /dev/null @@ -1,35 +0,0 @@ -. - */ - -/** - * \file core/tpl/mytemplate.tpl.php - * \ingroup sendfacrecmail - * \brief Example template. - * - * Put detailed description here. - */ - -// Protection to avoid direct call of template -if (empty($conf) || ! is_object($conf)) -{ - print "Error, template page can't be called as URL"; - exit; -} - - -/** Your code here. */ -echo "Hello world!"; diff --git a/core/triggers/README.md b/core/triggers/README.md deleted file mode 100644 index 38d1b1d..0000000 --- a/core/triggers/README.md +++ /dev/null @@ -1 +0,0 @@ -Directory where triggers files are stored. \ No newline at end of file diff --git a/core/triggers/interface_99_modsendfacrecmail_sendfacrecmailTriggers.class.php b/core/triggers/interface_99_modsendfacrecmail_sendfacrecmailTriggers.class.php deleted file mode 100644 index 702c45a..0000000 --- a/core/triggers/interface_99_modsendfacrecmail_sendfacrecmailTriggers.class.php +++ /dev/null @@ -1,313 +0,0 @@ -. - */ - -/** - * \file core/triggers/interface_99_modsendfacrecmail_sendfacrecmailTriggers.class.php - * \ingroup sendfacrecmail - * \brief Example trigger. - * - * Put detailed description here. - * - * \remarks You can create other triggers by copying this one. - * - File name should be either: - * - interface_99_modsendfacrecmail_MyTrigger.class.php - * - interface_99_all_MyTrigger.class.php - * - The file must stay in core/triggers - * - The class name must be InterfaceMytrigger - * - The constructor method must be named InterfaceMytrigger - * - The name property name must be MyTrigger - */ - -require_once DOL_DOCUMENT_ROOT.'/core/triggers/dolibarrtriggers.class.php'; - - -/** - * Class of triggers for sendfacrecmail module - */ -class InterfacesendfacrecmailTriggers extends DolibarrTriggers -{ - /** - * @var DoliDB Database handler - */ - protected $db; - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - public function __construct($db) - { - $this->db = $db; - - $this->name = preg_replace('/^Interface/i', '', get_class($this)); - $this->family = "demo"; - $this->description = "sendfacrecmail triggers."; - // 'development', 'experimental', 'dolibarr' or version - $this->version = 'development'; - $this->picto = 'sendfacrecmail@sendfacrecmail'; - } - - /** - * Trigger name - * - * @return string Name of trigger file - */ - public function getName() - { - return $this->name; - } - - /** - * Trigger description - * - * @return string Description of trigger file - */ - public function getDesc() - { - return $this->description; - } - - - /** - * Function called when a Dolibarrr business event is done. - * All functions "runTrigger" are triggered if file - * is inside directory core/triggers - * - * @param string $action Event action code - * @param CommonObject $object Object - * @param User $user Object user - * @param Translate $langs Object langs - * @param Conf $conf Object conf - * @return int <0 if KO, 0 if no triggered ran, >0 if OK - */ - public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf) - { - if (empty($conf->sendfacrecmail->enabled)) return 0; // Module not active, we do nothing - - // Put here code you want to execute when a Dolibarr business events occurs. - // Data and type of action are stored into $object and $action - - switch ($action) { - - // Users - //case 'USER_CREATE': - //case 'USER_MODIFY': - //case 'USER_NEW_PASSWORD': - //case 'USER_ENABLEDISABLE': - //case 'USER_DELETE': - //case 'USER_SETINGROUP': - //case 'USER_REMOVEFROMGROUP': - - // Actions - //case 'ACTION_MODIFY': - //case 'ACTION_CREATE': - //case 'ACTION_DELETE': - - // Groups - //case 'GROUP_CREATE': - //case 'GROUP_MODIFY': - //case 'GROUP_DELETE': - - // Companies - //case 'COMPANY_CREATE': - //case 'COMPANY_MODIFY': - //case 'COMPANY_DELETE': - - // Contacts - //case 'CONTACT_CREATE': - //case 'CONTACT_MODIFY': - //case 'CONTACT_DELETE': - //case 'CONTACT_ENABLEDISABLE': - - // Products - //case 'PRODUCT_CREATE': - //case 'PRODUCT_MODIFY': - //case 'PRODUCT_DELETE': - //case 'PRODUCT_PRICE_MODIFY': - //case 'PRODUCT_SET_MULTILANGS': - //case 'PRODUCT_DEL_MULTILANGS': - - //Stock mouvement - //case 'STOCK_MOVEMENT': - - //MYECMDIR - //case 'MYECMDIR_CREATE': - //case 'MYECMDIR_MODIFY': - //case 'MYECMDIR_DELETE': - - // Customer orders - //case 'ORDER_CREATE': - //case 'ORDER_MODIFY': - //case 'ORDER_VALIDATE': - //case 'ORDER_DELETE': - //case 'ORDER_CANCEL': - //case 'ORDER_SENTBYMAIL': - //case 'ORDER_CLASSIFY_BILLED': - //case 'ORDER_SETDRAFT': - //case 'LINEORDER_INSERT': - //case 'LINEORDER_UPDATE': - //case 'LINEORDER_DELETE': - - // Supplier orders - //case 'ORDER_SUPPLIER_CREATE': - //case 'ORDER_SUPPLIER_MODIFY': - //case 'ORDER_SUPPLIER_VALIDATE': - //case 'ORDER_SUPPLIER_DELETE': - //case 'ORDER_SUPPLIER_APPROVE': - //case 'ORDER_SUPPLIER_REFUSE': - //case 'ORDER_SUPPLIER_CANCEL': - //case 'ORDER_SUPPLIER_SENTBYMAIL': - //case 'ORDER_SUPPLIER_DISPATCH': - //case 'LINEORDER_SUPPLIER_DISPATCH': - //case 'LINEORDER_SUPPLIER_CREATE': - //case 'LINEORDER_SUPPLIER_UPDATE': - //case 'LINEORDER_SUPPLIER_DELETE': - - // Proposals - //case 'PROPAL_CREATE': - //case 'PROPAL_MODIFY': - //case 'PROPAL_VALIDATE': - //case 'PROPAL_SENTBYMAIL': - //case 'PROPAL_CLOSE_SIGNED': - //case 'PROPAL_CLOSE_REFUSED': - //case 'PROPAL_DELETE': - //case 'LINEPROPAL_INSERT': - //case 'LINEPROPAL_UPDATE': - //case 'LINEPROPAL_DELETE': - - // SupplierProposal - //case 'SUPPLIER_PROPOSAL_CREATE': - //case 'SUPPLIER_PROPOSAL_MODIFY': - //case 'SUPPLIER_PROPOSAL_VALIDATE': - //case 'SUPPLIER_PROPOSAL_SENTBYMAIL': - //case 'SUPPLIER_PROPOSAL_CLOSE_SIGNED': - //case 'SUPPLIER_PROPOSAL_CLOSE_REFUSED': - //case 'SUPPLIER_PROPOSAL_DELETE': - //case 'LINESUPPLIER_PROPOSAL_INSERT': - //case 'LINESUPPLIER_PROPOSAL_UPDATE': - //case 'LINESUPPLIER_PROPOSAL_DELETE': - - // Contracts - //case 'CONTRACT_CREATE': - //case 'CONTRACT_MODIFY': - //case 'CONTRACT_ACTIVATE': - //case 'CONTRACT_CANCEL': - //case 'CONTRACT_CLOSE': - //case 'CONTRACT_DELETE': - //case 'LINECONTRACT_INSERT': - //case 'LINECONTRACT_UPDATE': - //case 'LINECONTRACT_DELETE': - - // Bills - //case 'BILL_CREATE': - //case 'BILL_MODIFY': - //case 'BILL_VALIDATE': - //case 'BILL_UNVALIDATE': - //case 'BILL_SENTBYMAIL': - //case 'BILL_CANCEL': - //case 'BILL_DELETE': - //case 'BILL_PAYED': - //case 'LINEBILL_INSERT': - //case 'LINEBILL_UPDATE': - //case 'LINEBILL_DELETE': - - //Supplier Bill - //case 'BILL_SUPPLIER_CREATE': - //case 'BILL_SUPPLIER_UPDATE': - //case 'BILL_SUPPLIER_DELETE': - //case 'BILL_SUPPLIER_PAYED': - //case 'BILL_SUPPLIER_UNPAYED': - //case 'BILL_SUPPLIER_VALIDATE': - //case 'BILL_SUPPLIER_UNVALIDATE': - //case 'LINEBILL_SUPPLIER_CREATE': - //case 'LINEBILL_SUPPLIER_UPDATE': - //case 'LINEBILL_SUPPLIER_DELETE': - - // Payments - //case 'PAYMENT_CUSTOMER_CREATE': - //case 'PAYMENT_SUPPLIER_CREATE': - //case 'PAYMENT_ADD_TO_BANK': - //case 'PAYMENT_DELETE': - - // Online - //case 'PAYMENT_PAYBOX_OK': - //case 'PAYMENT_PAYPAL_OK': - //case 'PAYMENT_STRIPE_OK': - - // Donation - //case 'DON_CREATE': - //case 'DON_UPDATE': - //case 'DON_DELETE': - - // Interventions - //case 'FICHINTER_CREATE': - //case 'FICHINTER_MODIFY': - //case 'FICHINTER_VALIDATE': - //case 'FICHINTER_DELETE': - //case 'LINEFICHINTER_CREATE': - //case 'LINEFICHINTER_UPDATE': - //case 'LINEFICHINTER_DELETE': - - // Members - //case 'MEMBER_CREATE': - //case 'MEMBER_VALIDATE': - //case 'MEMBER_SUBSCRIPTION': - //case 'MEMBER_MODIFY': - //case 'MEMBER_NEW_PASSWORD': - //case 'MEMBER_RESILIATE': - //case 'MEMBER_DELETE': - - // Categories - //case 'CATEGORY_CREATE': - //case 'CATEGORY_MODIFY': - //case 'CATEGORY_DELETE': - //case 'CATEGORY_SET_MULTILANGS': - - // Projects - //case 'PROJECT_CREATE': - //case 'PROJECT_MODIFY': - //case 'PROJECT_DELETE': - - // Project tasks - //case 'TASK_CREATE': - //case 'TASK_MODIFY': - //case 'TASK_DELETE': - - // Task time spent - //case 'TASK_TIMESPENT_CREATE': - //case 'TASK_TIMESPENT_MODIFY': - //case 'TASK_TIMESPENT_DELETE': - - // Shipping - //case 'SHIPPING_CREATE': - //case 'SHIPPING_MODIFY': - //case 'SHIPPING_VALIDATE': - //case 'SHIPPING_SENTBYMAIL': - //case 'SHIPPING_BILLED': - //case 'SHIPPING_CLOSED': - //case 'SHIPPING_REOPEN': - //case 'SHIPPING_DELETE': - // break; - default: - dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - break; - } - - return 0; - } -} diff --git a/css/sendfacrecmail.css.php b/css/sendfacrecmail.css.php deleted file mode 100644 index 159d21f..0000000 --- a/css/sendfacrecmail.css.php +++ /dev/null @@ -1,74 +0,0 @@ -. - */ - -/** - * \file sendfacrecmail/css/sendfacrecmail.css.php - * \ingroup sendfacrecmail - * \brief CSS file for module sendfacrecmail. - */ - -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled because need to load personalized language -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled. Language code is found on url. -if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled because need to do translations -if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK',1); -if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1); -if (! defined('NOLOGIN')) define('NOLOGIN',1); // File must be accessed by logon page so without login -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); // We need top menu content -if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); -if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); - -// Load Dolibarr environment -$res=0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (! $res && ! empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) $res=@include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp=empty($_SERVER['SCRIPT_FILENAME'])?'':$_SERVER['SCRIPT_FILENAME'];$tmp2=realpath(__FILE__); $i=strlen($tmp)-1; $j=strlen($tmp2)-1; -while($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i]==$tmp2[$j]) { $i--; $j--; } -if (! $res && $i > 0 && file_exists(substr($tmp, 0, ($i+1))."/main.inc.php")) $res=@include substr($tmp, 0, ($i+1))."/main.inc.php"; -if (! $res && $i > 0 && file_exists(substr($tmp, 0, ($i+1))."/../main.inc.php")) $res=@include substr($tmp, 0, ($i+1))."/../main.inc.php"; -// Try main.inc.php using relative path -if (! $res && file_exists("../../main.inc.php")) $res=@include "../../main.inc.php"; -if (! $res && file_exists("../../../main.inc.php")) $res=@include "../../../main.inc.php"; -if (! $res) die("Include of main fails"); - -require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; - -session_cache_limiter(false); - -// Load user to have $user->conf loaded (not done by default here because of NOLOGIN constant defined) and load permission if we need to use them in CSS -/*if (empty($user->id) && ! empty($_SESSION['dol_login'])) -{ - $user->fetch('',$_SESSION['dol_login']); - $user->getrights(); -}*/ - - -// Define css type -header('Content-type: text/css'); -// Important: Following code is to cache this file to avoid page request by browser at each Dolibarr page access. -// You can use CTRL+F5 to refresh your browser cache. -if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); -else header('Cache-Control: no-cache'); - -?> - -.myclasscss { - /* ... */ -} - - diff --git a/js/sendfacrecmail.js.php b/js/sendfacrecmail.js.php deleted file mode 100644 index e0fab92..0000000 --- a/js/sendfacrecmail.js.php +++ /dev/null @@ -1,62 +0,0 @@ -. - * - * Library javascript to enable Browser notifications - */ - -if (!defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); -if (!defined('NOREQUIREDB')) define('NOREQUIREDB','1'); -if (!defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); -if (!defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); -if (!defined('NOCSRFCHECK')) define('NOCSRFCHECK', 1); -if (!defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', 1); -if (!defined('NOLOGIN')) define('NOLOGIN', 1); -if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', 1); -if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', 1); -if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); - - -/** - * \file sendfacrecmail/js/sendfacrecmail.js.php - * \ingroup sendfacrecmail - * \brief JavaScript file for module sendfacrecmail. - */ - -// Load Dolibarr environment -$res=0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (! $res && ! empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) $res=@include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp=empty($_SERVER['SCRIPT_FILENAME'])?'':$_SERVER['SCRIPT_FILENAME'];$tmp2=realpath(__FILE__); $i=strlen($tmp)-1; $j=strlen($tmp2)-1; -while($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i]==$tmp2[$j]) { $i--; $j--; } -if (! $res && $i > 0 && file_exists(substr($tmp, 0, ($i+1))."/main.inc.php")) $res=@include substr($tmp, 0, ($i+1))."/main.inc.php"; -if (! $res && $i > 0 && file_exists(substr($tmp, 0, ($i+1))."/../main.inc.php")) $res=@include substr($tmp, 0, ($i+1))."/../main.inc.php"; -// Try main.inc.php using relative path -if (! $res && file_exists("../../main.inc.php")) $res=@include "../../main.inc.php"; -if (! $res && file_exists("../../../main.inc.php")) $res=@include "../../../main.inc.php"; -if (! $res) die("Include of main fails"); - -// Define js type -header('Content-Type: application/javascript'); -// Important: Following code is to cache this file to avoid page request by browser at each Dolibarr page access. -// You can use CTRL+F5 to refresh your browser cache. -if (empty($dolibarr_nocache)) header('Cache-Control: max-age=3600, public, must-revalidate'); -else header('Cache-Control: no-cache'); -?> - -/* Javascript library of module sendfacrecmail */ - - diff --git a/lib/sendfacrecmail_myobject.lib.php b/lib/sendfacrecmail_myobject.lib.php deleted file mode 100644 index 2d93588..0000000 --- a/lib/sendfacrecmail_myobject.lib.php +++ /dev/null @@ -1,83 +0,0 @@ -. - */ - -/** - * \file sendfacrecmail/lib/sendfacrecmail_myobject.lib.php - * \ingroup sendfacrecmail - * \brief Library files with common functions for MyObject - */ - -/** - * Prepare array of tabs for MyObject - * - * @param MyObject $object MyObject - * @return array Array of tabs - */ -function myobjectPrepareHead($object) -{ - global $db, $langs, $conf; - - $langs->load("sendfacrecmail@sendfacrecmail"); - - $h = 0; - $head = array(); - - $head[$h][0] = dol_buildpath("/sendfacrecmail/myobject_card.php", 1).'?id='.$object->id; - $head[$h][1] = $langs->trans("Card"); - $head[$h][2] = 'card'; - $h++; - - if (isset($object->fields['note_public']) || isset($object->fields['note_private'])) - { - $nbNote = 0; - if (!empty($object->note_private)) $nbNote++; - if (!empty($object->note_public)) $nbNote++; - $head[$h][0] = dol_buildpath('/sendfacrecmail/myobject_note.php', 1).'?id='.$object->id; - $head[$h][1] = $langs->trans('Notes'); - if ($nbNote > 0) $head[$h][1].= ' '.$nbNote.''; - $head[$h][2] = 'note'; - $h++; - } - - require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - require_once DOL_DOCUMENT_ROOT.'/core/class/link.class.php'; - $upload_dir = $conf->sendfacrecmail->dir_output . "/myobject/" . dol_sanitizeFileName($object->ref); - $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview.*\.png)$')); - $nbLinks=Link::count($db, $object->element, $object->id); - $head[$h][0] = dol_buildpath("/sendfacrecmail/myobject_document.php", 1).'?id='.$object->id; - $head[$h][1] = $langs->trans('Documents'); - if (($nbFiles+$nbLinks) > 0) $head[$h][1].= ' '.($nbFiles+$nbLinks).''; - $head[$h][2] = 'document'; - $h++; - - $head[$h][0] = dol_buildpath("/sendfacrecmail/myobject_agenda.php", 1).'?id='.$object->id; - $head[$h][1] = $langs->trans("Events"); - $head[$h][2] = 'agenda'; - $h++; - - // Show more tabs from modules - // Entries must be declared in modules descriptor with line - //$this->tabs = array( - // 'entity:+tabname:Title:@sendfacrecmail:/sendfacrecmail/mypage.php?id=__ID__' - //); // to add new tab - //$this->tabs = array( - // 'entity:-tabname:Title:@sendfacrecmail:/sendfacrecmail/mypage.php?id=__ID__' - //); // to remove a tab - complete_head_from_modules($conf, $langs, $object, $head, $h, 'myobject@sendfacrecmail'); - - return $head; -} diff --git a/sendfacrecmailindex.php b/sendfacrecmailindex.php deleted file mode 100644 index 3cdf7f8..0000000 --- a/sendfacrecmailindex.php +++ /dev/null @@ -1,238 +0,0 @@ - - * Copyright (C) 2004-2015 Laurent Destailleur - * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2015 Jean-François Ferry - * - * 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 . - */ - -/** - * \file htdocs/sendfacrecmail/template/sendfacrecmailindex.php - * \ingroup sendfacrecmail - * \brief Home page of sendfacrecmail top menu - */ - -// Load Dolibarr environment -$res=0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (! $res && ! empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) $res=@include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp=empty($_SERVER['SCRIPT_FILENAME'])?'':$_SERVER['SCRIPT_FILENAME'];$tmp2=realpath(__FILE__); $i=strlen($tmp)-1; $j=strlen($tmp2)-1; -while($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i]==$tmp2[$j]) { $i--; $j--; } -if (! $res && $i > 0 && file_exists(substr($tmp, 0, ($i+1))."/main.inc.php")) $res=@include substr($tmp, 0, ($i+1))."/main.inc.php"; -if (! $res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i+1)))."/main.inc.php")) $res=@include dirname(substr($tmp, 0, ($i+1)))."/main.inc.php"; -// Try main.inc.php using relative path -if (! $res && file_exists("../main.inc.php")) $res=@include "../main.inc.php"; -if (! $res && file_exists("../../main.inc.php")) $res=@include "../../main.inc.php"; -if (! $res && file_exists("../../../main.inc.php")) $res=@include "../../../main.inc.php"; -if (! $res) die("Include of main fails"); - -require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; - -// Load translation files required by the page -$langs->loadLangs(array("sendfacrecmail@sendfacrecmail")); - -$action=GETPOST('action', 'alpha'); - - -// Securite acces client -if (! $user->rights->sendfacrecmail->read) accessforbidden(); -$socid=GETPOST('socid','int'); -if (isset($user->societe_id) && $user->societe_id > 0) -{ - $action = ''; - $socid = $user->societe_id; -} - -$max=5; -$now=dol_now(); - - -/* - * Actions - */ - -// None - - -/* - * View - */ - -$form = new Form($db); -$formfile = new FormFile($db); - -llxHeader("",$langs->trans("sendfacrecmailArea")); - -print load_fiche_titre($langs->trans("sendfacrecmailArea"),'','sendfacrecmail.png@sendfacrecmail'); - -print '
'; - - -/* BEGIN MODULEBUILDER DRAFT MYOBJECT -// Draft MyObject -if (! empty($conf->sendfacrecmail->enabled) && $user->rights->sendfacrecmail->read) -{ - $langs->load("orders"); - - $sql = "SELECT c.rowid, c.ref, c.ref_client, c.total_ht, c.tva as total_tva, c.total_ttc, s.rowid as socid, s.nom as name, s.client, s.canvas"; - $sql.= ", s.code_client"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande as c"; - $sql.= ", ".MAIN_DB_PREFIX."societe as s"; - if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE c.fk_soc = s.rowid"; - $sql.= " AND c.fk_statut = 0"; - $sql.= " AND c.entity IN (".getEntity('commande').")"; - if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($socid) $sql.= " AND c.fk_soc = ".$socid; - - $resql = $db->query($sql); - if ($resql) - { - $total = 0; - $num = $db->num_rows($resql); - - print ''; - print ''; - print ''; - - $var = true; - if ($num > 0) - { - $i = 0; - while ($i < $num) - { - - $obj = $db->fetch_object($resql); - print ''; - print ''; - print ''; - $i++; - $total += $obj->total_ttc; - } - if ($total>0) - { - - print '"; - } - } - else - { - - print ''; - } - print "
'.$langs->trans("DraftOrders").($num?' '.$num.'':'').'
'; - $orderstatic->id=$obj->rowid; - $orderstatic->ref=$obj->ref; - $orderstatic->ref_client=$obj->ref_client; - $orderstatic->total_ht = $obj->total_ht; - $orderstatic->total_tva = $obj->total_tva; - $orderstatic->total_ttc = $obj->total_ttc; - print $orderstatic->getNomUrl(1); - print ''; - $companystatic->id=$obj->socid; - $companystatic->name=$obj->name; - $companystatic->client=$obj->client; - $companystatic->code_client = $obj->code_client; - $companystatic->code_fournisseur = $obj->code_fournisseur; - $companystatic->canvas=$obj->canvas; - print $companystatic->getNomUrl(1,'customer',16); - print ''.price($obj->total_ttc).'
'.$langs->trans("Total").''.price($total)."
'.$langs->trans("NoOrder").'

"; - - $db->free($resql); - } - else - { - dol_print_error($db); - } -} -END MODULEBUILDER DRAFT MYOBJECT */ - - -print '
'; - - -$NBMAX=3; -$max=3; - -/* BEGIN MODULEBUILDER LASTMODIFIED MYOBJECT -// Last modified myobject -if (! empty($conf->sendfacrecmail->enabled) && $user->rights->sendfacrecmail->read) -{ - $sql = "SELECT s.rowid, s.nom as name, s.client, s.datec, s.tms, s.canvas"; - $sql.= ", s.code_client"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; - $sql.= " WHERE s.client IN (1, 2, 3)"; - $sql.= " AND s.entity IN (".getEntity($companystatic->element).")"; - if (! $user->rights->societe->client->voir && ! $socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; - if ($socid) $sql.= " AND s.rowid = $socid"; - $sql .= " ORDER BY s.tms DESC"; - $sql .= $db->plimit($max, 0); - - $resql = $db->query($sql); - if ($resql) - { - $num = $db->num_rows($resql); - $i = 0; - - print ''; - print ''; - print ''; - print ''; - print ''; - if ($num) - { - while ($i < $num) - { - $objp = $db->fetch_object($resql); - $companystatic->id=$objp->rowid; - $companystatic->name=$objp->name; - $companystatic->client=$objp->client; - $companystatic->code_client = $objp->code_client; - $companystatic->code_fournisseur = $objp->code_fournisseur; - $companystatic->canvas=$objp->canvas; - print ''; - print ''; - print '"; - print '"; - print ''; - $i++; - - - } - - $db->free($resql); - } - else - { - print ''; - } - print "
'; - if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print $langs->trans("BoxTitleLastCustomersOrProspects",$max); - else if (! empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print $langs->trans("BoxTitleLastModifiedProspects",$max); - else print $langs->trans("BoxTitleLastModifiedCustomers",$max); - print ''.$langs->trans("DateModificationShort").'
'.$companystatic->getNomUrl(1,'customer',48).''; - print $companystatic->getLibCustProspStatut(); - print "'.dol_print_date($db->jdate($objp->tms),'day')."
'.$langs->trans("None").'

"; - } -} -*/ - -print '
'; - -// End of page -llxFooter(); -$db->close(); diff --git a/sql/data.sql b/sql/data.sql deleted file mode 100644 index 6deae42..0000000 --- a/sql/data.sql +++ /dev/null @@ -1,18 +0,0 @@ --- Copyright (C) 2018 SuperAdmin --- --- 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 . - -INSERT INTO llx_sendfacrecmail_myobject VALUES ( - 1, 1, 'mydata' -); diff --git a/sql/llx_sendfacrecmail_myobject.key.sql b/sql/llx_sendfacrecmail_myobject.key.sql deleted file mode 100644 index 2adf870..0000000 --- a/sql/llx_sendfacrecmail_myobject.key.sql +++ /dev/null @@ -1,24 +0,0 @@ --- Copyright (C) 2018 SuperAdmin --- --- 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/. - - --- BEGIN MODULEBUILDER INDEXES -ALTER TABLE llx_sendfacrecmail_myobject ADD INDEX idx_fieldobject (fieldobject); --- END MODULEBUILDER INDEXES - ---ALTER TABLE llx_sendfacrecmail_myobject ADD UNIQUE INDEX uk_sendfacrecmail_myobject_fieldxy(fieldx, fieldy); - ---ALTER TABLE llx_sendfacrecmail_myobject ADD CONSTRAINT llx_sendfacrecmail_myobject_fk_field FOREIGN KEY (fk_field) REFERENCES llx_sendfacrecmail_myotherobject(rowid); - diff --git a/sql/llx_sendfacrecmail_myobject.sql b/sql/llx_sendfacrecmail_myobject.sql deleted file mode 100644 index 3fd9c91..0000000 --- a/sql/llx_sendfacrecmail_myobject.sql +++ /dev/null @@ -1,28 +0,0 @@ --- Copyright (C) 2018 SuperAdmin --- --- 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/. - - -CREATE TABLE llx_sendfacrecmail_myobject( - -- BEGIN MODULEBUILDER FIELDS - rowid INTEGER AUTO_INCREMENT PRIMARY KEY, - entity INTEGER DEFAULT 1 NOT NULL, - label VARCHAR(255), - qty INTEGER, - status INTEGER, - date_creation DATETIME NOT NULL, - tms TIMESTAMP NOT NULL, - import_key VARCHAR(14) - -- END MODULEBUILDER FIELDS -) ENGINE=innodb; \ No newline at end of file diff --git a/sql/llx_sendfacrecmail_myobject_extrafields.sql b/sql/llx_sendfacrecmail_myobject_extrafields.sql deleted file mode 100644 index d2cb89c..0000000 --- a/sql/llx_sendfacrecmail_myobject_extrafields.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Copyright (C) 2018 SuperAdmin --- --- 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/. - -create table llx_sendfacrecmail_myobject_extrafields -( - rowid integer AUTO_INCREMENT PRIMARY KEY, - tms timestamp, - fk_object integer NOT NULL, - import_key varchar(14) -- import key -) ENGINE=innodb; - diff --git a/sql/update_x.x.x-y.y.y.sql b/sql/update_x.x.x-y.y.y.sql deleted file mode 100644 index bd8de6a..0000000 --- a/sql/update_x.x.x-y.y.y.sql +++ /dev/null @@ -1,14 +0,0 @@ --- Copyright (C) 2018 SuperAdmin --- --- 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/.