Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 853

Přidáno uživatelem Michal Kliment před více než 13 roky(ů)

Nektere starsi rozdelene veci, ktere jsem necomitnul.

Zobrazit rozdíly:

freenetis/branches/approval/application/models/watchdog_cond.php
<?php
/**
*
* @author Michal Kliment
* @copyright (c) 2010 Kliment Michal
* @license GNU GPLv3
* @license http://www.gnu.org/licenses/gpl.txt
*/
class Watchdog_cond_Model extends ORM
{
protected $belongs_to = array('watchog');
}
?>
freenetis/branches/approval/application/models/user.php
) di
")->current()->total;
}
public function get_name_by_id ($user_id)
{
$result = $this->db->query("SELECT id, CONCAT(name,' ',surname) AS name FROM users WHERE id = ?", array($user_id));
return ($result && $result->current() && $result->current()->id) ? $result->current()->name : '';
}
}
freenetis/branches/approval/application/models/approval_template_item.php
{
$cond = ($suggest_amount) ? ' AND t.min_suggest_amount <= '.$suggest_amount : '';
return $this->db->query('SELECT g.aro_id AS id FROM approval_template_items i
$result = $this->db->query('SELECT g.aro_id AS id FROM approval_template_items i
LEFT JOIN approval_types t ON i.approval_type_id = t.id
LEFT JOIN groups_aro_map g ON t.aro_group_id = g.group_id
WHERE i.approval_template_id = '.$template_id.$cond.'
GROUP BY g.aro_id');
$arr = array();
foreach ($result as $aro)
$arr[] = $aro->id;
return $arr;
}
}
freenetis/branches/approval/application/models/watchdog.php
<?php
/**
*
* @author Michal Kliment
* @copyright (c) 2010 Kliment Michal
* @license GNU GPLv3
* @license http://www.gnu.org/licenses/gpl.txt
*/
class Watchdog_Model extends ORM
{
protected $has_many = array('watchdog_conds');
}
?>
freenetis/branches/approval/application/models/job.php
class Job_Model extends ORM
{
protected $belongs_to = array('user', 'approval_template');
protected $belongs_to = array('user', 'approval_template', 'job_report');
/**
* @author Michal Kliment
......
WHERE j.job_report_id = '.$job_report_id.'
ORDER BY date');
}
public function get_all_by_work_report ($work_report_id)
{
return $this->db->query('SELECT j.*, 0 AS hour_rate, 0 AS km_rate FROM jobs j
WHERE job_report_id = ?
ORDER BY date ASC, time_from ASC', array($work_report_id));
}
}
?>
freenetis/branches/approval/application/models/job_report.php
return count($work_reports);
}
/**
* Returns suggest amount of work report
*
* @author Michal Kliment
* @param integer $job_report_id
* @return float
*/
public function get_suggest_amount($job_report_id = NULL)
{
if (!$job_report_id)
$job_report_id = $this->id;
return $this->db->query("SELECT SUM(suggest_amount) AS suggest_amount FROM jobs j WHERE j.job_report_id = ?", array($job_report_id))->current()->suggest_amount;
}
}
?>
freenetis/branches/approval/application/controllers/approval_templates.php
url::redirect(url_lang::base().'approval_templates/show_all');
}
/**
* Updates state of approval template
*
* @author Michal Kliment
* @param numeric $approval_template_id
* @return boolean
*/
public static function update_state($approval_template_id)
{
$approval_template = new Approval_template_Model($approval_template_id);
$approval_template->state = $approval_template->get_state($approval_template->id);
return $approval_template->save();
}
/** CALLBACK FUNCTIONS **/
/**
freenetis/branches/approval/application/controllers/js.php
}
/**
* This method is call only in edit method in works controller
* This method is called only in edit method in works controller
* @author Michal Kliment
* @param numeric $work_id
*/
......
}
/**
* This method is called only in show method in work reports controller
* @author Michal Kliment
* @param numeric $work_report_id
*/
public function work_reports_show($work_report_id = NULL)
{
// parameter isn't bad
if ($work_report_id && is_numeric($work_report_id))
{
$work_report = new Job_report_Model($work_report_id);
// work reports exists
if ($work_report->id)
$this->views['work_reports_show']->i = count($work_report->jobs);
}
}
/**
* Method for remap default behaviour of controllers
* @author Michal Kliment
* @param <type> $method
freenetis/branches/approval/application/controllers/watchdogs.php
<?php
class Watchdogs_Controller extends Controller
{
private static $model = null;
/**
* Returns array of users who belong to watchdog
*
* @author Michal Kliment
* @param mixed object $object
* @param string $table
* @param string $action
* @return array
*/
public static function get_users_by_object_table_action ($object, $table, $action = 'all')
{
// creates model only once
if (!self::$model)
self::$model = new Watchdog_Model();
// finds all watchdogs belong to this table
$watchdogs = self::$model->like(array('table' => $table))->find_all();
$arr_users = array();
foreach ($watchdogs as $watchdog)
{
$return = true;
$allowed_actions = explode(",",$watchdog->action);
if (!in_array($action, $allowed_actions) && !in_array('all', $allowed_actions))
continue;
foreach ($watchdog->watchdog_conds as $cond)
{
if (!isset($object->{$cond->column}))
{
$return = false;
break;
}
switch ($cond->op)
{
case '=':
$return = $return && ($object->{$cond->column} == $cond->value);
break;
case '>':
$return = $return && ($object->{$cond->column} > $cond->value);
break;
case '<':
$return = $return && ($object->{$cond->column} < $cond->value);
break;
case '>=':
$return = $return && ($object->{$cond->column} >= $cond->value);
break;
case '<=':
$return = $return && ($object->{$cond->column} <= $cond->value);
break;
case '!=':
$return = $return && ($object->{$cond->column} != $cond->value);
break;
case 'CONTAINS':
$return = $return && (strpos($object->{$cond->column}, $cond->value) !== false);
break;
case 'NOT_CONTAINS':
$return = $return && (strpos($object->{$cond->column}, $cond->value) === false);
break;
case 'STARTS_WITH':
$return = $return && (strpos($object->{$cond->column}, $cond->value) == 0);
break;
case 'ENDS_WITH':
$return = $return && (substr($object->{$cond->column}, strlen($cond->value)*-1) == $cond->value);
break;
default:
$return = false;
break 2;
}
if ($return == false)
break;
}
if ($return == false)
continue;
$arr_users[] = $watchdog->user_id;
}
return $arr_users;
}
/**
* Returns array of users who belong to watchdog
*
* @author Michal Kliment
* @param ORM object $object
* @param string $action
* @return arary
*/
public static function get_users_by_object_action ($object, $action = 'all')
{
return self::get_users_by_object_table_action ($object, $object->get_table_name(), $action = 'all');
}
}
?>
freenetis/branches/approval/application/controllers/work_reports.php
$arr_works = array();
$work_model = new Job_Model();
$works = $work_model->where('job_report_id', $work_report->id)->orderby(array('date'=>'ASC', 'time_from' => 'ASC'))->find_all();
$works = $work_model->get_all_by_work_report($work_report->id);
// create grid
$grid = new Grid(url_lang::base().'work_reports/show/'.$work_report->id, '', array(
......
$grid->datasource($works);
if (isset($_POST) && $_POST)
{
$form_data = $_POST;
$work = new Job_Model();
foreach ($form_data['date'] as $i => $date)
{
if (isset($form_data['id'][$i]) && is_numeric($form_data['id'][$i]) && $form_data['id'][$i])
$work->where('id',$form_data['id'][$i])->find();
else
$work->clear();
$work->job_report_id = $work_report->id;
$work->user_id = $work_report->user_id;
$work->added_by_id = $this->session->get('user_id');
$work->approval_template_id = $work_report->approval_template_id;
$work->description = $form_data['description'][$i];
$work->suggest_amount = $form_data['suggest_amount'][$i];
$work->date = $form_data['date'][$i];
$work->create_date = date('Y-m-d');
$work->time_from = $form_data['time_from'][$i];
$work->time_to = $form_data['time_to'][$i];
$work->hours = $form_data['hours'][$i];
$work->km = $form_data['km'][$i];
$work->state = 0;
$work->save();
}
url::redirect(url::base().url::current(TRUE));
}
$view = new View('main');
$view->title = 'zobraz';
$view->content = new View('work_reports_show');
freenetis/branches/approval/application/controllers/works.php
// access control
if ($this->acl_check_view('Users_Controller','work',$user->member_id))
$pending_works_grid->action_field('id')->label(url_lang::lang('texts.Show')) ->url(url_lang::base().'works/show') ->action(url_lang::lang('texts.Show'))->class('center');
$pending_works_grid->action_field('id')->label(url_lang::lang('texts.Show')) ->url(url_lang::base().'works/show') ->action(url_lang::lang('texts.Show'))->class('center');
$pending_works_grid->datasource($pending_works);
......
*/
function add($user_id = null)
{
if(isset($user_id))
if($user_id)
{
$user = new User_Model($user_id);
if ($user->id == 0)
if (!$user->id)
Controller::error(RECORD);
// access control
if (!$this->acl_check_new('Users_Controller','work', $user->member_id))
......
$link_back = url_lang::base().'works/pending';
$anchor = html::anchor($link_back, url_lang::lang('texts.Back to list of all pending works'));
}
if ($form->validate())
{
// form is validate
if ($form->validate())
{
$form_data = $form->as_array();
// creates new work
......
else
$work->approval_template_id = $this->settings->get('default_work_approval_template');
$saved = $work->save();
// saves work and updates state of approval template
$saved = $work->save() && Approval_templates_Controller::update_state($work->approval_template_id);
// set up state of approval template
$approval_template = new Approval_template_Model($work->approval_template_id);
$approval_template->state = $approval_template->get_state($approval_template->id);
$saved = $saved && $approval_template->save();
// success
if ($saved)
{
$receivers = array();
/*$receivers = array();
$mail_message = new Mail_message_Model();
$user = new User_Model();
......
}
}
}
}
}*/
$this->session->set_flash('message', url_lang::lang('texts.Work has been successfully added').'.');
url::redirect(url_lang::base().'works/show/'.$work->id);
......
$work = new Job_Model();
$work->job_report_id = $work_report->id;
$work->user_id = $work_report->user_id;
$work->added_by_id = $this->session->get('user_id');
$work->approval_template_id = $work_report->approval_template_id;
$work->description = $form_data['description'];
$work->suggest_amount = $form_data['suggest_amount'];
$work->date = $form_data['date'];
......
$work->time_to = $form_data['time_to'];
$work->hours = $form_data['hours'];
$work->km = $form_data['km'];
$work->state = 0;
// work is saved
if ($work->save())
......
}
/**
* Edits work
*
* @author Michal Kliment
* Edits work
* @param $work_id id of work to edit
*/
function edit($work_id = NULL)
......
Controller::error(ACCESS);
// work is locked
if ($work->state > 0)
if ((!$work->job_report_id && $work->state > 0) || ($work->job_report_id && $work->job_report->state > 0))
{
$this->session->set_flash('message', url_lang::lang('texts.It is not possible edit locked work.'));
url::redirect(url_lang::base().'works/show/'.$work->id);
}
$user_model = new User_Model();
// check if user has access rights to edit work of all users
if ($this->acl_check_edit('Users_Controller','work'))
// shows user's select and approval template's select only at work which is not from work report
if (!$work->job_report_id)
{
// gets all user's names
$users = $user_model->get_his_users_names($work->user_id);
}
else
{
$users = $user_model->get_his_username($work->user_id);
}
$user_model = new User_Model();
// transforms array of objects to classic array
$arr_users = arr::from_objects($users, 'username');
// check if user has access rights to edit work of all users
if ($this->acl_check_edit('Users_Controller','work'))
{
// gets all user's names
$users = $user_model->get_his_users_names($work->user_id);
}
else
{
$users = $user_model->get_his_username($work->user_id);
}
if ($this->acl_check_view('approval','templates'))
{
$approval_template_model = new Approval_template_Model();
$approval_templates = $approval_template_model->find_all();
// transforms array of objects to classic array
$arr_users = arr::from_objects($users, 'username');
// transforms array of objects to classic array
$arr_approval_templates = arr::from_objects($approval_templates);
$arr_approval_templates = arr::merge(array(NULL => '----- '.url_lang::lang('texts.select approval template').' -----'),$arr_approval_templates);
if ($this->acl_check_view('approval','templates'))
{
$approval_template_model = new Approval_template_Model();
$approval_templates = $approval_template_model->find_all();
// transforms array of objects to classic array
$arr_approval_templates = arr::from_objects($approval_templates);
$arr_approval_templates = arr::merge(array(NULL => '----- '.url_lang::lang('texts.select approval template').' -----'),$arr_approval_templates);
}
}
// creates form
......
$this->form->set_attr('class', 'form_class')->set_attr('method', 'post');
$this->form->group('')->label(url_lang::lang('texts.Basic information'));
$this->form->dropdown('user_id')->label(url_lang::lang('texts.User'))->options($arr_users)->rules('required')->selected($work->user_id);
if (!$work->job_report_id)
$this->form->dropdown('user_id')->label(url_lang::lang('texts.User'))->options($arr_users)->rules('required')->selected($work->user_id);
$this->form->textarea('description')->label(url_lang::lang('texts.Description').':')->rules('required|length[0,65535]')->value($work->description);
$this->form->input('date')->label(url_lang::lang('texts.Date').':')->rules('required|length[10,10]|valid_date_string')->value($work->date)->class('date');
// shows time from and time to only if work is from work report
if ($work->job_report_id)
{
$this->form->input('time_from')->label(url_lang::lang('texts.Time from').':')->rules('required|length[5,5]|valid_time')->class('time_from');
$this->form->input('time_to')->label(url_lang::lang('texts.Time to').':')->rules('length[5,5]|valid_time')->class('time_to');
$this->form->input('time_from')->label(url_lang::lang('texts.Time from').':')->rules('required|length[5,5]|valid_time')->class('time_from')->value(substr($work->time_from,0,5));
$this->form->input('time_to')->label(url_lang::lang('texts.Time to').':')->rules('length[5,5]|valid_time')->class('time_to')->value(substr($work->time_to,0,5));
}
$this->form->input('hours')->label(url_lang::lang('texts.Hours').':')->rules('required|length[0,250]|valid_numeric')->value($work->hours);
......
$this->form->input('km')->label(url_lang::lang('texts.Km').':')->rules('length[0,250]|valid_numeric')->value($work->km);
$this->form->input('km_rate')->label(url_lang::lang('texts.Rate for Km').':')->rules('length[0,250]|valid_numeric');
$this->form->input('suggest_amount')->label(url_lang::lang('texts.Suggest amount').':')->rules('required|valid_numeric')->value($work->suggest_amount);
if ($this->acl_check_view('approval','templates'))
// work is not from any work report and user has rights to change approval template
if (!$work->job_report_id && $this->acl_check_view('approval','templates'))
{
$this->form->group('')->label(url_lang::lang('texts.Advanced information'));
$this->form->dropdown('approval_template_id')->label(url_lang::lang('texts.Approval template').':')->rules('required')->options($arr_approval_templates)->selected($work->approval_template_id);
......
// creates new work
$work = new Job_Model($work_id);
$work->user_id = $form_data['user_id'];
$work->added_by_id = $this->session->get('user_id');
$work->description = $form_data['description'];
$work->date = $form_data['date'];
if ($work->job_report_id)
{
// sets up time from and to only to work from work report
$work->time_from = $form_data['time_from'];
$work->time_to = $form_data['time_to'];
}
else
{
// sets up user only to work which is not from work report
$work->user_id = $form_data['user_id'];
// approval template has been changed
if (isset($form_data['approval_template_id']) && $form_data['approval_template_id'] && $form_data['approval_template_id'] != $work->approval_template_id)
{
// remembers old approval template
$old_approval_template_id = $work->approval_template_id;
// sets up new approval template
$work->approval_template_id = $form_data['approval_template_id'];
}
}
$work->hours = $form_data['hours'];
$work->km = $form_data['km'];
$work->suggest_amount = $form_data['suggest_amount'];
$old_approval_template_id = $work->approval_template_id;
if (isset($form_data['approval_template_id']) && $form_data['approval_template_id'])
$work->approval_template_id = $form_data['approval_template_id'];
else
$work->approval_template_id = $this->settings->get('default_work_approval_template');
$saved = $work->save();
// set up state of approval template
$approval_template = new Approval_template_Model($work->approval_template_id);
$approval_template->state = $approval_template->get_state($approval_template->id);
$saved = $saved && $approval_template->save();
// work is not from work report
if (!$work->job_report_id)
{
// set up state of approval template
$saved = $saved && Approval_templates_Controller::update_state($work->approval_template_id);
if ($work->approval_template_id != $old_approval_template_id)
{
// set up state of old approval template
$approval_template = new Approval_template_Model($old_approval_template_id);
$approval_template->state = $approval_template->get_state($approval_template->id);
$saved = $saved && $approval_template->save();
if (isset($old_approval_template_id))
{
// set up state of old approval template
$saved = $saved && Approval_templates_Controller::update_state($old_approval_template_id);
}
}
// success
if ($saved)
{
$receivers = array();
$mail_message = new Mail_message_Model();
$user = new User_Model();
$user_id = (!$work->job_report_id) ? $work->user_id : $work->job_report->user_id;
$approval_template_id = (!$work->job_report_id) ? $work->approval_template_id : $work->job_report->approval_template_id;
$suggest_amount = (!$work->job_report_id) ? $work->suggest_amount : $work->job_report->get_suggest_amount();
// work has been updated by another user, sends message to user
if ($work->user_id != $this->session->get('user_id'))
{
$user->clear();
$user->where('id', $this->session->get('user_id'))->find();
Mail_messages_Controller::send_system(array(
'subject' => mail_message::format('your_work_update_subject'),
'body' => mail_message::format('your_work_update', array(ORM::factory('User')->get_name_by_id($this->session->get('user_id')), url_lang::base().'works/show/'.$work->id))
), $user_id, FALSE);
$receivers[] = $work->user_id;
$mail_message->clear();
$mail_message->from_id = 1;
$mail_message->to_id = $form_data['user_id'];
$mail_message->subject = mail_message::format('your_work_update_subject');
$mail_message->body = mail_message::format('your_work_update', array($user->name.' '.$user->surname, url_lang::base().'works/show/'.$work->id));
$mail_message->time = date('Y-m-d H:i:s');
$mail_message->from_deleted = 1;
$mail_message->save();
}
// finds all aro ids assigned to vote about this work
$approval_template_item_model = new Approval_template_item_Model();
$aro_ids = $approval_template_item_model->get_aro_ids_by_approval_template_id($work->approval_template_id, $work->suggest_amount);
$aro_ids = ORM::factory('approval_template_item')->get_aro_ids_by_approval_template_id($approval_template_id, $suggest_amount);
// count of aro ids is not null
if (count($aro_ids))
{
// finds user to whom belongs work
$user->clear();
$user->where('id', $work->user_id)->find();
Mail_messages_Controller::send_system(array(
'subject' => mail_message::format('work_update_subject'),
'body' => mail_message::format('work_update', array(ORM::factory('User')->get_name_by_id($user_id), url_lang::base().'works/show/'.$work->id))
), $aro_ids);
$subject = mail_message::format('work_update_subject');
$body = mail_message::format('work_update', array($user->name.' '.$user->surname, url_lang::base().'works/show/'.$work->id));
foreach ($aro_ids as $aro)
{
// is not necessary send message to user who added work
if ($aro->id != $this->session->get('user_id'))
{
if (!in_array($aro->id, $receivers))
{
$receivers[] = $aro->id;
// sends message
$mail_message->clear();
$mail_message->from_id = 1;
$mail_message->to_id = $aro->id;
$mail_message->subject = $subject;
$mail_message->body = $body;
$mail_message->time = date('Y-m-d H:i:s');
$mail_message->from_deleted = 1;
$mail_message->save();
}
}
}
}
$this->session->set_flash('message', url_lang::lang('texts.Work has been successfully updated').'.');
}
......
Controller::error(RECORD);
// access control
if (!$this->acl_check_delete('Users_Controller', 'work', $work->user->member_id))
if (!$this->acl_check_delete('Users_Controller', 'work', (!$work->job_report_id) ? $work->user->member_id : $work->job_report->user->member_id))
Controller::error(ACCESS);
// work is locked
if ($work->state > 0)
if ((!$work->job_report_id && $work->state > 0) || ($work->job_report_id && $work->job_report->state > 0))
{
$this->session->set_flash('message', url_lang::lang('texts.It is not possible delete locked work.'));
url::redirect(url_lang::base().'works/show/'.$work->id);
}
$approval_template_id = $work->approval_template_id;
$work_user_id= $work->user_id;
if (!$work->job_report_id)
{
$work_approval_template_id = $work->approval_template_id;
$work_user_id = $work->user_id;
}
else
$work_user_id = $work->job_report->user_id;
$work_description = $work->description;
$work_suggest_amount = $work->suggest_amount;
$work_report_id = $work->job_report_id;
$saved = $work->delete();
// set up state of approval template
$approval_template = new Approval_template_Model($approval_template_id);
$approval_template->state = $approval_template->get_state($approval_template->id);
$saved = $saved && $approval_template->save();
if ($saved)
if (!$work_report_id)
{
$receivers = array();
// set up state of approval template
$saved = $saved && Approval_templates_Controller::update_state($work_approval_template_id);
}
else
{
$work_report = new Job_report_Model ($work_report_id);
$mail_message = new Mail_message_Model();
$user = new User_Model();
// work has been updated by another user, sends message to user
if ($work_user_id != $this->session->get('user_id'))
if (!count($work_report->jobs))
{
$user->clear();
$user->where('id',$this->session->get('user_id'))->find();
$work_report->draft = 1;
$saved = $saved && $work_report->save();
}
}
$receivers[] = $work_user_id;
if ($saved)
{
$user_id = (!$work_report_id) ? $work_user_id : $work_report->user_id;
$approval_template_id = (!$work_report_id) ? $work_approval_template_id : $work_report->approval_template_id;
$suggest_amount = (!$work_report_id) ? $work_suggest_amount : $work_report->get_suggest_amount();
$mail_message = new Mail_message_Model();
$mail_message->from_id = 1;
$mail_message->to_id = $work_user_id;
$mail_message->subject = mail_message::format('your_work_delete_subject');
$mail_message->body = mail_message::format('your_work_delete', array($work_description, $user->name.' '.$user->surname));
$mail_message->time = date('Y-m-d H:i:s');
$mail_message->from_deleted = 1;
$mail_message->save();
}
Mail_messages_Controller::send_system(array(
'subject' => mail_message::format('your_work_delete_subject'),
'body' => mail_message::format('your_work_delete', array($work_description, ORM::factory('User')->get_name_by_id($this->session->get('user_id'))))
), $user_id, FALSE);
// finds all aro ids assigned to vote about this work
$approval_template_item_model = new Approval_template_item_Model();
$aro_ids = $approval_template_item_model->get_aro_ids_by_approval_template_id($approval_template_id, $work_suggest_amount);
$aro_ids = ORM::factory('approval_template_item')->get_aro_ids_by_approval_template_id($approval_template_id, $suggest_amount);
// count of aro ids is not null
if (count($aro_ids))
{
// finds user to whom belongs work
$user->clear();
$user->where('id', $work_user_id)->find();
Mail_messages_Controller::send_system(array(
'subject' => mail_message::format('work_delete_subject'),
'body' => mail_message::format('work_delete', array(ORM::factory('User')->get_name_by_id($user_id), $work_description))
), $aro_ids);
$subject = mail_message::format('work_delete_subject');
$body = mail_message::format('work_delete', array($user->name.' '.$user->surname, $work_description));
foreach ($aro_ids as $aro)
{
// is not necessary send message to user who added work
if ($aro->id != $this->session->get('user_id'))
{
if (!in_array($aro->id, $receivers))
{
$receivers[] = $aro->id;
// sends message
$mail_message->clear();
$mail_message->from_id = 1;
$mail_message->to_id = $aro->id;
$mail_message->subject = $subject;
$mail_message->body = $body;
$mail_message->time = date('Y-m-d H:i:s');
$mail_message->from_deleted = 1;
$mail_message->save();
}
}
}
}
$this->session->set_flash('message', url_lang::lang('texts.Work has been successfully deleted').'.');
}
if ($work_report_id)
url::redirect(url_lang::base().'work_reports/show/'.$work_report_id);
else
......
echo $input->html();
}
}
}
}
}
?>
freenetis/branches/approval/application/controllers/mail_messages.php
class Mail_messages_Controller extends Controller
{
private static $message = array(
'subject' => '',
'body' => '',
'time' => NULL,
'from_deleted' => 0,
'to_deleted' => 0
);
private static $model = NULL;
private static $recipients = array();
function show($message_id = NULL)
{
if (!$message_id || !is_numeric($message_id))
......
$view->render(TRUE);
}
/**
* Sends mail message
*
* @author Michal Kliment
* @param mixed (string|array) $message
* @param mixed (integer|array) $from
* @param mixed (integer|array) $to
* @param boolean $clear_recipients
* @return boolean
*/
public static function send($message, $from, $to, $clear_recipients = TRUE)
{
$return_value = True;
if ($clear_recipients != FALSE)
self::$recipients = array();
// converts to array
if (!is_array($message))
$message = array('body' => $message);
// converts to array
if (!is_array($from))
$from = array($from);
// converts to array
if (!is_array($to))
$to = array($to);
foreach ($message as $key => $value)
if (isset(self::$message[$key]))
self::$message[$key] = $value;
if (!self::$model)
self::$model = new Mail_message_Model();
foreach ($from as $from_user_id)
{
foreach ($to as $to_user_id)
{
if ($to_user_id == Session::instance()->get('user_id'))
continue;
if (in_array($to_user_id, self::$recipients))
continue;
self::$recipients[] = $to_user_id;
self::$model->clear();
self::$model->from_id = $from_user_id;
self::$model->to_id = $to_user_id;
foreach (self::$message as $key => $value)
self::$model->$key = $value;
if (self::$model->time == '')
self::$model->time = date('Y-m-d H:i:s');
$return_value = $return_value && self::$model->save();
}
}
return $return_value;
}
public static function send_system($message, $to, $clear_recipients = TRUE)
{
if (!is_array($message))
$message = array('body' => $message);
$message['from_deleted'] = 1;
return self::send($message, 1, $to, $clear_recipients);
}
public function valid_to_field($input)
{
$value = trim($input->value);
freenetis/branches/approval/application/views/js/work_reports_show.php
$("#work_report_info").children("tbody").append("<tr>").children().last().append("<th><?php echo url_lang::lang('texts.Rate for hour') ?></th>").append("<td>").children().last().append("<input type=text id='hour_rate' class='number'>");
$("#work_report_info").children("tbody").append("<tr>").children().last().append("<th><?php echo url_lang::lang('texts.Rate for Km') ?></th>").append("<td>").children().last().append("<input type=text id='km_rate' class='number'>");
$(".edit_button").each(function (){
i++;
$(this).attr("id", 'edit-'+i);
});
i = <?php echo $i ?>;
$("#hour_rate, #km_rate").live("keyup", function () {
var hour_rate = $("#hour_rate").val();
......
$(".hour_rate").each(function (){
if (!is_numeric($(this).val()) || old_hour_rate == $(this).val())
$(this).val(hour_rate);
if ($(this).is("td") && $(this).text()!="")
{
if (!is_numeric($(this).text()) || old_hour_rate == $(this).text())
$(this).text(hour_rate);
}
});
old_hour_rate = hour_rate;
}
......
$(".km_rate").each(function (){
if (!is_numeric($(this).val()) || old_km_rate == $(this).val())
$(this).val(km_rate);
if ($(this).is("td") && $(this).text()!="")
{
if (!is_numeric($(this).text()) || old_km_rate == $(this).text())
$(this).text(km_rate);
}
});
old_km_rate = km_rate;
}
......
i++;
$(".work_reports_submit").removeAttr("disabled");
//$(".work_reports_submit").removeAttr("disabled");
var row = $(".grid_table").children("tbody").append("<tr>").children().last();
date = row.append("<td>").children().last().append("<input type=text name='date["+i+"]' class='date required'>").children().last();
date = row.append("<td>").children().last().append("<input type=text name='date["+i+"]' class='date datestring required'>").children().last();
time_from = row.append("<td>").children().last().append("<input type=text name='time_from["+i+"]' class='time_from time required'>").children().last();
time_to = row.append("<td>").children().last().append("<input type=text name='time_to["+i+"]' class='time_to time'>").children().last();
hours = row.append("<td>").children().last().append("<input type=text name='hours["+i+"]' class='hours required number'>").children().last();
......
return false;
});
var old_values = new Array();
$(".edit_button").live("click", function() {
var s = explode("-",$(this).attr("id"));
var id = s[count(s)-1];
var date = $(this).parent().parent().children().first();
var time_from = date.next();
var time_to = time_from.next();
var hours = time_to.next();
var hour_rate = hours.next();
var km = hour_rate.next();
var km_rate = km.next();
var description = km_rate.next();
var suggest_amount = description.next();
if (old_values[id] == null)
{
old_values[id] = new Array();
old_values[id]['date'] = trim(date.text());
old_values[id]['time_from'] = trim(time_from.text());
old_values[id]['time_to'] = trim(time_to.text());
old_values[id]['hours'] = trim(hours.text());
old_values[id]['hour_rate'] = trim(hour_rate.text());
old_values[id]['km'] = trim(km.text());
old_values[id]['km_rate'] = trim(km_rate.text());
old_values[id]['description'] = trim(description.text());
old_values[id]['suggest_amount'] = trim(suggest_amount.text());
var s = explode("/",this.href);
var oid = s[count(s)-1];
date.html('<input type="hidden" name="id['+id+']" value="'+oid+'"><input type="text" name="date['+id+']" value="'+trim(date.text())+'" class="date datestring required">');
time_from.html('<input type="text" name="time_from['+id+']" value="'+trim(time_from.text())+'" class="time_from time required">');
time_to.html('<input type="text" name="time_to['+id+']" value="'+trim(time_to.text())+'" class="time_to time required">');
hours.html('<input type="text" name="hours['+id+']" value="'+trim(hours.text())+'" class="hours number required">');
hour_rate.html('<input type="text" name="hour_rate['+id+']" value="'+trim(hour_rate.text())+'" class="hour_rate number required">');
km.html('<input type="text" name="km['+id+']" value="'+trim(km.text())+'" class="km number required">');
km_rate.html('<input type="text" name="km_rate['+id+']" value="'+trim(km_rate.text())+'" class="km_rate number required">');
description.html('<textarea name="description['+id+']" class="description required">'+trim(description.text())+'</textarea>');
suggest_amount.html('<input type="text" name="suggest_amount['+id+']" value="'+trim(suggest_amount.text())+'" class="suggest_amount number required">');
date = date.children().first();
date.datepicker({
dateFormat: "yy-mm-dd",
changeMonth: true,
changeYear: true,
showOtherMonths: true,
selectOtherMonths: true
});
$(".time_from, .time_to").autocomplete({
source: function (request, response){
var arr = new Array();
var x = 0;
for (var i=0;i<count(availableTimes);i++)
{
if (strpos(availableTimes[i], request.term) === 0)
arr[x++] = availableTimes[i];
}
response(arr);
},
close: function(event, ui) {
$(this).trigger('keyup');
}
});
}
else
{
var confirm = window.confirm('<?php echo url_lang::lang('texts.Do you really want to delete this work') ?>?');
if (confirm)
{
date.html(old_values[id]['date']);
time_from.html(old_values[id]['time_from']);
time_to.html(old_values[id]['time_to']);
hours.html(old_values[id]['hours']);
hour_rate.html(old_values[id]['hour_rate']);
km.html(old_values[id]['km']);
km_rate.html(old_values[id]['km_rate']);
description.html('<textarea class="description" readonly>'+old_values[id]['description']+'</textarea>');
suggest_amount.html(old_values[id]['suggest_amount']);
delete old_values[id];
}
}
return false;
});
$(".delete_button").live("click", function() {
var confirm = window.confirm('<?php echo url_lang::lang('texts.Do you really want to delete this work') ?>?');
......
});
$(".work_reports_form").validate({
/*$(".work_reports_form").validate({
submitHandler: function(form) {
alert ("test");
return false;
//alert($(".work_reports_form").serialize());
//return false;
}
});
});*/
freenetis/branches/approval/application/views/work_reports_show.php
<form method="post" class="work_reports_form">
<?php echo $grid ?>
<input type="submit" value="ok" class="work_reports_submit" disabled>
<input type="submit" value="ok" class="work_reports_submit">
</form>
freenetis/branches/approval/system/libraries/ORM.php
return $return_obj;
}
/**
* Returns table name of object
*
* @author Michal Kliment
* @return string
*/
public function get_table_name()
{
return $this->table_name;
}
} // End ORM
freenetis/branches/approval/system/libraries/Profiler.php
*/
public function render($return = FALSE)
{
if (Config::item('profiler.benchmarks'))
{
$data = array();
//if (Config::get('profiler.benchmarks'))
//{
// Clean unique id from system benchmark names
foreach (Benchmark::get(TRUE) as $name => $time)
{
$data['benchmarks'][str_replace(SYSTEM_BENCHMARK.'_', '', $name)] = $time;
}
}
//}
// Load database benchmarks, if Database has been loaded
if (Config::item('profiler.database') AND class_exists('Database', FALSE))
{
//if (Config::get('profiler.database') AND class_exists('Database', FALSE))
//{
$data['queries'] = Database::$benchmarks;
}
//}
// Load POST data
if (Config::item('profiler.post'))
{
//if (Config::get('profiler.post'))
//{
$data['post'] = TRUE;
}
//}
if (Config::item('profiler.session'))
{
//if (Config::get('profiler.session'))
//{
$data['session'] = TRUE;
}
//}
if (Config::item('profiler.cookie'))
{
//if (Config::get('profiler.cookie'))
//{
$data['cookie'] = TRUE;
}
//}
// Load the profiler view
$view = new View('kohana_profiler', $data);

Také k dispozici: Unified diff