예제 #1
0
 /**
  * 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);
 }
예제 #2
0
파일: Files.php 프로젝트: sebbie42/casebox
 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);
 }
예제 #3
0
파일: Task.php 프로젝트: youprofit/casebox
 /**
  * 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;
 }
예제 #4
0
 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);
 }
예제 #5
0
 /**
  * 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;
 }
예제 #6
0
 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;
 }