/**
 * This function remove one folder
 *
 * @uses $CFG
 * @param int $folderid Folder ID
 * @param object $options Options
 * @return boolean Success/Fail
 * @todo Finish documenting this function
 **/
function email_removefolder($folderid, $options)
{
    global $CFG;
    // Check if this folder have subfolders
    if (get_record('email_subfolder', 'folderparentid', $folderid)) {
        // This folder is parent of other/s folders. Don't remove this
        // Notify
        redirect($CFG->wwwroot . '/blocks/email_list/email/view.php?id=' . $options->id . '&amp;action=viewmails', '<div class="notifyproblem">' . get_string('havesubfolders', 'block_email_list') . '</div>');
    }
    // Get folder
    if ($folders = get_records('email_folder', 'id', $folderid)) {
        // For all folders . . .
        foreach ($folders as $folder) {
            // Before removing references to foldermail, move this mails to root folder parent.
            if ($foldermails = get_records('email_foldermail', 'folderid', $folder->id)) {
                // Move mails
                foreach ($foldermails as $foldermail) {
                    // Get folder
                    if ($folder = email_get_folder($foldermail->folderid)) {
                        // Get root folder parent
                        if ($parent = email_get_parentfolder($foldermail->folderid)) {
                            // Assign mails it
                            email_move2folder($foldermail->mailid, $foldermail->id, $parent->id);
                        } else {
                            print_error('failgetparentfolder', 'block_email_list');
                        }
                    } else {
                        print_error('failreferencemailfolder', 'block_email_list');
                    }
                }
            }
            // Delete all subfolders of this
            if (!delete_records('email_subfolder', 'folderparentid', $folder->id)) {
                return false;
            }
            // Delete all subfolders of this
            if (!delete_records('email_subfolder', 'folderchildid', $folder->id)) {
                return false;
            }
            // Delete all filters of this
            if (!delete_records('email_filter', 'folderid', $folder->id)) {
                return false;
            }
            // Delete all foldermail references
            if (!delete_records('email_foldermail', 'folderid', $folder->id)) {
                return false;
            }
        }
        // Delete all folders
        if (!delete_records('email_folder', 'id', $folderid)) {
            return false;
        }
    }
    add_to_log($folderid, "email", "remove subfolder", "{$folderid}");
    notify(get_string('removefolderok', 'block_email_list'));
    return true;
}
            if ($success) {
                notify(get_string('tounreadok', 'block_email_list'), 'notifysuccess');
            } else {
                notify(get_string('failmarkunreaded', 'block_email_list'));
            }
            break;
        case 'move2folder':
            // In variable folderid
            $success = true;
            // Move mails -- This variable is an array of ID's
            if (is_array($mailid)) {
                foreach ($mailid as $mail) {
                    // Get foldermail reference
                    $foldermail = email_get_reference2foldermail($mail, $folderoldid);
                    // Move this mail into folder
                    if (!email_move2folder($mail, $foldermail->id, $folderid)) {
                        $success = false;
                    }
                }
                // Show
                if (!$success) {
                    notify(get_string('movefail', 'block_email_list'));
                } else {
                    notify(get_string('moveok', 'block_email_list'));
                }
            }
            // Show folders
            $options->folderid = $folderoldid;
            break;
    }
}
Exemplo n.º 3
0
 /**
  * This function remove eMail, if this does in TRASH folder remove of BBDD else move to TRASH folder.
  *
  * @access public
  * @version 1.0
  * @param int $userid User Id
  * @param int $courseid Course Id
  * @param int $folderid Folder Id
  * @param boolean $silent Show or not show messages
  * @return boolean Success/Fail
  * @todo Finish documenting this function
  */
 function remove($userid, $courseid, $folderid, $silent = false)
 {
     // First, show if folder remove or not
     $deletemails = false;
     $success = true;
     if (email_isfolder_type(get_record('block_email_list_folder', 'id', $folderid), EMAIL_TRASH)) {
         $deletemails = true;
     }
     // FIXME: Esborrar els attachments quan no hagi cap referència al mail
     // If delete definity mails ...
     if ($deletemails) {
         // Delete reference mail
         if (!delete_records('block_email_list_send', 'mailid', $this->id, 'userid', $userid, 'course', $courseid)) {
             return false;
         }
     } else {
         // Get remove folder user
         $removefolder = email_get_root_folder($userid, EMAIL_TRASH);
         // Get actual folder
         $actualfolder = email_get_reference2foldermail($this->id, $folderid);
         if ($actualfolder) {
             // Move mails to trash
             if (!email_move2folder($this->id, $actualfolder->id, $removefolder->id)) {
                 $success = false;
             } else {
                 // Mark the message as read
                 set_field('block_email_list_send', 'readed', 1, 'mailid', $this->id, 'userid', $userid, 'course', $courseid);
                 //Thanks Ann
             }
         } else {
             $success = false;
         }
     }
     // Notify
     if ($success) {
         add_to_log($this->course, 'email_list', 'remove mail', '', 'Remove ' . $this->subject, 0, $this->userid);
         if (!$silent) {
             notify(get_string('removeok', 'block_email_list'), 'notifysuccess');
         }
         return true;
     } else {
         if (!$silent) {
             notify(get_string('removefail', 'block_email_list'));
         }
         return false;
     }
 }