/**
  *    transfer a file using HTTP protocol between servers
  *
  *    @desc Member function handling file transfer using HTTP protocol from a foreign server to local server
  *    @param void
  *    @return boolean Returns false if file could not be transfered
  *                    and true if it does. Sets _error if false.
  */
 function uploadURL($url, $path, $validate = _DM_VALIDATE_ALL, $name = null)
 {
     $errid = null;
     $errmsg = null;
     if (!($parsedurl = parse_url($url))) {
         $this->_err = 'Malformed url: ' . $url;
         return false;
     }
     if (!$name) {
         $name = DOCMAN_Utils::basename($parsedurl["path"]);
     }
     if ($validate & _DM_VALIDATE_PATH && !$this->validatePath($path) || $validate & _DM_VALIDATE_NAME && !$this->validateName($name) || $validate & _DM_VALIDATE_EXISTS && !$this->validateExists($name, $path) || $validate & _DM_VALIDATE_EXT && !$this->validateExt($name) || $validate & _DM_VALIDATE_PROTO && !$this->validateProtocol($parsedurl['scheme'])) {
         return false;
     }
     // Open the URL source using PHP fopen schema.
     $bufferhandle = @fopen($url, 'rb');
     //Binary read-mode
     if (!$bufferhandle) {
         $this->_err = _DML_COULDNOTCONNECT . " " . @$parsedurl['host'];
         return false;
     }
     // Open the local file and copy contents
     $file_to_open = $path . $name;
     if ($fh = fopen($file_to_open, "w")) {
         $filesize = 0;
         while (!feof($bufferhandle)) {
             $buffer = fread($bufferhandle, 40960);
             $bsize = strlen($buffer);
             if ($validate & _DM_VALIDATE_SIZE) {
                 if ($filesize + $bsize > $this->max_file_size) {
                     fclose($fh);
                     fclose($bufferhandle);
                     unlink($file_to_open);
                     $this->_err .= _DML_SIZEEXCEEDS;
                     return false;
                 }
             }
             fwrite($fh, $buffer);
             $filesize += $bsize;
         }
         fclose($fh);
         fclose($bufferhandle);
         $file = new DOCMAN_File($name, $path);
         return $file;
     } else {
         $this->_err = _DML_COULDNOTOPEN . " {$file_to_open} , {$path} , {$name}";
         return false;
     }
 }
Пример #2
0
function filesSelectList(&$doc, $std_opt = 'class="inputbox" size="1"')
{
    /*
     * PROGRAMMER NOTE:
     * Do NOT use FULL url for description on links. This could expose passwords
     * (Not a wise idea though they could get them elsewhere in the system...)
     */
    $options = array();
    $selected = null;
    if (!$doc->id) {
        if ($doc->dmfilename == _DM_DOCUMENT_LINK) {
            //create options
            $options[] = JHTML::_('select.option', _DM_DOCUMENT_LINK, _DML_LINKED);
            $selected = _DM_DOCUMENT_LINK;
            //change document data
            $parsed_url = parse_url($doc->dmlink);
            $doc->dmname = _DML_LINKTO . (isset($parsed_url['path']) ? DOCMAN_Utils::basename($parsed_url['path']) : $parsed_url['host']);
            $doc->dmdescription = "\n" . _DML_DOCLINKTO . ':' . $parsed_url['scheme'] . '://' . $parsed_url['host'] . (isset($parsed_url['path']) ? $parsed_url['path'] : '') . (isset($parsed_url['query']) ? $parsed_url['query'] : '') . "\n\n" . _DML_DOCLINKON . ':' . strftime("%a, %Y-%b-%d %R");
        } else {
            //create options
            $options[] = JHTML::_('select.option', $doc->dmfilename);
            $selected = $doc->dmfilename;
            //change document data
            $doc->dmname = substr($doc->dmfilename, 0, strrpos($doc->dmfilename, "."));
        }
    } else {
        //create options
        $options[] = JHTML::_('select.option', '', _DML_SELECT_FILE);
        if (!is_null($doc->id)) {
            $options[] = JHTML::_('select.option', $doc->dmfilename, _DML_CURRENT . ': ' . $doc->dmfilename);
        }
        $files = DOCMAN_docs::getFilesByUserAccess();
        foreach ($files as $file) {
            if (is_null($doc->id) || $file->dmfilename != $doc->dmfilename) {
                $options[] = JHTML::_('select.option', $file->dmfilename);
            }
        }
        if (count($options) < 2) {
            //_returnTo('upload', _DML_YOU_MUST_UPLOAD);
        }
        $selected = $doc->dmfilename;
    }
    $list = JHTML::_('select.genericlist', $options, 'dmfilename', $std_opt, 'value', 'text', $selected);
    return $list;
}
 /**
  * Copies the XML setup file to the element Admin directory
  * Used by Components/Modules/Mambot Installer Installer
  * @return boolean True on success, False on error
  */
 function copySetupFile($where = 'admin')
 {
     if ($where == 'admin') {
         return $this->copyFiles($this->installDir(), $this->componentAdminDir(), array(DOCMAN_Utils::basename($this->installFilename())), true);
     } else {
         if ($where == 'front') {
             return $this->copyFiles($this->installDir(), $this->elementDir(), array(DOCMAN_Utils::basename($this->installFilename())), true);
         }
     }
 }