function prefs_trackerfield_list($partial = false) { $factory = new Tracker_Field_Factory(false); $types = $factory->getFieldTypes(); $prefs = array(); foreach ($types as $type) { $name = array_shift($type['prefs']); $prefs[$name] = array('name' => $type['name'], 'description' => $type['description'], 'tags' => $type['tags'], 'default' => $type['default'], 'dependencies' => $type['prefs'], 'type' => 'flag', 'warning' => isset($type['warning']) ? $type['warning'] : false, 'help' => isset($type['help']) ? urlencode($type['help']) : false); } return $prefs; }
static function export(Tiki_Profile_Writer $writer, $field) { if (!is_array($field)) { $trklib = TikiLib::lib('trk'); $field = $trklib->get_tracker_field($field); if (!$field) { return false; } } $factory = new Tracker_Field_Factory(); $fieldInfo = $factory->getFieldInfo($field['type']); $options = Tracker_Options::fromSerialized($field['options'], $fieldInfo); $optionsData = array_filter($options->getAllParameters()); foreach ($optionsData as $key => $value) { $paramInfo = $options->getParamDefinition($key); if (isset($paramInfo['profile_reference'])) { $optionsData[$key] = $writer->getReference($paramInfo['profile_reference'], $value); } } $data = array('name' => $field['name'], 'permname' => $field['permName'], 'tracker' => $writer->getReference('tracker', $field['trackerId']), 'options' => $optionsData); $optionMap = array_flip(self::getOptionMap()); $defaults = self::getDefaultValues(); $conversions = self::getConverters(); $flag = array(); foreach ($field as $key => $value) { if (empty($optionMap[$key])) { continue; } $optionKey = $optionMap[$key]; $default = ''; if (isset($defaults[$optionKey])) { $default = $defaults[$optionKey]; } if ($value != $default) { if (in_array($optionKey, array('list', 'link', 'searchable', 'public', 'mandatory', 'multilingual'))) { if (!empty($value)) { $flag[] = $optionKey; } } elseif (!empty($conversions[$optionKey])) { $reverseVal = $conversions[$optionKey]->reverse($value); $data[$optionKey] = $reverseVal; } else { $data[$optionKey] = $value; } } } if (!empty($flag)) { $data['flags'] = $flag; } $writer->addObject('tracker_field', $field['fieldId'], $data); return true; }
function upgrade_20130513_convert_tracker_field_parameters_tiki($installer) { // Using an old version of the definition could be critical here, so making sure // a fresh one is used $cachelib = TikiLib::lib('cache'); $oldCache = $cachelib->replaceImplementation(new CacheLibNoCache()); $fields = $installer->fetchAll('SELECT fieldId, type, options FROM tiki_tracker_fields'); $factory = new Tracker_Field_Factory(); $table = $installer->table('tiki_tracker_fields'); foreach ($fields as $field) { $info = $factory->getFieldInfo($field['type']); $options = Tracker_Options::fromString($field['options'], $info); $table->update(array('options' => $options->serialize()), array('fieldId' => $field['fieldId'])); } $cachelib->replaceImplementation($oldCache); }
function wp_fixture_tracker_math($data, $params) { $table = new FixtureTable($data); $trackerId = $params->trackerId->int(); $tracker = Tracker_Definition::get($trackerId); if (!$tracker) { return '__' . tr('Tracker not found.') . '__'; } $smarty = TikiLib::lib('smarty'); $smarty->loadPlugin('smarty_modifier_sefurl'); $url = smarty_modifier_sefurl($trackerId, 'tracker'); $table->setTitle(tr('Tracker Math for [%0|%1]', $url, $tracker->getConfiguration('name'))); $factory = new Tracker_Field_Factory($tracker); $checks = array(); $headings = $table->getHeadings(); foreach ($headings as $key => $heading) { $permName = rtrim($heading, '?'); if (!($field = $tracker->getFieldFromPermName($permName))) { return '__' . tr('Tracker Field not found: %0', $permName) . '__'; } if ($permName != $heading) { $checks[$key] = $factory->getHandler($field); if (!$checks[$key] instanceof Tracker_Field_Math) { return '__' . tr('Field is not a math field: %0', $permName) . '__'; } } } foreach ($table as $row) { $variableNames = array_map('rtrim', $headings, array_fill(0, count($headings), '?')); $variables = array_combine($variableNames, $row); foreach ($checks as $key => $field) { $out = $field->handleFinalSave($variables); if ($out == $row[$key]) { $table->setValue($key, $out, 'green'); } else { $table->setValue($key, tr("%0 (expect: %1)", $out, $row[$key]), 'red'); } } } return $table; }
function getFieldTypes() { $factory = new Tracker_Field_Factory(false); $completeList = $factory->getFieldTypes(); $list = array(); foreach ($completeList as $code => $info) { if ($this->isEnabled($info)) { $list[$code] = $info; } } return $list; }
/** * Get inputs for tracker item, useful for building interface for interacting with trackers * * @param int $itemId, 0 for new item * @param bool $includeJs injects header js for item into field value * @return array $fields array of fields just like that found in query, but the value of each field being the input */ private function getInputsForItem($itemId = 0, $includeJs = true) { $headerlib = TikiLib::lib("header"); $itemId = (int) $itemId; if ($includeJs == true) { $headerlibClone = clone $headerlib; } $trackerId = $this->trackerId(); if ($trackerId < 1) { return array(); } $trackerDefinition = Tracker_Definition::get($trackerId); $fields = array(); $fieldFactory = new Tracker_Field_Factory($trackerDefinition); $itemData = TikiLib::lib("trk")->get_tracker_item($itemId); foreach ($trackerDefinition->getFields() as $field) { $fieldKey = $this->byName == true ? $field['name'] : $field['fieldId']; if ($includeJs == true) { $headerlib->clear_js(); } $field['ins_id'] = "ins_" . $field['fieldId']; if ($itemId == 0 && isset($this->inputDefaults)) { $field['value'] = $this->inputDefaults[$fieldKey]; } $fieldHandler = $fieldFactory->getHandler($field, $itemData); $fieldInput = $fieldHandler->renderInput(); if ($includeJs == true) { $fieldInput = $fieldInput . $headerlib->output_js(); } $fields[$fieldKey] = $fieldInput; } if ($includeJs == true) { //restore the header to the way it was originally $headerlib = $headerlibClone; } return $fields; }
private function setPreCacheTypeMap($data) { self::$trackerFieldLocalCache = array('type' => $data['typeMap'], 'info' => $data['infoMap']); }
$smarty->assign_by_ref('sort_mode', $sort_mode); if (isset($_REQUEST['all2db'])) { $attachements = $trklib->list_all_attachements(); for ($i = 0; $i < $attachements['cant']; $i++) { if ($attachements['data'][$i]['path']) { $trklib->file_to_db($prefs['t_use_dir'] . $attachements['data'][$i]['path'], $attachements['data'][$i]['attId']); } } } elseif (isset($_REQUEST['all2file'])) { $attachements = $trklib->list_all_attachements(); for ($i = 0; $i < $attachements['cant']; $i++) { if (!$attachements['data'][$i]['path']) { $trklib->db_to_file($prefs['t_use_dir'] . md5($attachements['data'][$i]['filename']), $attachements['data'][$i]['attId']); } } } $attachements = $trklib->list_all_attachements($offset, $maxRecords, $sort_mode, $find); $smarty->assign_by_ref('cant_pages', $attachements['cant']); $headerlib->add_cssfile('themes/base_files/feature_css/admin.css'); $smarty->assign_by_ref('attachements', $attachements['data']); $urlquery['find'] = $find; $urlquery['page'] = 'trackers'; $urlquery['sort_mode'] = $sort_mode; $smarty->assign_by_ref('urlquery', $urlquery); ask_ticket('admin-inc-trackers'); $factory = new Tracker_Field_Factory(false); $fieldPreferences = array(); foreach ($factory->getFieldTypes() as $type) { $fieldPreferences[] = array_shift($type['prefs']); } $smarty->assign('fieldPreferences', $fieldPreferences);
public function copy_item($from, $to, $except = null, $only = null, $status = null) { global $user, $prefs; if ($prefs['feature_categories'] == 'y') { $categlib = TikiLib::lib('categ'); $cats = $categlib->get_object_categories('trackeritem', $from); } if (empty($to)) { $is_new = 'y'; $info_to['trackerId'] = $this->items()->fetchOne('trackerId', array('itemId' => $from)); $info_to['status'] = empty($status) ? $this->items()->fetchOne('status', array('itemId' => $from)) : $status; $info_to['created'] = $info_to['lastModif'] = $this->now; $info_to['createdBy'] = $info_to['lastModifBy'] = $user; $to = $this->items()->insert($info_to); } $query = 'select ttif.*, ttf.`type`, ttf.`options` from `tiki_tracker_item_fields` ttif left join `tiki_tracker_fields` ttf on (ttif.`fieldId` = ttf.`fieldId`) where `itemId`=?'; $result = $this->fetchAll($query, array($from)); $clean = array(); $factory = new Tracker_Field_Factory(); foreach ($result as $res) { $typeInfo = $factory->getFieldInfo($res['type']); $options = Tracker_Options::fromSerialized($res['options'], $typeInfo); $res['options_array'] = $options->buildOptionsArray(); if ($prefs['feature_categories'] == 'y' && $res['type'] == 'e') { //category if (!empty($except) && in_array($res['fieldId'], $except) || !empty($only) && !in_array($res['fieldId'], $only)) { // take away the categories from $cats if (ctype_digit($res['options_array'][0]) && $res['options_array'][0] > 0) { $filter = array('identifier' => $res['options_array'][0], 'type' => 'children'); } else { $filter = null; } $children = $categlib->getCategories($filter, true, false); $local = array(); foreach ($children as $child) { $local[] = $child['categId']; } $cats = array_diff($cats, $local); } } if (!empty($except) && in_array($res['fieldId'], $except) || !empty($only) && !in_array($res['fieldId'], $only) || $res['type'] == 'q') { continue; } if (!empty($is_new) && in_array($res['type'], array('u', 'g', 'I')) && ($res['options_array'][0] == 1 || $res['options_array'][0] == 2)) { $res['value'] = $res['type'] == 'u' ? $user : ($res['type'] == 'g' ? $_SESSION['u_info']['group'] : TikiLib::get_ip_address()); } if (in_array($res['type'], array('A', 'N'))) { // attachment - image continue; //not done yet } //echo "duplic".$res['fieldId'].' '. $res['value'].'<br>'; if (!in_array($res['fieldId'], $clean)) { $this->itemFields()->delete(array('itemId' => $to, 'fieldId' => $res['fieldId'])); $clean[] = $res['fieldId']; } $data = array('itemId' => $to, 'fieldId' => $res['fieldId'], 'value' => $res['value']); $this->itemFields()->insert($data); } if (!empty($cats)) { $trackerId = $this->items()->fetchOne('trackerId', array('itemId' => $from)); $this->categorized_item($trackerId, $to, "item {$to}", $cats); } return $to; }
function field_types() { $types = array(); $factory = new Tracker_Field_Factory(false); foreach ($factory->getFieldTypes() as $key => $info) { $types[$key] = array( 'label' => $info['name'], 'opt' => count($info['params']) === 0, 'help' => $this->build_help_for_type($info), ); } return $types; }