/** * 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; } }
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); } } }