コード例 #1
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;
}
コード例 #2
0
ファイル: Query.php プロジェクト: linuxwhy/tiki-1
 /**
  * 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;
 }