. -------------------------------------------------------------------------- */ // ---------------------------------------------------------------------- // Original Author of file: // Purpose of file: // ---------------------------------------------------------------------- // Class of the defined type class PluginExampleExample extends CommonDBTM { // Should return the localized name of the type static function getTypeName($nb = 0) { return 'Example Type'; } function canCreate() { if (isset($_SESSION["glpi_plugin_example_profile"])) { return ($_SESSION["glpi_plugin_example_profile"]['example'] == 'w'); } return false; } function canView() { if (isset($_SESSION["glpi_plugin_example_profile"])) { return ($_SESSION["glpi_plugin_example_profile"]['example'] == 'w' || $_SESSION["glpi_plugin_example_profile"]['example'] == 'r'); } return false; } function getSearchOptions() { $tab = array(); $tab['common'] = "Header Needed"; $tab[1]['table'] = 'glpi_plugin_example_examples'; $tab[1]['field'] = 'name'; $tab[1]['name'] = __('Name'); $tab[2]['table'] = 'glpi_plugin_example_dropdowns'; $tab[2]['field'] = 'name'; $tab[2]['name'] = __('Dropdown'); $tab[3]['table'] = 'glpi_plugin_example_examples'; $tab[3]['field'] = 'serial'; $tab[3]['name'] = __('Serial number'); $tab[3]['usehaving'] = true; $tab[3]['searchtype'] = 'equals'; $tab[30]['table'] = 'glpi_plugin_example_examples'; $tab[30]['field'] = 'id'; $tab[30]['name'] = __('ID'); return $tab; } /** * Give localized information about 1 task * * @param $name of the task * * @return array of strings */ static function cronInfo($name) { switch ($name) { case 'Sample' : return array('description' => __('Cron description for example'), 'parameter' => __('Cron parameter for example')); } return array(); } /** * Execute 1 task manage by the plugin * * @param $task Object of CronTask class for log / stat * * @return interger * >0 : done * <0 : to be run again (not finished) * 0 : nothing to do */ static function cronSample($task) { $task->log("Example log message from class"); $task->setVolume(mt_rand(0,$task->fields['param'])); return 1; } // Hook done on before add item case (data from form, not altered) static function pre_item_add_computer(Computer $item) { if (isset($item->input['name']) && empty($item->input['name'])) { Session::addMessageAfterRedirect("Pre Add Computer Hook KO (name empty)", true); return $item->input = false; } else { Session::addMessageAfterRedirect("Pre Add Computer Hook OK", true); } } // Hook done on before add item case (data altered by object prepareInputForAdd) static function post_prepareadd_computer(Computer$item) { Session::addMessageAfterRedirect("Post prepareAdd Computer Hook", true); } // Hook done on add item case static function item_add_computer(Computer$item) { Session::addMessageAfterRedirect("Add Computer Hook, ID=".$item->getID(), true); return true; } function getTabNameForItem(CommonGLPI $item, $withtemplate=0) { if (!$withtemplate) { switch ($item->getType()) { case 'Profile' : if ($item->getField('central')) { return __('Example'); } break; case 'Phone' : if ($_SESSION['glpishow_count_on_tabs']) { return self::createTabEntry(__('Example'), countElementsInTable($this->getTable())); } return __('Example'); case 'ComputerDisk' : case 'Supplier' : return array(1 => __("Test PLugin"), 2 => __("Test PLugin 2")); case 'Computer' : case 'Central' : case 'Preference': case 'Notification': return array(1 => __("Test PLugin")); } } return ''; } static function displayTabContentForItem(CommonGLPI $item, $tabnum=1, $withtemplate=0) { switch ($item->getType()) { case 'Phone' : _e("Plugin Example on Phone"); break; case 'Central' : _e("Plugin central action"); break; case 'Preference' : // Complete form display $data = plugin_version_example(); echo "
"; break; case 'Notification' : _e("Plugin mailing action"); break; case 'ComputerDisk' : case 'Supplier' : if ($tabnum==1) { _e('First tab of Plugin example'); } else { _e('Second tab of Plugin example'); } break; default : //TRANS: %1$s is a class name, %2$d is an item ID printf(__('Plugin example CLASS=%1$s id=%2$d'), $item->getType(), $item->getField('id')); break; } return true; } static function getSpecificValueToDisplay($field, $values, array $options=array()) { if (!is_array($values)) { $values = array($field => $values); } switch ($field) { case 'serial' : return "S/N: ".$values[$field]; } return ''; } // Parm contains begin, end and who // Create data to be displayed in the planning of $parm["who"] or $parm["who_group"] between $parm["begin"] and $parm["end"] static function populatePlanning($parm) { // Add items in the output array // Items need to have an unique index beginning by the begin date of the item to display // needed to be correcly displayed $output = array(); $key = $parm["begin"]."$$$"."plugin_example1"; $output[$key]["begin"] = date("Y-m-d 17:00:00"); $output[$key]["end"] = date("Y-m-d 18:00:00"); $output[$key]["name"] = __("test planning example 1"); // Specify the itemtype to be able to use specific display system $output[$key]["itemtype"] = "PluginExampleExample"; // Set the ID using the ID of the item in the database to have unique ID $output[$key][getForeignKeyFieldForItemType('PluginExampleExample')] = 1; return $output; } /** * Display a Planning Item * * @param $val Array of the item to display * @param $who ID of the user (0 if all) * @param $type position of the item in the time block (in, through, begin or end) * @param $complete complete display (more details) * * @return Nothing (display function) **/ static function displayPlanningItem(array $val, $who, $type="", $complete=0) { // $parm["type"] say begin end in or from type // Add items in the items fields of the parm array switch ($type) { case "in" : //TRANS: %1$s is the start time of a planned item, %2$s is the end and %3$s is its name printf(__('From %1$s to %2$s: %3$s'),date("H:i",strtotime($val["begin"])), date("H:i",strtotime($val["end"])), Html::resume_text($val["name"],80)) ; break; case "through" : echo Html::resume_text($val["name"],80); break; case "begin" : //TRANS: %1$s is the start time of a planned item, %2$s is its name printf(__('Start at %1$s: %2$s'),date("H:i",strtotime($val["begin"])), Html::resume_text($val["name"],80)) ; break; case "end" : //TRANS: %1$s is the end time of a planned item and %2$s is its name printf(__('End at %1$s: %2$s'),date("H:i",strtotime($val["end"])), Html::resume_text($val["name"],80)) ; break; } } } ?>