rw.php

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

PHP
1,603
字号
     */    function addGroupExtensionDep($groupname, $name, $min = false, $max = false,                                         $recommended = false, $exclude = false)    {        $this->_isValid = 0;        $dep = $this->_constructDep($name, false, false, $min, $max, $recommended, $exclude);        return $this->_addGroupDependency('extension', $dep, $groupname);    }    /**     * @param package|subpackage|extension     * @param array dependency contents     * @param string name of the dependency group to add this to     * @return boolean     * @access private     */    function _addGroupDependency($type, $dep, $groupname)    {        $arr = array('subpackage', 'extension');        if ($type != 'package') {            array_shift($arr);        }        if ($type == 'extension') {            array_shift($arr);        }        if (!isset($this->_packageInfo['dependencies']['group'])) {            return false;        } else {            if (!isset($this->_packageInfo['dependencies']['group'][0])) {                if ($this->_packageInfo['dependencies']['group']['attribs']['name'] == $groupname) {                    $this->_packageInfo['dependencies']['group'] = $this->_mergeTag(                        $this->_packageInfo['dependencies']['group'], $dep,                        array(                            $type => $arr                        ));                    $this->_isValid = 0;                    return true;                } else {                    return false;                }            } else {                foreach ($this->_packageInfo['dependencies']['group'] as $i => $group) {                    if ($group['attribs']['name'] == $groupname) {                    $this->_packageInfo['dependencies']['group'][$i] = $this->_mergeTag(                        $this->_packageInfo['dependencies']['group'][$i], $dep,                        array(                            $type => $arr                        ));                        $this->_isValid = 0;                        return true;                    }                }                return false;            }        }    }    /**     * @param optional|required     * @param string package name     * @param string package channel     * @param string minimum version     * @param string maximum version     * @param string recommended version     * @param string extension this package provides, if any     * @param bool if true, tells the installer to ignore the default optional dependency group     *             when installing this package     * @param array|false optional excluded versions     */    function addPackageDepWithChannel($type, $name, $channel, $min = false, $max = false,                                      $recommended = false, $exclude = false,                                      $providesextension = false, $nodefault = false)    {        if (!in_array($type, array('optional', 'required'), true)) {            $type = 'required';        }        $this->_isValid = 0;        $arr = array('optional', 'group');        if ($type != 'required') {            array_shift($arr);        }        $dep = $this->_constructDep($name, $channel, false, $min, $max, $recommended, $exclude,            $providesextension, $nodefault);        $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep,            array(                'dependencies' => array('providesextension', 'usesrole', 'usestask',                    'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',                    'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),                $type => $arr,                'package' => array('subpackage', 'extension', 'os', 'arch')            ));    }    /**     * @param optional|required     * @param string name of the package     * @param string uri of the package     * @param string extension this package provides, if any     * @param bool if true, tells the installer to ignore the default optional dependency group     *             when installing this package     */    function addPackageDepWithUri($type, $name, $uri, $providesextension = false,                                  $nodefault = false)    {        $this->_isValid = 0;        $arr = array('optional', 'group');        if ($type != 'required') {            array_shift($arr);        }        $dep = $this->_constructDep($name, false, $uri, false, false, false, false,            $providesextension, $nodefault);        $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep,            array(                'dependencies' => array('providesextension', 'usesrole', 'usestask',                    'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',                    'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),                $type => $arr,                'package' => array('subpackage', 'extension', 'os', 'arch')            ));    }    /**     * @param optional|required optional, required     * @param string package name     * @param string package channel     * @param string minimum version     * @param string maximum version     * @param string recommended version     * @param array incompatible versions     * @param bool if true, tells the installer to ignore the default optional dependency group     *             when installing this package     */    function addSubpackageDepWithChannel($type, $name, $channel, $min = false, $max = false,                                         $recommended = false, $exclude = false,                                         $nodefault = false)    {        $this->_isValid = 0;        $arr = array('optional', 'group');        if ($type != 'required') {            array_shift($arr);        }        $dep = $this->_constructDep($name, $channel, false, $min, $max, $recommended, $exclude,            $nodefault);        $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep,            array(                'dependencies' => array('providesextension', 'usesrole', 'usestask',                    'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',                    'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),                $type => $arr,                'subpackage' => array('extension', 'os', 'arch')            ));    }    /**     * @param optional|required optional, required     * @param string package name     * @param string package uri for download     * @param bool if true, tells the installer to ignore the default optional dependency group     *             when installing this package     */    function addSubpackageDepWithUri($type, $name, $uri, $nodefault = false)    {        $this->_isValid = 0;        $arr = array('optional', 'group');        if ($type != 'required') {            array_shift($arr);        }        $dep = $this->_constructDep($name, false, $uri, false, false, false, false, $nodefault);        $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep,            array(                'dependencies' => array('providesextension', 'usesrole', 'usestask',                    'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',                    'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),                $type => $arr,                'subpackage' => array('extension', 'os', 'arch')            ));    }    /**     * @param optional|required optional, required     * @param string extension name     * @param string minimum version     * @param string maximum version     * @param string recommended version     * @param array incompatible versions     */    function addExtensionDep($type, $name, $min = false, $max = false, $recommended = false,                             $exclude = false)    {        $this->_isValid = 0;        $arr = array('optional', 'group');        if ($type != 'required') {            array_shift($arr);        }        $dep = $this->_constructDep($name, false, false, $min, $max, $recommended, $exclude);        $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep,            array(                'dependencies' => array('providesextension', 'usesrole', 'usestask',                    'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',                    'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),                $type => $arr,                'extension' => array('os', 'arch')            ));    }    /**     * @param string Operating system name     * @param boolean true if this package cannot be installed on this OS     */    function addOsDep($name, $conflicts = false)    {        $this->_isValid = 0;        $dep = array('name' => $name);        if ($conflicts) {            $dep['conflicts'] = '';        }        $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep,            array(                'dependencies' => array('providesextension', 'usesrole', 'usestask',                    'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',                    'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),                'required' => array('optional', 'group'),                'os' => array('arch')            ));    }    /**     * @param string Architecture matching pattern     * @param boolean true if this package cannot be installed on this architecture     */    function addArchDep($pattern, $conflicts = false)    {        $this->_isValid = 0;        $dep = array('pattern' => $pattern);        if ($conflicts) {            $dep['conflicts'] = '';        }        $this->_packageInfo = $this->_mergeTag($this->_packageInfo, $dep,            array(                'dependencies' => array('providesextension', 'usesrole', 'usestask',                    'srcpackage', 'srcuri', 'phprelease', 'extsrcrelease', 'extbinrelease',                    'zendextsrcrelease', 'zendextbinrelease', 'bundle', 'changelog'),                'required' => array('optional', 'group'),                'arch' => array()            ));    }    /**     * Set the kind of package, and erase all release tags     *     * - a php package is a PEAR-style package     * - an extbin package is a PECL-style extension binary     * - an extsrc package is a PECL-style source for a binary     * - an zendextbin package is a PECL-style zend extension binary     * - an zendextsrc package is a PECL-style source for a zend extension binary     * - a bundle package is a collection of other pre-packaged packages     * @param php|extbin|extsrc|zendextsrc|zendextbin|bundle     * @return bool success     */    function setPackageType($type)    {        $this->_isValid = 0;        if (!in_array($type, array('php', 'extbin', 'extsrc', 'zendextsrc',                                   'zendextbin', 'bundle'))) {            return false;        }        if (in_array($type, array('zendextsrc', 'zendextbin'))) {            $this->_setPackageVersion2_1();        }        if ($type != 'bundle') {            $type .= 'release';        }        foreach (array('phprelease', 'extbinrelease', 'extsrcrelease',                       'zendextsrcrelease', 'zendextbinrelease', 'bundle') as $test) {            unset($this->_packageInfo[$test]);        }        if (!isset($this->_packageInfo[$type])) {            // ensure that the release tag is set up            $this->_packageInfo = $this->_insertBefore($this->_packageInfo, array('changelog'),                array(), $type);        }        $this->_packageInfo[$type] = array();        return true;    }    /**     * @return bool true if package type is set up     */    function addRelease()    {        if ($type = $this->getPackageType()) {            if ($type != 'bundle') {                $type .= 'release';            }            $this->_packageInfo = $this->_mergeTag($this->_packageInfo, array(),                array($type => array('changelog')));            return true;        }        return false;    }    /**     * Get the current release tag in order to add to it     * @param bool returns only releases that have installcondition if true     * @return array|null     */    function &_getCurrentRelease($strict = true)    {        if ($p = $this->getPackageType()) {            if ($strict) {                if ($p == 'extsrc' || $p == 'zendextsrc') {                    $a = null;                    return $a;                }            }            if ($p != 'bundle') {                $p .= 'release';            }            if (isset($this->_packageInfo[$p][0])) {                return $this->_packageInfo[$p][count($this->_packageInfo[$p]) - 1];            } else {

⌨️ 快捷键说明

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