芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/www/cepali/mod/data/field/url/field.class.php
dirroot. '/repository/lib.php'); // necessary for the constants used in args $args = new stdClass(); $args->accepted_types = '*'; $args->return_types = FILE_EXTERNAL; $args->context = $this->context; $args->env = 'url'; $fp = new file_picker($args); $options = $fp->options; $fieldid = 'field_url_'.$options->client_id; $straddlink = get_string('choosealink', 'repository'); $url = ''; $text = ''; if ($formdata) { $fieldname = 'field_' . $this->field->id . '_0'; $url = $formdata->$fieldname; $fieldname = 'field_' . $this->field->id . '_1'; if (isset($formdata->$fieldname)) { $text = $formdata->$fieldname; } } else if ($recordid) { if ($content = $DB->get_record('data_content', array('fieldid'=>$this->field->id, 'recordid'=>$recordid))) { $url = $content->content; $text = $content->content1; } } $autolinkable = !empty($this->field->param1) && empty($this->field->param2); $str = '
'; $label = '
' . $this->field->name . '
'; if ($this->field->required) { $image = $OUTPUT->pix_icon('req', get_string('requiredelement', 'form')); if ($autolinkable) { $label .= html_writer::div(get_string('requiredelement', 'form'), 'accesshide'); } else { $label .= html_writer::div($image, 'inline-req'); } } $label .= '
'; if ($autolinkable) { $str .= '
'; $str .= '
' . get_string('url', 'data') . ':
'; if (!empty($image)) { $str .= $image; } $str .= '
'; $str .= $label; $str .= '
'; $str .= '
' . $straddlink . '
'; $str .= '
' . get_string('text', 'data') . ':
'; $str .= '
'; $str .= '
'; } else { // Just the URL field $str .= $label; $str .= '
repositories) > 0) { $str .= '
' . $straddlink . '
'; } } // print out file picker //$str .= $OUTPUT->render($fp); $module = array('name'=>'data_urlpicker', 'fullpath'=>'/mod/data/data.js', 'requires'=>array('core_filepicker')); $PAGE->requires->js_init_call('M.data_urlpicker.init', array($options), true, $module); $str .= '
'; return $str; } function display_search_field($value = '') { return '
' . get_string('fieldname', 'data') . '
' . '
'; } public function parse_search_field($defaults = null) { $param = 'f_'.$this->field->id; if (empty($defaults[$param])) { $defaults = array($param => ''); } return optional_param($param, $defaults[$param], PARAM_NOTAGS); } function generate_sql($tablealias, $value) { global $DB; static $i=0; $i++; $name = "df_url_$i"; return array(" ({$tablealias}.fieldid = {$this->field->id} AND ".$DB->sql_like("{$tablealias}.content", ":$name", false).") ", array($name=>"%$value%")); } function display_browse_field($recordid, $template) { global $DB; if ($content = $DB->get_record('data_content', array('fieldid'=>$this->field->id, 'recordid'=>$recordid))) { $url = empty($content->content)? '':$content->content; $text = empty($content->content1)? '':$content->content1; if (empty($url) or ($url == 'http://')) { return ''; } if (!empty($this->field->param2)) { // param2 forces the text to something $text = $this->field->param2; } if ($this->field->param1) { // param1 defines whether we want to autolink the url. $attributes = array(); if ($this->field->param3) { // param3 defines whether this URL should open in a new window. $attributes['target'] = '_blank'; $attributes['rel'] = 'noreferrer'; } if (empty($text)) { $text = $url; } $str = html_writer::link($url, $text, $attributes); } else { $str = $url; } return $str; } return false; } function update_content_import($recordid, $value, $name='') { $values = explode(" ", $value, 2); foreach ($values as $index => $value) { $this->update_content($recordid, $value, $name . '_' . $index); } } function update_content($recordid, $value, $name='') { global $DB; $content = new stdClass(); $content->fieldid = $this->field->id; $content->recordid = $recordid; $names = explode('_', $name); switch ($names[2]) { case 0: // update link $content->content = clean_param($value, PARAM_URL); break; case 1: // add text $content->content1 = clean_param($value, PARAM_NOTAGS); break; default: break; } if (!empty($content->content) && (strpos($content->content, '://') === false) && (strpos($content->content, '/') !== 0)) { $content->content = 'http://' . $content->content; } if ($oldcontent = $DB->get_record('data_content', array('fieldid'=>$this->field->id, 'recordid'=>$recordid))) { $content->id = $oldcontent->id; return $DB->update_record('data_content', $content); } else { return $DB->insert_record('data_content', $content); } } function notemptyfield($value, $name) { $names = explode('_',$name); $value = clean_param($value, PARAM_URL); //clean first if ($names[2] == '0') { return ($value!='http://' && !empty($value)); } return false; } function export_text_value($record) { return $record->content . " " . $record->content1; } /** * Return the plugin configs for external functions. * * @return array the list of config parameters * @since Moodle 3.3 */ public function get_config_for_external() { // Return all the config parameters. $configs = []; for ($i = 1; $i <= 10; $i++) { $configs["param$i"] = $this->field->{"param$i"}; } return $configs; } }