/**
 * Render object reminder information
 *
 * @param array $params
 * @param Smarty $smarty
 * @return string
 * 12 April 2012 (SA) Ticket #784: check Recurring Reminder email script in AC
 */
function smarty_function_object_reminder($params, &$smarty)
{
    $ticket = array_var($params, 'object');
    if (!instance_of($ticket, 'Ticket')) {
        return 'N/A';
    }
    // if
    require_once SMARTY_PATH . '/plugins/function.select_date.php';
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
    mysql_select_db(DB_NAME);
    $query = "select * from healingcrystals_project_object_misc where object_id='" . (int) $ticket->getId() . "'";
    $result = mysql_query($query, $link);
    if (mysql_num_rows($result)) {
        $info = mysql_fetch_assoc($result);
        $reminder_date = dateval($info['reminder_date']);
        $recurring_period = $info['recurring_period'];
        $recurring_period_type = $info['recurring_period_type'];
    }
    mysql_close($link);
    $resp = '<form name="frmReminder" action="' . $ticket->getEditUrl() . '&mode=reminder_only_update_mode" method=post>' . smarty_function_select_date(array('name' => 'reminder', 'value' => !empty($reminder_date) ? date('m/d/Y', strtotime($reminder_date)) : '', 'id' => 'reminder', 'onchange' => 'this.form.submit();'), $smarty) . '</form>';
    return $resp;
}
 function quickreminder()
 {
     if ($this->active_task->isNew()) {
         $this->httpError(HTTP_ERR_NOT_FOUND, null, true, $this->request->isApiCall());
     }
     if (empty($this->active_task_parent)) {
         $this->httpError(HTTP_ERR_NOT_FOUND, null, true, $this->request->isApiCall());
     }
     if (!$this->active_task->canEdit($this->logged_user) && $this->active_task->getProjectId() != TASK_LIST_PROJECT_ID) {
         $this->httpError(HTTP_ERR_FORBIDDEN, null, true, $this->request->isApiCall());
     }
     $task_data = $this->request->post('taskquick');
     if (!is_array($task_data)) {
         $task_data = array('body' => $this->active_task->getBody(), 'priority' => $this->active_task->getPriority(), 'due_on' => $this->active_task->getDueOn(), 'assignees' => Assignments::findAssignmentDataByObject($this->active_task));
         $link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
         mysql_select_db(DB_NAME);
         $query = "select * from healingcrystals_project_object_misc where object_id='" . $this->active_task->getId() . "'";
         $result = mysql_query($query, $link);
         if (mysql_num_rows($result)) {
             $info = mysql_fetch_assoc($result);
             //$task_data['recurring_flag'] = '1';
             //$task_data['recurring_period'] = $info['recurring_period'];
             //if (empty($task_data['recurring_period'])){
             //   $task_data['recurring_flag'] = '0';
             //}
             //$task_data['recurring_period_type'] = $info['recurring_period_type'];
             //$task_data['recurring_period_condition'] = $info['recurring_period_condition'];
             //$task_data['recurring_end_date'] = empty($info['recurring_end_date']) || $info['recurring_end_date']=='0000-00-00' ? '' : dateval($info['recurring_end_date']);
             if (!empty($info['reminder_date']) && $info['reminder_date'] != '0000-00-00 00:00:00') {
                 list($date, $time) = explode(' ', $info['reminder_date']);
                 list($h, $m, $s) = explode(':', $time);
                 $date = dateval($date);
             }
             $task_data['reminder'] = $date;
             $task_data['remindermeridian'] = $h >= 12 ? 'PM' : 'AM';
             $task_data['reminderhours'] = $h > 12 ? $h - 12 : ($h != 0 ? $h : '12');
             $task_data['reminderminutes'] = $m;
             $task_data['auto_email_status'] = $info['auto_email_status'];
         } else {
             //$task_data['recurring_flag'] = '0';
             //$task_data['recurring_period'] = '';
             //$task_data['recurring_period_type'] = 'D';
             //$task_data['recurring_period_condition'] = 'after_due_date';
             //$task_data['recurring_end_date'] = '';
             $task_data['reminder'] = '';
             $task_data['reminderhours'] = '';
             $task_data['reminderminutes'] = '';
             $task_data['remindermeridian'] = '';
             $task_data['auto_email_status'] = '';
         }
         mysql_close($link);
     }
     $this->smarty->assign('task_data', $task_data);
     $refresh_task_content_mode = false;
     if ($this->request->isSubmitted()) {
         if (!isset($task_data['assignees'])) {
             $task_data['assignees'] = array(array(), 0);
         }
         db_begin_work();
         $old_name = $this->active_task->getBody();
         $this->active_task->setAttributes($task_data);
         $save = $this->active_task->save();
         if ($save && !is_error($save)) {
             db_commit();
             $reminder = dateval($task_data['reminder']);
             $reminderhours = (int) $task_data['reminderhours'];
             $reminderminutes = (int) $task_data['reminderminutes'];
             $remindermeridian = $task_data['remindermeridian'];
             if (!empty($reminder)) {
                 if (!empty($remindermeridian) && $remindermeridian == 'PM' && $reminderhours < 12) {
                     $reminderhours += 12;
                 } elseif (!empty($remindermeridian) && $remindermeridian == 'AM' && $reminderhours == 12) {
                     $reminderhours = 0;
                 }
                 $reminder = $reminder . ' ' . $reminderhours . ':' . $reminderminutes;
             }
             $email_flag = empty($task_data['email_flag']) ? '0' : '1';
             $link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
             mysql_select_db(DB_NAME);
             $query = "select * from healingcrystals_project_object_misc where object_id='" . $this->active_task->getId() . "'";
             $result = mysql_query($query, $link);
             if (mysql_num_rows($result)) {
                 $query01 = "update healingcrystals_project_object_misc set reminder_date='" . $reminder . "', auto_email_status='" . $email_flag . "', last_modified=now() where object_id='" . $this->active_task->getId() . "'";
                 mysql_query($query01, $link);
             } else {
                 $query01 = "insert into healingcrystals_project_object_misc\n                                    (object_id,\n                                     reminder_date,\n                                     recurring_period,\n                                     recurring_period_type,\n                                     recurring_period_condition,\n                                     recurring_end_date,\n                                     date_added,\n                                     auto_email_status) values\n                                     ('" . $this->active_task->getId() . "',\n                                      '" . $reminder . "',\n                                      null,\n                                      null,\n                                      null,\n                                      null,\n                                      now(),\n                                      '" . $email_flag . "')";
                 mysql_query($query01, $link);
             }
             mysql_close($link);
             /*if($this->request->isApiCall()) {
             			$this->serveData($this->active_task, 'task');
             		} else {
             			flash_success('Task ":name" has been updated', array('name' => str_excerpt(strip_tags($old_name), 80, '...')), false, false);
             			$this->redirectToUrl($this->active_task_parent->getViewUrl() . '#task' . $this->active_task->getId());
             		}*/
             $refresh_task_content_mode = true;
         } else {
             db_rollback();
             if ($this->request->isApiCall()) {
                 $this->serveData($save);
             } else {
                 $this->smarty->assign('errors', $save);
             }
         }
     } else {
         if ($this->request->isApiCall()) {
             $this->httpError(HTTP_ERR_BAD_REQUEST, null, true, true);
         }
     }
     $this->smarty->assign('refresh_task_content_mode', $refresh_task_content_mode);
 }
 /**
  * Set value of specific field
  *
  * @param string $name
  * @param mided $value
  * @return mixed
  */
 function setFieldValue($name, $value)
 {
     $real_name = $this->realFieldName($name);
     $set = $value;
     switch ($real_name) {
         case 'id':
             $set = intval($value);
             break;
         case 'invoice_id':
             $set = intval($value);
             break;
         case 'amount':
             $set = floatval($value);
             break;
         case 'paid_on':
             $set = dateval($value);
             break;
         case 'comment':
             $set = strval($value);
             break;
         case 'created_on':
             $set = datetimeval($value);
             break;
         case 'created_by_id':
             $set = intval($value);
             break;
         case 'created_by_name':
             $set = strval($value);
             break;
         case 'created_by_email':
             $set = strval($value);
             break;
     }
     // switch
     return parent::setFieldValue($real_name, $set);
 }
 /**
  * Set value of specific field
  *
  * @param string $name
  * @param mided $value
  * @return mixed
  */
 function setFieldValue($name, $value)
 {
     $real_name = $this->realFieldName($name);
     $set = $value;
     switch ($real_name) {
         case 'id':
             $set = intval($value);
             break;
         case 'company_id':
             $set = intval($value);
             break;
         case 'group_id':
             $set = intval($value);
             break;
         case 'name':
             $set = strval($value);
             break;
         case 'leader_id':
             $set = intval($value);
             break;
         case 'leader_name':
             $set = strval($value);
             break;
         case 'leader_email':
             $set = strval($value);
             break;
         case 'overview':
             $set = strval($value);
             break;
         case 'status':
             $set = strval($value);
             break;
         case 'type':
             $set = strval($value);
             break;
         case 'default_visibility':
             $set = boolval($value);
             break;
         case 'starts_on':
             $set = dateval($value);
             break;
         case 'completed_on':
             $set = datetimeval($value);
             break;
         case 'completed_by_id':
             $set = intval($value);
             break;
         case 'completed_by_name':
             $set = strval($value);
             break;
         case 'completed_by_email':
             $set = strval($value);
             break;
         case 'created_on':
             $set = datetimeval($value);
             break;
         case 'updated_on':
             $set = datetimeval($value);
             break;
         case 'created_by_id':
             $set = intval($value);
             break;
         case 'created_by_name':
             $set = strval($value);
             break;
         case 'created_by_email':
             $set = strval($value);
             break;
         case 'open_tasks_count':
             $set = intval($value);
             break;
         case 'total_tasks_count':
             $set = intval($value);
             break;
     }
     // switch
     return parent::setFieldValue($real_name, $set);
 }
 /**
  * Set value of specific field
  *
  * @param string $name
  * @param mided $value
  * @return mixed
  */
 function setFieldValue($name, $value)
 {
     $real_name = $this->realFieldName($name);
     $set = $value;
     switch ($real_name) {
         case 'id':
             $set = intval($value);
             break;
         case 'name':
             $set = strval($value);
             break;
         case 'group_name':
             $set = strval($value);
             break;
         case 'is_default':
             $set = boolval($value);
             break;
         case 'user_filter':
             $set = strval($value);
             break;
         case 'user_filter_data':
             $set = strval($value);
             break;
         case 'billable_filter':
             $set = strval($value);
             break;
         case 'date_filter':
             $set = strval($value);
             break;
         case 'date_from':
             $set = dateval($value);
             break;
         case 'date_to':
             $set = dateval($value);
             break;
         case 'sum_by_user':
             $set = boolval($value);
             break;
     }
     // switch
     return parent::setFieldValue($real_name, $set);
 }
 function register_reminder_info($object_id, $reminder_info)
 {
     $link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
     mysql_select_db(DB_NAME);
     $query = "select * from healingcrystals_project_object_misc where object_id='" . (int) $object_id . "'";
     $result = mysql_query($query, $link);
     if (mysql_num_rows($result)) {
         if (empty($reminder_info['date']) && empty($reminder_info['period'])) {
             $query = "delete from healingcrystals_project_object_misc where object_id='" . (int) $object_id . "'";
             mysql_query($query, $link);
         } else {
             $query = "update healingcrystals_project_object_misc set reminder_date=" . (empty($reminder_info['date']) ? "null" : "'" . dateval($reminder_info['date']) . "'") . ", recurring_period=" . (empty($reminder_info['period']) ? "null" : "'" . $reminder_info['period'] . "'") . ", recurring_period_type=" . (empty($reminder_info['period']) ? "null" : "'" . $reminder_info['type'] . "'") . ", last_modified=now() where object_id='" . (int) $object_id . "'";
             mysql_query($query, $link);
         }
     } else {
         if (!empty($reminder_info['date']) || !empty($reminder_info['period'])) {
             $query = "insert into healingcrystals_project_object_misc (object_id, reminder_date, recurring_period, recurring_period_type, date_added) values ('" . $object_id . "', " . (empty($reminder_info['date']) ? "null" : "'" . dateval($reminder_info['date']) . "'") . ", " . (empty($reminder_info['period']) ? "null" : "'" . $reminder_info['period'] . "'") . ", " . (empty($reminder_info['period']) ? "null" : "'" . $reminder_info['type'] . "'") . ", now())";
             mysql_query($query, $link);
         }
     }
     mysql_close($link);
 }
 /**
  * Set value of specific field
  *
  * @param string $name
  * @param mided $value
  * @return mixed
  */
 function setFieldValue($name, $value)
 {
     $real_name = $this->realFieldName($name);
     $set = $value;
     switch ($real_name) {
         case 'id':
             $set = intval($value);
             break;
         case 'company_id':
             $set = intval($value);
             break;
         case 'project_id':
             $set = intval($value);
             break;
         case 'currency_id':
             $set = intval($value);
             break;
         case 'language_id':
             $set = intval($value);
             break;
         case 'number':
             $set = strval($value);
             break;
         case 'company_name':
             $set = strval($value);
             break;
         case 'company_address':
             $set = strval($value);
             break;
         case 'comment':
             $set = strval($value);
             break;
         case 'note':
             $set = strval($value);
             break;
         case 'status':
             $set = intval($value);
             break;
         case 'issued_on':
             $set = dateval($value);
             break;
         case 'issued_by_id':
             $set = intval($value);
             break;
         case 'issued_by_name':
             $set = strval($value);
             break;
         case 'issued_by_email':
             $set = strval($value);
             break;
         case 'issued_to_id':
             $set = intval($value);
             break;
         case 'due_on':
             $set = dateval($value);
             break;
         case 'closed_on':
             $set = datetimeval($value);
             break;
         case 'closed_by_id':
             $set = intval($value);
             break;
         case 'closed_by_name':
             $set = strval($value);
             break;
         case 'closed_by_email':
             $set = strval($value);
             break;
         case 'created_on':
             $set = datetimeval($value);
             break;
         case 'created_by_id':
             $set = intval($value);
             break;
         case 'created_by_name':
             $set = strval($value);
             break;
         case 'created_by_email':
             $set = strval($value);
             break;
     }
     // switch
     return parent::setFieldValue($real_name, $set);
 }
 /**
  * Set value of specific field
  *
  * @param string $name
  * @param mided $value
  * @return mixed
  */
 function setFieldValue($name, $value)
 {
     $real_name = $this->realFieldName($name);
     $set = $value;
     switch ($real_name) {
         case 'id':
             $set = intval($value);
             break;
         case 'type':
             $set = strval($value);
             break;
         case 'source':
             $set = strval($value);
             break;
         case 'module':
             $set = strval($value);
             break;
         case 'project_id':
             $set = intval($value);
             break;
         case 'milestone_id':
             $set = intval($value);
             break;
         case 'parent_id':
             $set = intval($value);
             break;
         case 'parent_type':
             $set = strval($value);
             break;
         case 'name':
             $set = strval($value);
             break;
         case 'body':
             $set = strval($value);
             break;
         case 'tags':
             $set = strval($value);
             break;
         case 'state':
             $set = intval($value);
             break;
         case 'visibility':
             $set = intval($value);
             break;
         case 'priority':
             $set = intval($value);
             break;
         case 'created_on':
             $set = datetimeval($value);
             break;
         case 'created_by_id':
             $set = intval($value);
             break;
         case 'created_by_name':
             $set = strval($value);
             break;
         case 'created_by_email':
             $set = strval($value);
             break;
         case 'updated_on':
             $set = datetimeval($value);
             break;
         case 'updated_by_id':
             $set = intval($value);
             break;
         case 'updated_by_name':
             $set = strval($value);
             break;
         case 'updated_by_email':
             $set = strval($value);
             break;
         case 'due_on':
             $set = dateval($value);
             break;
         case 'completed_on':
             $set = datetimeval($value);
             break;
         case 'completed_by_id':
             $set = intval($value);
             break;
         case 'completed_by_name':
             $set = strval($value);
             break;
         case 'completed_by_email':
             $set = strval($value);
             break;
         case 'has_time':
             $set = boolval($value);
             break;
         case 'comments_count':
             $set = intval($value);
             break;
         case 'is_locked':
             $set = boolval($value);
             break;
         case 'varchar_field_1':
             $set = strval($value);
             break;
         case 'varchar_field_2':
             $set = strval($value);
             break;
         case 'integer_field_1':
             $set = intval($value);
             break;
         case 'integer_field_2':
             $set = intval($value);
             break;
         case 'float_field_1':
             $set = floatval($value);
             break;
         case 'float_field_2':
             $set = floatval($value);
             break;
         case 'text_field_1':
             $set = strval($value);
             break;
         case 'text_field_2':
             $set = strval($value);
             break;
         case 'date_field_1':
             $set = dateval($value);
             break;
         case 'date_field_2':
             $set = dateval($value);
             break;
         case 'datetime_field_1':
             $set = datetimeval($value);
             break;
         case 'datetime_field_2':
             $set = datetimeval($value);
             break;
         case 'boolean_field_1':
             $set = boolval($value);
             break;
         case 'boolean_field_2':
             $set = boolval($value);
             break;
         case 'position':
             $set = intval($value);
             break;
         case 'version':
             $set = intval($value);
             break;
             //BOF: task 04 | AD
             //case 'category_id':
             //  $set = intval($value);
             //  break;
             //EOF: task 04 | AD
     }
     // switch
     return parent::setFieldValue($real_name, $set);
 }
 /**
  * Set value of specific field
  *
  * @param string $name
  * @param mided $value
  * @return mixed
  */
 function setFieldValue($name, $value)
 {
     $real_name = $this->realFieldName($name);
     $set = $value;
     switch ($real_name) {
         case 'id':
             $set = intval($value);
             break;
         case 'name':
             $set = strval($value);
             break;
         case 'group_name':
             $set = strval($value);
             break;
         case 'is_private':
             $set = boolval($value);
             break;
         case 'user_filter':
             $set = strval($value);
             break;
         case 'user_filter_data':
             $set = strval($value);
             break;
         case 'project_filter':
             $set = strval($value);
             break;
         case 'project_filter_data':
             $set = strval($value);
             break;
         case 'date_filter':
             $set = strval($value);
             break;
         case 'date_from':
             $set = dateval($value);
             break;
         case 'date_to':
             $set = dateval($value);
             break;
         case 'status_filter':
             $set = strval($value);
             break;
         case 'objects_per_page':
             $set = intval($value);
             break;
         case 'order_by':
             $set = strval($value);
             break;
         case 'created_by_id':
             $set = intval($value);
             break;
     }
     // switch
     return parent::setFieldValue($real_name, $set);
 }