Fr Plugin080to083¶
Changement des fonctions du core¶
Group_Ticket::getTicketGroups($tickets_id) => Group_Ticket::getGroups($tickets_id) Ticket_User::getTicketUsers($tickets_id) => Ticket_User::getUsers($tickets_id) openArrowMassive() => openArrowMassives() closeArrowMassive($name='', $label='') => closeArrowMassives($options) *Changement des appels de fonctions :* location.class - $this->showNetpoints() => Netpoint::showForLocation($item) addConfirmationOnAction() => Html::addConfirmationOnAction() addMessageAfterRedirect() => Session::addMessageAfterRedirect() addslashes_deep() => Toolbox::addslashes_deep() addToNavigateListItems() => Session::addToNavigateListItems() ajaxDisplaySearchTextForDropdown() => Ajax::displaySearchTextForDropdown() ajaxDropdown() => Ajax::dropdown() ajaxFooter() => Html::ajaxFooter() ajaxUpdateItem() => Ajax::updateItem() ajaxUpdateItemJsCode() => Ajax::updateItemJsCode() ajaxUpdateItemOnEvent() => Ajax::updateItemOnEvent() ajaxUpdateItemOnEventJsCode() => Ajax::updateItemOnEventJsCode() ajaxUpdateItemOnInputTextEvent() => Ajax::updateItemOnInputTextEvent() ajaxUpdateItemOnSelectEvent() => Ajax::updateItemOnSelectEvent() append_params() => Toolbox::append_params() autocompletionTextField() => Html::autocompletionTextField() callCron() => CronTask::callCron() callCronForce() => CronTask::callCronForce() canUseImapPop() => Toolbox::canUseImapPop() canUseLdap() => Toolbox::canUseLdap() changeActiveEntities() => Session::changeActiveEntities() changeProgressBarMessage() => Html::changeProgressBarMessage() changeProgressBarPosition() => Html::changeProgressBarPosition() changeProfile() => Session::changeProfile() checkCentralAccess() => Session::checkCentralAccess() checkFaqAccess() => Session::checkFaqAccess() checkHelpdeskAccess() => Session::checkHelpdeskAccess() checkLoginUser() => Session::checkLoginUser() checkNewVersionAvailable() => Toolbox::checkNewVersionAvailable() checkSeveralRightsOr() => Session::checkSeveralRightsOr() checkRight() => Session::checkRight() checkWriteAccessToDirs() => Config::checkWriteAccessToDirs() clean_cross_side_scripting_deep() => Toolbox::clean_cross_side_scripting_deep() cleanInputText() => Html::cleanInputText() cleanParametersURL() => Html::cleanParametersURL() cleanPostForTextArea() => Html::cleanPostForTextArea() closeArrowMassive($name,$label) => Html::closeArrowMassives(array($name => $label)) commonCheckForUseGLPI() => Toolbox::commonCheckForUseGLPI() commonDropdownUpdateItem() => Ajax::commonDropdownUpdateItem() commonFooter() => Html::footer() commonHeader() => Html::header() constructMailServerConfig() => Toolbox::constructMailServerConfig() convDate() => Html::convDate() convDateTime() => Html::convDateTime() createAjaxTabs() => Ajax::createTabs() createProgressBar() => Html::createProgressBar() decodeFromUtf8() => Toolbox::decodeFromUtf8() decrypt() => Toolbox::decrypt() deleteDir() => Toolbox::deleteDir() destroySession (Auth.class) => Session::destroy() displayBackLink() => Html::displayBackLink() displayDebugInfos() => Html::displayDebugInfos() displayErrorAndDie() => Html::displayErrorAndDie() displayMessageAfterRedirect() => Html::displayMessageAfterRedirect() displayNotFoundError() => Html::displayNotFoundError() displayProgressBar() => Html::displayProgressBar() displayRightError() => Html::displayRightError() displayTitle() => Html::displayTitle() doHook() => Plugin::doHook() doHookFunction() => Plugin::doHookFunction() doOneHook() => Plugin::doOneHook() encodeInUtf8() => Toolbox::encodeInUtf8() encrypt() => Toolbox::encrypt() filesizeDirectory () => Toolbox::filesizeDirectory() formatNumber() => Html::formatNumber() getActiveTab() => Session::getActiveTab() getAllReplicateForAMaster() => AuthLDAP::getAllReplicateForAMaster() getCountLogin() => Event::getCountLogin() getItemTypeFormURL() => Toolbox::getItemTypeFormURL() getItemTypeSearchURL() => Toolbox::getItemTypeSearchURL() getItemTypeTabsURL() => Toolbox::getItemTypeTabsURL() getLoginUserID() => Session::getLoginUserID() get_magic_quotes_gpc() => Toolbox::get_magic_quotes_gpc() get_magic_quotes_runtime() => Toolbox::get_magic_quotes_runtime() getMemoryLimit() => Toolbox::getMemoryLimit() getPluginSearchOptions() => Plugin::getPluginSearchOptions() getPluginsDatabaseRelations() => Plugin::getPluginsDatabaseRelations() getPluginsDropdowns() => Plugin::getPluginsDropdowns() getRandomString() => Toolbox::getRandomString() getSize() => Toolbox::getSize() getTimestampTimeUnits() => Toolbox::getTimestampTimeUnits() getURLContent() => Toolbox::getURLContent() getWarrantyExpir() => Infocom::getWarrantyExpir() glpi_flush() => Html::glpi_flush() glpi_header() => Html::redirect(URL de redirection) => Html::back() => Html::redirect($_SERVER['HTTP_REFERER']) haveAccessToAllOfEntities() => Session::haveAccessToAllOfEntities() haveAccessToEntity() => Session::haveAccessToEntity() haveAccessToOneOfEntities() => Session::haveAccessToOneOfEntities() haveRecursiveAccessToEntity() => Session::haveRecursiveAccessToEntity() haveRight() => Session::haveRight() header_nocache() => Html::header_nocache() helpFooter() => Html::helpFooter() helpHeader() => Html::helpHeader() html_clean() => Html::clean() html_entity_decode_deep() => Html::entity_decode_deep() htmlentities_deep() => Html::entities_deep() includeCommonHtmlHeader() => Html::includeHeader() initEditorSystem() => Html::initEditorSystem() initEntityProfiles() => Session::initEntityProfiles() initNavigateListItems() => Session::initNavigateListItems() initSession (Auth.class) => Session::init() isMultiEntitiesMode() => Session::isMultiEntitiesMode() key_exists_deep() => Toolbox::key_exists_deep() ldap_get_entries_clean() => AuthLDAP::get_entries_clean() listTemplates() => CommonDBTM::listTemplates() loadGroups() => Session::loadGroups() loadLanguage() => Session::loadLanguage() logDebug() => Toolbox::logDebug() logInFile() => Toolbox::logInFile() makeTextCriteria() => Search::makeTextCriteria() makeTextSearch() => Search::makeTextSearch() manageBeginAndEndPlanDates() => Toolbox::manageBeginAndEndPlanDates() manageRedirect() => Toolbox::manageRedirect() nl2br_deep() => Html::nl2br_deep() nullFooter() => Html::nullFooter() nullHeader() => Html::nullHeader() openArrowMassive() => Html::openArrowMassives() optimize_tables() => DBmysql::optimize_tables() popFooter() => Html::popFooter() popHeader() => Html::popHeader() printAjaxPager() => Html::printAjaxPager() printCleanArray() => Html::printCleanArray() printHelpDesk() => Ticket::showFormHelpdesk() printPager() => Html::printPager() printPagerForm() => Html::printPagerForm() refreshDropdownPopupInMainWindow() => Ajax::refreshDropdownPopupInMainWindow() refreshPopupMainWindow() => Ajax::refreshPopupMainWindow() resume_text() => Html::resume_text() resume_name() => Html::resume_name() return_bytes_from_ini_vars() => Toolbox::return_bytes_from_ini_vars() seems_utf8() => Toolbox::seems_utf8() sendFile() => Toolbox::sendFile() setActiveTab() => Session::setActiveTab() setGlpiSessionPath() => Session::setPath() showDateFormItem() => Html::showDateFormItem() showDateTimeFormItem() => Html::showDateTimeFormItem() showGenericDateTimeSearch() => Html::showGenericDateTimeSearch() showMailServerConfig() => Toolbox::showMailServerConfig() showOtherAuthList($target) => Auth::showOtherAuthList() showProfileSelecter() => Html::showProfileSelecter() showToolTip() => Html::showToolTip() simpleHeader() => Html::simpleHeader() startGlpiSession() => Session::start() stripslashes_deep() => Toolbox::stripslashes_deep() testWriteAccessToDirectory() => Toolbox::testWriteAccessToDirectory() timestampToString() => Html::timestampToString() utf8_str_pad() => Toolbox::str_pad() utf8_strlen() => Toolbox::strlen() utf8_strpos() => Toolbox::strpos() utf8_strtolower () => Toolbox::strtolower() utf8_strtoupper() => Toolbox::strtoupper() utf8_substr() => Toolbox::substr() unclean_cross_side_scripting_deep() => Toobox::unclean_cross_side_scripting_deep() userErrorHandlerDebug() => Toolbox::userErrorHandlerDebug() userErrorHandlerNormal() => Toolbox::userErrorHandlerNormal() weblink_extract() => Html::weblink_extract() *Changement des appels de constant* DROPDOWN_EMPTY_VALUE => Dropdown::EMPTY_VALUE DEBUG_MODE => Session::DEBUG_MODE NORMAL_MODE => Session::NORMAL_MODE TRANSLATION_MODE => Session::TRANSLATION_MODE HISTORY_.... => Log::HISTORY_.... BOOKMARK_SEARCH => Bookmark::SEARCH (For plugins, use Bookmark::URI (lien sans contrôles du coeur sur l'itemtype)
Ajout de nouveaux paramètres dans Plugin::registerClass¶
'linkuser_tech_types' => true / false 'linkgroup_tech_types' => true / false 'addtabon' => array('itemtype') : un onglet du plugin sera ajouté à l'objet itemtype 'forwardentityfrom' => itemtype : indique à GLPI que la classe père doit répercuter sur la classe du plugin les modifications des champs entities_id et is_recursive
Exemple :
Plugin::registerClass('PluginTicketssuppliersConfig', array('addtabon' => array('Supplier'), 'forwardentityfrom' => 'Supplier'));
La classe PluginTicketssuppliersConfig (qui étend CommonDBChild) est ajoutée à la liste des classes recevant les modifications des champs entities_id et is_recursive de la classe Supplier.
Changements des variables utilisés dans des fonctions du core¶
Ticket::showListForItem('Computer', $_POST["id"]) => Ticket::showListForItem($Computer); addField($table, $field, $type, $update='', $condition='' => addField($table, $field, $type, $options=array() NetworkPort::showForItem($itemtype, $items_id) => NetworkPort::showForItem(CommonDBTM $item, $withtemplate='')
Définition des onglets¶
L'ancienne gestion des onglets existe toujours en 0.83, mais sera amenée à disparaitre dans une version ultérieure.
Utilisation d'un onglet standard, géré par un autre objet¶
Pour l'affichage des onglets standard, utilisation de la fonction addStandardTab('itemtype', $ong, $options) dans la fonction defineTabs() de l'objet
exemples :
onglet logiciel : $ong[2] = $LANG['Menu'][4]; => $this->addStandardTab('Software',$ong, $options); onglet document : if (haveRight("document","r")) { $ong[5] = $LANG['Menu'][27]; } => $this->addStandardTab('Document',$ong, $options);Dans le fichier ajax/objet.tabs.php
- suppression des '_case_' correspondant aux onglets standards
- remplacement de l'appel à Plugin::displayAction() par un appel à CommonGLPI::displayStandardTab()
Exemple : https://forge.indepnet.net/projects/appliances/repository/revisions/143
Si "tous" les onglets sont standards, le fichier ajax/object.tabs.php peut être supprimés (common.tabs.php sera automatiquement utilisé)
Ajout d'un onglet standard géré par un objet du plugin¶
Pour qu'un objet puisse créer un onglet standard, il doit fournir 2 méthodes :
Définition des onglets à affichés:
function getTabNameForItem(CommonGLPI $item, $withtemplate=0);
Cette méthode retourne une chaine (nom de l'onglet) ou un tableau de chaine (plusieurs onglets).
Le contrôle de droit doit être fait dans cette méthode (pas dans defineTabs).
Affichage du contenu des onglets:
static function displayTabContentForItem(CommonGLPI $item, $tabnum=1, $withtemplate=0);
Exemple : https://forge.indepnet.net/projects/appliances/repository/revisions/146
Dropdown et Onglets¶
Les dropdown utilisent maintenant le mécanisme des onglets standards.
Donc: supprimer le fichier ajax/<nomdutypedeladropdown>.tabs.php
(il appellait ajax/dropdown.common.tabs.php qui n'existe plus)
Règles et Onglets¶
Les règles utilisent maintenant le mécanisme des onglets standards.
Donc: supprimer le fichier ajax/<nomdutypedelarègle>.tabs.php
(il appellait ajax/rule.common.tabs.php qui n'existe plus)
Suppression de tables du core¶
Suppression de la table glpi_ticketplannings ainsi que la class associée
Déplacement de fonctions¶
les fonctions isPluginItemType et isCommandLine sont désormais dans autoload.function.php (au lieu de common.function.php)
Changements de nom de classes¶
la classe TicketCategory devient ITILCategory (glpi_itilcategories / itilcategories_id)
Hooks¶
Nouveau hook "post_prepareadd"¶
Ce hook est appelé, apres le hook pre_item_add, après le passage par le prepareInputForAdd de l'objet et avant l'ajout en DB.
Modification du hook "addWhere"¶
Ce hook accepte désormais l'option $searchtype (indiquant le type de recherche : contains, equals, notequals, under)
plugin_xxxx_addWhere($link, $nott, $type, $ID, $val, $searchtype)
Suppression de chaine de langue du core¶
$LANG['job'][21] = "Nombre déjà en cours";
$LANG['stats'][31] = "Jour(s)";
class_exists¶
Changement d'écriture si un objet est instancié après contrôle de la class
if (class_exists($itemtype) { $item = new $itemtype(); }
devient
if ($item = getItemForItemtype($itemtype)) {
Licence¶
Information de licence¶
La fonction plugin_version_foo doit retourner un nouveau champ 'license' contenant le nom court de la licence, GPLv2+ par exemple.
Cette information sera affichée dans le liste des plugins.
Fichier License¶
Si le fichier LICENSE ou COPYING.txt est présent à la racine du plugin, le nom de la license, dans la liste des plugins, sera un lien vers ce fichier.
Entête¶
Vérifier l'entête des fichiers afin qu'il corresponde à la licence du plugin et fasse référence au plugin (et non directement à GLPI).