grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026. -------------------------------------------------------------------------- */ /** @file * @brief */ if (!defined('GLPI_ROOT')) { die("Sorry. You can't access this file directly"); } /** * NotImportedEmail Class **/ class NotImportedEmail extends CommonDBTM { static $rightname = 'config'; const MATCH_NO_RULE = 0; const USER_UNKNOWN = 1; const FAILED_INSERT = 2; function getForbiddenStandardMassiveAction() { $forbidden = parent::getForbiddenStandardMassiveAction(); $forbidden[] = 'delete'; $forbidden[] = 'purge'; $forbidden[] = 'restore'; return $forbidden; } static function getTypeName($nb=0) { return _n('Refused email', 'Refused emails', $nb); } /** * @see CommonDBTM::getSpecificMassiveActions() **/ function getSpecificMassiveActions($checkitem=NULL) { $isadmin = static::canUpdate(); $actions = parent::getSpecificMassiveActions($checkitem); if ($isadmin) { $prefix = __CLASS__.MassiveAction::CLASS_ACTION_SEPARATOR; $actions[$prefix.'delete_email'] = __('Delete emails'); $actions[$prefix.'import_email'] = _x('button', 'Import'); } return $actions; } /** * @since version 0.85 * * @see CommonDBTM::showMassiveActionsSubForm() **/ static function showMassiveActionsSubForm(MassiveAction $ma) { switch ($ma->getAction()) { case 'import_email' : Entity::dropdown(); echo "

"; echo Html::submit(_x('button', 'Import'), array('name' => 'massiveaction')); return true; } return parent::showMassiveActionsSubForm($ma); } /** * @since version 0.85 * * @see CommonDBTM::processMassiveActionsForOneItemtype() **/ static function processMassiveActionsForOneItemtype(MassiveAction $ma, CommonDBTM $item, array $ids) { switch ($ma->getAction()) { case 'delete_email' : case 'import_email' : if (!$item->canUpdate()) { $ma->itemDone($item->getType(), $ids, MassiveAction::ACTION_NORIGHT); } else { $input = $ma->getInput(); if (count($ids)) { $mailcollector = new MailCollector(); if ($ma->getAction() == 'delete_email') { $mailcollector->deleteOrImportSeveralEmails($ids, 0); } else { $mailcollector->deleteOrImportSeveralEmails($ids, 1, $input['entities_id']); } } $ma->itemDone($item->getType(), $ids, MassiveAction::ACTION_OK); } return; } parent::processMassiveActionsForOneItemtype($ma, $item, $ids); } function getSearchOptions() { $tab = array(); $tab[1]['table'] = 'glpi_notimportedemails'; $tab[1]['field'] = 'from'; $tab[1]['name'] = __('From email header'); $tab[1]['massiveaction'] = false; $tab[1]['datatype'] = 'string'; $tab[2]['table'] = 'glpi_notimportedemails'; $tab[2]['field'] = 'to'; $tab[2]['name'] = __('To email header'); $tab[2]['massiveaction'] = false; $tab[2]['datatype'] = 'string'; $tab[3]['table'] = 'glpi_notimportedemails'; $tab[3]['field'] = 'subject'; $tab[3]['name'] = __('Subject email header'); $tab[3]['massiveaction'] = false; $tab[3]['datatype'] = 'string'; $tab[4]['table'] = 'glpi_mailcollectors'; $tab[4]['field'] = 'name'; $tab[4]['name'] = __('Mails receiver'); $tab[4]['datatype'] = 'itemlink'; $tab[5]['table'] = 'glpi_notimportedemails'; $tab[5]['field'] = 'messageid'; $tab[5]['name'] = __('Message-ID email header'); $tab[5]['massiveaction'] = false; $tab[5]['datatype'] = 'string'; $tab[6]['table'] = 'glpi_users'; $tab[6]['field'] = 'name'; $tab[6]['name'] = __('Requester'); $tab[6]['datatype'] = 'dropdown'; $tab[6]['right'] = 'all'; $tab[16]['table'] = 'glpi_notimportedemails'; $tab[16]['field'] = 'reason'; $tab[16]['name'] = __('Reason of rejection'); $tab[16]['datatype'] = 'specific'; $tab[16]['massiveaction'] = false; $tab[19]['table'] = 'glpi_notimportedemails'; $tab[19]['field'] = 'date'; $tab[19]['name'] = __('Date'); $tab[19]['datatype'] = 'datetime'; $tab[19]['massiveaction'] = false; return $tab; } static function deleteLog() { global $DB; $query = "TRUNCATE `glpi_notimportedemails`"; $DB->query($query); } /** * @param $reason_id **/ static function getReason($reason_id) { $tab = self::getAllReasons(); if (isset($tab[$reason_id])) { return $tab[$reason_id]; } return NOT_AVAILABLE; } /** * @since versin 0.84 * * Get All possible reasons array **/ static function getAllReasons() { return array(self::MATCH_NO_RULE => __('Unable to affect the email to an entity'), self::USER_UNKNOWN => __('Email not found. Impossible import'), self::FAILED_INSERT => __('Failed operation')); } /** * @since version 0.84 * * @param $field * @param $values * @param $options array **/ static function getSpecificValueToDisplay($field, $values, array $options=array()) { if (!is_array($values)) { $values = array($field => $values); } switch ($field) { case 'reason' : return self::getReason($values[$field]); case 'messageid' : $clean = array('<' => '', '>' => ''); return strtr($values[$field], $clean); } return parent::getSpecificValueToDisplay($field, $values, $options); } /** * @since version 0.84 * * @param $field * @param $name (default '') * @param $values (default '') * @param $options array **/ static function getSpecificValueToSelect($field, $name='', $values='', array $options=array()) { if (!is_array($values)) { $values = array($field => $values); } $options['display'] = false; switch ($field) { case 'reason' : $options['value'] = $values[$field]; return Dropdown::showFromArray($name, self::getAllReasons(), $options); } return parent::getSpecificValueToSelect($field, $name, $values, $options); } } ?>