Index: websites/events.php.gr.jp/branches/cake/app/controllers/event_attendees_controller.php
===================================================================
--- websites/events.php.gr.jp/branches/cake/app/controllers/event_attendees_controller.php (revision 18484)
+++ websites/events.php.gr.jp/branches/cake/app/controllers/event_attendees_controller.php (revision 18489)
@@ -1,5 +1,5 @@
 <?php
 /**
- *
+ * event_attendees_controller.php
  *
  */
@@ -8,4 +8,8 @@
     var $name = 'EventAttendees';
 
+    /**
+     * cancel
+     *
+     */
     function cancel($id)
     {
@@ -23,6 +27,15 @@
     }
 
+    /**
+     * cancelrevert
+     *
+     */
     function cancelrevert($id)
     {
+        // adminじゃなければさようなら
+        if ($this->Session->read('role') != 'admin') {
+            $this->redirect('/');
+        }
+
         $event_attendee = $this->EventAttendee->findById($id);
         if (!$event_attendee) {
@@ -38,4 +51,24 @@
     }
 
+    /**
+     * join
+     *
+     * @TODO もうちょっと綺麗になおす
+     */
+    function join()
+    {
+        if (!$this->Session->check('id')) {
+            $this->redirect('/users/login');
+        }
+
+        if ($this->data) {
+            $this->data['EventAttendee']['user_id'] = $this->Session->read('id');
+            $this->data['EventAttendee']['canceled'] = 0;
+            $this->EventAttendee->save($this->data);
+        }
+
+        $this->redirect('/events/show/' . $this->data['EventAttendee']['event_id']);
+    }
+
 }
 ?>
Index: websites/events.php.gr.jp/branches/cake/app/controllers/events_controller.php
===================================================================
--- websites/events.php.gr.jp/branches/cake/app/controllers/events_controller.php (revision 18485)
+++ websites/events.php.gr.jp/branches/cake/app/controllers/events_controller.php (revision 18489)
@@ -10,4 +10,5 @@
     var $name = 'Event';
     var $helpers = array('Rss', 'Datespan');
+    var $uses = array('Event', 'Trackback');
 
     /**
@@ -171,5 +172,84 @@
             'description' => 'Feed',
         ));
-        $this->index();
+
+        if ($id == 'trackback') {
+            $result = $this->Trackback->find('all', array(
+                'order' => 'Trackback.id DESC',
+                'limit' => '20',
+            ));
+
+            $this->set('events', $result);
+
+        } else if (is_numeric($id)) {
+
+            $has_many = array(
+                'EventComment' => array(
+                    'className' => 'EventComment',
+                    'foreignKey' => 'event_id'
+                ),
+                'EventAttendee' => array(
+                    'className' => 'EventAttendee',
+                    'foreignKey' => 'event_id'
+                ),
+            );
+
+            $has_one = array(
+                'User' => array(
+                    'className' => 'User',
+                    'foreignKey' => 'user_id',
+                )
+            );
+
+            $this->Event->bindModel(array('hasMany' => $has_many));
+            $this->Event->EventComment->bindModel(array('belongsTo' => $has_one));
+            $this->Event->EventAttendee->bindModel(array('belongsTo' => $has_one));
+
+            $event = $this->Event->findById($id, null, null, 2);
+            if (!$event) {
+                $this->index();
+                return null;
+            }
+
+            $result = array();
+
+            foreach ($event['EventComment'] as $event_comment) {
+                $item = array();
+                $item['Event']['title'] = 'comment';
+                $item['Event']['description'] = $event_comment['User']['nickname'] .':'.$event_comment['comment'];
+                $item['Event']['id'] = $event_comment['event_id'];
+                $item['Event']['publish_date'] = $event_comment['created'];
+                if (!$event_comment['created']) {
+                    $item['Event']['publish_date'] = date('Y-m-d H:i:s');
+                }
+                $key = strtotime($item['Event']['publish_date']) . '0';
+                $result[$key] = $item;
+            }
+
+            foreach ($event['EventAttendee'] as $event_attendee) {
+                $item = array();
+                $item['Event']['title'] = 'joined';
+                $item['Event']['description'] = $event_attendee['User']['nickname'] .':'.$event_attendee['comment'];
+                $item['Event']['id'] = $event_attendee['event_id'];
+                $item['Event']['publish_date'] = $event_attendee['created'];
+                if (!$event_attendee['created']) {
+                    $item['Event']['publish_date'] = date('Y-m-d H:i:s');
+                }
+                $key = strtotime($item['Event']['publish_date']) . '1';
+                $result[$key] = $item;
+            }
+
+            krsort($result);
+
+            $events = array();
+            foreach ($result as $value) {
+                $events[] = $value;
+            }
+
+            $this->set('events', $events);
+
+        } else {
+            $this->index();
+        }
+
     }
 
