source: trunk/jpdd/class.jpdd.event.php @ 1424

Last change on this file since 1424 was 1424, checked in by Daniel Kahn Gillmor, 5 years ago

name member variables properly.

File size: 3.6 KB
Line 
1<?php  /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 2; -*-
2
3       */
4
5require_once('class.dkg.row.php');
6
7if (!class_exists('JPDD_Event')) {
8
9  class JPDD_Event extends DKG_Row {
10    function JPDD_Event($args = array()) {
11      $this->DKG_Row($args);
12    }
13
14    function getCreatePrivilege() {
15          return array('Edit Events');
16        }
17       
18        function getEditPrivilege() {
19          return array('Edit Events');
20        }
21
22        function getListPrivilege() {
23          return array('List Events');
24        }
25
26    function getStartTime() {
27      return $this->_start_time;
28    }
29    function getEndTime() {
30      return $this->_end_time;
31    }
32    function getMotto() {
33      return $this->_motto;
34    }
35    function getDescription() {
36      return $this->_description;
37    }
38   
39        function applyPostForm() {
40          $this->_title = $_POST['title'];
41          $this->_start_time = $_POST['start_time'];
42          $this->_end_time = $_POST['end_time'];
43          $this->_motto = $_POST['motto'];
44          $this->_description = $_POST['description'];
45        }
46
47
48        function handleEdit() {
49          global $jpdd;
50          $this->applyPostForm();
51      $sql = 'UPDATE '.$this->getSingletonTable().' SET '.
52        'title = '.$jpdd->stringOrDefault($this->_title).', '.
53        'start_time = '.$jpdd->stringOrDefault($this->_start_time).', '.
54        'end_time = '.$jpdd->stringOrDefault($this->_end_time).', '.
55        'motto = '.$jpdd->stringOrDefault($this->_motto).', '.
56        'description = '.$jpdd->stringOrDefault($this->_description).' WHERE '.
57        'id = '.$this->getID();
58      $res = $jpdd->executeSQL($sql, false);
59          if (false === $res) {
60        $logid = $jpdd->log('edit event '.(int)$this->_id.' db update failed with pg error: '.pg_last_error($jpdd->_db));
61                return 'editing this event failed during insertion into the database for some reason (error: '.(int)$logid.')';
62          } else {
63                $this->JPDD_Event(array('id' => $this->getID()));
64                return NULL;
65          }
66        }
67
68    function advertiseProposals() {
69      return (!is_null($this->_advertise_proposals_until) &&
70              $this->_advertise_proposals_until > strftime('%Y-%m-%d'));
71    }
72
73        function handleCreation() {
74          // just insert a new row, grab the created ID, and re-initialize
75          // ourselves, returning true if successful.
76          global $jpdd;
77          $this->applyPostForm();
78          $res = $jpdd->executeSQL('INSERT INTO '.$this->getSingletonTable().' (title, description, motto, start_time, end_time) VALUES ('.
79                                                           $jpdd->escStr($this->_title).', '.
80                                                           $jpdd->escStr($this->_description).', '.
81                                                           $jpdd->escStr($this->_motto).', '.
82                                                           $jpdd->escStr($this->_start_time).', '.
83                                                           $jpdd->escStr($this->_end_time).')', false);
84      if (false === $res) {
85        $logid = $jpdd->log('create event failed with pg error: '.pg_last_error($jpdd->_db));
86        return 'database insertion failed for some reason (error: '.(int)$logid.')';
87      } else {
88                $this->JPDD_Event(array('data' => $jpdd->getSingletonFromSQL('SELECT * from '.$this->getSingletonTable().' WHERE id = currval(\''.$this->getSingletonTable().'_id_seq\')')));
89        return NULL;
90      }
91    }
92
93    function getFormInnards() {
94          return '<div>
95<label>Event Title: <input type="text" name="title" value="'.$this->getTitle(true).'"/></label><br/>
96<label>Motto: <input type="text" name="motto" value="'.$this->getMotto().'"/></label><br/>
97<label>Description: <textarea name="description">'.$this->getDescription().'</textarea><br/>
98<label>Start date/time: <input type="text" size="20" name="start_time" value="'.$this->getStartTime().'"/></label><br/>
99<label>End date/time: <input type="text" size="20" name="end_time" value="'.$this->getEndTime().'"/></label><br/>
100</div>';
101    }
102  }
103
104}
105?>
Note: See TracBrowser for help on using the repository browser.