Ver Fonte

Message notifications and sending messages.

Nathaniel van Diepen há 10 anos atrás
pai
commit
014fe8013a
7 ficheiros alterados com 450 adições e 29 exclusões
  1. 32 0
      api.php
  2. 3 0
      data/pages/messages.options
  3. 45 0
      data/pages/newmessage.template
  4. 315 4
      install/install.sql
  5. 29 7
      js/index.js
  6. 20 18
      php/functions.php
  7. 6 0
      php/messages.php

+ 32 - 0
api.php

@@ -152,6 +152,15 @@
 									}
 								}
 							}
+							if(isset($options['actions'])){
+								foreach($options['actions'] as $key){
+									switch($key){
+										case 'pm_mark_read':
+											query("UPDATE `users` SET last_pm_check=CURRENT_TIMESTAMP WHERE id='%d'; ",Array(userId($_SESSION['username'])));
+										break;
+									}
+								}
+							}
 						}
 						$ret['context'] = $context;
 					}else{
@@ -227,6 +236,29 @@
 								}
 								retj($ret,$id);
 							break;
+							case 'message':
+								back(true);
+								if(isset($_GET['to'])&&isset($_GET['message'])){
+									if($uid = userId($_GET['to'])){
+										if(!personal_message($uid,$_GET['message'])){
+											$ret['error'] = 'Could not send message';
+										}
+									}else{
+										$ret['error'] = "That user doesn't exist";
+									}
+								}else{
+									$ret['error'] = 'Empty details';
+								}
+								retj($ret,$id);
+							break;
+							case 'notifications':
+								if($res = query("SELECT count(m.id) as notifications,UNIX_TIMESTAMP(max(m.timestamp)) as timestamp FROM `messages` m JOIN `users` u ON u.id = m.to_id WHERE u.id = %d AND u.last_pm_check < m.timestamp;",Array(userId($_SESSION['username'])))){
+									$res = $res->fetch_assoc();
+									$ret['count'] = $res['notifications'];
+									$ret['timestamp'] = $res['timestamp'];
+								}
+								retj($ret,$id);
+							break;
 							case 'comment':
 								if(isset($_GET['comment_type'])&&isset($_GET['comment_id'])&&isset($_GET['message'])){
 									$cid = $_GET['comment_id'];

+ 3 - 0
data/pages/messages.options

@@ -2,5 +2,8 @@
 	"secure": true,
 	"context": [
 		"messages"
+	],
+	"actions": [
+		"pm_mark_read"
 	]
 }

+ 45 - 0
data/pages/newmessage.template

@@ -0,0 +1,45 @@
+{{#if key}}
+	<form id="form">
+		<div>
+			<input type="text" name="to" class="fill-width" placeholder="To"/>
+		</div>
+		<div>
+			<textarea name="message" class="fill-width" placeholder="Message"/></textarea>
+		</div>
+		<div>
+			<input type="button" value="cancel" class="cancel"/>
+			<input type="submit" value="create"/>
+		</div>
+	</form>
+	<script>
+		$(document).ready(function(){
+			$('form#form').submit(function(){
+				var data = $(this).serializeObject(),
+					State = History.getState();
+				for(var i in State.data){
+					data[i] = State.data;
+				}
+				data.type = 'action';
+				data.id = 'message';
+				apiCall(data,function(d){
+					if(!d.error){
+						back();
+					}else{
+						$('#loading').hide();
+					}
+					return false;
+				});
+				return false;
+			}).find('.cancel').click(function(){
+				back();
+				return false;
+			});
+		});
+	</script>
+{{else}}
+	<script>
+		$(document).ready(function(){
+			back();
+		});
+	</script>
+{{/if}}

+ 315 - 4
install/install.sql

@@ -3,11 +3,10 @@
 -- http://www.phpmyadmin.net
 --
 -- Host: 127.0.0.1
--- Generation Time: Nov 18, 2013 at 07:31 PM
+-- Generation Time: Nov 25, 2013 at 06:33 PM
 -- Server version: 5.6.11
 -- PHP Version: 5.5.3
 
-SET FOREIGN_KEY_CHECKS=0;
 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
 SET time_zone = "+00:00";
 
@@ -70,7 +69,7 @@ CREATE TABLE IF NOT EXISTS `messages` (
   KEY `s_id` (`s_id`),
   KEY `i_id` (`i_id`),
   KEY `p_id` (`p_id`)
-) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
+) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
 
 --
 -- RELATIONS FOR TABLE `messages`:
@@ -173,7 +172,7 @@ CREATE TABLE IF NOT EXISTS `scrums` (
 --
 -- Table structure for table `users`
 --
--- Creation: Oct 07, 2013 at 07:42 PM
+-- Creation: Nov 25, 2013 at 05:32 PM
 --
 
 DROP TABLE IF EXISTS `users`;
@@ -184,6 +183,7 @@ CREATE TABLE IF NOT EXISTS `users` (
   `password` varchar(128) NOT NULL,
   `salt` varchar(25) NOT NULL,
   `key` varchar(128) NOT NULL,
+  `last_pm_check` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
   PRIMARY KEY (`id`),
   UNIQUE KEY `name` (`name`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;
@@ -229,6 +229,317 @@ ALTER TABLE `rels`
 ALTER TABLE `scrums`
   ADD CONSTRAINT `scrums_ibfk_1` FOREIGN KEY (`u_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
   ADD CONSTRAINT `scrums_ibfk_2` FOREIGN KEY (`p_id`) REFERENCES `projects` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
+--
+-- Database: `cdcol`
+--
+CREATE DATABASE IF NOT EXISTS `cdcol` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
+USE `cdcol`;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `cds`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+--
+
+DROP TABLE IF EXISTS `cds`;
+CREATE TABLE IF NOT EXISTS `cds` (
+  `titel` varchar(200) COLLATE latin1_general_ci DEFAULT NULL,
+  `interpret` varchar(200) COLLATE latin1_general_ci DEFAULT NULL,
+  `jahr` int(11) DEFAULT NULL,
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=7 ;
+--
+-- Database: `data`
+--
+CREATE DATABASE IF NOT EXISTS `data` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
+USE `data`;
+--
+-- Database: `phpmyadmin`
+--
+CREATE DATABASE IF NOT EXISTS `phpmyadmin` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
+USE `phpmyadmin`;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_bookmark`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+--
+
+DROP TABLE IF EXISTS `pma_bookmark`;
+CREATE TABLE IF NOT EXISTS `pma_bookmark` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `dbase` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `user` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `label` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
+  `query` text COLLATE utf8_bin NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Bookmarks' AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_column_info`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Nov 25, 2013 at 05:32 PM
+--
+
+DROP TABLE IF EXISTS `pma_column_info`;
+CREATE TABLE IF NOT EXISTS `pma_column_info` (
+  `id` int(5) unsigned NOT NULL AUTO_INCREMENT,
+  `db_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `table_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `column_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `comment` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
+  `mimetype` varchar(255) CHARACTER SET utf8 NOT NULL DEFAULT '',
+  `transformation` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `transformation_options` varchar(255) COLLATE utf8_bin NOT NULL DEFAULT '',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `db_name` (`db_name`,`table_name`,`column_name`)
+) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Column information for phpMyAdmin' AUTO_INCREMENT=5 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_designer_coords`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+--
+
+DROP TABLE IF EXISTS `pma_designer_coords`;
+CREATE TABLE IF NOT EXISTS `pma_designer_coords` (
+  `db_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `table_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `x` int(11) DEFAULT NULL,
+  `y` int(11) DEFAULT NULL,
+  `v` tinyint(4) DEFAULT NULL,
+  `h` tinyint(4) DEFAULT NULL,
+  PRIMARY KEY (`db_name`,`table_name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Table coordinates for Designer';
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_history`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+-- Last check: Jul 10, 2013 at 04:55 PM
+--
+
+DROP TABLE IF EXISTS `pma_history`;
+CREATE TABLE IF NOT EXISTS `pma_history` (
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `username` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `db` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `table` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `timevalue` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `sqlquery` text COLLATE utf8_bin NOT NULL,
+  PRIMARY KEY (`id`),
+  KEY `username` (`username`,`db`,`table`,`timevalue`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='SQL history for phpMyAdmin' AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_pdf_pages`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+-- Last check: Jul 10, 2013 at 04:55 PM
+--
+
+DROP TABLE IF EXISTS `pma_pdf_pages`;
+CREATE TABLE IF NOT EXISTS `pma_pdf_pages` (
+  `db_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `page_nr` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `page_descr` varchar(50) CHARACTER SET utf8 NOT NULL DEFAULT '',
+  PRIMARY KEY (`page_nr`),
+  KEY `db_name` (`db_name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='PDF relation pages for phpMyAdmin' AUTO_INCREMENT=1 ;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_recent`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Nov 18, 2013 at 08:53 PM
+--
+
+DROP TABLE IF EXISTS `pma_recent`;
+CREATE TABLE IF NOT EXISTS `pma_recent` (
+  `username` varchar(64) COLLATE utf8_bin NOT NULL,
+  `tables` text COLLATE utf8_bin NOT NULL,
+  PRIMARY KEY (`username`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Recently accessed tables';
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_relation`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+-- Last check: Jul 10, 2013 at 04:55 PM
+--
+
+DROP TABLE IF EXISTS `pma_relation`;
+CREATE TABLE IF NOT EXISTS `pma_relation` (
+  `master_db` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `master_table` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `master_field` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `foreign_db` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `foreign_table` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `foreign_field` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  PRIMARY KEY (`master_db`,`master_table`,`master_field`),
+  KEY `foreign_field` (`foreign_db`,`foreign_table`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Relation table';
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_table_coords`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+--
+
+DROP TABLE IF EXISTS `pma_table_coords`;
+CREATE TABLE IF NOT EXISTS `pma_table_coords` (
+  `db_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `table_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `pdf_page_number` int(11) NOT NULL DEFAULT '0',
+  `x` float unsigned NOT NULL DEFAULT '0',
+  `y` float unsigned NOT NULL DEFAULT '0',
+  PRIMARY KEY (`db_name`,`table_name`,`pdf_page_number`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Table coordinates for phpMyAdmin PDF output';
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_table_info`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+--
+
+DROP TABLE IF EXISTS `pma_table_info`;
+CREATE TABLE IF NOT EXISTS `pma_table_info` (
+  `db_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `table_name` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  `display_field` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
+  PRIMARY KEY (`db_name`,`table_name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Table information for phpMyAdmin';
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_table_uiprefs`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Nov 25, 2013 at 05:32 PM
+--
+
+DROP TABLE IF EXISTS `pma_table_uiprefs`;
+CREATE TABLE IF NOT EXISTS `pma_table_uiprefs` (
+  `username` varchar(64) COLLATE utf8_bin NOT NULL,
+  `db_name` varchar(64) COLLATE utf8_bin NOT NULL,
+  `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
+  `prefs` text COLLATE utf8_bin NOT NULL,
+  `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`username`,`db_name`,`table_name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Tables'' UI preferences';
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_tracking`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+--
+
+DROP TABLE IF EXISTS `pma_tracking`;
+CREATE TABLE IF NOT EXISTS `pma_tracking` (
+  `db_name` varchar(64) COLLATE utf8_bin NOT NULL,
+  `table_name` varchar(64) COLLATE utf8_bin NOT NULL,
+  `version` int(10) unsigned NOT NULL,
+  `date_created` datetime NOT NULL,
+  `date_updated` datetime NOT NULL,
+  `schema_snapshot` text COLLATE utf8_bin NOT NULL,
+  `schema_sql` text COLLATE utf8_bin,
+  `data_sql` longtext COLLATE utf8_bin,
+  `tracking` set('UPDATE','REPLACE','INSERT','DELETE','TRUNCATE','CREATE DATABASE','ALTER DATABASE','DROP DATABASE','CREATE TABLE','ALTER TABLE','RENAME TABLE','DROP TABLE','CREATE INDEX','DROP INDEX','CREATE VIEW','ALTER VIEW','DROP VIEW') COLLATE utf8_bin DEFAULT NULL,
+  `tracking_active` int(1) unsigned NOT NULL DEFAULT '1',
+  PRIMARY KEY (`db_name`,`table_name`,`version`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=COMPACT COMMENT='Database changes tracking for phpMyAdmin';
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `pma_userconfig`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Oct 07, 2013 at 07:38 PM
+--
+
+DROP TABLE IF EXISTS `pma_userconfig`;
+CREATE TABLE IF NOT EXISTS `pma_userconfig` (
+  `username` varchar(64) COLLATE utf8_bin NOT NULL,
+  `timevalue` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `config_data` text COLLATE utf8_bin NOT NULL,
+  PRIMARY KEY (`username`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='User preferences storage for phpMyAdmin';
+--
+-- Database: `test`
+--
+CREATE DATABASE IF NOT EXISTS `test` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
+USE `test`;
+
+DELIMITER $$
+--
+-- Procedures
+--
+DROP PROCEDURE IF EXISTS `test_multi_sets`$$
+CREATE DEFINER=`root`@`localhost` PROCEDURE `test_multi_sets`()
+    DETERMINISTIC
+begin
+        select user() as first_col;
+        select user() as first_col, now() as second_col;
+        select user() as first_col, now() as second_col, now() as third_col;
+        end$$
+
+DELIMITER ;
+--
+-- Database: `webauth`
+--
+CREATE DATABASE IF NOT EXISTS `webauth` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
+USE `webauth`;
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `user_pwd`
+--
+-- Creation: Jul 10, 2013 at 04:55 PM
+-- Last update: Jul 10, 2013 at 03:55 PM
+--
+
+DROP TABLE IF EXISTS `user_pwd`;
+CREATE TABLE IF NOT EXISTS `user_pwd` (
+  `name` char(30) COLLATE latin1_general_ci NOT NULL DEFAULT '',
+  `pass` char(32) COLLATE latin1_general_ci NOT NULL DEFAULT '',
+  PRIMARY KEY (`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
 
 /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
 /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

+ 29 - 7
js/index.js

@@ -87,11 +87,13 @@
 				return '';
 			}
 		},
-		apiCall = window.apiCall = function(data,callback){
+		apiCall = window.apiCall = function(data,callback,background){
 			console.log('apiCall('+data.type+'-'+data.id+')');
 			if(!flag('error')){
-			loading(true);
-			data.get = 'api';
+				if(exists(background)&&!background){
+					loading(true);
+				}
+				data.get = 'api';
 				data.back = State.data.back;
 				data.timestamp = +new Date;
 				if(''!=template(data.type+'-'+data.id)){
@@ -101,7 +103,6 @@
 					if(exists(d['error'])){
 						error(d);
 					}else{
-						console.log(d);
 						d.state.title = d.state.title.capitalize();
 						if(location.href.substr(location.href.lastIndexOf('/')+1) != d.state.url && d.state.url != ''){
 							console.log('Forced redirection to '+d.state.url);
@@ -524,8 +525,12 @@
 			}
 		},
 		alert = function(text,title,callback){
-			$('#dialog').text(text).data('callback',callback);
-			render.dialog('#dialog',title,callback);
+			if(exists(text)){
+				title=exists(title)?title:'';
+				callback=exists(callback)?callback:function(){};
+				$('#dialog').text(text).data('callback',callback);
+				render.dialog('#dialog',title,callback);
+			}
 		},
 		loading = function(state){
 			if(!flag('ignore_statechange')){
@@ -549,7 +554,7 @@
 			cache: false,
 			timeout: 30000 // 30 seconds
 		});
-		 $(document).ajaxError(function(event, request, settings) {
+		$(document).ajaxError(function(event, request, settings) {
 			error({error:'Request timed out'});
 		});
 		if(!exists($.support.touch)){
@@ -613,6 +618,23 @@
 				return getState.call(History);
 			}
 		};
+		(function notifications(){
+			var context = State;
+			context.type = 'action';
+			context.id = 'notifications';
+			context.url = State.url;
+			context.title = State.title;
+			context.topbar = false;
+			apiCall(context,function(d){
+				if(!exists(d.error)){
+					if(d.count>0 && $.localStorage('last_pm_check') < d.timestamp){
+						alert('You have '+d.count+' new messages');
+					}
+					$.localStorage('last_pm_check',d.timestamp);
+				}
+				setTimeout(notifications,5*1000); // every 5 seconds
+			},true);
+		})();
 	});
 	shortcut.add('f12',function(){
 		if(!flag('firebug-lite')){

+ 20 - 18
php/functions.php

@@ -44,26 +44,28 @@
 		}else{
 			$url = $json['state']['url'];
 		}
-		// Tobar
-		if($LOGGEDIN){
-			$context = Array(
-				'user'=>userObj($_SESSION['username']),
-				'key'=>true
+		if(!isset($_GET['topbar'])){
+			// Tobar
+			if($LOGGEDIN){
+				$context = Array(
+					'user'=>userObj($_SESSION['username']),
+					'key'=>true
+				);
+			}else{
+				$context = Array();
+			}
+			$context['title'] = $title;
+			$context['url'] = $url;
+			if(file_exists(PATH_DATA.'topbars/'.$type.'-'.$id)){
+				$topbar = file_get_contents(PATH_DATA.'topbars/'.$type.'-'.$id.'.template');
+			}else{
+				$topbar = file_get_contents(PATH_DATA.'topbars/default.template');
+			}
+			$json['topbar'] = Array(
+				'template'=>$topbar,
+				'context'=>$context
 			);
-		}else{
-			$context = Array();
-		}
-		$context['title'] = $title;
-		$context['url'] = $url;
-		if(file_exists(PATH_DATA.'topbars/'.$type.'-'.$id)){
-			$topbar = file_get_contents(PATH_DATA.'topbars/'.$type.'-'.$id.'.template');
-		}else{
-			$topbar = file_get_contents(PATH_DATA.'topbars/default.template');
 		}
-		$json['topbar'] = Array(
-			'template'=>$topbar,
-			'context'=>$context
-		);
 		echo json_encode($json);
 		die();
 	}

+ 6 - 0
php/messages.php

@@ -30,4 +30,10 @@
 		}
 		return false;
 	}
+	function personal_message($toId,$message){
+		if(query("INSERT INTO `bugs`.`messages` (`id`,`timestamp`,`from_id`,`to_id`,`p_id`,`s_id`,`i_id`,`message`) VALUES(NULL,CURRENT_TIMESTAMP,'%d','%d',NULL,NULL,NULL,'%s');",Array(userId($_SESSION['username']),$toId,$message))){
+			return true;
+		}
+		return false;
+	}
 ?>