function getData($event_data){ // get the day if (array_var($event_data, 'start_value') != '') { $date_from_widget = array_var($event_data, 'start_value'); $dtv = getDateValue($date_from_widget); $day = $dtv->getDay(); $month = $dtv->getMonth(); $year = $dtv->getYear(); } else { $month = isset($event_data['month'])?$event_data['month']:date('n', DateTimeValueLib::now()->getTimestamp()); $day = isset($event_data['day'])?$event_data['day']:date('j', DateTimeValueLib::now()->getTimestamp()); $year = isset($event_data['year'])?$event_data['year']:date('Y', DateTimeValueLib::now()->getTimestamp()); } if (array_var($event_data, 'start_time') != '') { $this->parseTime(array_var($event_data, 'start_time'), $hour, $minute); } else { $hour = array_var($event_data, 'hour'); $minute = array_var($event_data, 'minute'); if(array_var($event_data, 'pm') == 1) $hour += 12; } if (array_var($event_data, 'type_id') == 2 && $hour == 24) $hour = 23; // repeat defaults $repeat_d = 0; $repeat_m = 0; $repeat_y = 0; $repeat_h = 0; $repeat_h_params = array('dow' => 0, 'wnum' => 0, 'mjump' => 0); $rend = ''; // get the options $forever = 0; $jump = array_var($event_data,'occurance_jump'); if(array_var($event_data,'repeat_option') == 1) $forever = 1; elseif(array_var($event_data,'repeat_option') == 2) $rnum = array_var($event_data,'repeat_num'); elseif(array_var($event_data,'repeat_option') == 3) $rend = getDateValue(array_var($event_data,'repeat_end')); // verify the options above are valid if(isset($rnum) && $rnum !="") { if(!is_numeric($rnum) || $rnum < 1 || $rnum > 1000) { throw new Exception(CAL_EVENT_COUNT_ERROR); } } else $rnum = 0; if($jump != ""){ if(!is_numeric($jump) || $jump < 1 || $jump > 1000) { throw new Exception(CAL_REPEAT_EVERY_ERROR); } } else $jump = 1; // check for repeating options // 1=repeat once, 2=repeat daily, 3=weekly, 4=monthy, 5=yearly, 6=holiday repeating $oend = null; switch(array_var($event_data,'occurance')){ case "1": $forever = 0; $repeat_d = 0; $repeat_m = 0; $repeat_y = 0; $repeat_h = 0; break; case "2": $repeat_d = $jump; if(isset($forever) && $forever == 1) $oend = null; else $oend = $rend; break; case "3": $repeat_d = 7 * $jump; if(isset($forever) && $forever == 1) $oend = null; else $oend = $rend; break; case "4": $repeat_m = $jump; if(isset($forever) && $forever == 1) $oend = null; else $oend = $rend; break; case "5": $repeat_y = $jump; if(isset($forever) && $forever == 1) $oend = null; else $oend = $rend; break; case "6": $repeat_h = 1; $repeat_h_params = array( 'dow' => array_var($event_data, 'repeat_dow'), 'wnum' => array_var($event_data, 'repeat_wnum'), 'mjump' => array_var($event_data, 'repeat_mjump'), ); break; } $repeat_number = $rnum; // get duration $durationhour = array_var($event_data,'durationhour'); $durationmin = array_var($event_data,'durationmin'); // get event type: 2=full day, 3=time/duratin not specified, 4=time not specified $typeofevent = array_var($event_data,'type_id'); if(!is_numeric($typeofevent) OR ($typeofevent!=1 AND $typeofevent!=2 AND $typeofevent!=3)) $typeofevent = 1; if ($durationhour == 0 && $durationmin < 15 && $typeofevent != 2) { throw new Exception(lang('duration must be at least 15 minutes')); } // calculate timestamp and durationstamp $dt_start = new DateTimeValue(mktime($hour, $minute, 0, $month, $day, $year) - logged_user()->getTimezone() * 3600); $timestamp = $dt_start->format('Y-m-d H:i:s'); $dt_duration = DateTimeValueLib::make($dt_start->getHour() + $durationhour, $dt_start->getMinute() + $durationmin, 0, $dt_start->getMonth(), $dt_start->getDay(), $dt_start->getYear()); $durationstamp = $dt_duration->format('Y-m-d H:i:s'); // organize the data expected by the query function $data = array(); $data['repeat_num'] = $rnum; $data['repeat_h'] = $repeat_h; $data['repeat_dow'] = $repeat_h_params['dow']; $data['repeat_wnum'] = $repeat_h_params['wnum']; $data['repeat_mjump'] = $repeat_h_params['mjump']; $data['repeat_d'] = $repeat_d; $data['repeat_m'] = $repeat_m; $data['repeat_y'] = $repeat_y; $data['repeat_forever'] = $forever; $data['repeat_end'] = $oend; $data['start'] = $timestamp; $data['name'] = array_var($event_data,'name'); $data['description'] = array_var($event_data,'description'); $data['type_id'] = $typeofevent; $data['duration'] = $durationstamp; $data['users_to_invite'] = array(); // options when creating an event through a POP UP if (array_var($_POST, 'popup')){ $user_filter = user_config_option('calendar user filter'); if ($user_filter == '0' || $user_filter == '-1') { $user_filter = logged_user()->getId(); } $data['users_to_invite'][$user_filter] = 0; if ($user_filter != logged_user()->getId() && user_config_option('autoassign_events')){ $data['users_to_invite'][logged_user()->getId()] = 1; } } $compstr = 'invite_user_'; foreach ($event_data as $k => $v) { if (str_starts_with($k, $compstr) && ($v == 'checked' || $v == 'on')) { $data['users_to_invite'][substr($k, strlen($compstr))] = 0; // Pending Answer } } if (isset($event_data['confirmAttendance'])) { $data['confirmAttendance'] = array_var($event_data, 'confirmAttendance'); } if (isset($event_data['send_notification'])) { $data['send_notification'] = array_var($event_data,'send_notification') == 'checked'; } if (isset($event_data['subscribe_invited'])) { $data['subscribe_invited'] = array_var($event_data,'subscribe_invited') == 'checked'; } return $data; }
/** * Get log data * * @param integer $revision_to * @param mixed $revision_from * @return array */ function getLogs($revision_to, $revision_from = 'HEAD', $logs_per_query = 100) { // get multiple logs or a single one if (!is_null($revision_from)) { $r = $revision_from . ':' . $revision_to; } else { $r = $revision_to; $this->triggerred_by_handler = true; } // if $string = 'log -r ' . $r . ' --xml --verbose ' . $this->active_repository->getUrl(); $this->execute($string); $log_data = xml2array(implode("\n", $this->output), 1, array('path', 'logentry')); $insert_data = array(); $i = 1; // this is because we get commits from SVN sorted from newest to oldest $logs = is_array($log_data['log']['logentry']) ? array_reverse($log_data['log']['logentry']) : array(); // loop through array of log entries foreach ($logs as $key => $log_entry) { // prevent duplicate entries in case when there are two separate update processes // (like, both scheduled task and aC user triggered the update if (Commits::count("parent_id = '" . $this->active_repository->getId() . "' AND integer_field_1 = '" . $log_entry['attr']['revision'] . "'") > 0) { continue; } // if $paths = array(); $k = 0; foreach ($log_entry['paths']['path'] as $path) { $paths[$k]['path'] = mysql_real_escape_string($path['value']); // paths can contain file names with characters that can break the query $paths[$k]['action'] = $path['attr']['action']; $k++; } // foreach $date = new DateTimeValue($log_entry['date']['value']); $log_date = $date->getYear() . "-" . $date->getMonth() . '-' . $date->getDay() . ' ' . $date->getHour() . ':' . $date->getMinute() . ':' . $date->getSecond(); $commit_message = Commit::analyze_message($log_entry['msg']['value'], $log_entry['author']['value'], $log_entry['attr']['revision'], $this->active_repository, $this->active_project); $insert_data[$i][$key] = "('Commit','Source','" . $this->active_project->getId() . "','" . $this->active_repository->getId() . "','Repository','" . mysql_real_escape_string($commit_message) . "','" . $log_entry['attr']['revision'] . "','" . serialize($paths) . "','" . mysql_real_escape_string($log_entry['author']['value']) . "','{$log_date}', '" . STATE_VISIBLE . "', '" . $this->active_repository->getVisibility() . "')"; $i = count($insert_data[$i]) < $logs_per_query ? $i : $i + 1; } // foreach return array('data' => $insert_data, 'total' => count($logs)); }