file.php

来自「php 开发的内容管理系统」· PHP 代码 · 共 135 行

PHP
135
字号
<?php
/**
 * Article management
 *
 * @copyright	The XOOPS project http://www.xoops.org/
 * @license		http://www.fsf.org/copyleft/gpl.html GNU public license
 * @author		Taiwen Jiang (phppp or D.J.) <php_pp@hotmail.com>
 * @since		1.00
 * @version		$Id$
 * @package		module::article
 */
 
if (!defined("XOOPS_ROOT_PATH")) {
	exit();
}
include_once dirname(dirname(__FILE__))."/include/vars.php";
mod_loadFunctions("parse", $GLOBALS["artdirname"]);

if(!class_exists("Xfile")){
class Xfile extends ArtObject
{
    //var $db;
    //var $table;

    function Xfile($id = null)
    {
	    $this->ArtObject();
        //$this->db =& Database::getInstance();
        $this->table = art_DB_prefix("file");
        $this->initVar("file_id", XOBJ_DTYPE_INT, null);
        $this->initVar("art_id", XOBJ_DTYPE_INT, 0, true);
        //$this->initVar("file_uid", XOBJ_DTYPE_INT, 0);
        $this->initVar("file_name", XOBJ_DTYPE_TXTBOX, "", true);
    }
}
}

// TODO: handle mysql version 4.1

art_parse_class('
class [CLASS_PREFIX]FileHandler extends ArtObjectHandler
{
    function [CLASS_PREFIX]FileHandler(&$db) {
        $this->ArtObjectHandler($db, art_DB_prefix("file", true), "Xfile", "file_id", "file_name");
    }
    
    function getCountOrphan()
    {
        $sql = "SELECT COUNT(*) as count FROM " . art_DB_prefix("file")." WHERE art_id NOT IN ( SELECT DISTINCT art_id FROM ".art_DB_prefix("article").")";
        $result = $this->db->query($sql);
        $myrow = $this->db->fetchArray($result);
        return intval($myrow["count"]);
    }

    function &getOrpan($criteria = null, $tags = false)
    {
	    if(is_array($tags) && count($tags)>0) {
		    if(!in_array("file_id",$tags)) $tags[] = "file_id";
		    $select = implode(",", $tags);
	    }
	    else $select = "*";
	    $limit = $start = null;
        $sql = "SELECT $select FROM " . art_DB_prefix("file")." WHERE art_id NOT IN ( SELECT DISTINCT art_id FROM ".art_DB_prefix("article").")";
        if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) {
            $sql .= " ".$criteria->renderWhere();
            if ($criteria->getSort() != "") {
                $sql .= " ORDER BY ".$criteria->getSort()." ".$criteria->getOrder();
            }
            $limit = $criteria->getLimit();
            $start = $criteria->getStart();
        }
        $result = $this->db->query($sql, $limit, $start);
        $ret = array();
        while ($myrow = $this->db->fetchArray($result)) {
            $file =& $this->create(false);
            $file->assignVars($myrow);

            $ret[$myrow["file_id"]] = $file;
            unset($file);
        }
        return $ret;
    }

   	function &getOrphanByLimit($limit=1, $start = 0, $criteria = null, $tags = false)
   	{
        if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) {
        }elseif(!empty($limit)){
			$criteria = new CriteriaCompo();
	        $criteria->setLimit($limit);
	        $criteria->setStart($start);
        }
        $ret =& $this->getAll($criteria, $tags);
        return $ret;
   	}

    function &getByArticle($art_id)
    {
        $sql = "SELECT * FROM " . art_DB_prefix("file") . " WHERE art_id = ". intval($art_id);
        $result = $this->db->query($sql);
        $ret = array();
        while ($myrow = $this->db->fetchArray($result)) {
            $file =& $this->create(false);
            $file->assignVars($myrow);
            $ret[$myrow["file_id"]] = $file;
            unset($file);
        }
        return $ret;
    }

    function delete(&$file)
    {
	    global $xoopsModuleConfig;

        $sql = "DELETE FROM ".$file->table." WHERE file_id =".$file->getVar("file_id");
        if (!$result = $this->db->queryF($sql)) {
            return false;
        }
        @unlink($xoopsModuleConfig["path_file"]."/".$file->getVar("file_name"));
        unset($file);
        return true;
    }

    function deleteByArticle($art_id)
    {
	    $files = $this->getByArticle($art_id);
	    if(count($files)>0){
		    foreach($files as $file_id => $file){
			    $this->delete($file);
		    }
	    }
	    return true;
    }
}
');
?>

⌨️ 快捷键说明

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