⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 field.class.php

📁 很棒的在线教学系统
💻 PHP
字号:
<?php  // $Id: field.class.php,v 1.24.2.2 2008/07/10 09:48:45 scyrma Exp $/////////////////////////////////////////////////////////////////////////////                                                                       //// NOTICE OF COPYRIGHT                                                   ////                                                                       //// Moodle - Modular Object-Oriented Dynamic Learning Environment         ////          http://moodle.org                                            ////                                                                       //// Copyright (C) 1999-onwards Moodle Pty Ltd  http://moodle.com          ////                                                                       //// This program is free software; you can redistribute it and/or modify  //// it under the terms of the GNU General Public License as published by  //// the Free Software Foundation; either version 2 of the License, or     //// (at your option) any later version.                                   ////                                                                       //// This program is distributed in the hope that it will be useful,       //// but WITHOUT ANY WARRANTY; without even the implied warranty of        //// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         //// GNU General Public License for more details:                          ////                                                                       ////          http://www.gnu.org/copyleft/gpl.html                         ////                                                                       /////////////////////////////////////////////////////////////////////////////require_once($CFG->dirroot.'/mod/data/field/file/field.class.php');// Base class is 'file'class data_field_picture extends data_field_file {    var $type = 'picture';    var $previewwidth  = 50;    var $previewheight = 50;    function data_field_picture($field=0, $data=0) {        parent::data_field_base($field, $data);    }    function display_add_field($recordid=0) {        global $CFG;        $filepath = '';        $filename = '';        $description = '';        if ($recordid) {            if ($content = get_record('data_content', 'fieldid', $this->field->id, 'recordid', $recordid)) {                $filename = $content->content;                $description = $content->content1;            }            $path = $this->data->course.'/'.$CFG->moddata.'/data/'.$this->data->id.'/'.$this->field->id.'/'.$recordid;            require_once($CFG->libdir.'/filelib.php');            $filepath = get_file_url("$path/$filename");        }        $str = '<div title="'.s($this->field->description).'">';        $str .= '<fieldset><legend><span class="accesshide">'.$this->field->name.'</span></legend>';        $str .= '<input type="hidden" name ="field_'.$this->field->id.'_file" id="field_'.$this->field->id.'_file"  value="fakevalue" />';        $str .= '<label for="field_'.$this->field->id.'">'.get_string('picture','data'). '</label>&nbsp;<input type="file" name ="field_'.$this->field->id.'" id="field_'.$this->field->id.'" /><br />';        $str .= '<label for="field_'.$this->field->id.'_filename">'.get_string('alttext','data') .'</label>&nbsp;<input type="text" name="field_'                .$this->field->id.'_filename" id="field_'.$this->field->id.'_filename" value="'.s($description).'" /><br />';        $str .= '<input type="hidden" name="MAX_FILE_SIZE" value="'.s($this->field->param3).'" />';        if ($filepath) {            $str .= '<img width="'.s($this->previewwidth).'" height="'.s($this->previewheight).'" src="'.$filepath.'" alt="" />';        }        $str .= '</fieldset>';        $str .= '</div>';        return $str;    }    function display_search_field($value = '') {        return '<input type="text" size="16" name="f_'.$this->field->id.'" value="'.$value.'" />';    }    function parse_search_field() {        return optional_param('f_'.$this->field->id, '', PARAM_NOTAGS);    }    function generate_sql($tablealias, $value) {        return " ({$tablealias}.fieldid = {$this->field->id} AND {$tablealias}.content LIKE '%{$value}%') ";    }    function display_browse_field($recordid, $template) {        global $CFG;        if ($content = get_record('data_content', 'fieldid', $this->field->id, 'recordid', $recordid)){            if (isset($content->content)) {                $contents[0] = $content->content;                $contents[1] = $content->content1;            }            if (empty($contents[0])) {                // Nothing to show                return '';            }            $alt = empty($contents[1])? '':$contents[1];            $title = empty($contents[1])? '':$contents[1];            $src = $contents[0];            $path = $this->data->course.'/'.$CFG->moddata.'/data/'.$this->data->id.'/'.$this->field->id.'/'.$recordid;            $thumbnaillocation = $CFG->dataroot .'/'. $path .'/thumb/'.$src;            require_once($CFG->libdir.'/filelib.php');            $source = get_file_url("$path/$src");            $thumbnailsource = file_exists($thumbnaillocation) ? get_file_url("$path/thumb/$src") : $source;            if ($template == 'listtemplate') {                $width = $this->field->param4 ? ' width="'.s($this->field->param4).'" ' : ' ';                $height = $this->field->param5 ? ' height="'.s($this->field->param5).'" ' : ' ';                $str = '<a href="view.php?d='.$this->field->dataid.'&amp;rid='.$recordid.'"><img '.                     $width.$height.' src="'.$thumbnailsource.'" alt="'.s($alt).'" title="'.s($title).'" style="border:0px" /></a>';            } else {                $width = $this->field->param1 ? ' width="'.s($this->field->param1).'" ':' ';                $height = $this->field->param2 ? ' height="'.s($this->field->param2).'" ':' ';                $str = '<a href="'.$source.'"><img '.$width.$height.' src="'.$source.'" alt="'.s($alt).'" title="'.s($title).'" style="border:0px" /></a>';            }            return $str;        }        return false;    }    function update_field() {        // Get the old field data so that we can check whether the thumbnail dimensions have changed        $oldfield = get_record('data_fields', 'id', $this->field->id);        if (!update_record('data_fields', $this->field)) {            notify('updating of new field failed!');            return false;        }        // Have the thumbnail dimensions changed?        if ($oldfield && ($oldfield->param4 != $this->field->param4 || $oldfield->param5 != $this->field->param5)) {            // Check through all existing records and update the thumbnail            if ($contents = get_records('data_content', 'fieldid', $this->field->id)) {                if (count($contents) > 20) {                    notify(get_string('resizingimages', 'data'), 'notifysuccess');                    echo "\n\n";                    // To make sure that ob_flush() has the desired effect                    ob_flush();                }                foreach ($contents as $content) {                    @set_time_limit(300);                    // Might be slow!                    $this->update_thumbnail($content);                }            }        }        return true;    }    function update_content($recordid, $value, $name) {        parent::update_content($recordid, $value, $name);        $content = get_record('data_content','fieldid', $this->field->id, 'recordid', $recordid);        $this->update_thumbnail($content);        // Regenerate the thumbnail    }    function update_thumbnail($content) {        // (Re)generate thumbnail image according to the dimensions specified in the field settings.        // If thumbnail width and height are BOTH not specified then no thumbnail is generated, and        // additionally an attempted delete of the existing thumbnail takes place.        global $CFG;        require_once($CFG->libdir . '/gdlib.php');        $datalocation = $CFG->dataroot .'/'.$this->data->course.'/'.$CFG->moddata.'/data/'.                        $this->data->id.'/'.$this->field->id.'/'.$content->recordid;        $originalfile = $datalocation.'/'.$content->content;        if (!file_exists($originalfile)) {            return;        }        if (!file_exists($datalocation.'/thumb')) {            mkdir($datalocation.'/thumb', 0777);            // robertall: Why hardcode 0777??        }        $thumbnaillocation = $datalocation.'/thumb/'.$content->content;        $imageinfo = GetImageSize($originalfile);        $image->width  = $imageinfo[0];        $image->height = $imageinfo[1];        $image->type   = $imageinfo[2];        if (!$image->width || !$image->height) {            // Should not happen            return;        }        switch ($image->type) {            case 1:                if (function_exists('ImageCreateFromGIF')) {                    $im = ImageCreateFromGIF($originalfile);                } else {                    return;                }                break;            case 2:                if (function_exists('ImageCreateFromJPEG')) {                    $im = ImageCreateFromJPEG($originalfile);                } else {                    return;                }                break;            case 3:                if (function_exists('ImageCreateFromPNG')) {                    $im = ImageCreateFromPNG($originalfile);                } else {                    return;                }                break;        }        $thumbwidth  = isset($this->field->param4)?$this->field->param4:'';        $thumbheight = isset($this->field->param5)?$this->field->param5:'';        if ($thumbwidth || $thumbheight) {            // Only if either width OR height specified do we want a thumbnail            $wcrop = $image->width;            $hcrop = $image->height;            if ($thumbwidth && !$thumbheight) {                $thumbheight = $image->height * $thumbwidth / $image->width;            } else if($thumbheight && !$thumbwidth) {                $thumbwidth = $image->width * $thumbheight / $image->height;            } else {                // BOTH are set - may need to crop if aspect ratio differs                $hratio = $image->height / $thumbheight;                $wratio = $image->width  / $thumbwidth;                if ($wratio > $hratio) {                    // Crop the width                    $wcrop = intval($thumbwidth * $hratio);                } elseif($hratio > $wratio) {                    //Crop the height                    $hcrop = intval($thumbheight * $wratio);                }            }            // At this point both $thumbwidth and $thumbheight are set, and $wcrop and $hcrop            if (function_exists('ImageCreateTrueColor') and $CFG->gdversion >= 2) {                $im1 = ImageCreateTrueColor($thumbwidth,$thumbheight);            } else {                $im1 = ImageCreate($thumbwidth,$thumbheight);            }            if ($image->type == 3) {                // Prevent alpha blending for PNG images                imagealphablending($im1, false);            }            $cx = $image->width  / 2;            $cy = $image->height / 2;            // These "half" measurements use the "crop" values rather than the actual dimensions            $halfwidth  = floor($wcrop * 0.5);            $halfheight = floor($hcrop * 0.5);            ImageCopyBicubic($im1, $im, 0, 0, $cx-$halfwidth, $cy-$halfheight,                             $thumbwidth, $thumbheight, $halfwidth*2, $halfheight*2);            if ($image->type == 3) {                // Save alpha transparency for PNG images                imagesavealpha($im1, true);            }            if (function_exists('ImageJpeg') && $image->type != 3) {                @touch($thumbnaillocation);                // Helps in Safe mode                if (ImageJpeg($im1, $thumbnaillocation, 90)) {                    @chmod($thumbnaillocation, 0666);                    // robertall: Why hardcode 0666??                }            } elseif (function_exists('ImagePng') && $image->type == 3) {                @touch($thumbnaillocation);                // Helps in Safe mode                if (ImagePng($im1, $thumbnaillocation, 9)) {                    @chmod($thumbnaillocation, 0666);                    // robertall: Why hardcode 0666??                }            }        } else {            // Try to remove the thumbnail - we don't want thumbnailing active            @unlink($thumbnaillocation);        }    }    function text_export_supported() {        return false;    }}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -