From 2b2e2225aa86b940b714969182fdae231b3cb7a4 Mon Sep 17 00:00:00 2001 From: Regis Houssin <regis@dolibarr.fr> Date: Tue, 7 Sep 2010 15:14:18 +0000 Subject: [PATCH] Works on module hook integration --- htdocs/core/class/commonobject.class.php | 12 +- htdocs/milestone/class/milestone.class.php | 716 --------------------- 2 files changed, 10 insertions(+), 718 deletions(-) delete mode 100644 htdocs/milestone/class/milestone.class.php diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 207ced0efa5..66a8887c332 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -1256,7 +1256,8 @@ class CommonObject } $classname = ucfirst($module); - $this->objModules[] = new $classname($this->db); + $obj_module = new $classname($this->db); + $this->objModules[$obj_module->module_number] = $obj_module; } } } @@ -1353,7 +1354,14 @@ class CommonObject { $var=!$var; - $this->printLine($line,$var,$num,$i,$dateSelector); + if ($line->product_type == 9 && ! empty($line->special_code)) + { + $this->objModules[$line->special_code]->printObjectLine($this,$num,$i); + } + else + { + $this->printLine($line,$var,$num,$i,$dateSelector); + } $i++; } diff --git a/htdocs/milestone/class/milestone.class.php b/htdocs/milestone/class/milestone.class.php deleted file mode 100644 index bb713be64ac..00000000000 --- a/htdocs/milestone/class/milestone.class.php +++ /dev/null @@ -1,716 +0,0 @@ -<?php -/* Copyright (C) 2010 Regis Houssin <regis@dolibarr.fr> - * - * 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. - */ - -/** - * \file htdocs/milestone/class/milestone.class.php - * \ingroup milestone - * \brief Fichier de la classe des jalons - * \version $Id$ - */ - - -/** - * \class Milestone - * \brief Classe permettant la gestion des jalons - */ -class Milestone extends CommonObject -{ - var $db; - var $error; - var $element='milestone'; - var $table_element='milestone'; - var $table_element_line='milestonedet'; - var $fk_element='fk_milestone'; - - // Id of module - var $module_number=1790; - - var $id; - var $label; - var $description; - var $priority; - - var $object; - var $elementid; - var $elementtype; - - var $rang; - var $rangtouse; - - var $datec; - var $dateo; - var $datee; - - var $lines=array(); // Tableau en memoire des jalons - - - /** - * Constructor - * @param DB acces base de donnees - * @param id milestone id - */ - function Milestone($DB) - { - $this->db = $DB; - } - - /** - * Charge le jalon - * @param id id du jalon a charger - */ - function fetch($id) - { - $sql = "SELECT rowid, label, description, fk_element, elementtype"; - $sql.= ", datec, tms, dateo, datee, priority, fk_user_creat, rang"; - $sql.= " FROM ".MAIN_DB_PREFIX."milestone"; - $sql.= " WHERE rowid = ".$id; - - dol_syslog("Milestone::fetch sql=".$sql); - $resql = $this->db->query ($sql); - if ($resql) - { - $res = $this->db->fetch_array($resql); - - $this->id = $res['rowid']; - $this->label = $res['label']; - $this->description = $res['description']; - $this->elementid = $res['fk_element']; - $this->elementtype = $res['elementtype']; - - $this->db->free($resql); - } - else - { - dol_print_error ($this->db); - return -1; - } - } - - /** - * Ajoute le jalon dans la base de donnees - * @return int -1 : erreur SQL - * -2 : nouvel ID inconnu - * -3 : jalon invalide - */ - function create($user) - { - global $conf,$langs; - - $langs->load('milestone'); - - // Clean parameters - $this->label=trim($this->label); - $this->description=trim($this->description); - - $this->db->begin(); - - $result = $this->object->addline( - $this->object->id, - $this->description, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 'HT', - 0, - $this->dateo, - $this->datee, - $this->product_type, - $this->rang, - $this->special_code - ); -/* - $result=$this->object->addline( - $this->object->id, - $this->description, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 'HT', - 0, - 0, - $this->product_type, - $this->rang, - $this->special_code - ); -*/ - if ($result > 0) - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."milestone ("; - $sql.= "label"; - $sql.= ", fk_element"; - $sql.= ", elementtype"; - $sql.= ", dateo"; - $sql.= ", datee"; - $sql.= ") VALUES ("; - $sql.= "'".addslashes($this->label)."'"; - $sql.= ", ".$this->object->line->rowid; - $sql.= ", '".addslashes($this->object->element)."'"; - $sql.= ", ".($this->dateo!=''?$this->db->idate($this->dateo):'null'); - $sql.= ", ".($this->datee!=''?$this->db->idate($this->datee):'null'); - $sql.= ")"; - - $res = $this->db->query ($sql); - if ($res) - { - $this->id = $this->db->last_insert_id (MAIN_DB_PREFIX."milestone"); - - if ($this->id > 0) - { - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('MILESTONE_CREATE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers - - $this->db->commit(); - return 1; - } - else - { - $this->error=$this->db->error(); - dol_syslog("Error sql=$sql, error=".$this->error,LOG_ERR); - $this->db->rollback(); - return -1; - } - } - else - { - $this->error=$this->db->error(); - dol_syslog("Error sql=$sql, error=".$this->error,LOG_ERR); - $this->db->rollback(); - return -2; - } - } - } - - /** - * Update milestone - * @return int 1 : OK - * -1 : SQL error - * -2 : invalid milestone - */ - function update($user) - { - global $conf; - - // Clean parameters - $this->label=trim($this->label); - $this->description=trim($this->description); - - $this->db->begin(); - - $sql = "UPDATE ".MAIN_DB_PREFIX."milestone SET"; - $sql.= " label = '".addslashes($this->label)."'"; - $sql.= ", description = '".addslashes($this->description)."'"; - $sql.= " WHERE rowid = ".$this->id; - - dol_syslog("Milestone::update sql=".$sql); - if ($this->db->query($sql)) - { - $this->db->commit(); - - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('MILESTONE_MODIFY',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers - - return 1; - } - else - { - $this->db->rollback(); - dol_print_error($this->db); - return -1; - } - } - - /** - * Delete milestone - */ - function remove() - { - - $sql = "DELETE FROM ".MAIN_DB_PREFIX."milestonedet"; - $sql.= " WHERE fk_milestone = ".$this->id; - - if (!$this->db->query($sql)) - { - dol_print_error($this->db); - return -1; - } - - $sql = "DELETE FROM ".MAIN_DB_PREFIX."milestone"; - $sql.= " WHERE rowid = ".$this->id; - - if (!$this->db->query($sql)) - { - dol_print_error($this->db); - return -1; - } - else - { - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('MILESTONE_DELETE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers - - return 1; - } - - } - - /** - * \brief Return an array of object milestones - * \param object - */ - function getObjectList($object) - { - $sql = "SELECT rowid, label, description, fk_element, elementtype"; - $sql.= ", datec, tms, dateo, datee, priority, fk_user_creat, rang"; - $sql.= " FROM ".MAIN_DB_PREFIX."milestone"; - $sql.= " WHERE fk_element = ".$object->id; - $sql.= " AND elementtype = '".$object->element."'"; - $sql.= " ORDER BY rang ASC, rowid"; - - $resql = $this->db->query($sql); - if ($resql) - { - $num = $this->db->num_rows($resql); - $i = 0; - - while ($i < $num) - { - $obj = $this->db->fetch_object($resql); - - $this->lines[$i]->id = $obj->rowid; - $this->lines[$i]->label = $obj->label; - $this->lines[$i]->description = $obj->description; - $this->lines[$i]->elementid = $obj->fk_element; - $this->lines[$i]->elementtype = $obj->elementtype; - $this->lines[$i]->datec = $this->db->jdate($obj->datec); - $this->lines[$i]->datem = $this->db->jdate($obj->datem); - $this->lines[$i]->dateo = $this->db->jdate($obj->dateo); - $this->lines[$i]->datee = $this->db->jdate($obj->datee); - $this->lines[$i]->priority = $obj->priority; - $this->lines[$i]->fk_user_creat = $obj->fk_user_creat; - $this->lines[$i]->rang = $obj->rang; - - $i++; - } - $this->db->free($resql); - - return 1; - } - else - { - $this->error=$this->db->error().' sql='.$sql; - dol_syslog("Milestone::getObjectMilestones ".$this->error, LOG_ERR); - return -1; - } - } - - /** - * \brief Link an element to the milestone - * \param element Element to link to milestone - * \return int 1 : OK, -1 : erreur SQL, -2 : id non renseign, -3 : Already linked - */ - function link_element($element) - { - if ($this->id == -1) - { - return -2; - } - - $sql = "INSERT INTO ".MAIN_DB_PREFIX."milestonedet (fk_milestone, fk_element_line)"; - $sql.= " VALUES (".$this->id.", ".$element->id.")"; - - if ($this->db->query($sql)) - { - return 1; - } - else - { - if ($this->db->lasterrno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') - { - $this->error=$this->db->lasterrno(); - return -3; - } - else - { - $this->error=$this->db->error().' sql='.$sql; - } - return -1; - } - } - - /** - * \brief Unlink an element to the milestone - * \param element Element to unlink to milestone - * \return int 1 : OK, -1 : KO - */ - function unlink_element($element) - { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."milestonedet"; - $sql.= " WHERE fk_milestone = ".$this->id; - $sql.= " AND fk_element_line = ".$element->id; - - if ($this->db->query($sql)) - { - return 1; - } - else - { - $this->error=$this->db->error().' sql='.$sql; - return -1; - } - } - - /** - * \brief Return list of contents of a milestone - */ - function get_elements() - { - $objs = array(); - - $sql = "SELECT fk_element_line"; - $sql.= " FROM ".MAIN_DB_PREFIX."milestonedet"; - $sql.= " WHERE fk_milestone = ".$this->id; - - dol_syslog("Milestone::get_element sql=".$sql); - $resql = $this->db->query($sql); - if ($resql) - { - $num = $this->db->num_rows($resql); - $i = 0; - - while ($i < $num) - { - $obj = $this->db->fetch_object($resql); - - $objs[$i] = $obj->fk_element_line; - - $i++; - } - return $objs; - } - else - { - $this->error=$this->db->error().' sql='.$sql; - dol_syslog("Milestone::get_element ".$this->error, LOG_ERR); - return -1; - } - } - - /** - * \brief Return name and link of category (with picto) - * \param withpicto 0=Pas de picto, 1=Inclut le picto dans le lien, 2=Picto seul - * \param option Sur quoi pointe le lien ('', 'xyz') - * \param maxlength Max length of text - * \return string Chaine avec URL - */ - function getNomUrl($withpicto=0,$option='',$maxlength=0) - { - global $langs; - - $result=''; - - $lien = '<a href="'.DOL_URL_ROOT.'/categories/viewcat.php?id='.$this->id.'&type='.$this->type.'">'; - $label=$langs->trans("ShowCategory").': '.$this->label; - $lienfin='</a>'; - - $picto='category'; - - - if ($withpicto) $result.=($lien.img_object($label,$picto).$lienfin); - if ($withpicto && $withpicto != 2) $result.=' '; - if ($withpicto != 2) $result.=$lien.dol_trunc($this->ref,$maxlength).$lienfin; - return $result; - } - - /** - * Return HTML form for add a milestone - */ - function formAddObject($object) - { - global $conf,$langs; - global $bc,$var; - - $langs->load('@milestone'); - - include(DOL_DOCUMENT_ROOT.'/milestone/tpl/addmilestoneform.tpl.php'); - } - - /** - * Return HTML with milestone lines list - * @param object Parent object - * @param lines Parent object lines - * @param sublines Linked parent object lines - */ - function printObjectList($object,$lines,$sublines,$dateSelector=0) - { - $nbObjectLine = count($lines); - $nbMilestone = count($this->lines); - - $nbTotal = $nbObjectLine + $nbMilestone; - - $var = true; - $i = 0; - $j = 1; - - for ($j; $j <= $nbTotal; $j++) - { - if (! empty($lines)) - { - foreach ($lines as $line) - { - if ($line->rang == $j) - { - $var=!$var; - $object->printLine($line,$var,$nbTotal,$i,$dateSelector); - array_shift($lines); - $i++; - } - } - } - - if (! empty($this->lines)) - { - foreach ($this->lines as $milestone) - { - if ($milestone->rang == $j) - { - $this->fetch($milestone->id); - $this->printObjectLine($object, $nbTotal, $i); - $elements = $this->get_elements(); - - $num = count($elements); - $var = true; - $ii = 0; - - // Milestone content - foreach ($elements as $id) - { - foreach ($sublines as $line) - { - if ($line->id == $id) - { - $var=!$var; - $object->printLine($line,$var,$num,$ii,$dateSelector); - $ii++; - } - } - } - - array_shift($this->lines); - $i++; - } - } - } - } - } - - /** - * Return HTML with selected milestone - * @param object Parent object - * TODO mettre le html dans un template - */ - function printObjectLine($object,$num=0,$i=0) - { - global $conf,$langs,$user; - global $html,$bc; - - $element = $object->element; - // TODO uniformiser - if ($element == 'propal') $element = 'propale'; - - // Ligne en mode visu - if ($_GET['action'] != 'edit_milestone' || $_GET['msid'] != $this->id) - { - print '<tr '.$bc[$var].'>'; - - print '<td colspan="6">'; - $text = img_object($langs->trans('Milestone'),'milestone@milestone'); - $text.= ' '.$this->label.'<br>'; - $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($this->description)); - print $html->textwithtooltip($text,$description,3,'','',$i); - - // Show range - //print_date_range($line->date_start,$line->date_end); - - // Add description in form - if ($conf->global->PRODUIT_DESC_IN_FORM) - { - print ($this->description?'<br>'.dol_htmlentitiesbr($this->description):''); - } - - print "</td>\n"; - - // Icone d'edition et suppression - if ($object->statut == 0 && $user->rights->$element->creer) - { - print '<td align="center">'; - print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=edit_milestone&msid='.$this->id.'#ms_'.$this->id.'">'; - print img_edit(); - print '</a>'; - print '</td>'; - print '<td align="center">'; - print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=ask_delete_milestone&msid='.$this->id.'">'; - print img_delete(); - print '</a></td>'; - if ($num > 1) - { - print '<td align="center">'; - if ($i > 0) - { - print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=milestone_up&msid='.$this->id.'">'; - print img_up(); - print '</a>'; - } - if ($i < $num-1) - { - print '<a href="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'&action=milestone_down&msid='.$this->id.'">'; - print img_down(); - print '</a>'; - } - print '</td>'; - } - } - else - { - print '<td colspan="3"> </td>'; - } - - print '</tr>'; - } - - // Ligne en mode update - if ($object->statut == 0 && $_GET["action"] == 'edit_milestone' && $user->rights->$element->creer && $_GET["msid"] == $this->id) - { - print '<form action="'.$_SERVER["PHP_SELF"].'?id='.$object->id.'#ms_'.$this->id.'" method="POST">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="action" value="updatemilestone">'; - print '<input type="hidden" name="id" value="'.$object->id.'">'; - print '<input type="hidden" name="milestoneid" value="'.$_GET["milestoneid"].'">'; - print '<tr '.$bc[$var].'>'; - print '<td>'; - print '<a name="ms_'.$this->id.'"></a>'; // ancre pour retourner sur la ligne - - // Label - print '<tr '.$bc[$var].'>'; - print '<td colspan="5">'; - print '<input size="30" type="text" id="milestone_label" name="milestone_label" value="'.$this->label.'">'; - print '</td>'; - - print '<td align="center" colspan="5" rowspan="2" valign="center"><input type="submit" class="button" name="save" value="'.$langs->trans("Save").'">'; - print '<br><input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></td>'; - - print '</tr>'; - - // Description - print '<tr '.$bc[$var].'>'; - print '<td colspan="5">'; - - // Editor wysiwyg - if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS) - { - require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); - $doleditor=new DolEditor('milestone_desc',$this->description,100,'dolibarr_details'); - $doleditor->Create(); - } - else - { - $nbrows=ROWS_2; - if (! empty($conf->global->MAIN_INPUT_DESC_HEIGHT)) $nbrows=$conf->global->MAIN_INPUT_DESC_HEIGHT; - print '<textarea cols="70" id="milestone_desc" name="milestone_desc" rows="'.$nbrows.'" class="flat">'; - print $this->description; - print '</textarea>'; - } - - print '</td>'; - print '</tr>' . "\n"; - - print "</form>\n"; - } - } - - /** - * Return action of hook - * @param object Linked object - */ - function doActions($object) - { - global $user,$langs; - - $element = $object->element; - // TODO uniformiser - if ($element == 'propal') $element = 'propale'; - - // Add milestone action - if ($_POST['action'] == 'addmilestone' && $user->rights->milestone->creer && $user->rights->$element->creer) - { - if ($_POST['milestone_label'] == $langs->trans('Label') || $_POST['milestone_desc'] == $langs->trans('Description')) - { - $this->error = '<div class="error">'.$langs->trans("MilestoneFieldsIsRequired").'</div>'; - } - else - { - $object->fetch($_GET["id"]); - - $linemax = $object->line_max(); - - $this->rangtouse = $linemax+1; - - $this->object = $object; - $this->label = $_POST['milestone_label']; - $this->description = $_POST['milestone_desc']; - $this->product_type = $_POST['product_type']; - $this->special_code = $_POST['special_code']; - $this->rang = $this->rangtouse; - - $ret = $this->create($user); - - if ($ret < 0) - { - $this->error = '<div class="error">'.$this->error.'</div>'; - } - else - { - Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$object->id); - exit; - } - } - } - } - -} -?> -- GitLab