2 import(
'Dataface/AuthenticationTool.php');
3 import(
'Dataface/IO.php');
4 define(
'Dataface_Clipboard_tablename',
'_df_clipboard');
5 define(
'Dataface_Clipboard_lifetime', 1800);
6 define(
'Dataface_Clipboard_threshold', 20);
7 define(
'Dataface_Clipboard_clipboard_id_key',
'_df_clipboard_id');
29 static $isInstalled = -1;
30 if ( $isInstalled == -1 ){
48 `clipid` INT(11) auto_increment NOT NULL,
49 `clipperid` VARCHAR(32) NOT NULL,
50 `cut` TINYINT(1) DEFAULT 0,
52 `lastmodified` datetime,
53 PRIMARY KEY (`clipid`),
54 UNIQUE (`clipperid`))",
$app->db()) or trigger_error(
"Failed to create clipboard table: ".mysql_error(
$app->db()), E_USER_ERROR);
69 $app->db()) or trigger_error(
"Failed to clean old data from the clipboard: ".mysql_error(
$app->db()), E_USER_ERROR);
95 static $clipboard = 0;
96 if ( $clipboard == 0 ){
99 $username = $auth->getLoggedInUsername();
100 if ( isset($username) )
$id = $username;
102 if ( @session_id() ){
106 $id = md5(rand(0,10000000));
110 $err=
PEAR::raiseError(
"No clipboard is available because the user is not logged in and sessions are not enabled.");
126 return (mysql_num_rows(mysql_query(
"select count(*) from `".
Dataface_Clipboard_tablename.
"` where `clipperid`='".addslashes($this->
id).
"'")) == 0);
147 (`clipperid`,`cut`,`recordids`,`lastmodified`)
149 ('".addslashes($this->
id).
"',
150 0,'".addslashes(implode(
"\n",$recordids)).
"', NOW()
173 (`clipperid`,`cut`,`recordids`,`lastmodified`)
175 ('".addslashes($this->
id).
"',
176 1,'".addslashes(implode(
"\n",$recordids)).
"', NOW()
196 function paste($destid, $relationship=null){
201 if ( mysql_num_rows($res)>0 ){
202 $row = mysql_fetch_assoc($res);
210 if ( !isset( $dest ) )
return PEAR::raiseError(
'The destination "'.$destid.
'" could not be found to paste the clipboard contents.');
211 if ( is_a($dest,
'Dataface_RelatedRecord') ){
213 $destrecord =& $dest->toRecord();
215 $dest =& $destrecord;
219 if ( !isset($relationship) ){
220 $rel =& $dest->_table->getChildrenRelationship();
222 return PEAR::raiseError(
'No relationship was specified into which to paste the contents of the clipboard.');
224 $relationship = $rel->getName();
232 $recordids = explode(
"\n", $row[
'recordids']);
233 foreach ( $recordids as $recordid ){
235 if ( is_a($record,
'Dataface_Record')){
236 $io2 =
new Dataface_IO($record->_table->tablename);
244 $io->addExistingRelatedRecord($newrecord);
248 $res = $io2->removeRelatedRecord($record,
false);
267 $this->errors[] = $error;
271 $this->warnings[] = $warning;
275 $this->messages[] = $message;
279 $this->errors = array();
280 $this->warnings = array();
281 $this->messages = array();