示例#1
0
 function stripImagesFromMessage($message_id)
 {
     $db = JFactory::getDBO();
     $qry = "SELECT * FROM #__fss_ticket_messages WHERE id = " . $db->escape($message_id);
     $db->setQuery($qry);
     $message = $db->loadObject();
     $body = $message->body;
     $count = 0;
     while (strpos($body, "[img]data:") !== false) {
         $start = strpos($body, "[img]data:");
         $end = strpos($body, "[/img]", $start);
         if ($end < 1) {
             break;
         }
         $count++;
         $content = substr($body, $start + 5, $end - $start - 5);
         list($type, $rest) = explode(";", $content, 2);
         list($encoding, $data) = explode(",", $rest, 2);
         $image_data = base64_decode($data);
         list($junk, $extension) = explode("/", $type, 2);
         $filename = "message-{$message_id}-inline-image-{$count}." . $extension;
         $destpath = JPATH_SITE . DS . FSS_Settings::get('attach_location') . DS . 'support' . DS;
         $destname = FSS_File_Helper::makeAttachFilename("support", $filename, date("Y-m-d", strtotime($message->posted)), $this, $message->user_id);
         if (file_put_contents($destpath . $destname, $image_data)) {
             $size = filesize($destpath . $destname);
             $qry = "INSERT INTO #__fss_ticket_attach (ticket_ticket_id, filename, diskfile, size, user_id, added, message_id, inline) VALUES ('";
             $qry .= FSSJ3Helper::getEscaped($db, $this->id) . "',";
             $qry .= "'" . FSSJ3Helper::getEscaped($db, $filename) . "',";
             $qry .= "'" . FSSJ3Helper::getEscaped($db, $destname) . "',";
             $qry .= "'" . $size . "',";
             $qry .= "'" . FSSJ3Helper::getEscaped($db, $message->user_id) . "',";
             $qry .= "'" . $message->posted . "', " . $message->id . ", 1)";
             $db->setQuery($qry);
             $db->Query();
             $attach_id = $db->insertid();
         }
         $key = FSS_Helper::base64url_encode(FSS_Helper::encrypt($attach_id, FSS_Helper::getEncKey("file")));
         $replace = "[img]" . JURI::base() . "index.php?option=com_fss&view=image&fileid={$attach_id}&key={$key}" . "[/img]";
         $body = substr($body, 0, $start) . $replace . substr($body, $end + 6);
     }
     if ($count > 0) {
         $qry = "UPDATE #__fss_ticket_messages SET body = \"" . $db->escape($body) . "\" WHERE id = " . $db->escape($message_id);
         $db->setQuery($qry);
         $db->Query();
     }
 }
示例#2
0
 function VerifyDisk()
 {
     $db = JFactory::getDBO();
     $qry = "SELECT * FROM #__fss_ticket_attach";
     $db->setQuery($qry);
     $this->files = $db->loadObjectList("diskfile");
     $count = 0;
     foreach ($this->files as &$file) {
         if (file_exists(JPATH_SITE . DS . FSS_Settings::get('attach_location') . DS . 'support' . DS . $file->diskfile)) {
             $ticket = new SupportTicket();
             $ticket->load($file->ticket_ticket_id);
             $destpath = JPATH_SITE . DS . FSS_Settings::get('attach_location') . DS . 'support' . DS;
             $destname = FSS_File_Helper::makeAttachFilename("support", $file->filename, $file->added, $ticket, $file->user_id);
             if (rename($destpath . $file->diskfile, $destpath . $destname)) {
                 $qry = "UPDATE #__fss_ticket_attach SET diskfile = '" . $db->escape($destname) . "' WHERE id = " . $file->id;
                 $db->setQuery($qry);
                 $db->Query();
                 $count++;
             }
         }
     }
     JFactory::getApplication()->redirect("index.php?option=com_fss&view=attachclean", "{$count} files verified.", "message");
 }
示例#3
0
 function AttachFiles($ticketid, $userid, $messageid)
 {
     $db = JFactory::getDBO();
     if (empty($this->attachments)) {
         return false;
     }
     if (!is_array($this->attachments)) {
         return false;
     }
     if (count($this->attachments) == 0) {
         return false;
     }
     $now = FSS_Helper::CurDate();
     $st = new SupportTicket();
     $st->load($ticketid);
     foreach ($this->attachments as $filename => &$data) {
         $new = imap_mime_header_decode($filename);
         $filename = @mb_convert_encoding($new[0]->text, "UTF-8", $new[0]->charset);
         $this->Log("Attachment : {$filename} - " . strlen($data));
         $destpath = JPATH_SITE . DS . FSS_Settings::get('attach_location') . DS . 'support' . DS;
         $destname = FSS_File_Helper::makeAttachFilename("support", $filename, date("Y-m-d"), $st, $userid);
         if (JFile::write($destpath . $destname, $data)) {
             $this->Log("Wrote file to {$destname}");
             $qry = "INSERT INTO #__fss_ticket_attach (ticket_ticket_id, filename, diskfile, size, user_id, added, message_id) VALUES ('";
             $qry .= FSSJ3Helper::getEscaped($db, $ticketid) . "',";
             $qry .= "'" . FSSJ3Helper::getEscaped($db, $filename) . "',";
             $qry .= "'" . FSSJ3Helper::getEscaped($db, $destname) . "',";
             $qry .= "'" . strlen($data) . "',";
             $qry .= "'" . FSSJ3Helper::getEscaped($db, $userid) . "',";
             $qry .= "'{$now}', {$messageid} )";
             $db->setQuery($qry);
             $db->Query();
             $file_obj = new stdClass();
             $file_obj->filename = $filename;
             $file_obj->diskfile = $destname;
             $file_obj->size = strlen($data);
             $this->files[] = $file_obj;
         } else {
             // ERROR : File cannot be uploaded! try permissions
         }
     }
     return count($this->files);
 }