Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
 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);
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
0
 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;
 }
Ejemplo n.º 6
0
 /**
  * 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;
 }
Ejemplo n.º 7
0
 private function setPreCacheTypeMap($data)
 {
     self::$trackerFieldLocalCache = array('type' => $data['typeMap'], 'info' => $data['infoMap']);
 }
Ejemplo n.º 8
0
$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);
Ejemplo n.º 9
0
 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;
 }
Ejemplo n.º 10
0
	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;
	}