validator.php

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 1,599 行 · 第 1/5 页

PHP
1,599
字号
                      !isset($this->_packageInfo['srcpackage'])) {                    $this->_mustSrcPackage($release);                }                if (isset($this->_packageInfo['uri']) && !isset($this->_packageInfo['srcuri'])) {                    $this->_mustSrcuri($release);                }                $releases = $this->_packageInfo[$releasetype];                if (!is_array($releases)) {                    return true;                }                if (!isset($releases[0])) {                    $releases = array($releases);                }                foreach ($releases as $rel) {                    $this->_stupidSchemaValidate(array(                        '*installconditions',                        '*filelist',                    ), $rel, '<' . $releasetype . '>');                }            }        }        if (isset($this->_packageInfo['bundle'])) {            $release = 'bundle';            if (isset($this->_packageInfo['providesextension'])) {                $this->_cannotProvideExtension($release);            }            if (isset($this->_packageInfo['srcpackage']) || isset($this->_packageInfo['srcuri'])) {                $this->_cannotHaveSrcpackage($release);            }            $releases = $this->_packageInfo['bundle'];            if (!is_array($releases) || !isset($releases[0])) {                $releases = array($releases);            }            foreach ($releases as $rel) {                $this->_stupidSchemaValidate(array(                    '*installconditions',                    '*filelist',                ), $rel, '<bundle>');            }        }        foreach ($releases as $rel) {            if (is_array($rel) && array_key_exists('installconditions', $rel)) {                $this->_validateInstallConditions($rel['installconditions'],                    "<$release><installconditions>");            }            if (is_array($rel) && array_key_exists('filelist', $rel)) {                if ($rel['filelist']) {                                        $this->_validateFilelist($rel['filelist'], true);                }            }        }    }    /**     * This is here to allow role extension through plugins     * @param string     */    function _validateRole($role)    {        return in_array($role, PEAR_Installer_Role::getValidRoles($this->_pf->getPackageType()));    }    function _pearVersionTooLow($version)    {        $this->_stack->push(__FUNCTION__, 'error',            array('version' => $version),            'This package.xml requires PEAR version %version% to parse properly, we are ' .            'version 1.6.1');    }    function _invalidTagOrder($oktags, $actual, $root)    {        $this->_stack->push(__FUNCTION__, 'error',            array('oktags' => $oktags, 'actual' => $actual, 'root' => $root),            'Invalid tag order in %root%, found <%actual%> expected one of "%oktags%"');    }    function _ignoreNotAllowed($type)    {        $this->_stack->push(__FUNCTION__, 'error', array('type' => $type),            '<%type%> is not allowed inside global <contents>, only inside ' .            '<phprelease>/<extbinrelease>/<zendextbinrelease>, use <dir> and <file> only');    }    function _fileNotAllowed($type)    {        $this->_stack->push(__FUNCTION__, 'error', array('type' => $type),            '<%type%> is not allowed inside release <filelist>, only inside ' .            '<contents>, use <ignore> and <install> only');    }    function _oldStyleFileNotAllowed()    {        $this->_stack->push(__FUNCTION__, 'error', array(),            'Old-style <file>name</file> is not allowed.  Use' .            '<file name="name" role="role"/>');    }    function _tagMissingAttribute($tag, $attr, $context)    {        $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag,            'attribute' => $attr, 'context' => $context),            'tag <%tag%> in context "%context%" has no attribute "%attribute%"');    }    function _tagHasNoAttribs($tag, $context)    {        $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag,            'context' => $context),            'tag <%tag%> has no attributes in context "%context%"');    }    function _invalidInternalStructure()    {        $this->_stack->push(__FUNCTION__, 'exception', array(),            'internal array was not generated by compatible parser, or extreme parser error, cannot continue');    }    function _invalidFileRole($file, $dir, $role)    {        $this->_stack->push(__FUNCTION__, 'error', array(            'file' => $file, 'dir' => $dir, 'role' => $role,            'roles' => PEAR_Installer_Role::getValidRoles($this->_pf->getPackageType())),            'File "%file%" in directory "%dir%" has invalid role "%role%", should be one of %roles%');    }    function _invalidFileName($file, $dir)    {        $this->_stack->push(__FUNCTION__, 'error', array(            'file' => $file),            'File "%file%" in directory "%dir%" cannot begin with "./" or contain ".."');    }    function _invalidFileInstallAs($file, $as)    {        $this->_stack->push(__FUNCTION__, 'error', array(            'file' => $file, 'as' => $as),            'File "%file%" <install as="%as%"/> cannot contain "./" or contain ".."');    }    function _invalidDirName($dir)    {        $this->_stack->push(__FUNCTION__, 'error', array(            'dir' => $file),            'Directory "%dir%" cannot begin with "./" or contain ".."');    }    function _filelistCannotContainFile($filelist)    {        $this->_stack->push(__FUNCTION__, 'error', array('tag' => $filelist),            '<%tag%> can only contain <dir>, contains <file>.  Use ' .            '<dir name="/"> as the first dir element');    }    function _filelistMustContainDir($filelist)    {        $this->_stack->push(__FUNCTION__, 'error', array('tag' => $filelist),            '<%tag%> must contain <dir>.  Use <dir name="/"> as the ' .            'first dir element');    }    function _tagCannotBeEmpty($tag)    {        $this->_stack->push(__FUNCTION__, 'error', array('tag' => $tag),            '<%tag%> cannot be empty (<%tag%/>)');    }    function _UrlOrChannel($type, $name)    {        $this->_stack->push(__FUNCTION__, 'error', array('type' => $type,            'name' => $name),            'Required dependency <%type%> "%name%" can have either url OR ' .            'channel attributes, and not both');    }    function _NoChannel($type, $name)    {        $this->_stack->push(__FUNCTION__, 'error', array('type' => $type,            'name' => $name),            'Required dependency <%type%> "%name%" must have either url OR ' .            'channel attributes');    }    function _UrlOrChannelGroup($type, $name, $group)    {        $this->_stack->push(__FUNCTION__, 'error', array('type' => $type,            'name' => $name, 'group' => $group),            'Group "%group%" dependency <%type%> "%name%" can have either url OR ' .            'channel attributes, and not both');    }    function _NoChannelGroup($type, $name, $group)    {        $this->_stack->push(__FUNCTION__, 'error', array('type' => $type,            'name' => $name, 'group' => $group),            'Group "%group%" dependency <%type%> "%name%" must have either url OR ' .            'channel attributes');    }    function _unknownChannel($channel)    {        $this->_stack->push(__FUNCTION__, 'error', array('channel' => $channel),            'Unknown channel "%channel%"');    }    function _noPackageVersion()    {        $this->_stack->push(__FUNCTION__, 'error', array(),            'package.xml <package> tag has no version attribute, or version is not 2.0');    }    function _NoBundledPackages()    {        $this->_stack->push(__FUNCTION__, 'error', array(),            'No <bundledpackage> tag was found in <contents>, required for bundle packages');    }    function _AtLeast2BundledPackages()    {        $this->_stack->push(__FUNCTION__, 'error', array(),            'At least 2 packages must be bundled in a bundle package');    }    function _ChannelOrUri($name)    {        $this->_stack->push(__FUNCTION__, 'error', array('name' => $name),            'Bundled package "%name%" can have either a uri or a channel, not both');    }    function _noChildTag($child, $tag)    {        $this->_stack->push(__FUNCTION__, 'error', array('child' => $child, 'tag' => $tag),            'Tag <%tag%> is missing child tag <%child%>');    }    function _invalidVersion($type, $value)    {        $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, 'value' => $value),            'Version type <%type%> is not a valid version (%value%)');    }    function _invalidState($type, $value)    {        $states = array('stable', 'beta', 'alpha', 'devel');        if ($type != 'api') {            $states[] = 'snapshot';        }        if (strtolower($value) == 'rc') {            $this->_stack->push(__FUNCTION__, 'error',                array('version' => $this->_packageInfo['version']['release']),                'RC is not a state, it is a version postfix, try %version%RC1, stability beta');        }        $this->_stack->push(__FUNCTION__, 'error', array('type' => $type, 'value' => $value,            'types' => $states),            'Stability type <%type%> is not a valid stability (%value%), must be one of ' .            '%types%');    }    function _invalidTask($task, $ret, $file)    {        switch ($ret[0]) {            case PEAR_TASK_ERROR_MISSING_ATTRIB :                $info = array('attrib' => $ret[1], 'task' => $task, 'file' => $file);                $msg = 'task <%task%> is missing attribute "%attrib%" in file %file%';            break;            case PEAR_TASK_ERROR_NOATTRIBS :                $info = array('task' => $task, 'file' => $file);                $msg = 'task <%task%> has no attributes in file %file%';            break;            case PEAR_TASK_ERROR_WRONG_ATTRIB_VALUE :                $info = array('attrib' => $ret[1], 'values' => $ret[3],                    'was' => $ret[2], 'task' => $task, 'file' => $file);                $msg = 'task <%task%> attribute "%attrib%" has the wrong value "%was%" '.                    'in file %file%, expecting one of "%values%"';            break;            case PEAR_TASK_ERROR_INVALID :                $info = array('reason' => $ret[1], 'task' => $task, 'file' => $file);                $msg = 'task <%task%> in file %file% is invalid because of "%reason%"';            break;        }        $this->_stack->push(__FUNCTION__, 'error', $info, $msg);    }    function _unknownTask($task, $file)    {        $this->_stack->push(__FUNCTION__, 'error', array('task' => $task, 'file' => $file),            'Unknown task "%task%" passed in file <file name="%file%">');    }    function _subpackageCannotProvideExtension($name)    {        $this->_stack->push(__FUNCTION__, 'error', array('name' => $name),            'Subpackage dependency "%name%" cannot use <providesextension>, ' .            'only package dependencies can use this tag');    }    function _subpackagesCannotConflict($name)    {        $this->_stack->push(__FUNCTION__, 'error', array('name' => $name),            'Subpackage dependency "%name%" cannot use <conflicts/>, ' .            'only package dependencies can use this tag');    }    function _cannotProvideExtension($release)    {        $this->_stack->push(__FUNCTION__, 'error', array('release' => $release),            '<%release%> packages cannot use <providesextension>, only extbinrelease, extsrcrelease, zendextsrcrelease, and zendextbinrelease can provide a PHP extension');    }    function _mustProvideExtension($release)    {        $this->_stack->push(__FUNCTION__, 'error', array('release' => $release),            '<%release%> packages must use <providesextension> to indicate which PHP extension is provided');    }    function _cannotHaveSrcpackage($release)    {        $this->_stack->

⌨️ 快捷键说明

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