Calendar::processMassiveActionsForOneItemtype PHP Method

processMassiveActionsForOneItemtype() static public method

See also: CommonDBTM::processMassiveActionsForOneItemtype()
static public processMassiveActionsForOneItemtype ( MassiveAction $ma, CommonDBTM $item, array $ids )
$ma MassiveAction
$item CommonDBTM
$ids array
    static function processMassiveActionsForOneItemtype(MassiveAction $ma, CommonDBTM $item, array $ids)
    {
        switch ($ma->getAction()) {
            case 'duplicate':
                // For calendar duplicate in another entity
                if (method_exists($item, 'duplicate')) {
                    $input = $ma->getInput();
                    $options = array();
                    if ($item->isEntityAssign()) {
                        $options = array('entities_id' => $input['entities_id']);
                    }
                    foreach ($ids as $id) {
                        if ($item->getFromDB($id)) {
                            if (!$item->isEntityAssign() || $input['entities_id'] != $item->getEntityID()) {
                                if ($item->can(-1, CREATE, $options)) {
                                    if ($item->duplicate($options)) {
                                        $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_OK);
                                    } else {
                                        $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO);
                                        $ma->addMessage($item->getErrorMessage(ERROR_ON_ACTION));
                                    }
                                } else {
                                    $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_NORIGHT);
                                    $ma->addMessage($item->getErrorMessage(ERROR_RIGHT));
                                }
                            } else {
                                $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO);
                                $ma->addMessage($item->getErrorMessage(ERROR_COMPAT));
                            }
                        } else {
                            $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO);
                            $ma->addMessage($item->getErrorMessage(ERROR_NOT_FOUND));
                        }
                    }
                } else {
                    $ma->itemDone($item->getType(), $ids, MassiveAction::ACTION_KO);
                }
                return;
            case 'addholiday':
                // add an holiday with massive action
                $input = $ma->getInput();
                if ($input['holidays_id'] > 0) {
                    $holiday = new Holiday();
                    $calendar_holiday = new Calendar_Holiday();
                    $holiday->getFromDB($input['holidays_id']);
                    $entities = array($holiday->getEntityID() => $holiday->getEntityID());
                    if ($holiday->isRecursive()) {
                        $entities = getSonsOf("glpi_entities", $holiday->getEntityID());
                    }
                    foreach ($ids as $id) {
                        $entities_id = CommonDBTM::getItemEntity('Calendar', $id);
                        if (isset($entities[$entities_id])) {
                            $input = array('calendars_id' => $id, 'holidays_id' => $input['holidays_id']);
                            if ($calendar_holiday->add($input)) {
                                $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_OK);
                            } else {
                                $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO);
                                $ma->addMessage($item->getErrorMessage(ERROR_ON_ACTION));
                            }
                        } else {
                            $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO);
                            $ma->addMessage($item->getErrorMessage(ERROR_ON_ACTION));
                        }
                    }
                } else {
                    $ma->itemDone($item->getType(), $ids, MassiveAction::ACTION_KO);
                }
                return;
        }
        parent::processMassiveActionsForOneItemtype($ma, $item, $ids);
    }