/** * autoset fields * @param object $o * @return void */ public function onNodeDbCreateOrUpdate($o) { if (!is_object($o)) { return; } $objData = $o->getData(); $template = $o->getTemplate(); $title = @$o->getFieldValue('_title', 0)['value']; if (empty($title)) { if (!empty($template)) { $templateData = $template->getData(); if (!empty($templateData['title_template'])) { $title = $this->getAutoTitle($o); } } } if (!empty($title)) { $objData['name'] = $title; } $date = @$o->getFieldValue('_date_start', 0)['value']; if (!empty($date)) { $objData['date'] = Util\dateISOToMysql($date); } $dateEndField = $template->getField('_date_end'); if (!empty($dateEndField)) { $date = @$o->getFieldValue('_date_end', 0)['value']; if (!empty($date)) { $objData['date_end'] = Util\dateISOToMysql($date); } else { $objData['date_end'] = null; } } $o->setData($objData); }
public function updateFileProperties($p) { if (empty($p['id'])) { return array('success' => false, 'msg' => L\get('Wrong_input_data')); } if (!Security::canWrite($p['id'])) { return array('success' => false, 'msg' => L\get('Access_denied')); } $p['title'] = strip_tags(@$p['title']); DM\Files::update(array('id' => $p['id'], 'date' => Util\dateISOToMysql($p['date']), 'title' => @$p['title'], 'uid' => User::getId(), 'udate' => 'CURRENT_TIMESTAMP')); Objects::updateCaseUpdateInfo($p['id']); return array('success' => true); }
/** * set "sys_data" params from object data * @param array &$p */ protected function setParamsFromData(&$p) { $d =& $p['data']; if (empty($d['sys_data'])) { $d['sys_data'] = array(); } $sd =& $p['sys_data']; $sd['task_due_date'] = $this->getFieldValue('due_date', 0)['value']; $sd['task_due_time'] = $this->getFieldValue('due_time', 0)['value']; $sd['task_allday'] = empty($sd['task_due_time']); //set date_end to be saved in tree table if (empty($sd['task_due_date'])) { $p['date_end'] = null; } else { $p['date_end'] = $sd['task_due_date']; if (!$sd['task_allday']) { $p['date_end'] = substr($sd['task_due_date'], 0, 10) . ' ' . $sd['task_due_time']; } } //set assigned users if (empty($sd['task_u_done'])) { $sd['task_u_done'] = array(); } $assigned = Util\toNumericArray($this->getFieldValue('assigned', 0)['value']); $sd['task_u_ongoing'] = array_diff($assigned, $sd['task_u_done']); //set status $dateEnd = empty($p['date_end']) ? null : Util\dateISOToMysql($p['date_end']); $status = static::$STATUS_ACTIVE; // active if (!empty($sd['task_d_closed'])) { $status = static::$STATUS_CLOSED; //closed } elseif (!empty($dateEnd)) { if (strtotime($dateEnd) < strtotime('now')) { $status = static::$STATUS_OVERDUE; //overdue } } $sd['task_status'] = $status; }
public function updateFileProperties($p) { if (empty($p['id'])) { return array('success' => false, 'msg' => L\get('Wrong_input_data')); } if (!Security::canWrite($p['id'])) { return array('success' => false, 'msg' => L\get('Access_denied')); } $p['title'] = strip_tags(@$p['title']); DB\dbQuery('UPDATE files SET `date` = $2 ,title = $3 ,uid = $4 ,udate = CURRENT_TIMESTAMP WHERE id = $1', array($p['id'], Util\dateISOToMysql($p['date']), @$p['title'], $_SESSION['user']['id'])) or die(DB\dbQueryError()); Objects::updateCaseUpdateInfo($p['id']); return array('success' => true); }
/** * formats a value for display according to it's field definition * @param array | int $field array of field properties or field id * @param variant $value field value to be formated * @param boolean $html default true - format for html, otherwise format for text display * @return varchar formated value */ public static function formatValueForDisplay($field, $value, $html = true) { $cacheVarName = ''; if (is_numeric($field)) { $field = $this->data->fields[$field]; } //condition is specified for values from search templates $condition = null; if (is_array($value)) { if (isset($value['cond'])) { $condition = Template::formatConditionForDisplay($field, $value['cond'], $html) . ' '; } if (isset($value['value'])) { $value = $value['value']; } else { $value = null; } } //we'll cache scalar by default, but will exclude textual fields $cacheValue = is_scalar($value); if ($cacheValue) { $fid = empty($field['id']) ? $field['name'] : $field['id']; $cacheVarName = 'dv' . $html . '_' . $fid . '_' . $value; //check if value is in cache and return if (Cache::exist($cacheVarName)) { return Cache::get($cacheVarName); } } /*check if field is not rezerved field for usernames (cid, oid, uid, did)*/ if (!empty($field['name']) && in_array($field['name'], array('cid', 'oid', 'uid', 'did'))) { $value = Util\toNumericArray($value); for ($i = 0; $i < sizeof($value); $i++) { $value[$i] = User::getDisplayName($value[$i]); } $value = implode(', ', $value); } else { switch ($field['type']) { case 'boolean': case 'checkbox': $value = empty($value) ? '' : ($value < 0 ? L\get('no') : L\get('yes')); break; case '_sex': switch ($value) { case 'm': $value = L\get('male'); break; case 'f': $value = L\get('female'); break; default: $value = ''; } break; case '_language': @($value = @\CB\Config::get('language_settings')[\CB\Config::get('languages')[$value - 1]][0]); break; case 'combo': case '_objects': if (empty($value)) { $value = ''; break; } $ids = Util\toNumericArray($value); if (empty($ids)) { if (empty($field['cfg']['source']) || !is_array($field['cfg']['source'])) { $value = ''; } break; } $value = array(); if (in_array(@$field['cfg']['source'], array('users', 'groups', 'usersgroups'))) { $udp = UsersGroups::getDisplayData($ids); foreach ($ids as $id) { if (empty($udp[$id])) { continue; } $r =& $udp[$id]; $label = @htmlspecialchars(Util\coalesce($r['title'], $r['name']), ENT_COMPAT); if ($html) { switch (@$field['cfg']['renderer']) { case 'listGreenIcons': $label = '<li class="icon-padding icon-element">' . $label . '</li>'; break; // case 'listObjIcons': // case 'listObjIcons': default: $icon = empty($r['iconCls']) ? 'icon-none' : $r['iconCls']; $label = '<li class="icon-padding ' . $icon . '">' . $label . '</li>'; break; } } $value[] = $label; } } else { $objects = \CB\Objects::getCachedObjects($ids); foreach ($ids as $id) { if (empty($objects[$id])) { continue; } $obj =& $objects[$id]; $d = $obj->getData(); $label = $obj->getHtmlSafeName(); $pids = $d['pids']; if ($html && !empty($pids)) { $pids = str_replace(',', '/', $pids); $linkType = empty($field['cfg']['linkType']) ? '' : 'link-type-' . $field['cfg']['linkType']; $label = '<a class="click ' . $linkType . '" template_id="' . $d['template_id'] . '" path="' . $pids . '" nid="' . $id . '">' . $label . '</a>'; } switch (@$field['cfg']['renderer']) { case 'listGreenIcons': $value[] = $html ? '<li class="icon-padding icon-element">' . $label . '</li>' : $label; break; // case 'listObjIcons': // case 'listObjIcons': default: $icon = \CB\Browser::getIcon($d); if (empty($icon)) { $icon = 'icon-none'; } $value[] = $html ? '<li class="icon-padding ' . $icon . '">' . $label . '</li>' : $label; break; } } } $value = $html ? '<ul class="clean">' . implode('', $value) . '</ul>' : implode(', ', $value); break; case '_fieldTypesCombo': $value = L\get(@static::$fieldTypeNames[$value]); break; case 'date': $value = Util\formatMysqlDate(Util\dateISOToMysql($value)); break; case 'datetime': $value = Util\UTCTimeToUserTimezone($value); break; case 'time': if (empty($value)) { continue; } $format = empty($field['format']) ? 'H:i' : $field['format']; if (is_numeric($value)) { $s = $value % 60; $value = floor($value / 60); $m = $value % 60; $value = floor($value / 60); if (strlen($value) < 2) { $value = '0' . $value; } if (strlen($m) < 2) { $m = '0' . $m; } $value .= ':' . $m; if (!empty($s)) { if (strlen($s) < 2) { $s = '0' . $s; } $value .= ':' . $s; } } else { $date = \DateTime::createFromFormat($format, $value); if (is_object($date)) { $value = $date->format($format); } } break; case 'html': $cacheValue = false; // $value = trim(strip_tags($value)); // $value = nl2br($value); break; case 'varchar': case 'memo': case 'text': $cacheValue = false; $renderers = ''; if (!empty($field['cfg']['linkRenderers'])) { $renderers = $field['cfg']['linkRenderers']; } elseif (!empty($field['cfg']['text_renderer'])) { $renderers = $field['cfg']['text_renderer']; } $value = empty($renderers) ? nl2br(htmlspecialchars($value, ENT_COMPAT)) : nl2br(Comment::processAndFormatMessage($value), $renderers); break; default: if (is_array($value)) { $cacheValue = false; $value = Util\jsonEncode($value); } else { $value = htmlspecialchars($value, ENT_COMPAT); } } } if ($cacheValue) { Cache::set($cacheVarName, $condition . $value); } return $condition . $value; }
protected function getData($p) { $rez = array(); if (empty($p)) { return $rez; } // form columns L\initTranslations(); $defaultColumns = Config::getDefaultGridColumnConfigs(); $columns = $defaultColumns; // retreive data $p['start'] = 0; $p['rows'] = 500; $sr = new \CB\BrowserView(); $results = $sr->getChildren($p); if (!empty($results['DC'])) { $columns = array(); foreach ($results['DC'] as $colName => $col) { if (@$col['hidden'] !== true) { $columns[$colName] = $col; } } } $colTitles = array(); foreach ($columns as $name => &$col) { $colTitles[] = empty($defaultColumns[$name]) ? @Util\coalesce($col['title'], $name) : $defaultColumns[$name]['title']; } //insert header $rez[] = $colTitles; while (!empty($results['data'])) { foreach ($results['data'] as $r) { $record = array(); foreach ($columns as $colName => $col) { if (@$col['xtype'] == 'datecolumn') { $value = Util\dateISOToMysql(@$r[$colName]); if (!empty($col['format'])) { $value = Util\formatMysqlTime($value, $col['format']); } else { $value = Util\formatMysqlTime($value); $tmp = explode(' ', $value); if (!empty($tmp[1]) && $tmp[1] == '00:00') { $value = $tmp[0]; } } $record[] = $value; } elseif (strpos($colName, 'date') === false) { if (in_array($colName, array('oid', 'cid', 'uid')) && !empty($r[$colName])) { $record[] = User::getDisplayName($r[$colName]); } else { $record[] = @$r[$colName]; } } } $rez[] = $record; } if ($p['start'] + $p['rows'] < $results['total']) { $p['start'] += $p['rows']; $results = $sr->getChildren($p); } else { $results['data'] = array(); } } return $rez; }