You can subscribe to this list here.
2012 |
Jan
|
Feb
(214) |
Mar
(139) |
Apr
(198) |
May
(187) |
Jun
(151) |
Jul
(210) |
Aug
(169) |
Sep
(58) |
Oct
(53) |
Nov
(54) |
Dec
(301) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2013 |
Jan
(348) |
Feb
(178) |
Mar
(219) |
Apr
(154) |
May
(117) |
Jun
(194) |
Jul
(61) |
Aug
(132) |
Sep
(121) |
Oct
(110) |
Nov
(11) |
Dec
(18) |
2014 |
Jan
(34) |
Feb
(50) |
Mar
(82) |
Apr
(98) |
May
(39) |
Jun
(111) |
Jul
(67) |
Aug
(36) |
Sep
(33) |
Oct
(26) |
Nov
(53) |
Dec
(44) |
2015 |
Jan
(29) |
Feb
(47) |
Mar
(25) |
Apr
(19) |
May
(23) |
Jun
(20) |
Jul
(49) |
Aug
(7) |
Sep
(10) |
Oct
(10) |
Nov
(4) |
Dec
(25) |
2016 |
Jan
(8) |
Feb
(7) |
Mar
(1) |
Apr
|
May
(3) |
Jun
|
Jul
(1) |
Aug
(2) |
Sep
|
Oct
|
Nov
(7) |
Dec
(5) |
2017 |
Jan
(4) |
Feb
|
Mar
|
Apr
|
May
(15) |
Jun
|
Jul
(18) |
Aug
(24) |
Sep
|
Oct
(14) |
Nov
|
Dec
|
2018 |
Jan
|
Feb
(22) |
Mar
|
Apr
(11) |
May
(1) |
Jun
(17) |
Jul
(2) |
Aug
(2) |
Sep
|
Oct
(6) |
Nov
(5) |
Dec
|
2019 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(2) |
From: <wis...@us...> - 2016-01-27 11:11:03
|
Revision: 13195 http://sourceforge.net/p/xoops/svn/13195 Author: wishcraft Date: 2016-01-27 11:11:00 +0000 (Wed, 27 Jan 2016) Log Message: ----------- Starting Fontier+ for XOOPS 2.5 Added Paths: ----------- XoopsModules/fontier+/ XoopsModules/fontier+/trunk/ XoopsModules/fontier+/trunk/modules/ XoopsModules/fontier+/trunk/modules/fontier/ XoopsModules/fontier+/trunk/modules/fontier/.htaccess XoopsModules/fontier+/trunk/modules/fontier/admin/ XoopsModules/fontier+/trunk/modules/fontier/blocks/ XoopsModules/fontier+/trunk/modules/fontier/callback.php XoopsModules/fontier+/trunk/modules/fontier/class/ XoopsModules/fontier+/trunk/modules/fontier/header.php XoopsModules/fontier+/trunk/modules/fontier/images/ XoopsModules/fontier+/trunk/modules/fontier/images/assets/ XoopsModules/fontier+/trunk/modules/fontier/images/icons/ XoopsModules/fontier+/trunk/modules/fontier/images/icons/16x16/ XoopsModules/fontier+/trunk/modules/fontier/images/icons/24x24/ XoopsModules/fontier+/trunk/modules/fontier/images/icons/32x32/ XoopsModules/fontier+/trunk/modules/fontier/images/icons/48x48/ XoopsModules/fontier+/trunk/modules/fontier/images/icons/module_fontier+.png XoopsModules/fontier+/trunk/modules/fontier/include/ XoopsModules/fontier+/trunk/modules/fontier/js/ XoopsModules/fontier+/trunk/modules/fontier/language/ XoopsModules/fontier+/trunk/modules/fontier/language/english/ XoopsModules/fontier+/trunk/modules/fontier/language/english/style.css XoopsModules/fontier+/trunk/modules/fontier/templates/ XoopsModules/fontier+/trunk/modules/fontier/templates/admin/ XoopsModules/fontier+/trunk/modules/fontier/templates/blocks/ XoopsModules/fontier+/trunk/xoops_data/ XoopsModules/fontier+/trunk/xoops_data/cache/ XoopsModules/fontier+/trunk/xoops_data/cache/fontier/ XoopsModules/fontier+/trunk/xoops_data/fontier/ XoopsModules/fontier+/trunk/xoops_lib/ XoopsModules/fontier+/trunk/xoops_lib/modules/ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v1.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v2.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/domains.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-converted.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-css-listed.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-families.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-preferences.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v1.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v2.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/lookups.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/mimetypes.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-archiving.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-converted.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-extracting.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/stratas.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/whois.diz XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/constants.php XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/functions.php Added: XoopsModules/fontier+/trunk/modules/fontier/.htaccess =================================================================== --- XoopsModules/fontier+/trunk/modules/fontier/.htaccess (rev 0) +++ XoopsModules/fontier+/trunk/modules/fontier/.htaccess 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,47 @@ +php_value memory_limit 360M +php_value upload_max_filesize 999999M +php_value post_max_size 999999M +php_value error_reporting 0 +php_value display_errors 0 + +RewriteEngine On +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d + +RewriteRule ^([a-z0-9]{2})/(.*?)/callback.api$ callback.php?version=$1&mode=$2 [L,NC,QSA] + +RewriteRule ^([a-z0-9]{2})/(font)/(.*?)/(preview)/image.(gif|jpg|png)$ index.php?version=$1&mode=$2&clause=$3&state=$5&output=$4 [L] +RewriteRule ^([a-z0-9]{2})/survey/(preview)/(.*?)/image.(jpg|png|gif)$ survey-$2.php?version=$1&mode=$4&key=$3&output=$2 [L] +RewriteRule ^([a-z0-9]{2})/(font)/(.*?)/(preview)/(gif|jpg|png).api$ index.php?version=$1&mode=$2&clause=$3&state=$5&output=$4 [L] +RewriteRule ^([a-z0-9]{2})/survey/(preview)/(.*?)/(jpg|png|gif).api$ survey-$2.php?version=$1&mode=$4&key=$3&output=$2 [L] +RewriteRule ^([a-z0-9]{2})/(font)/(.*?)/(glyph)/([0-9]+)/image.(gif|jpg|png)$ index.php?version=$1&mode=$2&clause=$3&state=$6&output=$4&char=$5 [L] +RewriteRule ^([a-z0-9]{2})/(font)/(.*?)/(glyph)/([0-9]+)/(gif|jpg|png).api$ index.php?version=$1&mode=$2&clause=$3&state=$6&output=$4&char=$5 [L] +RewriteRule ^([a-z0-9]{2})/(font)/(.*?)/(ufo).api$ index.php?version=$1&mode=$2&clause=$3&output=$4 [L] +RewriteRule ^([a-z0-9]{2})/(font)/(.*?)/(ufo).api/(.*?)$ index.php?version=$1&mode=$2&clause=$3&state=$5&output=$4 [L] +RewriteRule ^([a-z0-9]{2})/(font)/(.*?)/(.*?).api$ index.php?version=$1&mode=$2&clause=$3&state=$5&output=$4 [L] + + +RewriteRule ^([a-z0-9]{2})/survey/page-([0-9]+)/(.*?)/(.*?).api$ survey-page-$2.php?version=$1&mode=$2&key=$3&output=$4& [L] +RewriteRule ^([a-z0-9]{2})/survey/(.*?)/(.*?)/(.*?).api?(.*?)$ survey-$2.php?version=$1&mode=$2&key=$3&output=$4&$5 [L] +RewriteRule ^([a-z0-9]{2})/survey/(.*?)/(.*?)/(.*?).api$ survey-$2.php?version=$1&mode=$2&key=$3&output=$4 [L] +RewriteRule ^([a-z0-9]{2})/survey/(.*?)/(.*?).api$ survey-$2.php?version=$1&key=$2&output=$3& [L] + +RewriteRule ^([a-z0-9]{2})/(.*?)/upload.api$ upload.php?version=$1&field=$2 [L] +RewriteRule ^([a-z0-9]{2})/(.*?)/releases.api$ releases.php?version=$1&field=$2 [L] +RewriteRule ^([a-z0-9]{2})/(uploads|releases)/(.*?)/(.*?).api?(.*?)$ index.php?version=$1&mode=$2&clause=$3&state=&output=$4&$5 [L] +RewriteRule ^([a-z0-9]{2})/(uploads|releases)/(.*?)/(.*?).api$ index.php?version=$1&mode=$2&clause=$3&state=&output=$4 [L] +RewriteRule ^([a-z0-9]{2})/(uploads|releases)/(forms).api$ index.php?version=$1&mode=$2&clause=&state=&output=$3 [L] + +RewriteRule ^([a-z0-9]{2})/(fonts|nodes|random|data|callbacks|downloads)/(.*?)/(.*?)/(.*?)/(.*?).api?(.*?)$ index.php?version=$1&mode=$2&clause=$3&state=$4&output=$5&name=$6&$7 [L] +RewriteRule ^([a-z0-9]{2})/(fonts|nodes|random|data|callbacks|downloads)/(.*?)/(.*?)/(.*?).api?(.*?)$ index.php?version=$1&mode=$2&clause=$3&state=$4&output=$5&$6 [L] +RewriteRule ^([a-z0-9]{2})/(fonts|nodes|random|data|callbacks|downloads|fonthit|archive)/(.*?)/(.*?).api?(.*?)$ index.php?version=$1&mode=$2&clause=$3&state=&output=$4&$5 [L] +RewriteRule ^([a-z0-9]{2})/(fonts|nodes|random|data|callbacks|downloads)/(.*?).api?(.*?)$ index.php?version=$1&mode=$2&clause=&state=&output=$3&$4 [L] + +RewriteRule ^([a-z0-9]{2})/(fonts|nodes|random|data|callbacks|downloads)/(.*?)/(.*?)/(.*?)/(.*?).api$ index.php?version=$1&mode=$2&clause=$3&state=$4&output=$5&name=$6 [L] +RewriteRule ^([a-z0-9]{2})/(fonts|nodes|random|data|callbacks|downloads)/(.*?)/(.*?)/(.*?).api$ index.php?version=$1&mode=$2&clause=$3&state=$4&output=$5 [L] +RewriteRule ^([a-z0-9]{2})/(fonts|nodes|random|data|callbacks|downloads|fonthit|archive)/(.*?)/(.*?).api$ index.php?version=$1&mode=$2&clause=$3&state=&output=$4 [L] +RewriteRule ^([a-z0-9]{2})/(fonts|nodes|random|data|callbacks|downloads)/(.*?).api$ index.php?version=$1&mode=$2&clause=&state=&output=$3& [L] + +RewriteRule ^font-download-example.zip$ examples/sample-font-api2-download.zip [L] +RewriteRule ^callback-example.php$ examples/callback-example.php.txt [L] +RewriteRule ^(.*?).(css|txt|php|jpg|png|gif|ico)$ $1.$2 [L] \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/modules/fontier/.htaccess ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/modules/fontier/callback.php =================================================================== --- XoopsModules/fontier+/trunk/modules/fontier/callback.php (rev 0) +++ XoopsModules/fontier+/trunk/modules/fontier/callback.php 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,77 @@ +<?php +/** + * Chronolabs Entitiesing Repository Services REST API API + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://labs.coop + * @license General Public License version 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @package entities + * @since 2.1.9 + * @author Simon Roberts <wis...@us...> + * @subpackage api + * @description Entitiesing Repository Services REST API + * @link http://sourceforge.net/projects/chronolabsapis + * @link http://cipher.labs.coop + */ + + + require_once __DIR__ . DIRECTORY_SEPARATOR . "header.php"; + + $sql = "SELECT * FROM `peers` WHERE `peer-id` LIKE '%s'"; + if ($GLOBALS['FontsDB']->getRowsNum($results = $GLOBALS['FontsDB']->queryF(sprintf($sql, mysql_real_escape_string($GLOBALS['peer-id']))))==1) + { + $peer = $GLOBALS['FontsDB']->fetchArray($results); + } + + $mode = !isset($_REQUEST['mode'])?md5(NULL):$_REQUEST['mode']; + + switch ($mode) + { + case "register": + $required = array('peer-id', 'api-uri', 'api-uri-callback', 'api-uri-zip', 'api-uri-fonts', 'version', 'polinating'); + foreach($required as $field) + if (!in_array($field, array_keys($_POST))) + die("Field \$_POST[$field] is required to operate this function!"); + + $sql = "INSERT INTO `peers` (`peer-id`, 'api-uri', 'api-uri-callback', 'api-uri-zip', 'api-uri-fonts', `version`, `polinating`, `created`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')"; + if ($GLOBALS['FontsDB']->queryF(sprintf($sql, mysql_real_escape_string($_POST['peer-id']), mysql_real_escape_string($_POST['api-uri']), mysql_real_escape_string($_POST['api-uri-callback']), mysql_real_escape_string($_POST['api-uri-zip']), mysql_real_escape_string($_POST['api-uri-fonts']), mysql_real_escape_string($_POST['version']), ($_POST['polinating']==true?'Yes':'No'), time()))) + { + if ($_POST['polinating']==true) + { + if (API_URL === API_ROOT_NODE) + { + $sql = "SELECT * FROM `peers` WHERE `peer-id` NOT LIKE '%s' AND `peer-id` NOT LIKE '%s' AND `polinating` = 'Yes'"; + if ($GLOBALS['FontsDB']->getRowsNum($results = $GLOBALS['FontsDB']->queryF(sprintf($sql, mysql_real_escape_string($GLOBALS['peer-id']), mysql_real_escape_string($_POST['peer-id']))))>=1) + { + while($other = $GLOBALS['FontsDB']->fetchArray($results)) + { + @setCallBackURI(sprintf($other['api-uri'].$other['api-uri-callback'], $mode), 145, 145, $_POST, array()); + @setCallBackURI(sprintf($_POST['api-uri'].$_POST['api-uri-callback'], $mode), 145, 145, array('peer-id'=>$other['peer-id'], 'api-uri'=>$other['api-uri'], 'api-uri-callback'=>$other['api-uri-callback'], 'api-uri-zip'=>$other['api-uri-zip'], 'api-uri-fonts'=>$other['api-uri-fonts'], 'version'=>$other['version'], 'polinating'=>$other['polinating']), array()); + } + } + } + } + + } + break; + case "fingering": + $required = array('fingerprint'); + foreach($required as $field) + if (!in_array($field, array_keys($_POST))) + die("Field \$_POST[$field] is required to operate this function!"); + $sql = "SELECT COUNT(*) as RC from `fonts_fingering` where `fingerprint` LIKE '%s'"; + list($count) = $GLOBALS['FontsDB']->fetchRow($GLOBALS['FontsDB']->queryF(sprintf($sql, $_POST['fingerprint']))); + die(json_encode(array('count'=>$count))); + break; + default: + + break; + } + exit(0); +?> \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/modules/fontier/callback.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/modules/fontier/header.php =================================================================== --- XoopsModules/fontier+/trunk/modules/fontier/header.php (rev 0) +++ XoopsModules/fontier+/trunk/modules/fontier/header.php 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,87 @@ +<?php +/** + * Chronolabs Fonting Repository Services REST API API +* +* You may not change or alter any portion of this comment or credits +* of supporting developers from this source code or any supporting source code +* which is considered copyrighted (c) material of the original comment or credit authors. +* 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. +* +* @copyright Chronolabs Cooperative http://labs.coop +* @license General Public License version 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) +* @package fonts +* @since 2.1.9 +* @author Simon Roberts <wis...@us...> +* @subpackage api +* @description Fonting Repository Services REST API +* @link http://sourceforge.net/projects/chronolabsapis +* @link http://cipher.labs.coop +*/ + + error_reporting(E_ERROR); + ini_set('display_errors', true); + + /** + * Opens Access Origin Via networking Route NPN + */ + header('Access-Control-Allow-Origin: *'); + header('Origin: *'); + + /** + * Turns of GZ Lib Compression for Document Incompatibility + */ + ini_set("zlib.output_compression", 'Off'); + ini_set("zlib.output_compression_level", -1); + + /** + * + * @var constants + */ + define("API_FILE_IO_PEERS", __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'peers.diz'); + define("API_FILE_IO_DOMAINS", __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'domains.diz'); + define("API_FILE_IO_FOOTER", __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'api-%s.html'); + + require_once __DIR__.'/class/fontages.php'; + require_once __DIR__.'/functions.php'; + require_once __DIR__.'/apiconfig.php'; + + $parts = explode(".", microtime(true)); + mt_srand(mt_rand(-microtime(true), microtime(true))/$parts[1]); + mt_srand(mt_rand(-microtime(true), microtime(true))/$parts[1]); + mt_srand(mt_rand(-microtime(true), microtime(true))/$parts[1]); + mt_srand(mt_rand(-microtime(true), microtime(true))/$parts[1]); + $salter = ((float)(mt_rand(0,1)==1?'':'-').$parts[1].'.'.$parts[0]) / sqrt((float)$parts[1].'.'.intval(cosh($parts[0])))*tanh($parts[1]) * mt_rand(1, intval($parts[0] / $parts[1])); + header('Blowfish-salt: '. $salter); + + global $domain, $protocol, $business, $entity, $contact, $referee, $peerings, $source, $ipid, $fontnames; + $fontnames = array(); + + define('FONTS_CACHE', DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'fonts' . DIRECTORY_SEPARATOR . 'cache'); + if (!is_dir(FONTS_CACHE)) + mkdirSecure(FONTS_CACHE, 0777, true); + + + /** + * Global API Configurations and Setting from file Constants! + */ + $domain = getDomainSupportism('domain', $_SERVER["HTTP_HOST"]); + $protocol = getDomainSupportism('protocol', $_SERVER["HTTP_HOST"]); + $business = getDomainSupportism('business', $_SERVER["HTTP_HOST"]); + $entity = getDomainSupportism('entity', $_SERVER["HTTP_HOST"]); + $contact = getDomainSupportism('contact', $_SERVER["HTTP_HOST"]); + $referee = getDomainSupportism('referee', $_SERVER["HTTP_HOST"]); + + /** + * URI Path Finding of API URL Source Locality + * @var unknown_type + */ + $pu = parse_url($_SERVER['REQUEST_URI']); + $source = (isset($_SERVER['HTTPS'])?'https://':'http://').strtolower($_SERVER['HTTP_HOST']); + + /** + * URI Path Finding of API URL Source Locality + * @var unknown_type + */ + $ipid = getIPIdentity(whitelistGetIP(true)); \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/modules/fontier/header.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/modules/fontier/images/icons/module_fontier+.png =================================================================== (Binary files differ) Index: XoopsModules/fontier+/trunk/modules/fontier/images/icons/module_fontier+.png =================================================================== --- XoopsModules/fontier+/trunk/modules/fontier/images/icons/module_fontier+.png 2016-01-02 01:15:09 UTC (rev 13194) +++ XoopsModules/fontier+/trunk/modules/fontier/images/icons/module_fontier+.png 2016-01-27 11:11:00 UTC (rev 13195) Property changes on: XoopsModules/fontier+/trunk/modules/fontier/images/icons/module_fontier+.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: XoopsModules/fontier+/trunk/modules/fontier/language/english/style.css =================================================================== --- XoopsModules/fontier+/trunk/modules/fontier/language/english/style.css (rev 0) +++ XoopsModules/fontier+/trunk/modules/fontier/language/english/style.css 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,97 @@ +@CHARSET "ISO-8859-1"; + +@import url(https://fonts.ringwould.com.au/v1/random/any/Api-Header-Alpha/css.api); +@import url(https://fonts.ringwould.com.au/v1/random/any/Api-Header-Omega/css.api); +@import url(https://fonts.ringwould.com.au/v1/random/any/Api-Content/css.api); +@import url(https://fonts.ringwould.com.au/v1/random/any/Api-Fields/css.api); +@import url(https://fonts.ringwould.com.au/v1/random/any/Api-Bullets/css.api); +@import url(https://fonts.ringwould.com.au/v1/random/any/Api-Main/css.api); +@import url(https://fonts.ringwould.com.au/v1/random/courier-terminal-shell-system/Api-Code-Examples/css.api); + +body { + font-family: "Api Content", "Trebuchet MS", Arial, Helvetica, sans-serif; + font-size:85%em; + text-align:justify; +} +.main { + font-family: "Api Main" !important; + border:3px solid #000000; + border-radius:15px; + background-color:#feeebe; + padding:39px 39px 39px 39px; + margin:64px 64px 64px 64px; + -webkit-box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + -moz-box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); +} +h1 { + font-family: "Api Header Alpha" !important; + font-weight:bold; + font-size:1.42em; + background-color:#FFEED9; + border-radius:15px; + padding:10px 10px 10px 10px; + text-shadow: 4px 4px 2px rgba(150, 150, 150, 1); +} +h2 { + font-family: "Api Header Omega" !important; + font-weight:500; + font-size:1.15em; + text-shadow: 4px 4px 2px rgba(150, 150, 150, 1); +} +blockquote { + margin-left:25px; + margin-right:25px; + font-family: "Api Code Examples", "Courier New", Courier, monospace !important; + margin-bottom:25px; + padding: 25px 25px 25px 25px; + border:dotted; + background-color:#fefefe; + -webkit-box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + -moz-box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + -webkit-border-radius: 14px; + -moz-border-radius: 14px; + border-radius: 14px; + text-shadow: 2px 2px 2px rgba(103, 87, 101, 0.82); +} + +.error, #error { + color: red; + margin:25px; + font-family: "Api Code Examples", "Courier New", Courier, monospace !important; + font-weight: bold; + padding: 25px 25px 25px 25px; + border: 5px dotted rgb(128, 230, 110); + background-color:#ffeede; + -webkit-box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + -moz-box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + -webkit-border-radius: 14px; + -moz-border-radius: 14px; + border-radius: 14px; + text-shadow: 2px -2px -2px rgba(103, 87, 101, 0.82); +} + +form { + padding:17px; + border: solid 3px #110022; + -webkit-box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + -moz-box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + box-shadow: 7px 7px 10px 0px rgba(108, 80, 99, 0.72); + -webkit-border-radius: 11px; + -moz-border-radius: 11px; + border-radius: 11px; + text-shadow: 2px 2px 2px rgba(103, 87, 101, 0.82); + margin-bottom: 16px; +} + +p { + font-family: "Api Content", "Trebuchet MS", Arial, Helvetica, sans-serif; + margin-bottom:12px; +} + +input, button, textarea, radio, select, label +{ + font-family: "Api Fields" !important; +} \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/modules/fontier/language/english/style.css ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v1.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v1.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v1.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,7 @@ +ttf||truetype +otf||truetype +woff||woff +svg||svg +eot||eot +afm||afm +ufo||ufo \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v1.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v2.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v2.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v2.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,7 @@ +ttf||truetype +otf||truetype +woff||woff +svg||svg +eot||eot +afm||afm +ufo||ufo \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/default-useragent-v2.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/domains.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/domains.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/domains.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,6 @@ +api.hempembassy.net||http://||Hemp Embassy (Nimbin, Australia)||Guanga-girls||we...@he...||http://hempembassy.net/register.php +ringwould.com.au||https://||Ringwould Farm (WA, Australia)||Saunder's Family||rin...@me...||http://farm.ringwould.com.au +labs.coop||http://||Chronolabs Cooperative (US Hosting)||Wishcraft||me...@sl...||http://labs.coop/register.php +syd.labs.coop||http://||Chronolabs Cooperative (Sydney, Australia)||Wishcraft||wis...@us...||http://labs.coop/register.php +127.0.0.1||http://||Localhost Development||Development||wis...@us...||http://127.0.0.1 +localhost||http://||Localhost Development||Development||wis...@us...||http://localhost \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/domains.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-converted.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-converted.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-converted.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,31 @@ +pfa +pfb +pt3 +t42 +sfd +ttf +bdf +otf +otb +cff +cef +gai +woff +svg +ufo +pf3 +ttc +gsf +cid +bin +hqx +dfont +mf +ik +fon +fnt +pcf +pmf +pdb +eot +afm \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-converted.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-css-listed.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-css-listed.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-css-listed.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,31 @@ +pfa +pfb +pt3 +t42 +sfd +ttf +bdf +otf +otb +cff +cef +gai +woff +svg +ufo +pf3 +ttc +gsf +cid +bin +hqx +dfont +mf +ik +fon +fnt +pcf +pmf +pdb +eot +afm \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-css-listed.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-families.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-families.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-families.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,10 @@ +normal||Normal regular font +italic||Font is italic +bold||Font is bold +semi||Font is semi-bold +wide||Font is wide-set +condensed||Font is condensed +light||Font is light +book||Font is for book +script||Font is a script +graphic||Font is like a wing-ding or graffite \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-families.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-preferences.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-preferences.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-preferences.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,31 @@ +ttf +otf +eot +woff +pfa +pfb +pt3 +t42 +sfd +bdf +otb +cff +cef +gai +svg +ufo +pf3 +ttc +gsf +cid +bin +hqx +dfont +mf +ik +fnt +pcf +pmf +pdb +afm +fon \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-preferences.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v1.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v1.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v1.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,6 @@ +ttf +otf +woff +svg +eot +afm \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v1.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v2.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v2.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v2.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,31 @@ +pfa +pfb +pt3 +t42 +sfd +ttf +bdf +otf +otb +cff +cef +gai +woff +svg +ufo +pf3 +ttc +gsf +cid +bin +hqx +dfont +mf +ik +fon +fnt +pcf +pmf +pdb +eot +afm \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/font-supported-v2.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/lookups.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/lookups.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/lookups.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,3 @@ +http://lookups.labs.coop/v1/country/%s/%s.api +http://lookups.api.hempembassy.net/v1/country/%s/%s.api +https://lookups.ringwould.com.au/v1/country/%s/%s.api \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/lookups.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/mimetypes.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/mimetypes.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/mimetypes.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,46 @@ +pfa||application/x-font-type1 +pfb||application/x-font-type1 +pt3||application/x-pagemaker +t42||application/octet-stream +sfd||application/octet-stream +ttf||application/x-font-ttf +bdf||application/octet-stream +otf||application/octet-stream +otb||image/vnd.nokia.ota-bitmap +cff||application/octet-stream +cef||application/octet-stream +gai||application/octet-stream +woff||application/font-woff +svg||image/svg+xml +ufo||application/octet-stream +pf3||application/octet-stream +ttc||application/octet-stream +gsf||application/octet-stream +cid||application/octet-stream +bin||application/octet-stream +hqx||application/mac-binhex +dfont||application/octet-stream +mf||application/octet-stream +ik||application/octet-stream +fon||application/octet-stream +fnt||application/octet-stream +pcf||application/octet-stream +pmf||application/octet-stream +pdb||application/octet-stream +eot||application/octet-stream +afm||application/octet-stream +7z||application/x-7z-compressed +zip||application/x-zip-compressed +rar||application/x-rar-compressed +rar5||application/x-rar-compressed +exe||application/x-ms-dos-executable +zoo||application/x-zoo-compressed +tar.gz||application/x-tar +html||text/html +css||text/css +diz||text/plain +-=-||application/octet-stream +jpg||image/jpg +jpeg||image/jpg +gif||image/gif +png||image/png \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/mimetypes.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-archiving.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-archiving.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-archiving.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,23 @@ +7z||7z a "%pack" "%folder" +ar||#tar --auto-compress -cf "%pack" "%folder" +bz2||#tar --auto-compress -cf "%pack" "%folder" +gz||#tar --auto-compress -cf "%pack" "%folder" +lzma||#tar --auto-compress -cf "%pack" "%folder" +lz||#tar --auto-compress -cf "%pack" "%folder" +lzo||#tar --auto-compress -cf "%pack" "%folder" +tar||#tar --auto-compress -cf "%pack" "%folder" +tar.7z||#tar --auto-compress -cf "%pack" "%folder" +tar.Z||#tar --auto-compress -cf "%pack" "%folder" +tar.bz2||#tar --auto-compress -cf "%pack" "%folder" +tar.gz||#tar --auto-compress -cf "%pack" "%folder" +tar.lz||#tar --auto-compress -cf "%pack" "%folder" +tar.lzma||#tar --auto-compress -cf "%pack" "%folder" +tar.lzo||#tar --auto-compress -cf "%pack" "%folder" +tar.xz||#tar --auto-compress -cf "%pack" "%folder" +tgz||#tar --auto-compress -cf "%pack" "%folder" +zip||zip -D -r -9 "%pack" "%folder" +rar||rar a -k -ma4 -r -z"%commentfile" "%pack" "%folder" +rar5||rar a -rr5 -k -ma5 -r -z"%commentfile" "%pack" "%folder" +exe||rar a -rr5 -k -ma4 -r -sfx -z"%commentfile" "%pack" "%folder" +zoo||zoo -add "%pack" %filelist +zx||#tar --auto-compress -cf "%pack" "%folder" \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-archiving.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-converted.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-converted.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-converted.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,21 @@ +7z +ar +bz2 +gz +lzma +lz +tar +tar.7z +tar.Z +tar.bz2 +tar.gz +tar.lz +tar.lzma +tar.lzo +tar.xz +tgz +zip +rar +rar5 +zoo +zx \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-converted.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-extracting.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-extracting.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-extracting.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,23 @@ +7z||7z x -y -o"%path" "%pack" +tar||#tar -xf --directory="%path" "%pack" +tar.7z||#tar -xf --directory="%path" "%pack" +tar.Z||#tar -xf --directory="%path" "%pack" +tar.bz2||#tar -xf --directory="%path" "%pack" +tar.gz||#tar -xf --directory="%path" "%pack" +tar.lz||#tar -xf --directory="%path" "%pack" +tar.lzma||#tar -xf --directory="%path" "%pack" +tar.lzo||#tar -xf --directory="%path" "%pack" +tar.xz||#tar -xf --directory="%path" "%pack" +tgz||#tar -xf --directory="%path" "%pack" +zip||unzip "%pack" -d "%path" +rar||unrar x -y "%pack" "%path" +rar5||unrar x -y "%pack" "%path" +zoo||zoo -extract "%pack" "%path" +Z||#tar -xf --directory="%path" "%pack" +bz2||#tar -xf --directory="%path" "%pack" +gz||#tar -xf --directory="%path" "%pack" +lz||#tar -xf --directory="%path" "%pack" +lzma||#tar -xf --directory="%path" "%pack" +lzo||#tar -xf --directory="%path" "%pack" +xz||#tar -xf --directory="%path" "%pack" +ar||#tar -xf --directory="%path" "%pack" \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/packs-extracting.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/stratas.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/stratas.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/stratas.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,3 @@ +http://strata.labs.coop +http://strata.api.hempembassy.net +https://strata.ringwould.com.au \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/stratas.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/whois.diz =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/whois.diz (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/whois.diz 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,3 @@ +http://whois.labs.coop/v1/%s/%s.api +http://whois.api.hempembassy.net/v1/%s/%s.api +https://whois.ringwould.com.au/v1/%s/%s.api \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/data/whois.diz ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/constants.php =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/constants.php (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/constants.php 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,37 @@ +<?php +/** + * Chronolabs Cooperatiev Fontier+ + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://labs.coop + * @license General Public License version 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @package fontier+ + * @since 1.0.1 + * @author Simon Roberts <wis...@us...> + * @subpackage fontier+ + * @description XOOPS Client for Fonts REST API - http://fonts.labs.coop + * @link http://fonts.labs.coop + * @link http://sourceforge.net/projects/chronolabs + * @link http://cipher.labs.coop + */ + + + /** + * + * @var string + */ + define('FONTIER_VERSION', '1.0.1'); + define('MAXIMUM_QUERIES', 500); + + /******* DO NOT CHANGE THIS VARIABLE **** + * @var string + */ + define('FONTIER_API_NODE', 'http://fonts.labs.coop'); + +?> \ No newline at end of file Property changes on: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/constants.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/functions.php =================================================================== --- XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/functions.php (rev 0) +++ XoopsModules/fontier+/trunk/xoops_lib/modules/fontier/include/functions.php 2016-01-27 11:11:00 UTC (rev 13195) @@ -0,0 +1,1168 @@ +<?php +/** + * Chronolabs Cooperatiev Fontier+ + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://labs.coop + * @license General Public License version 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @package fontier+ + * @since 1.0.1 + * @author Simon Roberts <wis...@us...> + * @subpackage fontier+ + * @description XOOPS Client for Fonts REST API - http://fonts.labs.coop + * @link http://fonts.labs.coop + * @link http://sourceforge.net/projects/chronolabs + * @link http://cipher.labs.coop + */ + +require_once __DIR__.'/constants.php'; + +if (!function_exists("fontsUseragentSupportedArray")) { + function fontsUseragentSupportedArray() + { + $return = array(); + if (isset($_GET['version']) && !empty($_GET['version'])) + $version = (string)$_GET['version']; + else + $version = (string)"v2"; + $ua = explode( " " , str_replace(array("\"","'",";",":","(",")","\\","/"), " ", $_SERVER['HTTP_USER_AGENT']) ); + $fontlist = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'default-useragent-'.$version.'.diz'; + if (!isset($ua[0]) && empty($ua[0]) && !isset($ua[1]) && empty($ua[1]) && !file_exists($fontlist = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . strtolower($ua[0]).'-'.strtolower($ua[1]).'-useragent-'.$version.'.diz')) + { + foreach(cleanWhitespaces(file($fontlist)) as $out) + { + $puts = explode("||", $out); + $return[$puts[0]]=$puts[1]; + } + } + if (empty($return)) + foreach(cleanWhitespaces(file($fontlist)) as $out) + { + $puts = explode("||", $out); + $return[$puts[0]]=$puts[1]; + } + return $return; + } +} + + +if (!function_exists("setCallBackURI")) { + + /* function getURIData() + * + * cURL Routine + * @author Simon Roberts (Chronolabs) si...@la... + * + * @return float() + */ + function setCallBackURI($uri = '', $timeout = 65, $connectout = 65, $data = array(), $queries = array()) + { + list($when) = $GLOBALS['FontsDB']->fetchRow($GLOBALS['trackerDB']->queryF("SELECT `when` from `callbacks` ORDER BY `when` DESC LIMIT 1")); + if ($when<time()) + $when = $time(); + $when = $when + mt_rand(3, 14); + return $GLOBALS['FontsDB']->queryF("INSERT INTO `callbacks` (`when`, `uri`, `timeout`, `connection`, `data`, `queries`) VALUES(\"$when\", \"$uri\", \"$timeout\", \"$connectout\", \"" . mysql_real_escape_string(json_encode($data)) . "\",\"" . mysql_real_escape_string(json_encode($queries)) . "\")"); + } +} + +if (!function_exists("putRawFile")) { + /** + * + * @param string $file + * @param string $data + */ + function putRawFile($file = '', $data = '') + { + $lineBreak = "\n"; + if (substr(PHP_OS, 0, 3) == 'WIN') { + $lineBreak = "\r\n"; + } + if (!is_dir(dirname($file))) + if (strpos(' '.$file, FONTS_CACHE)) + mkdirSecure(dirname($file), 0777, true); + else + mkdir(dirname($file), 0777, true); + elseif (strpos(' '.$file, FONTS_CACHE) && !file_exists(FONTS_CACHE . DIRECTORY_SEPARATOR . '.htaccess')) + putRawFile(FONTS_CACHE . DIRECTORY_SEPARATOR . '.htaccess', "<Files ~ \"^.*$\">\n\tdeny from all\n</Files>"); + if (is_file($file)) + unlink($file); + $data = str_replace("\n", $lineBreak, $data); + $ff = fopen($file, 'w'); + fwrite($ff, $data, strlen($data)); + fclose($ff); + } +} + +if (!function_exists("whitelistGetIP")) { + + /* function whitelistGetIPAddy() + * + * provides an associative array of whitelisted IP Addresses + * @author Simon Roberts (Chronolabs) si...@la... + * + * @return array + */ + function whitelistGetIPAddy() { + return array_merge(whitelistGetNetBIOSIP(), file(dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'whitelist.txt')); + } +} + +if (!function_exists("whitelistGetNetBIOSIP")) { + + /* function whitelistGetNetBIOSIP() + * + * provides an associative array of whitelisted IP Addresses base on TLD and NetBIOS Addresses + * @author Simon Roberts (Chronolabs) si...@la... + * + * @return array + */ + function whitelistGetNetBIOSIP() { + $ret = array(); + foreach(file(dirname(dirname(dirname(dirname(__FILE__)))) . DIRECTORY_SEPARATOR . 'whitelist-domains.txt') as $domain) { + $ip = gethostbyname($domain); + $ret[$ip] = $ip; + } + return $ret; + } +} + +if (!function_exists("whitelistGetIP")) { + + /* function whitelistGetIP() + * + * get the True IPv4/IPv6 address of the client using the API + * @author Simon Roberts (Chronolabs) si...@la... + * + * @param $asString boolean Whether to return an address or network long integer + * + * @return mixed + */ + function whitelistGetIP($asString = true){ + // Gets the proxy ip sent by the user + $proxy_ip = ''; + if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $proxy_ip = $_SERVER['HTTP_X_FORWARDED_FOR']; + } else + if (!empty($_SERVER['HTTP_X_FORWARDED'])) { + $proxy_ip = $_SERVER['HTTP_X_FORWARDED']; + } else + if (! empty($_SERVER['HTTP_FORWARDED_FOR'])) { + $proxy_ip = $_SERVER['HTTP_FORWARDED_FOR']; + } else + if (!empty($_SERVER['HTTP_FORWARDED'])) { + $proxy_ip = $_SERVER['HTTP_FORWARDED']; + } else + if (!empty($_SERVER['HTTP_VIA'])) { + $proxy_ip = $_SERVER['HTTP_VIA']; + } else + if (!empty($_SERVER['HTTP_X_COMING_FROM'])) { + $proxy_ip = $_SERVER['HTTP_X_COMING_FROM']; + } else + if (!empty($_SERVER['HTTP_COMING_FROM'])) { + $proxy_ip = $_SERVER['HTTP_COMING_FROM']; + } + if (!empty($proxy_ip) && $is_ip = preg_match('/^([0-9]{1,3}.){3,3}[0-9]{1,3}/', $proxy_ip, $regs) && count($regs) > 0) { + $the_IP = $regs[0]; + } else { + $the_IP = $_SERVER['REMOTE_ADDR']; + } + + $the_IP = ($asString) ? $the_IP : ip2long($the_IP); + return $the_IP; + } +} + + +if (!function_exists("getIPIdentity")) { + /** + * + * @param string $ip + * @return string + */ + function getIPIdentity($ip = '', $sarray = false) + { + $sql = array(); + + if (empty($ip)) + $ip = whitelistGetIP(true); + + if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) + $sql['selecta'] = "SELECT * from `networking` WHERE `ipaddy` LIKE '" . $ip . "' AND `type` = 'ipv6'"; + else + $sql['selecta'] = "SELECT * from `networking` WHERE `ipaddy` LIKE '" . $ip . "' AND `type` = 'ipv4'"; + if (!$row = $GLOBALS['FontsDB']->fetchArray($GLOBALS['FontsDB']->queryF($sql['selecta']))) + if (($ipaddypart[0] === $serverpart[0] && $ipaddypart[1] === $serverpart[1]) ) + { + $uris = cleanWhitespaces(file($file = __DIR__ . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "lookups.diz")); + shuffle($uris); shuffle($uris); shuffle($uris); shuffle($uris); + if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE || FILTER_FLAG_NO_RES_RANGE) === false) + { + $data = array(); + foreach($uris as $uri) + { + if ($data['ip']==$ip || $data['country']['iso'] == "-" || empty($data)) + $data = json_decode(getURIData(sprintf($uri, 'myself', 'json'), 120, 120), true); + if (count($data) > 0 && $data['country']['iso'] != "-") + continue; + } + } else{ + foreach($uris as $uri) + { + if ($data['ip']!=$ip || $data['country']['iso'] == "-" || empty($data)) + $data = json_decode(getURIData(sprintf($uri, $ip, 'json'), 120, 120), true); + if (count($data) > 0 && $data['country']['iso'] != "-") + continue; + } + } + if (!isset($data['ip']) && empty($data['ip'])) + $data['ip'] = $ip; + if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) + $sql['selectb'] = "SELECT * from `networking` WHERE `ipaddy` LIKE '" . $data['ip'] . "' AND `type` = 'ipv6'"; + else + $sql['selectb'] = "SELECT * from `networking` WHERE `ipaddy` LIKE '" . $data['ip'] . "' AND `type` = 'ipv4'"; + if (!$row = $GLOBALS['FontsDB']->fetchArray($GLOBALS['FontsDB']->queryF($sql['selectb']))) + { + $row = array(); + $row['ipaddy'] = $data['ip']; + if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === false) + $row['type'] = 'ipv6'; + else + $row['type'] = 'ipv4'; + $row['netbios'] = gethostbyaddr($row['ipaddy']); + $row['data'] = array('ipstack' => gethostbynamel($row['netbios'])); + $row['domain'] = getBaseDomain("http://".$row['netbios']); + $row['country'] = $data['country']['iso']; + $row['region'] = $data['location']['region']; + $row['city'] = $data['location']['city']; + $row['postcode'] = $data['location']['postcode']; + $row['timezone'] = "GMT " . $data['location']['gmt']; + $row['longitude'] = $data['location']['coordinates']['longitude']; + $row['latitude'] = $data['location']['coordinates']['latitude']; + $row['last'] = $row['created'] = time(); + $row['downloads'] = 0; + $row['uploads'] = 0; + + $row['fonts'] = 0; + $row['surveys'] = 0; + $whois = array(); + $whoisuris = cleanWhitespaces(file(__DIR__ . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "whois.diz")); + shuffle($whoisuris); shuffle($whoisuris); shuffle($whoisuris); shuffle($whoisuris); + foreach($whoisuris as $uri) + { + if (empty($whois[$row['type']]) || !isset($whois[$row['type']])) + { + $whois[$row['type']] = json_decode(getURIData(sprintf($uri, $row['ipaddy'], 'json'), 120, 120), true); + } elseif (empty($whois['domain']) || !isset($whois['domain'])) + { + $whois['domain'] = json_decode(getURIData(sprintf($uri, $row['domain'], 'json'), 120, 120), true); + } else + continue; + } + $sql = "SELECT count(*) FROM `whois` WHERE `id` = '".$wsid = md5(json_encode($whois))."'"; + list($countb) = $GLOBALS['FontsDB']->fetchRow($GLOBALS['FontsDB']->queryF($sql)); + if ($countb == 0) + { + $wsdata = array(); + $wsdata['id'] = $wsid; + $wsdata['whois'] = mysql_real_escape_string(json_encode($whois)); + $wsdata['created'] = time(); + $wsdata['last'] = time(); + $wsdata['instances'] = 1; + if (!$GLOBALS['FontsDB']->queryF($sql = "INSERT INTO `whois` (`" . implode('`, `', array_keys($whois)) . "`) VALUES ('" . implode("', '", $whois) . "')")) + die("SQL Failed: $sql;"); + else + echo "."; + } else { + if (!$GLOBALS['FontsDB']->queryF($sql = "UPDATE `whois` SET `instances` = `instances` + 1, `last` = unix_timestamp() WHERE `id` = '$wsid'")) + die("SQL Failed: $sql;"); + else + echo "."; + } + $row['whois'] = $wsid; + $row['ip_id'] = md5(json_encode($row)); + $data = array(); + foreach($row as $key => $value) + if (is_array($value)) + $data[$key] = mysql_real_escape_string(json_encode($value)); + else + $data[$key] = mysql_real_escape_string($value); + $sql['inserta'] = "INSERT INTO `networking` (`" . implode("`, `", array_keys($data)) . "`) VALUES ('" . implode("', '", $data) . "')"; + $GLOBALS['FontsDB']->queryF($sql['inserta']); + } + } + $sql['updatea'] = "UPDATE `networking` SET `last` = '". time() . '\' WHERE `ip_id` = "' . $row['ip_id'] .'"'; + $GLOBALS['FontsDB']->queryF($sql['updatea']); + if ($sarray == false) + return $row['ip_id']; + else + return $row; + } +} + + +if (!function_exists("getBaseDomain")) { + /** + * getBaseDomain + * + * @param string $url + * @return string|unknown + */ + function getBaseDomain($url) + { + + static $fallout, $stratauris, $classes; + + if (empty($classes)) + { + if (empty($stratauris)) { + $stratauris = cleanWhitespaces(file(__DIR__ . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "stratas.diz")); + shuffle($stratauris); shuffle($stratauris); shuffle($stratauris); shuffle($stratauris); + } + shuffle($stratauris); + $attempts = 0; + while(empty($classes) || $attempts <= (count($stratauris) * 1.65)) + { + $attempts++; + $classes = array_keys(unserialize(getURIData($stratauris[mt_rand(0, count($stratauris)-1)] ."/v1/strata/serial.api", 120, 120))); + } + } + if (empty($fallout)) + { + if (empty($stratauris)) { + $stratauris = cleanWhitespaces(file(__DIR__ . DIRECTORY_SEPARATOR . "data" . DIRECTORY_SEPARATOR . "stratas.diz")); + shuffle($stratauris); shuffle($stratauris); shuffle($stratauris); shuffle($stratauris); + } + shuffle($stratauris); + $attempts = 0; + while(empty($fallout) || $attempts <= (count($stratauris) * 1.65)) + { + $attempts++; + $fallout = array_keys(unserialize(getURIData($stratauris[mt_rand(0, count($stratauris)-1)] ."/v1/fallout/serial.api", 120, 120))); + } + } + + // Get Full Hostname + $url = strtolower($url); + $hostname = parse_url($url, PHP_URL_HOST); + if (!filter_var($hostname, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6 || FILTER_FLAG_IPV4) === false) + return $hostname; + + // break up domain, reverse + $elements = explode('.', $hostname); + $elements = array_reverse($elements); + + // Returns Base Domain + if (in_array($elements[0], $classes)) + return $elements[1] . '.' . $elements[0]; + elseif (in_array($elements[0], $fallout) && in_array($elements[1], $classes)) + return $elements[2] . '.' . $elements[1] . '.' . $elements[0]; + elseif (in_array($elements[0], $fallout)) + return $elements[1] . '.' . $elements[0]; + else + return $elements[1] . '.' . $elements[0]; + } +} + +if (!function_exists("generateCSS")) { + function generateCSS($fonts = array(), $name = '', $normal = 'no', $bold = 'no', $italic = 'no', $version = "v2") + { + if ($bold == 'yes') + $name .= ' Bold'; + if ($italic == 'yes') + $name .= ' Italic'; + $name = trim($name); + $typals = fontsUseragentSupportedArray(); + $buff = array(); + $keys = array_keys($fonts); + sort($keys); + foreach($keys as $type) + $buff[] = "local('".$fonts[$type]."') format('".$typals[$type]."')"; + foreach($keys as $type) + $buff[] = "url('".$fonts[$type]."') format('".$typals[$type]."')"; + $css = array(); + $css[] = ""; + $css[] = "/** Font: $name **/"; + $css[] = "@font-face {"; + $css[] = "\tfont-family: '$name';"; + $css[] = "\tsrc: url('".$fonts['woff']."');"; + $css[] = "\tsrc: ".implode(", ", $buff) .";"; + $css[] = "\tfont-weight: ".($bold=='yes'?'900':'normal') . ";"; + $css[] = "\tfont-style: ".($italic=='yes'?'italic':'normal') . ";"; + $css[] = "}"; + return implode("\n", $css); + } +} + +if (!function_exists("getRegionalFontName")) { + /** + * + * @param unknown_type $path + * @param unknown_type $perm + * @param unknown_type $secure + */ + function getRegionalFontName($fontid = '', $latitude = 0, $longitude = 0, $getGistance = false) + { + static $variables = array(); + if (!isset($variables[$fontid])) + { + if ($latitude==0 && $longitude == 0) + { + if (empty($iparray)) + $iparray = getIPIdentity(whitelistGetIP(true), true); + $latitude = $iparray['latitude']; + $longitude = $iparray['longitude']; + } + list($name, $distance) = $GLOBALS['FontsDB']->fetchRow($GLOBALS['FontsDB']->queryF("SELECT `name`, 3956 * 2 * ASIN(SQRT(POWER(SIN((" . abs($latitude) . " - abs(`latitude`)) * pi() / 180 / 2), 2) + COS(" . abs($latitude) . " * pi() / 180 ) * COS(abs(`latitude`) * pi() / 180) * POWER(SIN((" . $longitude . " - `longitude`) * pi() / 180 / 2), 2) )) as distance FROM `fonts_names` WHERE `font_id` = '$fontid' ORDER BY `distance` LIMIT 1")); + $variables[$fontid]['name'] = empty($name)?$fontid:$name; + $variables[$fontid]['distance'] = $distance; + } + return (!isset($variables[$fontid]['name'])||empty($variables[$fontid]['name'])?$fontid:($getGistance == false?$variables[$fontid]['name']:$variables[$fontid]['distance'])); + } +} + +if (!function_exists("getMimetype")) { + /** + * + * @param unknown_type $path + * @param unknown_type $perm + * @param unknown_type $secure + */ + function getMimetype($extension = '-=-') + { + $mimetypes = cleanWhitespaces(file(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . 'mimetypes.diz')); + foreach($mimetypes as $mimetype) + { + $parts = explode("||", $mimetype); + if (strtolower($extension) == strtolower($parts[0])) + return $parts[1]; + if (strtolower("-=-") == strtolower($parts[0])) + $final = $parts[1]; + } + return $final; + } +} + +if (!function_exists("mkdirSecure")) { + /** + * + * @param unknown_type $path + * @param unknown_type $perm + * @param unknown_type $secure + */ + function mkdirSecure($path = '', $perm = 0777, $secure = true) + { + if (!is_dir($path)) + { + mkdir($path, $perm, true); + if ($secure == true) + { + writeRawFile($path . DIRECTORY_SEPARATOR . '.htaccess', "<Files ~ \"^.*$\">\n\tdeny from all\n</Files>"); + } + return true; + } + return false; + } +} + +if (!function_exists("cleanWhitespaces")) { + /** + * + * @param array $array + */ + function cleanWhitespaces($array = array()) + { + foreach($array as $key => $value) + { + if (is_array($value)) + $array[$key] = cleanWhitespaces($value); + else { + $array[$key] = trim(str_replace(array("\n", "\r", "\t"), "", $value)); + } + } + return $array; + } +} + +if (!function_exists("getURIData")) { + + /* function getURIData() + * + * cURL Routine + * @author Simon Roberts (Chronolabs) si...@la... + * + * @return float() + */ + function getURIData($uri = '', $timeout = 65, $connectout = 65, $post_data = array()) + { + if (!function_exists("curl_init")) + { + return file_get_contents($uri); + } + if (!$btt = curl_init($uri)) { + return false; + } + curl_setopt($btt, CURLOPT_HEADER, 0); + curl_setopt($btt, CURLOPT_POST, (count($posts)==0?false:true)); + if (count($posts)!=0) + curl_setopt($btt, CURLOPT_POSTFIELDS, http_build_query($post_data)); + curl_setopt($btt, CURLOPT_CONNECTTIMEOUT, $connectout); + curl_setopt($btt, CURLOPT_TIMEOUT, $timeout); + curl_setopt($btt, CURLOPT_RETURNTRANSFER, true); + curl_setopt($btt, CURLOPT_VERBOSE, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYPEER, false); + $data = curl_exec($btt); + curl_close($btt); + return $data; + } +} + + +if (!function_exists("getFontUFORawData")) { + function getFontUFORawData($mode = '', $clause = '', $state = '', $output = '', $ufofile = '') + { + $sql = "SELECT * from `fonts_archiving` WHERE (`font_id` = '$clause' OR `fingerprint` = '$clause')"; + $result = $GLOBALS['FontsDB']->queryF($sql); + while($row = $GLOBALS['FontsDB']->fetchArray($result)) + { + $GLOBALS['FontsDB']->queryF($sql = "UPDATE `fonts` SET `hits` = `hits` + 1 WHERE `id` = '" . $row['font_id'] . "'"); + $sql = "SELECT * from `fonts` WHERE `id` = '" . $row['font_id'] . "'"; + $font = $GLOBALS['FontsDB']->fetchArray($GLOBALS['FontsDB']->queryF($sql)); + switch($font['medium']) + { + case FONT_RESOURCES_CACHE: + case FONT_RESOURCES_RESOURCE: + if ($font['medium'] == FONT_RESOURCES_CACHE) + { + $sessions = unserialize(file_get_contents(FONT_RESOURCES_CACHE . DIRECTORY_SEPARATOR . "file-store-sessions.serial")); + if... [truncated message content] |
From: <rgr...@us...> - 2016-01-02 01:15:11
|
Revision: 13194 http://sourceforge.net/p/xoops/svn/13194 Author: rgriffith Date: 2016-01-02 01:15:09 +0000 (Sat, 02 Jan 2016) Log Message: ----------- Bug fixes Modified Paths: -------------- XoopsCore/branches/2.5.x/2.5.7.2/docs/changelog.250.txt XoopsCore/branches/2.5.x/2.5.7.2/htdocs/class/xoopssecurity.php XoopsCore/branches/2.5.x/2.5.7.2/htdocs/include/comment_post.php XoopsCore/branches/2.5.x/2.5.7.2/htdocs/include/version.php XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/comments/main.php XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/tplsets/jquery.php XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/tplsets/main.php XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/users/main.php XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/templates/admin/system_comments.html XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/templates/admin/system_users.html XoopsCore/branches/2.5.x/2.5.7.2/release_notes.txt Modified: XoopsCore/branches/2.5.x/2.5.7.2/docs/changelog.250.txt =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/docs/changelog.250.txt 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/docs/changelog.250.txt 2016-01-02 01:15:09 UTC (rev 13194) @@ -1,11 +1,22 @@ XOOPS 2.5.x Changelog (Language changes: see: /docs/lang_diff.txt) ================================= -2014/06/14: Version 2.5.7.1 Final +2016/02/02: Version 2.5.7.2 Final ================================= This patch for XOOPS 2.5.7 corrects the following issues: +- multiple issues reported by Tim Coen (Curesec GmbH) + +All XOOPS 2.5.7.1 users are advised to apply this patch as soon as possible. Any users that are running an older XOOPS version are advised to update to XOOPS 2.5.7.2 now. + + +================================= +2014/06/14: Version 2.5.7.1 Final +================================= + +This patch for XOOPS 2.5.7 corrects the following issues: + - CSRF and XSS issues reported by Dingjie 'Daniel' Yang of Qualsys - XSS and best practice issues reported by Narendra Bhati @@ -37,7 +48,7 @@ Bugfixes: - fixed System Module image manager html/js bugs (luciorota) - replaced "array_diff_assoc" with "array_diff_key" in /class/theme_blocks.php (masel/mamba) -- icons for active module sections in System module not shown correctly (Slider84/mamba) +- icons for active module sections in System module not shown correctly (Slider84/mamba) - added two new language definitions (see lang_diff.txt) - added Office 2007 MIME types (Voltan) - added xml MIME type (Goffy) @@ -844,4 +855,4 @@ - modules/system/class/users.php: User Class Manager (Add) * Manage user with a specific class - modules/system/language/english/admin/users.php: User variable (Modify) - * Changed define name to follow XOOPS standard \ No newline at end of file + * Changed define name to follow XOOPS standard Modified: XoopsCore/branches/2.5.x/2.5.7.2/htdocs/class/xoopssecurity.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/htdocs/class/xoopssecurity.php 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/htdocs/class/xoopssecurity.php 2016-01-02 01:15:09 UTC (rev 13194) @@ -9,7 +9,7 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ + * @copyright (c) 2000-2015 XOOPS Project (www.xoops.org) * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) * @package kernel * @since 2.0.0 @@ -69,7 +69,7 @@ } $token_data = array( 'id' => $token_id , - 'expire' => time() + intval($timeout)); + 'expire' => time() + (int)($timeout)); array_push($_SESSION[$name . '_SESSION'], $token_data); return md5($token_id . $_SERVER['HTTP_USER_AGENT'] . XOOPS_DB_PREFIX); @@ -111,8 +111,10 @@ } } } - if (!$validFound) { - $xoopsLogger->addExtra('Token Validation', 'No valid token found'); + if (!$validFound && !isset($str)) { + $str = 'No valid token found'; + $this->setErrors($str); + $xoopsLogger->addExtra('Token Validation', $str); } $this->garbageCollection($name); Modified: XoopsCore/branches/2.5.x/2.5.7.2/htdocs/include/comment_post.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/htdocs/include/comment_post.php 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/htdocs/include/comment_post.php 2016-01-02 01:15:09 UTC (rev 13194) @@ -9,7 +9,7 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ + * @copyright (c) 2000-2015 XOOPS Project (www.xoops.org) * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) * @package kernel * @since 2.0.0 @@ -24,7 +24,7 @@ xoops_loadLanguage('comment'); if ('system' == $xoopsModule->getVar('dirname')) { - $com_id = isset($_POST['com_id']) ? intval($_POST['com_id']) : 0; + $com_id = isset($_POST['com_id']) ? (int)($_POST['com_id']) : 0; if (empty($com_id)) { exit(); } @@ -38,7 +38,7 @@ $moddir = $module->getVar('dirname'); unset($comment); } else { - $com_id = isset($_POST['com_id']) ? intval($_POST['com_id']) : 0; + $com_id = isset($_POST['com_id']) ? (int)($_POST['com_id']) : 0; if (XOOPS_COMMENT_APPROVENONE == $xoopsModuleConfig['com_rule']) { exit(); } @@ -137,16 +137,16 @@ } $com_mode = isset($_POST['com_mode']) ? htmlspecialchars(trim($_POST['com_mode']), ENT_QUOTES) : 'flat'; - $com_order = isset($_POST['com_order']) ? intval($_POST['com_order']) : XOOPS_COMMENT_OLD1ST; - $com_itemid = isset($_POST['com_itemid']) ? intval($_POST['com_itemid']) : 0; - $com_pid = isset($_POST['com_pid']) ? intval($_POST['com_pid']) : 0; - $com_rootid = isset($_POST['com_rootid']) ? intval($_POST['com_rootid']) : 0; - $com_status = isset($_POST['com_status']) ? intval($_POST['com_status']) : 0; - $dosmiley = (isset($_POST['dosmiley']) && intval($_POST['dosmiley']) > 0) ? 1 : 0; - $doxcode = (isset($_POST['doxcode']) && intval($_POST['doxcode']) > 0) ? 1 : 0; - $dobr = (isset($_POST['dobr']) && intval($_POST['dobr']) > 0) ? 1 : 0; - $dohtml = (isset($_POST['dohtml']) && intval($_POST['dohtml']) > 0) ? 1 : 0; - $doimage = (isset($_POST['doimage']) && intval($_POST['doimage']) > 0) ? 1 : 0; + $com_order = isset($_POST['com_order']) ? (int)($_POST['com_order']) : XOOPS_COMMENT_OLD1ST; + $com_itemid = isset($_POST['com_itemid']) ? (int)($_POST['com_itemid']) : 0; + $com_pid = isset($_POST['com_pid']) ? (int)($_POST['com_pid']) : 0; + $com_rootid = isset($_POST['com_rootid']) ? (int)($_POST['com_rootid']) : 0; + $com_status = isset($_POST['com_status']) ? (int)($_POST['com_status']) : 0; + $dosmiley = (isset($_POST['dosmiley']) && (int)($_POST['dosmiley']) > 0) ? 1 : 0; + $doxcode = (isset($_POST['doxcode']) && (int)($_POST['doxcode']) > 0) ? 1 : 0; + $dobr = (isset($_POST['dobr']) && (int)($_POST['dobr']) > 0) ? 1 : 0; + $dohtml = (isset($_POST['dohtml']) && (int)($_POST['dohtml']) > 0) ? 1 : 0; + $doimage = (isset($_POST['doimage']) && (int)($_POST['doimage']) > 0) ? 1 : 0; $com_icon = isset($_POST['com_icon']) ? trim($_POST['com_icon']) : ''; } else { exit(); @@ -175,7 +175,7 @@ } } $p_comment =& $myts->previewTarea($_POST['com_text'], $dohtml, $dosmiley, $doxcode, $doimage, $dobr); - $noname = isset($noname) ? intval($noname) : 0; + $noname = isset($noname) ? (int)($noname) : 0; $com_text = $myts->htmlSpecialChars($myts->stripSlashesGPC($_POST['com_text'])); if ($xoopsModule->getVar('dirname') != 'system') { include_once $GLOBALS['xoops']->path('header.php'); @@ -200,6 +200,7 @@ break; case "post": + XoopsLoad::load('XoopsRequest'); $doimage = 1; $comment_handler =& xoops_gethandler('comment'); // Start add by voltan @@ -322,10 +323,8 @@ } $comment->setVar('com_uid', $uid); } - $com_title = xoops_trim($_POST['com_title']); - $com_title = ($com_title == '') ? _NOTITLE : $com_title; - $comment->setVar('com_title', $com_title); - $comment->setVar('com_text', $_POST['com_text']); + $comment->setVar('com_title', XoopsRequest::getString('com_title', _NOTITLE, 'POST')); + $comment->setVar('com_text', XoopsRequest::getString('com_text', '', 'POST')); $comment->setVar('dohtml', $dohtml); $comment->setVar('dosmiley', $dosmiley); $comment->setVar('doxcode', $doxcode); Modified: XoopsCore/branches/2.5.x/2.5.7.2/htdocs/include/version.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/htdocs/include/version.php 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/htdocs/include/version.php 2016-01-02 01:15:09 UTC (rev 13194) @@ -30,4 +30,4 @@ /** * Define XOOPS version */ -define('XOOPS_VERSION', 'XOOPS 2.5.7.1'); +define('XOOPS_VERSION', 'XOOPS 2.5.7.2'); Modified: XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/comments/main.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/comments/main.php 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/comments/main.php 2016-01-02 01:15:09 UTC (rev 13194) @@ -2,7 +2,7 @@ // $Id$ // ------------------------------------------------------------------------ // // XOOPS - PHP Content Management System // -// Copyright (c) 2000 XOOPS.org // +// Copyright (c) 2000-2015 XOOPS Project (www.xoops.org) // // <http://www.xoops.org/> // // ------------------------------------------------------------------------ // // This program is free software; you can redistribute it and/or modify // @@ -61,9 +61,9 @@ $status_array[0] = _AM_SYSTEM_COMMENTS_FORM_ALL_STATUS; $comments = array(); -$status = (!isset($_REQUEST['status']) || !in_array(intval($_REQUEST['status']), array_keys($status_array))) ? 0 : intval($_REQUEST['status']); +$status = (!isset($_REQUEST['status']) || !in_array((int)($_REQUEST['status']), array_keys($status_array))) ? 0 : (int)($_REQUEST['status']); -$module = !isset($_REQUEST['module']) ? 0 : intval($_REQUEST['module']); +$module = !isset($_REQUEST['module']) ? 0 : (int)($_REQUEST['module']); $modules_Handler =& xoops_gethandler('module'); $module_array = $modules_Handler->getList(new Criteria('hascomments', 1)); $module_array[0] = _AM_SYSTEM_COMMENTS_FORM_ALL_MODS; @@ -166,7 +166,7 @@ if ($mcount > 4000) { redirect_header('admin.php?fct=comments', 2, _MP_DELETECOUNT); } - for ($i = 0; $i < $mcount; $i++) { + for ($i = 0; $i < $mcount; ++$i) { $criteria->add(new Criteria('com_uid', $members[$i]->getVar('uid')), 'OR'); } } @@ -175,7 +175,7 @@ if (isset($_POST['commentslist_id'])) { $commentslist_count = (!empty($_POST['commentslist_id']) && is_array($_POST['commentslist_id'])) ? count($_POST['commentslist_id']) : 0; if ($commentslist_count > 0) { - for ($i=0; $i < $commentslist_count; $i++) { + for ($i=0; $i < $commentslist_count; ++$i) { $criteria->add(new Criteria('com_id', $_REQUEST['commentslist_id'][$i]), 'OR'); } } @@ -290,10 +290,10 @@ $comments['comments_id'] = $com_id; $comments['comments_poster'] = $comments_poster_uname; $comments['comments_icon'] = $comments_icon; - $comments['comments_title'] = '<a href="admin.php?fct=comments&op=comments_jump&com_id='.$comments_arr[$i]->getVar("com_id").'">'.$comments_arr[$i]->getVar("com_title"); + $comments['comments_title'] = $myts->htmlSpecialChars($comments_arr[$i]->getVar("com_title")); $comments['comments_ip'] = $comments_arr[$i]->getVar('com_ip'); $comments['comments_date'] = formatTimeStamp($comments_arr[$i]->getVar('com_created')); - $comments['comments_text'] = $myts->undoHtmlSpecialChars($comments_arr[$i]->getVar('com_text')); + $comments['comments_text'] = $myts->htmlSpecialChars($comments_arr[$i]->getVar('com_text')); $comments['comments_status'] = @$status_array2[$comments_arr[$i]->getVar('com_status')]; $comments['comments_date_created'] = formatTimestamp($comments_arr[$i]->getVar('com_created'), 'm'); $comments['comments_modid'] = @$module_array[$comments_arr[$i]->getVar('com_modid')]; Modified: XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/tplsets/jquery.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/tplsets/jquery.php 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/tplsets/jquery.php 2016-01-02 01:15:09 UTC (rev 13194) @@ -10,16 +10,16 @@ * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * - * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ + * @copyright (c) 2000-2015 XOOPS Project (www.xoops.org) * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) * @author Maxime Cointin (AKA Kraven30) * @package system * @version $Id$ */ -include dirname( dirname( dirname( __FILE__ ) ) ) . '/header.php'; +include dirname( dirname(__DIR__) ) . '/header.php'; -// defined("XOOPS_ROOT_PATH") || die("XOOPS root path not defined"); +// defined("XOOPS_ROOT_PATH") || exit("XOOPS root path not defined"); if ( !is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid()) ) exit( _NOPERM ); @@ -32,14 +32,11 @@ include_once './../../language/english/admin/tplsets.php'; } -if (isset($_REQUEST["op"])) { - $op = $_REQUEST["op"]; -} else { - @$op = "default"; -} +XoopsLoad::load('XoopsRequest'); $GLOBALS['xoopsLogger']->usePopup = true; +$op = XoopsRequest::getCmd('op', 'default'); switch ($op) { // Display tree folder case "tpls_display_folder": @@ -84,7 +81,9 @@ break; // Edit File case 'tpls_edit_file': - $path_file = realpath(XOOPS_ROOT_PATH.'/themes'.trim($_REQUEST['path_file'])); + $clean_file = XoopsRequest::getString('file', ''); + $clean_path_file = XoopsRequest::getString('path_file', ''); + $path_file = realpath(XOOPS_ROOT_PATH.'/themes'.trim($clean_path_file)); $path_file = str_replace('\\','/',$path_file); //Button restore @@ -103,7 +102,7 @@ if (empty($content)) { echo _AM_SYSTEM_TEMPLATES_EMPTY_FILE; } - $ext = preg_replace('/^.*\./', '', $_REQUEST['path_file']); + $ext = preg_replace('/^.*\./', '', $clean_path_file); echo '<form name="back" action="admin.php?fct=tplsets&op=tpls_save" method="POST"> <table border="0"> @@ -127,7 +126,10 @@ <td><textarea id="code_mirror" name="templates" rows=24 cols=110>'.$content.'</textarea></td> </tr> </table>'; - echo '<input type="hidden" name="path_file" value="'.$path_file.'"><input type="hidden" name="file" value="'.trim($_REQUEST['file']).'"><input type="hidden" name="ext" value="'.$ext.'"></form>'; + XoopsLoad::load('XoopsFormHiddenToken'); + $xoopsToken = new XoopsFormHiddenToken(); + echo $xoopsToken->render(); + echo '<input type="hidden" name="path_file" value="'.$clean_path_file.'"><input type="hidden" name="file" value="'.trim($clean_file).'"><input type="hidden" name="ext" value="'.$ext.'"></form>'; break; // Restore backup file Modified: XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/tplsets/main.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/tplsets/main.php 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/tplsets/main.php 2016-01-02 01:15:09 UTC (rev 13194) @@ -2,7 +2,7 @@ // $Id$ // ------------------------------------------------------------------------ // // XOOPS - PHP Content Management System // -// Copyright (c) 2000 XOOPS.org // +// Copyright (c) 2000-2015 XOOPS Project (www.xoops.org) // // <http://www.xoops.org/> // // ------------------------------------------------------------------------ // // This program is free software; you can redistribute it and/or modify // @@ -166,7 +166,7 @@ // create template $templates =& $tpltpl_handler->find($tplsetname, 'module', null, $moddir); - for ($j=0; $j<count($templates); $j++) { + for ($j=0; $j<count($templates); ++$j) { $filename = $templates[$j]->getVar('tpl_file'); if ($tplsetname == $tplset) { $physical_file = XOOPS_THEME_PATH.'/'.$_REQUEST['select_theme'].'/modules/'.$moddir.'/'.$filename; @@ -194,7 +194,7 @@ // create block template $btemplates =& $tpltpl_handler->find($tplsetname, 'block', null, $moddir); - for ($k = 0; $k < count($btemplates); $k++) { + for ($k = 0; $k < count($btemplates); ++$k) { $filename = $btemplates[$k]->getVar('tpl_file'); if ($tplsetname == $tplset) { $physical_file = XOOPS_THEME_PATH.'/'.$_REQUEST['select_theme'].'/modules/'.$moddir.'/blocks/'.$filename; @@ -251,10 +251,10 @@ $class = "odd"; $text .= '<table cellspacing="1" class="outer"><tr><th colspan="3" align="center">'._AM_SYSTEM_TEMPLATES_MODULES.ucfirst($module->getVar('dirname')).'</th></tr><tr><th align="center">'._AM_SYSTEM_TEMPLATES_TYPES.'</th><th align="center">'._AM_SYSTEM_TEMPLATES_FILES.'</th><th>'._AM_SYSTEM_TEMPLATES_STATUS.'</th></tr>'; $select_templates_modules = $_REQUEST['select_templates_modules']; - for ($l=0; $l<count($_REQUEST['select_templates_modules']); $l++) { + for ($l=0; $l<count($_REQUEST['select_templates_modules']); ++$l) { // create template $templates =& $tpltpl_handler->find($tplsetname, 'module', null, $moddir); - for ($j=0; $j<count($templates); $j++) { + for ($j=0; $j<count($templates); ++$j) { $filename = $templates[$j]->getVar('tpl_file'); if ($tplsetname == $tplset) { $physical_file = XOOPS_THEME_PATH.'/'.$_REQUEST['select_theme'].'/modules/'.$moddir.'/'.$filename; @@ -284,7 +284,7 @@ // create block template $btemplates =& $tpltpl_handler->find($tplsetname, 'block', null, $moddir); - for ($k = 0; $k < count($btemplates); $k++) { + for ($k = 0; $k < count($btemplates); ++$k) { $filename = $btemplates[$k]->getVar('tpl_file'); if ($tplsetname == $tplset) { $physical_file = XOOPS_THEME_PATH.'/'.$_REQUEST['select_theme'].'/modules/'.$moddir.'/blocks/'.$filename; @@ -352,11 +352,23 @@ // save case 'tpls_save': - $path_file = $_REQUEST['path_file']; - if (isset($path_file)) { + if (!$GLOBALS['xoopsSecurity']->check()) { + redirect_header('admin.php?fct=tplsets', 2, implode('<br />', $GLOBALS['xoopsSecurity']->getErrors())); + exit(); + } + XoopsLoad::load('XoopsRequest'); + $clean_path_file = XoopsRequest::getString('path_file', ''); + if (!empty($clean_path_file)) { + $path_file = realpath(XOOPS_ROOT_PATH.'/themes'.trim($clean_path_file)); + $path_file = str_replace('\\','/',$path_file); + $pathInfo = pathinfo($path_file); + if (!in_array($pathInfo['extension'], array('css', 'html', 'tpl'))) { + redirect_header("admin.php?fct=tplsets", 2, _AM_SYSTEM_TEMPLATES_ERROR); + exit; + } // copy file - $copy_file = $path_file; - copy($copy_file, $path_file.'.back'); + $copy_file = $path_file . '.back'; + copy($path_file, $copy_file); // Save modif if (isset($_REQUEST['templates'])) { $open = fopen("".$path_file."","w+"); Modified: XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/users/main.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/users/main.php 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/admin/users/main.php 2016-01-02 01:15:09 UTC (rev 13194) @@ -2,7 +2,7 @@ // $Id$ // ------------------------------------------------------------------------ // // XOOPS - PHP Content Management System // -// Copyright (c) 2000 XOOPS.org // +// Copyright (c) 2000-2015 XOOPS Project (www.xoops.org) // // <http://www.xoops.org/> // // ------------------------------------------------------------------------ // // This program is free software; you can redistribute it and/or modify // @@ -108,7 +108,7 @@ $xoBreadCrumb->render(); $error = ''; foreach ($_REQUEST['memberslist_id'] as $del) { - $del = intval($del); + $del = (int)($del); $user =& $member_handler->getUser($del); $groups = $user->getGroups(); if (in_array(XOOPS_GROUP_ADMIN, $groups)) { @@ -273,7 +273,7 @@ } else { $groups_failed = array(); foreach ($_REQUEST['groups'] as $group) { - $group = intval($group); + $group = (int)($group); if (!$member_handler->addUserToGroup($group, $newuser->getVar('uid'))) { $groups_failed[] = $group; } @@ -435,8 +435,8 @@ $form->addElement($op_hidden); // if this is to find users for a specific group - if ( !empty($_GET['group']) && intval($_GET['group']) > 0 ) { - $group_hidden = new XoopsFormHidden("group", intval($_GET['group'])); + if ( !empty($_GET['group']) && (int)($_GET['group']) > 0 ) { + $group_hidden = new XoopsFormHidden("group", (int)($_GET['group'])); $form->addElement($group_hidden); } $form->addElement($submit_button); @@ -453,7 +453,7 @@ $criteria = new CriteriaCompo(); if ( !empty($_REQUEST['user_uname']) ) { - $match = (!empty($_REQUEST['user_uname_match'])) ? intval($_REQUEST['user_uname_match']) : XOOPS_MATCH_START; + $match = (!empty($_REQUEST['user_uname_match'])) ? (int)($_REQUEST['user_uname_match']) : XOOPS_MATCH_START; switch ($match) { case XOOPS_MATCH_START: $criteria->add(new Criteria('uname', $myts->addSlashes(trim($_REQUEST['user_uname'])).'%', 'LIKE')); @@ -472,7 +472,7 @@ $requete_search .= 'uname : '.$_REQUEST['user_uname'].' et user_uname_match='.$_REQUEST['user_uname_match'].'<br />'; } if ( !empty($_REQUEST['user_name']) ) { - $match = (!empty($_REQUEST['user_name_match'])) ? intval($_REQUEST['user_name_match']) : XOOPS_MATCH_START; + $match = (!empty($_REQUEST['user_name_match'])) ? (int)($_REQUEST['user_name_match']) : XOOPS_MATCH_START; switch ($match) { case XOOPS_MATCH_START: $criteria->add(new Criteria('name', $myts->addSlashes(trim($_REQUEST['user_name'])).'%', 'LIKE')); @@ -491,7 +491,7 @@ $requete_search .= 'name : '.$_REQUEST['user_name'].' et user_name_match='.$_REQUEST['user_name_match'].'<br />'; } if ( !empty($_REQUEST['user_email']) ) { - $match = (!empty($_REQUEST['user_email_match'])) ? intval($_REQUEST['user_email_match']) : XOOPS_MATCH_START; + $match = (!empty($_REQUEST['user_email_match'])) ? (int)($_REQUEST['user_email_match']) : XOOPS_MATCH_START; switch ($match) { case XOOPS_MATCH_START: $criteria->add(new Criteria('email', $myts->addSlashes(trim($_REQUEST['user_email'])).'%', 'LIKE')); @@ -516,7 +516,7 @@ $requete_search .= 'url : '.$_REQUEST['user_url'].'<br />'; } if ( !empty($_REQUEST['user_icq']) ) { - $match = (!empty($_REQUEST['user_icq_match'])) ? intval($_REQUEST['user_icq_match']) : XOOPS_MATCH_START; + $match = (!empty($_REQUEST['user_icq_match'])) ? (int)($_REQUEST['user_icq_match']) : XOOPS_MATCH_START; switch ($match) { case XOOPS_MATCH_START: $criteria->add(new Criteria('user_icq', $myts->addSlashes(trim($_REQUEST['user_icq'])).'%', 'LIKE')); @@ -535,7 +535,7 @@ $requete_search .= 'icq : '.$_REQUEST['user_icq'].' et user_icq_match='.$_REQUEST['user_icq_match'].'<br />'; } if ( !empty($_REQUEST['user_aim']) ) { - $match = (!empty($_REQUEST['user_aim_match'])) ? intval($_REQUEST['user_aim_match']) : XOOPS_MATCH_START; + $match = (!empty($_REQUEST['user_aim_match'])) ? (int)($_REQUEST['user_aim_match']) : XOOPS_MATCH_START; switch ($match) { case XOOPS_MATCH_START: $criteria->add(new Criteria('user_aim', $myts->addSlashes(trim($_REQUEST['user_aim'])).'%', 'LIKE')); @@ -554,7 +554,7 @@ $requete_search .= 'aim : '.$_REQUEST['user_aim'].' et user_aim_match='.$_REQUEST['user_aim_match'].'<br />'; } if ( !empty($_REQUEST['user_yim']) ) { - $match = (!empty($_REQUEST['user_yim_match'])) ? intval($_REQUEST['user_yim_match']) : XOOPS_MATCH_START; + $match = (!empty($_REQUEST['user_yim_match'])) ? (int)($_REQUEST['user_yim_match']) : XOOPS_MATCH_START; switch ($match) { case XOOPS_MATCH_START: $criteria->add(new Criteria('user_yim', $myts->addSlashes(trim($_REQUEST['user_yim'])).'%', 'LIKE')); @@ -573,7 +573,7 @@ $requete_search .= 'yim : '.$_REQUEST['user_yim'].' et user_yim_match='.$_REQUEST['user_yim_match'].'<br />'; } if ( !empty($_REQUEST['user_msnm']) ) { - $match = (!empty($_REQUEST['user_msnm_match'])) ? intval($_REQUEST['user_msnm_match']) : XOOPS_MATCH_START; + $match = (!empty($_REQUEST['user_msnm_match'])) ? (int)($_REQUEST['user_msnm_match']) : XOOPS_MATCH_START; switch ($match) { case XOOPS_MATCH_START: $criteria->add(new Criteria('user_msnm', $myts->addSlashes(trim($_REQUEST['user_msnm'])).'%', 'LIKE')); @@ -611,7 +611,7 @@ } if ( !empty($_REQUEST['user_lastlog_more']) && is_numeric($_REQUEST['user_lastlog_more']) ) { - $f_user_lastlog_more = intval(trim($_REQUEST['user_lastlog_more'])); + $f_user_lastlog_more = (int)(trim($_REQUEST['user_lastlog_more'])); $time = time() - (60 * 60 * 24 * $f_user_lastlog_more); if ($time > 0) { $criteria->add(new Criteria('last_login', $time, '<')); @@ -621,7 +621,7 @@ } if ( !empty($_REQUEST['user_lastlog_less']) && is_numeric($_REQUEST['user_lastlog_less']) ) { - $f_user_lastlog_less = intval(trim($_REQUEST['user_lastlog_less'])); + $f_user_lastlog_less = (int)(trim($_REQUEST['user_lastlog_less'])); $time = time() - (60 * 60 * 24 * $f_user_lastlog_less); if ($time > 0) { $criteria->add(new Criteria('last_login', $time, '>')); @@ -631,7 +631,7 @@ } if ( !empty($_REQUEST['user_reg_more']) && is_numeric($_REQUEST['user_reg_more']) ) { - $f_user_reg_more = intval(trim($_REQUEST['user_reg_more'])); + $f_user_reg_more = (int)(trim($_REQUEST['user_reg_more'])); $time = time() - (60 * 60 * 24 * $f_user_reg_more); if ($time > 0) { $criteria->add(new Criteria('user_regdate', $time, '<')); @@ -641,7 +641,7 @@ } if ( !empty($_REQUEST['user_reg_less']) && is_numeric($_REQUEST['user_reg_less']) ) { - $f_user_reg_less = intval($_REQUEST['user_reg_less']); + $f_user_reg_less = (int)($_REQUEST['user_reg_less']); $time = time() - (60 * 60 * 24 * $f_user_reg_less); if ($time > 0) { $criteria->add(new Criteria('user_regdate', $time, '>')); @@ -651,13 +651,13 @@ } if ( !empty($_REQUEST['user_posts_more']) && is_numeric($_REQUEST['user_posts_more']) ) { - $criteria->add(new Criteria('posts', intval($_REQUEST['user_posts_more']), '>')); + $criteria->add(new Criteria('posts', (int)($_REQUEST['user_posts_more']), '>')); $requete_pagenav .= '&user_posts_more='. htmlspecialchars($_REQUEST["user_posts_more"]); $requete_search .= 'posts plus de : '.$_REQUEST['user_posts_more'].'<br />'; } if ( !empty($_REQUEST['user_posts_less']) && is_numeric($_REQUEST['user_posts_less']) ) { - $criteria->add(new Criteria('posts', intval($_REQUEST['user_posts_less']), '<')); + $criteria->add(new Criteria('posts', (int)($_REQUEST['user_posts_less']), '<')); $requete_pagenav .= '&user_posts_less='. htmlspecialchars($_REQUEST["user_posts_less"]); $requete_search .= 'post moins de : '.$_REQUEST['user_posts_less'].'<br />'; } @@ -723,12 +723,12 @@ $requete_search .= 'limit : '.$user_limit.'<br />'; } - $start = (!empty($_REQUEST['start'])) ? intval($_REQUEST['start']) : 0; + $start = (!empty($_REQUEST['start'])) ? (int)($_REQUEST['start']) : 0; if ( isset($_REQUEST['selgroups']) ) { if ($_REQUEST['selgroups'] != 0) { if ( count($_REQUEST['selgroups']) == 1 ) { - $groups = array( 0 => $_REQUEST['selgroups']); + $groups = array( 0 => (int) $_REQUEST['selgroups']); } else { $groups = array_map("intval", $_REQUEST['selgroups']); } @@ -759,7 +759,6 @@ $xoopsTpl->assign( 'users_count', $users_count ); $xoopsTpl->assign( 'users_display', true ); - $xoopsTpl->assign( 'php_selft', $_SERVER['PHP_SELF'] ); //User limit //$user_limit = (!isset($_REQUEST['user_limit'])) ? 20 : $_REQUEST['user_limit']; Modified: XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/templates/admin/system_comments.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/templates/admin/system_comments.html 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/templates/admin/system_comments.html 2016-01-02 01:15:09 UTC (rev 13194) @@ -31,7 +31,7 @@ <tbody> <{foreach item=comments from=$comments}> <tr class="<{cycle values='even,odd'}> alignmiddle"> - <td class="txtcenter"><input type='checkbox' name='commentslist_id[]' id='commentslist_id[]' value='<{$comments.comments_id}>'/></td> + <td class="txtcenter"><input type='checkbox' name='commentslist_id[]' id='commentslist_id[]' value='<{$comments.comments_id}>'/></td> <td class="txtcenter"><{$comments.comments_icon}></td> <td><{$comments.comments_title}></td> <td class="txtcenter"><{$comments.comments_poster}></td> @@ -59,7 +59,7 @@ </table> <{foreach item=comments from=$comments_popup}> <!--Pop-pup--> -<div id='dialog<{$comments.comments_id}>' title='<{$comments.comments_icon}> <{$comments.comments_title}>' style='display:none;'> +<div id='dialog<{$comments.comments_id}>' title='<{$comments.comments_title}>' style='display:none;'> <img src="<{xoAdminIcons comment.png}>" alt="comments" title="comments" class="xo-commentsimg" /> <p><{$comments.comments_text}></p> </div> Modified: XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/templates/admin/system_users.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/templates/admin/system_users.html 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/htdocs/modules/system/templates/admin/system_users.html 2016-01-02 01:15:09 UTC (rev 13194) @@ -1,140 +1,140 @@ -<{includeq file="db:system_header.html"}> - -<{if $users_display == true}> -<!--Display form sort--> -<div class="xo-headercontent"> - <div class="floatleft"><{$form_sort}></div> - <div class="floatright"> - <div class="xo-buttons"> - <a class="ui-corner-all tooltip" href="admin.php?fct=users&op=users_synchronize&status=2" title="<{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}>"> - <img src="<{xoAdminIcons reload.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}>" /> - <{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}> - </a> - <a class="ui-corner-all tooltip" href="admin.php?fct=users&op=users_add" title="<{$smarty.const._AM_SYSTEM_USERS_ADDUSER}>"> - <img src="<{xoAdminIcons user_add.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_ADDUSER}>" /> - <{$smarty.const._AM_SYSTEM_USERS_ADDUSER}> - </a> - </div> - </div> -</div> -<div class="clear"> </div> - <table id="xo-users-sorter" cellspacing="1" class="outer tablesorter"> - <thead> - <tr> - <th class="txtcenter width3"><input name='allbox' id='allbox' onclick='xoopsCheckAll("memberslist", "allbox");' type='checkbox' value='Check All' /></th> - <th class="txtcenter width5"><{$smarty.const._AM_SYSTEM_USERS_STATUS}></th> - <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_UNAME}></th> - <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_EMAIL}></th> - <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_REG_DATE}></th> - <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_LAST_LOGIN}></th> - <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_POSTS}></th> - <th class="txtcenter" width='11%'><{$smarty.const._AM_SYSTEM_USERS_ACTION}></th> - </tr> - </thead> - <!--Display data--> - <{if $users_count == true}> - <form name='memberslist' id='memberslist' action='<{$php_selft}>' method='POST'> - <tbody> - <{foreach item=users from=$users}> - <tr class="<{cycle values='even,odd'}> alignmiddle"> - <td class="txtcenter"><{if $users.checkbox_user}><input type='checkbox' name='memberslist_id[]' id='memberslist_id[]' value='<{$users.uid}>' /><{/if}></td> - <td class="txtcenter"><img class="xo-imgmini" src="<{$users.group}>" alt="" /></td> - <td class="txtcenter"><a title="<{$users.uname}>" href="<{$xoops_url}>/userinfo.php?uid=<{$users.uid}>" ><{$users.uname}></a></td> - <td class="txtcenter"><{$users.email}></td> - <td class="txtcenter"><{$users.reg_date}></td> - <td class="txtcenter"><{$users.last_login}></td> - <td class="txtcenter"><div id="display_post_<{$users.uid}>"><{$users.posts}></div><div id='loading_<{$users.uid}>' class="txtcenter" style="display:none;"><img src="./images/mimetypes/spinner.gif" title="Loading" alt="Loading" width="12px"/></div></td> - <td class="xo-actions txtcenter"> - <{if $users.user_level > 0}> - <img class="tooltip" onclick="display_post('<{$users.uid}>');" src="<{xoAdminIcons reload.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}>" title="<{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}>" /> - <img class="tooltip" onclick="display_dialog('<{$users.uid}>', true, true, 'slide', 'slide', 300, 400);" src="<{xoAdminIcons display.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_VIEW}>" title="<{$smarty.const._AM_SYSTEM_USERS_VIEW}>" /> - <a class="tooltip" href="admin.php?fct=users&op=users_edit&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_EDIT}>"> - <img src="<{xoAdminIcons user_edit.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_EDIT}>" /> - </a> - <a class="tooltip" href="admin.php?fct=users&op=users_delete&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_DEL}>"> - <img src="<{xoAdminIcons user_delete.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_DEL}>" /> - </a> - <{else}> - <a class="tooltip" href="admin.php?fct=users&op=users_active&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_ACTIVE}>"> - <img src="<{xoAdminIcons xoops/active_user.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_ACTIVE}>" /> - </a> - <img class="tooltip" onclick="display_dialog('<{$users.uid}>', true, true, 'slide', 'slide', 300, 400);" src="<{xoAdminIcons display.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_VIEW}>" title="<{$smarty.const._AM_SYSTEM_USERS_VIEW}>" /> - <a class="tooltip" href="admin.php?fct=users&op=users_edit&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_EDIT}>"> - <img src="<{xoAdminIcons user_edit.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_EDIT}>" /> - </a> - <a class="tooltip" href="admin.php?fct=users&op=users_delete&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_DEL}>"> - <img src="<{xoAdminIcons user_delete.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_DEL}>" /> - </a> - <{/if}> - </td> - </tr> - <{/foreach}> - </tbody> - <tr> - <td class='txtleft' colspan='6'> - <select name='fct' onChange='changeDisplay (this.value, "groups", "edit_group")'> - <option value=''>---------</option> - <option value='mailusers'><{$smarty.const._AM_SYSTEM_USERS_SENDMAIL}></option> - <option value='groups'><{$smarty.const._AM_SYSTEM_USERS_EDIT_GROUPS}></option> - <option value='users'><{$smarty.const._AM_SYSTEM_USERS_DELETE}></option> - </select> - <select name='edit_group' id='edit_group' onChange='changeDisplay (this.value, this.value, "selgroups")' style="display:none;"> - <option value=''>---------</option> - <option value='add_group'><{$smarty.const._AM_SYSTEM_USERS_ADD_GROUPS}></option> - <option value='delete_group'><{$smarty.const._AM_SYSTEM_USERS_DELETE_GROUPS}></option> - </select> - <{$form_select_groups}> - <input type="hidden" name="op" value="action_group"> - <input type='submit' name='Submit' /> - </td> - </tr> - </form> - <{/if}> - <!--No found--> - <{if $users_no_found == true}> - <tr class="<{cycle values='even,odd'}> alignmiddle"> - <td colspan='8' class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_NO_FOUND}></td> - </tr> - <{/if}> - </table> - <!--Pop-pup--> - <{if $users_count == true}> - <{foreach item=users from=$users_popup}> - <div id="dialog<{$users.uid}>" title="<{$users.uname}>" style='display:none;'> - <table> - <tr> - <td class="txtcenter"> - <img src="<{$users.user_avatar}>" alt="<{$users.uname}>" title="<{$users.uname}>" /> - </td> - <td class="txtcenter"> - <a href='mailto:<{$users.email}>'><img src="<{xoAdminIcons mail_send.png}>" alt="" title=<{$smarty.const._AM_SYSTEM_USERS_EMAIL}> /></a> - <a href='javascript:openWithSelfMain("<{$xoops_url}>/pmlite.php?send2=1&to_userid=<{$users.uid}>","pmlite",450,370);'><img src="<{xoAdminIcons pm.png}>" alt="" title=<{$smarty.const._AM_SYSTEM_USERS_PM}> /></a> - <a href='<{$users.url}>' rel='external'><img src="<{xoAdminIcons url.png}>" alt="" title=<{$smarty.const._AM_SYSTEM_USERS_URL}> ></a> - </td> - </tr> - <tr> - <td colspan="2"> - <ul style="border: 1px solid #666; padding: 8px;"> - <{if $users.user_name}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_NAME}></span> : <{$users.name}></li><{/if}> - <li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_UNAME}></span> : <{$users.uname}></li> - <li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_EMAIL}></span> : <{$users.email}></li> - <{if $users.user_url}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_URL}></span> : <{$users.url}> </li><{/if}> - <{if $users.user_icq}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_ICQ}></span> : <{$users.user_icq}></li><{/if}> - <{if $users.user_aim}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_AIM}></span> : <{$users.user_aim}></li><{/if}> - <{if $users.user_yim}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_YIM}></span> : <{$users.user_yim}></li><{/if}> - <{if $users.user_msnm}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_MSNM}></span> : <{$users.user_msnm}> </li><{/if}> - </ul> - </td> - </tr> - </table> - </div> - <{/foreach}> - <{/if}> - <!--Pop-pup--> - <div class='txtright'><{$nav}></div> -<{/if}> -<br /> -<!-- Display Avatar form (add,edit) --> -<{if $form}> -<div class="spacer"><{$form}></div> -<{/if}> \ No newline at end of file +<{includeq file="db:system_header.html"}> + +<{if $users_display == true}> +<!--Display form sort--> +<div class="xo-headercontent"> + <div class="floatleft"><{$form_sort}></div> + <div class="floatright"> + <div class="xo-buttons"> + <a class="ui-corner-all tooltip" href="admin.php?fct=users&op=users_synchronize&status=2" title="<{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}>"> + <img src="<{xoAdminIcons reload.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}>" /> + <{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}> + </a> + <a class="ui-corner-all tooltip" href="admin.php?fct=users&op=users_add" title="<{$smarty.const._AM_SYSTEM_USERS_ADDUSER}>"> + <img src="<{xoAdminIcons user_add.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_ADDUSER}>" /> + <{$smarty.const._AM_SYSTEM_USERS_ADDUSER}> + </a> + </div> + </div> +</div> +<div class="clear"> </div> + <table id="xo-users-sorter" cellspacing="1" class="outer tablesorter"> + <thead> + <tr> + <th class="txtcenter width3"><input name='allbox' id='allbox' onclick='xoopsCheckAll("memberslist", "allbox");' type='checkbox' value='Check All' /></th> + <th class="txtcenter width5"><{$smarty.const._AM_SYSTEM_USERS_STATUS}></th> + <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_UNAME}></th> + <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_EMAIL}></th> + <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_REG_DATE}></th> + <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_LAST_LOGIN}></th> + <th class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_POSTS}></th> + <th class="txtcenter" width='11%'><{$smarty.const._AM_SYSTEM_USERS_ACTION}></th> + </tr> + </thead> + <!--Display data--> + <{if $users_count == true}> + <form name='memberslist' id='memberslist' action='<{xoAppUrl modules/system/admin.php?fct=users}>' method='POST'> + <tbody> + <{foreach item=users from=$users}> + <tr class="<{cycle values='even,odd'}> alignmiddle"> + <td class="txtcenter"><{if $users.checkbox_user}><input type='checkbox' name='memberslist_id[]' id='memberslist_id[]' value='<{$users.uid}>' /><{/if}></td> + <td class="txtcenter"><img class="xo-imgmini" src="<{$users.group}>" alt="" /></td> + <td class="txtcenter"><a title="<{$users.uname}>" href="<{$xoops_url}>/userinfo.php?uid=<{$users.uid}>" ><{$users.uname}></a></td> + <td class="txtcenter"><{$users.email}></td> + <td class="txtcenter"><{$users.reg_date}></td> + <td class="txtcenter"><{$users.last_login}></td> + <td class="txtcenter"><div id="display_post_<{$users.uid}>"><{$users.posts}></div><div id='loading_<{$users.uid}>' class="txtcenter" style="display:none;"><img src="./images/mimetypes/spinner.gif" title="Loading" alt="Loading" width="12px"/></div></td> + <td class="xo-actions txtcenter"> + <{if $users.user_level > 0}> + <img class="tooltip" onclick="display_post('<{$users.uid}>');" src="<{xoAdminIcons reload.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}>" title="<{$smarty.const._AM_SYSTEM_USERS_SYNCHRONIZE}>" /> + <img class="tooltip" onclick="display_dialog('<{$users.uid}>', true, true, 'slide', 'slide', 300, 400);" src="<{xoAdminIcons display.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_VIEW}>" title="<{$smarty.const._AM_SYSTEM_USERS_VIEW}>" /> + <a class="tooltip" href="admin.php?fct=users&op=users_edit&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_EDIT}>"> + <img src="<{xoAdminIcons user_edit.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_EDIT}>" /> + </a> + <a class="tooltip" href="admin.php?fct=users&op=users_delete&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_DEL}>"> + <img src="<{xoAdminIcons user_delete.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_DEL}>" /> + </a> + <{else}> + <a class="tooltip" href="admin.php?fct=users&op=users_active&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_ACTIVE}>"> + <img src="<{xoAdminIcons xoops/active_user.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_ACTIVE}>" /> + </a> + <img class="tooltip" onclick="display_dialog('<{$users.uid}>', true, true, 'slide', 'slide', 300, 400);" src="<{xoAdminIcons display.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_VIEW}>" title="<{$smarty.const._AM_SYSTEM_USERS_VIEW}>" /> + <a class="tooltip" href="admin.php?fct=users&op=users_edit&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_EDIT}>"> + <img src="<{xoAdminIcons user_edit.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_EDIT}>" /> + </a> + <a class="tooltip" href="admin.php?fct=users&op=users_delete&uid=<{$users.uid}>" title="<{$smarty.const._AM_SYSTEM_USERS_DEL}>"> + <img src="<{xoAdminIcons user_delete.png}>" alt="<{$smarty.const._AM_SYSTEM_USERS_DEL}>" /> + </a> + <{/if}> + </td> + </tr> + <{/foreach}> + </tbody> + <tr> + <td class='txtleft' colspan='6'> + <select name='fct' onChange='changeDisplay (this.value, "groups", "edit_group")'> + <option value=''>---------</option> + <option value='mailusers'><{$smarty.const._AM_SYSTEM_USERS_SENDMAIL}></option> + <option value='groups'><{$smarty.const._AM_SYSTEM_USERS_EDIT_GROUPS}></option> + <option value='users'><{$smarty.const._AM_SYSTEM_USERS_DELETE}></option> + </select> + <select name='edit_group' id='edit_group' onChange='changeDisplay (this.value, this.value, "selgroups")' style="display:none;"> + <option value=''>---------</option> + <option value='add_group'><{$smarty.const._AM_SYSTEM_USERS_ADD_GROUPS}></option> + <option value='delete_group'><{$smarty.const._AM_SYSTEM_USERS_DELETE_GROUPS}></option> + </select> + <{$form_select_groups}> + <input type="hidden" name="op" value="action_group"> + <input type='submit' name='Submit' /> + </td> + </tr> + </form> + <{/if}> + <!--No found--> + <{if $users_no_found == true}> + <tr class="<{cycle values='even,odd'}> alignmiddle"> + <td colspan='8' class="txtcenter"><{$smarty.const._AM_SYSTEM_USERS_NO_FOUND}></td> + </tr> + <{/if}> + </table> + <!--Pop-pup--> + <{if $users_count == true}> + <{foreach item=users from=$users_popup}> + <div id="dialog<{$users.uid}>" title="<{$users.uname}>" style='display:none;'> + <table> + <tr> + <td class="txtcenter"> + <img src="<{$users.user_avatar}>" alt="<{$users.uname}>" title="<{$users.uname}>" /> + </td> + <td class="txtcenter"> + <a href='mailto:<{$users.email}>'><img src="<{xoAdminIcons mail_send.png}>" alt="" title=<{$smarty.const._AM_SYSTEM_USERS_EMAIL}> /></a> + <a href='javascript:openWithSelfMain("<{$xoops_url}>/pmlite.php?send2=1&to_userid=<{$users.uid}>","pmlite",450,370);'><img src="<{xoAdminIcons pm.png}>" alt="" title=<{$smarty.const._AM_SYSTEM_USERS_PM}> /></a> + <a href='<{$users.url}>' rel='external'><img src="<{xoAdminIcons url.png}>" alt="" title=<{$smarty.const._AM_SYSTEM_USERS_URL}> ></a> + </td> + </tr> + <tr> + <td colspan="2"> + <ul style="border: 1px solid #666; padding: 8px;"> + <{if $users.user_name}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_NAME}></span> : <{$users.name}></li><{/if}> + <li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_UNAME}></span> : <{$users.uname}></li> + <li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_EMAIL}></span> : <{$users.email}></li> + <{if $users.user_url}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_URL}></span> : <{$users.url}> </li><{/if}> + <{if $users.user_icq}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_ICQ}></span> : <{$users.user_icq}></li><{/if}> + <{if $users.user_aim}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_AIM}></span> : <{$users.user_aim}></li><{/if}> + <{if $users.user_yim}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_YIM}></span> : <{$users.user_yim}></li><{/if}> + <{if $users.user_msnm}><li><span class="bold"><{$smarty.const._AM_SYSTEM_USERS_MSNM}></span> : <{$users.user_msnm}> </li><{/if}> + </ul> + </td> + </tr> + </table> + </div> + <{/foreach}> + <{/if}> + <!--Pop-pup--> + <div class='txtright'><{$nav}></div> +<{/if}> +<br /> +<!-- Display Avatar form (add,edit) --> +<{if $form}> +<div class="spacer"><{$form}></div> +<{/if}> Modified: XoopsCore/branches/2.5.x/2.5.7.2/release_notes.txt =================================================================== --- XoopsCore/branches/2.5.x/2.5.7.2/release_notes.txt 2015-12-27 23:59:18 UTC (rev 13193) +++ XoopsCore/branches/2.5.x/2.5.7.2/release_notes.txt 2016-01-02 01:15:09 UTC (rev 13194) @@ -1,122 +1,122 @@ -XOOPS 2.5.7.1 Final - -The XOOPS Development Team is pleased to announce the release of XOOPS 2.5.7.1 Final. - -This version is XOOPS 2.5.7 updated with a Nov. 24 Patch that included security enhancement and bug fixes. - -See the Changelog for more details. - -System requirements ------------------------------------ - -PHP: -Any PHP version >= 5.3.7 (PHP 5.4+ is strongly recommended) - -MySQL: -MySQL server 5.0+ - -Web server: -Any server supporting the required PHP version (Apache highly recommended) - - -Downloading XOOPS ------------------------------------ - -You can get this release package from the [url=https://sourceforge.net/projects/xoops/files/XOOPS%20Core%20%28stable%20releases%29/XOOPS_2.5.7.1/]Sourceforge repository[/url]. -There are .zip, .7z, and .gz archives provided. - - -Installing XOOPS (new installation) ------------------------------------ - - 1. Copy the content of the htdocs/ folder where it can be accessed by your server - 2. Ensure that directories: - - uploads/, - - uploads/avatars/ - - uploads/images/ - - uploads/ranks/ - - uploads/smilies/ - - xoops_lib/modules/protector/configs/ - and files: - - mainfile.php and - - include/license.php - are writable by the web server - 3. For security considerations, you are encouraged to move directories "/xoops_lib" (for XOOPS libraries) and "/xoops_data" (for XOOPS data) out of Document Root, and change the folder names. - 4. Make the directory xoops_data/ writable; Create (if not already present) and make the directories xoops_data/caches/, xoops_data/caches/xoops_cache/, xoops_data/caches/smarty_cache/ and xoops_data/caches/smarty_compile/ writable. - 5. Access the folder where you installed the htdocs/ files using your web browser to launch the installation wizard - - -Installing Protector in XOOPS ------------------------------------ -We also highly recommend the installation of the PROTECTOR module which will bring additional security protection and logging capabilities to your site. - - -Upgrading from a previous version ------------------------------------ - -Upgrading from 2.5.x: ------------------------------------ - 1. Get the right update package from the sourceforge file repository - 2. Overwrite files in XOOPS directory on your server with the content of /htdocs - * make sure that you copy the content of /xoops_lib to whatever directory you keep it on the server now (it should be your current XOOPS_TRUST_PATH directory), then delete the /xoops_lib directory. There can NOT be two directories with the content of /xoops_lib - 3. Update the "System" module from the modules administration interface, as well as "Profile", "PM", and "Protector", as they have new GUI. - 4) Clear caches, using the Admin's Maintenance function - -Upgrading from versions older than 2.5.0: ------------------------------------------- - Following are instructions for upgrading from XOOPS 2.4.5 to 2.5 provided by John Healy: - 0. Verify the system requirements, in particular the version of PHP. Backup your XOOPS database and site directory. (There are several ways to do these actions, which are discussed elsewhere.) Turning your site off is optional. - Change the permissions on mainfile.php and /include/license.php to be writable, for example: - File Normal For upgrade - mainfile.php 400 700 - /include/license.php 444 777 - Get the correct update package from the SourceForge file repository. - 1. In the upgrade package folder, move the "upgrade" folder inside the "htdocs" folder, if it's not already there. Remove the install folder from the "htdocs" folder, if it's there. Remove the mainfile.php file from the "htdocs" folder, if it's there. - If you've moved the xoops_data and xoops_lib folders outside your site's root directory, move these folders out of the "htdocs" folder in the upgrade package folder. - 2. Delete the /modules/system directory on your current XOOPS site (to get rid of any old unnecessary files). - 3. Overwrite the files in the XOOPS directory on your current XOOPS site with the content of "htdocs" folder of the upgrade package. (There are several ways to do this action, which are discussed elsewhere.) - As noted above, if relocated, overwrite the files in your current xoops_data and xoops_lib with the content of those in the upgrade package. - 4. If you have Protector previously installed, open the "mainfile.php" file , and remove the Pre-check and Post-check lines shown below (if they exist): - include XOOPS_TRUST_PATH.'/modules/protector/include/precheck.inc.php' ; - include XOOPS_TRUST_PATH.'/modules/protector/include/postcheck.inc.php' ; - 5. At your site's address (URL), login as administrator. Access <your.site.url>/upgrade/ with a browser, and follow the instructions (and any for updating your XOOPS database). After all updates have been applied (green checkmarks), note the link in the Updater to update the "system" module, and do so. - 6. Delete the "upgrade" folder from your site's "htdocs" directory. - 7. Update (reload) othe... [truncated message content] |
From: <be...@us...> - 2015-12-27 23:59:21
|
Revision: 13193 http://sourceforge.net/p/xoops/svn/13193 Author: beckmi Date: 2015-12-27 23:59:18 +0000 (Sun, 27 Dec 2015) Log Message: ----------- 2.5.7.2 Added Paths: ----------- XoopsCore/branches/2.5.x/2.5.7.2/ |
From: <be...@us...> - 2015-12-27 23:52:28
|
Revision: 13192 http://sourceforge.net/p/xoops/svn/13192 Author: beckmi Date: 2015-12-27 23:52:24 +0000 (Sun, 27 Dec 2015) Log Message: ----------- HTML Purifier 4.7.0 Modified Paths: -------------- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Arborize.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrCollections.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Background.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Font.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/FontFamily.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/ListStyle.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Multiple.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/HTML/Bool.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/HTML/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/Lang.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/Email/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/Host.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrTransform/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Bootstrap.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/CSSDefinition.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ChildDef/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Config.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Builder/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Interchange/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema.ser XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/DefinitionCache/Decorator/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/DefinitionCache/Serializer/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/DefinitionCache/Serializer.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/DefinitionCache/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Encoder.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/EntityLookup/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Filter/ExtractStyleBlocks.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Filter/YouTube.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Filter/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Generator.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/HTMLModule/Legacy.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/HTMLModule/Tidy/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/HTMLModule/Tidy.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/HTMLModule/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Injector/AutoParagraph.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Injector/Linkify.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Injector/PurifierLinkify.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Injector/RemoveEmpty.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Injector/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Injector.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Language/classes/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Language/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Language/messages/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Language.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/LanguageFactory.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Lexer/DOMLex.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Lexer/DirectLex.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Lexer/PH5P.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Lexer/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/PercentEncoder.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Printer/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Strategy/MakeWellFormed.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Strategy/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/TagTransform/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Token/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Token.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/URIDefinition.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/URIFilter/MakeAbsolute.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/URIFilter/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/URIScheme/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/UnitConverter.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/VarParser/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Zipper.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/index.html XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier.auto.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier.includes.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier.kses.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier.path.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier.safe-includes.php XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/NEWS XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/VERSION XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/index.html Added Paths: ----------- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.Predicate.txt XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/WHATSNEW Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Arborize.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Arborize.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Arborize.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -52,7 +52,7 @@ $closingTokens[$level][] = $end; } if ($node instanceof HTMLPurifier_Node_Element) { - ++$level; + $level++; $nodes[$level] = new HTMLPurifier_Queue(); foreach ($node->children as $childNode) { $nodes[$level]->push($childNode); Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrCollections.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrCollections.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrCollections.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -63,7 +63,7 @@ $merge = $attr[0]; $seen = array(); // recursion guard // loop through all the inclusions - for ($i = 0; isset($merge[$i]); ++$i) { + for ($i = 0; isset($merge[$i]); $i++) { if (isset($seen[$merge[$i]])) { continue; } Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Background.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Background.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Background.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -80,7 +80,7 @@ } else { $caught[$key] = $r; } - ++$i; + $i++; break; } } Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/BackgroundPosition.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -105,21 +105,21 @@ } } $keywords[$status] = $lbit; - ++$i; + $i++; } // test for length $r = $this->length->validate($bit, $config, $context); if ($r !== false) { $measures[] = $r; - ++$i; + $i++; } // test for percentage $r = $this->percentage->validate($bit, $config, $context); if ($r !== false) { $measures[] = $r; - ++$i; + $i++; } } Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Font.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Font.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Font.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -65,7 +65,7 @@ $stage_1 = array('font-style', 'font-variant', 'font-weight'); $final = ''; // output - for ($i = 0, $size = count($bits); $i < $size; ++$i) { + for ($i = 0, $size = count($bits); $i < $size; $i++) { if ($bits[$i] === '') { continue; } @@ -117,7 +117,7 @@ // attempt to catch line-height if ($line_height === false) { // we need to scroll forward - for ($j = $i + 1; $j < $size; ++$j) { + for ($j = $i + 1; $j < $size; $j++) { if ($bits[$j] === '') { continue; } Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/FontFamily.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/FontFamily.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/FontFamily.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -11,17 +11,17 @@ public function __construct() { $this->mask = '_- '; - for ($c = 'a'; $c <= 'z'; ++$c) { + for ($c = 'a'; $c <= 'z'; $c++) { $this->mask .= $c; } - for ($c = 'A'; $c <= 'Z'; ++$c) { + for ($c = 'A'; $c <= 'Z'; $c++) { $this->mask .= $c; } - for ($c = '0'; $c <= '9'; ++$c) { + for ($c = '0'; $c <= '9'; $c++) { $this->mask .= $c; } // cast-y, but should be fine // special bytes used by UTF-8 - for ($i = 0x80; $i <= 0xFF; ++$i) { + for ($i = 0x80; $i <= 0xFF; $i++) { // We don't bother excluding invalid bytes in this range, // because the our restriction of well-formed UTF-8 will // prevent these from ever occurring. Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/ListStyle.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/ListStyle.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/ListStyle.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -76,7 +76,7 @@ } } $caught[$key] = $r; - ++$i; + $i++; break; } } Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Multiple.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Multiple.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/Multiple.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -44,21 +44,21 @@ */ public function validate($string, $config, $context) { - $string = $this->parseCDATA($string); + $string = $this->mungeRgb($this->parseCDATA($string)); if ($string === '') { return false; } $parts = explode(' ', $string); // parseCDATA replaced \r, \t and \n $length = count($parts); $final = ''; - for ($i = 0, $num = 0; $i < $length && $num < $this->max; ++$i) { + for ($i = 0, $num = 0; $i < $length && $num < $this->max; $i++) { if (ctype_space($parts[$i])) { continue; } $result = $this->single->validate($parts[$i], $config, $context); if ($result !== false) { $final .= $result . ' '; - ++$num; + $num++; } } if ($final === '') { Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/CSS/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/HTML/Bool.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/HTML/Bool.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/HTML/Bool.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -32,9 +32,6 @@ */ public function validate($string, $config, $context) { - if (empty($string)) { - return false; - } return $this->name; } Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/HTML/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/HTML/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/HTML/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/Lang.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/Lang.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/Lang.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -69,7 +69,7 @@ } // process all other subtags, index 2 and up - for ($i = 2; $i < $num_subtags; ++$i) { + for ($i = 2; $i < $num_subtags; $i++) { $length = strlen($subtags[$i]); if ($length == 0 || $length > 8 || !ctype_alnum($subtags[$i])) { return $new_string; Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/Email/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/Email/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/Email/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/Host.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/Host.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/Host.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -101,7 +101,7 @@ $new_parts = array(); foreach ($parts as $part) { $encodable = false; - for ($i = 0, $c = strlen($part); $i < $c; ++$i) { + for ($i = 0, $c = strlen($part); $i < $c; $i++) { if (ord($part[$i]) > 0x7a) { $encodable = true; break; Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/URI/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrDef.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -97,16 +97,16 @@ { // flexibly parse it $ret = ''; - for ($i = 0, $c = strlen($string); $i < $c; ++$i) { + for ($i = 0, $c = strlen($string); $i < $c; $i++) { if ($string[$i] === '\\') { - ++$i; + $i++; if ($i >= $c) { $ret .= '\\'; break; } if (ctype_xdigit($string[$i])) { $code = $string[$i]; - for ($a = 1, ++$i; $i < $c && $a < 6; ++$i, ++$a) { + for ($a = 1, $i++; $i < $c && $a < 6; $i++, $a++) { if (!ctype_xdigit($string[$i])) { break; } Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrTransform/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrTransform/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/AttrTransform/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Bootstrap.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Bootstrap.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Bootstrap.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -2,7 +2,7 @@ // constants are slow, so we use as few as possible if (!defined('HTMLPURIFIER_PREFIX')) { - define('HTMLPURIFIER_PREFIX', realpath(__DIR__ . '/..')); + define('HTMLPURIFIER_PREFIX', realpath(dirname(__FILE__) . '/..')); } // accomodations for versions earlier than 5.0.2 Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/CSSDefinition.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/CSSDefinition.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/CSSDefinition.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -350,8 +350,7 @@ $this->info['scrollbar-highlight-color'] = new HTMLPurifier_AttrDef_CSS_Color(); $this->info['scrollbar-shadow-color'] = new HTMLPurifier_AttrDef_CSS_Color(); - // technically not proprietary, but CSS3, and no one supports it - $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); + // vendor specific prefixes of opacity $this->info['-moz-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); $this->info['-khtml-opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); @@ -404,6 +403,7 @@ array('visible', 'hidden', 'collapse') ); $this->info['overflow'] = new HTMLPurifier_AttrDef_Enum(array('visible', 'hidden', 'auto', 'scroll')); + $this->info['opacity'] = new HTMLPurifier_AttrDef_CSS_AlphaValue(); } /** Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ChildDef/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ChildDef/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ChildDef/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Config.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Config.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/Config.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -21,7 +21,7 @@ * HTML Purifier's version * @type string */ - public $version = '4.6.0'; + public $version = '4.7.0'; /** * Whether or not to automatically finalize @@ -646,16 +646,25 @@ return $this->getDefinition($name, true, true); } + /** + * @return HTMLPurifier_HTMLDefinition + */ public function maybeGetRawHTMLDefinition() { return $this->getDefinition('HTML', true, true); } - + + /** + * @return HTMLPurifier_CSSDefinition + */ public function maybeGetRawCSSDefinition() { return $this->getDefinition('CSS', true, true); } - + + /** + * @return HTMLPurifier_URIDefinition + */ public function maybeGetRawURIDefinition() { return $this->getDefinition('URI', true, true); @@ -879,7 +888,7 @@ if ($this->chatty) { $trace = debug_backtrace(); // zip(tail(trace), trace) -- but PHP is not Haskell har har - for ($i = 0, $c = count($trace); $i < $c - 1; ++$i) { + for ($i = 0, $c = count($trace); $i < $c - 1; $i++) { // XXX this is not correct on some versions of HTML Purifier if ($trace[$i + 1]['class'] === 'HTMLPurifier_Config') { continue; Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Builder/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Builder/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Builder/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Interchange/Directive.php 2015-12-27 23:52:24 UTC (rev 13192) @@ -66,7 +66,7 @@ public $version; /** - * ID of directive that supersedes this old directive. + * ID of directive that supercedes this old directive. * Null if not deprecated. * @type HTMLPurifier_ConfigSchema_Interchange_Id */ Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Interchange/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Interchange/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/Interchange/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/Attr.IDPrefixLocal.txt 2015-12-27 23:52:24 UTC (rev 13192) @@ -5,10 +5,10 @@ --DESCRIPTION-- Temporary prefix for IDs used in conjunction with %Attr.IDPrefix. If you need to allow multiple sets of user content on web page, you may need to -have a separate prefix that changes with each iteration. This way, -separately submitted user content displayed on the same page doesn't +have a seperate prefix that changes with each iteration. This way, +seperately submitted user content displayed on the same page doesn't clobber each other. Ideal values are unique identifiers for the content it represents (i.e. the id of the row in the database). Be sure to add a -separator (like an underscore) at the end. Warning: this directive will +seperator (like an underscore) at the end. Warning: this directive will not work unless %Attr.IDPrefix is set to a non-empty value! --# vim: et sw=4 sts=4 Added: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.Predicate.txt =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.Predicate.txt (rev 0) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/AutoFormat.RemoveEmpty.Predicate.txt 2015-12-27 23:52:24 UTC (rev 13192) @@ -0,0 +1,14 @@ +AutoFormat.RemoveEmpty.Predicate +TYPE: hash +VERSION: 4.7.0 +DEFAULT: array('colgroup' => array(), 'th' => array(), 'td' => array(), 'iframe' => array('src')) +--DESCRIPTION-- +<p> + Given that an element has no contents, it will be removed by default, unless + this predicate dictates otherwise. The predicate can either be an associative + map from tag name to list of attributes that must be present for the element + to be considered preserved: thus, the default always preserves <code>colgroup</code>, + <code>th</code> and <code>td</code>, and also <code>iframe</code> if it + has a <code>src</code>. +</p> +--# vim: et sw=4 sts=4 Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/HTML.CustomDoctype.txt 2015-12-27 23:52:24 UTC (rev 13192) @@ -4,6 +4,6 @@ DEFAULT: NULL --DESCRIPTION-- -A custom doctype for power-users who defined there own document +A custom doctype for power-users who defined their own document type. This directive only applies when %HTML.Doctype is blank. --# vim: et sw=4 sts=4 Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/index.html =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/index.html 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema/index.html 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ - <script>history.go(-1);</script> \ No newline at end of file +<script>history.go(-1);</script> Modified: XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema.ser =================================================================== --- XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema.ser 2015-12-27 23:13:28 UTC (rev 13191) +++ XoopsCore/branches/2.5.x/2.5.8/htdocs/xoops_lib/modules/protector/library/HTMLPurifier/ConfigSchema/schema.ser 2015-12-27 23:52:24 UTC (rev 13192) @@ -1 +1 @@ -O:25:"HTMLPurifier_ConfigSchema":3:{s:8:"defaults";a:118:{s:19:"Attr.AllowedClasses";N;s:24:"Attr.AllowedFrameTargets";a:0:{}s:15:"Attr.AllowedRel";a:0:{}s:15:"Attr.AllowedRev";a:0:{}s:18:"Attr.ClassUseCDATA";N;s:20:"Attr.DefaultImageAlt";N;s:24:"Attr.DefaultInvalidImage";s:0:"";s:27:"Attr.DefaultInvalidImageAlt";s:13:"Invalid image";s:19:"Attr.DefaultTextDir";s:3:"ltr";s:13:"Attr.EnableID";b:0;s:21:"Attr.ForbiddenClasses";a:0:{}s:16:"Attr.IDBlacklist";a:0:{}s:22:"Attr.IDBlacklistRegexp";N;s:13:"Attr.IDPrefix";s:0:"";s:18:"Attr.IDPrefixLocal";s:0:"";s:24:"AutoFormat.AutoParagraph";b:0;s:17:"AutoFormat.Custom";a:0:{}s:25:"AutoFormat.DisplayLinkURI";b:0;s:18:"AutoFormat.Linkify";b:0;s:33:"AutoFormat.PurifierLinkify.DocURL";s:3:"#%s";s:26:"AutoFormat.PurifierLinkify";b:0;s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";a:2:{s:2:"td";b:1;s:2:"th";b:1;}s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";b:0;s:22:"AutoFormat.RemoveEmpty";b:0;s:39:"AutoFormat.RemoveSpansWithoutAttributes";b:0;s:18:"CSS.AllowImportant";b:0;s:15:"CSS.AllowTricky";b:0;s:16:"CSS.AllowedFonts";N;s:21:"CSS.AllowedProperties";N;s:17:"CSS.DefinitionRev";i:1;s:23:"CSS.ForbiddenProperties";a:0:{}s:16:"CSS.MaxImgLength";s:6:"1200px";s:15:"CSS.Proprietary";b:0;s:11:"CSS.Trusted";b:0;s:20:"Cache.DefinitionImpl";s:10:"Serializer";s:20:"Cache.SerializerPath";N;s:27:"Cache.SerializerPermissions";i:493;s:22:"Core.AggressivelyFixLt";b:1;s:28:"Core.AllowHostnameUnderscore";b:0;s:18:"Core.CollectErrors";b:0;s:18:"Core.ColorKeywords";a:17:{s:6:"maroon";s:7:"#800000";s:3:"red";s:7:"#FF0000";s:6:"orange";s:7:"#FFA500";s:6:"yellow";s:7:"#FFFF00";s:5:"olive";s:7:"#808000";s:6:"purple";s:7:"#800080";s:7:"fuchsia";s:7:"#FF00FF";s:5:"white";s:7:"#FFFFFF";s:4:"lime";s:7:"#00FF00";s:5:"green";s:7:"#008000";s:4:"navy";s:7:"#000080";s:4:"blue";s:7:"#0000FF";s:4:"aqua";s:7:"#00FFFF";s:4:"teal";s:7:"#008080";s:5:"black";s:7:"#000000";s:6:"silver";s:7:"#C0C0C0";s:4:"gray";s:7:"#808080";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:6:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:12:"defaultPlist";O:25:"HTMLPurifier_PropertyList":3:{s:7:"ore.ColorKeywords";a:17:{s:6:"maroon";s:7:"#800000";s:3:"red";s:7:"#FF0000";s:6:"orange";s:7:"#FFA500";s:6:"yellow";s:7:"#FFFF00";s:5:"olive";s:7:"#808000";s:6:"purple";s:7:"#800080";s:7:"fuchsia";s:7:"#FF00FF";s:5:"white";s:7:"#FFFFFF";s:4:"lime";s:7:"#00FF00";s:5:"green";s:7:"#008000";s:4:"navy";s:7:"#000080";s:4:"blue";s:7:"#0000FF";s:4:"aqua";s:7:"#00FFFF";s:4:"teal";s:7:"#008080";s:5:"black";s:7:"#000000";s:6:"silver";s:7:"#C0C0C0";s:4:"gray";s:7:"#808080";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:6:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:9:""AutoFormat.PurifierLinkify.DocURL";s:7:"isAlias";b:1;}s:26:"AutoFormat.PurifierLinkify";i:7;s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";i:8;s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";i:7;s:22:"AutoFormat.RemoveEmpty";i:7;s:39:"AutoFormat.RemoveSpansWithoutAttributes";i:7;s:18:"CSS.AllowImportant";i:7;s:15:"CSS.AllowTricky";i:7;s:16:"CSS.AllowedFonts";i:-8;s:21:"CSS.AllowedProperties";i:-8;s:17:"CSS.DefinitionRev";i:5;s:23:"CSS.ForbiddenProperties";i:8;s:16:"CSS.MaxImgLength";i:-1;s:15:"CSS.Proprietary";i:7;s:11:"CSS.Trusted";i:7;s:20:"Cache.DefinitionImpl";i:-1;s:20:"Core.DefinitionCache";O:8:"stdClass":2:{s:3:"key";s:20:"Cache.DefinitionImpl";s:7:"isAlias";b:1;}s:20:"Cache.SerializerPath";i:-1;s:27:"Cache.SerializerPermissions";i:5;s:22:"Core.AggressivelyFixLt";i:7;s:28:"Core.AllowHostnameUnderscore";i:7;s:18:"Core.CollectErrors";i:7;s:18:"Core.ColorKeywords";i:10;s:30:"Core.ConvertDocumentToFragment";i:7;s:24:"Core.AcceptFullDocuments";O:8:"stdClass":2:{s:3:"key";s:30:"Core.ConvertDocumentToFragment";s:7:"isAlias";b:1;}s:36:"Core.DirectLexLineNumberSyncInterval";i:5;s:20:"Core.DisableExcludes";i:7;s:15:"Core.EnableIDNA";i:7;s:13:"Core.Encoding";i:2;s:26:"Core.EscapeInvalidChildren";i:7;s:22:"Core.EscapeInvalidTags";i:7;s:29:"Core.EscapeNonASCIICharacters";i:7;s:19:"Core.HiddenElements";i:8;s:13:"Core.Language";i:1;s:14:"Core.LexerImpl";i:-11;s:24:"Core.MaintainLineNumbers";i:-7;s:22:"Core.NormalizeNewlines";i:7;s:21:"Core.RemoveInvalidImg";i:7;s:33:"Core.RemoveProcessingInstructions";i:7;s:25:"Core.RemoveScriptContents";i:-7;s:13:"Filter.Custom";i:9;s:34:"Filter.ExtractStyleBlocks.Escaping";i:7;s:33:"Filter.ExtractStyleBlocksEscaping";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.Escaping";s:7:"isAlias";b:1;}s:38:"FilterParam.ExtractStyleBlocksEscaping";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.Escaping";s:7:"isAlias";b:1;}s:31:"Filter.ExtractStyleBlocks.Scope";i:-1;s:30:"Filter.ExtractStyleBlocksScope";O:8:"stdClass":2:{s:3:"key";s:31:"Filter.ExtractStyleBlocks.Scope";s:7:"isAlias";b:1;}s:35:"FilterParam.ExtractStyleBlocksScope";O:8:"stdClass":2:{s:3:"key";s:31:"Filter.ExtractStyleBlocks.Scope";s:7:"isAlias";b:1;}s:34:"Filter.ExtractStyleBlocks.TidyImpl";i:-11;s:38:"FilterParam.ExtractStyleBlocksTidyImpl";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.TidyImpl";s:7:"isAlias";b:1;}s:25:"Filter.ExtractStyleBlocks";i:7;s:14:"Filter.YouTube";i:7;s:12:"HTML.Allowed";i:-4;s:22:"HTML.AllowedAttributes";i:-8;s:20:"HTML.AllowedComments";i:8;s:26:"HTML.AllowedCommentsRegexp";i:-1;s:20:"HTML.AllowedElements";i:-8;s:19:"HTML.AllowedModules";i:-8;s:23:"HTML.Attr.Name.UseCDATA";i:7;s:17:"HTML.BlockWrapper";i:1;s:16:"HTML.CoreModules";i:8;s:18:"HTML.CustomDoctype";i:-1;s:17:"HTML.DefinitionID";i:-1;s:18:"HTML.DefinitionRev";i:5;s:12:"HTML.Doctype";O:8:"stdClass":3:{s:4:"type";i:1;s:10:"allow_null";b:1;s:7:"allowed";a:5:{s:22:"HTML 4.01 Transitional";b:1;s:16:"HTML 4.01 Strict";b:1;s:22:"XHTML 1.0 Transitional";b:1;s:16:"XHTML 1.0 Strict";b:1;s:9:"XHTML 1.1";b:1;}}s:25:"HTML.FlashAllowFullScreen";i:7;s:24:"HTML.ForbiddenAttributes";i:8;s:22:"HTML.ForbiddenElements";i:8;s:17:"HTML.MaxImgLength";i:-5;s:13:"HTML.Nofollow";i:7;s:11:"HTML.Parent";i:1;s:16:"HTML.Proprietary";i:7;s:14:"HTML.SafeEmbed";i:7;s:15:"HTML.SafeIframe";i:7;s:15:"HTML.SafeObject";i:7;s:18:"HTML.SafeScripting";i:8;s:11:"HTML.Strict";i:7;s:16:"HTML.TargetBlank";i:7;s:12:"HTML.TidyAdd";i:8;s:14:"HTML.TidyLevel";O:8:"stdClass":2:{s:4:"type";i:1;s:7:"allowed";a:4:{s:4:"none";b:1;s:5:"light";b:1;s:6:"medium";b:1;s:5:"heavy";b:1;}}s:15:"HTML.TidyRemove";i:8;s:12:"HTML.Trusted";i:7;s:10:"HTML.XHTML";i:7;s:10:"Core.XHTML";O:8:"stdClass":2:{s:3:"key";s:10:"HTML.XHTML";s:7:"isAlias";b:1;}s:28:"Output.CommentScriptContents";i:7;s:26:"Core.CommentScriptContents";O:8:"stdClass":2:{s:3:"key";s:28:"Output.CommentScriptContents";s:7:"isAlias";b:1;}s:19:"Output.FixInnerHTML";i:7;s:18:"Output.FlashCompat";i:7;s:14:"Output.Newline";i:-1;s:15:"Output.SortAttr";i:7;s:17:"Output.TidyFormat";i:7;s:15:"Core.TidyFormat";O:8:"stdClass":2:{s:3:"key";s:17:"Output.TidyFormat";s:7:"isAlias";b:1;}s:17:"Test.ForceNoIconv";i:7;s:18:"URI.AllowedSchemes";i:8;s:8:"URI.Base";i:-1;s:17:"URI.DefaultScheme";i:1;s:16:"URI.DefinitionID";i:-1;s:17:"URI.DefinitionRev";i:5;s:11:"URI.Disable";i:7;s:15:"Attr.DisableURI";O:8:"stdClass":2:{s:3:"key";s:11:"URI.Disable";s:7:"isAlias";b:1;}s:19:"URI.DisableExternal";i:7;s:28:"URI.DisableExternalResources";i:7;s:20:"URI.DisableResources";i:7;s:8:"URI.Host";i:-1;s:17:"URI.HostBlacklist";i:9;s:16:"URI.MakeAbsolute";i:7;s:9:"URI.Munge";i:-1;s:18:"URI.MungeResources";i:7;s:18:"URI.MungeSecretKey";i:-1;s:26:"URI.OverrideAllowedSchemes";i:7;s:20:"URI.SafeIframeRegexp";i:-1;}} \ No newline at end of file +O:25:"HTMLPurifier_ConfigSchema":3:{s:8:"defaults";a:119:{s:19:"Attr.AllowedClasses";N;s:24:"Attr.AllowedFrameTargets";a:0:{}s:15:"Attr.AllowedRel";a:0:{}s:15:"Attr.AllowedRev";a:0:{}s:18:"Attr.ClassUseCDATA";N;s:20:"Attr.DefaultImageAlt";N;s:24:"Attr.DefaultInvalidImage";s:0:"";s:27:"Attr.DefaultInvalidImageAlt";s:13:"Invalid image";s:19:"Attr.DefaultTextDir";s:3:"ltr";s:13:"Attr.EnableID";b:0;s:21:"Attr.ForbiddenClasses";a:0:{}s:16:"Attr.IDBlacklist";a:0:{}s:22:"Attr.IDBlacklistRegexp";N;s:13:"Attr.IDPrefix";s:0:"";s:18:"Attr.IDPrefixLocal";s:0:"";s:24:"AutoFormat.AutoParagraph";b:0;s:17:"AutoFormat.Custom";a:0:{}s:25:"AutoFormat.DisplayLinkURI";b:0;s:18:"AutoFormat.Linkify";b:0;s:33:"AutoFormat.PurifierLinkify.DocURL";s:3:"#%s";s:26:"AutoFormat.PurifierLinkify";b:0;s:32:"AutoFormat.RemoveEmpty.Predicate";a:4:{s:8:"colgroup";a:0:{}s:2:"th";a:0:{}s:2:"td";a:0:{}s:6:"iframe";a:1:{i:0;s:3:"src";}}s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";a:2:{s:2:"td";b:1;s:2:"th";b:1;}s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";b:0;s:22:"AutoFormat.RemoveEmpty";b:0;s:39:"AutoFormat.RemoveSpansWithoutAttributes";b:0;s:18:"CSS.AllowImportant";b:0;s:15:"CSS.AllowTricky";b:0;s:16:"CSS.AllowedFonts";N;s:21:"CSS.AllowedProperties";N;s:17:"CSS.DefinitionRev";i:1;s:23:"CSS.ForbiddenProperties";a:0:{}s:16:"CSS.MaxImgLength";s:6:"1200px";s:15:"CSS.Proprietary";b:0;s:11:"CSS.Trusted";b:0;s:20:"Cache.DefinitionImpl";s:10:"Serializer";s:20:"Cache.SerializerPath";N;s:27:"Cache.SerializerPermissions";i:493;s:22:"Core.AggressivelyFixLt";b:1;s:28:"Core.AllowHostnameUnderscore";b:0;s:18:"Core.CollectErrors";b:0;s:18:"Core.ColorKeywords";a:17:{s:6:"maroon";s:7:"#800000";s:3:"red";s:7:"#FF0000";s:6:"orange";s:7:"#FFA500";s:6:"yellow";s:7:"#FFFF00";s:5:"olive";s:7:"#808000";s:6:"purple";s:7:"#800080";s:7:"fuchsia";s:7:"#FF00FF";s:5:"white";s:7:"#FFFFFF";s:4:"lime";s:7:"#00FF00";s:5:"green";s:7:"#008000";s:4:"navy";s:7:"#000080";s:4:"blue";s:7:"#0000FF";s:4:"aqua";s:7:"#00FFFF";s:4:"teal";s:7:"#008080";s:5:"black";s:7:"#000000";s:6:"silver";s:7:"#C0C0C0";s:4:"gray";s:7:"#808080";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:6:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:12:"defaultPlist";O:25:"HTMLPurifier_PropertyList":3:{s:7:"ary";b:0;s:11:"CSS.Trusted";b:0;s:20:"Cache.DefinitionImpl";s:10:"Serializer";s:20:"Cache.SerializerPath";N;s:27:"Cache.SerializerPermissions";i:493;s:22:"Core.AggressivelyFixLt";b:1;s:28:"Core.AllowHostnameUnderscore";b:0;s:18:"Core.CollectErrors";b:0;s:18:"Core.ColorKeywords";a:17:{s:6:"maroon";s:7:"#800000";s:3:"red";s:7:"#FF0000";s:6:"orange";s:7:"#FFA500";s:6:"yellow";s:7:"#FFFF00";s:5:"olive";s:7:"#808000";s:6:"purple";s:7:"#800080";s:7:"fuchsia";s:7:"#FF00FF";s:5:"white";s:7:"#FFFFFF";s:4:"lime";s:7:"#00FF00";s:5:"green";s:7:"#008000";s:4:"navy";s:7:"#000080";s:4:"blue";s:7:"#0000FF";s:4:"aqua";s:7:"#00FFFF";s:4:"teal";s:7:"#008080";s:5:"black";s:7:"#000000";s:6:"silver";s:7:"#C0C0C0";s:4:"gray";s:7:"#808080";}s:30:"Core.ConvertDocumentToFragment";b:1;s:36:"Core.DirectLexLineNumberSyncInterval";i:0;s:20:"Core.DisableExcludes";b:0;s:15:"Core.EnableIDNA";b:0;s:13:"Core.Encoding";s:5:"utf-8";s:26:"Core.EscapeInvalidChildren";b:0;s:22:"Core.EscapeInvalidTags";b:0;s:29:"Core.EscapeNonASCIICharacters";b:0;s:19:"Core.HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:13:"Core.Language";s:2:"en";s:14:"Core.LexerImpl";N;s:24:"Core.MaintainLineNumbers";N;s:22:"Core.NormalizeNewlines";b:1;s:21:"Core.RemoveInvalidImg";b:1;s:33:"Core.RemoveProcessingInstructions";b:0;s:25:"Core.RemoveScriptContents";N;s:13:"Filter.Custom";a:0:{}s:34:"Filter.ExtractStyleBlocks.Escaping";b:1;s:31:"Filter.ExtractStyleBlocks.Scope";N;s:34:"Filter.ExtractStyleBlocks.TidyImpl";N;s:25:"Filter.ExtractStyleBlocks";b:0;s:14:"Filter.YouTube";b:0;s:12:"HTML.Allowed";N;s:22:"HTML.AllowedAttributes";N;s:20:"HTML.AllowedComments";a:0:{}s:26:"HTML.AllowedCommentsRegexp";N;s:20:"HTML.AllowedElements";N;s:19:"HTML.AllowedModules";N;s:23:"HTML.Attr.Name.UseCDATA";b:0;s:17:"HTML.BlockWrapper";s:1:"p";s:16:"HTML.CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:18:"HTML.CustomDoctype";N;s:17:"HTML.DefinitionID";N;s:18:"HTML.DefinitionRev";i:1;s:12:"HTML.Doctype";N;s:25:"HTML.FlashAllowFullScreen";b:0;s:24:"HTML.ForbiddenAttributes";a:0:{}s:22:"HTML.ForbiddenElements";a:0:{}s:17:"HTML.MaxImgLength";i:1200;s:13:"HTML.Nofollow";b:0;s:11:"HTML.Parent";s:3:"div";s:16:"HTML.Proprietary";b:0;s:14:"HTML.SafeEmbed";b:0;s:15:"HTML.SafeIframe";b:0;s:15:"HTML.SafeObject";b:0;s:18:"HTML.SafeScripting";a:0:{}s:11:"HTML.Strict";b:0;s:16:"HTML.TargetBlank";b:0;s:12:"HTML.TidyAdd";a:0:{}s:14:"HTML.TidyLevel";s:6:"medium";s:15:"HTML.TidyRemove";a:0:{}s:12:"HTML.Trusted";b:0;s:10:"HTML.XHTML";b:1;s:28:"Output.CommentScriptContents";b:1;s:19:"Output.FixInnerHTML";b:1;s:18:"Output.FlashCompat";b:0;s:14:"Output.Newline";N;s:15:"Output.SortAttr";b:0;s:17:"Output.TidyFormat";b:0;s:17:"Test.ForceNoIconv";b:0;s:18:"URI.AllowedSchemes";a:6:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;}s:8:"URI.Base";N;s:17:"URI.DefaultScheme";s:4:"http";s:16:"URI.DefinitionID";N;s:17:"URI.DefinitionRev";i:1;s:11:"URI.Disable";b:0;s:19:"URI.DisableExternal";b:0;s:28:"URI.DisableExternalResources";b:0;s:20:"URI.DisableResources";b:0;s:8:"URI.Host";N;s:17:"URI.HostBlacklist";a:0:{}s:16:"URI.MakeAbsolute";b:0;s:9:"URI.Munge";N;s:18:"URI.MungeResources";b:0;s:18:"URI.MungeSecretKey";N;s:26:"URI.OverrideAllowedSchemes";b:1;s:20:"URI.SafeIframeRegexp";N;}s:9:";i:1;s:24:"AutoFormat.AutoParagraph";i:7;s:17:"AutoFormat.Custom";i:9;s:25:"AutoFormat.DisplayLinkURI";i:7;s:18:"AutoFormat.Linkify";i:7;s:33:"AutoFormat.PurifierLinkify.DocURL";i:1;s:37:"AutoFormatParam.PurifierLinkifyDocURL";O:8:"stdClass":2:{s:3:"key";s:33:"AutoFormat.PurifierLinkify.DocURL";s:7:"isAlias";b:1;}s:26:"AutoFormat.PurifierLinkify";i:7;s:32:"AutoFormat.RemoveEmpty.Predicate";i:10;s:44:"AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions";i:8;s:33:"AutoFormat.RemoveEmpty.RemoveNbsp";i:7;s:22:"AutoFormat.RemoveEmpty";i:7;s:39:"AutoFormat.RemoveSpansWithoutAttributes";i:7;s:18:"CSS.AllowImportant";i:7;s:15:"CSS.AllowTricky";i:7;s:16:"CSS.AllowedFonts";i:-8;s:21:"CSS.AllowedProperties";i:-8;s:17:"CSS.DefinitionRev";i:5;s:23:"CSS.ForbiddenProperties";i:8;s:16:"CSS.MaxImgLength";i:-1;s:15:"CSS.Proprietary";i:7;s:11:"CSS.Trusted";i:7;s:20:"Cache.DefinitionImpl";i:-1;s:20:"Core.DefinitionCache";O:8:"stdClass":2:{s:3:"key";s:20:"Cache.DefinitionImpl";s:7:"isAlias";b:1;}s:20:"Cache.SerializerPath";i:-1;s:27:"Cache.SerializerPermissions";i:5;s:22:"Core.AggressivelyFixLt";i:7;s:28:"Core.AllowHostnameUnderscore";i:7;s:18:"Core.CollectErrors";i:7;s:18:"Core.ColorKeywords";i:10;s:30:"Core.ConvertDocumentToFragment";i:7;s:24:"Core.AcceptFullDocuments";O:8:"stdClass":2:{s:3:"key";s:30:"Core.ConvertDocumentToFragment";s:7:"isAlias";b:1;}s:36:"Core.DirectLexLineNumberSyncInterval";i:5;s:20:"Core.DisableExcludes";i:7;s:15:"Core.EnableIDNA";i:7;s:13:"Core.Encoding";i:2;s:26:"Core.EscapeInvalidChildren";i:7;s:22:"Core.EscapeInvalidTags";i:7;s:29:"Core.EscapeNonASCIICharacters";i:7;s:19:"Core.HiddenElements";i:8;s:13:"Core.Language";i:1;s:14:"Core.LexerImpl";i:-11;s:24:"Core.MaintainLineNumbers";i:-7;s:22:"Core.NormalizeNewlines";i:7;s:21:"Core.RemoveInvalidImg";i:7;s:33:"Core.RemoveProcessingInstructions";i:7;s:25:"Core.RemoveScriptContents";i:-7;s:13:"Filter.Custom";i:9;s:34:"Filter.ExtractStyleBlocks.Escaping";i:7;s:33:"Filter.ExtractStyleBlocksEscaping";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.Escaping";s:7:"isAlias";b:1;}s:38:"FilterParam.ExtractStyleBlocksEscaping";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.Escaping";s:7:"isAlias";b:1;}s:31:"Filter.ExtractStyleBlocks.Scope";i:-1;s:30:"Filter.ExtractStyleBlocksScope";O:8:"stdClass":2:{s:3:"key";s:31:"Filter.ExtractStyleBlocks.Scope";s:7:"isAlias";b:1;}s:35:"FilterParam.ExtractStyleBlocksScope";O:8:"stdClass":2:{s:3:"key";s:31:"Filter.ExtractStyleBlocks.Scope";s:7:"isAlias";b:1;}s:34:"Filter.ExtractStyleBlocks.TidyImpl";i:-11;s:38:"FilterParam.ExtractStyleBlocksTidyImpl";O:8:"stdClass":2:{s:3:"key";s:34:"Filter.ExtractStyleBlocks.TidyImpl";s:7:"isAlias";b:1;}s:25:"Filter.ExtractStyleBlocks";i:7;s:14:"Filter.YouTube";i:7;s:12:"HTML.Allowed";i:-4;s:22:"HTML.AllowedAttributes";i:-8;s:20:"HTML.AllowedComments";i:8;s:26:"HTML.AllowedCommentsRegexp";i:-1;s:20:"HTML.Allo... [truncated message content] |
From: <be...@us...> - 2015-12-27 23:13:32
|
Revision: 13191 http://sourceforge.net/p/xoops/svn/13191 Author: beckmi Date: 2015-12-27 23:13:28 +0000 (Sun, 27 Dec 2015) Log Message: ----------- CKEditor 4.5.6 Modified Paths: -------------- ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/CHANGES.md ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/LICENSE.md ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/adapters/jquery.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/build-config.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/ckeditor.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/config.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/contents.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/lang/en.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/a11yhelp/dialogs/lang/en.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/about/dialogs/about.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/clipboard/dialogs/paste.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/colordialog/dialogs/colordialog.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/dialog/dialogDefinition.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/div/dialogs/div.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/find/dialogs/find.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/flash/dialogs/flash.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/forms/dialogs/button.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/forms/dialogs/checkbox.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/forms/dialogs/form.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/forms/dialogs/hiddenfield.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/forms/dialogs/radio.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/forms/dialogs/select.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/forms/dialogs/textarea.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/forms/dialogs/textfield.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/forms/images/hiddenfield.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/icons.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/iframe/dialogs/iframe.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/iframe/images/placeholder.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/image/dialogs/image.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/image/images/noimage.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/link/dialogs/anchor.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/link/dialogs/link.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/link/images/anchor.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/link/images/hidpi/anchor.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/liststyle/dialogs/liststyle.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/magicline/images/hidpi/icon.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/magicline/images/icon.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/pagebreak/images/pagebreak.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/pastefromword/filter/default.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/preview/preview.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/scayt/dialogs/options.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_address.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_blockquote.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_div.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_h1.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_h2.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_h3.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_h4.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_h5.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_h6.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_p.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/showblocks/images/block_pre.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/dialogs/smiley.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/angel_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/angel_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/angry_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/angry_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/broken_heart.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/broken_heart.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/confused_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/confused_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/cry_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/devil_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/embaressed_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/embarrassed_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/embarrassed_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/envelope.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/envelope.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/heart.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/heart.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/kiss.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/kiss.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/lightbulb.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/lightbulb.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/omg_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/omg_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/regular_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/regular_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/sad_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/sad_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/shades_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/shades_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/teeth_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/teeth_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/thumbs_down.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/thumbs_down.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/thumbs_up.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/thumbs_up.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/tongue_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/tongue_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/tounge_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/wink_smile.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/smiley/images/wink_smile.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/specialchar/dialogs/lang/en.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/specialchar/dialogs/specialchar.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/table/dialogs/table.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/tabletools/dialogs/tableCell.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/templates/dialogs/templates.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/templates/dialogs/templates.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/templates/templates/default.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/wsc/dialogs/ciframe.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/wsc/dialogs/tmpFrameset.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/wsc/dialogs/wsc.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/wsc/dialogs/wsc.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/wsc/dialogs/wsc_ie.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/dialog.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/dialog_ie.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/dialog_ie7.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/dialog_ie8.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/dialog_iequirks.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/editor.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/editor_ie.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/editor_ie7.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/editor_ie8.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/editor_iequirks.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/icons.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/icons_hidpi.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/images/dialog_sides.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/images/dialog_sides.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/images/dialog_sides_rtl.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/images/mini.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/images/sprites.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/images/sprites_ie6.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/images/toolbar_start.gif ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/readme.md ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/dialog.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/dialog_ie.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/dialog_ie7.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/dialog_ie8.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/dialog_iequirks.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/editor.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/editor_gecko.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/editor_ie.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/editor_ie7.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/editor_ie8.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/editor_iequirks.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/icons.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/arrow.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/close.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/hidpi/close.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/hidpi/lock-open.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/hidpi/lock.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/hidpi/refresh.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/lock-open.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/lock.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/refresh.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/readme.md ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/styles.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/editor_registry.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/language/english.php Added Paths: ----------- ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/magicline/images/icon-rtl.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/css/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/css/samples.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/img/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/img/github-top.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/img/header-bg.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/img/header-separator.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/img/logo.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/img/navigation-tip.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/js/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/js/sample.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/js/sf.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/ajax.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/api.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/appendto.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/assets/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/assets/inlineall/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/assets/inlineall/logo.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/assets/outputxhtml/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/assets/outputxhtml/outputxhtml.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/assets/posteddata.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/assets/sample.jpg ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/assets/uilanguages/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/assets/uilanguages/languages.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/datafiltering.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/dialog/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/dialog/assets/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/dialog/assets/my_dialog.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/dialog/dialog.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/divreplace.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/enterkey/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/enterkey/enterkey.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/htmlwriter/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/htmlwriter/assets/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/htmlwriter/assets/outputforflash/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.fla ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/htmlwriter/assets/outputforflash/outputforflash.swf ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/htmlwriter/assets/outputforflash/swfobject.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/htmlwriter/outputforflash.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/htmlwriter/outputhtml.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/inlineall.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/inlinebycode.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/inlinetextarea.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/jquery.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/magicline/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/magicline/magicline.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/readonly.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/replacebyclass.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/replacebycode.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/sample.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/sample.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/sample_posteddata.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/tabindex.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/toolbar/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/toolbar/toolbar.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/uicolor.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/uilanguages.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/wysiwygarea/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/wysiwygarea/fullpage.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/old/xhtmlstyle.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/css/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/css/fontello.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/font/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/font/LICENSE.txt ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/font/config.json ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/font/fontello.eot ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/font/fontello.svg ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/font/fontello.ttf ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/font/fontello.woff ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/js/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/js/abstracttoolbarmodifier.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/js/fulltoolbareditor.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/js/toolbarmodifier.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/js/toolbartextmodifier.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/lib/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/lib/codemirror/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/lib/codemirror/LICENSE ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/lib/codemirror/codemirror.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/lib/codemirror/javascript.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/lib/codemirror/neo.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/samples/toolbarconfigurator/lib/codemirror/show-hint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/kama/dialog_opera.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/dialog_opera.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/mini.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/skins/moono/images/spinner.gif Removed Paths: ------------- ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/codemirror/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/confighelper/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/docprops/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/fakeobjects/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/insertpre/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/mediaembed/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/onchange/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/placeholder/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/plugins/uicolor/ Modified: ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/CHANGES.md =================================================================== --- ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/CHANGES.md 2015-12-27 23:11:52 UTC (rev 13190) +++ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/ckeditor/ckeditor/CHANGES.md 2015-12-27 23:13:28 UTC (rev 13191) @@ -1,43 +1,527 @@ CKEditor 4 Changelog ==================== +## CKEditor 4.5.6 + +New Features: + +* Introduced the [`CKEDITOR.tools.getCookie()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-getCookie) and [`CKEDITOR.tools.setCookie()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-setCookie) methods for accessing cookies. +* Introduced the [`CKEDITOR.tools.getCsrfToken()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-getCsrfToken) method. The CSRF token is now automatically sent by the [File Browser](http://ckeditor.com/addon/filebrowser) and [File Tools](http://ckeditor.com/addon/filetools) plugins during file uploads. The server-side upload handlers may check it and use it to additionally secure the communication. + +Other Changes: + +* Updated [SCAYT](http://ckeditor.com/addon/scayt) (Spell Check As You Type): + - New features: + - CKEditor [Language](http://ckeditor.com/addon/language) plugin support. + - CKEditor [Placeholder](http://ckeditor.com/addon/placeholder) plugin support. + - [Drag&Drop](http://sdk.ckeditor.com/samples/fileupload.html) support. + - **Experimental** [GRAYT](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-grayt_autoStartup) (Grammar As You Type) functionality. + - Fixed issues: + * [#98](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/98): SCAYT affects dialog double-click. Fixed in SCAYT core. + * [#102](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/102): SCAYT core performance enhancements. + * [#104](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/104): SCAYT's spans leak into the clipboard and after pasting. + * [#105](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/105): A JavaScript error fired in case of multiple instances of CKEditor on one page. + * [#107](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/107): SCAYT should not check non-editable parts of content. + * [#108](https://github.com/WebSpellChecker/ckeditor-plugin-scayt/issues/108): Latest SCAYT copies the ID of the editor element to the iframe. + * SCAYT stops working when CKEditor [Undo plugin](http://ckeditor.com/addon/undo) not enabled. + * Issue with pasting SCAYT markup in CKEditor. + * SCAYT stops working after pressing the *Cancel* button in the WSC dialog. + +## CKEditor 4.5.5 + +Fixed Issues: + +* [#13887](https://dev.ckeditor.com/ticket/13887): Fixed: [Link](http://ckeditor.com/addon/link) plugin alters the `target` attribute value. Thanks to [SamZiemer](https://github.com/SamZiemer)! +* [#12189](http://dev.ckeditor.com/ticket/12189): Fixed: The [Link](http://ckeditor.com/addon/link) plugin dialog does not display the subject of email links if the subject parameter is not lowercase. +* [#9192](http://dev.ckeditor.com/ticket/9192): Fixed: An `undefined` string is appended to an email address added with the [Link](http://ckeditor.com/addon/link) plugin if subject and email body are empty and [`config.emailProtection`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-emailProtection) is set to `encode`. +* [#13790](https://dev.ckeditor.com/ticket/13790): Fixed: It is not possible to destroy the editor `<iframe>` after the editor was detached from DOM. Thanks to [Stefan Rijnhart](https://github.com/StefanRijnhart)! +* [#13803](https://dev.ckeditor.com/ticket/13803): Fixed: The editor cannot be destroyed before being fully initialized. Thanks to [Cyril Fluck](https://github.com/cyril-sf)! +* [#13867](http://dev.ckeditor.com/ticket/13867): Fixed: CKEditor does not work when the `classList` polyfill is used. +* [#13885](http://dev.ckeditor.com/ticket/13885): Fixed: [Enhanced Image](http://ckeditor.com/addon/image2) requires the [Link](http://ckeditor.com/addon/link) plugin to link an image. +* [#13883](http://dev.ckeditor.com/ticket/13883): Fixed: Copying a table using the context menu strips off styles. +* [#13872](http://dev.ckeditor.com/ticket/13872): Fixed: Cutting is possible in the [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode. +* [#12848](http://dev.ckeditor.com/ticket/12848): [Blink] Fixed: Opening the [Find and Replace](http://ckeditor.com/addon/find) dialog window in the [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode throws an exception. +* [#13879](http://dev.ckeditor.com/ticket/13879): Fixed: It is not possible to prevent the [`editor.drop`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-drop) event. +* [#13361](http://dev.ckeditor.com/ticket/13361): Fixed: Skin images fail when the site path includes parentheses because the `background-image` path needs single quotes around the URL value. +* [#13771](http://dev.ckeditor.com/ticket/13771): Fixed: The `contents.css` style is not used if the [IFrame Editing Area](http://ckeditor.com/addon/wysiwygarea) plugin is missing. +* [#13782](http://dev.ckeditor.com/ticket/13782): Fixed: Unclear log messages. +* [#13919](http://dev.ckeditor.com/ticket/13919): [Edge] Fixed: Browser window crashes when accessing the `isContentEditable` property of an `<input>` DOM element. + +Other Changes: + +* [#13859](http://dev.ckeditor.com/ticket/13859): Test cases created with `bender.tools.createTestsForEditors` will also receive editor bot as a second parameter. + +## CKEditor 4.5.4 + +New Features: + +* [#13632](http://dev.ckeditor.com/ticket/13632): Introduce error logging mechanism. +* [#13730](http://dev.ckeditor.com/ticket/13730): Switch to the new error logging mechanism. + +Fixed Issues: + +* [#9856](http://dev.ckeditor.com/ticket/9856): Fixed: Cannot use the native context menu together with the [Div Editing Area](http://ckeditor.com/addon/divarea) plugin. Thanks to [Mark Wade](https://github.com/mark-wade)! +* [#12733](http://dev.ckeditor.com/ticket/12733): [IE9+] Fixed: Radio button `onChange` does not work. Thanks to [Iliya Kostadinov](https://github.com/iliyakostadinov)! +* [#13142](http://dev.ckeditor.com/ticket/13142): [Edge] Fixed: *Ctrl+A* and then *Backspace* result in an empty `<div>` element. +* [#13599](http://dev.ckeditor.com/ticket/13599): Fixed: Cross-editor drag and drop of an inline widget results in error/artifacts. +* [#13640](http://dev.ckeditor.com/ticket/13640): [IE] Fixed: Dropping a widget outside the `<body>` element is not handled correctly. +* [#13533](http://dev.ckeditor.com/ticket/13533): Fixed: No progress during upload. +* [#13680](http://dev.ckeditor.com/ticket/13680): Fixed: The parser should allow the `<h1-6>` element to be a child of the `<summary>` element. +* [#11724](http://dev.ckeditor.com/ticket/11724): [Touch devices] Fixed: Drop-downs often hide right after opening them. +* [#13690](http://dev.ckeditor.com/ticket/13690): Fixed: Copying content from IE to Chrome adds an extra paragraph. +* [#13284](http://dev.ckeditor.com/ticket/13284): Fixed: Cannot drag and drop a widget if the text caret is placed just after the widget instance. +* [#13516](http://dev.ckeditor.com/ticket/13516): Fixed: CKEditor removes empty HTML5 anchors without the `name` attribute. +* [#13765](http://dev.ckeditor.com/ticket/13765): [Safari 9] Fixed: Problems with rendering samples. + +Other Changes: + +* [#11725](http://dev.ckeditor.com/ticket/11725): Marked [`CKEDITOR.env.mobile`](http://docs.ckeditor.com/#!/api/CKEDITOR.env-property-mobile) as deprecated. The reason is that it is no longer clear what "mobile" means. +* [#13737](http://dev.ckeditor.com/ticket/13737): Upgraded [Bender.js](https://github.com/benderjs/benderjs) to 0.4.1. + +## CKEditor 4.5.3 + +New Features: + +* [#13501](http://dev.ckeditor.com/ticket/13501): Added the [`config.fileTools_defaultFileName`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-fileTools_defaultFileName) option to allow setting a default filen ame for paste uploads. +* [#13603](http://dev.ckeditor.com/ticket/13603): Added support for uploading dropped BMP images. + +Fixed Issues: + +* [#13590](http://dev.ckeditor.com/ticket/13590): Fixed: Various issues related to the [Paste from Word](http://ckeditor.com/addon/pastefromword) feature. Fixes also: + * [#11215](http://dev.ckeditor.com/ticket/11215), + * [#8780](http://dev.ckeditor.com/ticket/8780), + * [#12762](http://dev.ckeditor.com/ticket/12762). +* [#13386](http://dev.ckeditor.com/ticket/13386): [Edge] Fixed: Issues with selecting and editing images. +* [#13568](http://dev.ckeditor.com/ticket/13568): Fixed: The [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) method returns invalid results for entire content selection. +* [#13453](http://dev.ckeditor.com/ticket/13453): Fixed: Drag&drop of entire editor content throws an error. +* [#13465](http://dev.ckeditor.com/ticket/13465): Fixed: Error is thrown and the widget is lost on drag&drop if it is the only content of the editor. +* [#13414](http://dev.ckeditor.com/ticket/13414): Fixed: Content auto paragraphing in a nested editable despite editor configuration. +* [#13429](http://dev.ckeditor.com/ticket/13429): Fixed: Incorrect selection after content insertion by the [Auto Embed](http://ckeditor.com/addon/autoembed) plugin. +* [#13388](http://dev.ckeditor.com/ticket/13388): Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) integration with [Undo](http://ckeditor.com/addon/undo) is broken. + +Other Changes: + +* [#13637](https://dev.ckeditor.com/ticket/13637): Several icons were refactored. +* Updated [Bender.js](https://github.com/benderjs/benderjs) to 0.3.0 and introduced the ability to run tests via HTTPs ([#13265](https://dev.ckeditor.com/ticket/13265)). + +## CKEditor 4.5.2 + +Fixed Issues: + +* [#13609](http://dev.ckeditor.com/ticket/13609): [Edge] Fixed: The browser crashes when switching to the source mode. Thanks to [Andrew Williams and Mark Smeed](http://webxsolution.com/)! +* [PR#201](https://github.com/ckeditor/ckeditor-dev/pull/201): Fixed: Buttons in the toolbar configurator cause form submission. Thanks to [colemanw](https://github.com/colemanw)! +* [#13422](http://dev.ckeditor.com/ticket/13422): Fixed: A monospaced font should be used in the `<textarea>` element storing editor configuration in the toolbar configurator. +* [#13494](http://dev.ckeditor.com/ticket/13494): Fixed: Error thrown in the toolbar configurator if plugin requirements are not met. +* [#13409](http://dev.ckeditor.com/ticket/13409): Fixed: List elements incorrectly merged when pressing *Backspace* or *Delete*. +* [#13434](http://dev.ckeditor.com/ticket/13434): Fixed: Dialog state indicator broken in Right–To–Left environments. +* [#13460](http://dev.ckeditor.com/ticket/13460): [IE8] Fixed: Copying inline widgets is broken when [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_acf) is disabled. +* [#13495](http://dev.ckeditor.com/ticket/13495): [Firefox, IE] Fixed: Text is not word-wrapped in the Paste dialog window. +* [#13528](http://dev.ckeditor.com/ticket/13528): [Firefox@Windows] Fixed: Content copied from Microsoft Word and other external applications is pasted as a plain text. Removed the `CKEDITOR.plugins.clipboard.isHtmlInExternalDataTransfer` property as the check must be dynamic. +* [#13583](http://dev.ckeditor.com/ticket/13583): Fixed: [`DataTransfer.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.clipboard.dataTransfer-method-getData) should work consistently in all browsers and should not strip valuable content. Fixed pasting tables from Microsoft Excel on Chrome. +* [#13468](http://dev.ckeditor.com/ticket/13468): [IE] Fixed: Binding drag&drop `dataTransfer` does not work if `text` data was set in the meantime. +* [#13451](http://dev.ckeditor.com/ticket/13451): [IE8-9] Fixed: One drag&drop operation may affect following ones. +* [#13184](http://dev.ckeditor.com/ticket/13184): Fixed: Web page reloaded after a drop on editor UI. +* [#13129](http://dev.ckeditor.com/ticket/13129) Fixed: Block widget blurred after a drop followed by an undo. +* [#13397](http://dev.ckeditor.com/ticket/13397): Fixed: Drag&drop of a widget inside its nested widget crashes the editor. +* [#13385](http://dev.ckeditor.com/ticket/13385): Fixed: [`editor.getSnapshot()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSnapshot) may return a non-string value. +* [#13419](http://dev.ckeditor.com/ticket/13419): Fixed: The [Auto Link](http://ckeditor.com/addon/autolink) plugin does not encode double quotes in URLs. +* [#13420](http://dev.ckeditor.com/ticket/13420): Fixed: The [Auto Embed](http://ckeditor.com/addon/autoembed) plugin ignores encoded characters in URL parameters. +* [#13410](http://dev.ckeditor.com/ticket/13410): Fixed: Error thrown in the [Auto Embed](http://ckeditor.com/addon/autoembed) plugin when undoing right after pasting a link. +* [#13566](http://dev.ckeditor.com/ticket/13566): Fixed: Suppressed notifications in the [Media Embed Base](http://ckeditor.com/addon/embedbase) plugin. +* [#11616](http://dev.ckeditor.com/ticket/11616): [Chrome] Fixed: Resizing the editor while it is not displayed breaks the editable. Fixes also [#9160](http://dev.ckeditor.com/ticket/9160) and [#9715](http://dev.ckeditor.com/ticket/9715). +* [#11376](http://dev.ckeditor.com/ticket/11376): [IE11] Fixed: Loss of text when pasting bulleted lists from Microsoft Word. +* [#13143](http://dev.ckeditor.com/ticket/13143): [Edge] Fixed: Focus lost when opening the panel. +* [#13387](http://dev.ckeditor.com/ticket/13387): [Edge] Fixed: "Permission denied" error thrown when loading the editor with developer tools open. +* [#13574](http://dev.ckeditor.com/ticket/13574): [Edge] Fixed: "Permission denied" error thrown when opening editor dialog windows. +* [#13441](http://dev.ckeditor.com/ticket/13441): [Edge] Fixed: The [Clipboard](http://ckeditor.com/addon/clipboard) plugin breaks the state of [Undo](http://ckeditor.com/addon/undo) commands after a paste. +* [#13554](http://dev.ckeditor.com/ticket/13554): [Edge] Fixed: Paste dialog's iframe does not receive focus on show. +* [#13440](http://dev.ckeditor.com/ticket/13440): [Edge] Fixed: Unable to paste a widget. + +Other Changes: + +* [#13421](http://dev.ckeditor.com/ticket/13421): UX improvements to notifications in the [Auto Embed](http://ckeditor.com/addon/autoembed) plugin. + +## CKEditor 4.5.1 + +Fixed Issues: + +* [#13486](http://dev.ckeditor.com/ticket/13486): Fixed: The [Upload Image](http://ckeditor.com/addon/uploadimage) plugin should log an error, not throw an error when upload URL is not set. + +## CKEditor 4.5 + +New Features: + +* [#13304](http://dev.ckeditor.com/ticket/13304): Added support for passing DOM elements to [`config.sharedSpaces`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-sharedSpaces). Thanks to [Undergrounder](https://github.com/Undergrounder)! +* [#13215](http://dev.ckeditor.com/ticket/13215): Added ability to cancel fetching a resource by the Embed plugins. +* [#13213](http://dev.ckeditor.com/ticket/13213): Added the [`dialog#setState()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dialog-method-setState) method and used it in the [Embed](http://ckeditor.com/addon/embed) dialog to indicate that a resource is being loaded. +* [#13337](http://dev.ckeditor.com/ticket/13337): Added the [`repository.onWidget()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-onWidget) method — a convenient way to listen to [widget](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget) events through the [repository](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository). +* [#13214](http://dev.ckeditor.com/ticket/13214): Added support for pasting links that convert into embeddable resources on the fly. + +Fixed Issues: + +* [#13334](http://dev.ckeditor.com/ticket/13334): Fixed: Error after nesting widgets and playing with undo/redo. +* [#13118](http://dev.ckeditor.com/ticket/13118): Fixed: The [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) method throws an error when called in the source mode. +* [#13158](http://dev.ckeditor.com/ticket/13158): Fixed: Error after canceling a dialog when creating a widget. +* [#13197](http://dev.ckeditor.com/ticket/13197): Fixed: Linked inline [Enhanced Image](http://ckeditor.com/addon/image2) alignment class is not transferred to the widget wrapper. +* [#13199](http://dev.ckeditor.com/ticket/13199): Fixed: [Semantic Embed](http://ckeditor.com/addon/embedsemantic) does not support widget classes. +* [#13003](http://dev.ckeditor.com/ticket/13003): Fixed: Anchors are uploaded when moving them by drag and drop. +* [#13032](http://dev.ckeditor.com/ticket/13032): Fixed: When upload is done, notification update should be marked as important. +* [#13300](http://dev.ckeditor.com/ticket/13300): Fixed: The `internalCommit` argument in the [Image](http://ckeditor.com/addon/image) dialog seems to be never used. +* [#13036](http://dev.ckeditor.com/ticket/13036): Fixed: Notifications are moved 10px to the right. +* [#13280](http://dev.ckeditor.com/ticket/13280): [IE8] Fixed: Undo after inline widget drag&drop throws an error. +* [#13186](http://dev.ckeditor.com/ticket/13186): Fixed: Content dropped into a nested editable is not filtered by [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_acf). +* [#13140](http://dev.ckeditor.com/ticket/13140): Fixed: Error thrown when dropping a block widget right after itself. +* [#13176](http://dev.ckeditor.com/ticket/13176): [IE8] Fixed: Errors on drag&drop of embed widgets. +* [#13015](http://dev.ckeditor.com/ticket/13015): Fixed: Dropping an image file on [Enhanced Image](http://ckeditor.com/addon/image2) causes a page reload. +* [#13080](http://dev.ckeditor.com/ticket/13080): Fixed: Ugly notification shown when the response contains HTML content. +* [#13011](http://dev.ckeditor.com/ticket/13011): [IE8] Fixed: Anchors are duplicated on drag&drop in specific locations. +* [#13105](http://dev.ckeditor.com/ticket/13105): Fixed: Various issues related to [`CKEDITOR.tools.htmlEncode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-htmlEncode) and [`CKEDITOR.tools.htmlDecode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-htmlDecode) methods. +* [#11976](http://dev.ckeditor.com/ticket/11976): [Chrome] Fixed: Copy&paste and drag&drop lists from Microsoft Word. +* [#13128](http://dev.ckeditor.com/ticket/13128): Fixed: Various issues with cloning element IDs: + * Fixed the default behavior of [`range.cloneContents()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-cloneContents) and [`range.extractContents()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-extractContents) methods which now clone IDs similarly to their native counterparts. + * Added `cloneId` arguments to the above methods, [`range.splitBlock()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-splitBlock) and [`element.breakParent()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-breakParent). Mind the default values and special behavior in the `extractContents()` method! + * Fixed issues where IDs were lost on copy&paste and drag&drop. +* Toolbar configurators: + * [#13185](http://dev.ckeditor.com/ticket/13185): Fixed: Wrong position of the suggestion box if there is not enough space below the caret. + * [#13138](http://dev.ckeditor.com/ticket/13138): Fixed: The "Toggle empty elements" button label is unclear. + * [#13136](http://dev.ckeditor.com/ticket/13136): Fixed: Autocompleter is far too intrusive. + * [#13133](http://dev.ckeditor.com/ticket/13133): Fixed: Tab leaves the editor. + * [#13173](http://dev.ckeditor.com/ticket/13173): Fixed: [`config.removeButtons`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-removeButtons) is ignored by the advanced toolbar configurator. + +Other Changes: + +* [#13119](http://dev.ckeditor.com/ticket/13119): Improved compatibility of editor skins ([Moono](http://ckeditor.com/addon/moono) and [Kama](http://ckeditor.com/addon/kama)) with external web page style sheets. +* Toolbar configurators: + * [#13147](http://dev.ckeditor.com/ticket/13147): Added buttons to the sticky toolbar. + * [#13207](http://dev.ckeditor.com/ticket/13207): Used modal window to display toolbar configurator help. +* [#13316](http://dev.ckeditor.com/ticket/13316): Made [`CKEDITOR.env.isCompatible`](http://docs.ckeditor.com/#!/api/CKEDITOR.env-property-isCompatible) a blacklist rather than a whitelist. More about the change in the [Browser Compatibility](http://docs.ckeditor.com/#!/guide/dev_browsers) guide. +* [#13398](http://dev.ckeditor.com/ticket/13398): Renamed `CKEDITOR.fileTools.UploadsRepository` to [`CKEDITOR.fileTools.UploadRepository`](http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools.uploadRepository) and changed all related properties. +* [#13279](http://dev.ckeditor.com/ticket/13279): Reviewed CSS vendor prefixes. +* [#13454](http://dev.ckeditor.com/ticket/13454): Removed unused `lang.image.alertUrl` token from the [Image](http://ckeditor.com/addon/image) plugin. + +## CKEditor 4.5 Beta + +New Features: + +* Clipboard (copy&paste, drag&drop) and file uploading features and improvements ([#11437](http://dev.ckeditor.com/ticket/11437)). + + * Major features: + * Support for dropping and pasting files into the editor was introduced. Through a set of new facades for native APIs it is now possible to easily intercept and process inserted files. + * [File upload tools](http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools) were introduced in order to simplify controlling the loading, uploading and handling server response, properly handle [new upload configuration](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-uploadUrl) options, etc. + * [Upload Image](http://ckeditor.com/addon/uploadimage) widget was introduced to upload dropped images. A base class for the [upload widget](http://docs.ckeditor.com/#!/api/CKEDITOR.fileTools.uploadWidgetDefinition) was exposed, too, to make it simple to create new types of upload widgets which can handle any type of dropped file, show the upload progress and update the content when the process is done. It also handles editing and undo/redo operations when a file is being uploaded and integrates with the [notification aggregator](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notificationAggregator) to show progress and success or error. + * All drag and drop operations were integrated with the editor. All dropped content is passed through the [`editor#paste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-paste) event and a set of new editor events was introduced — [`dragstart`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-dragstart), [`drop`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-drop), [`dragend`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-dragend). + * The [Data Transfer](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.clipboard.dataTransfer) facade was introduced to unify access to data in various types and files. [Data Transfer](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.clipboard.dataTransfer) is now always available in the [`editor#paste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-paste) event. + * Switched from the pastebin to using the native clipboard access whenever possible. This solved many issues related to pastebin such as unnecessary scrolling or data loss. Additionally, on copy and cut from the editor the clipboard data is set. Therefore, on paste the editor has access to clean data, undisturbed by the browsers. + * Drag and drop of inline and block widgets was integrated with the standard clipboard APIs. By listening to drag events you will thus be notified about widgets, too. This opens a possibility to filter pasted and dropped widgets. + * The [`editor#paste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-paste) event can have the `range` parameter so it is possible to change the paste position in the listener or paste in the not selectable position. Also the [`editor.insertHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertHtml) method now accepts `range` as an additional parameter. + * [#11621](http://dev.ckeditor.com/ticket/11621): A configurable [paste filter](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFilter) was introduced. The filter is by default turned to `'semantic-content'` on Webkit and Blink for all pasted content coming from external sources because of the low quality of HTML that these engines put into the clipboard. Internal and cross-editor paste is safe due to the change explained in the previous point. + + * Other changes and related fixes: + * [#12095](http://dev.ckeditor.com/ticket/12095): On drag and copy of widgets [the same method](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) is used to get selected HTML as in the normal case. Thanks to that styles applied to inline widgets are not lost. + * [#11219](http://dev.ckeditor.com/ticket/11219): Fixed: Dragging a [captioned image](http://ckeditor.com/addon/image2) does not fire the [`editor#paste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-paste) event. + * [#9554](http://dev.ckeditor.com/ticket/9554): [Webkit Mac] Fixed: Editor scrolls on paste. + * [#9898](http://dev.ckeditor.com/ticket/9898): [Webkit&Divarea] Fixed: Pasting causes undesirable scrolling. + * [#11993](http://dev.ckeditor.com/ticket/11993): [Chrome] Fixed: Pasting content scrolls the document. + * [#12613](http://dev.ckeditor.com/ticket/12613): Show the user that they can not drop on editor UI (toolbar, bottom bar). + * [#12851](http://dev.ckeditor.com/ticket/12851): [Blink/Webkit] Fixed: Formatting disappears when pasting content into cells. + * [#12914](http://dev.ckeditor.com/ticket/12914): Fixed: Copy/Paste of table broken in `div`-based editor. + + * Browser support.<br>Browser support for related features varies significantly (see http://caniuse.com/clipboard). + * File APIs needed to operate and file upload is not supported in Internet Explorer 9 and below. + * Only Chrome and Safari on Mac OS support setting custom data items in the clipboard, so currently it is possible to recognize the origin of the copied content in these browsers only. All drag and drop operations can be identified thanks to the new Data Transfer facade. + * No Internet Explorer browser supports the standard clipboard API which results in small glitches like where only plain text can be dropped from outside the editor. Thanks to the new Data Transfer facade, internal and cross-editor drag and drop supports the full range of data. + * Direct access to clipboard could only be implemented in Chrome, Safari on Mac OS, Opera and Firefox. In other browsers the pastebin must still be used. + +* [#12875](http://dev.ckeditor.com/ticket/12875): Samples and toolbar configuration tools. + * The old set of samples shipped with every CKEditor package was replaced with a shiny new single-page sample. This change concluded a long term plan which started from introducing the [CKEditor SDK](http://sdk.ckeditor.com/) and [CKEditor Functionality Overview](http://docs.ckeditor.com/#!/guide/dev_features) section in the documentation which essentially redefined the old samples. + * Toolbar configurators with live previews were introduced. They will be shipped with every CKEditor package and are meant to help in configuring toolbar layouts. + +* [#10925](http://dev.ckeditor.com/ticket/10925): The [Media Embed](http://ckeditor.com/addon/embed) and [Semantic Media Embed](http://ckeditor.com/addon/embedsemantic) plugins were introduced. Read more about the new features in the [Embedding Content](http://docs.ckeditor.com/#!/guide/dev_media_embed) article. +* [#10931](http://dev.ckeditor.com/ticket/10931): Added support for nesting widgets. It is now possible to insert one widget into another widget's nested editable. Note that unless nested editable's [allowed content](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.nestedEditable.definition-property-allowedContent) is defined precisely, starting from CKEditor 4.5 some widget buttons may become enabled. This feature is not supported in IE8. Included issues: + * [#12018](http://dev.ckeditor.com/ticket/12018): Fixed and reviewed: Nested widgets garbage collection. + * [#12024](http://dev.ckeditor.com/ticket/12024): [Firefox] Fixed: Outline is extended to the left by unpositioned drag handlers. + * [#12006](http://dev.ckeditor.com/ticket/12006): Fixed: Drag and drop of nested block widgets. + * [#12008](http://dev.ckeditor.com/ticket/12008): Fixed various cases of inserting a single non-editable element using the [`editor.insertHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertHtml) method. Fixes pasting a widget with a nested editable inside another widget's nested editable. + +* Notification system: + * [#11580](http://dev.ckeditor.com/ticket/11580): Introduced the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification). + * [#12810](http://dev.ckeditor.com/ticket/12810): Introduced a [notification aggregator](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notificationAggregator) for the [notification system](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.notification) which simplifies displaying progress of many concurrent tasks. +* [#11636](http://dev.ckeditor.com/ticket/11636): Introduced new, UX-focused, methods for getting selected HTML and deleting it — [`editor.getSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml) and [`editor.deleteSelectedHtml()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getSelectedHtml). +* [#12416](http://dev.ckeditor.com/ticket/12416): Added the [`widget.definition.upcastPriority`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-upcastPriority) property which gives more control over widget upcasting order to the widget author. +* [#12036](http://dev.ckeditor.com/ticket/12036): Initialize the editor in [read-only](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) mode when the `<textarea>` element has a `readonly` attribute. +* [#11905](http://dev.ckeditor.com/ticket/11905): The [`resize` event](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-resize) passes the current dimensions in its data. +* [#12126](http://dev.ckeditor.com/ticket/12126): Introduced [`config.image_prefillDimensions`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image_prefillDimensions) and [`config.image2_prefillDimensions`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_prefillDimensions) to make pre-filling `width` and `height` configurable for the [Enhanced Image](http://ckeditor.com/addon/image2). +* [#12746](http://dev.ckeditor.com/ticket/12746): Added a new configuration option to hide the [Enhanced Image](http://ckeditor.com/addon/image2) resizer. +* [#12150](http://dev.ckeditor.com/ticket/12150): Exposed the [`getNestedEditable()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-static-method-getNestedEditable) and `is*` [widget helper](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget) functions (see the static methods). +* [#12448](http://dev.ckeditor.com/ticket/12448): Introduced the [`editable.insertHtmlIntoRange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertHtmlIntoRange) method. +* [#12143](http://dev.ckeditor.com/ticket/12143): Added the [`config.floatSpacePreferRight`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-floatSpacePreferRight) configuration option that switches the alignment of the floating toolbar. Thanks to [InvisibleBacon](http://github.com/InvisibleBacon)! +* [#10986](http://dev.ckeditor.com/ticket/10986): Added support for changing dialog inpu... [truncated message content] |
From: <be...@us...> - 2015-12-27 23:12:00
|
Revision: 13190 http://sourceforge.net/p/xoops/svn/13190 Author: beckmi Date: 2015-12-27 23:11:52 +0000 (Sun, 27 Dec 2015) Log Message: ----------- TinyMCE 4.3.2 Modified Paths: -------------- ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/editor_registry.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/formtinymce.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/include/xoopscode.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/include/xoopsemotions.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/include/xoopsimagemanager.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/include/xoopsmlcontent.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/include/xoopsquote.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/language/english.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/settings.php ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/style.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/changelog.txt ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/advlist/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/anchor/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/autolink/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/autoresize/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/autosave/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/bbcode/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/charmap/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/code/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/colorpicker/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/contextmenu/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/directionality/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/emoticons/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/fullpage/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/fullscreen/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/hr/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/image/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/importcss/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/insertdatetime/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/legacyoutput/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/link/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/lists/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/media/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/nonbreaking/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/noneditable/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/pagebreak/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/paste/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/preview/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/print/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/save/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/searchreplace/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/spellchecker/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/tabfocus/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/table/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/template/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/textcolor/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/textpattern/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/visualblocks/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/visualchars/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/plugins/wordcount/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/content.inline.min.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/content.min.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.eot ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.svg ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.ttf ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/fonts/tinymce-small.woff ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.eot ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.svg ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.ttf ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/fonts/tinymce.woff ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/skin.ie7.min.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/skins/lightgray/skin.min.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/themes/modern/theme.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce/js/tinymce/tinymce.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/tinymce.php Added Paths: ----------- ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/alignbtn/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/alignbtn/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/chartextbtn/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/chartextbtn/plugin.min.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/.gitattributes ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/.gitignore ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/.travis.yml ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/AUTHORS ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/CONTRIBUTING.md ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/LICENSE ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/README.md ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/comment/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/comment/comment.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/comment/continuecomment.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/dialog/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/dialog/dialog.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/dialog/dialog.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/display/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/display/fullscreen.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/display/fullscreen.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/display/placeholder.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/display/rulers.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/edit/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/edit/closebrackets.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/edit/closetag.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/edit/continuelist.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/edit/matchbrackets.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/edit/matchtags.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/edit/trailingspace.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/fold/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/fold/brace-fold.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/fold/comment-fold.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/fold/foldcode.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/fold/foldgutter.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/fold/foldgutter.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/fold/indent-fold.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/fold/markdown-fold.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/fold/xml-fold.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/anyword-hint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/css-hint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/html-hint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/javascript-hint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/python-hint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/show-hint.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/show-hint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/sql-hint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/hint/xml-hint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/lint/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/lint/coffeescript-lint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/lint/css-lint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/lint/javascript-lint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/lint/json-lint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/lint/lint.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/lint/lint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/lint/yaml-lint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/merge/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/merge/dep/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/merge/dep/diff_match_patch.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/merge/merge.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/merge/merge.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/mode/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/mode/loadmode.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/mode/multiplex.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/mode/multiplex_test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/mode/overlay.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/runmode/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/runmode/colorize.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/runmode/runmode-standalone.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/runmode/runmode.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/runmode/runmode.node.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/scroll/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/scroll/scrollpastend.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/search/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/search/match-highlighter.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/search/search.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/search/searchcursor.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/selection/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/selection/active-line.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/selection/mark-selection.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/tern/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/tern/tern.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/tern/tern.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/tern/worker.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/wrap/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/addon/wrap/hardwrap.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/bin/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/bin/authors.sh ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/bin/compress ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/bin/lint ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/bin/release ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/bin/source-highlight ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/bower.json ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/activeline.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/anywordhint.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/bidi.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/btree.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/buffers.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/changemode.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/closebrackets.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/closetag.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/complete.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/emacs.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/folding.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/fullscreen.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/hardwrap.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/html5complete.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/indentwrap.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/lint.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/loadmode.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/marker.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/markselection.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/matchhighlighter.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/matchtags.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/merge.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/multiplex.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/mustache.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/placeholder.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/preview.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/resize.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/rulers.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/runmode.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/search.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/spanaffectswrapping_shim.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/sublime.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/tern.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/theme.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/trailingspace.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/variableheight.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/vim.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/visibletabs.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/widget.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/demo/xmlcomplete.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/activebookmark.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/compress.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/docs.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/internals.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/logo.png ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/logo.svg ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/manual.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/realworld.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/releases.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/reporting.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/upgrade_v2.2.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/upgrade_v3.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/doc/upgrade_v4.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/keymap/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/keymap/emacs.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/keymap/sublime.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/keymap/vim.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/lib/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/lib/codemirror.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/lib/codemirror.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/apl/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/apl/apl.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/apl/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/asterisk/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/asterisk/asterisk.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/asterisk/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/clike/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/clike/clike.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/clike/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/clike/scala.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/clojure/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/clojure/clojure.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/clojure/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/cobol/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/cobol/cobol.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/cobol/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/coffeescript/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/coffeescript/coffeescript.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/coffeescript/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/commonlisp/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/commonlisp/commonlisp.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/commonlisp/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/css/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/css/css.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/css/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/css/less.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/css/less_test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/css/scss.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/css/scss_test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/css/test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/d/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/d/d.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/d/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/diff/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/diff/diff.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/diff/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/dtd/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/dtd/dtd.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/dtd/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/dylan/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/dylan/dylan.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/dylan/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ecl/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ecl/ecl.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ecl/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/eiffel/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/eiffel/eiffel.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/eiffel/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/erlang/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/erlang/erlang.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/erlang/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/fortran/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/fortran/fortran.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/fortran/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gas/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gas/gas.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gas/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gfm/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gfm/gfm.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gfm/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gfm/test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gherkin/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gherkin/gherkin.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/gherkin/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/go/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/go/go.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/go/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/groovy/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/groovy/groovy.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/groovy/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haml/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haml/haml.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haml/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haml/test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haskell/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haskell/haskell.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haskell/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haxe/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haxe/haxe.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/haxe/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/htmlembedded/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/htmlembedded/htmlembedded.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/htmlembedded/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/htmlmixed/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/htmlmixed/htmlmixed.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/htmlmixed/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/http/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/http/http.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/http/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/jade/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/jade/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/jade/jade.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/javascript/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/javascript/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/javascript/javascript.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/javascript/json-ld.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/javascript/test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/javascript/typescript.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/jinja2/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/jinja2/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/jinja2/jinja2.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/julia/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/julia/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/julia/julia.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/livescript/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/livescript/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/livescript/livescript.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/livescript/livescript.ls ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/lua/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/lua/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/lua/lua.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/markdown/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/markdown/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/markdown/markdown.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/markdown/test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/meta.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/mirc/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/mirc/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/mirc/mirc.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/mllike/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/mllike/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/mllike/mllike.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/nginx/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/nginx/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/nginx/nginx.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ntriples/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ntriples/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ntriples/ntriples.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/octave/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/octave/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/octave/octave.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/pascal/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/pascal/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/pascal/pascal.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/pegjs/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/pegjs/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/pegjs/pegjs.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/perl/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/perl/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/perl/perl.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/php/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/php/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/php/php.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/pig/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/pig/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/pig/pig.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/properties/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/properties/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/properties/properties.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/puppet/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/puppet/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/puppet/puppet.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/python/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/python/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/python/python.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/q/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/q/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/q/q.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/r/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/r/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/r/r.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rpm/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rpm/changes/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rpm/changes/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rpm/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rpm/rpm.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rst/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rst/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rst/rst.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ruby/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ruby/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ruby/ruby.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/ruby/test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rust/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rust/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/rust/rust.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sass/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sass/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sass/sass.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/scheme/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/scheme/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/scheme/scheme.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/shell/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/shell/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/shell/shell.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sieve/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sieve/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sieve/sieve.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/smalltalk/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/smalltalk/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/smalltalk/smalltalk.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/smarty/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/smarty/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/smarty/smarty.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/smartymixed/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/smartymixed/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/smartymixed/smartymixed.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/solr/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/solr/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/solr/solr.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sparql/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sparql/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sparql/sparql.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sql/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sql/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/sql/sql.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/stex/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/stex/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/stex/stex.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/stex/test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tcl/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tcl/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tcl/tcl.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tiddlywiki/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tiddlywiki/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tiddlywiki/tiddlywiki.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tiddlywiki/tiddlywiki.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tiki/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tiki/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tiki/tiki.css ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/tiki/tiki.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/toml/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/toml/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/toml/toml.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/turtle/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/turtle/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/turtle/turtle.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/vb/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/vb/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/vb/vb.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/vbscript/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/vbscript/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/vbscript/vbscript.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/velocity/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/velocity/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/velocity/velocity.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/verilog/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/verilog/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/verilog/verilog.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/xml/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/xml/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/xml/test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/xml/xml.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/xquery/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/xquery/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/xquery/test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/xquery/xquery.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/yaml/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/yaml/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/yaml/yaml.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/z80/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/z80/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/mode/z80/z80.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/package.json ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/comment_test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/doc_test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/driver.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/emacs_test.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/index.html ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/lint/ ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/lint/acorn.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/lint/lint.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/external_plugins/codemirror/CodeMirror/test/lint/walk.js ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/tinymce4/e... [truncated message content] |
From: <be...@us...> - 2015-12-27 09:06:07
|
Revision: 13189 http://sourceforge.net/p/xoops/svn/13189 Author: beckmi Date: 2015-12-27 09:06:06 +0000 (Sun, 27 Dec 2015) Log Message: ----------- Removing .git folder Removed Paths: ------------- ThirdParty/xoopseditor/trunk/htdocs/class/xoopseditor/xinha/plugins/MootoolsFileManager/mootools-filemanager/.git/ |
From: <wis...@us...> - 2015-12-08 22:35:08
|
Revision: 13188 http://sourceforge.net/p/xoops/svn/13188 Author: wishcraft Date: 2015-12-08 22:35:05 +0000 (Tue, 08 Dec 2015) Log Message: ----------- Ping Trax 1.02 Stable -- Finished\!\! Added Paths: ----------- XoopsModules/pingtrax/releases/1.02/ XoopsModules/pingtrax/releases/1.02/class/ XoopsModules/pingtrax/releases/1.02/class/smarty/ XoopsModules/pingtrax/releases/1.02/class/smarty/xoops_plugins/ XoopsModules/pingtrax/releases/1.02/class/smarty/xoops_plugins/function.xoTrackbacks.php XoopsModules/pingtrax/releases/1.02/modules/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/about.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_footer.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_header.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/items.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/menu.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/pings.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/api/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/api/.htaccess XoopsModules/pingtrax/releases/1.02/modules/pingtrax/api/index.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/pingtrax_blocks.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items_pings.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items_sitemaps.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/pings.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/plugins.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/simple_html_dom.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/sitemaps.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/trackback.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/images/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/images/add.png XoopsModules/pingtrax/releases/1.02/modules/pingtrax/images/copy.png XoopsModules/pingtrax/releases/1.02/modules/pingtrax/images/delete.png XoopsModules/pingtrax/releases/1.02/modules/pingtrax/images/edit.png XoopsModules/pingtrax/releases/1.02/modules/pingtrax/images/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/images/link.png XoopsModules/pingtrax/releases/1.02/modules/pingtrax/images/logo.png XoopsModules/pingtrax/releases/1.02/modules/pingtrax/include/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/include/category-id-names.txt XoopsModules/pingtrax/releases/1.02/modules/pingtrax/include/exclude-names.txt XoopsModules/pingtrax/releases/1.02/modules/pingtrax/include/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/include/install.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/include/item-id-names.txt XoopsModules/pingtrax/releases/1.02/modules/pingtrax/language/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/language/english/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/language/english/admin.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/language/english/help/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/language/english/help/help.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/language/english/help/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/language/english/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/language/english/modinfo.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/language/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/pingtrax.css XoopsModules/pingtrax/releases/1.02/modules/pingtrax/plugins/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/plugins/default.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/plugins/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/plugins/xcenter.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/preloads/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/preloads/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/preloads/items.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/preloads/ping.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/preloads/sitemap.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/preloads/trackback.php XoopsModules/pingtrax/releases/1.02/modules/pingtrax/sql/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/sql/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/sql/mysql.sql XoopsModules/pingtrax/releases/1.02/modules/pingtrax/sql/tables.json XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/admin/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/admin/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/admin/items.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/admin/pings.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/blocks/ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/blocks/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/blocks/trackbacks_block.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/index.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/sitemaps.xml.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/templates/xoTrackback.html XoopsModules/pingtrax/releases/1.02/modules/pingtrax/xoops.org.news.article.txt XoopsModules/pingtrax/releases/1.02/modules/pingtrax/xoops_version.php Added: XoopsModules/pingtrax/releases/1.02/class/smarty/xoops_plugins/function.xoTrackbacks.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/class/smarty/xoops_plugins/function.xoTrackbacks.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/class/smarty/xoops_plugins/function.xoTrackbacks.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,51 @@ +<?php +/** + * PingTrax Smarty Trackback Function + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +function smarty_function_xoTrackbacks($tag_args, &$comp) +{ + $attrs = $comp->_parse_attrs($tag_args); + foreach ($attrs as $arg_name => $arg_value) { + if ($arg_name == 'dirname') { + $dirname = $arg_value; + continue; + } + } + global $pingtraxitem; + if (is_a($pingtraxitem, "PingtraxItems")) + { + $GLOBALS['xoTheme']->addStylesheet(XOOPS_URL . "/modules/pingtrax/pingtrax.css"); + $trackbacksTpl = new XoopsTpl(); + $trackbacksTpl->assign('permlink', $pingtraxitem->getVar('item-protocol').$pingtraxitem->getVar('item-domain').$pingtraxitem->getVar('item-referer-uri')); + $commentHandler = xoops_gethandler('comment'); + $moduleHandler = xoops_gethandler('module'); + $criteria = new CriteriaCompo(new Criteria('com_modid', $moduleHandler->getByDirname('pingtrax')->getVar('mid'))); + $criteria->add(new Criteria('com_itemid', $pingtraxitem->getVar('id'))); + $criteria->setOrder('com_created'); + $criteria->setSort('DESC'); + foreach($commentHandler->getObjects($criteria) as $comid => $comment) + $trackbacksTpl->append('trackbacks', array('subject'=>$comment->getVar('com_title'), 'comment'=>$comment->getVar('com_text'))); + ob_start(); + $trackbacksTpl->display($GLOBALS['xoops']->path('/modules/pingtrax/templates/xoTrackback.html')); + return ob_get_clean(); + } + return ''; +} Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/about.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/about.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/about.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,34 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/../../../include/cp_header.php'; +include '../../../class/xoopsformloader.php'; +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + +$aboutAdmin = new ModuleAdmin(); + +echo $aboutAdmin->addNavigation('about.php'); +echo $aboutAdmin->renderabout('6KJ7RW5DR3VTJ', false); + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Property changes on: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/about.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,48 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + + +$pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + +$indexAdmin = new ModuleAdmin(); + +$indexAdmin->addInfoBox(_AM_PINGTRAX_STATISTICS); + +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGLISTS."</label>", $pingsHandler->getCountPinglists(), 'Green'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_SITEMAPS."</label>", $pingsHandler->getCountSitemaps(), 'Green'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGSUCCESS."</label>", $pingsHandler->getSumSuccessful(), 'Green'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGFAILURES."</label>", $pingsHandler->getSumFailures(), 'Green'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGLASTSUCCESS."</label>", $pingsHandler->getLastSuccessDate('Y-m-d H:i:s'), 'Purple'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGLASTFAILED."</label>", $pingsHandler->getLastFailedDate('Y-m-d H:i:s'), 'Red'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_URISADMIN."</label>", $itemsHandler->getCount(new Criteria('user-session', 'admin')), 'Blue'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_URISUSERS."</label>", $itemsHandler->getCount(new Criteria('user-session', 'user')), 'Blue'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_URISGUEST."</label>", $itemsHandler->getCount(new Criteria('user-session', 'guest')), 'Blue'); + +echo $indexAdmin->addNavigation('admin.php'); +echo $indexAdmin->renderIndex(); + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Property changes on: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_footer.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_footer.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_footer.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,30 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +echo "<div class='adminfooter'>\n" + ." <div style='text-align: center;'>\n" + ." <a href='http://www.xoops.org' rel='external'><img src='{$pathIcon32}/xoopsmicrobutton.gif' alt='XOOPS' title='XOOPS'></a>\n" + ." </div>\n" + ." " . _AM_MODULEADMIN_ADMIN_FOOTER . "\n" + ."</div>"; + +xoops_cp_footer(); Property changes on: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_footer.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_header.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_header.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_header.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,69 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +$path = dirname(dirname(dirname(dirname(__FILE__)))); +include_once $path . '/mainfile.php'; +include_once $path . '/include/cp_functions.php'; +require_once $path . '/include/cp_header.php'; +require_once $path . '/class/pagenav.php'; + +global $xoopsModule; + +$thisModuleDir = $GLOBALS['xoopsModule']->getVar('dirname'); + +//if functions.php file exist +//require_once dirname(dirname(__FILE__)) . '/include/functions.php'; + +// Load language files +xoops_loadLanguage('admin', $thisModuleDir); +xoops_loadLanguage('modinfo', $thisModuleDir); +xoops_loadLanguage('main', $thisModuleDir); + +$pathIcon16 = '../'.$xoopsModule->getInfo('icons16'); +$pathIcon32 = '../'.$xoopsModule->getInfo('icons32'); +$pathModuleAdmin = $xoopsModule->getInfo('dirmoduleadmin'); + +include_once $GLOBALS['xoops']->path($pathModuleAdmin.'/moduleadmin.php'); + +if ($xoopsUser) { + $moduleperm_handler =& xoops_gethandler('groupperm'); + if (!$moduleperm_handler->checkRight('module_admin', $xoopsModule->getVar('mid'), $xoopsUser->getGroups())) { + redirect_header(XOOPS_URL, 1, _NOPERM); + exit(); + } +} else { + redirect_header(XOOPS_URL . "/user.php", 1, _NOPERM); + exit(); +} + +if (!isset($xoopsTpl) || !is_object($xoopsTpl)) { + include_once(XOOPS_ROOT_PATH."/class/template.php"); + $xoopsTpl = new XoopsTpl(); +} + +//$xoopsTpl->assign('pathIcon16', $pathIcon16); + +if (!isset($GLOBALS['xoopsTpl']) || !is_object($GLOBALS['xoopsTpl'])) { + include_once XOOPS_ROOT_PATH . '/class/template.php'; + $GLOBALS['xoopsTpl'] = new XoopsTpl(); +} Property changes on: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/admin_header.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/index.html =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/index.html (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/index.html 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/items.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/items.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/items.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,103 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + +xoops_load('PageNav'); +xoops_load('XoopsFormLoader'); + +$indexAdmin = new ModuleAdmin(); +echo $indexAdmin->addNavigation('pings.php'); + +$start = !isset($_REQUEST['start'])?0:(integer)$_REQUEST['start']; +$num = !isset($_REQUEST['num'])?30:(integer)$_REQUEST['num']; +$domain = !isset($_REQUEST['domain'])?'':(string)$_REQUEST['domain']; +$protocol = !isset($_REQUEST['protocol'])?'':(string)$_REQUEST['protocol']; + +$sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); +$itemsSitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); + +$criteria = new Criteria('offlined', 0); +foreach($sitemapsHandler->getObjects($criteria) as $id => $sitemap) + $GLOBALS['xoopsTpl']->append('filter', array('protocol'=>$sitemap->getVar('protocol'), 'domain'=>$sitemap->getVar('domain'),'filename'=>$sitemap->getVar('filename'))); + + +$criteria = new CriteriaCompo(new Criteria('`offlined`', 0)); +if (!empty($protocol)) + $criteria->add(new Criteria('`item-protocol`', mysql_escape_string($protocol))); +if (!empty($domain)) + $criteria->add(new Criteria('`item-domain`', $domain)); +$criteria->add(new Criteria('`type`', 'local')); +$total = $itemsHandler->getCount($criteria); +$criteria->setStart($start); +$criteria->setLimit($num); + +foreach($itemsHandler->getObjects($criteria, true) as $id => $item) +{ + $local = array(); + $local['id'] = $item->getVar('id'); + $local['dirname'] = $item->getVar('module-dirname'); + $local['class'] = $item->getVar('module-class'); + $local['itemid'] = $item->getVar('module-item-id'); + $local['catid'] = $item->getVar('item-category-id'); + $local['author']['uid'] = $item->getVar('item-author-uid'); + $local['author']['name'] = $item->getVar('item-author-name'); + $local['uri'] = $item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri'); + $local['title'] = $item->getVar('item-title'); + $local['refereruri'] = $item->getVar('item-referer-uri'); + $local['discovery'] = $item->getVar('discovery-hook'); + $local['session'] = $item->getVar('user-session'); + $criteria = new CriteriaCompo(new Criteria('type', 'remote')); + $criteria->add(new Criteria('parent-id', $local['id'])); + $local['children'] = $itemsHandler->getCount($criteria); + $criteria = new CriteriaCompo(new Criteria('item-referer', $item->getVar('referer'))); + if ($itemsSitemapsHandler->getCount($criteria)==0) + { + $local['changed'] = $local['checking'] = $local['priority'] = $local['frequency'] = '---'; + } else { + $itemsitemaps = $itemsSitemapsHandler->getObjects($criteria, false); + if (isset($itemsitemaps[0]) && is_object($itemsitemaps[0])) + { + $local['frequency'] = $itemsitemaps[0]->getVar('frequency'); + $local['priority'] = $itemsitemaps[0]->getVar('priority'); + $local['changed'] = ($itemsitemaps[0]->getVar('changed')==0?"---":date('Y-m-d H:i:s', $itemsitemaps[0]->getVar('changed'))); + $local['checking'] = ($itemsitemaps[0]->getVar('checking')==0?"---":date('Y-m-d H:i:s', $itemsitemaps[0]->getVar('checking'))); + } else + $local['changed'] = $local['checking'] = $local['priority'] = $local['frequency'] = '---'; + } + $GLOBALS['xoopsTpl']->append('locals', $local); +} + +$pagenav = new XoopsPageNav($total, $num, $start, 'start', "&num=$num&protocol=$protocol&domain=$domain"); +$GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(5)); +$GLOBALS['xoopsTpl']->assign('start', $start); +$GLOBALS['xoopsTpl']->assign('num', $num); +$GLOBALS['xoopsTpl']->assign('protocol', $protocol); +$GLOBALS['xoopsTpl']->assign('domain', $domain); +$GLOBALS['xoopsTpl']->assign('phpself', XOOPS_URL . $_SERVER["PHP_SELF"]); +$GLOBALS['xoopsTpl']->display($GLOBALS['xoops']->path('/modules/pingtrax/templates/admin/items.html')); + + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/menu.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/menu.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/menu.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,58 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +// defined("XOOPS_ROOT_PATH") || die("XOOPS root path not defined"); + +$path = dirname(dirname(dirname(dirname(__FILE__)))); +include_once $path . '/mainfile.php'; + +$dirname = basename(dirname(dirname(__FILE__))); +$module_handler = xoops_gethandler('module'); +$module = $module_handler->getByDirname($dirname); +$pathIcon32 = $module->getInfo('icons32'); +$pathModuleAdmin = $module->getInfo('dirmoduleadmin'); +$pathLanguage = $path . $pathModuleAdmin; + +if (!file_exists($fileinc = $pathLanguage . '/language/' . $GLOBALS['xoopsConfig']['language'] . '/' . 'main.php')) { + $fileinc = $pathLanguage . '/language/english/main.php'; +} + +include_once $fileinc; + +$adminmenu = array(); + +$i = 1; +$adminmenu[$i]['title'] = _MI_PINGTRAX_DASHBOARD; +$adminmenu[$i]['link'] = "admin/admin.php"; +$adminmenu[$i]['icon'] = $pathIcon32.'/home.png' ; +++$i; +$adminmenu[$i]['title'] = _MI_PINGTRAX_PINGS; +$adminmenu[$i]['link'] = 'admin/pings.php'; +$adminmenu[$i]['icon'] = $pathIcon32.'/globe.png'; +++$i; +$adminmenu[$i]['title'] = _MI_PINGTRAX_ITEMS; +$adminmenu[$i]['link'] = 'admin/items.php'; +$adminmenu[$i]['icon'] = $pathIcon32.'/playlist.png'; +++$i; +$adminmenu[$i]['title'] = _MI_PINGTRAX_ABOUT; +$adminmenu[$i]['link'] = 'admin/about.php'; +$adminmenu[$i]['icon'] = $pathIcon32.'/about.png'; Property changes on: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/menu.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/pings.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/pings.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/admin/pings.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,109 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + +xoops_load('PageNav'); +xoops_load('XoopsFormLoader'); + +$indexAdmin = new ModuleAdmin(); +echo $indexAdmin->addNavigation('pings.php'); + +$start = !isset($_REQUEST['start'])?0:(integer)$_REQUEST['start']; +$num = !isset($_REQUEST['num'])?30:(integer)$_REQUEST['num']; +$id = !isset($_REQUEST['id'])?0:(integer)$_REQUEST['id']; +$op = !isset($_REQUEST['op'])?'default':(string)$_REQUEST['op']; + +$pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + +switch ($op) +{ + default: + $criteria = new Criteria('offlined', 0); + $total = $pingsHandler->getCount($criteria); + $criteria->setStart($start); + $criteria->setLimit($num); + + foreach($pingsHandler->getObjects($criteria, true) as $id => $ping) + { + if ($ping->getVar('last-item-referer')!='') + { + $item = $itemsHandler->getByReferer($ping->getVar('last-item-referer')); + if (is_object($item)) + $last = array('uri'=>$item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri'), 'title' => $item->getVar('item-title')); + else + $last = array(); + } else + $last = array(); + $GLOBALS['xoopsTpl']->append('pings', array('id' => $ping->getVar('id'), 'type' => $ping->getVar('type'), 'uri' => $ping->getVar('uri'), 'last' => $last, "successes" => number_format($ping->getVar('successful-pings'), 0), "failures" => number_format($ping->getVar('failed-pings'), 0), 'success' => ($ping->getVar('success-time')!=0?date("Y-m-d H:i:s", $ping->getVar('success-time')):"---"), 'failed' => ($ping->getVar('failure-time')!=0?date("Y-m-d H:i:s", $ping->getVar('failure-time')):"---"), 'sleeptill' => ($ping->getVar('sleep-till')!=0?date("Y-m-d H:i:s", $ping->getVar('sleep-till')):"---"))); + } + + $pagenav = new XoopsPageNav($total, $num, $start, 'start', "&num=$num"); + $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(5)); + $GLOBALS['xoopsTpl']->assign('start', $start); + $GLOBALS['xoopsTpl']->assign('num', $num); + + $form = new XoopsThemeForm(_AM_PINGTRAX_PING_ADD, 'add-pinglist', $_SERVER['PHP_SELF']."?op=add&start=$start&num=&num"); + $form->addElement(new XoopsFormText(_AM_PINGTRAX_PING_URI, 'uri', 50, 250)); + $type = new XoopsFormSelect(_AM_PINGTRAX_PING_TYPE, 'type'); + $type->addOption('XML-RPC', 'XML-RPC'); + $type->addOption('SITEMAPS', 'SITEMAPS'); + $form->addElement($type); + $form->addElement(new XoopsFormButton(_SUBMIT, 'submit', _SUBMIT)); + $GLOBALS['xoopsTpl']->assign('addform', $form->render()); + $GLOBALS['xoopsTpl']->display($GLOBALS['xoops']->path('/modules/pingtrax/templates/admin/pings.html')); + break; + case "add": + if (!empty($_POST['uri']) && !empty($_POST['type'])) + { + $ping = $pingsHandler->create(); + $ping->setVar('uri', $_POST['uri']); + $ping->setVar('type', $_POST['type']); + if($pingsHandler->insert($ping)) + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_ADD_SUCCESSFUL); + } + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_ADD_FAILED); + exit(0); + case "edit": + foreach($_POST['uri'] as $id=> $uri) + { + $ping = $pingsHandler->get($id); + $ping->setVar('uri', $uri); + $ping->setVar('type', $_POST['type'][$id]); + $pingsHandler->insert($ping); + } + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_EDIT_COMPLETE); + exit(0); + case "delete": + $ping = $pingsHandler->get($id); + if (is_a($ping, "PingtraxPings")) + if ($pingsHandler->delete($ping)) + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_DELETE_SUCCESS); + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_DELETE_FAILED); + exit(0); + break; +} + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/api/.htaccess =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/api/.htaccess (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/api/.htaccess 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,2 @@ +RewriteEngine On +RewriteRule ^([0-9a-z]{32,44})$ index.php?referer=$1 [L] \ No newline at end of file Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/api/index.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/api/index.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/api/index.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,50 @@ +<?php + +require_once dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . "mainfile.php"; +require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . "class". DIRECTORY_SEPARATOR . "trackback.php"; + +$trackback = new PingtraxTrackback($GLOBALS['xoopsConfig']['sitename'], $GLOBALS['xoopsConfig']['sitename'], 'UTF-8'); + +if (!isset($_GET['referer'])) + die($trackback->recieve(false, "\$_GET['referer'] not specified and is required for trackback API!")); + +xoops_load("XoopsUserUtility"); +$moduleHandler = xoops_gethandler('module'); +$commentHandler = xoops_gethandler('comment'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); +$item = $itemsHandler->getByReferer($_GET['referer']); + +if (!is_a($item, "PingtraxItems")) + die($trackback->recieve(false, $_GET['referer'] . " does not match any recorded item on the trackback API!")); + +$url = $_REQUEST["url"]; +if ($url) { + $excerpt = $_REQUEST["excerpt"]; + $name = ($_REQUEST["blog_name"]) ? $_REQUEST["blog_name"] : $url; + $subject = ($_REQUEST["title"]) ? $_REQUEST["title"] : $url; + $comment = "<strong> TrackBack from <a href=\"$url\">$name</a>:</strong><br />"; + $comment .= "<blockquote>$excerpt</blockquote>"; + + $pluginHandler = xoops_getmodulehandler('plugins', 'pingtrax'); + $remoteitem = $pluginHandler->getRemoteObject($item, $url, $name, $subject, $comment); + if (is_a($remoteitem, "PingtraxItems")) + { + $comment = $commentHandler->create(); + $comment->setVar('com_modid', $moduleHandler->getByDirname('pingtrax')->getVar('mid')); + $comment->setVar('com_title', $subject); + $comment->setVar('com_text', $comment); + $comment->setVar('com_created', time()); + $comment->setVar('com_url', $url); + $comment->setVar('com_ip', XoopsUserUtility::getIP(true)); + $comment->setVar('com_itemid', $item->getVar('id')); + $comment->setVar('dohtml', true); + $comment->setVar('dosmiley', true); + $comment->setVar('doxcode', true); + $comment->setVar('doimage', true); + $comment->setVar('dobr', true); + $commentHandler->insert($comment); + } +} else { + die($trackback->recieve(false, "Missing URL for trackback API!")); +} +die($trackback->recieve(true, "")); Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/index.html =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/index.html (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/index.html 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/pingtrax_blocks.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/pingtrax_blocks.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/blocks/pingtrax_blocks.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,33 @@ +<?php +/** + * Pingtrax Block Trackbacks Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +function pingtrax_trackbacks_block_show($args = array()) +{ + +} + + +function pingtrax_trackbacks_block_edit($args = array()) +{ + +} \ No newline at end of file Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/index.html =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/index.html (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/index.html 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,242 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +/** + * Class PingtraxItems + * + * @subpackage pingtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_items` ( + * `id` mediumint(20) NOT NULL AUTO_INCREMENT, + * `parent-id` mediumint(20) NOT NULL DEFAULT '0', + * `referer` varchar(44) NOT NULL DEFAULT '', + * `type` enum('local','remote','unknown') NOT NULL DEFAULT 'unknown', + * `module-dirname` varchar(30) NOT NULL DEFAULT '', + * `module-class` varchar(100) NOT NULL DEFAULT '', + * `module-item-id` mediumint(30) NOT NULL DEFAULT '0', + * `module-php-self` varchar(150) NOT NULL DEFAULT '', + * `module-get` tinytext, + * `item-author-uid` int(13) NOT NULL DEFAULT '0', + * `item-author-name` varchar(64) NOT NULL DEFAULT '', + * `item-category-id` int(20) NOT NULL DEFAULT '0', + * `item-title` varchar(180) NOT NULL DEFAULT '', + * `item-description` varchar(250) NOT NULL DEFAULT '', + * `item-protocol` enum('https://','http://') NOT NULL DEFAULT 'http://', + * `item-domain` varchar(150) NOT NULL DEFAULT '', + * `item-referer-uri` varchar(250) NOT NULL DEFAULT '', + * `item-php-self` varchar(250) NOT NULL DEFAULT '', + * `feed-protocol` enum('https://','http://') NOT NULL DEFAULT 'http://', + * `feed-domain` varchar(150) NOT NULL DEFAULT '', + * `feed-referer-uri` varchar(250) NOT NULL DEFAULT '', + * `discovery-hook` enum('php','preloader','smarty','combination','unknown') NOT NULL DEFAULT 'unknown', + * `user-session` enum('admin','user','guest','unknown') NOT NULL DEFAULT 'unknown', + * `created` int(12) NOT NULL DEFAULT '0', + * `updated` int(12) NOT NULL DEFAULT '0', + * `offlined` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`), + * KEY `SEARCH` (`referer`,`item-author-uid`,`item-author-name`,`module-dirname`,`item-protocol`,`item-domain`,`item-referer-uri`,`module-php-self`,`item-php-self`,`discovery-hook`,`id`) KEY_BLOCK_SIZE=128, + * KEY `CHRONOLOGISTICS` (`id`,`referer`,`created`,`updated`,`offlined`) USING BTREE KEY_BLOCK_SIZE=64 + * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; + */ +class PingtraxItems extends XoopsObject +{ + /** + * + * @var unknown + */ + var $_configs = array(); + + /** + * + */ + function __construct() + { + $moduleHandler = xoops_gethandler('module'); + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($moduleHandler->getByDirname(basename(dirname(__DIR__)))->getVar('mid')); + + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('parent-id', XOBJ_DTYPE_INT, null, false); + $this->initVar('referer', XOBJ_DTYPE_OTHER, sha1(NULL), false, 44); + $this->initVar('type', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('local','remote','unknown')); + $this->initVar('module-dirname', XOBJ_DTYPE_OTHER, '', false, 30); + $this->initVar('module-class', XOBJ_DTYPE_OTHER, '', false, 100); + $this->initVar('module-item-id', XOBJ_DTYPE_INT, 0, false); + $this->initVar('module-php-self', XOBJ_DTYPE_OTHER, '', false, 150); + $this->initVar('module-get', XOBJ_DTYPE_ARRAY, array(), false); + $this->initVar('item-author-uid', XOBJ_DTYPE_INT, 0, false); + $this->initVar('item-author-name', XOBJ_DTYPE_TXTBOX, '', false, 64); + $this->initVar('item-category-id', XOBJ_DTYPE_INT, null, false); + $this->initVar('item-title', XOBJ_DTYPE_TXTBOX, '', false, 180); + $this->initVar('item-description', XOBJ_DTYPE_TXTBOX, '', false, 250); + $this->initVar('item-protocol', XOBJ_DTYPE_ENUM, XOOPS_PROT, true, false, false, false, array('https://','http://')); + $this->initVar('item-domain', XOBJ_DTYPE_TXTBOX, parse_url(XOOPS_URL, PHP_URL_HOST), true, 150); + $this->initVar('item-referer-uri', XOBJ_DTYPE_TXTBOX, $_SERVER["REQUEST_URI"], true, 250); + $this->initVar('item-php-self', XOBJ_DTYPE_TXTBOX, str_replace(XOOPS_ROOT_PATH, "", $_SERVER["PHP_SELF"]), true, 250); + $this->initVar('feed-protocol', XOBJ_DTYPE_ENUM, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_SCHEME), true, false, false, false, array('https://','http://')); + $this->initVar('feed-domain', XOBJ_DTYPE_TXTBOX, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_HOST), true, 150); + $this->initVar('feed-referer-uri', XOBJ_DTYPE_TXTBOX, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_PATH) . '/backend.php', true, 250); + $this->initVar('discovery-hook', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('php','preloader','smarty','combination','unknown')); + $this->initVar('user-session', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('admin','user','guest','unknown')); + $this->initVar('created', XOBJ_DTYPE_INT, 0, false); + $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); + $this->initVar('offlined', XOBJ_DTYPE_INT, 0, false); + } + + /** + * + * @return string + */ + function getPingXML() + { + $xml = "<?xml version=\"1.0\"?>\n"; + $xml .= "<methodCall>\n"; + $xml .= "\t<methodName>weblogUpdates.extendedPing</methodName>\n"; + $xml .= "\t<params>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-title')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-protocol').$this->getVar('item-domain')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-protocol').$this->getVar('item-domain').$this->getVar('item-referer-uri')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('feed-protocol').$this->getVar('feed-domain').$this->getVar('feed-referer-uri')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t</params>\n"; + $xml .= "</methodCall>"; + return $xml; + } +} + +/** + * Class PingtraxItemsHandler + */ +class PingtraxItemsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db, "pingtrax_items", 'PingtraxItems', 'id', 'referer'); + } + + + function insert($object = NULL, $force = true) + { + if ($object->isNew()) + { + $criteria = new Criteria('referer', $object->getVar('referer')); + if ($this->getCount($criteria)==0) + $object->setVar('created', time()); + else + { + $objs = $this->getObjects($criteria, false); + if (isset($objs[0])) + return $objs[0]->getVar('id'); + else + return false; + } + if ($object->getVar('type') == 'local') + { + $sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('protocol', XOOPS_PROT)); + $criteria->add(new Criteria('domain', parse_url(XOOPS_URL, PHP_URL_HOST))); + $criteria->add(new Criteria('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH))); + if ($sitemapsHandler->getCount($criteria)==0) + { + $sitemap = $sitemapsHandler->create(); + $sitemap->setVar('referer', md5(XOOPS_URL.microtime(true).XOOPS_DB_USER.XOOPS_DB_PASS)); + $sitemap->setVar('protocol', XOOPS_PROT); + $sitemap->setVar('domain', parse_url(XOOPS_URL, PHP_URL_HOST)); + $sitemap->setVar('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH)); + $sitemap->setVar('filename', 'sitemap.'.str_replace("://", "", XOOPS_PROT) . "." . parse_url(XOOPS_URL, PHP_URL_HOST) . '.xml'); + $sitemap = $sitemapsHandler->get($sitemap = $sitemapsHandler->insert($sitemap, true)); + } else { + $obj = $sitemapsHandler->getObjects($criteria, false); + if (is_object($obj[0])) + $sitemap = $obj[0]; + } + $items_sitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); + $itemsitemap = $items_sitemapsHandler->create(); + $itemsitemap->setVar('map-referer', $sitemap->getVar('referer')); + $itemsitemap->setVar('item-referer', $object->getVar('referer')); + $items_sitemapsHandler->insert($itemsitemap, true); + $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); + $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('`type`', 'XML-RPC')); + $criteria->add(new Criteria('`offlined`', 0)); + foreach($pingsHandler->getObjects($criteria, true) as $id => $ping) + { + $itemping = $items_pingsHandler->create(); + $itemping->setVar('ping-referer', $ping->getVar('referer')); + $itemping->setVar('item-referer', $object->getVar('referer')); + $items_pingsHandler->insert($itemping, true); + } + } + } else { + $object->setVar('updated', time()); + } + switch ($object->getVar('user-session')) + { + default: + case 'unknown': + if (is_object($GLOBALS['xoopsUser'])) + { + if ($GLOBALS['xoopsUser']->isAdmin()) + $object->setVar('user-session', 'admin'); + } + case 'admin': + if (is_object($GLOBALS['xoopsUser'])) + { + if (!$GLOBALS['xoopsUser']->isAdmin()) + $object->setVar('user-session', 'user'); + } + case 'user': + if (!is_object($GLOBALS['xoopsUser'])) + $object->setVar('user-session', 'guest'); + case 'guest': + break; + } + return parent::insert($object, $force); + } + + function getByReferer($referer = '') + { + $criteria = new CriteriaCompo(new Criteria('referer', $referer)); + $criteria->add(new Criteria('offline', 0)); + if ($this->getCount($criteria)==0) + return NULL; + $objs = $this->getObjects($criteria, false); + if (isset($objs[0]) && is_a($objs[0], "PingtraxItems")) + return $objs[0]; + return NULL; + } +} Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items_pings.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items_pings.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items_pings.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,73 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +/** + * Class PingtraxItems_pings + * + * @subpackage itemtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_items_pings` ( + * `id` mediumint(32) NOT NULL AUTO_INCREMENT, + * `ping-referer` varchar(44) NOT NULL DEFAULT '', + * `item-referer` varchar(44) NOT NULL DEFAULT '', + * `when` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`), + * KEY `SEARCH` (`id`,`ping-referer`,`item-referer`) USING BTREE, + * KEY `CHRONOLOGISTICS` (`ping-referer`,`item-referer`,`when`) USING BTREE KEY_BLOCK_SIZE=64 + * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; + * + */ +class PingtraxItems_pings extends XoopsObject +{ + /** + * + */ + function __construct() + { + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('ping-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('item-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('when', XOBJ_DTYPE_INT, 0, false); + } + +} + +/** + * Class PingtraxItems_pingsHandler + */ +class PingtraxItems_pingsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db, "pingtrax_items_pings", 'PingtraxItems_pings', 'id', 'ping-referer'); + } + + +} Added: XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items_sitemaps.php =================================================================== --- XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items_sitemaps.php (rev 0) +++ XoopsModules/pingtrax/releases/1.02/modules/pingtrax/class/items_sitemaps.php 2015-12-08 22:35:05 UTC (rev 13188) @@ -0,0 +1,366 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +require_once __DIR__ . DIRECTORY_SEPARATOR . 'simple_html_dom.php'; + +/** + * Class PingtraxItems_sitemaps + * + * @subpackage itemtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_items_sitemaps` ( + * `id` mediumint(32) NOT NULL AUTO_INCREMENT, + * `map-referer` varchar(44) NOT NULL DEFAULT '', + * `item-referer` varchar(44) NOT NULL DEFAULT '', + * `frequency` enum('monthly','fortnightly','weekly','daily') NOT NULL DEFAULT 'monthly', + * `priority` float(2,1) NOT NULL DEFAULT '0.9', + * `checking` int(12) NOT NULL DEFAULT '0', + * `changed` int(12) NOT NULL DEFAULT '0', + * `changes` int(12) NOT NULL DEFAULT '0', + * `when` int(12) NOT NULL DEFAULT '0', + * `header-md5` varchar(32) NOT NULL DEFAULT '0', + * `header-changes` int(12) NOT NULL DEFAULT '0', + * `header-changed` int(12) NOT NULL DEFAULT '0', + * `header-bytes` int(12) NOT NULL DEFAULT '0', + * `body-md5` varchar(32) NOT NULL DEFAULT '0', + * `body-changes` int(12) NOT NULL DEFAULT '0', + * `body-changed` int(12) NOT NULL DEFAULT '0', + * `body-bytes` int(12) NOT NULL DEFAULT '0', + * `tabled-md5` varchar(32) NOT NULL DEFAULT '0', + * `tabled-changes` int(12) NOT NULL DEFAULT '0', + * `tabled-changed` int(12) NOT NULL DEFAULT '0', + * `tabled-bytes` int(12) NOT NULL DEFAULT '0', + * `dived-md5` varchar(32) NOT NULL DEFAULT '0', + * `dived-changes` int(12) NOT NULL DEFAULT '0', + * `dived-changed` int(12) NOT NULL DEFAULT '0', + * `dived-bytes` int(12) NOT NULL DEFAULT '0', + * `header-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `header-changes-last` int(12) NOT NULL DEFAULT '0', + * `header-changed-last` int(12) NOT NULL DEFAULT '0', + * `header-bytes-last` int(12) NOT NULL DEFAULT '0', + * `body-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `body-changes-last` int(12) NOT NULL DEFAULT '0', + * `body-changed-last` int(12) NOT NULL DEFAULT '0', + * `body-bytes-last` int(12) NOT NULL DEFAULT '0', + * `tabled-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `tabled-changes-last` int(12) NOT NULL DEFAULT '0', + * `tabled-changed-last` int(12) NOT NULL DEFAULT '0', + * `tabled-bytes-last` int(12) NOT NULL DEFAULT '0', + * `dived-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `dived-changes-last` int(12) NOT NULL DEFAULT '0', + * `dived-changed-last` int(12) NOT NULL DEFAULT '0', + * `dived-bytes-last` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`), + * KEY `SEARCH` (`id`,`map-referer`,`item-referer`) USING BTREE, + * KEY `CHRONOLOGISTICS` (`map-referer`,`item-referer`) USING BTREE KEY_BLOCK_SIZE=64 + * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; + * + */ +class PingtraxItems_sitemaps extends XoopsObject +{ + /** + * + */ + function __construct() + { + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('map-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('item-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('frequency', XOBJ_DTYPE_ENUM, 'daily', false, false, false, false, false, array('monthly','fortnightly','weekly','daily')); + $this->initVar('priority', XOBJ_DTYPE_FLOAT, 0.9, false); + $this->initVar('checking', XOBJ_DTYPE_INT, time(), false); + $this->initVar('changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('when', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('header-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('body-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('body-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('tabled-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('tabled-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('dived-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('dived-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('header-changes-last', X... [truncated message content] |
From: <wis...@us...> - 2015-12-08 22:32:08
|
Revision: 13187 http://sourceforge.net/p/xoops/svn/13187 Author: wishcraft Date: 2015-12-08 22:32:06 +0000 (Tue, 08 Dec 2015) Log Message: ----------- Ping Trax 1.02 Stable -- Finished\!\! Modified Paths: -------------- XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php Added Paths: ----------- XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/pingtrax_blocks.php XoopsModules/pingtrax/trunk/modules/pingtrax/templates/blocks/trackbacks_block.html Added: XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/pingtrax_blocks.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/pingtrax_blocks.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/pingtrax_blocks.php 2015-12-08 22:32:06 UTC (rev 13187) @@ -0,0 +1,33 @@ +<?php +/** + * Pingtrax Block Trackbacks Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +function pingtrax_trackbacks_block_show($args = array()) +{ + +} + + +function pingtrax_trackbacks_block_edit($args = array()) +{ + +} \ No newline at end of file Added: XoopsModules/pingtrax/trunk/modules/pingtrax/templates/blocks/trackbacks_block.html =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/templates/blocks/trackbacks_block.html (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/templates/blocks/trackbacks_block.html 2015-12-08 22:32:06 UTC (rev 13187) @@ -0,0 +1 @@ +<{xoTrackbacks}> \ No newline at end of file Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php 2015-12-08 22:25:11 UTC (rev 13186) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php 2015-12-08 22:32:06 UTC (rev 13187) @@ -116,3 +116,15 @@ 'default' => 3600 * mt_rand(1,12) ); +// Blocks + +$modversion["blocks"][1] = array( + "file" => "pingtrax_blocks.php", + "name" => "Trackbacks Cloud", + "description" => "Show tackbacksd", + "show_func" => "pingtrax_trackbacks_block_show", + "edit_func" => "pingtrax_trackbacks_block_edit", + "options" => "", + "template" => "trackbacks_block.html", +); + |
From: <wis...@us...> - 2015-12-08 22:25:13
|
Revision: 13186 http://sourceforge.net/p/xoops/svn/13186 Author: wishcraft Date: 2015-12-08 22:25:11 +0000 (Tue, 08 Dec 2015) Log Message: ----------- Ping Trax 1.02 Beta -- Almost Finished\!\! Modified Paths: -------------- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/items.php XoopsModules/pingtrax/trunk/modules/pingtrax/admin/pings.php XoopsModules/pingtrax/trunk/modules/pingtrax/api/.htaccess XoopsModules/pingtrax/trunk/modules/pingtrax/class/items.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/sitemaps.php XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/admin.php XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/modinfo.php XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/trackback.php XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/items.html Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/items.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/items.php 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/items.php 2015-12-08 22:25:11 UTC (rev 13186) @@ -31,79 +31,73 @@ $start = !isset($_REQUEST['start'])?0:(integer)$_REQUEST['start']; $num = !isset($_REQUEST['num'])?30:(integer)$_REQUEST['num']; -$id = !isset($_REQUEST['id'])?0:(integer)$_REQUEST['id']; -$op = !isset($_REQUEST['op'])?'default':(string)$_REQUEST['op']; +$domain = !isset($_REQUEST['domain'])?'':(string)$_REQUEST['domain']; +$protocol = !isset($_REQUEST['protocol'])?'':(string)$_REQUEST['protocol']; -$pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); +$sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); +$itemsSitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); -switch ($op) +$criteria = new Criteria('offlined', 0); +foreach($sitemapsHandler->getObjects($criteria) as $id => $sitemap) + $GLOBALS['xoopsTpl']->append('filter', array('protocol'=>$sitemap->getVar('protocol'), 'domain'=>$sitemap->getVar('domain'),'filename'=>$sitemap->getVar('filename'))); + + +$criteria = new CriteriaCompo(new Criteria('`offlined`', 0)); +if (!empty($protocol)) + $criteria->add(new Criteria('`item-protocol`', mysql_escape_string($protocol))); +if (!empty($domain)) + $criteria->add(new Criteria('`item-domain`', $domain)); +$criteria->add(new Criteria('`type`', 'local')); +$total = $itemsHandler->getCount($criteria); +$criteria->setStart($start); +$criteria->setLimit($num); + +foreach($itemsHandler->getObjects($criteria, true) as $id => $item) { - default: - $criteria = new Criteria('offlined', 0); - $total = $pingsHandler->getCount($criteria); - $criteria->setStart($start); - $criteria->setLimit($num); - - foreach($pingsHandler->getObjects($criteria, true) as $id => $ping) + $local = array(); + $local['id'] = $item->getVar('id'); + $local['dirname'] = $item->getVar('module-dirname'); + $local['class'] = $item->getVar('module-class'); + $local['itemid'] = $item->getVar('module-item-id'); + $local['catid'] = $item->getVar('item-category-id'); + $local['author']['uid'] = $item->getVar('item-author-uid'); + $local['author']['name'] = $item->getVar('item-author-name'); + $local['uri'] = $item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri'); + $local['title'] = $item->getVar('item-title'); + $local['refereruri'] = $item->getVar('item-referer-uri'); + $local['discovery'] = $item->getVar('discovery-hook'); + $local['session'] = $item->getVar('user-session'); + $criteria = new CriteriaCompo(new Criteria('type', 'remote')); + $criteria->add(new Criteria('parent-id', $local['id'])); + $local['children'] = $itemsHandler->getCount($criteria); + $criteria = new CriteriaCompo(new Criteria('item-referer', $item->getVar('referer'))); + if ($itemsSitemapsHandler->getCount($criteria)==0) + { + $local['changed'] = $local['checking'] = $local['priority'] = $local['frequency'] = '---'; + } else { + $itemsitemaps = $itemsSitemapsHandler->getObjects($criteria, false); + if (isset($itemsitemaps[0]) && is_object($itemsitemaps[0])) { - if ($ping->getVar('last-item-referer')!='') - { - $item = $itemsHandler->getByReferer($ping->getVar('last-item-referer')); - if (is_object($item)) - $last = array('uri'=>$item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri'), 'title' => $item->getVar('item-title')); - else - $last = array(); - } else - $last = array(); - $GLOBALS['xoopsTpl']->append('pings', array('id' => $ping->getVar('id'), 'type' => $ping->getVar('type'), 'uri' => $ping->getVar('uri'), 'last' => $last, "successes" => number_format($ping->getVar('successful-pings'), 0), "failures" => number_format($ping->getVar('failed-pings'), 0), 'success' => ($ping->getVar('success-time')!=0?date("Y-m-d H:i:s", $ping->getVar('success-time')):""), 'failed' => ($ping->getVar('failure-time')!=0?date("Y-m-d H:i:s", $ping->getVar('failure-time')):""), 'sleeptill' => ($ping->getVar('sleep-till')!=0?date("Y-m-d H:i:s", $ping->getVar('sleep-till')):""))); - } - - $pagenav = new XoopsPageNav($total, $num, $start, 'start', "&num=$num"); - $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(5)); - $GLOBALS['xoopsTpl']->assign('start', $start); - $GLOBALS['xoopsTpl']->assign('num', $num); - - $form = new XoopsThemeForm(_AM_PINGTRAX_PING_ADD, 'add-pinglist', $_SERVER['PHP_SELF']."?op=add&start=$start&num=&num"); - $form->addElement(new XoopsFormText(_AM_PINGTRAX_PING_URI, 'uri', 50, 250)); - $type = new XoopsFormSelect(_AM_PINGTRAX_PING_TYPE, 'type'); - $type->addOption('XML-RPC', 'XML-RPC'); - $type->addOption('SITEMAPS', 'SITEMAPS'); - $form->addElement($type); - $form->addElement(new XoopsFormButton(_SUBMIT, 'submit', _SUBMIT)); - $GLOBALS['xoopsTpl']->assign('addform', $form->render()); - $GLOBALS['xoopsTpl']->display($GLOBALS['xoops']->path('/modules/pingtrax/templates/admin/pings.html')); - break; - case "add": - if (!empty($_POST['uri']) && !empty($_POST['type'])) - { - $ping = $pingsHandler->create(); - $ping->setVar('uri', $_POST['uri']); - $ping->setVar('type', $_POST['type']); - if($pingsHandler->insert($ping)) - redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_ADD_SUCCESSFUL); - } - redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_ADD_FAILED); - exit(0); - case "edit": - foreach($_POST['uri'] as $id=> $uri) - { - $ping = $pingsHandler->get($id); - $ping->setVar('uri', $uri); - $ping->setVar('type', $_POST['type'][$id]); - $pingsHandler->insert($ping); - } - redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_EDIT_COMPLETE); - exit(0); - case "delete": - $ping = $pingsHandler->get($id); - if (is_a($ping, "PingtraxPings")) - if ($pingsHandler->delete($ping)) - redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_DELETE_SUCCESS); - redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_DELETE_FAILED); - exit(0); - break; + $local['frequency'] = $itemsitemaps[0]->getVar('frequency'); + $local['priority'] = $itemsitemaps[0]->getVar('priority'); + $local['changed'] = ($itemsitemaps[0]->getVar('changed')==0?"---":date('Y-m-d H:i:s', $itemsitemaps[0]->getVar('changed'))); + $local['checking'] = ($itemsitemaps[0]->getVar('checking')==0?"---":date('Y-m-d H:i:s', $itemsitemaps[0]->getVar('checking'))); + } else + $local['changed'] = $local['checking'] = $local['priority'] = $local['frequency'] = '---'; + } + $GLOBALS['xoopsTpl']->append('locals', $local); } +$pagenav = new XoopsPageNav($total, $num, $start, 'start', "&num=$num&protocol=$protocol&domain=$domain"); +$GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(5)); +$GLOBALS['xoopsTpl']->assign('start', $start); +$GLOBALS['xoopsTpl']->assign('num', $num); +$GLOBALS['xoopsTpl']->assign('protocol', $protocol); +$GLOBALS['xoopsTpl']->assign('domain', $domain); +$GLOBALS['xoopsTpl']->assign('phpself', XOOPS_URL . $_SERVER["PHP_SELF"]); +$GLOBALS['xoopsTpl']->display($GLOBALS['xoops']->path('/modules/pingtrax/templates/admin/items.html')); + + include_once dirname(__FILE__) . '/admin_footer.php'; //xoops_cp_footer(); Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/pings.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/pings.php 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/pings.php 2015-12-08 22:25:11 UTC (rev 13186) @@ -56,7 +56,7 @@ $last = array(); } else $last = array(); - $GLOBALS['xoopsTpl']->append('pings', array('id' => $ping->getVar('id'), 'type' => $ping->getVar('type'), 'uri' => $ping->getVar('uri'), 'last' => $last, "successes" => number_format($ping->getVar('successful-pings'), 0), "failures" => number_format($ping->getVar('failed-pings'), 0), 'success' => ($ping->getVar('success-time')!=0?date("Y-m-d H:i:s", $ping->getVar('success-time')):""), 'failed' => ($ping->getVar('failure-time')!=0?date("Y-m-d H:i:s", $ping->getVar('failure-time')):""), 'sleeptill' => ($ping->getVar('sleep-till')!=0?date("Y-m-d H:i:s", $ping->getVar('sleep-till')):""))); + $GLOBALS['xoopsTpl']->append('pings', array('id' => $ping->getVar('id'), 'type' => $ping->getVar('type'), 'uri' => $ping->getVar('uri'), 'last' => $last, "successes" => number_format($ping->getVar('successful-pings'), 0), "failures" => number_format($ping->getVar('failed-pings'), 0), 'success' => ($ping->getVar('success-time')!=0?date("Y-m-d H:i:s", $ping->getVar('success-time')):"---"), 'failed' => ($ping->getVar('failure-time')!=0?date("Y-m-d H:i:s", $ping->getVar('failure-time')):"---"), 'sleeptill' => ($ping->getVar('sleep-till')!=0?date("Y-m-d H:i:s", $ping->getVar('sleep-till')):"---"))); } $pagenav = new XoopsPageNav($total, $num, $start, 'start', "&num=$num"); Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/api/.htaccess =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/api/.htaccess 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/api/.htaccess 2015-12-08 22:25:11 UTC (rev 13186) @@ -1,2 +1,2 @@ RewriteEngine On -RewriteRule ^([0-9a-z]{32})$ index.php?referer=$1 [L] \ No newline at end of file +RewriteRule ^([0-9a-z]{32,44})$ index.php?referer=$1 [L] \ No newline at end of file Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/class/items.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/items.php 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/items.php 2015-12-08 22:25:11 UTC (rev 13186) @@ -103,7 +103,7 @@ $this->initVar('user-session', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('admin','user','guest','unknown')); $this->initVar('created', XOBJ_DTYPE_INT, 0, false); $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); - $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); + $this->initVar('offlined', XOBJ_DTYPE_INT, 0, false); } /** @@ -191,8 +191,8 @@ $items_sitemapsHandler->insert($itemsitemap, true); $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); - $criteria = new CriteriaCompo(new Criteria('type', 'XML-RPC')); - $criteria->add(new Criteria('offline', 0)); + $criteria = new CriteriaCompo(new Criteria('`type`', 'XML-RPC')); + $criteria->add(new Criteria('`offlined`', 0)); foreach($pingsHandler->getObjects($criteria, true) as $id => $ping) { $itemping = $items_pingsHandler->create(); Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php 2015-12-08 22:25:11 UTC (rev 13186) @@ -328,7 +328,7 @@ */ function __construct(&$db) { - parent::__construct($db, "itemtrax_items_sitemaps", 'PingtraxItems_sitemaps', 'id', 'map-referer'); + parent::__construct($db, "pingtrax_items_sitemaps", 'PingtraxItems_sitemaps', 'id', 'map-referer'); } @@ -353,7 +353,7 @@ $this->addTimeLimit(120); $criteria = new CriteriaCompo(new Criteria('checking', time(), "<=")); if (!empty($mapreferer)) - $criteria->add(new Criteria('map-referer', $mapreferer)); + $criteria->add(new Criteria('`map-referer`', $mapreferer)); foreach($this->getObjects($criteria, true) as $id => $item) { $start = microtime(true); Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php 2015-12-08 22:25:11 UTC (rev 13186) @@ -185,13 +185,13 @@ $this->addTimeLimit(120); $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); - $criteria = new CriteriaCompo(new Criteria('offlined', 0)); + $criteria = new CriteriaCompo(new Criteria('`offlined`', 0)); if (!empty($referer)) - $criteria->add(new Criteria('referer', $referer)); - $sleepcriteria = new CriteriaCompo(new Criteria('sleep-till', 0), 'OR'); - $sleepcriteria->add(new Criteria('sleep-till', time(), "<="), 'OR'); + $criteria->add(new Criteria('`referer`', $referer)); + $sleepcriteria = new CriteriaCompo(new Criteria('`sleep-till`', 0), 'OR'); + $sleepcriteria->add(new Criteria('`sleep-till`', time(), "<="), 'OR'); $criteria->add($sleepcriteria, 'AND'); - $criteria->add(new Criteria('type', 'XML-RPC'), 'AND'); + $criteria->add(new Criteria('`type`', 'XML-RPC'), 'AND'); foreach($this->getObjects($criteria, true) as $id => $ping) { $start = microtime(true); @@ -244,13 +244,13 @@ $this->addTimeLimit(120); $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); - $criteria = new CriteriaCompo(new Criteria('offlined', 0)); + $criteria = new CriteriaCompo(new Criteria('`offlined`', 0)); if (!empty($referer)) - $criteria->add(new Criteria('referer', $referer)); - $sleepcriteria = new CriteriaCompo(new Criteria('sleep-till', 0), 'OR'); - $sleepcriteria->add(new Criteria('sleep-till', time(), "<="), 'OR'); + $criteria->add(new Criteria('`referer`', $referer)); + $sleepcriteria = new CriteriaCompo(new Criteria('`sleep-till`', 0), 'OR'); + $sleepcriteria->add(new Criteria('`sleep-till`', time(), "<="), 'OR'); $criteria->add($sleepcriteria, 'AND'); - $criteria->add(new Criteria('type', 'SITEMAPS'), 'AND'); + $criteria->add(new Criteria('`type`', 'SITEMAPS'), 'AND'); foreach($this->getObjects($criteria, true) as $id => $ping) { $start = microtime(true); @@ -286,8 +286,8 @@ */ function getCountPinglists() { - $criteria = new CriteriaCompo(new Criteria('offlined', 0)); - $criteria->add(new Criteria('type', 'XML-RPC')); + $criteria = new CriteriaCompo(new Criteria('`offlined`', 0)); + $criteria->add(new Criteria('`type`', 'XML-RPC')); return $this->getCount($criteria); } @@ -308,7 +308,7 @@ { $sql = "SELECT sum(`successful-pings`) as `Successes` FROM `" . $this->db->prefix($this->table) . "` WHERE `offlined` = 0"; list($sum) = $this->db->fetchRow($this->db->queryF($sql)); - return $sum; + return (empty($sum)?'0':$sum); } /** @@ -318,7 +318,7 @@ { $sql = "SELECT sum(`failed-pings`) as `Failures` FROM `" . $this->db->prefix($this->table) . "` WHERE `offlined` = 0"; list($sum) = $this->db->fetchRow($this->db->queryF($sql)); - return $sum; + return (empty($sum)?'0':$sum); } /** @@ -331,7 +331,7 @@ { $sql = "SELECT `success-time` FROM `" . $this->db->prefix($this->table) . "` WHERE `offlined` = 0 ORDER BY `success-time` DESC LIMIT 1"; list($date) = $this->db->fetchRow($this->db->queryF($sql)); - return ($date!=0?date($format, $date):""); + return ($date!=0?date($format, $date):"---"); } /** @@ -344,6 +344,6 @@ { $sql = "SELECT `failure-time` FROM `" . $this->db->prefix($this->table) . "` WHERE `offlined` = 0 ORDER BY `failure-time` DESC LIMIT 1"; list($date) = $this->db->fetchRow($this->db->queryF($sql)); - return ($date!=0?date($format, $date):""); + return ($date!=0?date($format, $date):"---"); } } Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/class/sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/sitemaps.php 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/sitemaps.php 2015-12-08 22:25:11 UTC (rev 13186) @@ -76,7 +76,7 @@ $this->initVar('written', XOBJ_DTYPE_INT, 0, false); $this->initVar('created', XOBJ_DTYPE_INT, 0, false); $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); - $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); + $this->initVar('offlined', XOBJ_DTYPE_INT, 0, false); } } @@ -133,17 +133,17 @@ $items_sitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); - $criteria = new CriteriaCompo(new Criteria('offline', 0)); + $criteria = new CriteriaCompo(new Criteria('`offlined`', 0)); if (!empty($referer)) - $criteria->add(new Criteria('referer', $referer)); - $sleepcriteria = new CriteriaCompo(new Criteria('sleep-till', 0), 'OR'); - $sleepcriteria->add(new Criteria('sleep-till', time(), "<="), 'OR'); + $criteria->add(new Criteria('`referer`', $referer)); + $sleepcriteria = new CriteriaCompo(new Criteria('`sleep-till`', 0), 'OR'); + $sleepcriteria->add(new Criteria('`sleep-till`', time(), "<="), 'OR'); $criteria->add($sleepcriteria, 'AND'); foreach($this->getObjects($criteria, true) as $id => $sitemap) { $write = false; $start = microtime(true); - $criteria = new CriteriaCompo(new Criteria('map-referer', $sitemap->getVar('referer'))); + $criteria = new CriteriaCompo(new Criteria('`map-referer`', $sitemap->getVar('referer'))); if ($items_sitemapsHandler->getCount($criteria)>$sitemap->getVar('items')) $write = true; $criteria = new Criteria('changed', $sitemap->getVar('written'), ">="); @@ -153,7 +153,7 @@ { $sitemap->setVar('written', time()); $sitemapTpl = new XoopsTpl(); - $criteria = new CriteriaCompo(new Criteria('map-referer', $sitemap->getVar('referer'))); + $criteria = new CriteriaCompo(new Criteria('`map-referer`', $sitemap->getVar('referer'))); $criteria->setOrder('`priority`, `chanaged`'); $criteria->setSort('ASC'); foreach($items_sitemapsHandler->getObjects($criteria, true) as $id => $item_sitemap) Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/admin.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/admin.php 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/admin.php 2015-12-08 22:25:11 UTC (rev 13186) @@ -20,6 +20,7 @@ * @since 1.0.1 */ +// Pings define('_AM_PINGTRAX_PING_ID',"Identity"); define('_AM_PINGTRAX_PING_TYPE',"Type"); define('_AM_PINGTRAX_PING_URI',"URI/URL"); @@ -42,9 +43,27 @@ define('_AM_PINGTRAX_PING_ADD_SUCCESSFUL', 'Adding Pinglist/Sitemap was successful!'); define('_AM_PINGTRAX_PING_ADD_FAILED', 'Adding Pinglist/Sitemap failed!'); +// Items define('_AM_PINGTRAX_ITEMS_FILTER', 'Filter by Sitemap: '); define('_AM_PINGTRAX_ITEMS_FILTER_NONE', 'Display All Domain\'s Items'); +define('_AM_PINGTRAX_ITEMS_H1', 'Items in Sitemap Designations'); +define('_AM_PINGTRAX_ITEMS_ID', 'Identity'); +define('_AM_PINGTRAX_ITEMS_MODULE_DIRNAME', 'Module'); +define('_AM_PINGTRAX_ITEMS_MODULE_CLASS', 'Class'); +define('_AM_PINGTRAX_ITEMS_ITEM_ID', 'Item ID'); +define('_AM_PINGTRAX_ITEMS_CAT_ID', 'Catelogue ID'); +define('_AM_PINGTRAX_ITEMS_AUTHOR', 'Author'); +define('_AM_PINGTRAX_ITEMS_TITLE', 'Item TITLE'); +define('_AM_PINGTRAX_ITEMS_REFERERURI', 'Referer URI'); +define('_AM_PINGTRAX_ITEMS_DISCOVERY', 'Method'); +define('_AM_PINGTRAX_ITEMS_SESSIONING', 'Sessioning'); +define('_AM_PINGTRAX_ITEMS_CHILDREN', 'Trackbacks'); +define('_AM_PINGTRAX_ITEMS_FREQUENCY', 'Frequency'); +define('_AM_PINGTRAX_ITEMS_PRIORITY', 'Priority'); +define('_AM_PINGTRAX_ITEMS_CHECKING', 'Checking Next'); +define('_AM_PINGTRAX_ITEMS_CHANGED', 'Changed Last'); + // Dashboard define('_AM_PINGTRAX_STATISTICS', 'PingTrax Statistics'); define('_AM_PINGTRAX_STATISTICS_PINGLISTS', 'Total Pinglist RPC\'s: %s'); Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/modinfo.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/modinfo.php 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/modinfo.php 2015-12-08 22:25:11 UTC (rev 13186) @@ -50,4 +50,5 @@ // Admin Menus define('_MI_PINGTRAX_DASHBOARD', 'PingTrax Dashboard'); define('_MI_PINGTRAX_PINGS', 'Pinglist\'s/Sitemap\'s'); +define('_MI_PINGTRAX_ITEMS', 'Discovered Item\'s'); define('_MI_PINGTRAX_ABOUT', 'About PingTrax'); \ No newline at end of file Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/trackback.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/trackback.php 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/trackback.php 2015-12-08 22:25:11 UTC (rev 13186) @@ -39,7 +39,7 @@ if (is_a($pingtraxitem, "PingtraxItems")) { $trackback = new PingtraxTrackback($pingtraxitem->getVar('item-title'), $pingtraxitem->getVar('item-author-name'), 'UTF-8'); - echo $trackback->rdf_autodiscover(RFC822_from_datetime($pingtraxitem->getVar('created')), $pingtraxitem->getVar('item-title'), $pingtraxitem->getVar('item-description'), $pingtraxitem->getVar('item-protocol').$pingtraxitem->getVar('item-domain').$pingtraxitem->getVar('item-referer-uri'), XOOPS_URL . '/modules/pingtrax/api/' . $pingtraxitem->getVar('referer'), $pingtraxitem->getVar('item-author-name')); + echo $trackback->rdf_autodiscover($trackback->RFC822_from_datetime($pingtraxitem->getVar('created')), $pingtraxitem->getVar('item-title'), $pingtraxitem->getVar('item-description'), $pingtraxitem->getVar('item-protocol').$pingtraxitem->getVar('item-domain').$pingtraxitem->getVar('item-referer-uri'), XOOPS_URL . '/modules/pingtrax/api/' . $pingtraxitem->getVar('referer'), $pingtraxitem->getVar('item-author-name')); } } Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/items.html =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/items.html 2015-12-08 21:31:59 UTC (rev 13185) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/items.html 2015-12-08 22:25:11 UTC (rev 13186) @@ -5,9 +5,9 @@ <div style="float:right; width: auto; margin-right: 30px;"> <label for="filter-items" style="font-size: 188%; font-weight: 600;"><{$smarty.const._AM_PINGTRAX_ITEMS_FILTER}></label> <select id="filter-items" style="font-size: 188%; font-weight: 900;"> - <option value="<{$xoops_url}><{$smarty.server.php_self}>?start=0&num=<{$num}>&protocol=&domain="<{if $protocol == '' && $domain == ''}> selected<{/if}>><{$smarty.const._AM_PINGTRAX_ITEMS_FILTER_NONE}></option> + <option value="<{$phpself}>?start=0&num=<{$num}>&protocol=&domain="<{if $protocol == '' && $domain == ''}> selected<{/if}>><{$smarty.const._AM_PINGTRAX_ITEMS_FILTER_NONE}></option> <{foreach item=item from=$filter}> - <option value="<{$xoops_url}><{$smarty.server.php_self}>?start=0&num=<{$num}>&protocol=<{$item.protocol}>&domain=<{$item.domain}>"<{if $protocol == $item.protocol && $domain == $item.domain}> selected<{/if}>><{$item.filename}></option> + <option value="<{$phpself}>?start=0&num=<{$num}>&protocol=<{$item.protocol}>&domain=<{$item.domain}>"<{if $protocol == $item.protocol && $domain == $item.domain}> selected<{/if}>><{$item.filename}></option> <{/foreach}> </select> </div> |
From: <wis...@us...> - 2015-12-08 21:32:02
|
Revision: 13185 http://sourceforge.net/p/xoops/svn/13185 Author: wishcraft Date: 2015-12-08 21:31:59 +0000 (Tue, 08 Dec 2015) Log Message: ----------- Ping Trax 1.02 Alpha -- Almost Finished\!\! Modified Paths: -------------- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin.php XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_header.php XoopsModules/pingtrax/trunk/modules/pingtrax/admin/menu.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/modinfo.php XoopsModules/pingtrax/trunk/modules/pingtrax/sql/mysql.sql XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php Added Paths: ----------- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/items.php XoopsModules/pingtrax/trunk/modules/pingtrax/admin/pings.php XoopsModules/pingtrax/trunk/modules/pingtrax/images/add.png XoopsModules/pingtrax/trunk/modules/pingtrax/images/copy.png XoopsModules/pingtrax/trunk/modules/pingtrax/images/delete.png XoopsModules/pingtrax/trunk/modules/pingtrax/images/edit.png XoopsModules/pingtrax/trunk/modules/pingtrax/include/install.php XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/admin.php XoopsModules/pingtrax/trunk/modules/pingtrax/plugins/xcenter.php XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/items.html XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/pings.html XoopsModules/pingtrax/trunk/modules/pingtrax/xoops.org.news.article.txt Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin.php 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -23,8 +23,24 @@ include_once dirname(__FILE__) . '/admin_header.php'; xoops_cp_header(); + +$pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $indexAdmin = new ModuleAdmin(); +$indexAdmin->addInfoBox(_AM_PINGTRAX_STATISTICS); + +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGLISTS."</label>", $pingsHandler->getCountPinglists(), 'Green'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_SITEMAPS."</label>", $pingsHandler->getCountSitemaps(), 'Green'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGSUCCESS."</label>", $pingsHandler->getSumSuccessful(), 'Green'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGFAILURES."</label>", $pingsHandler->getSumFailures(), 'Green'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGLASTSUCCESS."</label>", $pingsHandler->getLastSuccessDate('Y-m-d H:i:s'), 'Purple'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_PINGLASTFAILED."</label>", $pingsHandler->getLastFailedDate('Y-m-d H:i:s'), 'Red'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_URISADMIN."</label>", $itemsHandler->getCount(new Criteria('user-session', 'admin')), 'Blue'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_URISUSERS."</label>", $itemsHandler->getCount(new Criteria('user-session', 'user')), 'Blue'); +$indexAdmin->addInfoBoxLine(_AM_PINGTRAX_STATISTICS, "<label>"._AM_PINGTRAX_STATISTICS_URISGUEST."</label>", $itemsHandler->getCount(new Criteria('user-session', 'guest')), 'Blue'); + echo $indexAdmin->addNavigation('admin.php'); echo $indexAdmin->renderIndex(); Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_header.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_header.php 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_header.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -25,6 +25,7 @@ include_once $path . '/mainfile.php'; include_once $path . '/include/cp_functions.php'; require_once $path . '/include/cp_header.php'; +require_once $path . '/class/pagenav.php'; global $xoopsModule; Added: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/items.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/items.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/items.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -0,0 +1,109 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + +xoops_load('PageNav'); +xoops_load('XoopsFormLoader'); + +$indexAdmin = new ModuleAdmin(); +echo $indexAdmin->addNavigation('pings.php'); + +$start = !isset($_REQUEST['start'])?0:(integer)$_REQUEST['start']; +$num = !isset($_REQUEST['num'])?30:(integer)$_REQUEST['num']; +$id = !isset($_REQUEST['id'])?0:(integer)$_REQUEST['id']; +$op = !isset($_REQUEST['op'])?'default':(string)$_REQUEST['op']; + +$pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + +switch ($op) +{ + default: + $criteria = new Criteria('offlined', 0); + $total = $pingsHandler->getCount($criteria); + $criteria->setStart($start); + $criteria->setLimit($num); + + foreach($pingsHandler->getObjects($criteria, true) as $id => $ping) + { + if ($ping->getVar('last-item-referer')!='') + { + $item = $itemsHandler->getByReferer($ping->getVar('last-item-referer')); + if (is_object($item)) + $last = array('uri'=>$item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri'), 'title' => $item->getVar('item-title')); + else + $last = array(); + } else + $last = array(); + $GLOBALS['xoopsTpl']->append('pings', array('id' => $ping->getVar('id'), 'type' => $ping->getVar('type'), 'uri' => $ping->getVar('uri'), 'last' => $last, "successes" => number_format($ping->getVar('successful-pings'), 0), "failures" => number_format($ping->getVar('failed-pings'), 0), 'success' => ($ping->getVar('success-time')!=0?date("Y-m-d H:i:s", $ping->getVar('success-time')):""), 'failed' => ($ping->getVar('failure-time')!=0?date("Y-m-d H:i:s", $ping->getVar('failure-time')):""), 'sleeptill' => ($ping->getVar('sleep-till')!=0?date("Y-m-d H:i:s", $ping->getVar('sleep-till')):""))); + } + + $pagenav = new XoopsPageNav($total, $num, $start, 'start', "&num=$num"); + $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(5)); + $GLOBALS['xoopsTpl']->assign('start', $start); + $GLOBALS['xoopsTpl']->assign('num', $num); + + $form = new XoopsThemeForm(_AM_PINGTRAX_PING_ADD, 'add-pinglist', $_SERVER['PHP_SELF']."?op=add&start=$start&num=&num"); + $form->addElement(new XoopsFormText(_AM_PINGTRAX_PING_URI, 'uri', 50, 250)); + $type = new XoopsFormSelect(_AM_PINGTRAX_PING_TYPE, 'type'); + $type->addOption('XML-RPC', 'XML-RPC'); + $type->addOption('SITEMAPS', 'SITEMAPS'); + $form->addElement($type); + $form->addElement(new XoopsFormButton(_SUBMIT, 'submit', _SUBMIT)); + $GLOBALS['xoopsTpl']->assign('addform', $form->render()); + $GLOBALS['xoopsTpl']->display($GLOBALS['xoops']->path('/modules/pingtrax/templates/admin/pings.html')); + break; + case "add": + if (!empty($_POST['uri']) && !empty($_POST['type'])) + { + $ping = $pingsHandler->create(); + $ping->setVar('uri', $_POST['uri']); + $ping->setVar('type', $_POST['type']); + if($pingsHandler->insert($ping)) + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_ADD_SUCCESSFUL); + } + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_ADD_FAILED); + exit(0); + case "edit": + foreach($_POST['uri'] as $id=> $uri) + { + $ping = $pingsHandler->get($id); + $ping->setVar('uri', $uri); + $ping->setVar('type', $_POST['type'][$id]); + $pingsHandler->insert($ping); + } + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_EDIT_COMPLETE); + exit(0); + case "delete": + $ping = $pingsHandler->get($id); + if (is_a($ping, "PingtraxPings")) + if ($pingsHandler->delete($ping)) + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_DELETE_SUCCESS); + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_DELETE_FAILED); + exit(0); + break; +} + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/menu.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/menu.php 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/menu.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -41,10 +41,18 @@ $adminmenu = array(); $i = 1; -$adminmenu[$i]['title'] = _PM_MI_INDEX; +$adminmenu[$i]['title'] = _MI_PINGTRAX_DASHBOARD; $adminmenu[$i]['link'] = "admin/admin.php"; $adminmenu[$i]['icon'] = $pathIcon32.'/home.png' ; ++$i; -$adminmenu[$i]['title'] = _PM_MI_ABOUT; +$adminmenu[$i]['title'] = _MI_PINGTRAX_PINGS; +$adminmenu[$i]['link'] = 'admin/pings.php'; +$adminmenu[$i]['icon'] = $pathIcon32.'/globe.png'; +++$i; +$adminmenu[$i]['title'] = _MI_PINGTRAX_ITEMS; +$adminmenu[$i]['link'] = 'admin/items.php'; +$adminmenu[$i]['icon'] = $pathIcon32.'/playlist.png'; +++$i; +$adminmenu[$i]['title'] = _MI_PINGTRAX_ABOUT; $adminmenu[$i]['link'] = 'admin/about.php'; $adminmenu[$i]['icon'] = $pathIcon32.'/about.png'; Added: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/pings.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/pings.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/pings.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -0,0 +1,109 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + +xoops_load('PageNav'); +xoops_load('XoopsFormLoader'); + +$indexAdmin = new ModuleAdmin(); +echo $indexAdmin->addNavigation('pings.php'); + +$start = !isset($_REQUEST['start'])?0:(integer)$_REQUEST['start']; +$num = !isset($_REQUEST['num'])?30:(integer)$_REQUEST['num']; +$id = !isset($_REQUEST['id'])?0:(integer)$_REQUEST['id']; +$op = !isset($_REQUEST['op'])?'default':(string)$_REQUEST['op']; + +$pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + +switch ($op) +{ + default: + $criteria = new Criteria('offlined', 0); + $total = $pingsHandler->getCount($criteria); + $criteria->setStart($start); + $criteria->setLimit($num); + + foreach($pingsHandler->getObjects($criteria, true) as $id => $ping) + { + if ($ping->getVar('last-item-referer')!='') + { + $item = $itemsHandler->getByReferer($ping->getVar('last-item-referer')); + if (is_object($item)) + $last = array('uri'=>$item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri'), 'title' => $item->getVar('item-title')); + else + $last = array(); + } else + $last = array(); + $GLOBALS['xoopsTpl']->append('pings', array('id' => $ping->getVar('id'), 'type' => $ping->getVar('type'), 'uri' => $ping->getVar('uri'), 'last' => $last, "successes" => number_format($ping->getVar('successful-pings'), 0), "failures" => number_format($ping->getVar('failed-pings'), 0), 'success' => ($ping->getVar('success-time')!=0?date("Y-m-d H:i:s", $ping->getVar('success-time')):""), 'failed' => ($ping->getVar('failure-time')!=0?date("Y-m-d H:i:s", $ping->getVar('failure-time')):""), 'sleeptill' => ($ping->getVar('sleep-till')!=0?date("Y-m-d H:i:s", $ping->getVar('sleep-till')):""))); + } + + $pagenav = new XoopsPageNav($total, $num, $start, 'start', "&num=$num"); + $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(5)); + $GLOBALS['xoopsTpl']->assign('start', $start); + $GLOBALS['xoopsTpl']->assign('num', $num); + + $form = new XoopsThemeForm(_AM_PINGTRAX_PING_ADD, 'add-pinglist', $_SERVER['PHP_SELF']."?op=add&start=$start&num=&num"); + $form->addElement(new XoopsFormText(_AM_PINGTRAX_PING_URI, 'uri', 50, 250)); + $type = new XoopsFormSelect(_AM_PINGTRAX_PING_TYPE, 'type'); + $type->addOption('XML-RPC', 'XML-RPC'); + $type->addOption('SITEMAPS', 'SITEMAPS'); + $form->addElement($type); + $form->addElement(new XoopsFormButton(_SUBMIT, 'submit', _SUBMIT)); + $GLOBALS['xoopsTpl']->assign('addform', $form->render()); + $GLOBALS['xoopsTpl']->display($GLOBALS['xoops']->path('/modules/pingtrax/templates/admin/pings.html')); + break; + case "add": + if (!empty($_POST['uri']) && !empty($_POST['type'])) + { + $ping = $pingsHandler->create(); + $ping->setVar('uri', $_POST['uri']); + $ping->setVar('type', $_POST['type']); + if($pingsHandler->insert($ping)) + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_ADD_SUCCESSFUL); + } + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_ADD_FAILED); + exit(0); + case "edit": + foreach($_POST['uri'] as $id=> $uri) + { + $ping = $pingsHandler->get($id); + $ping->setVar('uri', $uri); + $ping->setVar('type', $_POST['type'][$id]); + $pingsHandler->insert($ping); + } + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_EDIT_COMPLETE); + exit(0); + case "delete": + $ping = $pingsHandler->get($id); + if (is_a($ping, "PingtraxPings")) + if ($pingsHandler->delete($ping)) + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_DELETE_SUCCESS); + redirect_header($_SERVER["PHP_SELF"]."?start=$start&num=$num", 7, _AM_PINGTRAX_PING_DELETE_FAILED); + exit(0); + break; +} + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -51,7 +51,7 @@ class PingtraxPings extends XoopsObject { /** - * + * Constructor */ function __construct() { @@ -68,13 +68,14 @@ $this->initVar('failure-time', XOBJ_DTYPE_INT, 0, false); $this->initVar('created', XOBJ_DTYPE_INT, 0, false); $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); - $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); + $this->initVar('offlined', XOBJ_DTYPE_INT, 0, false); } /** + * Gets Pinglist Item URL * * @param PingtraxItems $item - * @return mixed + * @return string */ function getPingURL(PingtraxItems $item) { @@ -85,10 +86,12 @@ $uri = str_replace(urlencode($item->getVar('feed-protocol').$item->getVar('feed-domain').$item->getVar('feed-referer-uri')), '%feed', $uri); return $uri; } + /** - * + * Gets Pinglist Sitemap URL + * * @param PingtraxItems $item - * @return mixed + * @return string */ function getSitemapURL(PingtraxSitemaps $sitemap) { @@ -116,6 +119,8 @@ var $_resource = "https://sourceforge.net/p/xoops/svn/HEAD/tree/XoopsModules/pingtrax/data/ping-resources.json?format=raw"; /** + * Constructor + * * @param null|object $db */ function __construct(&$db) @@ -141,6 +146,24 @@ } } + /** + * Set's Offline Tag to Delete Record + * + * {@inheritDoc} + * @see XoopsPersistableObjectHandler::delete() + */ + function delete($object = NULL) + { + $object->setVar('offlined', time()); + return $this->insert($object, true)>0?true:false; + } + + /** + * Insert a Record + * + * {@inheritDoc} + * @see XoopsPersistableObjectHandler::insert() + */ function insert($object = NULL, $force = true) { if ($object->isNew()) @@ -152,13 +175,17 @@ return parent::insert($object, $force); } - + /** + * Makes Pings for Pinglists + * + * @param string $referer + */ function makePings($referer = '') { $this->addTimeLimit(120); $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); - $criteria = new CriteriaCompo(new Criteria('offline', 0)); + $criteria = new CriteriaCompo(new Criteria('offlined', 0)); if (!empty($referer)) $criteria->add(new Criteria('referer', $referer)); $sleepcriteria = new CriteriaCompo(new Criteria('sleep-till', 0), 'OR'); @@ -207,13 +234,17 @@ } } - + /** + * sends Sitemap to Pinglist supporting sitemap + * + * @param PingtraxSitemaps $sitemap + */ function sendSitemap(PingtraxSitemaps $sitemap) { $this->addTimeLimit(120); $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); - $criteria = new CriteriaCompo(new Criteria('offline', 0)); + $criteria = new CriteriaCompo(new Criteria('offlined', 0)); if (!empty($referer)) $criteria->add(new Criteria('referer', $referer)); $sleepcriteria = new CriteriaCompo(new Criteria('sleep-till', 0), 'OR'); @@ -249,4 +280,70 @@ $this->insert($ping, true); } } + + /** + * Gets number of Pinglist's + */ + function getCountPinglists() + { + $criteria = new CriteriaCompo(new Criteria('offlined', 0)); + $criteria->add(new Criteria('type', 'XML-RPC')); + return $this->getCount($criteria); + } + + /** + * Gets number of Sitemaps + */ + function getCountSitemaps() + { + $criteria = new CriteriaCompo(new Criteria('offlined', 0)); + $criteria->add(new Criteria('type', 'SITEMAPS')); + return $this->getCount($criteria); + } + + /** + * Gets Sum of Successes of Pinglist/Sitemaps + */ + function getSumSuccessful() + { + $sql = "SELECT sum(`successful-pings`) as `Successes` FROM `" . $this->db->prefix($this->table) . "` WHERE `offlined` = 0"; + list($sum) = $this->db->fetchRow($this->db->queryF($sql)); + return $sum; + } + + /** + * Gets Sum of Failures of Pinglist/Sitemaps + */ + function getSumFailures() + { + $sql = "SELECT sum(`failed-pings`) as `Failures` FROM `" . $this->db->prefix($this->table) . "` WHERE `offlined` = 0"; + list($sum) = $this->db->fetchRow($this->db->queryF($sql)); + return $sum; + } + + /** + * Gets Last Date Ping/Sitemap was Successful + * + * @param string $format + * @return string + */ + function getLastSuccessDate($format = 'Y-m-d H:i:s') + { + $sql = "SELECT `success-time` FROM `" . $this->db->prefix($this->table) . "` WHERE `offlined` = 0 ORDER BY `success-time` DESC LIMIT 1"; + list($date) = $this->db->fetchRow($this->db->queryF($sql)); + return ($date!=0?date($format, $date):""); + } + + /** + * Gets Last Date Ping/Sitemap Failed + * + * @param string $format + * @return string + */ + function getLastFailedDate($format = 'Y-m-d H:i:s') + { + $sql = "SELECT `failure-time` FROM `" . $this->db->prefix($this->table) . "` WHERE `offlined` = 0 ORDER BY `failure-time` DESC LIMIT 1"; + list($date) = $this->db->fetchRow($this->db->queryF($sql)); + return ($date!=0?date($format, $date):""); + } } Added: XoopsModules/pingtrax/trunk/modules/pingtrax/images/add.png =================================================================== (Binary files differ) Index: XoopsModules/pingtrax/trunk/modules/pingtrax/images/add.png =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/images/add.png 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/images/add.png 2015-12-08 21:31:59 UTC (rev 13185) Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/images/add.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/images/copy.png =================================================================== (Binary files differ) Index: XoopsModules/pingtrax/trunk/modules/pingtrax/images/copy.png =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/images/copy.png 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/images/copy.png 2015-12-08 21:31:59 UTC (rev 13185) Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/images/copy.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/images/delete.png =================================================================== (Binary files differ) Index: XoopsModules/pingtrax/trunk/modules/pingtrax/images/delete.png =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/images/delete.png 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/images/delete.png 2015-12-08 21:31:59 UTC (rev 13185) Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/images/delete.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/images/edit.png =================================================================== (Binary files differ) Index: XoopsModules/pingtrax/trunk/modules/pingtrax/images/edit.png =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/images/edit.png 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/images/edit.png 2015-12-08 21:31:59 UTC (rev 13185) Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/images/edit.png ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/include/install.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/include/install.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/include/install.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -0,0 +1,43 @@ +<?php +/** + * Extended User Profile + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ + * @license GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) + * @package profile + * @since 2.3.0 + * @author Jan Pedersen + * @author Taiwen Jiang <ph...@us...> + * @version $Id: install.php 12360 2014-03-08 09:46:59Z beckmi $ + */ + +function xoops_module_install_pingtrax($module) +{ + global $module_id; + $module_id = $module->getVar('mid'); + xoops_loadLanguage('user'); + + $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); + $data = json_decode(file_get_contents($pingsHandler->_resource), true); + foreach($data as $referer => $values) + { + if (!$pingsHandler->getCount(new Criteria('uri', $values['uri']))) + { + $obj = $pingsHandler->create(true); + $obj->setVar('referer', $referer); + $obj->setVar('type', $values['type']); + $obj->setVar('uri', $values['uri']); + $pingsHandler->insert($obj); + } + } + + return true; +} + Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/include/install.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/admin.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/admin.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/admin.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -0,0 +1,59 @@ +<?php +/** + * PingTrax Module Global Constants + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +define('_AM_PINGTRAX_PING_ID',"Identity"); +define('_AM_PINGTRAX_PING_TYPE',"Type"); +define('_AM_PINGTRAX_PING_URI',"URI/URL"); +define('_AM_PINGTRAX_PING_LAST',"Last Item"); +define('_AM_PINGTRAX_PING_SUCCESSES',"Successes"); +define('_AM_PINGTRAX_PING_FAILURES', 'Failures'); +define('_AM_PINGTRAX_PING_SUCCESS', 'Success'); +define('_AM_PINGTRAX_PING_FAILED', 'Failed'); +define('_AM_PINGTRAX_PING_SLEEPTILL', 'Sleeping Till'); +define('_AM_PINGTRAX_PING_ACTIONS', 'Actions'); +define('_AM_PINGTRAX_PING_DELETE', 'Delete'); +define('_AM_PINGTRAX_PING_DELETE_ALT', 'Delete this PingList/Sitemap Item'); +define('_AM_PINGTRAX_PING_DELETE_SUCCESS', 'Deletion of this PingList/Sitemap Item was successful!'); +define('_AM_PINGTRAX_PING_DELETE_FAILED', 'Deletion of this PingList/Sitemap Item failed!'); +define("_AM_PINGTRAX_PING_EDIT_COMPLETE", 'Edit of these Pinglists and Sitemaps is complete!'); +define('_AM_PINGTRAX_PING_ADD', 'Add Pinglist/Sitemap'); +define('_AM_PINGTRAX_PING_EDIT_H1', 'Edit Pinglist\'s and Sitemaps'); +define('_AM_PINGTRAX_PING_ADD_H1', 'Add Pinglist/Sitemap'); +define('_AM_PINGTRAX_PING_ADD_P', 'Fill out the details in the form and submit to create a pinglist!'); +define('_AM_PINGTRAX_PING_ADD_SUCCESSFUL', 'Adding Pinglist/Sitemap was successful!'); +define('_AM_PINGTRAX_PING_ADD_FAILED', 'Adding Pinglist/Sitemap failed!'); + +define('_AM_PINGTRAX_ITEMS_FILTER', 'Filter by Sitemap: '); +define('_AM_PINGTRAX_ITEMS_FILTER_NONE', 'Display All Domain\'s Items'); + +// Dashboard +define('_AM_PINGTRAX_STATISTICS', 'PingTrax Statistics'); +define('_AM_PINGTRAX_STATISTICS_PINGLISTS', 'Total Pinglist RPC\'s: %s'); +define('_AM_PINGTRAX_STATISTICS_SITEMAPS', 'Total Pinglist Sitemaps: %s'); +define('_AM_PINGTRAX_STATISTICS_PINGSUCCESS', 'Pinglist Successes: %s'); +define('_AM_PINGTRAX_STATISTICS_PINGFAILURES', 'Pinglist Failures: %s'); +define('_AM_PINGTRAX_STATISTICS_PINGLASTSUCCESS', 'Pinglist last succeeded: %s'); +define('_AM_PINGTRAX_STATISTICS_PINGLASTFAILED', 'Pinglist last failed: %s'); +define('_AM_PINGTRAX_STATISTICS_URISADMIN', 'URI/URL\'s that are Admin Accessable: %s'); +define('_AM_PINGTRAX_STATISTICS_URISUSERS', 'URI/URL\'s that are User Accessable: %s'); +define('_AM_PINGTRAX_STATISTICS_URISGUEST', 'URI/URL\'s that are Guest Accessable: %s'); + \ No newline at end of file Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/modinfo.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/modinfo.php 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/modinfo.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -46,4 +46,8 @@ define('_MI_PINGTRAX_TIME_14HR', '14 Hours'); define('_MI_PINGTRAX_TIME_16HR', '16 Hours'); define('_MI_PINGTRAX_TIME_24HR', '24 Hours'); - \ No newline at end of file + +// Admin Menus +define('_MI_PINGTRAX_DASHBOARD', 'PingTrax Dashboard'); +define('_MI_PINGTRAX_PINGS', 'Pinglist\'s/Sitemap\'s'); +define('_MI_PINGTRAX_ABOUT', 'About PingTrax'); \ No newline at end of file Added: XoopsModules/pingtrax/trunk/modules/pingtrax/plugins/xcenter.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/plugins/xcenter.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/plugins/xcenter.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -0,0 +1,169 @@ +<?php +/** + * PingTrax XCenter Plugin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +/*** + * EXAMPLE PLUGIN FOR XCENTER FOR PINGTRAX + * + * You can use this example to make other plugins for example newbb or Xforum! + * + */ + +defined('XOOPS_ROOT_PATH') || die('XOOPS root path not defined'); + +/** + * Class PingtraxPluginsXcenter + */ +class PingtraxPluginsXcenter extends PingtraxPlugins +{ + + + /** + * + */ + function getModuleDirname() + { + return 'xcenter'; + } + + /** + * + */ + function getModuleClass() + { + return 'xcenter'; + } + + /** + * + */ + function getModuleItemID() + { + return (isset($_REQUEST['storyid'])?(integer)$_REQUEST['storyid']:(isset($_REQUEST['id'])?$_REQUEST['id']:0));; + } + + + /** + * + */ + function getItemCategoryID() + { + return (isset($_REQUEST['catid'])?(integer)$_REQUEST['catid']:(isset($_REQUEST['catelogueid'])?$_REQUEST['catelogueid']:0));; + } + + + /** + * + */ + function getItemTitle() + { + $objectHandler = xoops_getmodulehandler($this->getModuleClass(), $this->getModuleDirname()); + $object = $objectHandler->getContent($this->getModuleItemID(), $GLOBALS['xoopsConfig']['language']); + if (is_object($object['text'])) + { + if ($object['text']->getVar('ptitle')!='') + return $object['text']->getVar('ptitle'); + return $object['text']->getVar('title'); + } + return parent::getItemTitle(); + } + + + /** + * + */ + function getItemDescription() + { + $objectHandler = xoops_getmodulehandler($this->getModuleClass(), $this->getModuleDirname()); + $object = $objectHandler->getContent($this->getModuleItemID(), $GLOBALS['xoopsConfig']['language']); + if (is_object($object['text'])) + { + if ($object['text']->getVar('page_description')!='') + return $object['text']->getVar('page_description'); + } + return parent::getItemDescription(); + } + + /** + * + */ + function getItemAuthorUID() + { + $objectHandler = xoops_getmodulehandler($this->getModuleClass(), $this->getModuleDirname()); + $object = $objectHandler->getContent($this->getModuleItemID(), $GLOBALS['xoopsConfig']['language']); + if (is_object($object['xcenter'])) + { + if ($object['xcenter']->getVar('uid')!=0) + return $object['xcenter']->getVar('uid'); + } + return parent::getItemAuthorUID(); + } + + /** + * + */ + function getItemAuthorName() + { + switch ($this->getModulePHPSelf()) + { + default: + if ($this->getItemAuthorUID()>0) + { + $userHandler = xoops_gethandler('user'); + $user = $userHandler->get($this->getItemAuthorUID()); + if (is_a($user, "XoopsUser")) + { + if (trim($user->getVar('name'))!='') + return trim($user->getVar('name')); + else + return trim($user->getVar('uname')); + } + } + } + return $GLOBALS["xoopsConfig"]['sitename']; + } + + + /** + * + */ + function getFeedProtocol() + { + return XOOPS_PROT; + } + + /** + * + */ + function getFeedDomain() + { + return parse_url(strtolower(XOOPS_URL), PHP_URL_HOST); + } + + /** + * + */ + function getFeedRefererURI() + { + return "/modules/xcenter/rss.php?catid=".$this->getItemCategoryID(); + } +} Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/sql/mysql.sql =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/sql/mysql.sql 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/sql/mysql.sql 2015-12-08 21:31:59 UTC (rev 13185) @@ -1,7 +1,7 @@ CREATE TABLE `pingtrax_items` ( `id` mediumint(20) NOT NULL AUTO_INCREMENT, - `parent-id` mediumint(20) NOT NULL DEFAULT '0' + `parent-id` mediumint(20) NOT NULL DEFAULT '0', `referer` varchar(44) NOT NULL DEFAULT '', `type` enum('local','remote','unknown') NOT NULL DEFAULT 'unknown', `module-dirname` varchar(30) NOT NULL DEFAULT '', @@ -106,7 +106,7 @@ PRIMARY KEY (`id`,`referer`,`type`,`uri`), KEY `SEARCH` (`referer`,`type`,`uri`,`last-item-referer`,`successful-pings`,`failed-pings`,`id`) USING BTREE, KEY `CHRONOLOGISTICS` (`id`,`referer`,`created`,`updated`,`offlined`,`failure-time`,`success-time`,`sleep-till`) USING BTREE KEY_BLOCK_SIZE=128 -) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; +) ENGINE=InnoDB AUTO_INCREMENT=1024 DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; CREATE TABLE `pingtrax_sitemaps` ( `id` int(10) NOT NULL AUTO_INCREMENT, Added: XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/items.html =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/items.html (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/items.html 2015-12-08 21:31:59 UTC (rev 13185) @@ -0,0 +1,75 @@ +<div> + <div style="float:left; clear:none; width: auto; margin-left: 30px;"> + <{$pagenav}> + </div> + <div style="float:right; width: auto; margin-right: 30px;"> + <label for="filter-items" style="font-size: 188%; font-weight: 600;"><{$smarty.const._AM_PINGTRAX_ITEMS_FILTER}></label> + <select id="filter-items" style="font-size: 188%; font-weight: 900;"> + <option value="<{$xoops_url}><{$smarty.server.php_self}>?start=0&num=<{$num}>&protocol=&domain="<{if $protocol == '' && $domain == ''}> selected<{/if}>><{$smarty.const._AM_PINGTRAX_ITEMS_FILTER_NONE}></option> + <{foreach item=item from=$filter}> + <option value="<{$xoops_url}><{$smarty.server.php_self}>?start=0&num=<{$num}>&protocol=<{$item.protocol}>&domain=<{$item.domain}>"<{if $protocol == $item.protocol && $domain == $item.domain}> selected<{/if}>><{$item.filename}></option> + <{/foreach}> + </select> + </div> +</div> + +<script> + $(function(){ + // bind change event to select + $('#filter-items').on('change', function () { + var url = $(this).val(); // get selected value + if (url) { // require a URL + window.location = url; // redirect + } + return false; + }); + }); +</script> +<h1><{$smarty.const._AM_PINGTRAX_ITEMS_H1}></h1> +<table> + <thead> + <tr class="head"> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_ID}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_MODULE_DIRNAME}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_MODULE_CLASS}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_ITEM_ID}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_CAT_ID}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_AUTHOR}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_TITLE}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_REFERERURI}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_DISCOVERY}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_SESSIONING}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_CHILDREN}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_FREQUENCY}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_PRIORITY}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_CHECKING}></td> + <td><{$smarty.const._AM_PINGTRAX_ITEMS_CHANGED}></td> + </tr> + </thead> + <tbody> + <{foreach item=item from=$locals}> + <tr class="<{cycle value="even,odd"}>"> + <td style="text-align:center;"><{$item.id}></td> + <td style="text-align:center;"><{$item.dirname}></td> + <td style="text-align:center;"><{$item.class}></td> + <td style="text-align:center;"><{$item.itemid}></td> + <td style="text-align:center;"><{$item.catid}></td> + <td style="text-align:center;"><{if $item.author.uid}><a href="<{$xoops_url}>/userinfo.php?uid=<{$item.author.uid}>" target="_blank"><{/if}><{$item.author.name}><{if $item.author.uid}></a><{/if}></td> + <td style="text-align:center;"><a href="<{$item.uri}>" target="_blank"><{$item.title}></a></td> + <td style="text-align:center;"><a href="<{$item.uri}>" target="_blank"><{$item.refereruri}></a></td> + <td style="text-align:center;"><{$item.discovery}></td> + <td style="text-align:center;"><{$item.session}></td> + <td style="text-align:center;"><{$item.children}></td> + <td style="text-align:center;"><{$item.frequency}></td> + <td style="text-align:center;"><{$item.priority}></td> + <td style="text-align:center;"><{$item.checking}></td> + <td style="text-align:center;"><{$item.changed}></td> + </tr> + <{/foreach}> + </tbody> +</table> +<div> + <div style="float:right; width: auto; margin-right: 30px;"> + <{$pagenav}> + </div> +</div> \ No newline at end of file Added: XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/pings.html =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/pings.html (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/pings.html 2015-12-08 21:31:59 UTC (rev 13185) @@ -0,0 +1,58 @@ +<form action="<{$smarty.server.php_self}>?op=edit&start=<{$start}>&num=<{$num}>" method="post"> +<h1><{$smarty.const._AM_PINGTRAX_PING_EDIT_H1}></h1> +<div> + <div style="float:left; clear:none; width: auto; margin-left: 30px;"> + <{$pagenav}> + </div> + <div style="float:right; width: auto; margin-right: 30px;"> + <input type="submit" value="<{$smarty.const._SUBMIT}>" name="submit" /> + </div> +</div> +<table> + <thead> + <tr class="head"> + <td><{$smarty.const._AM_PINGTRAX_PING_ID}></td> + <td><{$smarty.const._AM_PINGTRAX_PING_TYPE}></td> + <td><{$smarty.const._AM_PINGTRAX_PING_URI}></td> + <td><{$smarty.const._AM_PINGTRAX_PING_LAST}></td> + <td><{$smarty.const._AM_PINGTRAX_PING_SUCCESSES}></td> + <td><{$smarty.const._AM_PINGTRAX_PING_FAILURES}></td> + <td><{$smarty.const._AM_PINGTRAX_PING_SUCCESS}></td> + <td><{$smarty.const._AM_PINGTRAX_PING_FAILED}></td> + <td><{$smarty.const._AM_PINGTRAX_PING_SLEEPTILL}></td> + <td><{$smarty.const._AM_PINGTRAX_PING_ACTIONS}></td> + </tr> + </thead> + <tbody> + <{foreach item=ping from=$pings}> + <tr class="<{cycle value="even,odd"}>"> + <td style="text-align:center;"><{$ping.id}></td> + <td style="text-align:center;"><select name="type[<{$ping.id}>]" ><option value="XML-RPC"<{if $ping.type=="XML-RPC"}> selected="selected"<{/if}>>XML-RPC</option><option value="SITEMAPS"<{if $ping.type=="SITEMAPS"}> selected="selected"<{/if}>>SITEMAPS</option></select></td> + <td style="text-align:center;"><input type="text" size="52" value="<{$ping.uri}>" name="uri[<{$ping.id}>]" maxlength="250" /></td> + <td style="text-align:center;"><{if isset($ping.last.uri) && !empty($ping.last.title) }><a href="<{$ping.last.uri}>" target="_blank"><{$ping.last.title}></a><{else}> <{/if}></td> + <td style="text-align:center;"><{$ping.successes}></td> + <td style="text-align:center;"><{$ping.failures}></td> + <td style="text-align:center;"><{$ping.success}></td> + <td style="text-align:center;"><{$ping.failed}></td> + <td style="text-align:center;"><{$ping.sleeptill}></td> + <td style="text-align:center;"><a href="<{$smarty.server.php_self}>?op=delete&id=<{$ping.id}>&start=<{$start}>&num=<{$num}>" title="<{$smarty.const._AM_PINGTRAX_PING_DELETE}>"><img alt="<{$smarty.const._AM_PINGTRAX_PING_DELETE_ALT}>" src="<{$xoops_url}>/modules/pingtrax/images/delete.png" /></a></td> + </tr> + <{/foreach}> + </tbody> +</table> +<div> + <div style="float:left; clear:none; width: auto; margin-left: 30px;"> + <input type="submit" value="<{$smarty.const._SUBMIT}>" name="submit" /> + </div> + <div style="float:right; width: auto; margin-right: 30px;"> + <{$pagenav}> + </div> +</div> +</form> +<br/> +<br/> +<br/> +<hr/> +<h1><{$smarty.const._AM_PINGTRAX_PING_ADD_H1}></h1> +<p><{$smarty.const._AM_PINGTRAX_PING_ADD_P}></p> +<{$addform}> \ No newline at end of file Added: XoopsModules/pingtrax/trunk/modules/pingtrax/xoops.org.news.article.txt =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/xoops.org.news.article.txt (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/xoops.org.news.article.txt 2015-12-08 21:31:59 UTC (rev 13185) @@ -0,0 +1,30 @@ +[center][img width=200]http://au.syd.labs.coop/images/200x200.png[/img] +[size=xx-large]Chronolabs Cooperative[/size] + +[size=large]... Presents ...[/size] + +[size=x-large]PingTrax 1.01[/size] +[/center] + +[size=large][b][u]Introduction[/u][/b][/size] + +[size=medium]PingTrax 1.01 is a module that uses auto discovery to generate links to send to PingLists as well as allow for Permalink's for trackbacks on all your public site! It has a plugin's system if you want to use it to customise your module input's into PingTrax but this isn't required to operate on the system. + +There is a smarty function which output a table for the permalink which is [font=Courier][b]<{xoTrackbacks}>[/b][/font] or [font=Courier][b]<{xoTrackbacks dirname=$xoops_dirname}>[/b][/font] this will output when you put it in your theme the permalink as well as any trackbacks that have been linked to the site. + +It utilises preloader events to maintain the pinglists as well as trackbacks; but it also generates your sitemaps as well in xml in the root and alters the robots.txt to reflect the sitemaps. This is all through auto discovery so there is very little you have to do to use this module in base mode. There is also in the the include folder 3 text files which are used in order to specify root names for Id's and identity tags in the $_GET path of the URL in case you need to do some basic customisation without having any knowledge of how to write a plugin's class. + +I have attempted too make this module fluid and dynamic so it is easy to implement! It will list your site on the web quickly and effectively, so please download and install it is for XOOPS 2.5 or later.[/size] + +[size=large][b][u]Downloads[/u][/b][/size] +[size=x-large] + ** [url=http://sourceforge.net/projects/chronolabs/files/XOOPS%202.5/Modules/pingtrax/xoops2.5_pingtrax_1.01.7z/download]xoops2.5_pingtrax_1.01.7z - 41.2k[/url] + ** [url=http://sourceforge.net/projects/chronolabs/files/XOOPS%202.5/Modules/pingtrax/xoops2.5_pingtrax_1.01.tar.bz2/download]xoops2.5_pingtrax_1.01.tar.bz2 - 44.6k[/url] + ** [url=http://sourceforge.net/projects/chronolabs/files/XOOPS%202.5/Modules/pingtrax/xoops2.5_pingtrax_1.01.zip/download]xoops2.5_pingtrax_1.01.zip - 69.3k[/url] + ** [url=http://sourceforge.net/projects/chronolabs/files/XOOPS%202.5/Modules/pingtrax/xoops2.5_pingtrax_1.01.tar.gz/download]xoops2.5_pingtrax_1.01.tar.gz - 51.1k[/url] + ** [url=http://sourceforge.net/projects/chronolabs/files/XOOPS%202.5/Modules/pingtrax/xoops2.5_pingtrax_1.01.zoo/download]xoops2.5_pingtrax_1.01.zoo - 98.1k[/url] + ** [url=http://sourceforge.net/projects/chronolabs/files/XOOPS%202.5/Modules/pingtrax/xoops2.5_pingtrax_1.01.rar/download]xoops2.5_pingtrax_1.01.rar - 68.1k[/url][/size] + +[size=large][b][u]Bug Reports[/u][/b][/size] + +[size=medium]This is being released for testing purposes, the actual release will be in the news as version 1.02. If you have a bug please use the following form and report it:- https://sourceforge.net/p/chronolabs/tickets/new/[/size] \ No newline at end of file Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php 2015-12-07 15:47:57 UTC (rev 13184) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php 2015-12-08 21:31:59 UTC (rev 13185) @@ -62,7 +62,11 @@ $modversion['sqlfile']['mysql'] = "sql/mysql.sql"; // Table -$modversion['tables'] = json_decode(file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . "sql" . DIRECTORY_SEPARATOR . "tables.json"), true); +$modversion['tables'][] = 'pingtrax_items'; +$modversion['tables'][] = 'pingtrax_items_pings'; +$modversion['tables'][] = 'pingtrax_items_sitemaps'; +$modversion['tables'][] = 'pingtrax_pings'; +$modversion['tables'][] = 'pingtrax_sitemaps'; // Scripts to run upon installation or update $modversion['onInstall'] = "include/install.php"; @@ -94,9 +98,9 @@ 'description' => '_MI_PINGTRAX_PINGS_SLEEP_TILL_DESC', 'formtype' => 'select', 'valuetype' => 'int', - 'options' => array( 0 => _MI_PINGTRAX_TIME_RANDOM, 900 => _MI_PINGTRAX_TIME_15M, 1800 => _MI_PINGTRAX_TIME_30M, 3600 => _MI_PINGTRAX_TIME_1HR, (3600*2) => _MI_PINGTRAX_TIME_2HR, (3600*3) => _MI_PINGTRAX_TIME_3HR, - (3600*4) => _MI_PINGTRAX_TIME_4HR, (3600*5) => _MI_PINGTRAX_TIME_5HR, (3600*6) => _MI_PINGTRAX_TIME_6HR, (3600*7) => _MI_PINGTRAX_TIME_7HR, (3600*8) => _MI_PINGTRAX_TIME_8HR, (3600*9) => _MI_PINGTRAX_TIME_9HR, - (3600*10) => _MI_PINGTRAX_TIME_10HR, (3600*11) => _MI_PINGTRAX_TIME_11HR, (3600*12) => _MI_PINGTRAX_TIME_12HR, (3600*14) => _MI_PINGTRAX_TIME_14HR, (3600*16) => _MI_PINGTRAX_TIME_16HR, (3600*24) => _MI_PINGTRAX_TIME_24HR), + 'options' => array(_MI_PINGTRAX_TIME_RANDOM => 0, _MI_PINGTRAX_TIME_15M => 900, _MI_PINGTRAX_TIME_30M => 1800, _MI_PINGTRAX_TIME_1HR => 3600, _MI_PINGTRAX_TIME_2HR => (3600*2), _MI_PINGTRAX_TIME_3HR =>(3600*3), + _MI_PINGTRAX_TIME_4HR => (3600*4), _MI_PINGTRAX_TIME_5HR => (3600*5), _MI_PINGTRAX_TIME_6HR => (3600*6), _MI_PINGTRAX_TIME_7HR => (3600*7), _MI_PINGTRAX_TIME_8HR => (3600*8), _MI_PINGTRAX_TIME_9HR => (3600*9), + _MI_PINGTRAX_TIME_10HR => (3600*10), _MI_PINGTRAX_TIME_11HR => (3600*11), _MI_PINGTRAX_TIME_12HR => (3600*12), _MI_PINGTRAX_TIME_14HR => (3600*14), _MI_PINGTRAX_TIME_16HR =>(3600*16), _MI_PINGTRAX_TIME_24HR =>(3600*24)), 'default' => 3600 * mt_rand(1,12) ); @@ -106,9 +110,9 @@ 'description' => '_MI_PINGTRAX_SITEMAPS_SLEEP_TILL_DESC', 'formtype' => 'select', 'valuetype' => 'int', - 'options' => array( 0 => _MI_PINGTRAX_TIME_RANDOM, 900 => _MI_PINGTRAX_TIME_15M, 1800 => _MI_PINGTRAX_TIME_30M, 3600 => _MI_PINGTRAX_TIME_1HR, (3600*2) => _MI_PINGTRAX_TIME_2HR, (3600*3) => _MI_PINGTRAX_TIME_3HR, - (3600*4) => _MI_PINGTRAX_TIME_4HR, (3600*5) => _MI_PINGTRAX_TIME_5HR, (3600*6) => _MI_PINGTRAX_TIME_6HR, (3600*7) => _MI_PINGTRAX_TIME_7HR, (3600*8) => _MI_PINGTRAX_TIME_8HR, (3600*9) => _MI_PINGTRAX_TIME_9HR, - (3600*10) => _MI_PINGTRAX_TIME_10HR, (3600*11) => _MI_PINGTRAX_TIME_11HR, (3600*12) => _MI_PINGTRAX_TIME_12HR, (3600*14) => _MI_PINGTRAX_TIME_14HR, (3600*16) => _MI_PINGTRAX_TIME_16HR, (3600*24) => _MI_PINGTRAX_TIME_24HR), + 'options' => array(_MI_PINGTRAX_TIME_RANDOM => 0, _MI_PINGTRAX_TIME_15M => 900, _MI_PINGTRAX_TIME_30M => 1800, _MI_PINGTRAX_TIME_1HR => 3600, _MI_PINGTRAX_TIME_2HR => (3600*2), _MI_PINGTRAX_TIME_3HR =>(3600*3), + _MI_PINGTRAX_TIME_4HR => (3600*4), _MI_PINGTRAX_TIME_5HR => (3600*5), _MI_PINGTRAX_TIME_6HR => (3600*6), _MI_PINGTRAX_TIME_7HR => (3600*7), _MI_PINGTRAX_TIME_8HR => (3600*8), _MI_PINGTRAX_TIME_9HR => (3600*9), + _MI_PINGTRAX_TIME_10HR => (3600*10), _MI_PINGTRAX_TIME_11HR => (3600*11), _MI_PINGTRAX_TIME_12HR => (3600*12), _MI_PINGTRAX_TIME_14HR => (3600*14), _MI_PINGTRAX_TIME_16HR =>(3600*16), _MI_PINGTRAX_TIME_24HR =>(3600*24)), 'default' => 3600 * mt_rand(1,12) ); |
From: <wis...@us...> - 2015-12-07 15:47:59
|
Revision: 13184 http://sourceforge.net/p/xoops/svn/13184 Author: wishcraft Date: 2015-12-07 15:47:57 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Beta 1.01 -- Final Release of Beta Modified Paths: -------------- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_sitemaps.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php Modified: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_sitemaps.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_sitemaps.php 2015-12-07 14:35:39 UTC (rev 13183) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_sitemaps.php 2015-12-07 15:47:57 UTC (rev 13184) @@ -149,11 +149,24 @@ { $dom = str_get_html($html); // Does headers - $head = $dom->find("head"); - $changes .+ $this->setVars(array('header-md5' => md5($head->innertext), 'header-bytes' => strlen($head->innertext))); + $headbytes = 0; + $headmd5 = ''; + foreach($dom->find("head") as $head) + { + $headmd5 = md5($headmd5 . sha1($head->innertext)); + $headbytes = $headbytes + strlen($head->innertext); + } + $changes .+ $this->setVars(array('header-md5' => $headmd5, 'header-bytes' => $headbytes)); // Does Full Body - $body = $dom->find("body"); - $changes .+ $this->setVars(array('body-md5' => md5($body->plaintext), 'body-bytes' => strlen($body->plaintext))); + + $bodybytes = 0; + $bodymd5 = ''; + foreach($dom->find('body') as $body) + { + $bodymd5 = md5($bodymd5 . sha1($body->plaintext)); + $bodybytes = $bodybytes + strlen($body->plaintext); + } + $changes .+ $this->setVars(array('body-md5' => $bodymd5, 'body-bytes' => $bodybytes)); // Does Tables $tablesbytes = 0; $tablesmd5 = ''; Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php 2015-12-07 14:35:39 UTC (rev 13183) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php 2015-12-07 15:47:57 UTC (rev 13184) @@ -149,11 +149,24 @@ { $dom = str_get_html($html); // Does headers - $head = $dom->find("head"); - $changes .+ $this->setVars(array('header-md5' => md5($head->innertext), 'header-bytes' => strlen($head->innertext))); + $headbytes = 0; + $headmd5 = ''; + foreach($dom->find("head") as $head) + { + $headmd5 = md5($headmd5 . sha1($head->innertext)); + $headbytes = $headbytes + strlen($head->innertext); + } + $changes .+ $this->setVars(array('header-md5' => $headmd5, 'header-bytes' => $headbytes)); // Does Full Body - $body = $dom->find("body"); - $changes .+ $this->setVars(array('body-md5' => md5($body->plaintext), 'body-bytes' => strlen($body->plaintext))); + + $bodybytes = 0; + $bodymd5 = ''; + foreach($dom->find('body') as $body) + { + $bodymd5 = md5($bodymd5 . sha1($body->plaintext)); + $bodybytes = $bodybytes + strlen($body->plaintext); + } + $changes .+ $this->setVars(array('body-md5' => $bodymd5, 'body-bytes' => $bodybytes)); // Does Tables $tablesbytes = 0; $tablesmd5 = ''; |
From: <wis...@us...> - 2015-12-07 14:35:43
|
Revision: 13183 http://sourceforge.net/p/xoops/svn/13183 Author: wishcraft Date: 2015-12-07 14:35:39 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Pre-alpha :: More done\!\!\! Added Paths: ----------- XoopsModules/pingtrax/releases/1.01/ XoopsModules/pingtrax/releases/1.01/class/ XoopsModules/pingtrax/releases/1.01/class/smarty/ XoopsModules/pingtrax/releases/1.01/class/smarty/xoops_plugins/ XoopsModules/pingtrax/releases/1.01/class/smarty/xoops_plugins/function.xoTrackbacks.php XoopsModules/pingtrax/releases/1.01/modules/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/about.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_footer.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_header.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/menu.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/api/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/api/.htaccess XoopsModules/pingtrax/releases/1.01/modules/pingtrax/api/index.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/blocks/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/blocks/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_pings.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_sitemaps.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/pings.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/plugins.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/simple_html_dom.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/sitemaps.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/trackback.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/images/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/images/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/images/link.png XoopsModules/pingtrax/releases/1.01/modules/pingtrax/images/logo.png XoopsModules/pingtrax/releases/1.01/modules/pingtrax/include/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/include/category-id-names.txt XoopsModules/pingtrax/releases/1.01/modules/pingtrax/include/exclude-names.txt XoopsModules/pingtrax/releases/1.01/modules/pingtrax/include/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/include/item-id-names.txt XoopsModules/pingtrax/releases/1.01/modules/pingtrax/language/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/language/english/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/language/english/help/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/language/english/help/help.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/language/english/help/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/language/english/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/language/english/modinfo.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/language/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/pingtrax.css XoopsModules/pingtrax/releases/1.01/modules/pingtrax/plugins/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/plugins/default.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/plugins/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/preloads/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/preloads/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/preloads/items.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/preloads/ping.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/preloads/sitemap.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/preloads/trackback.php XoopsModules/pingtrax/releases/1.01/modules/pingtrax/sql/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/sql/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/sql/mysql.sql XoopsModules/pingtrax/releases/1.01/modules/pingtrax/sql/tables.json XoopsModules/pingtrax/releases/1.01/modules/pingtrax/templates/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/templates/admin/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/templates/admin/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/templates/blocks/ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/templates/blocks/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/templates/index.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/templates/sitemaps.xml.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/templates/xoTrackback.html XoopsModules/pingtrax/releases/1.01/modules/pingtrax/xoops_version.php Added: XoopsModules/pingtrax/releases/1.01/class/smarty/xoops_plugins/function.xoTrackbacks.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/class/smarty/xoops_plugins/function.xoTrackbacks.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/class/smarty/xoops_plugins/function.xoTrackbacks.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,51 @@ +<?php +/** + * PingTrax Smarty Trackback Function + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +function smarty_function_xoTrackbacks($tag_args, &$comp) +{ + $attrs = $comp->_parse_attrs($tag_args); + foreach ($attrs as $arg_name => $arg_value) { + if ($arg_name == 'dirname') { + $dirname = $arg_value; + continue; + } + } + global $pingtraxitem; + if (is_a($pingtraxitem, "PingtraxItems")) + { + $GLOBALS['xoTheme']->addStylesheet(XOOPS_URL . "/modules/pingtrax/pingtrax.css"); + $trackbacksTpl = new XoopsTpl(); + $trackbacksTpl->assign('permlink', $pingtraxitem->getVar('item-protocol').$pingtraxitem->getVar('item-domain').$pingtraxitem->getVar('item-referer-uri')); + $commentHandler = xoops_gethandler('comment'); + $moduleHandler = xoops_gethandler('module'); + $criteria = new CriteriaCompo(new Criteria('com_modid', $moduleHandler->getByDirname('pingtrax')->getVar('mid'))); + $criteria->add(new Criteria('com_itemid', $pingtraxitem->getVar('id'))); + $criteria->setOrder('com_created'); + $criteria->setSort('DESC'); + foreach($commentHandler->getObjects($criteria) as $comid => $comment) + $trackbacksTpl->append('trackbacks', array('subject'=>$comment->getVar('com_title'), 'comment'=>$comment->getVar('com_text'))); + ob_start(); + $trackbacksTpl->display($GLOBALS['xoops']->path('/modules/pingtrax/templates/xoTrackback.html')); + return ob_get_clean(); + } + return ''; +} Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/about.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/about.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/about.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,34 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/../../../include/cp_header.php'; +include '../../../class/xoopsformloader.php'; +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + +$aboutAdmin = new ModuleAdmin(); + +echo $aboutAdmin->addNavigation('about.php'); +echo $aboutAdmin->renderabout('6KJ7RW5DR3VTJ', false); + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Property changes on: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/about.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,32 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + +$indexAdmin = new ModuleAdmin(); + +echo $indexAdmin->addNavigation('admin.php'); +echo $indexAdmin->renderIndex(); + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Property changes on: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_footer.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_footer.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_footer.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,30 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +echo "<div class='adminfooter'>\n" + ." <div style='text-align: center;'>\n" + ." <a href='http://www.xoops.org' rel='external'><img src='{$pathIcon32}/xoopsmicrobutton.gif' alt='XOOPS' title='XOOPS'></a>\n" + ." </div>\n" + ." " . _AM_MODULEADMIN_ADMIN_FOOTER . "\n" + ."</div>"; + +xoops_cp_footer(); Property changes on: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_footer.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_header.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_header.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_header.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,68 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +$path = dirname(dirname(dirname(dirname(__FILE__)))); +include_once $path . '/mainfile.php'; +include_once $path . '/include/cp_functions.php'; +require_once $path . '/include/cp_header.php'; + +global $xoopsModule; + +$thisModuleDir = $GLOBALS['xoopsModule']->getVar('dirname'); + +//if functions.php file exist +//require_once dirname(dirname(__FILE__)) . '/include/functions.php'; + +// Load language files +xoops_loadLanguage('admin', $thisModuleDir); +xoops_loadLanguage('modinfo', $thisModuleDir); +xoops_loadLanguage('main', $thisModuleDir); + +$pathIcon16 = '../'.$xoopsModule->getInfo('icons16'); +$pathIcon32 = '../'.$xoopsModule->getInfo('icons32'); +$pathModuleAdmin = $xoopsModule->getInfo('dirmoduleadmin'); + +include_once $GLOBALS['xoops']->path($pathModuleAdmin.'/moduleadmin.php'); + +if ($xoopsUser) { + $moduleperm_handler =& xoops_gethandler('groupperm'); + if (!$moduleperm_handler->checkRight('module_admin', $xoopsModule->getVar('mid'), $xoopsUser->getGroups())) { + redirect_header(XOOPS_URL, 1, _NOPERM); + exit(); + } +} else { + redirect_header(XOOPS_URL . "/user.php", 1, _NOPERM); + exit(); +} + +if (!isset($xoopsTpl) || !is_object($xoopsTpl)) { + include_once(XOOPS_ROOT_PATH."/class/template.php"); + $xoopsTpl = new XoopsTpl(); +} + +//$xoopsTpl->assign('pathIcon16', $pathIcon16); + +if (!isset($GLOBALS['xoopsTpl']) || !is_object($GLOBALS['xoopsTpl'])) { + include_once XOOPS_ROOT_PATH . '/class/template.php'; + $GLOBALS['xoopsTpl'] = new XoopsTpl(); +} Property changes on: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/admin_header.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/index.html =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/index.html (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/index.html 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/menu.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/menu.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/menu.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,50 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +// defined("XOOPS_ROOT_PATH") || die("XOOPS root path not defined"); + +$path = dirname(dirname(dirname(dirname(__FILE__)))); +include_once $path . '/mainfile.php'; + +$dirname = basename(dirname(dirname(__FILE__))); +$module_handler = xoops_gethandler('module'); +$module = $module_handler->getByDirname($dirname); +$pathIcon32 = $module->getInfo('icons32'); +$pathModuleAdmin = $module->getInfo('dirmoduleadmin'); +$pathLanguage = $path . $pathModuleAdmin; + +if (!file_exists($fileinc = $pathLanguage . '/language/' . $GLOBALS['xoopsConfig']['language'] . '/' . 'main.php')) { + $fileinc = $pathLanguage . '/language/english/main.php'; +} + +include_once $fileinc; + +$adminmenu = array(); + +$i = 1; +$adminmenu[$i]['title'] = _PM_MI_INDEX; +$adminmenu[$i]['link'] = "admin/admin.php"; +$adminmenu[$i]['icon'] = $pathIcon32.'/home.png' ; +++$i; +$adminmenu[$i]['title'] = _PM_MI_ABOUT; +$adminmenu[$i]['link'] = 'admin/about.php'; +$adminmenu[$i]['icon'] = $pathIcon32.'/about.png'; Property changes on: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/admin/menu.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/api/.htaccess =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/api/.htaccess (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/api/.htaccess 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,2 @@ +RewriteEngine On +RewriteRule ^([0-9a-z]{32})$ index.php?referer=$1 [L] \ No newline at end of file Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/api/index.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/api/index.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/api/index.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,50 @@ +<?php + +require_once dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . "mainfile.php"; +require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . "class". DIRECTORY_SEPARATOR . "trackback.php"; + +$trackback = new PingtraxTrackback($GLOBALS['xoopsConfig']['sitename'], $GLOBALS['xoopsConfig']['sitename'], 'UTF-8'); + +if (!isset($_GET['referer'])) + die($trackback->recieve(false, "\$_GET['referer'] not specified and is required for trackback API!")); + +xoops_load("XoopsUserUtility"); +$moduleHandler = xoops_gethandler('module'); +$commentHandler = xoops_gethandler('comment'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); +$item = $itemsHandler->getByReferer($_GET['referer']); + +if (!is_a($item, "PingtraxItems")) + die($trackback->recieve(false, $_GET['referer'] . " does not match any recorded item on the trackback API!")); + +$url = $_REQUEST["url"]; +if ($url) { + $excerpt = $_REQUEST["excerpt"]; + $name = ($_REQUEST["blog_name"]) ? $_REQUEST["blog_name"] : $url; + $subject = ($_REQUEST["title"]) ? $_REQUEST["title"] : $url; + $comment = "<strong> TrackBack from <a href=\"$url\">$name</a>:</strong><br />"; + $comment .= "<blockquote>$excerpt</blockquote>"; + + $pluginHandler = xoops_getmodulehandler('plugins', 'pingtrax'); + $remoteitem = $pluginHandler->getRemoteObject($item, $url, $name, $subject, $comment); + if (is_a($remoteitem, "PingtraxItems")) + { + $comment = $commentHandler->create(); + $comment->setVar('com_modid', $moduleHandler->getByDirname('pingtrax')->getVar('mid')); + $comment->setVar('com_title', $subject); + $comment->setVar('com_text', $comment); + $comment->setVar('com_created', time()); + $comment->setVar('com_url', $url); + $comment->setVar('com_ip', XoopsUserUtility::getIP(true)); + $comment->setVar('com_itemid', $item->getVar('id')); + $comment->setVar('dohtml', true); + $comment->setVar('dosmiley', true); + $comment->setVar('doxcode', true); + $comment->setVar('doimage', true); + $comment->setVar('dobr', true); + $commentHandler->insert($comment); + } +} else { + die($trackback->recieve(false, "Missing URL for trackback API!")); +} +die($trackback->recieve(true, "")); Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/blocks/index.html =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/blocks/index.html (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/blocks/index.html 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/blocks/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/index.html =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/index.html (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/index.html 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,242 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +/** + * Class PingtraxItems + * + * @subpackage pingtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_items` ( + * `id` mediumint(20) NOT NULL AUTO_INCREMENT, + * `parent-id` mediumint(20) NOT NULL DEFAULT '0', + * `referer` varchar(44) NOT NULL DEFAULT '', + * `type` enum('local','remote','unknown') NOT NULL DEFAULT 'unknown', + * `module-dirname` varchar(30) NOT NULL DEFAULT '', + * `module-class` varchar(100) NOT NULL DEFAULT '', + * `module-item-id` mediumint(30) NOT NULL DEFAULT '0', + * `module-php-self` varchar(150) NOT NULL DEFAULT '', + * `module-get` tinytext, + * `item-author-uid` int(13) NOT NULL DEFAULT '0', + * `item-author-name` varchar(64) NOT NULL DEFAULT '', + * `item-category-id` int(20) NOT NULL DEFAULT '0', + * `item-title` varchar(180) NOT NULL DEFAULT '', + * `item-description` varchar(250) NOT NULL DEFAULT '', + * `item-protocol` enum('https://','http://') NOT NULL DEFAULT 'http://', + * `item-domain` varchar(150) NOT NULL DEFAULT '', + * `item-referer-uri` varchar(250) NOT NULL DEFAULT '', + * `item-php-self` varchar(250) NOT NULL DEFAULT '', + * `feed-protocol` enum('https://','http://') NOT NULL DEFAULT 'http://', + * `feed-domain` varchar(150) NOT NULL DEFAULT '', + * `feed-referer-uri` varchar(250) NOT NULL DEFAULT '', + * `discovery-hook` enum('php','preloader','smarty','combination','unknown') NOT NULL DEFAULT 'unknown', + * `user-session` enum('admin','user','guest','unknown') NOT NULL DEFAULT 'unknown', + * `created` int(12) NOT NULL DEFAULT '0', + * `updated` int(12) NOT NULL DEFAULT '0', + * `offlined` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`), + * KEY `SEARCH` (`referer`,`item-author-uid`,`item-author-name`,`module-dirname`,`item-protocol`,`item-domain`,`item-referer-uri`,`module-php-self`,`item-php-self`,`discovery-hook`,`id`) KEY_BLOCK_SIZE=128, + * KEY `CHRONOLOGISTICS` (`id`,`referer`,`created`,`updated`,`offlined`) USING BTREE KEY_BLOCK_SIZE=64 + * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; + */ +class PingtraxItems extends XoopsObject +{ + /** + * + * @var unknown + */ + var $_configs = array(); + + /** + * + */ + function __construct() + { + $moduleHandler = xoops_gethandler('module'); + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($moduleHandler->getByDirname(basename(dirname(__DIR__)))->getVar('mid')); + + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('parent-id', XOBJ_DTYPE_INT, null, false); + $this->initVar('referer', XOBJ_DTYPE_OTHER, sha1(NULL), false, 44); + $this->initVar('type', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('local','remote','unknown')); + $this->initVar('module-dirname', XOBJ_DTYPE_OTHER, '', false, 30); + $this->initVar('module-class', XOBJ_DTYPE_OTHER, '', false, 100); + $this->initVar('module-item-id', XOBJ_DTYPE_INT, 0, false); + $this->initVar('module-php-self', XOBJ_DTYPE_OTHER, '', false, 150); + $this->initVar('module-get', XOBJ_DTYPE_ARRAY, array(), false); + $this->initVar('item-author-uid', XOBJ_DTYPE_INT, 0, false); + $this->initVar('item-author-name', XOBJ_DTYPE_TXTBOX, '', false, 64); + $this->initVar('item-category-id', XOBJ_DTYPE_INT, null, false); + $this->initVar('item-title', XOBJ_DTYPE_TXTBOX, '', false, 180); + $this->initVar('item-description', XOBJ_DTYPE_TXTBOX, '', false, 250); + $this->initVar('item-protocol', XOBJ_DTYPE_ENUM, XOOPS_PROT, true, false, false, false, array('https://','http://')); + $this->initVar('item-domain', XOBJ_DTYPE_TXTBOX, parse_url(XOOPS_URL, PHP_URL_HOST), true, 150); + $this->initVar('item-referer-uri', XOBJ_DTYPE_TXTBOX, $_SERVER["REQUEST_URI"], true, 250); + $this->initVar('item-php-self', XOBJ_DTYPE_TXTBOX, str_replace(XOOPS_ROOT_PATH, "", $_SERVER["PHP_SELF"]), true, 250); + $this->initVar('feed-protocol', XOBJ_DTYPE_ENUM, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_SCHEME), true, false, false, false, array('https://','http://')); + $this->initVar('feed-domain', XOBJ_DTYPE_TXTBOX, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_HOST), true, 150); + $this->initVar('feed-referer-uri', XOBJ_DTYPE_TXTBOX, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_PATH) . '/backend.php', true, 250); + $this->initVar('discovery-hook', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('php','preloader','smarty','combination','unknown')); + $this->initVar('user-session', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('admin','user','guest','unknown')); + $this->initVar('created', XOBJ_DTYPE_INT, 0, false); + $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); + $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); + } + + /** + * + * @return string + */ + function getPingXML() + { + $xml = "<?xml version=\"1.0\"?>\n"; + $xml .= "<methodCall>\n"; + $xml .= "\t<methodName>weblogUpdates.extendedPing</methodName>\n"; + $xml .= "\t<params>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-title')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-protocol').$this->getVar('item-domain')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-protocol').$this->getVar('item-domain').$this->getVar('item-referer-uri')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('feed-protocol').$this->getVar('feed-domain').$this->getVar('feed-referer-uri')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t</params>\n"; + $xml .= "</methodCall>"; + return $xml; + } +} + +/** + * Class PingtraxItemsHandler + */ +class PingtraxItemsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db, "pingtrax_items", 'PingtraxItems', 'id', 'referer'); + } + + + function insert($object = NULL, $force = true) + { + if ($object->isNew()) + { + $criteria = new Criteria('referer', $object->getVar('referer')); + if ($this->getCount($criteria)==0) + $object->setVar('created', time()); + else + { + $objs = $this->getObjects($criteria, false); + if (isset($objs[0])) + return $objs[0]->getVar('id'); + else + return false; + } + if ($object->getVar('type') == 'local') + { + $sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('protocol', XOOPS_PROT)); + $criteria->add(new Criteria('domain', parse_url(XOOPS_URL, PHP_URL_HOST))); + $criteria->add(new Criteria('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH))); + if ($sitemapsHandler->getCount($criteria)==0) + { + $sitemap = $sitemapsHandler->create(); + $sitemap->setVar('referer', md5(XOOPS_URL.microtime(true).XOOPS_DB_USER.XOOPS_DB_PASS)); + $sitemap->setVar('protocol', XOOPS_PROT); + $sitemap->setVar('domain', parse_url(XOOPS_URL, PHP_URL_HOST)); + $sitemap->setVar('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH)); + $sitemap->setVar('filename', 'sitemap.'.str_replace("://", "", XOOPS_PROT) . "." . parse_url(XOOPS_URL, PHP_URL_HOST) . '.xml'); + $sitemap = $sitemapsHandler->get($sitemap = $sitemapsHandler->insert($sitemap, true)); + } else { + $obj = $sitemapsHandler->getObjects($criteria, false); + if (is_object($obj[0])) + $sitemap = $obj[0]; + } + $items_sitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); + $itemsitemap = $items_sitemapsHandler->create(); + $itemsitemap->setVar('map-referer', $sitemap->getVar('referer')); + $itemsitemap->setVar('item-referer', $object->getVar('referer')); + $items_sitemapsHandler->insert($itemsitemap, true); + $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); + $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('type', 'XML-RPC')); + $criteria->add(new Criteria('offline', 0)); + foreach($pingsHandler->getObjects($criteria, true) as $id => $ping) + { + $itemping = $items_pingsHandler->create(); + $itemping->setVar('ping-referer', $ping->getVar('referer')); + $itemping->setVar('item-referer', $object->getVar('referer')); + $items_pingsHandler->insert($itemping, true); + } + } + } else { + $object->setVar('updated', time()); + } + switch ($object->getVar('user-session')) + { + default: + case 'unknown': + if (is_object($GLOBALS['xoopsUser'])) + { + if ($GLOBALS['xoopsUser']->isAdmin()) + $object->setVar('user-session', 'admin'); + } + case 'admin': + if (is_object($GLOBALS['xoopsUser'])) + { + if (!$GLOBALS['xoopsUser']->isAdmin()) + $object->setVar('user-session', 'user'); + } + case 'user': + if (!is_object($GLOBALS['xoopsUser'])) + $object->setVar('user-session', 'guest'); + case 'guest': + break; + } + return parent::insert($object, $force); + } + + function getByReferer($referer = '') + { + $criteria = new CriteriaCompo(new Criteria('referer', $referer)); + $criteria->add(new Criteria('offline', 0)); + if ($this->getCount($criteria)==0) + return NULL; + $objs = $this->getObjects($criteria, false); + if (isset($objs[0]) && is_a($objs[0], "PingtraxItems")) + return $objs[0]; + return NULL; + } +} Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_pings.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_pings.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_pings.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,73 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +/** + * Class PingtraxItems_pings + * + * @subpackage itemtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_items_pings` ( + * `id` mediumint(32) NOT NULL AUTO_INCREMENT, + * `ping-referer` varchar(44) NOT NULL DEFAULT '', + * `item-referer` varchar(44) NOT NULL DEFAULT '', + * `when` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`), + * KEY `SEARCH` (`id`,`ping-referer`,`item-referer`) USING BTREE, + * KEY `CHRONOLOGISTICS` (`ping-referer`,`item-referer`,`when`) USING BTREE KEY_BLOCK_SIZE=64 + * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; + * + */ +class PingtraxItems_pings extends XoopsObject +{ + /** + * + */ + function __construct() + { + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('ping-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('item-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('when', XOBJ_DTYPE_INT, 0, false); + } + +} + +/** + * Class PingtraxItems_pingsHandler + */ +class PingtraxItems_pingsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db, "pingtrax_items_pings", 'PingtraxItems_pings', 'id', 'ping-referer'); + } + + +} Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_sitemaps.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_sitemaps.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/items_sitemaps.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,353 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +require_once __DIR__ . DIRECTORY_SEPARATOR . 'simple_html_dom.php'; + +/** + * Class PingtraxItems_sitemaps + * + * @subpackage itemtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_items_sitemaps` ( + * `id` mediumint(32) NOT NULL AUTO_INCREMENT, + * `map-referer` varchar(44) NOT NULL DEFAULT '', + * `item-referer` varchar(44) NOT NULL DEFAULT '', + * `frequency` enum('monthly','fortnightly','weekly','daily') NOT NULL DEFAULT 'monthly', + * `priority` float(2,1) NOT NULL DEFAULT '0.9', + * `checking` int(12) NOT NULL DEFAULT '0', + * `changed` int(12) NOT NULL DEFAULT '0', + * `changes` int(12) NOT NULL DEFAULT '0', + * `when` int(12) NOT NULL DEFAULT '0', + * `header-md5` varchar(32) NOT NULL DEFAULT '0', + * `header-changes` int(12) NOT NULL DEFAULT '0', + * `header-changed` int(12) NOT NULL DEFAULT '0', + * `header-bytes` int(12) NOT NULL DEFAULT '0', + * `body-md5` varchar(32) NOT NULL DEFAULT '0', + * `body-changes` int(12) NOT NULL DEFAULT '0', + * `body-changed` int(12) NOT NULL DEFAULT '0', + * `body-bytes` int(12) NOT NULL DEFAULT '0', + * `tabled-md5` varchar(32) NOT NULL DEFAULT '0', + * `tabled-changes` int(12) NOT NULL DEFAULT '0', + * `tabled-changed` int(12) NOT NULL DEFAULT '0', + * `tabled-bytes` int(12) NOT NULL DEFAULT '0', + * `dived-md5` varchar(32) NOT NULL DEFAULT '0', + * `dived-changes` int(12) NOT NULL DEFAULT '0', + * `dived-changed` int(12) NOT NULL DEFAULT '0', + * `dived-bytes` int(12) NOT NULL DEFAULT '0', + * `header-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `header-changes-last` int(12) NOT NULL DEFAULT '0', + * `header-changed-last` int(12) NOT NULL DEFAULT '0', + * `header-bytes-last` int(12) NOT NULL DEFAULT '0', + * `body-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `body-changes-last` int(12) NOT NULL DEFAULT '0', + * `body-changed-last` int(12) NOT NULL DEFAULT '0', + * `body-bytes-last` int(12) NOT NULL DEFAULT '0', + * `tabled-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `tabled-changes-last` int(12) NOT NULL DEFAULT '0', + * `tabled-changed-last` int(12) NOT NULL DEFAULT '0', + * `tabled-bytes-last` int(12) NOT NULL DEFAULT '0', + * `dived-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `dived-changes-last` int(12) NOT NULL DEFAULT '0', + * `dived-changed-last` int(12) NOT NULL DEFAULT '0', + * `dived-bytes-last` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`), + * KEY `SEARCH` (`id`,`map-referer`,`item-referer`) USING BTREE, + * KEY `CHRONOLOGISTICS` (`map-referer`,`item-referer`) USING BTREE KEY_BLOCK_SIZE=64 + * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; + * + */ +class PingtraxItems_sitemaps extends XoopsObject +{ + /** + * + */ + function __construct() + { + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('map-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('item-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('frequency', XOBJ_DTYPE_ENUM, 'daily', false, false, false, false, false, array('monthly','fortnightly','weekly','daily')); + $this->initVar('priority', XOBJ_DTYPE_FLOAT, 0.9, false); + $this->initVar('checking', XOBJ_DTYPE_INT, time(), false); + $this->initVar('changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('when', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('header-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('body-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('body-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('tabled-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('tabled-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('dived-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('dived-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('header-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-bytes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('body-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('body-bytes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('tabled-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('tabled-bytes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('dived-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('dived-bytes-last', XOBJ_DTYPE_INT, 0, false); + } + + /** + * + */ + function checkForChanges() + { + $changes = 0; + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $item = $itemsHandler->getByReferer($this->getVar('item-referer')); + if (is_a($item, "PingtraxItems")) + { + $html = $this->getURIData($item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri'), 65, 65, $item->getVar('module-get')); + if (strlen($html)==0) + { + foreach($item->getVar('module-get') as $item => $value) + $get[$item] = $value; + $html = $this->getURIData($item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-php-self')."?".http_build_query($get), 65, 65, $get); + } + if (strlen($html)!=0) + { + $dom = str_get_html($html); + // Does headers + $head = $dom->find("head"); + $changes .+ $this->setVars(array('header-md5' => md5($head->innertext), 'header-bytes' => strlen($head->innertext))); + // Does Full Body + $body = $dom->find("body"); + $changes .+ $this->setVars(array('body-md5' => md5($body->plaintext), 'body-bytes' => strlen($body->plaintext))); + // Does Tables + $tablesbytes = 0; + $tablesmd5 = ''; + foreach($dom->find('table') as $table) + { + $tablesmd5 = md5($tablesmd5 . sha1($table->plaintext)); + $tablesbytes = $tablesbytes + strlen($table->plaintext); + } + $changes .+ $this->setVars(array('tabled-md5' => $tablesmd5, 'tabled-bytes' => $tablesbytes)); + // Does Div's + $divsbytes = 0; + $divsmd5 = ''; + foreach($dom->find('div') as $div) + { + $divsmd5 = md5($divsmd5 . sha1($div->plaintext)); + $divsbytes = $divsbytes + strlen($div->plaintext); + } + $changes .+ $this->setVars(array('dived-md5' => $divsmd5, 'dived-bytes' => $divsbytes)); + } + } + return $changes; + } + + /** + * + * {@inheritDoc} + * @see XoopsObject::setVars() + */ + function setVars($var_arr = array()) + { + $changes = 0; + $lasting = array('header' => array('-md5', '-bytes'), 'body' => array('-md5', '-bytes'), 'tabled' => array('-md5', '-bytes'), 'dived' => array('-md5', '-bytes')); + foreach($lasting as $key=> $values) + { + $found = false; + foreach($values as $value) + if (in_array($key.$value, array_keys($var_arr))) + { + if ($this->getVar($key.$value)!=$var_arr[$key.$value]) + foreach($values as $val) + $this->setVar($key.$val.'-last', $this->getVar($key.$val)); + $found = true; + } + if ($found == true) + { + $changes .+ 1; + $this->setVar($key.'-changes', $this->getVar($key.'-changes')+1); + $this->setVar($key.'-changed', time()); + if ($this->getVar('changed')>0) + { + if (time() - $this->getVar('changed') < (3600 * 24)) + { + $this->setvar('frequency', 'daily'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 7)) + { + $this->setvar('frequency', 'weekly'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 14)) + { + $this->setvar('frequency', 'fortnightly'); + } else { + $this->setvar('frequency', 'monthly'); + } + } else + $this->setvar('frequency', 'daily'); + $this->setVar('changed', time()); + $this->setVar('changes', $this->getVar('changes')+1); + if ($this->getvar('priority') < 0.9) + $this->setVar('priority', $this->getVar('priority') + 0.1); + } else { + if ($this->getVar('changed')>0) + { + if (time() - $this->getVar('changed') < (3600 * 24)) + { + $this->setvar('frequency', 'daily'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 7)) + { + $this->setvar('frequency', 'weekly'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 14)) + { + $this->setvar('frequency', 'fortnightly'); + } else { + $this->setvar('frequency', 'monthly'); + } + } else { + $this->setvar('frequency', 'daily'); + $this->setVar('changed', time()); + } + if ($this->getvar('frequency')=='') + $this->setvar('frequency', 'daily'); + if ($this->getvar('priority') > 0.1) + $this->setVar('priority', $this->getVar('priority') - 0.1); + } + } + + switch($this->getVar('frequency')) + { + case 'daily': + default: + $this->setvar('frequency', 'daily'); + $this->setVar('checking', time() + (3600 * 24 - 900)); + break; + case 'weekly': + $this->setVar('checking', time() + (3600 * 24 * 7 - 900)); + break; + case 'fortnightly': + $this->setVar('checking', time() + (3600 * 24 * 14 - 900)); + break; + case 'monthly': + $this->setVar('checking', time() + (3600 * 24 * 7 * 4 - 900)); + break; + } + parent::setVars($var_arr); + return ($changes>0?$changes:false); + } + + + /* function getURIData() + * + * cURL Routine + * @author Simon Roberts (Chronolabs) si...@la... + * + * @return float() + */ + private function getURIData($uri = '', $timeout = 65, $connectout = 65, $post_data = array()) + { + if (!function_exists("curl_init")) + { + return file_get_contents($uri); + } + if (!$btt = curl_init($uri)) { + return false; + } + curl_setopt($btt, CURLOPT_HEADER, 0); + curl_setopt($btt, CURLOPT_POST, (count($posts)==0?false:true)); + if (count($posts)!=0) + curl_setopt($btt, CURLOPT_POSTFIELDS, http_build_query($post_data)); + curl_setopt($btt, CURLOPT_CONNECTTIMEOUT, $connectout); + curl_setopt($btt, CURLOPT_TIMEOUT, $timeout); + curl_setopt($btt, CURLOPT_RETURNTRANSFER, true); + curl_setopt($btt, CURLOPT_VERBOSE, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYPEER, false); + $data = curl_exec($btt); + curl_close($btt); + return $data; + } + + +} + +/** + * Class PingtraxItems_sitemapsHandler + */ +class PingtraxItems_sitemapsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db, "itemtrax_items_sitemaps", 'PingtraxItems_sitemaps', 'id', 'map-referer'); + } + + + /** + * + * @param array $array + */ + private function addTimeLimit($seconds = 30) + { + global $timelimit; + $timelimit .+ $seconds; + set_time_limit($timelimit); + } + + /** + * + * @param string $mapreferer + */ + function checkForChanges($mapreferer = '') + { + $changes = 0; + $this->addTimeLimit(120); + $criteria = new CriteriaCompo(new Criteria('checking', time(), "<=")); + if (!empty($mapreferer)) + $criteria->add(new Criteria('map-referer', $mapreferer)); + foreach($this->getObjects($criteria, true) as $id => $item) + { + $start = microtime(true); + if (is_a($item, "PingtraxItems_sitemaps")) + $changes = $changes + $item->checkForChanges(); + $this->addTimeLimit(microtime(true)-$start+5); + } + return $changes; + } +} Added: XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/pings.php =================================================================== --- XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/pings.php (rev 0) +++ XoopsModules/pingtrax/releases/1.01/modules/pingtrax/class/pings.php 2015-12-07 14:35:39 UTC (rev 13183) @@ -0,0 +1,252 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +/** + * Class PingtraxPings + * + * @subpackage pingtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_pings` ( + * `id` int(14) NOT NULL AUTO_INCREMENT, + * `referer` varchar(44) NOT NULL DEFAULT '', + * `type` enum('XML-RPC','SITEMAPS') NOT NULL DEFAULT 'XML-RPC', + * `uri` varchar(250) NOT NULL DEFAULT '', + * `last-item-referer` varchar(44) NOT NULL DEFAULT '', + * `successful-pings` int(18) NOT NULL DEFAULT '0', + * `failed-pings` int(18) NOT NULL DEFAULT '0', + * `sleep-till` int(12) NOT NULL DEFAULT '0', + * `success-time` int(12) NOT NULL DEFAULT '0', + * `failure-time` int(12) NOT NULL DEFAULT '0', + * `created` int(12) NOT NULL DEFAULT '0', + * `updated` int(12) NOT NULL DEFAULT '0', + * `offlined` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`,`referer`,`type`,`uri`), + * KEY `SEARCH` (`referer`,`type`,`uri`,`last-item-referer`,`successful-pings`,`failed-pings`,`id`) USING BTREE, + * KEY `CHRONOLOGISTICS` (`id`,`referer`,`created`,`updated`,`offlined`,`failure-time`,`success-time`,`sleep-till`) USING BTREE KEY_BLOCK_SIZE=128 + * ) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; + * + */ +class PingtraxPings extends XoopsObject +{ + /** + * + */ + function __construct() + { + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('referer', XOBJ_DTYPE_OTHER, sha1(NULL), false, 44); + $this->initVar('type', XOBJ_DTYPE_ENUM, 'XML-RPC', true, false, false, false, array('XML-RPC','SITEMAPS')); + $this->initVar('uri', XOBJ_DTYPE_TXTBOX, null, true, 250); + $this->initVar('last-item-referer', XOBJ_DTYPE_OTHER, sha1(NULL), false, 44); + $this->initVar('successful-pings', XOBJ_DTYPE_INT, 0, false); + $this->initVar('failed-pings', XOBJ_DTYPE_INT, 0, false); + $this->initVar('sleep-till', XOBJ_DTYPE_INT, 0, false); + $this->initVar('success-time', XOBJ_DTYPE_INT, 0, false); + $this->initVar('failure-time', XOBJ_DTYPE_INT, 0, false); + $this->initVar('created', XOBJ_DTYPE_INT, 0, false); + $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); + $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); + } + + /** + * + * @param PingtraxItems $item + * @return mixed + */ + function getPingURL(PingtraxItems $item) + { + $uri = $this->getVar('uri'); + $uri = str_replace(urlencode($item->getVar('item-title')), '%title', $uri); + $uri = str_replace(urlencode($item->getVar('item-decription')), '%description', $uri); + $uri = str_replace(urlencode($item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri')), '%url', $uri); + $uri = str_replace(urlencode($item->getVar('feed-protocol').$item->getVar('feed-domain').$item->getVar('feed-referer-uri')), '%feed', $uri); + return $uri; + } + /** + * + * @param PingtraxItems $item + * @return mixed + */ + function getSitemapURL(PingtraxSitemaps $sitemap) + { + $uri = $this->getVar('uri'); + $uri = str_replace(urlencode($sitemap->getVar('protocol').$sitemap->getVar('domain').(strlen($sitemap->getVar('baseurl'))>1?((substr($sitemap->getVar('baseurl'),0,1)!="/"?"/":"").$sitemap->getVar('baseurl').(substr($sitemap->getVar('baseurl'),strlen($sitemap->getVar('baseurl'))-1,1)!="/"?"/":"")):"/")).$sitemap->getVar('filename'), '%url', $uri); + return $uri; + } + +} + +/** + * Class PingtraxPingsHandler + */ +class PingtraxPingsHandler extends XoopsPersistableObjectHandler +{ + /** + * + * @var unknown + */ + var $_configs = array(); + + /** + * var string URL of JSON Resource for Install + */ + var $_resource = "https://sourceforge.net/p/xoops/svn/HEAD/tree/XoopsModules/pingtrax/data/ping-resources.json?format=raw"; + + /** + * @param null|object $db + */ + function __construct(&$db) + { + $moduleHandler = xoops_gethandler('module'); + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($moduleHandler->getByDirname(basename(dirname(__DIR__)))->getVar('mid')); + + parent::__construct($db, "pingtrax_pings", 'PingtraxPings', 'id', 'referer'); + + $criteria = new Criteria('id',0,"<>"); + if ($this->getCount($criteria)==0) + { + $data = json_decode(file_get_contents($this->_resource), true); + foreach($data as $referer => $values) + { + $obj = $this->create(true); + $obj->setVar('referer', $referer); + $obj->setVar('type', $values['type']); + $obj->setVar('uri', $values['uri']); + $this->insert($obj); + } + } + } + + function insert($object = NULL, $force = true) + { + if ($object->isNew()) + { + $object->setVar('created', time()); + } else { + $object->setVar('updated', time()); + } + return parent::insert($object, $force); + } + + + function makePings($referer = '') + { + $this->addTimeLimit(120); + $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('offline', 0)); + if (!empty($referer)) + $criteria->add(new Criteria('referer', $r... [truncated message content] |
From: <wis...@us...> - 2015-12-07 14:35:15
|
Revision: 13182 http://sourceforge.net/p/xoops/svn/13182 Author: wishcraft Date: 2015-12-07 14:35:13 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Pre-alpha :: More done\!\!\! Modified Paths: -------------- XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/ping.php XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/sitemap.php Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/ping.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/ping.php 2015-12-07 14:31:55 UTC (rev 13181) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/ping.php 2015-12-07 14:35:13 UTC (rev 13182) @@ -34,7 +34,7 @@ function eventCoreFooterEnd($args) { $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); - $pingsHanlder->makePings(''); + $pingsHandler->makePings(''); } } Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/sitemap.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/sitemap.php 2015-12-07 14:31:55 UTC (rev 13181) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/sitemap.php 2015-12-07 14:35:13 UTC (rev 13182) @@ -33,7 +33,7 @@ function eventCoreFooterEnd($args) { $sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); - $sitemapsHanlder->writeSitemaps(''); + $sitemapsHandler->writeSitemaps(''); } } |
From: <wis...@us...> - 2015-12-07 14:31:58
|
Revision: 13181 http://sourceforge.net/p/xoops/svn/13181 Author: wishcraft Date: 2015-12-07 14:31:55 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Pre-alpha :: More done\!\!\! Modified Paths: -------------- XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php Added Paths: ----------- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/about.php XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin.php XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_footer.php XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_header.php XoopsModules/pingtrax/trunk/modules/pingtrax/admin/menu.php XoopsModules/pingtrax/trunk/modules/pingtrax/images/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/pingtrax.css Added: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/about.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/about.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/about.php 2015-12-07 14:31:55 UTC (rev 13181) @@ -0,0 +1,34 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/../../../include/cp_header.php'; +include '../../../class/xoopsformloader.php'; +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + +$aboutAdmin = new ModuleAdmin(); + +echo $aboutAdmin->addNavigation('about.php'); +echo $aboutAdmin->renderabout('6KJ7RW5DR3VTJ', false); + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/about.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin.php 2015-12-07 14:31:55 UTC (rev 13181) @@ -0,0 +1,32 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +include_once dirname(__FILE__) . '/admin_header.php'; +xoops_cp_header(); + +$indexAdmin = new ModuleAdmin(); + +echo $indexAdmin->addNavigation('admin.php'); +echo $indexAdmin->renderIndex(); + +include_once dirname(__FILE__) . '/admin_footer.php'; +//xoops_cp_footer(); Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_footer.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_footer.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_footer.php 2015-12-07 14:31:55 UTC (rev 13181) @@ -0,0 +1,30 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +echo "<div class='adminfooter'>\n" + ." <div style='text-align: center;'>\n" + ." <a href='http://www.xoops.org' rel='external'><img src='{$pathIcon32}/xoopsmicrobutton.gif' alt='XOOPS' title='XOOPS'></a>\n" + ." </div>\n" + ." " . _AM_MODULEADMIN_ADMIN_FOOTER . "\n" + ."</div>"; + +xoops_cp_footer(); Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_footer.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_header.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_header.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_header.php 2015-12-07 14:31:55 UTC (rev 13181) @@ -0,0 +1,68 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +$path = dirname(dirname(dirname(dirname(__FILE__)))); +include_once $path . '/mainfile.php'; +include_once $path . '/include/cp_functions.php'; +require_once $path . '/include/cp_header.php'; + +global $xoopsModule; + +$thisModuleDir = $GLOBALS['xoopsModule']->getVar('dirname'); + +//if functions.php file exist +//require_once dirname(dirname(__FILE__)) . '/include/functions.php'; + +// Load language files +xoops_loadLanguage('admin', $thisModuleDir); +xoops_loadLanguage('modinfo', $thisModuleDir); +xoops_loadLanguage('main', $thisModuleDir); + +$pathIcon16 = '../'.$xoopsModule->getInfo('icons16'); +$pathIcon32 = '../'.$xoopsModule->getInfo('icons32'); +$pathModuleAdmin = $xoopsModule->getInfo('dirmoduleadmin'); + +include_once $GLOBALS['xoops']->path($pathModuleAdmin.'/moduleadmin.php'); + +if ($xoopsUser) { + $moduleperm_handler =& xoops_gethandler('groupperm'); + if (!$moduleperm_handler->checkRight('module_admin', $xoopsModule->getVar('mid'), $xoopsUser->getGroups())) { + redirect_header(XOOPS_URL, 1, _NOPERM); + exit(); + } +} else { + redirect_header(XOOPS_URL . "/user.php", 1, _NOPERM); + exit(); +} + +if (!isset($xoopsTpl) || !is_object($xoopsTpl)) { + include_once(XOOPS_ROOT_PATH."/class/template.php"); + $xoopsTpl = new XoopsTpl(); +} + +//$xoopsTpl->assign('pathIcon16', $pathIcon16); + +if (!isset($GLOBALS['xoopsTpl']) || !is_object($GLOBALS['xoopsTpl'])) { + include_once XOOPS_ROOT_PATH . '/class/template.php'; + $GLOBALS['xoopsTpl'] = new XoopsTpl(); +} Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/admin_header.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/menu.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/menu.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/menu.php 2015-12-07 14:31:55 UTC (rev 13181) @@ -0,0 +1,50 @@ +<?php +/** + * PingTrax Admin + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +// defined("XOOPS_ROOT_PATH") || die("XOOPS root path not defined"); + +$path = dirname(dirname(dirname(dirname(__FILE__)))); +include_once $path . '/mainfile.php'; + +$dirname = basename(dirname(dirname(__FILE__))); +$module_handler = xoops_gethandler('module'); +$module = $module_handler->getByDirname($dirname); +$pathIcon32 = $module->getInfo('icons32'); +$pathModuleAdmin = $module->getInfo('dirmoduleadmin'); +$pathLanguage = $path . $pathModuleAdmin; + +if (!file_exists($fileinc = $pathLanguage . '/language/' . $GLOBALS['xoopsConfig']['language'] . '/' . 'main.php')) { + $fileinc = $pathLanguage . '/language/english/main.php'; +} + +include_once $fileinc; + +$adminmenu = array(); + +$i = 1; +$adminmenu[$i]['title'] = _PM_MI_INDEX; +$adminmenu[$i]['link'] = "admin/admin.php"; +$adminmenu[$i]['icon'] = $pathIcon32.'/home.png' ; +++$i; +$adminmenu[$i]['title'] = _PM_MI_ABOUT; +$adminmenu[$i]['link'] = 'admin/about.php'; +$adminmenu[$i]['icon'] = $pathIcon32.'/about.png'; Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/menu.php ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/images/index.html =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/images/index.html (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/images/index.html 2015-12-07 14:31:55 UTC (rev 13181) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/images/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/pingtrax.css =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/pingtrax.css (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/pingtrax.css 2015-12-07 14:31:55 UTC (rev 13181) @@ -0,0 +1 @@ +@CHARSET "UTF-8"; \ No newline at end of file Modified: XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php 2015-12-07 14:25:21 UTC (rev 13180) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php 2015-12-07 14:31:55 UTC (rev 13181) @@ -28,8 +28,8 @@ $modversion['author'] = "Simon Antony Roberts"; $modversion['credits'] = "Chronolabs"; $modversion['help'] = 'page=help'; -$modversion['license'] = 'GNU GPL 2.0 or later'; -$modversion['license_url'] = "www.gnu.org/licenses/gpl-2.0.html/"; +$modversion['license'] = 'GNU GPL 3.0 or later'; +$modversion['license_url'] = "labs.coop/briefs/legal/general-public-licence/13,3.html"; $modversion['image'] = "images/logo.png"; $modversion['dirname'] = basename(__DIR__); $modversion['dirmoduleadmin'] = '/Frameworks/moduleclasses/moduleadmin'; @@ -37,8 +37,8 @@ $modversion['icons32'] = '../../Frameworks/moduleclasses/icons/32'; //about -$modversion["module_status"] = "Alpha"; -$modversion['release_date'] = '2015/12/01'; +$modversion["module_status"] = "Beta"; +$modversion['release_date'] = '2015/12/08'; $modversion["module_website_url"] = "http://labs.coop/"; $modversion["module_website_name"] = "Chronolabs"; $modversion['min_php'] = '5.3.7'; |
From: <wis...@us...> - 2015-12-07 14:25:25
|
Revision: 13180 http://sourceforge.net/p/xoops/svn/13180 Author: wishcraft Date: 2015-12-07 14:25:21 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Pre-alpha :: More done\!\!\! Added Paths: ----------- XoopsModules/pingtrax/trunk/ XoopsModules/pingtrax/trunk/class/ XoopsModules/pingtrax/trunk/class/smarty/ XoopsModules/pingtrax/trunk/class/smarty/xoops_plugins/ XoopsModules/pingtrax/trunk/class/smarty/xoops_plugins/function.xoTrackbacks.php XoopsModules/pingtrax/trunk/modules/ XoopsModules/pingtrax/trunk/modules/pingtrax/ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/api/ XoopsModules/pingtrax/trunk/modules/pingtrax/api/.htaccess XoopsModules/pingtrax/trunk/modules/pingtrax/api/index.php XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/ XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/class/ XoopsModules/pingtrax/trunk/modules/pingtrax/class/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/class/items.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_pings.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/plugins.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/simple_html_dom.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/sitemaps.php XoopsModules/pingtrax/trunk/modules/pingtrax/class/trackback.php XoopsModules/pingtrax/trunk/modules/pingtrax/images/ XoopsModules/pingtrax/trunk/modules/pingtrax/images/link.png XoopsModules/pingtrax/trunk/modules/pingtrax/images/logo.png XoopsModules/pingtrax/trunk/modules/pingtrax/include/ XoopsModules/pingtrax/trunk/modules/pingtrax/include/category-id-names.txt XoopsModules/pingtrax/trunk/modules/pingtrax/include/exclude-names.txt XoopsModules/pingtrax/trunk/modules/pingtrax/include/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/include/item-id-names.txt XoopsModules/pingtrax/trunk/modules/pingtrax/language/ XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/ XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/help/ XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/help/help.html XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/help/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/language/english/modinfo.php XoopsModules/pingtrax/trunk/modules/pingtrax/language/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/plugins/ XoopsModules/pingtrax/trunk/modules/pingtrax/plugins/default.php XoopsModules/pingtrax/trunk/modules/pingtrax/plugins/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/ XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/items.php XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/ping.php XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/sitemap.php XoopsModules/pingtrax/trunk/modules/pingtrax/preloads/trackback.php XoopsModules/pingtrax/trunk/modules/pingtrax/sql/ XoopsModules/pingtrax/trunk/modules/pingtrax/sql/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/sql/mysql.sql XoopsModules/pingtrax/trunk/modules/pingtrax/sql/tables.json XoopsModules/pingtrax/trunk/modules/pingtrax/templates/ XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/ XoopsModules/pingtrax/trunk/modules/pingtrax/templates/admin/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/templates/blocks/ XoopsModules/pingtrax/trunk/modules/pingtrax/templates/blocks/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/templates/index.html XoopsModules/pingtrax/trunk/modules/pingtrax/templates/sitemaps.xml.html XoopsModules/pingtrax/trunk/modules/pingtrax/templates/xoTrackback.html XoopsModules/pingtrax/trunk/modules/pingtrax/xoops_version.php Removed Paths: ------------- XoopsModules/pingtrax/trunk/ Added: XoopsModules/pingtrax/trunk/class/smarty/xoops_plugins/function.xoTrackbacks.php =================================================================== --- XoopsModules/pingtrax/trunk/class/smarty/xoops_plugins/function.xoTrackbacks.php (rev 0) +++ XoopsModules/pingtrax/trunk/class/smarty/xoops_plugins/function.xoTrackbacks.php 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1,51 @@ +<?php +/** + * PingTrax Smarty Trackback Function + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +function smarty_function_xoTrackbacks($tag_args, &$comp) +{ + $attrs = $comp->_parse_attrs($tag_args); + foreach ($attrs as $arg_name => $arg_value) { + if ($arg_name == 'dirname') { + $dirname = $arg_value; + continue; + } + } + global $pingtraxitem; + if (is_a($pingtraxitem, "PingtraxItems")) + { + $GLOBALS['xoTheme']->addStylesheet(XOOPS_URL . "/modules/pingtrax/pingtrax.css"); + $trackbacksTpl = new XoopsTpl(); + $trackbacksTpl->assign('permlink', $pingtraxitem->getVar('item-protocol').$pingtraxitem->getVar('item-domain').$pingtraxitem->getVar('item-referer-uri')); + $commentHandler = xoops_gethandler('comment'); + $moduleHandler = xoops_gethandler('module'); + $criteria = new CriteriaCompo(new Criteria('com_modid', $moduleHandler->getByDirname('pingtrax')->getVar('mid'))); + $criteria->add(new Criteria('com_itemid', $pingtraxitem->getVar('id'))); + $criteria->setOrder('com_created'); + $criteria->setSort('DESC'); + foreach($commentHandler->getObjects($criteria) as $comid => $comment) + $trackbacksTpl->append('trackbacks', array('subject'=>$comment->getVar('com_title'), 'comment'=>$comment->getVar('com_text'))); + ob_start(); + $trackbacksTpl->display($GLOBALS['xoops']->path('/modules/pingtrax/templates/xoTrackback.html')); + return ob_get_clean(); + } + return ''; +} Added: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/index.html =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/admin/index.html (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/admin/index.html 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/admin/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/api/.htaccess =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/api/.htaccess (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/api/.htaccess 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1,2 @@ +RewriteEngine On +RewriteRule ^([0-9a-z]{32})$ index.php?referer=$1 [L] \ No newline at end of file Added: XoopsModules/pingtrax/trunk/modules/pingtrax/api/index.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/api/index.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/api/index.php 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1,50 @@ +<?php + +require_once dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . "mainfile.php"; +require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . "class". DIRECTORY_SEPARATOR . "trackback.php"; + +$trackback = new PingtraxTrackback($GLOBALS['xoopsConfig']['sitename'], $GLOBALS['xoopsConfig']['sitename'], 'UTF-8'); + +if (!isset($_GET['referer'])) + die($trackback->recieve(false, "\$_GET['referer'] not specified and is required for trackback API!")); + +xoops_load("XoopsUserUtility"); +$moduleHandler = xoops_gethandler('module'); +$commentHandler = xoops_gethandler('comment'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); +$item = $itemsHandler->getByReferer($_GET['referer']); + +if (!is_a($item, "PingtraxItems")) + die($trackback->recieve(false, $_GET['referer'] . " does not match any recorded item on the trackback API!")); + +$url = $_REQUEST["url"]; +if ($url) { + $excerpt = $_REQUEST["excerpt"]; + $name = ($_REQUEST["blog_name"]) ? $_REQUEST["blog_name"] : $url; + $subject = ($_REQUEST["title"]) ? $_REQUEST["title"] : $url; + $comment = "<strong> TrackBack from <a href=\"$url\">$name</a>:</strong><br />"; + $comment .= "<blockquote>$excerpt</blockquote>"; + + $pluginHandler = xoops_getmodulehandler('plugins', 'pingtrax'); + $remoteitem = $pluginHandler->getRemoteObject($item, $url, $name, $subject, $comment); + if (is_a($remoteitem, "PingtraxItems")) + { + $comment = $commentHandler->create(); + $comment->setVar('com_modid', $moduleHandler->getByDirname('pingtrax')->getVar('mid')); + $comment->setVar('com_title', $subject); + $comment->setVar('com_text', $comment); + $comment->setVar('com_created', time()); + $comment->setVar('com_url', $url); + $comment->setVar('com_ip', XoopsUserUtility::getIP(true)); + $comment->setVar('com_itemid', $item->getVar('id')); + $comment->setVar('dohtml', true); + $comment->setVar('dosmiley', true); + $comment->setVar('doxcode', true); + $comment->setVar('doimage', true); + $comment->setVar('dobr', true); + $commentHandler->insert($comment); + } +} else { + die($trackback->recieve(false, "Missing URL for trackback API!")); +} +die($trackback->recieve(true, "")); Added: XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/index.html =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/index.html (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/index.html 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/blocks/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/class/index.html =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/index.html (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/index.html 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1 @@ + <script>history.go(-1);</script> \ No newline at end of file Property changes on: XoopsModules/pingtrax/trunk/modules/pingtrax/class/index.html ___________________________________________________________________ Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: XoopsModules/pingtrax/trunk/modules/pingtrax/class/items.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/items.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/items.php 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1,242 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +/** + * Class PingtraxItems + * + * @subpackage pingtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_items` ( + * `id` mediumint(20) NOT NULL AUTO_INCREMENT, + * `parent-id` mediumint(20) NOT NULL DEFAULT '0', + * `referer` varchar(44) NOT NULL DEFAULT '', + * `type` enum('local','remote','unknown') NOT NULL DEFAULT 'unknown', + * `module-dirname` varchar(30) NOT NULL DEFAULT '', + * `module-class` varchar(100) NOT NULL DEFAULT '', + * `module-item-id` mediumint(30) NOT NULL DEFAULT '0', + * `module-php-self` varchar(150) NOT NULL DEFAULT '', + * `module-get` tinytext, + * `item-author-uid` int(13) NOT NULL DEFAULT '0', + * `item-author-name` varchar(64) NOT NULL DEFAULT '', + * `item-category-id` int(20) NOT NULL DEFAULT '0', + * `item-title` varchar(180) NOT NULL DEFAULT '', + * `item-description` varchar(250) NOT NULL DEFAULT '', + * `item-protocol` enum('https://','http://') NOT NULL DEFAULT 'http://', + * `item-domain` varchar(150) NOT NULL DEFAULT '', + * `item-referer-uri` varchar(250) NOT NULL DEFAULT '', + * `item-php-self` varchar(250) NOT NULL DEFAULT '', + * `feed-protocol` enum('https://','http://') NOT NULL DEFAULT 'http://', + * `feed-domain` varchar(150) NOT NULL DEFAULT '', + * `feed-referer-uri` varchar(250) NOT NULL DEFAULT '', + * `discovery-hook` enum('php','preloader','smarty','combination','unknown') NOT NULL DEFAULT 'unknown', + * `user-session` enum('admin','user','guest','unknown') NOT NULL DEFAULT 'unknown', + * `created` int(12) NOT NULL DEFAULT '0', + * `updated` int(12) NOT NULL DEFAULT '0', + * `offlined` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`), + * KEY `SEARCH` (`referer`,`item-author-uid`,`item-author-name`,`module-dirname`,`item-protocol`,`item-domain`,`item-referer-uri`,`module-php-self`,`item-php-self`,`discovery-hook`,`id`) KEY_BLOCK_SIZE=128, + * KEY `CHRONOLOGISTICS` (`id`,`referer`,`created`,`updated`,`offlined`) USING BTREE KEY_BLOCK_SIZE=64 + * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; + */ +class PingtraxItems extends XoopsObject +{ + /** + * + * @var unknown + */ + var $_configs = array(); + + /** + * + */ + function __construct() + { + $moduleHandler = xoops_gethandler('module'); + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($moduleHandler->getByDirname(basename(dirname(__DIR__)))->getVar('mid')); + + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('parent-id', XOBJ_DTYPE_INT, null, false); + $this->initVar('referer', XOBJ_DTYPE_OTHER, sha1(NULL), false, 44); + $this->initVar('type', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('local','remote','unknown')); + $this->initVar('module-dirname', XOBJ_DTYPE_OTHER, '', false, 30); + $this->initVar('module-class', XOBJ_DTYPE_OTHER, '', false, 100); + $this->initVar('module-item-id', XOBJ_DTYPE_INT, 0, false); + $this->initVar('module-php-self', XOBJ_DTYPE_OTHER, '', false, 150); + $this->initVar('module-get', XOBJ_DTYPE_ARRAY, array(), false); + $this->initVar('item-author-uid', XOBJ_DTYPE_INT, 0, false); + $this->initVar('item-author-name', XOBJ_DTYPE_TXTBOX, '', false, 64); + $this->initVar('item-category-id', XOBJ_DTYPE_INT, null, false); + $this->initVar('item-title', XOBJ_DTYPE_TXTBOX, '', false, 180); + $this->initVar('item-description', XOBJ_DTYPE_TXTBOX, '', false, 250); + $this->initVar('item-protocol', XOBJ_DTYPE_ENUM, XOOPS_PROT, true, false, false, false, array('https://','http://')); + $this->initVar('item-domain', XOBJ_DTYPE_TXTBOX, parse_url(XOOPS_URL, PHP_URL_HOST), true, 150); + $this->initVar('item-referer-uri', XOBJ_DTYPE_TXTBOX, $_SERVER["REQUEST_URI"], true, 250); + $this->initVar('item-php-self', XOBJ_DTYPE_TXTBOX, str_replace(XOOPS_ROOT_PATH, "", $_SERVER["PHP_SELF"]), true, 250); + $this->initVar('feed-protocol', XOBJ_DTYPE_ENUM, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_SCHEME), true, false, false, false, array('https://','http://')); + $this->initVar('feed-domain', XOBJ_DTYPE_TXTBOX, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_HOST), true, 150); + $this->initVar('feed-referer-uri', XOBJ_DTYPE_TXTBOX, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_PATH) . '/backend.php', true, 250); + $this->initVar('discovery-hook', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('php','preloader','smarty','combination','unknown')); + $this->initVar('user-session', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('admin','user','guest','unknown')); + $this->initVar('created', XOBJ_DTYPE_INT, 0, false); + $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); + $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); + } + + /** + * + * @return string + */ + function getPingXML() + { + $xml = "<?xml version=\"1.0\"?>\n"; + $xml .= "<methodCall>\n"; + $xml .= "\t<methodName>weblogUpdates.extendedPing</methodName>\n"; + $xml .= "\t<params>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-title')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-protocol').$this->getVar('item-domain')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-protocol').$this->getVar('item-domain').$this->getVar('item-referer-uri')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('feed-protocol').$this->getVar('feed-domain').$this->getVar('feed-referer-uri')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t</params>\n"; + $xml .= "</methodCall>"; + return $xml; + } +} + +/** + * Class PingtraxItemsHandler + */ +class PingtraxItemsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db, "pingtrax_items", 'PingtraxItems', 'id', 'referer'); + } + + + function insert($object = NULL, $force = true) + { + if ($object->isNew()) + { + $criteria = new Criteria('referer', $object->getVar('referer')); + if ($this->getCount($criteria)==0) + $object->setVar('created', time()); + else + { + $objs = $this->getObjects($criteria, false); + if (isset($objs[0])) + return $objs[0]->getVar('id'); + else + return false; + } + if ($object->getVar('type') == 'local') + { + $sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('protocol', XOOPS_PROT)); + $criteria->add(new Criteria('domain', parse_url(XOOPS_URL, PHP_URL_HOST))); + $criteria->add(new Criteria('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH))); + if ($sitemapsHandler->getCount($criteria)==0) + { + $sitemap = $sitemapsHandler->create(); + $sitemap->setVar('referer', md5(XOOPS_URL.microtime(true).XOOPS_DB_USER.XOOPS_DB_PASS)); + $sitemap->setVar('protocol', XOOPS_PROT); + $sitemap->setVar('domain', parse_url(XOOPS_URL, PHP_URL_HOST)); + $sitemap->setVar('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH)); + $sitemap->setVar('filename', 'sitemap.'.str_replace("://", "", XOOPS_PROT) . "." . parse_url(XOOPS_URL, PHP_URL_HOST) . '.xml'); + $sitemap = $sitemapsHandler->get($sitemap = $sitemapsHandler->insert($sitemap, true)); + } else { + $obj = $sitemapsHandler->getObjects($criteria, false); + if (is_object($obj[0])) + $sitemap = $obj[0]; + } + $items_sitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); + $itemsitemap = $items_sitemapsHandler->create(); + $itemsitemap->setVar('map-referer', $sitemap->getVar('referer')); + $itemsitemap->setVar('item-referer', $object->getVar('referer')); + $items_sitemapsHandler->insert($itemsitemap, true); + $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); + $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('type', 'XML-RPC')); + $criteria->add(new Criteria('offline', 0)); + foreach($pingsHandler->getObjects($criteria, true) as $id => $ping) + { + $itemping = $items_pingsHandler->create(); + $itemping->setVar('ping-referer', $ping->getVar('referer')); + $itemping->setVar('item-referer', $object->getVar('referer')); + $items_pingsHandler->insert($itemping, true); + } + } + } else { + $object->setVar('updated', time()); + } + switch ($object->getVar('user-session')) + { + default: + case 'unknown': + if (is_object($GLOBALS['xoopsUser'])) + { + if ($GLOBALS['xoopsUser']->isAdmin()) + $object->setVar('user-session', 'admin'); + } + case 'admin': + if (is_object($GLOBALS['xoopsUser'])) + { + if (!$GLOBALS['xoopsUser']->isAdmin()) + $object->setVar('user-session', 'user'); + } + case 'user': + if (!is_object($GLOBALS['xoopsUser'])) + $object->setVar('user-session', 'guest'); + case 'guest': + break; + } + return parent::insert($object, $force); + } + + function getByReferer($referer = '') + { + $criteria = new CriteriaCompo(new Criteria('referer', $referer)); + $criteria->add(new Criteria('offline', 0)); + if ($this->getCount($criteria)==0) + return NULL; + $objs = $this->getObjects($criteria, false); + if (isset($objs[0]) && is_a($objs[0], "PingtraxItems")) + return $objs[0]; + return NULL; + } +} Added: XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_pings.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_pings.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_pings.php 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1,73 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +/** + * Class PingtraxItems_pings + * + * @subpackage itemtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_items_pings` ( + * `id` mediumint(32) NOT NULL AUTO_INCREMENT, + * `ping-referer` varchar(44) NOT NULL DEFAULT '', + * `item-referer` varchar(44) NOT NULL DEFAULT '', + * `when` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`), + * KEY `SEARCH` (`id`,`ping-referer`,`item-referer`) USING BTREE, + * KEY `CHRONOLOGISTICS` (`ping-referer`,`item-referer`,`when`) USING BTREE KEY_BLOCK_SIZE=64 + * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; + * + */ +class PingtraxItems_pings extends XoopsObject +{ + /** + * + */ + function __construct() + { + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('ping-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('item-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('when', XOBJ_DTYPE_INT, 0, false); + } + +} + +/** + * Class PingtraxItems_pingsHandler + */ +class PingtraxItems_pingsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db, "pingtrax_items_pings", 'PingtraxItems_pings', 'id', 'ping-referer'); + } + + +} Added: XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/items_sitemaps.php 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1,353 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +require_once __DIR__ . DIRECTORY_SEPARATOR . 'simple_html_dom.php'; + +/** + * Class PingtraxItems_sitemaps + * + * @subpackage itemtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_items_sitemaps` ( + * `id` mediumint(32) NOT NULL AUTO_INCREMENT, + * `map-referer` varchar(44) NOT NULL DEFAULT '', + * `item-referer` varchar(44) NOT NULL DEFAULT '', + * `frequency` enum('monthly','fortnightly','weekly','daily') NOT NULL DEFAULT 'monthly', + * `priority` float(2,1) NOT NULL DEFAULT '0.9', + * `checking` int(12) NOT NULL DEFAULT '0', + * `changed` int(12) NOT NULL DEFAULT '0', + * `changes` int(12) NOT NULL DEFAULT '0', + * `when` int(12) NOT NULL DEFAULT '0', + * `header-md5` varchar(32) NOT NULL DEFAULT '0', + * `header-changes` int(12) NOT NULL DEFAULT '0', + * `header-changed` int(12) NOT NULL DEFAULT '0', + * `header-bytes` int(12) NOT NULL DEFAULT '0', + * `body-md5` varchar(32) NOT NULL DEFAULT '0', + * `body-changes` int(12) NOT NULL DEFAULT '0', + * `body-changed` int(12) NOT NULL DEFAULT '0', + * `body-bytes` int(12) NOT NULL DEFAULT '0', + * `tabled-md5` varchar(32) NOT NULL DEFAULT '0', + * `tabled-changes` int(12) NOT NULL DEFAULT '0', + * `tabled-changed` int(12) NOT NULL DEFAULT '0', + * `tabled-bytes` int(12) NOT NULL DEFAULT '0', + * `dived-md5` varchar(32) NOT NULL DEFAULT '0', + * `dived-changes` int(12) NOT NULL DEFAULT '0', + * `dived-changed` int(12) NOT NULL DEFAULT '0', + * `dived-bytes` int(12) NOT NULL DEFAULT '0', + * `header-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `header-changes-last` int(12) NOT NULL DEFAULT '0', + * `header-changed-last` int(12) NOT NULL DEFAULT '0', + * `header-bytes-last` int(12) NOT NULL DEFAULT '0', + * `body-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `body-changes-last` int(12) NOT NULL DEFAULT '0', + * `body-changed-last` int(12) NOT NULL DEFAULT '0', + * `body-bytes-last` int(12) NOT NULL DEFAULT '0', + * `tabled-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `tabled-changes-last` int(12) NOT NULL DEFAULT '0', + * `tabled-changed-last` int(12) NOT NULL DEFAULT '0', + * `tabled-bytes-last` int(12) NOT NULL DEFAULT '0', + * `dived-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `dived-changes-last` int(12) NOT NULL DEFAULT '0', + * `dived-changed-last` int(12) NOT NULL DEFAULT '0', + * `dived-bytes-last` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`), + * KEY `SEARCH` (`id`,`map-referer`,`item-referer`) USING BTREE, + * KEY `CHRONOLOGISTICS` (`map-referer`,`item-referer`) USING BTREE KEY_BLOCK_SIZE=64 + * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; + * + */ +class PingtraxItems_sitemaps extends XoopsObject +{ + /** + * + */ + function __construct() + { + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('map-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('item-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); + $this->initVar('frequency', XOBJ_DTYPE_ENUM, 'daily', false, false, false, false, false, array('monthly','fortnightly','weekly','daily')); + $this->initVar('priority', XOBJ_DTYPE_FLOAT, 0.9, false); + $this->initVar('checking', XOBJ_DTYPE_INT, time(), false); + $this->initVar('changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('when', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('header-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('body-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('body-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('tabled-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('tabled-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('dived-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('dived-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('header-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-bytes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('body-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('body-bytes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('tabled-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('tabled-bytes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('dived-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('dived-bytes-last', XOBJ_DTYPE_INT, 0, false); + } + + /** + * + */ + function checkForChanges() + { + $changes = 0; + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $item = $itemsHandler->getByReferer($this->getVar('item-referer')); + if (is_a($item, "PingtraxItems")) + { + $html = $this->getURIData($item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri'), 65, 65, $item->getVar('module-get')); + if (strlen($html)==0) + { + foreach($item->getVar('module-get') as $item => $value) + $get[$item] = $value; + $html = $this->getURIData($item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-php-self')."?".http_build_query($get), 65, 65, $get); + } + if (strlen($html)!=0) + { + $dom = str_get_html($html); + // Does headers + $head = $dom->find("head"); + $changes .+ $this->setVars(array('header-md5' => md5($head->innertext), 'header-bytes' => strlen($head->innertext))); + // Does Full Body + $body = $dom->find("body"); + $changes .+ $this->setVars(array('body-md5' => md5($body->plaintext), 'body-bytes' => strlen($body->plaintext))); + // Does Tables + $tablesbytes = 0; + $tablesmd5 = ''; + foreach($dom->find('table') as $table) + { + $tablesmd5 = md5($tablesmd5 . sha1($table->plaintext)); + $tablesbytes = $tablesbytes + strlen($table->plaintext); + } + $changes .+ $this->setVars(array('tabled-md5' => $tablesmd5, 'tabled-bytes' => $tablesbytes)); + // Does Div's + $divsbytes = 0; + $divsmd5 = ''; + foreach($dom->find('div') as $div) + { + $divsmd5 = md5($divsmd5 . sha1($div->plaintext)); + $divsbytes = $divsbytes + strlen($div->plaintext); + } + $changes .+ $this->setVars(array('dived-md5' => $divsmd5, 'dived-bytes' => $divsbytes)); + } + } + return $changes; + } + + /** + * + * {@inheritDoc} + * @see XoopsObject::setVars() + */ + function setVars($var_arr = array()) + { + $changes = 0; + $lasting = array('header' => array('-md5', '-bytes'), 'body' => array('-md5', '-bytes'), 'tabled' => array('-md5', '-bytes'), 'dived' => array('-md5', '-bytes')); + foreach($lasting as $key=> $values) + { + $found = false; + foreach($values as $value) + if (in_array($key.$value, array_keys($var_arr))) + { + if ($this->getVar($key.$value)!=$var_arr[$key.$value]) + foreach($values as $val) + $this->setVar($key.$val.'-last', $this->getVar($key.$val)); + $found = true; + } + if ($found == true) + { + $changes .+ 1; + $this->setVar($key.'-changes', $this->getVar($key.'-changes')+1); + $this->setVar($key.'-changed', time()); + if ($this->getVar('changed')>0) + { + if (time() - $this->getVar('changed') < (3600 * 24)) + { + $this->setvar('frequency', 'daily'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 7)) + { + $this->setvar('frequency', 'weekly'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 14)) + { + $this->setvar('frequency', 'fortnightly'); + } else { + $this->setvar('frequency', 'monthly'); + } + } else + $this->setvar('frequency', 'daily'); + $this->setVar('changed', time()); + $this->setVar('changes', $this->getVar('changes')+1); + if ($this->getvar('priority') < 0.9) + $this->setVar('priority', $this->getVar('priority') + 0.1); + } else { + if ($this->getVar('changed')>0) + { + if (time() - $this->getVar('changed') < (3600 * 24)) + { + $this->setvar('frequency', 'daily'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 7)) + { + $this->setvar('frequency', 'weekly'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 14)) + { + $this->setvar('frequency', 'fortnightly'); + } else { + $this->setvar('frequency', 'monthly'); + } + } else { + $this->setvar('frequency', 'daily'); + $this->setVar('changed', time()); + } + if ($this->getvar('frequency')=='') + $this->setvar('frequency', 'daily'); + if ($this->getvar('priority') > 0.1) + $this->setVar('priority', $this->getVar('priority') - 0.1); + } + } + + switch($this->getVar('frequency')) + { + case 'daily': + default: + $this->setvar('frequency', 'daily'); + $this->setVar('checking', time() + (3600 * 24 - 900)); + break; + case 'weekly': + $this->setVar('checking', time() + (3600 * 24 * 7 - 900)); + break; + case 'fortnightly': + $this->setVar('checking', time() + (3600 * 24 * 14 - 900)); + break; + case 'monthly': + $this->setVar('checking', time() + (3600 * 24 * 7 * 4 - 900)); + break; + } + parent::setVars($var_arr); + return ($changes>0?$changes:false); + } + + + /* function getURIData() + * + * cURL Routine + * @author Simon Roberts (Chronolabs) si...@la... + * + * @return float() + */ + private function getURIData($uri = '', $timeout = 65, $connectout = 65, $post_data = array()) + { + if (!function_exists("curl_init")) + { + return file_get_contents($uri); + } + if (!$btt = curl_init($uri)) { + return false; + } + curl_setopt($btt, CURLOPT_HEADER, 0); + curl_setopt($btt, CURLOPT_POST, (count($posts)==0?false:true)); + if (count($posts)!=0) + curl_setopt($btt, CURLOPT_POSTFIELDS, http_build_query($post_data)); + curl_setopt($btt, CURLOPT_CONNECTTIMEOUT, $connectout); + curl_setopt($btt, CURLOPT_TIMEOUT, $timeout); + curl_setopt($btt, CURLOPT_RETURNTRANSFER, true); + curl_setopt($btt, CURLOPT_VERBOSE, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYPEER, false); + $data = curl_exec($btt); + curl_close($btt); + return $data; + } + + +} + +/** + * Class PingtraxItems_sitemapsHandler + */ +class PingtraxItems_sitemapsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db, "itemtrax_items_sitemaps", 'PingtraxItems_sitemaps', 'id', 'map-referer'); + } + + + /** + * + * @param array $array + */ + private function addTimeLimit($seconds = 30) + { + global $timelimit; + $timelimit .+ $seconds; + set_time_limit($timelimit); + } + + /** + * + * @param string $mapreferer + */ + function checkForChanges($mapreferer = '') + { + $changes = 0; + $this->addTimeLimit(120); + $criteria = new CriteriaCompo(new Criteria('checking', time(), "<=")); + if (!empty($mapreferer)) + $criteria->add(new Criteria('map-referer', $mapreferer)); + foreach($this->getObjects($criteria, true) as $id => $item) + { + $start = microtime(true); + if (is_a($item, "PingtraxItems_sitemaps")) + $changes = $changes + $item->checkForChanges(); + $this->addTimeLimit(microtime(true)-$start+5); + } + return $changes; + } +} Added: XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/pings.php 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1,252 @@ +<?php +/** + * Pingtrax Database Class Handler module + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + + +/** + * Class PingtraxPings + * + * @subpackage pingtrax + * + * Database MySQL Table:- + * + * CREATE TABLE `pingtrax_pings` ( + * `id` int(14) NOT NULL AUTO_INCREMENT, + * `referer` varchar(44) NOT NULL DEFAULT '', + * `type` enum('XML-RPC','SITEMAPS') NOT NULL DEFAULT 'XML-RPC', + * `uri` varchar(250) NOT NULL DEFAULT '', + * `last-item-referer` varchar(44) NOT NULL DEFAULT '', + * `successful-pings` int(18) NOT NULL DEFAULT '0', + * `failed-pings` int(18) NOT NULL DEFAULT '0', + * `sleep-till` int(12) NOT NULL DEFAULT '0', + * `success-time` int(12) NOT NULL DEFAULT '0', + * `failure-time` int(12) NOT NULL DEFAULT '0', + * `created` int(12) NOT NULL DEFAULT '0', + * `updated` int(12) NOT NULL DEFAULT '0', + * `offlined` int(12) NOT NULL DEFAULT '0', + * PRIMARY KEY (`id`,`referer`,`type`,`uri`), + * KEY `SEARCH` (`referer`,`type`,`uri`,`last-item-referer`,`successful-pings`,`failed-pings`,`id`) USING BTREE, + * KEY `CHRONOLOGISTICS` (`id`,`referer`,`created`,`updated`,`offlined`,`failure-time`,`success-time`,`sleep-till`) USING BTREE KEY_BLOCK_SIZE=128 + * ) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; + * + */ +class PingtraxPings extends XoopsObject +{ + /** + * + */ + function __construct() + { + $this->XoopsObject(); + $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('referer', XOBJ_DTYPE_OTHER, sha1(NULL), false, 44); + $this->initVar('type', XOBJ_DTYPE_ENUM, 'XML-RPC', true, false, false, false, array('XML-RPC','SITEMAPS')); + $this->initVar('uri', XOBJ_DTYPE_TXTBOX, null, true, 250); + $this->initVar('last-item-referer', XOBJ_DTYPE_OTHER, sha1(NULL), false, 44); + $this->initVar('successful-pings', XOBJ_DTYPE_INT, 0, false); + $this->initVar('failed-pings', XOBJ_DTYPE_INT, 0, false); + $this->initVar('sleep-till', XOBJ_DTYPE_INT, 0, false); + $this->initVar('success-time', XOBJ_DTYPE_INT, 0, false); + $this->initVar('failure-time', XOBJ_DTYPE_INT, 0, false); + $this->initVar('created', XOBJ_DTYPE_INT, 0, false); + $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); + $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); + } + + /** + * + * @param PingtraxItems $item + * @return mixed + */ + function getPingURL(PingtraxItems $item) + { + $uri = $this->getVar('uri'); + $uri = str_replace(urlencode($item->getVar('item-title')), '%title', $uri); + $uri = str_replace(urlencode($item->getVar('item-decription')), '%description', $uri); + $uri = str_replace(urlencode($item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri')), '%url', $uri); + $uri = str_replace(urlencode($item->getVar('feed-protocol').$item->getVar('feed-domain').$item->getVar('feed-referer-uri')), '%feed', $uri); + return $uri; + } + /** + * + * @param PingtraxItems $item + * @return mixed + */ + function getSitemapURL(PingtraxSitemaps $sitemap) + { + $uri = $this->getVar('uri'); + $uri = str_replace(urlencode($sitemap->getVar('protocol').$sitemap->getVar('domain').(strlen($sitemap->getVar('baseurl'))>1?((substr($sitemap->getVar('baseurl'),0,1)!="/"?"/":"").$sitemap->getVar('baseurl').(substr($sitemap->getVar('baseurl'),strlen($sitemap->getVar('baseurl'))-1,1)!="/"?"/":"")):"/")).$sitemap->getVar('filename'), '%url', $uri); + return $uri; + } + +} + +/** + * Class PingtraxPingsHandler + */ +class PingtraxPingsHandler extends XoopsPersistableObjectHandler +{ + /** + * + * @var unknown + */ + var $_configs = array(); + + /** + * var string URL of JSON Resource for Install + */ + var $_resource = "https://sourceforge.net/p/xoops/svn/HEAD/tree/XoopsModules/pingtrax/data/ping-resources.json?format=raw"; + + /** + * @param null|object $db + */ + function __construct(&$db) + { + $moduleHandler = xoops_gethandler('module'); + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($moduleHandler->getByDirname(basename(dirname(__DIR__)))->getVar('mid')); + + parent::__construct($db, "pingtrax_pings", 'PingtraxPings', 'id', 'referer'); + + $criteria = new Criteria('id',0,"<>"); + if ($this->getCount($criteria)==0) + { + $data = json_decode(file_get_contents($this->_resource), true); + foreach($data as $referer => $values) + { + $obj = $this->create(true); + $obj->setVar('referer', $referer); + $obj->setVar('type', $values['type']); + $obj->setVar('uri', $values['uri']); + $this->insert($obj); + } + } + } + + function insert($object = NULL, $force = true) + { + if ($object->isNew()) + { + $object->setVar('created', time()); + } else { + $object->setVar('updated', time()); + } + return parent::insert($object, $force); + } + + + function makePings($referer = '') + { + $this->addTimeLimit(120); + $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('offline', 0)); + if (!empty($referer)) + $criteria->add(new Criteria('referer', $referer)); + $sleepcriteria = new CriteriaCompo(new Criteria('sleep-till', 0), 'OR'); + $sleepcriteria->add(new Criteria('sleep-till', time(), "<="), 'OR'); + $criteria->add($sleepcriteria, 'AND'); + $criteria->add(new Criteria('type', 'XML-RPC'), 'AND'); + foreach($this->getObjects($criteria, true) as $id => $ping) + { + $start = microtime(true); + $criteria = new CriteriaCompo(new Criteria('when', 0)); + $criteria->add(new Criteria('ping-referer', $ping->getVar('referer'))); + foreach($items_pingsHandler->getObjects($criteria, true) as $piid => $itemping) + { + $item = $itemsHandler->getByReferer($itemping->getVar('item-referer')); + if (is_a($item, "PingtraxItems")) + { + $context = stream_context_create(array('http' => array( + 'method' => "POST", + 'header' => "Content-Type: text/xml\r\n", + 'content' => $item->getPingXML() + ))); + $file = @file_get_contents($ping->getPingURL($item), false, $context); + if ($file === false) { + $ping->setVar('failed-pings', $this->getVar('failed-pings') + 1); + $ping->setVar('failure-time', time()); + } + elseif ($file) { + $ping->setVar('successful-pings', $this->getVar('successful-pings') + 1); + $ping->setVar('success-time', time()); + $itemping->setVar('when', time()); + $items_pingsHandler->insert($itemping, true); + } + + } + } + switch($this->_config['pings_sleep_till']) + { + case 0: + $ping->setVar('sleep-till', time() + mt_rand(600, 3600*24)); + break; + default: + $ping->setVar('sleep-till', time() + $this->_config['pings_sleep_till']); + break; + } + $this->insert($ping, true); + } + } + + + function sendSitemap(PingtraxSitemaps $sitemap) + { + $this->addTimeLimit(120); + $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('offline', 0)); + if (!empty($referer)) + $criteria->add(new Criteria('referer', $referer)); + $sleepcriteria = new CriteriaCompo(new Criteria('sleep-till', 0), 'OR'); + $sleepcriteria->add(new Criteria('sleep-till', time(), "<="), 'OR'); + $criteria->add($sleepcriteria, 'AND'); + $criteria->add(new Criteria('type', 'SITEMAPS'), 'AND'); + foreach($this->getObjects($criteria, true) as $id => $ping) + { + $start = microtime(true); + if (is_a($sitemap, "PingtraxSitemaps")) + { + $file = @file_get_contents($ping->getSitemapURL($sitemap), false); + if ($file === false) { + $ping->setVar('failed-pings', $this->getVar('failed-pings') + 1); + $ping->setVar('failure-time', time()); + } + elseif ($file) { + $ping->setVar('successful-pings', $this->getVar('successful-pings') + 1); + $ping->setVar('success-time', time()); + $itemping->setVar('when', time()); + $items_pingsHandler->insert($itemping, true); + } + } + switch($this->_config['pings_sleep_till']) + { + case 0: + $ping->setVar('sleep-till', time() + mt_rand(600, 3600*24)); + break; + default: + $ping->setVar('sleep-till', time() + $this->_config['pings_sleep_till']); + break; + } + $this->insert($ping, true); + } + } +} Added: XoopsModules/pingtrax/trunk/modules/pingtrax/class/plugins.php =================================================================== --- XoopsModules/pingtrax/trunk/modules/pingtrax/class/plugins.php (rev 0) +++ XoopsModules/pingtrax/trunk/modules/pingtrax/class/plugins.php 2015-12-07 14:25:21 UTC (rev 13180) @@ -0,0 +1,520 @@ +<?php +/** + * PingTrax Constructor for Plugin's + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +defined('XOOPS_ROOT_PATH') || die('XOOPS root path not defined'); + +/** + * Class PingtraxPlugins + */ +class PingtraxPlugins extends XoopsObject +{ + + /** + * @var array + */ + var $_configs = array(); + + /** + * + */ + function __construct() + { + $this->XoopsObject(); + + // Load Module Config's into object array + $moduleHandler = xoops_gethandler('module'); + $module = $moduleHandler->getByDirname('pingtrax'); + if (is_a($module, 'XoopsModule')) + { + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($module->getVar('mid')); + } + } + + /** + * + */ + function getModuleDirname() + { + if (is_a($GLOBALS['xoopsModule'], 'XoopsModule')) + { + return $GLOBALS['xoopsModule']->getVar('dirname'); + } + } + + /** + * + */ + function getModuleClass() + { + switch ($this->getModulePHPSelf()) + { + default: + + foreach(get_declared_classes() as $class) + { + if ($this->getModuleDirname() != '' && substr(strtolower($class), 0, strlen($this->getModuleDirname()))==strtolower($this->getModuleDirname()) && (!strpos(strtolower($class), 'categor') && !strpos(strtolower($this->getModulePHPSelf()), 'categor'))) + { + @$obj = new $class(); + if (is_a($obj, "XoopsPersistableObjectHandler")) + return strtolower(str_replace(array(ucfirst($this->getModuleDirname()), $this->getModuleDirname(), 'handler', 'Handler'), '', $class)); + } + } + + break; + } + } + + /** + * + */ + function getModuleItemID() + { + $id = 0; + switch ($this->getModulePHPSelf()) + { + default: + + $idnaming = explode(PHP_EOL, file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'item-id-names.txt')); + foreach($_GET as $key => $value) + { + if (!is_array($value)) + { + foreach($idnaming as $idname) + { + if (strpos($key, $idname) && is_numeric($_GET[$key])) + $id = $_GET[$key]; + elseif (is_numeric($_GET[$key]) && !in_array($key, explode(PHP_EOL, file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'exclude-names.txt')))) + $id = $_GET[$key]; + } + } + } + } + return $id; + } + + /** + * + */ + function getModulePHPSelf() + { + $parts = explode(DIRECTORY_SEPARATOR, $this->getItemPHPSelf()); + $found = false; + foreach($parts as $id => $value) + { + if ($found == false) + unset($parts[$id]); + if ($value == 'modules') + $found = true; + } + return implode(DIRECTORY_SEPARATOR, $parts); + } + + /** + * + */ + function getModuleGet() + { + return $_GET; + } + + + /** + * + */ + function getItemCategoryID() + { + $id = 0; + switch ($this->getModulePHPSelf()) + { + default: + + $idnaming = explode(PHP_EOL, file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'category-id-names.txt')); + foreach($_GET as $key => $value) + { + if (!is_array($value)) + { + foreach($idnaming as $idname) + { + if (strpos($key, $idname) && is_numeric($_GET[$key])) + $id = $_GET[$key]; + elseif ($id = 0 && is_numeric($_GET[$key]) && !in_array($key, explode(PHP_EOL, file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'exclude-names.txt')))) + $id = $_GET[$key]; + } + } + } + } + return $id; + } + + /** + * + */ + function getItemProtocol() + { + return strtolower(XOOPS_PROT); + } + + /** + * + */ + function getItemDomain() + { + return parse_url(strtolower(XOOPS_URL), PHP_URL_HOST); + } + + /** + * + */ + function getItemRefererURI() + { + return $_SERVER["REQUEST_URI"]; + } + + /** + * + */ + function getItemPHPSelf() + { + if (XOOPS_ROOT_PATH == substr(strtolower($_SERVER["REQUEST_URI"]), 0, strlen(XOOPS_ROOT_PATH))) + return substr($_SERVER["PHP_SELF"], strlen(XOOPS_ROOT_PATH)-1); + return $_SERVER["PHP_SELF"]; + } + + + /** + * + */ + function getItemTitle() + { + switch ($this->getModulePHPSelf()) + { + default: + + if (is_object($GLOBALS['xoopsTpl'])) + return $GLOBALS['xoopsTpl']->_tpl_vars['xoops_pagetitle']; + break; + } + return $GLOBALS["xoopsConfig"]['sitename']; + } + + + /** + * + */ + function getItemDescription() + { + switch ($this->getModulePHPSelf()) + { + default: + + if (is_object($GLOBALS['xoopsTpl'])) + return $GLOBALS['xoopsTpl']->_tpl_vars['xoops_meta_description']; + break; + } + return $GLOBALS["xoopsConfigMetaFooter"]['meta_description']; + } + + /** + * + */ + function getItemAuthorUID() + { + static $uid = 0; + if ($uid = 0) + switch ($this->getModulePHPSelf()) + { + default: + foreach($GLOBALS['xoopsTpl']->_tpl_vars as $key => $values) + { + if ($key = 'uid' && is_numeric($values)) + $uid = $values; + elseif(is_array($values)) + $uid = explore_array($values, 'uid', 'uid=([0-9]+)'); + elseif(is_string($values)) + { + preg_match('uid=([0-9])+', $values, $matches); + if (!empty($matches)) + { + foreach($matches as $match) + { + if (is_array($match)) + { + foreach($match as $value) + if (is_numeric($value)) + { + $uid = $value; + continue; + continue; + continue; + continue; + } + } else { + $uid = $match; + continue; + continue; + continue; + } + } + } + } + if ($uid>0) + continue; + } + } + return $uid; + } + + function explore_array($array = array(), $key = 'uid', $pattern = 'uid=([0-9]+)') + { + foreach($array as $key => $values) + { + if ($key = 'uid' && is_numeric($values)) + return $values; + elseif(is_array($values)) + return explore_array($values, 'uid', 'uid=([0-9]+)'); + elseif(is_string($values)) + { + preg_match('uid=([0-9])+', $values, $matches); + if (!empty($matches)) + foreach($matches as $match) + if (is_array($match)) + foreach($match as $value) + if (is_numeric($value)) + { + return $value; + } + else + return $match; + } + } + } + + /** + * + */ + function getItemAuthorName() + { + switch ($this->getModulePHPSelf()) + { + default: + if ($this->getItemAuthorUID()>0) + { + $userHandler = xoops_gethandler('user'); + $user = $userHandler->get($this->getItemAuthorUID()); + if (is_a($user, "XoopsUser")) + { + if (trim($user->getVar('name'))!='') + return trim($user->getVar('name')); + else + return trim($user->getVar('uname')); + } + } + } + return $GLOBALS["xoopsConfig"]['sitename']; + } + + + /** + * + */ + function getFeedProtocol() + { + return parse_url(strtolower(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url'])), PHP_URL_SCHEME); + } + + /** + * + */ + function getFeedDomain() + { + return parse_url(strtolower(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url'])), PHP_URL_HOST); + } + + /** + * + */ + function getFeedRefererURI() + { + return parse_url(strtolower(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url'])), PHP_URL_PATH) . "?" .parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_QUERY); + } + +} + + +/** + * Class PingtraxPluginsHandler + */ +class PingtraxPluginsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @var string + */ + var $_default = 'default'; + + /** + * @var array + */ + var $_plugins = array(); + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db); + } + + + function getRemoteObject(PingtraxItems $item, $url = '', $name = '', $subject = '', $comment = '') +... [truncated message content] |
From: <wis...@us...> - 2015-12-07 13:57:45
|
Revision: 13179 http://sourceforge.net/p/xoops/svn/13179 Author: wishcraft Date: 2015-12-07 13:57:42 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Pre-alpha :: More done\!\!\! Modified Paths: -------------- XoopsModules/pingtrax/trunk/images/logo.png Modified: XoopsModules/pingtrax/trunk/images/logo.png =================================================================== (Binary files differ) |
From: <wis...@us...> - 2015-12-07 13:42:47
|
Revision: 13178 http://sourceforge.net/p/xoops/svn/13178 Author: wishcraft Date: 2015-12-07 13:42:44 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Pre-alpha :: More done\!\!\! Modified Paths: -------------- XoopsModules/pingtrax/trunk/api/index.php XoopsModules/pingtrax/trunk/class/items.php XoopsModules/pingtrax/trunk/class/plugins.php XoopsModules/pingtrax/trunk/sql/mysql.sql Modified: XoopsModules/pingtrax/trunk/api/index.php =================================================================== --- XoopsModules/pingtrax/trunk/api/index.php 2015-12-07 13:02:52 UTC (rev 13177) +++ XoopsModules/pingtrax/trunk/api/index.php 2015-12-07 13:42:44 UTC (rev 13178) @@ -1 +1,50 @@ <?php + +require_once dirname(dirname(dirname(__DIR__))) . DIRECTORY_SEPARATOR . "mainfile.php"; +require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . "class". DIRECTORY_SEPARATOR . "trackback.php"; + +$trackback = new PingtraxTrackback($GLOBALS['xoopsConfig']['sitename'], $GLOBALS['xoopsConfig']['sitename'], 'UTF-8'); + +if (!isset($_GET['referer'])) + die($trackback->recieve(false, "\$_GET['referer'] not specified and is required for trackback API!")); + +xoops_load("XoopsUserUtility"); +$moduleHandler = xoops_gethandler('module'); +$commentHandler = xoops_gethandler('comment'); +$itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); +$item = $itemsHandler->getByReferer($_GET['referer']); + +if (!is_a($item, "PingtraxItems")) + die($trackback->recieve(false, $_GET['referer'] . " does not match any recorded item on the trackback API!")); + +$url = $_REQUEST["url"]; +if ($url) { + $excerpt = $_REQUEST["excerpt"]; + $name = ($_REQUEST["blog_name"]) ? $_REQUEST["blog_name"] : $url; + $subject = ($_REQUEST["title"]) ? $_REQUEST["title"] : $url; + $comment = "<strong> TrackBack from <a href=\"$url\">$name</a>:</strong><br />"; + $comment .= "<blockquote>$excerpt</blockquote>"; + + $pluginHandler = xoops_getmodulehandler('plugins', 'pingtrax'); + $remoteitem = $pluginHandler->getRemoteObject($item, $url, $name, $subject, $comment); + if (is_a($remoteitem, "PingtraxItems")) + { + $comment = $commentHandler->create(); + $comment->setVar('com_modid', $moduleHandler->getByDirname('pingtrax')->getVar('mid')); + $comment->setVar('com_title', $subject); + $comment->setVar('com_text', $comment); + $comment->setVar('com_created', time()); + $comment->setVar('com_url', $url); + $comment->setVar('com_ip', XoopsUserUtility::getIP(true)); + $comment->setVar('com_itemid', $item->getVar('id')); + $comment->setVar('dohtml', true); + $comment->setVar('dosmiley', true); + $comment->setVar('doxcode', true); + $comment->setVar('doimage', true); + $comment->setVar('dobr', true); + $commentHandler->insert($comment); + } +} else { + die($trackback->recieve(false, "Missing URL for trackback API!")); +} +die($trackback->recieve(true, "")); Modified: XoopsModules/pingtrax/trunk/class/items.php =================================================================== --- XoopsModules/pingtrax/trunk/class/items.php 2015-12-07 13:02:52 UTC (rev 13177) +++ XoopsModules/pingtrax/trunk/class/items.php 2015-12-07 13:42:44 UTC (rev 13178) @@ -30,6 +30,7 @@ * * CREATE TABLE `pingtrax_items` ( * `id` mediumint(20) NOT NULL AUTO_INCREMENT, + * `parent-id` mediumint(20) NOT NULL DEFAULT '0', * `referer` varchar(44) NOT NULL DEFAULT '', * `type` enum('local','remote','unknown') NOT NULL DEFAULT 'unknown', * `module-dirname` varchar(30) NOT NULL DEFAULT '', @@ -78,6 +79,7 @@ $this->XoopsObject(); $this->initVar('id', XOBJ_DTYPE_INT, null, false); + $this->initVar('parent-id', XOBJ_DTYPE_INT, null, false); $this->initVar('referer', XOBJ_DTYPE_OTHER, sha1(NULL), false, 44); $this->initVar('type', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('local','remote','unknown')); $this->initVar('module-dirname', XOBJ_DTYPE_OTHER, '', false, 30); @@ -87,6 +89,7 @@ $this->initVar('module-get', XOBJ_DTYPE_ARRAY, array(), false); $this->initVar('item-author-uid', XOBJ_DTYPE_INT, 0, false); $this->initVar('item-author-name', XOBJ_DTYPE_TXTBOX, '', false, 64); + $this->initVar('item-category-id', XOBJ_DTYPE_INT, null, false); $this->initVar('item-title', XOBJ_DTYPE_TXTBOX, '', false, 180); $this->initVar('item-description', XOBJ_DTYPE_TXTBOX, '', false, 250); $this->initVar('item-protocol', XOBJ_DTYPE_ENUM, XOOPS_PROT, true, false, false, false, array('https://','http://')); Modified: XoopsModules/pingtrax/trunk/class/plugins.php =================================================================== --- XoopsModules/pingtrax/trunk/class/plugins.php 2015-12-07 13:02:52 UTC (rev 13177) +++ XoopsModules/pingtrax/trunk/class/plugins.php 2015-12-07 13:42:44 UTC (rev 13178) @@ -385,6 +385,55 @@ parent::__construct($db); } + + function getRemoteObject(PingtraxItems $item, $url = '', $name = '', $subject = '', $comment = '') + { + $ret = array(); + + if (file_exists($file = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . ($dirname = $item->getVar('module-dirname')) . '.php')) + { + require_once $file; + } elseif (file_exists($file = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . ($dirname = $this->_default) . '.php')) + { + require_once $file; + } + + if (class_exists($class = "PingtraxPlugins".ucfirst(strtolower($dirname))) && empty($this->_plugins[$dirname])) + { + $this->_plugins[$dirname] = new $class(); + } + if (is_object($this->_plugins[$dirname])) + { + $ret['type'] = 'remote'; + $ret['module-dirname'] = 'pingtrax'; + $ret['module-class'] = 'items'; + $ret['module-item-id'] = $item->getVar('id'); + $ret['parent-id'] = $item->getVar('id'); + $ret['item-author-name'] = $name; + $ret['item-title'] = $subject; + $ret['item-description'] = $comment; + $ret['module-php-self'] = $this->_plugins[$dirname]->getModulePHPSelf(); + $ret['module-get'] = $this->_plugins[$dirname]->getModuleGet(); + $ret['item-category-id'] = $this->_plugins[$dirname]->getItemCategoryID(); + $ret['item-protocol'] = $this->_plugins[$dirname]->getItemProtocol(); + $ret['item-domain'] = $this->_plugins[$dirname]->getItemDomain(); + $ret['item-referer-uri'] = $this->_plugins[$dirname]->getItemRefererURI(); + $ret['feed-protocol'] = $this->_plugins[$dirname]->getFeedProtocol(); + $ret['feed-domain'] = $this->_plugins[$dirname]->getFeedDomain(); + $ret['feed-referer-uri'] = $this->_plugins[$dirname]->getFeedRefererURI(); + $ret['item-php-self'] = $this->_plugins[$dirname]->getItemPHPSelf(); + $ret['referer'] = $this->getReferer($ret); + } + if (!empty($ret)) + { + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $item = $itemsHandler->create(true); + $item->setVars($ret); + $ret = $itemsHandler->get($itemsHandler->insert($item)); + } + return $ret; + } + function getItemObject() { $ret = array(); Modified: XoopsModules/pingtrax/trunk/sql/mysql.sql =================================================================== --- XoopsModules/pingtrax/trunk/sql/mysql.sql 2015-12-07 13:02:52 UTC (rev 13177) +++ XoopsModules/pingtrax/trunk/sql/mysql.sql 2015-12-07 13:42:44 UTC (rev 13178) @@ -1,6 +1,7 @@ CREATE TABLE `pingtrax_items` ( `id` mediumint(20) NOT NULL AUTO_INCREMENT, + `parent-id` mediumint(20) NOT NULL DEFAULT '0' `referer` varchar(44) NOT NULL DEFAULT '', `type` enum('local','remote','unknown') NOT NULL DEFAULT 'unknown', `module-dirname` varchar(30) NOT NULL DEFAULT '', @@ -10,7 +11,6 @@ `module-get` tinytext, `item-author-uid` int(13) NOT NULL DEFAULT '0', `item-author-name` varchar(64) NOT NULL DEFAULT '', - `item-id` int(20) NOT NULL DEFAULT '0', `item-category-id` int(20) NOT NULL DEFAULT '0', `item-title` varchar(180) NOT NULL DEFAULT '', `item-description` varchar(250) NOT NULL DEFAULT '', |
From: <wis...@us...> - 2015-12-07 13:02:54
|
Revision: 13177 http://sourceforge.net/p/xoops/svn/13177 Author: wishcraft Date: 2015-12-07 13:02:52 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Pre-alpha :: More done\!\!\! Removed Paths: ------------- XoopsModules/pingtrax/trunk/class/pings_sitemaps.php Deleted: XoopsModules/pingtrax/trunk/class/pings_sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/class/pings_sitemaps.php 2015-12-07 13:02:17 UTC (rev 13176) +++ XoopsModules/pingtrax/trunk/class/pings_sitemaps.php 2015-12-07 13:02:52 UTC (rev 13177) @@ -1,73 +0,0 @@ -<?php -/** - * Pingtrax Database Class Handler module - * - * You may not change or alter any portion of this comment or credits - * of supporting developers from this source code or any supporting source code - * which is considered copyrighted (c) material of the original comment or credit authors. - * 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. - * - * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ - * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) - * @author Simon Antony Roberts <wis...@us...> - * @see http://sourceforge.net/projects/xoops/ - * @see http://sourceforge.net/projects/chronolabs/ - * @see http://sourceforge.net/projects/chronolabsapi/ - * @see http://labs.coop - * @version 1.0.1 - * @since 1.0.1 - */ - - -/** - * Class PingtraxPings_sitemaps - * - * @subpackage pingtrax - * - * Database MySQL Table:- - * - * CREATE TABLE `pingtrax_pings_sitemaps` ( - * `id` mediumint(32) NOT NULL AUTO_INCREMENT, - * `map-referer` varchar(44) NOT NULL DEFAULT '', - * `ping-referer` varchar(44) NOT NULL DEFAULT '', - * `when` int(12) NOT NULL DEFAULT '0', - * PRIMARY KEY (`id`), - * KEY `SEARCH` (`id`,`map-referer`,`ping-referer`) USING BTREE, - * KEY `CHRONOLOGISTICS` (`map-referer`,`ping-referer`,`when`) USING BTREE KEY_BLOCK_SIZE=64 - * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; - * - */ -class PingtraxPings_sitemaps extends XoopsObject -{ - /** - * - */ - function __construct() - { - $this->XoopsObject(); - $this->initVar('id', XOBJ_DTYPE_INT, null, false); - $this->initVar('map-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); - $this->initVar('ping-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); - $this->initVar('when', XOBJ_DTYPE_INT, 0, false); - } - -} - -/** - * Class PingtraxPings_sitemapsHandler - */ -class PingtraxPings_sitemapsHandler extends XoopsPersistableObjectHandler -{ - - /** - * @param null|object $db - */ - function __construct(&$db) - { - parent::__construct($db, "pingtrax_pings_sitemaps", 'PingtraxPings_sitemaps', 'id', 'map-referer'); - } - - -} |
From: <wis...@us...> - 2015-12-07 13:02:19
|
Revision: 13176 http://sourceforge.net/p/xoops/svn/13176 Author: wishcraft Date: 2015-12-07 13:02:17 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Pre-alpha :: More done\!\!\! Modified Paths: -------------- XoopsModules/pingtrax/trunk/class/items.php XoopsModules/pingtrax/trunk/class/pings.php XoopsModules/pingtrax/trunk/class/sitemaps.php XoopsModules/pingtrax/trunk/class/trackback.php XoopsModules/pingtrax/trunk/language/english/modinfo.php XoopsModules/pingtrax/trunk/preloads/ping.php XoopsModules/pingtrax/trunk/preloads/sitemap.php XoopsModules/pingtrax/trunk/preloads/trackback.php XoopsModules/pingtrax/trunk/sql/mysql.sql XoopsModules/pingtrax/trunk/sql/tables.json XoopsModules/pingtrax/trunk/xoops_version.php Added Paths: ----------- XoopsModules/pingtrax/trunk/api/.htaccess XoopsModules/pingtrax/trunk/api/index.php Added: XoopsModules/pingtrax/trunk/api/.htaccess =================================================================== --- XoopsModules/pingtrax/trunk/api/.htaccess (rev 0) +++ XoopsModules/pingtrax/trunk/api/.htaccess 2015-12-07 13:02:17 UTC (rev 13176) @@ -0,0 +1,2 @@ +RewriteEngine On +RewriteRule ^([0-9a-z]{32})$ index.php?referer=$1 [L] \ No newline at end of file Added: XoopsModules/pingtrax/trunk/api/index.php =================================================================== --- XoopsModules/pingtrax/trunk/api/index.php (rev 0) +++ XoopsModules/pingtrax/trunk/api/index.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -0,0 +1 @@ +<?php Modified: XoopsModules/pingtrax/trunk/class/items.php =================================================================== --- XoopsModules/pingtrax/trunk/class/items.php 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/class/items.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -61,11 +61,21 @@ */ class PingtraxItems extends XoopsObject { + /** + * + * @var unknown + */ + var $_configs = array(); + /** * */ function __construct() { + $moduleHandler = xoops_gethandler('module'); + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($moduleHandler->getByDirname(basename(dirname(__DIR__)))->getVar('mid')); + $this->XoopsObject(); $this->initVar('id', XOBJ_DTYPE_INT, null, false); $this->initVar('referer', XOBJ_DTYPE_OTHER, sha1(NULL), false, 44); @@ -83,9 +93,9 @@ $this->initVar('item-domain', XOBJ_DTYPE_TXTBOX, parse_url(XOOPS_URL, PHP_URL_HOST), true, 150); $this->initVar('item-referer-uri', XOBJ_DTYPE_TXTBOX, $_SERVER["REQUEST_URI"], true, 250); $this->initVar('item-php-self', XOBJ_DTYPE_TXTBOX, str_replace(XOOPS_ROOT_PATH, "", $_SERVER["PHP_SELF"]), true, 250); - $this->initVar('feed-protocol', XOBJ_DTYPE_ENUM, XOOPS_PROT, true, false, false, false, array('https://','http://')); - $this->initVar('feed-domain', XOBJ_DTYPE_TXTBOX, parse_url(XOOPS_URL, PHP_URL_HOST), true, 150); - $this->initVar('feed-referer-uri', XOBJ_DTYPE_TXTBOX, parse_url(XOOPS_URL, PHP_URL_PATH) . '/backend.php', true, 250); + $this->initVar('feed-protocol', XOBJ_DTYPE_ENUM, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_SCHEME), true, false, false, false, array('https://','http://')); + $this->initVar('feed-domain', XOBJ_DTYPE_TXTBOX, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_HOST), true, 150); + $this->initVar('feed-referer-uri', XOBJ_DTYPE_TXTBOX, parse_url(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url']), PHP_URL_PATH) . '/backend.php', true, 250); $this->initVar('discovery-hook', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('php','preloader','smarty','combination','unknown')); $this->initVar('user-session', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('admin','user','guest','unknown')); $this->initVar('created', XOBJ_DTYPE_INT, 0, false); @@ -93,6 +103,32 @@ $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); } + /** + * + * @return string + */ + function getPingXML() + { + $xml = "<?xml version=\"1.0\"?>\n"; + $xml .= "<methodCall>\n"; + $xml .= "\t<methodName>weblogUpdates.extendedPing</methodName>\n"; + $xml .= "\t<params>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-title')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-protocol').$this->getVar('item-domain')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('item-protocol').$this->getVar('item-domain').$this->getVar('item-referer-uri')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t\t<param>\n"; + $xml .= "\t\t\t<value>".$this->getVar('feed-protocol').$this->getVar('feed-domain').$this->getVar('feed-referer-uri')."</value>\n"; + $xml .= "\t\t</param>\n"; + $xml .= "\t</params>\n"; + $xml .= "</methodCall>"; + return $xml; + } } /** @@ -125,29 +161,43 @@ else return false; } - $sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); - $criteria = new CriteriaCompo(new Criteria('protocol', XOOPS_PROT)); - $criteria->add(new Criteria('domain', parse_url(XOOPS_URL, PHP_URL_HOST))); - $criteria->add(new Criteria('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH))); - if ($sitemapsHandler->getCount($criteria)==0) + if ($object->getVar('type') == 'local') { - $sitemap = $sitemapsHandler->create(); - $sitemap->setVar('referer', md5(XOOPS_URL.microtime(true).XOOPS_DB_USER.XOOPS_DB_PASS)); - $sitemap->setVar('protocol', XOOPS_PROT); - $sitemap->setVar('domain', parse_url(XOOPS_URL, PHP_URL_HOST)); - $sitemap->setVar('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH)); - $sitemap->setVar('filename', 'sitemap.'.str_replace("://", "", XOOPS_PROT) . "." . parse_url(XOOPS_URL, PHP_URL_HOST) . '.xml'); - $sitemap = $sitemapsHandler->get($sitemap = $sitemapsHandler->insert($sitemap, true)); - } else { - $obj = $sitemapsHandler->getObjects($criteria, false); - if (is_object($obj[0])) - $sitemap = $obj[0]; + $sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('protocol', XOOPS_PROT)); + $criteria->add(new Criteria('domain', parse_url(XOOPS_URL, PHP_URL_HOST))); + $criteria->add(new Criteria('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH))); + if ($sitemapsHandler->getCount($criteria)==0) + { + $sitemap = $sitemapsHandler->create(); + $sitemap->setVar('referer', md5(XOOPS_URL.microtime(true).XOOPS_DB_USER.XOOPS_DB_PASS)); + $sitemap->setVar('protocol', XOOPS_PROT); + $sitemap->setVar('domain', parse_url(XOOPS_URL, PHP_URL_HOST)); + $sitemap->setVar('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH)); + $sitemap->setVar('filename', 'sitemap.'.str_replace("://", "", XOOPS_PROT) . "." . parse_url(XOOPS_URL, PHP_URL_HOST) . '.xml'); + $sitemap = $sitemapsHandler->get($sitemap = $sitemapsHandler->insert($sitemap, true)); + } else { + $obj = $sitemapsHandler->getObjects($criteria, false); + if (is_object($obj[0])) + $sitemap = $obj[0]; + } + $items_sitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); + $itemsitemap = $items_sitemapsHandler->create(); + $itemsitemap->setVar('map-referer', $sitemap->getVar('referer')); + $itemsitemap->setVar('item-referer', $object->getVar('referer')); + $items_sitemapsHandler->insert($itemsitemap, true); + $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); + $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('type', 'XML-RPC')); + $criteria->add(new Criteria('offline', 0)); + foreach($pingsHandler->getObjects($criteria, true) as $id => $ping) + { + $itemping = $items_pingsHandler->create(); + $itemping->setVar('ping-referer', $ping->getVar('referer')); + $itemping->setVar('item-referer', $object->getVar('referer')); + $items_pingsHandler->insert($itemping, true); + } } - $items_sitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); - $itemsitemap = $items_sitemapsHandler->create(); - $itemsitemap->setVar('map-referer', $sitemap->getVar('referer')); - $itemsitemap->setVar('item-referer', $object->getVar('referer')); - $items_sitemapsHandler->insert($itemsitemap, true); } else { $object->setVar('updated', time()); } Modified: XoopsModules/pingtrax/trunk/class/pings.php =================================================================== --- XoopsModules/pingtrax/trunk/class/pings.php 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/class/pings.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -71,6 +71,32 @@ $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); } + /** + * + * @param PingtraxItems $item + * @return mixed + */ + function getPingURL(PingtraxItems $item) + { + $uri = $this->getVar('uri'); + $uri = str_replace(urlencode($item->getVar('item-title')), '%title', $uri); + $uri = str_replace(urlencode($item->getVar('item-decription')), '%description', $uri); + $uri = str_replace(urlencode($item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri')), '%url', $uri); + $uri = str_replace(urlencode($item->getVar('feed-protocol').$item->getVar('feed-domain').$item->getVar('feed-referer-uri')), '%feed', $uri); + return $uri; + } + /** + * + * @param PingtraxItems $item + * @return mixed + */ + function getSitemapURL(PingtraxSitemaps $sitemap) + { + $uri = $this->getVar('uri'); + $uri = str_replace(urlencode($sitemap->getVar('protocol').$sitemap->getVar('domain').(strlen($sitemap->getVar('baseurl'))>1?((substr($sitemap->getVar('baseurl'),0,1)!="/"?"/":"").$sitemap->getVar('baseurl').(substr($sitemap->getVar('baseurl'),strlen($sitemap->getVar('baseurl'))-1,1)!="/"?"/":"")):"/")).$sitemap->getVar('filename'), '%url', $uri); + return $uri; + } + } /** @@ -78,8 +104,13 @@ */ class PingtraxPingsHandler extends XoopsPersistableObjectHandler { - /** + * + * @var unknown + */ + var $_configs = array(); + + /** * var string URL of JSON Resource for Install */ var $_resource = "https://sourceforge.net/p/xoops/svn/HEAD/tree/XoopsModules/pingtrax/data/ping-resources.json?format=raw"; @@ -89,6 +120,10 @@ */ function __construct(&$db) { + $moduleHandler = xoops_gethandler('module'); + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($moduleHandler->getByDirname(basename(dirname(__DIR__)))->getVar('mid')); + parent::__construct($db, "pingtrax_pings", 'PingtraxPings', 'id', 'referer'); $criteria = new Criteria('id',0,"<>"); @@ -117,5 +152,101 @@ return parent::insert($object, $force); } - + + function makePings($referer = '') + { + $this->addTimeLimit(120); + $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('offline', 0)); + if (!empty($referer)) + $criteria->add(new Criteria('referer', $referer)); + $sleepcriteria = new CriteriaCompo(new Criteria('sleep-till', 0), 'OR'); + $sleepcriteria->add(new Criteria('sleep-till', time(), "<="), 'OR'); + $criteria->add($sleepcriteria, 'AND'); + $criteria->add(new Criteria('type', 'XML-RPC'), 'AND'); + foreach($this->getObjects($criteria, true) as $id => $ping) + { + $start = microtime(true); + $criteria = new CriteriaCompo(new Criteria('when', 0)); + $criteria->add(new Criteria('ping-referer', $ping->getVar('referer'))); + foreach($items_pingsHandler->getObjects($criteria, true) as $piid => $itemping) + { + $item = $itemsHandler->getByReferer($itemping->getVar('item-referer')); + if (is_a($item, "PingtraxItems")) + { + $context = stream_context_create(array('http' => array( + 'method' => "POST", + 'header' => "Content-Type: text/xml\r\n", + 'content' => $item->getPingXML() + ))); + $file = @file_get_contents($ping->getPingURL($item), false, $context); + if ($file === false) { + $ping->setVar('failed-pings', $this->getVar('failed-pings') + 1); + $ping->setVar('failure-time', time()); + } + elseif ($file) { + $ping->setVar('successful-pings', $this->getVar('successful-pings') + 1); + $ping->setVar('success-time', time()); + $itemping->setVar('when', time()); + $items_pingsHandler->insert($itemping, true); + } + + } + } + switch($this->_config['pings_sleep_till']) + { + case 0: + $ping->setVar('sleep-till', time() + mt_rand(600, 3600*24)); + break; + default: + $ping->setVar('sleep-till', time() + $this->_config['pings_sleep_till']); + break; + } + $this->insert($ping, true); + } + } + + + function sendSitemap(PingtraxSitemaps $sitemap) + { + $this->addTimeLimit(120); + $items_pingsHandler = xoops_getmodulehandler('items_pings', 'pingtrax'); + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('offline', 0)); + if (!empty($referer)) + $criteria->add(new Criteria('referer', $referer)); + $sleepcriteria = new CriteriaCompo(new Criteria('sleep-till', 0), 'OR'); + $sleepcriteria->add(new Criteria('sleep-till', time(), "<="), 'OR'); + $criteria->add($sleepcriteria, 'AND'); + $criteria->add(new Criteria('type', 'SITEMAPS'), 'AND'); + foreach($this->getObjects($criteria, true) as $id => $ping) + { + $start = microtime(true); + if (is_a($sitemap, "PingtraxSitemaps")) + { + $file = @file_get_contents($ping->getSitemapURL($sitemap), false); + if ($file === false) { + $ping->setVar('failed-pings', $this->getVar('failed-pings') + 1); + $ping->setVar('failure-time', time()); + } + elseif ($file) { + $ping->setVar('successful-pings', $this->getVar('successful-pings') + 1); + $ping->setVar('success-time', time()); + $itemping->setVar('when', time()); + $items_pingsHandler->insert($itemping, true); + } + } + switch($this->_config['pings_sleep_till']) + { + case 0: + $ping->setVar('sleep-till', time() + mt_rand(600, 3600*24)); + break; + default: + $ping->setVar('sleep-till', time() + $this->_config['pings_sleep_till']); + break; + } + $this->insert($ping, true); + } + } } Modified: XoopsModules/pingtrax/trunk/class/sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/class/sitemaps.php 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/class/sitemaps.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -86,12 +86,21 @@ */ class PingtraxSitemapsHandler extends XoopsPersistableObjectHandler { - + /** + * + * @var unknown + */ + var $_configs = array(); + /** * @param null|object $db */ function __construct(&$db) { + $moduleHandler = xoops_gethandler('module'); + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($moduleHandler->getByDirname(basename(dirname(__DIR__)))->getVar('mid')); + parent::__construct($db, "pingtrax_sitemaps", 'PingtraxSitemaps', 'id', 'referer'); } @@ -122,6 +131,7 @@ { $this->addTimeLimit(120); $items_sitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); + $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); $criteria = new CriteriaCompo(new Criteria('offline', 0)); if (!empty($referer)) @@ -185,10 +195,18 @@ file_put_contents($flout, implode(PHP_EOL, $data)); } } - } - $sitemap->setVar('sleep-till', time() + (3600*18)); + switch($this->_config['sitemaps_sleep_till']) + { + case 0: + $sitemap->setVar('sleep-till', time() + mt_rand(600, 3600*24)); + break; + default: + $sitemap->setVar('sleep-till', time() + $this->_config['sitemaps_sleep_till']); + break; + } $this->insert($sitemap, true); + $pingsHandler->sendSitemap($sitemap); $this->addTimeLimit(microtime(true)-$start+10); } } Modified: XoopsModules/pingtrax/trunk/class/trackback.php =================================================================== --- XoopsModules/pingtrax/trunk/class/trackback.php 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/class/trackback.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -243,23 +243,23 @@ if ($success) { // PingtraxTrackback retreived successfully... // Sending back an RSS (0.91) - trackback information from $response (array)... - $return .= " <error>0</error> \n"; - $return .= " <rss version=\"0.91\"> \n"; - $return .= " <channel> \n"; - $return .= " <title>" . $this->xml_safe($response['title']) . "</title> \n"; - $return .= " <link>" . $this->xml_safe($response['trackback']) . "</link> \n"; - $return .= " <description>" . $this->xml_safe($response['expert']) . "</description> \n"; - $return .= " <item> \n"; - $return .= " <title>" . $this->xml_safe($response['title']) . "</title> \n"; - $return .= " <link>" . $this->xml_safe($response['permalink']) . "</link> \n"; - $return .= " <description>" . $this->xml_safe($response['expert']) . "</description> \n"; - $return .= " </item> \n"; - $return .= " </channel> \n"; - $return .= " </rss> \n"; + $return .= "\t<error>0</error> \n"; + $return .= "\t<rss version=\"0.91\"> \n"; + $return .= "\t<channel> \n"; + $return .= "\t\t<title>" . $this->xml_safe($response['title']) . "</title> \n"; + $return .= "\t\t<link>" . $this->xml_safe($response['trackback']) . "</link> \n"; + $return .= "\t\t<description>" . $this->xml_safe($response['expert']) . "</description> \n"; + $return .= "\t\t<item> \n"; + $return .= "\t\t\t<title>" . $this->xml_safe($response['title']) . "</title> \n"; + $return .= "\t\t\t<link>" . $this->xml_safe($response['permalink']) . "</link> \n"; + $return .= "\t\t\t<description>" . $this->xml_safe($response['expert']) . "</description> \n"; + $return .= "\t\t</item> \n"; + $return .= "\t</channel> \n"; + $return .= "\t</rss> \n"; } else { // Something went wrong - provide reason from $response (string)... - $return .= " <error>1</error> \n"; - $return .= " <message>" . $this->xml_safe($response) . "</message>\n"; + $return .= "\t<error>1</error> \n"; + $return .= "\t<message>" . $this->xml_safe($response) . "</message>\n"; } // End response to trackbacker $return .= "</response>"; @@ -296,17 +296,17 @@ $return = "<!-- \n"; $return .= "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" \n"; - $return .= " xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n"; - $return .= " xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\"> \n"; + $return .= "\txmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n"; + $return .= "\txmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\"> \n"; $return .= "<rdf:Description \n"; - $return .= " rdf:about=\"" . $this->xml_safe($permalink) . "\" \n"; - $return .= " dc:identifier=\"" . $this->xml_safe($permalink) . "\" \n"; - $return .= " trackback:ping=\"" . $this->xml_safe($trackback) . "\" \n"; - $return .= " dc:title=\"" . $this->xml_safe($title) . "\" \n"; - $return .= " dc:subject=\"TrackBack\" \n"; - $return .= " dc:description=\"" . $this->xml_safe($this->cut_short($expert)) . "\" \n"; - $return .= " dc:creator=\"" . $this->xml_safe($author) . "\" \n"; - $return .= " dc:date=\"" . $RFC822_date . "\" /> \n"; + $return .= "\trdf:about=\"" . $this->xml_safe($permalink) . "\" \n"; + $return .= "\tdc:identifier=\"" . $this->xml_safe($permalink) . "\" \n"; + $return .= "\ttrackback:ping=\"" . $this->xml_safe($trackback) . "\" \n"; + $return .= "\tdc:title=\"" . $this->xml_safe($title) . "\" \n"; + $return .= "\tdc:subject=\"TrackBack\" \n"; + $return .= "\tdc:description=\"" . $this->xml_safe($this->cut_short($expert)) . "\" \n"; + $return .= "\tdc:creator=\"" . $this->xml_safe($author) . "\" \n"; + $return .= "\tdc:date=\"" . $RFC822_date . "\" /> \n"; $return .= "</rdf:RDF> \n"; $return .= "--> \n"; Modified: XoopsModules/pingtrax/trunk/language/english/modinfo.php =================================================================== --- XoopsModules/pingtrax/trunk/language/english/modinfo.php 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/language/english/modinfo.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -24,4 +24,26 @@ define('_MI_PINGTRAX_DESC',"Module for Automated PingList's and Trackbacks as well as sitemaps in XML!"); define('_MI_PINGTRAX_DEFAULT_FEED_URL',"Default URL for the RSS Feed Backend"); define('_MI_PINGTRAX_DEFAULT_FEED_URL_DESC',"This will provide the default URL for the feed, <em>%xoops_url%</em> will be replaced with <em>".XOOPS_URL."</em>"); - +define('_MI_PINGTRAX_PINGS_SLEEP_TILL', 'Ping Sleeps for this period until next batch'); +define('_MI_PINGTRAX_PINGS_SLEEP_TILL_DESC', 'This is how long a ping will sleep for until called in a batch with the footer preloader!'); +define('_MI_PINGTRAX_SITEMAPS_SLEEP_TILL', 'Sitemap re-write will sleep for this period!'); +define('_MI_PINGTRAX_SITEMAPS_SLEEP_TILL_DESC', 'This is how long a sitemap re-write will sleep for until called in a batch with the footer preloader!'); +define('_MI_PINGTRAX_TIME_RANDOM', 'Random (15m ~ 24Hrs)'); +define('_MI_PINGTRAX_TIME_15M', '15 Minutes'); +define('_MI_PINGTRAX_TIME_30M', '30 Minutes'); +define('_MI_PINGTRAX_TIME_1HR', '1 Hour'); +define('_MI_PINGTRAX_TIME_2HR', '2 Hours'); +define('_MI_PINGTRAX_TIME_3HR', '3 Hours'); +define('_MI_PINGTRAX_TIME_4HR', '4 Hours'); +define('_MI_PINGTRAX_TIME_5HR', '5 Hours'); +define('_MI_PINGTRAX_TIME_6HR', '6 Hours'); +define('_MI_PINGTRAX_TIME_7HR', '7 Hours'); +define('_MI_PINGTRAX_TIME_8HR', '8 Hours'); +define('_MI_PINGTRAX_TIME_9HR', '9 Hours'); +define('_MI_PINGTRAX_TIME_10HR', '10 Hours'); +define('_MI_PINGTRAX_TIME_11HR', '11 Hours'); +define('_MI_PINGTRAX_TIME_12HR', '12 Hours'); +define('_MI_PINGTRAX_TIME_14HR', '14 Hours'); +define('_MI_PINGTRAX_TIME_16HR', '16 Hours'); +define('_MI_PINGTRAX_TIME_24HR', '24 Hours'); + \ No newline at end of file Modified: XoopsModules/pingtrax/trunk/preloads/ping.php =================================================================== --- XoopsModules/pingtrax/trunk/preloads/ping.php 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/preloads/ping.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -27,45 +27,14 @@ */ class PingtraxPingPreload extends XoopsPreloadItem { + /** * @param $args - - function eventCoreIncludeFunctionsRedirectheader($args) + */ + function eventCoreFooterEnd($args) { - $context = stream_context_create(array('http' => array( - 'method' => "POST", - 'header' => "Content-Type: text/xml\r\n", - 'content' => $xml - ))); - $file = @file_get_contents($post_to, false, $context); - if ($file === false) { echo '<p>Couldn\'t connect!</p>'; } - elseif ($file) { - echo '<p>The following response was returned:</p>'; - echo '<pre>'.htmlspecialchars($file).'</pre>'; - } else { - echo '<p>Empty response!</p>'; - } + $pingsHandler = xoops_getmodulehandler('pings', 'pingtrax'); + $pingsHanlder->makePings(''); } - - -1. <?xml version="1.0"?> -2. <methodCall> -3. <methodName>weblogUpdates.extendedPing</methodName> -4. <params> -5. <param> -6. <value>Example Blog</value> -7. </param> -8. <param> -9. <value>http://www.example.com/blog/</value> -10. </param> -11. <param> -12. <value>http://www.example.com/blog/new-post.html</value> -13. </param> -14. <param> -15. <value>http://www.example.com/blog/feed.xml</value> -16. </param> -17. </params> -18. </methodCall> - */ } Modified: XoopsModules/pingtrax/trunk/preloads/sitemap.php =================================================================== --- XoopsModules/pingtrax/trunk/preloads/sitemap.php 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/preloads/sitemap.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -29,23 +29,11 @@ { /** * @param $args - - function eventCoreIncludeFunctionsRedirectheader($args) + */ + function eventCoreFooterEnd($args) { - $context = stream_context_create(array('http' => array( - 'method' => "POST", - 'header' => "Content-Type: text/xml\r\n", - 'content' => $xml - ))); - $file = @file_get_contents($post_to, false, $context); - if ($file === false) { echo '<p>Couldn\'t connect!</p>'; } - elseif ($file) { - echo '<p>The following response was returned:</p>'; - echo '<pre>'.htmlspecialchars($file).'</pre>'; - } else { - echo '<p>Empty response!</p>'; - } + $sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); + $sitemapsHanlder->writeSitemaps(''); } - */ } Modified: XoopsModules/pingtrax/trunk/preloads/trackback.php =================================================================== --- XoopsModules/pingtrax/trunk/preloads/trackback.php 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/preloads/trackback.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -22,30 +22,25 @@ defined('XOOPS_ROOT_PATH') || die('XOOPS root path not defined'); +require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . 'class' . DIRECTORY_SEPARATOR . 'trackback.php'; + /** * Class PingtraxTrackbackPreload */ class PingtraxTrackbackPreload extends XoopsPreloadItem { + /** * @param $args - - function eventCoreIncludeFunctionsRedirectheader($args) + */ + function eventCoreFooterEnd($args) { - $context = stream_context_create(array('http' => array( - 'method' => "POST", - 'header' => "Content-Type: text/xml\r\n", - 'content' => $xml - ))); - $file = @file_get_contents($post_to, false, $context); - if ($file === false) { echo '<p>Couldn\'t connect!</p>'; } - elseif ($file) { - echo '<p>The following response was returned:</p>'; - echo '<pre>'.htmlspecialchars($file).'</pre>'; - } else { - echo '<p>Empty response!</p>'; - } + global $pingtraxitem; + if (is_a($pingtraxitem, "PingtraxItems")) + { + $trackback = new PingtraxTrackback($pingtraxitem->getVar('item-title'), $pingtraxitem->getVar('item-author-name'), 'UTF-8'); + echo $trackback->rdf_autodiscover(RFC822_from_datetime($pingtraxitem->getVar('created')), $pingtraxitem->getVar('item-title'), $pingtraxitem->getVar('item-description'), $pingtraxitem->getVar('item-protocol').$pingtraxitem->getVar('item-domain').$pingtraxitem->getVar('item-referer-uri'), XOOPS_URL . '/modules/pingtrax/api/' . $pingtraxitem->getVar('referer'), $pingtraxitem->getVar('item-author-name')); + } } - */ } Modified: XoopsModules/pingtrax/trunk/sql/mysql.sql =================================================================== --- XoopsModules/pingtrax/trunk/sql/mysql.sql 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/sql/mysql.sql 2015-12-07 13:02:17 UTC (rev 13176) @@ -108,16 +108,6 @@ KEY `CHRONOLOGISTICS` (`id`,`referer`,`created`,`updated`,`offlined`,`failure-time`,`success-time`,`sleep-till`) USING BTREE KEY_BLOCK_SIZE=128 ) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; -CREATE TABLE `pingtrax_pings_sitemaps` ( - `id` mediumint(32) NOT NULL AUTO_INCREMENT, - `map-referer` varchar(44) NOT NULL DEFAULT '', - `ping-referer` varchar(44) NOT NULL DEFAULT '', - `when` int(12) NOT NULL DEFAULT '0', - PRIMARY KEY (`id`), - KEY `SEARCH` (`id`,`map-referer`,`ping-referer`) USING BTREE, - KEY `CHRONOLOGISTICS` (`map-referer`,`ping-referer`,`when`) USING BTREE KEY_BLOCK_SIZE=64 -) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; - CREATE TABLE `pingtrax_sitemaps` ( `id` int(10) NOT NULL AUTO_INCREMENT, `referer` varchar(44) NOT NULL DEFAULT '', Modified: XoopsModules/pingtrax/trunk/sql/tables.json =================================================================== --- XoopsModules/pingtrax/trunk/sql/tables.json 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/sql/tables.json 2015-12-07 13:02:17 UTC (rev 13176) @@ -1 +1 @@ -{"pingtrax_items","pingtrax_items_pings","pingtrax_items_sitemaps","pingtrax_pings","pingtrax_pings_sitemaps","pingtrax_sitemaps"} \ No newline at end of file +{"pingtrax_items","pingtrax_items_pings","pingtrax_items_sitemaps","pingtrax_pings","pingtrax_sitemaps"} \ No newline at end of file Modified: XoopsModules/pingtrax/trunk/xoops_version.php =================================================================== --- XoopsModules/pingtrax/trunk/xoops_version.php 2015-12-07 11:07:26 UTC (rev 13175) +++ XoopsModules/pingtrax/trunk/xoops_version.php 2015-12-07 13:02:17 UTC (rev 13176) @@ -88,3 +88,27 @@ 'default' => '%xoops_url%/backend.php' ); +$modversion['config'][] = array( + 'name' => 'pings_sleep_till', + 'title' => '_MI_PINGTRAX_PINGS_SLEEP_TILL', + 'description' => '_MI_PINGTRAX_PINGS_SLEEP_TILL_DESC', + 'formtype' => 'select', + 'valuetype' => 'int', + 'options' => array( 0 => _MI_PINGTRAX_TIME_RANDOM, 900 => _MI_PINGTRAX_TIME_15M, 1800 => _MI_PINGTRAX_TIME_30M, 3600 => _MI_PINGTRAX_TIME_1HR, (3600*2) => _MI_PINGTRAX_TIME_2HR, (3600*3) => _MI_PINGTRAX_TIME_3HR, + (3600*4) => _MI_PINGTRAX_TIME_4HR, (3600*5) => _MI_PINGTRAX_TIME_5HR, (3600*6) => _MI_PINGTRAX_TIME_6HR, (3600*7) => _MI_PINGTRAX_TIME_7HR, (3600*8) => _MI_PINGTRAX_TIME_8HR, (3600*9) => _MI_PINGTRAX_TIME_9HR, + (3600*10) => _MI_PINGTRAX_TIME_10HR, (3600*11) => _MI_PINGTRAX_TIME_11HR, (3600*12) => _MI_PINGTRAX_TIME_12HR, (3600*14) => _MI_PINGTRAX_TIME_14HR, (3600*16) => _MI_PINGTRAX_TIME_16HR, (3600*24) => _MI_PINGTRAX_TIME_24HR), + 'default' => 3600 * mt_rand(1,12) +); + +$modversion['config'][] = array( + 'name' => 'sitemaps_sleep_till', + 'title' => '_MI_PINGTRAX_SITEMAPS_SLEEP_TILL', + 'description' => '_MI_PINGTRAX_SITEMAPS_SLEEP_TILL_DESC', + 'formtype' => 'select', + 'valuetype' => 'int', + 'options' => array( 0 => _MI_PINGTRAX_TIME_RANDOM, 900 => _MI_PINGTRAX_TIME_15M, 1800 => _MI_PINGTRAX_TIME_30M, 3600 => _MI_PINGTRAX_TIME_1HR, (3600*2) => _MI_PINGTRAX_TIME_2HR, (3600*3) => _MI_PINGTRAX_TIME_3HR, + (3600*4) => _MI_PINGTRAX_TIME_4HR, (3600*5) => _MI_PINGTRAX_TIME_5HR, (3600*6) => _MI_PINGTRAX_TIME_6HR, (3600*7) => _MI_PINGTRAX_TIME_7HR, (3600*8) => _MI_PINGTRAX_TIME_8HR, (3600*9) => _MI_PINGTRAX_TIME_9HR, + (3600*10) => _MI_PINGTRAX_TIME_10HR, (3600*11) => _MI_PINGTRAX_TIME_11HR, (3600*12) => _MI_PINGTRAX_TIME_12HR, (3600*14) => _MI_PINGTRAX_TIME_14HR, (3600*16) => _MI_PINGTRAX_TIME_16HR, (3600*24) => _MI_PINGTRAX_TIME_24HR), + 'default' => 3600 * mt_rand(1,12) +); + |
From: <wis...@us...> - 2015-12-07 11:07:29
|
Revision: 13175 http://sourceforge.net/p/xoops/svn/13175 Author: wishcraft Date: 2015-12-07 11:07:26 +0000 (Mon, 07 Dec 2015) Log Message: ----------- PingTrax Pre-alpha :: More done\!\!\! Modified Paths: -------------- XoopsModules/pingtrax/trunk/class/items.php XoopsModules/pingtrax/trunk/class/items_sitemaps.php XoopsModules/pingtrax/trunk/class/sitemaps.php XoopsModules/pingtrax/trunk/preloads/ping.php XoopsModules/pingtrax/trunk/sql/mysql.sql Added Paths: ----------- XoopsModules/pingtrax/trunk/class/simple_html_dom.php XoopsModules/pingtrax/trunk/templates/sitemaps.xml.html Modified: XoopsModules/pingtrax/trunk/class/items.php =================================================================== --- XoopsModules/pingtrax/trunk/class/items.php 2015-12-01 15:59:10 UTC (rev 13174) +++ XoopsModules/pingtrax/trunk/class/items.php 2015-12-07 11:07:26 UTC (rev 13175) @@ -125,6 +125,29 @@ else return false; } + $sitemapsHandler = xoops_getmodulehandler('sitemaps', 'pingtrax'); + $criteria = new CriteriaCompo(new Criteria('protocol', XOOPS_PROT)); + $criteria->add(new Criteria('domain', parse_url(XOOPS_URL, PHP_URL_HOST))); + $criteria->add(new Criteria('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH))); + if ($sitemapsHandler->getCount($criteria)==0) + { + $sitemap = $sitemapsHandler->create(); + $sitemap->setVar('referer', md5(XOOPS_URL.microtime(true).XOOPS_DB_USER.XOOPS_DB_PASS)); + $sitemap->setVar('protocol', XOOPS_PROT); + $sitemap->setVar('domain', parse_url(XOOPS_URL, PHP_URL_HOST)); + $sitemap->setVar('baseurl', parse_url(XOOPS_URL, PHP_URL_PATH)); + $sitemap->setVar('filename', 'sitemap.'.str_replace("://", "", XOOPS_PROT) . "." . parse_url(XOOPS_URL, PHP_URL_HOST) . '.xml'); + $sitemap = $sitemapsHandler->get($sitemap = $sitemapsHandler->insert($sitemap, true)); + } else { + $obj = $sitemapsHandler->getObjects($criteria, false); + if (is_object($obj[0])) + $sitemap = $obj[0]; + } + $items_sitemapsHandler = xoops_getmodulehandler('items_sitemaps', 'pingtrax'); + $itemsitemap = $items_sitemapsHandler->create(); + $itemsitemap->setVar('map-referer', $sitemap->getVar('referer')); + $itemsitemap->setVar('item-referer', $object->getVar('referer')); + $items_sitemapsHandler->insert($itemsitemap, true); } else { $object->setVar('updated', time()); } @@ -152,4 +175,15 @@ return parent::insert($object, $force); } + function getByReferer($referer = '') + { + $criteria = new CriteriaCompo(new Criteria('referer', $referer)); + $criteria->add(new Criteria('offline', 0)); + if ($this->getCount($criteria)==0) + return NULL; + $objs = $this->getObjects($criteria, false); + if (isset($objs[0]) && is_a($objs[0], "PingtraxItems")) + return $objs[0]; + return NULL; + } } Modified: XoopsModules/pingtrax/trunk/class/items_sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/class/items_sitemaps.php 2015-12-01 15:59:10 UTC (rev 13174) +++ XoopsModules/pingtrax/trunk/class/items_sitemaps.php 2015-12-07 11:07:26 UTC (rev 13175) @@ -20,6 +20,7 @@ * @since 1.0.1 */ +require_once __DIR__ . DIRECTORY_SEPARATOR . 'simple_html_dom.php'; /** * Class PingtraxItems_sitemaps @@ -28,14 +29,51 @@ * * Database MySQL Table:- * - * CREATE TABLE `itemtrax_items_sitemaps` ( + * CREATE TABLE `pingtrax_items_sitemaps` ( * `id` mediumint(32) NOT NULL AUTO_INCREMENT, * `map-referer` varchar(44) NOT NULL DEFAULT '', * `item-referer` varchar(44) NOT NULL DEFAULT '', + * `frequency` enum('monthly','fortnightly','weekly','daily') NOT NULL DEFAULT 'monthly', + * `priority` float(2,1) NOT NULL DEFAULT '0.9', + * `checking` int(12) NOT NULL DEFAULT '0', + * `changed` int(12) NOT NULL DEFAULT '0', + * `changes` int(12) NOT NULL DEFAULT '0', * `when` int(12) NOT NULL DEFAULT '0', + * `header-md5` varchar(32) NOT NULL DEFAULT '0', + * `header-changes` int(12) NOT NULL DEFAULT '0', + * `header-changed` int(12) NOT NULL DEFAULT '0', + * `header-bytes` int(12) NOT NULL DEFAULT '0', + * `body-md5` varchar(32) NOT NULL DEFAULT '0', + * `body-changes` int(12) NOT NULL DEFAULT '0', + * `body-changed` int(12) NOT NULL DEFAULT '0', + * `body-bytes` int(12) NOT NULL DEFAULT '0', + * `tabled-md5` varchar(32) NOT NULL DEFAULT '0', + * `tabled-changes` int(12) NOT NULL DEFAULT '0', + * `tabled-changed` int(12) NOT NULL DEFAULT '0', + * `tabled-bytes` int(12) NOT NULL DEFAULT '0', + * `dived-md5` varchar(32) NOT NULL DEFAULT '0', + * `dived-changes` int(12) NOT NULL DEFAULT '0', + * `dived-changed` int(12) NOT NULL DEFAULT '0', + * `dived-bytes` int(12) NOT NULL DEFAULT '0', + * `header-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `header-changes-last` int(12) NOT NULL DEFAULT '0', + * `header-changed-last` int(12) NOT NULL DEFAULT '0', + * `header-bytes-last` int(12) NOT NULL DEFAULT '0', + * `body-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `body-changes-last` int(12) NOT NULL DEFAULT '0', + * `body-changed-last` int(12) NOT NULL DEFAULT '0', + * `body-bytes-last` int(12) NOT NULL DEFAULT '0', + * `tabled-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `tabled-changes-last` int(12) NOT NULL DEFAULT '0', + * `tabled-changed-last` int(12) NOT NULL DEFAULT '0', + * `tabled-bytes-last` int(12) NOT NULL DEFAULT '0', + * `dived-md5-last` varchar(32) NOT NULL DEFAULT '0', + * `dived-changes-last` int(12) NOT NULL DEFAULT '0', + * `dived-changed-last` int(12) NOT NULL DEFAULT '0', + * `dived-bytes-last` int(12) NOT NULL DEFAULT '0', * PRIMARY KEY (`id`), * KEY `SEARCH` (`id`,`map-referer`,`item-referer`) USING BTREE, - * KEY `CHRONOLOGISTICS` (`map-referer`,`item-referer`,`when`) USING BTREE KEY_BLOCK_SIZE=64 + * KEY `CHRONOLOGISTICS` (`map-referer`,`item-referer`) USING BTREE KEY_BLOCK_SIZE=64 * ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; * */ @@ -50,9 +88,220 @@ $this->initVar('id', XOBJ_DTYPE_INT, null, false); $this->initVar('map-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); $this->initVar('item-referer', XOBJ_DTYPE_TXTBOX, null, true, 44); - $this->initVar('when', XOBJ_DTYPE_INT, 0, false); + $this->initVar('frequency', XOBJ_DTYPE_ENUM, 'daily', false, false, false, false, false, array('monthly','fortnightly','weekly','daily')); + $this->initVar('priority', XOBJ_DTYPE_FLOAT, 0.9, false); + $this->initVar('checking', XOBJ_DTYPE_INT, time(), false); + $this->initVar('changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('when', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('header-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('body-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('body-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('tabled-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('tabled-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-md5', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('dived-changes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-changed', XOBJ_DTYPE_INT, time(), false); + $this->initVar('dived-bytes', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('header-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('header-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('header-bytes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('body-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('body-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('body-bytes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('tabled-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('tabled-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('tabled-bytes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-md5-last', XOBJ_DTYPE_OTHER, md5(NULL), false, 32); + $this->initVar('dived-changes-last', XOBJ_DTYPE_INT, 0, false); + $this->initVar('dived-changed-last', XOBJ_DTYPE_INT, time(), false); + $this->initVar('dived-bytes-last', XOBJ_DTYPE_INT, 0, false); } + /** + * + */ + function checkForChanges() + { + $changes = 0; + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $item = $itemsHandler->getByReferer($this->getVar('item-referer')); + if (is_a($item, "PingtraxItems")) + { + $html = $this->getURIData($item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-referer-uri'), 65, 65, $item->getVar('module-get')); + if (strlen($html)==0) + { + foreach($item->getVar('module-get') as $item => $value) + $get[$item] = $value; + $html = $this->getURIData($item->getVar('item-protocol').$item->getVar('item-domain').$item->getVar('item-php-self')."?".http_build_query($get), 65, 65, $get); + } + if (strlen($html)!=0) + { + $dom = str_get_html($html); + // Does headers + $head = $dom->find("head"); + $changes .+ $this->setVars(array('header-md5' => md5($head->innertext), 'header-bytes' => strlen($head->innertext))); + // Does Full Body + $body = $dom->find("body"); + $changes .+ $this->setVars(array('body-md5' => md5($body->plaintext), 'body-bytes' => strlen($body->plaintext))); + // Does Tables + $tablesbytes = 0; + $tablesmd5 = ''; + foreach($dom->find('table') as $table) + { + $tablesmd5 = md5($tablesmd5 . sha1($table->plaintext)); + $tablesbytes = $tablesbytes + strlen($table->plaintext); + } + $changes .+ $this->setVars(array('tabled-md5' => $tablesmd5, 'tabled-bytes' => $tablesbytes)); + // Does Div's + $divsbytes = 0; + $divsmd5 = ''; + foreach($dom->find('div') as $div) + { + $divsmd5 = md5($divsmd5 . sha1($div->plaintext)); + $divsbytes = $divsbytes + strlen($div->plaintext); + } + $changes .+ $this->setVars(array('dived-md5' => $divsmd5, 'dived-bytes' => $divsbytes)); + } + } + return $changes; + } + + /** + * + * {@inheritDoc} + * @see XoopsObject::setVars() + */ + function setVars($var_arr = array()) + { + $changes = 0; + $lasting = array('header' => array('-md5', '-bytes'), 'body' => array('-md5', '-bytes'), 'tabled' => array('-md5', '-bytes'), 'dived' => array('-md5', '-bytes')); + foreach($lasting as $key=> $values) + { + $found = false; + foreach($values as $value) + if (in_array($key.$value, array_keys($var_arr))) + { + if ($this->getVar($key.$value)!=$var_arr[$key.$value]) + foreach($values as $val) + $this->setVar($key.$val.'-last', $this->getVar($key.$val)); + $found = true; + } + if ($found == true) + { + $changes .+ 1; + $this->setVar($key.'-changes', $this->getVar($key.'-changes')+1); + $this->setVar($key.'-changed', time()); + if ($this->getVar('changed')>0) + { + if (time() - $this->getVar('changed') < (3600 * 24)) + { + $this->setvar('frequency', 'daily'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 7)) + { + $this->setvar('frequency', 'weekly'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 14)) + { + $this->setvar('frequency', 'fortnightly'); + } else { + $this->setvar('frequency', 'monthly'); + } + } else + $this->setvar('frequency', 'daily'); + $this->setVar('changed', time()); + $this->setVar('changes', $this->getVar('changes')+1); + if ($this->getvar('priority') < 0.9) + $this->setVar('priority', $this->getVar('priority') + 0.1); + } else { + if ($this->getVar('changed')>0) + { + if (time() - $this->getVar('changed') < (3600 * 24)) + { + $this->setvar('frequency', 'daily'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 7)) + { + $this->setvar('frequency', 'weekly'); + } elseif (time() - $this->getVar('changed') < (3600 * 24 * 14)) + { + $this->setvar('frequency', 'fortnightly'); + } else { + $this->setvar('frequency', 'monthly'); + } + } else { + $this->setvar('frequency', 'daily'); + $this->setVar('changed', time()); + } + if ($this->getvar('frequency')=='') + $this->setvar('frequency', 'daily'); + if ($this->getvar('priority') > 0.1) + $this->setVar('priority', $this->getVar('priority') - 0.1); + } + } + + switch($this->getVar('frequency')) + { + case 'daily': + default: + $this->setvar('frequency', 'daily'); + $this->setVar('checking', time() + (3600 * 24 - 900)); + break; + case 'weekly': + $this->setVar('checking', time() + (3600 * 24 * 7 - 900)); + break; + case 'fortnightly': + $this->setVar('checking', time() + (3600 * 24 * 14 - 900)); + break; + case 'monthly': + $this->setVar('checking', time() + (3600 * 24 * 7 * 4 - 900)); + break; + } + parent::setVars($var_arr); + return ($changes>0?$changes:false); + } + + + /* function getURIData() + * + * cURL Routine + * @author Simon Roberts (Chronolabs) si...@la... + * + * @return float() + */ + private function getURIData($uri = '', $timeout = 65, $connectout = 65, $post_data = array()) + { + if (!function_exists("curl_init")) + { + return file_get_contents($uri); + } + if (!$btt = curl_init($uri)) { + return false; + } + curl_setopt($btt, CURLOPT_HEADER, 0); + curl_setopt($btt, CURLOPT_POST, (count($posts)==0?false:true)); + if (count($posts)!=0) + curl_setopt($btt, CURLOPT_POSTFIELDS, http_build_query($post_data)); + curl_setopt($btt, CURLOPT_CONNECTTIMEOUT, $connectout); + curl_setopt($btt, CURLOPT_TIMEOUT, $timeout); + curl_setopt($btt, CURLOPT_RETURNTRANSFER, true); + curl_setopt($btt, CURLOPT_VERBOSE, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($btt, CURLOPT_SSL_VERIFYPEER, false); + $data = curl_exec($btt); + curl_close($btt); + return $data; + } + + } /** @@ -69,5 +318,36 @@ parent::__construct($db, "itemtrax_items_sitemaps", 'PingtraxItems_sitemaps', 'id', 'map-referer'); } - + + /** + * + * @param array $array + */ + private function addTimeLimit($seconds = 30) + { + global $timelimit; + $timelimit .+ $seconds; + set_time_limit($timelimit); + } + + /** + * + * @param string $mapreferer + */ + function checkForChanges($mapreferer = '') + { + $changes = 0; + $this->addTimeLimit(120); + $criteria = new CriteriaCompo(new Criteria('checking', time(), "<=")); + if (!empty($mapreferer)) + $criteria->add(new Criteria('map-referer', $mapreferer)); + foreach($this->getObjects($criteria, true) as $id => $item) + { + $start = microtime(true); + if (is_a($item, "PingtraxItems_sitemaps")) + $changes = $changes + $item->checkForChanges(); + $this->addTimeLimit(microtime(true)-$start+5); + } + return $changes; + } } Added: XoopsModules/pingtrax/trunk/class/simple_html_dom.php =================================================================== --- XoopsModules/pingtrax/trunk/class/simple_html_dom.php (rev 0) +++ XoopsModules/pingtrax/trunk/class/simple_html_dom.php 2015-12-07 11:07:26 UTC (rev 13175) @@ -0,0 +1,1742 @@ +<?php +/** + * Website: http://sourceforge.net/projects/simplehtmldom/ + * Additional projects that may be used: http://sourceforge.net/projects/debugobject/ + * Acknowledge: Jose Solorzano (https://sourceforge.net/projects/php-html/) + * Contributions by: + * Yousuke Kumakura (Attribute filters) + * Vadim Voituk (Negative indexes supports of "find" method) + * Antcs (Constructor with automatically load contents either text or file/url) + * + * all affected sections have comments starting with "PaperG" + * + * Paperg - Added case insensitive testing of the value of the selector. + * Paperg - Added tag_start for the starting index of tags - NOTE: This works but not accurately. + * This tag_start gets counted AFTER \r\n have been crushed out, and after the remove_noice calls so it will not reflect the REAL position of the tag in the source, + * it will almost always be smaller by some amount. + * We use this to determine how far into the file the tag in question is. This "percentage will never be accurate as the $dom->size is the "real" number of bytes the dom was created from. + * but for most purposes, it's a really good estimation. + * Paperg - Added the forceTagsClosed to the dom constructor. Forcing tags closed is great for malformed html, but it CAN lead to parsing errors. + * Allow the user to tell us how much they trust the html. + * Paperg add the text and plaintext to the selectors for the find syntax. plaintext implies text in the innertext of a node. text implies that the tag is a text node. + * This allows for us to find tags based on the text they contain. + * Create find_ancestor_tag to see if a tag is - at any level - inside of another specific tag. + * Paperg: added parse_charset so that we know about the character set of the source document. + * NOTE: If the user's system has a routine called get_last_retrieve_url_contents_content_type availalbe, we will assume it's returning the content-type header from the + * last transfer or curl_exec, and we will parse that and use it in preference to any other method of charset detection. + * + * Found infinite loop in the case of broken html in restore_noise. Rewrote to protect from that. + * PaperG (John Schlick) Added get_display_size for "IMG" tags. + * + * Licensed under The MIT License + * Redistributions of files must retain the above copyright notice. + * + * @author S.C. Chen <me5...@gm...> + * @author John Schlick + * @author Rus Carroll + * @version 1.5 ($Rev: 210 $) + * @package PlaceLocalInclude + * @subpackage simple_html_dom + */ + +/** + * All of the Defines for the classes below. + * @author S.C. Chen <me5...@gm...> + */ +define('HDOM_TYPE_ELEMENT', 1); +define('HDOM_TYPE_COMMENT', 2); +define('HDOM_TYPE_TEXT', 3); +define('HDOM_TYPE_ENDTAG', 4); +define('HDOM_TYPE_ROOT', 5); +define('HDOM_TYPE_UNKNOWN', 6); +define('HDOM_QUOTE_DOUBLE', 0); +define('HDOM_QUOTE_SINGLE', 1); +define('HDOM_QUOTE_NO', 3); +define('HDOM_INFO_BEGIN', 0); +define('HDOM_INFO_END', 1); +define('HDOM_INFO_QUOTE', 2); +define('HDOM_INFO_SPACE', 3); +define('HDOM_INFO_TEXT', 4); +define('HDOM_INFO_INNER', 5); +define('HDOM_INFO_OUTER', 6); +define('HDOM_INFO_ENDSPACE',7); +define('DEFAULT_TARGET_CHARSET', 'UTF-8'); +define('DEFAULT_BR_TEXT', "\r\n"); +define('DEFAULT_SPAN_TEXT', " "); +define('MAX_FILE_SIZE', 600000); +// helper functions +// ----------------------------------------------------------------------------- +// get html dom from file +// $maxlen is defined in the code as PHP_STREAM_COPY_ALL which is defined as -1. +function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT) +{ + // We DO force the tags to be terminated. + $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText); + // For sourceforge users: uncomment the next line and comment the retreive_url_contents line 2 lines down if it is not already done. + $contents = file_get_contents($url, $use_include_path, $context, $offset); + // Paperg - use our own mechanism for getting the contents as we want to control the timeout. + //$contents = retrieve_url_contents($url); + if (empty($contents) || strlen($contents) > MAX_FILE_SIZE) + { + return false; + } + // The second parameter can force the selectors to all be lowercase. + $dom->load($contents, $lowercase, $stripRN); + return $dom; +} + +// get html dom from string +function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT) +{ + $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText); + if (empty($str) || strlen($str) > MAX_FILE_SIZE) + { + $dom->clear(); + return false; + } + $dom->load($str, $lowercase, $stripRN); + return $dom; +} + +// dump html dom tree +function dump_html_tree($node, $show_attr=true, $deep=0) +{ + $node->dump($node); +} + + +/** + * simple html dom node + * PaperG - added ability for "find" routine to lowercase the value of the selector. + * PaperG - added $tag_start to track the start position of the tag in the total byte index + * + * @package PlaceLocalInclude + */ +class simple_html_dom_node +{ + public $nodetype = HDOM_TYPE_TEXT; + public $tag = 'text'; + public $attr = array(); + public $children = array(); + public $nodes = array(); + public $parent = null; + // The "info" array - see HDOM_INFO_... for what each element contains. + public $_ = array(); + public $tag_start = 0; + private $dom = null; + + function __construct($dom) + { + $this->dom = $dom; + $dom->nodes[] = $this; + } + + function __destruct() + { + $this->clear(); + } + + function __toString() + { + return $this->outertext(); + } + + // clean up memory due to php5 circular references memory leak... + function clear() + { + $this->dom = null; + $this->nodes = null; + $this->parent = null; + $this->children = null; + } + + // dump node's tree + function dump($show_attr=true, $deep=0) + { + $lead = str_repeat(' ', $deep); + + echo $lead.$this->tag; + if ($show_attr && count($this->attr)>0) + { + echo '('; + foreach ($this->attr as $k=>$v) + echo "[$k]=>\"".$this->$k.'", '; + echo ')'; + } + echo "\n"; + + if ($this->nodes) + { + foreach ($this->nodes as $c) + { + $c->dump($show_attr, $deep+1); + } + } + } + + + // Debugging function to dump a single dom node with a bunch of information about it. + function dump_node($echo=true) + { + + $string = $this->tag; + if (count($this->attr)>0) + { + $string .= '('; + foreach ($this->attr as $k=>$v) + { + $string .= "[$k]=>\"".$this->$k.'", '; + } + $string .= ')'; + } + if (count($this->_)>0) + { + $string .= ' $_ ('; + foreach ($this->_ as $k=>$v) + { + if (is_array($v)) + { + $string .= "[$k]=>("; + foreach ($v as $k2=>$v2) + { + $string .= "[$k2]=>\"".$v2.'", '; + } + $string .= ")"; + } else { + $string .= "[$k]=>\"".$v.'", '; + } + } + $string .= ")"; + } + + if (isset($this->text)) + { + $string .= " text: (" . $this->text . ")"; + } + + $string .= " HDOM_INNER_INFO: '"; + if (isset($node->_[HDOM_INFO_INNER])) + { + $string .= $node->_[HDOM_INFO_INNER] . "'"; + } + else + { + $string .= ' NULL '; + } + + $string .= " children: " . count($this->children); + $string .= " nodes: " . count($this->nodes); + $string .= " tag_start: " . $this->tag_start; + $string .= "\n"; + + if ($echo) + { + echo $string; + return; + } + else + { + return $string; + } + } + + // returns the parent of node + // If a node is passed in, it will reset the parent of the current node to that one. + function parent($parent=null) + { + // I am SURE that this doesn't work properly. + // It fails to unset the current node from it's current parents nodes or children list first. + if ($parent !== null) + { + $this->parent = $parent; + $this->parent->nodes[] = $this; + $this->parent->children[] = $this; + } + + return $this->parent; + } + + // verify that node has children + function has_child() + { + return !empty($this->children); + } + + // returns children of node + function children($idx=-1) + { + if ($idx===-1) + { + return $this->children; + } + if (isset($this->children[$idx])) + { + return $this->children[$idx]; + } + return null; + } + + // returns the first child of node + function first_child() + { + if (count($this->children)>0) + { + return $this->children[0]; + } + return null; + } + + // returns the last child of node + function last_child() + { + if (($count=count($this->children))>0) + { + return $this->children[$count-1]; + } + return null; + } + + // returns the next sibling of node + function next_sibling() + { + if ($this->parent===null) + { + return null; + } + + $idx = 0; + $count = count($this->parent->children); + while ($idx<$count && $this!==$this->parent->children[$idx]) + { + ++$idx; + } + if (++$idx>=$count) + { + return null; + } + return $this->parent->children[$idx]; + } + + // returns the previous sibling of node + function prev_sibling() + { + if ($this->parent===null) return null; + $idx = 0; + $count = count($this->parent->children); + while ($idx<$count && $this!==$this->parent->children[$idx]) + ++$idx; + if (--$idx<0) return null; + return $this->parent->children[$idx]; + } + + // function to locate a specific ancestor tag in the path to the root. + function find_ancestor_tag($tag) + { + global $debug_object; + if (is_object($debug_object)) { $debug_object->debug_log_entry(1); } + + // Start by including ourselves in the comparison. + $returnDom = $this; + + while (!is_null($returnDom)) + { + if (is_object($debug_object)) { $debug_object->debug_log(2, "Current tag is: " . $returnDom->tag); } + + if ($returnDom->tag == $tag) + { + break; + } + $returnDom = $returnDom->parent; + } + return $returnDom; + } + + // get dom node's inner html + function innertext() + { + if (isset($this->_[HDOM_INFO_INNER])) return $this->_[HDOM_INFO_INNER]; + if (isset($this->_[HDOM_INFO_TEXT])) return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); + + $ret = ''; + foreach ($this->nodes as $n) + $ret .= $n->outertext(); + return $ret; + } + + // get dom node's outer text (with tag) + function outertext() + { + global $debug_object; + if (is_object($debug_object)) + { + $text = ''; + if ($this->tag == 'text') + { + if (!empty($this->text)) + { + $text = " with text: " . $this->text; + } + } + $debug_object->debug_log(1, 'Innertext of tag: ' . $this->tag . $text); + } + + if ($this->tag==='root') return $this->innertext(); + + // trigger callback + if ($this->dom && $this->dom->callback!==null) + { + call_user_func_array($this->dom->callback, array($this)); + } + + if (isset($this->_[HDOM_INFO_OUTER])) return $this->_[HDOM_INFO_OUTER]; + if (isset($this->_[HDOM_INFO_TEXT])) return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); + + // render begin tag + if ($this->dom && $this->dom->nodes[$this->_[HDOM_INFO_BEGIN]]) + { + $ret = $this->dom->nodes[$this->_[HDOM_INFO_BEGIN]]->makeup(); + } else { + $ret = ""; + } + + // render inner text + if (isset($this->_[HDOM_INFO_INNER])) + { + // If it's a br tag... don't return the HDOM_INNER_INFO that we may or may not have added. + if ($this->tag != "br") + { + $ret .= $this->_[HDOM_INFO_INNER]; + } + } else { + if ($this->nodes) + { + foreach ($this->nodes as $n) + { + $ret .= $this->convert_text($n->outertext()); + } + } + } + + // render end tag + if (isset($this->_[HDOM_INFO_END]) && $this->_[HDOM_INFO_END]!=0) + $ret .= '</'.$this->tag.'>'; + return $ret; + } + + // get dom node's plain text + function text() + { + if (isset($this->_[HDOM_INFO_INNER])) return $this->_[HDOM_INFO_INNER]; + switch ($this->nodetype) + { + case HDOM_TYPE_TEXT: return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); + case HDOM_TYPE_COMMENT: return ''; + case HDOM_TYPE_UNKNOWN: return ''; + } + if (strcasecmp($this->tag, 'script')===0) return ''; + if (strcasecmp($this->tag, 'style')===0) return ''; + + $ret = ''; + // In rare cases, (always node type 1 or HDOM_TYPE_ELEMENT - observed for some span tags, and some p tags) $this->nodes is set to NULL. + // NOTE: This indicates that there is a problem where it's set to NULL without a clear happening. + // WHY is this happening? + if (!is_null($this->nodes)) + { + foreach ($this->nodes as $n) + { + $ret .= $this->convert_text($n->text()); + } + + // If this node is a span... add a space at the end of it so multiple spans don't run into each other. This is plaintext after all. + if ($this->tag == "span") + { + $ret .= $this->dom->default_span_text; + } + + + } + return $ret; + } + + function xmltext() + { + $ret = $this->innertext(); + $ret = str_ireplace('<![CDATA[', '', $ret); + $ret = str_replace(']]>', '', $ret); + return $ret; + } + + // build node's text with tag + function makeup() + { + // text, comment, unknown + if (isset($this->_[HDOM_INFO_TEXT])) return $this->dom->restore_noise($this->_[HDOM_INFO_TEXT]); + + $ret = '<'.$this->tag; + $i = -1; + + foreach ($this->attr as $key=>$val) + { + ++$i; + + // skip removed attribute + if ($val===null || $val===false) + continue; + + $ret .= $this->_[HDOM_INFO_SPACE][$i][0]; + //no value attr: nowrap, checked selected... + if ($val===true) + $ret .= $key; + else { + switch ($this->_[HDOM_INFO_QUOTE][$i]) + { + case HDOM_QUOTE_DOUBLE: $quote = '"'; break; + case HDOM_QUOTE_SINGLE: $quote = '\''; break; + default: $quote = ''; + } + $ret .= $key.$this->_[HDOM_INFO_SPACE][$i][1].'='.$this->_[HDOM_INFO_SPACE][$i][2].$quote.$val.$quote; + } + } + $ret = $this->dom->restore_noise($ret); + return $ret . $this->_[HDOM_INFO_ENDSPACE] . '>'; + } + + // find elements by css selector + //PaperG - added ability for find to lowercase the value of the selector. + function find($selector, $idx=null, $lowercase=false) + { + $selectors = $this->parse_selector($selector); + if (($count=count($selectors))===0) return array(); + $found_keys = array(); + + // find each selector + for ($c=0; $c<$count; ++$c) + { + // The change on the below line was documented on the sourceforge code tracker id 2788009 + // used to be: if (($levle=count($selectors[0]))===0) return array(); + if (($levle=count($selectors[$c]))===0) return array(); + if (!isset($this->_[HDOM_INFO_BEGIN])) return array(); + + $head = array($this->_[HDOM_INFO_BEGIN]=>1); + + // handle descendant selectors, no recursive! + for ($l=0; $l<$levle; ++$l) + { + $ret = array(); + foreach ($head as $k=>$v) + { + $n = ($k===-1) ? $this->dom->root : $this->dom->nodes[$k]; + //PaperG - Pass this optional parameter on to the seek function. + $n->seek($selectors[$c][$l], $ret, $lowercase); + } + $head = $ret; + } + + foreach ($head as $k=>$v) + { + if (!isset($found_keys[$k])) + { + $found_keys[$k] = 1; + } + } + } + + // sort keys + ksort($found_keys); + + $found = array(); + foreach ($found_keys as $k=>$v) + $found[] = $this->dom->nodes[$k]; + + // return nth-element or array + if (is_null($idx)) return $found; + else if ($idx<0) $idx = count($found) + $idx; + return (isset($found[$idx])) ? $found[$idx] : null; + } + + // seek for given conditions + // PaperG - added parameter to allow for case insensitive testing of the value of a selector. + protected function seek($selector, &$ret, $lowercase=false) + { + global $debug_object; + if (is_object($debug_object)) { $debug_object->debug_log_entry(1); } + + list($tag, $key, $val, $exp, $no_key) = $selector; + + // xpath index + if ($tag && $key && is_numeric($key)) + { + $count = 0; + foreach ($this->children as $c) + { + if ($tag==='*' || $tag===$c->tag) { + if (++$count==$key) { + $ret[$c->_[HDOM_INFO_BEGIN]] = 1; + return; + } + } + } + return; + } + + $end = (!empty($this->_[HDOM_INFO_END])) ? $this->_[HDOM_INFO_END] : 0; + if ($end==0) { + $parent = $this->parent; + while (!isset($parent->_[HDOM_INFO_END]) && $parent!==null) { + $end -= 1; + $parent = $parent->parent; + } + $end += $parent->_[HDOM_INFO_END]; + } + + for ($i=$this->_[HDOM_INFO_BEGIN]+1; $i<$end; ++$i) { + $node = $this->dom->nodes[$i]; + + $pass = true; + + if ($tag==='*' && !$key) { + if (in_array($node, $this->children, true)) + $ret[$i] = 1; + continue; + } + + // compare tag + if ($tag && $tag!=$node->tag && $tag!=='*') {$pass=false;} + // compare key + if ($pass && $key) { + if ($no_key) { + if (isset($node->attr[$key])) $pass=false; + } else { + if (($key != "plaintext") && !isset($node->attr[$key])) $pass=false; + } + } + // compare value + if ($pass && $key && $val && $val!=='*') { + // If they have told us that this is a "plaintext" search then we want the plaintext of the node - right? + if ($key == "plaintext") { + // $node->plaintext actually returns $node->text(); + $nodeKeyValue = $node->text(); + } else { + // this is a normal search, we want the value of that attribute of the tag. + $nodeKeyValue = $node->attr[$key]; + } + if (is_object($debug_object)) {$debug_object->debug_log(2, "testing node: " . $node->tag . " for attribute: " . $key . $exp . $val . " where nodes value is: " . $nodeKeyValue);} + + //PaperG - If lowercase is set, do a case insensitive test of the value of the selector. + if ($lowercase) { + $check = $this->match($exp, strtolower($val), strtolower($nodeKeyValue)); + } else { + $check = $this->match($exp, $val, $nodeKeyValue); + } + if (is_object($debug_object)) {$debug_object->debug_log(2, "after match: " . ($check ? "true" : "false"));} + + // handle multiple class + if (!$check && strcasecmp($key, 'class')===0) { + foreach (explode(' ',$node->attr[$key]) as $k) { + // Without this, there were cases where leading, trailing, or double spaces lead to our comparing blanks - bad form. + if (!empty($k)) { + if ($lowercase) { + $check = $this->match($exp, strtolower($val), strtolower($k)); + } else { + $check = $this->match($exp, $val, $k); + } + if ($check) break; + } + } + } + if (!$check) $pass = false; + } + if ($pass) $ret[$i] = 1; + unset($node); + } + // It's passed by reference so this is actually what this function returns. + if (is_object($debug_object)) {$debug_object->debug_log(1, "EXIT - ret: ", $ret);} + } + + protected function match($exp, $pattern, $value) { + global $debug_object; + if (is_object($debug_object)) {$debug_object->debug_log_entry(1);} + + switch ($exp) { + case '=': + return ($value===$pattern); + case '!=': + return ($value!==$pattern); + case '^=': + return preg_match("/^".preg_quote($pattern,'/')."/", $value); + case '$=': + return preg_match("/".preg_quote($pattern,'/')."$/", $value); + case '*=': + if ($pattern[0]=='/') { + return preg_match($pattern, $value); + } + return preg_match("/".$pattern."/i", $value); + } + return false; + } + + protected function parse_selector($selector_string) { + global $debug_object; + if (is_object($debug_object)) {$debug_object->debug_log_entry(1);} + + // pattern of CSS selectors, modified from mootools + // Paperg: Add the colon to the attrbute, so that it properly finds <tag attr:ibute="something" > like google does. + // Note: if you try to look at this attribute, yo MUST use getAttribute since $dom->x:y will fail the php syntax check. +// Notice the \[ starting the attbute? and the @? following? This implies that an attribute can begin with an @ sign that is not captured. +// This implies that an html attribute specifier may start with an @ sign that is NOT captured by the expression. +// farther study is required to determine of this should be documented or removed. +// $pattern = "/([\w-:\*]*)(?:\#([\w-]+)|\.([\w-]+))?(?:\[@?(!?[\w-]+)(?:([!*^$]?=)[\"']?(.*?)[\"']?)?\])?([\/, ]+)/is"; + $pattern = "/([\w-:\*]*)(?:\#([\w-]+)|\.([\w-]+))?(?:\[@?(!?[\w-:]+)(?:([!*^$]?=)[\"']?(.*?)[\"']?)?\])?([\/, ]+)/is"; + preg_match_all($pattern, trim($selector_string).' ', $matches, PREG_SET_ORDER); + if (is_object($debug_object)) {$debug_object->debug_log(2, "Matches Array: ", $matches);} + + $selectors = array(); + $result = array(); + //print_r($matches); + + foreach ($matches as $m) { + $m[0] = trim($m[0]); + if ($m[0]==='' || $m[0]==='/' || $m[0]==='//') continue; + // for browser generated xpath + if ($m[1]==='tbody') continue; + + list($tag, $key, $val, $exp, $no_key) = array($m[1], null, null, '=', false); + if (!empty($m[2])) {$key='id'; $val=$m[2];} + if (!empty($m[3])) {$key='class'; $val=$m[3];} + if (!empty($m[4])) {$key=$m[4];} + if (!empty($m[5])) {$exp=$m[5];} + if (!empty($m[6])) {$val=$m[6];} + + // convert to lowercase + if ($this->dom->lowercase) {$tag=strtolower($tag); $key=strtolower($key);} + //elements that do NOT have the specified attribute + if (isset($key[0]) && $key[0]==='!') {$key=substr($key, 1); $no_key=true;} + + $result[] = array($tag, $key, $val, $exp, $no_key); + if (trim($m[7])===',') { + $selectors[] = $result; + $result = array(); + } + } + if (count($result)>0) + $selectors[] = $result; + return $selectors; + } + + function __get($name) + { + if (isset($this->attr[$name])) + { + return $this->convert_text($this->attr[$name]); + } + switch ($name) + { + case 'outertext': return $this->outertext(); + case 'innertext': return $this->innertext(); + case 'plaintext': return $this->text(); + case 'xmltext': return $this->xmltext(); + default: return array_key_exists($name, $this->attr); + } + } + + function __set($name, $value) + { + global $debug_object; + if (is_object($debug_object)) {$debug_object->debug_log_entry(1);} + + switch ($name) + { + case 'outertext': return $this->_[HDOM_INFO_OUTER] = $value; + case 'innertext': + if (isset($this->_[HDOM_INFO_TEXT])) return $this->_[HDOM_INFO_TEXT] = $value; + return $this->_[HDOM_INFO_INNER] = $value; + } + if (!isset($this->attr[$name])) + { + $this->_[HDOM_INFO_SPACE][] = array(' ', '', ''); + $this->_[HDOM_INFO_QUOTE][] = HDOM_QUOTE_DOUBLE; + } + $this->attr[$name] = $value; + } + + function __isset($name) + { + switch ($name) + { + case 'outertext': return true; + case 'innertext': return true; + case 'plaintext': return true; + } + //no value attr: nowrap, checked selected... + return (array_key_exists($name, $this->attr)) ? true : isset($this->attr[$name]); + } + + function __unset($name) { + if (isset($this->attr[$name])) + unset($this->attr[$name]); + } + + // PaperG - Function to convert the text from one character set to another if the two sets are not the same. + function convert_text($text) + { + global $debug_object; + if (is_object($debug_object)) {$debug_object->debug_log_entry(1);} + + $converted_text = $text; + + $sourceCharset = ""; + $targetCharset = ""; + + if ($this->dom) + { + $sourceCharset = strtoupper($this->dom->_charset); + $targetCharset = strtoupper($this->dom->_target_charset); + } + if (is_object($debug_object)) {$debug_object->debug_log(3, "source charset: " . $sourceCharset . " target charaset: " . $targetCharset);} + + if (!empty($sourceCharset) && !empty($targetCharset) && (strcasecmp($sourceCharset, $targetCharset) != 0)) + { + // Check if the reported encoding could have been incorrect and the text is actually already UTF-8 + if ((strcasecmp($targetCharset, 'UTF-8') == 0) && ($this->is_utf8($text))) + { + $converted_text = $text; + } + else + { + $converted_text = iconv($sourceCharset, $targetCharset, $text); + } + } + + // Lets make sure that we don't have that silly BOM issue with any of the utf-8 text we output. + if ($targetCharset == 'UTF-8') + { + if (substr($converted_text, 0, 3) == "\xef\xbb\xbf") + { + $converted_text = substr($converted_text, 3); + } + if (substr($converted_text, -3) == "\xef\xbb\xbf") + { + $converted_text = substr($converted_text, 0, -3); + } + } + + return $converted_text; + } + + /** + * Returns true if $string is valid UTF-8 and false otherwise. + * + * @param mixed $str String to be tested + * @return boolean + */ + static function is_utf8($str) + { + $c=0; $b=0; + $bits=0; + $len=strlen($str); + for($i=0; $i<$len; $i++) + { + $c=ord($str[$i]); + if($c > 128) + { + if(($c >= 254)) return false; + elseif($c >= 252) $bits=6; + elseif($c >= 248) $bits=5; + elseif($c >= 240) $bits=4; + elseif($c >= 224) $bits=3; + elseif($c >= 192) $bits=2; + else return false; + if(($i+$bits) > $len) return false; + while($bits > 1) + { + $i++; + $b=ord($str[$i]); + if($b < 128 || $b > 191) return false; + $bits--; + } + } + } + return true; + } + /* + function is_utf8($string) + { + //this is buggy + return (utf8_encode(utf8_decode($string)) == $string); + } + */ + + /** + * Function to try a few tricks to determine the displayed size of an img on the page. + * NOTE: This will ONLY work on an IMG tag. Returns FALSE on all other tag types. + * + * @author John Schlick + * @version April 19 2012 + * @return array an array containing the 'height' and 'width' of the image on the page or -1 if we can't figure it out. + */ + function get_display_size() + { + global $debug_object; + + $width = -1; + $height = -1; + + if ($this->tag !== 'img') + { + return false; + } + + // See if there is aheight or width attribute in the tag itself. + if (isset($this->attr['width'])) + { + $width = $this->attr['width']; + } + + if (isset($this->attr['height'])) + { + $height = $this->attr['height']; + } + + // Now look for an inline style. + if (isset($this->attr['style'])) + { + // Thanks to user gnarf from stackoverflow for this regular expression. + $attributes = array(); + preg_match_all("/([\w-]+)\s*:\s*([^;]+)\s*;?/", $this->attr['style'], $matches, PREG_SET_ORDER); + foreach ($matches as $match) { + $attributes[$match[1]] = $match[2]; + } + + // If there is a width in the style attributes: + if (isset($attributes['width']) && $width == -1) + { + // check that the last two characters are px (pixels) + if (strtolower(substr($attributes['width'], -2)) == 'px') + { + $proposed_width = substr($attributes['width'], 0, -2); + // Now make sure that it's an integer and not something stupid. + if (filter_var($proposed_width, FILTER_VALIDATE_INT)) + { + $width = $proposed_width; + } + } + } + + // If there is a width in the style attributes: + if (isset($attributes['height']) && $height == -1) + { + // check that the last two characters are px (pixels) + if (strtolower(substr($attributes['height'], -2)) == 'px') + { + $proposed_height = substr($attributes['height'], 0, -2); + // Now make sure that it's an integer and not something stupid. + if (filter_var($proposed_height, FILTER_VALIDATE_INT)) + { + $height = $proposed_height; + } + } + } + + } + + // Future enhancement: + // Look in the tag to see if there is a class or id specified that has a height or width attribute to it. + + // Far future enhancement + // Look at all the parent tags of this image to see if they specify a class or id that has an img selector that specifies a height or width + // Note that in this case, the class or id will have the img subselector for it to apply to the image. + + // ridiculously far future development + // If the class or id is specified in a SEPARATE css file thats not on the page, go get it and do what we were just doing for the ones on the page. + + $result = array('height' => $height, + 'width' => $width); + return $result; + } + + // camel naming conventions + function getAllAttributes() {return $this->attr;} + function getAttribute($name) {return $this->__get($name);} + function setAttribute($name, $value) {$this->__set($name, $value);} + function hasAttribute($name) {return $this->__isset($name);} + function removeAttribute($name) {$this->__set($name, null);} + function getElementById($id) {return $this->find("#$id", 0);} + function getElementsById($id, $idx=null) {return $this->find("#$id", $idx);} + function getElementByTagName($name) {return $this->find($name, 0);} + function getElementsByTagName($name, $idx=null) {return $this->find($name, $idx);} + function parentNode() {return $this->parent();} + function childNodes($idx=-1) {return $this->children($idx);} + function firstChild() {return $this->first_child();} + function lastChild() {return $this->last_child();} + function nextSibling() {return $this->next_sibling();} + function previousSibling() {return $this->prev_sibling();} + function hasChildNodes() {return $this->has_child();} + function nodeName() {return $this->tag;} + function appendChild($node) {$node->parent($this); return $node;} + +} + +/** + * simple html dom parser + * Paperg - in the find routine: allow us to specify that we want case insensitive testing of the value of the selector. + * Paperg - change $size from protected to public so we can easily access it + * Paperg - added ForceTagsClosed in the constructor which tells us whether we trust the html or not. Default is to NOT trust it. + * + * @package PlaceLocalInclude + */ +class simple_html_dom +{ + public $root = null; + public $nodes = array(); + public $callback = null; + public $lowercase = false; + // Used to keep track of how large the text was when we started. + public $original_size; + public $size; + protected $pos; + protected $doc; + protected $char; + protected $cursor; + protected $parent; + protected $noise = array(); + protected $token_blank = " \t\r\n"; + protected $token_equal = ' =/>'; + protected $token_slash = " />\r\n\t"; + protected $token_attr = ' >'; + // Note that this is referenced by a child node, and so it needs to be public for that node to see this information. + public $_charset = ''; + public $_target_charset = ''; + protected $default_br_text = ""; + public $default_span_text = ""; + + // use isset instead of in_array, performance boost about 30%... + protected $self_closing_tags = array('img'=>1, 'br'=>1, 'input'=>1, 'meta'=>1, 'link'=>1, 'hr'=>1, 'base'=>1, 'embed'=>1, 'spacer'=>1); + protected $block_tags = array('root'=>1, 'body'=>1, 'form'=>1, 'div'=>1, 'span'=>1, 'table'=>1); + // Known sourceforge issue #2977341 + // B tags that are not closed cause us to return everything to the end of the document. + protected $optional_closing_tags = array( + 'tr'=>array('tr'=>1, 'td'=>1, 'th'=>1), + 'th'=>array('th'=>1), + 'td'=>array('td'=>1), + 'li'=>array('li'=>1), + 'dt'=>array('dt'=>1, 'dd'=>1), + 'dd'=>array('dd'=>1, 'dt'=>1), + 'dl'=>array('dd'=>1, 'dt'=>1), + 'p'=>array('p'=>1), + 'nobr'=>array('nobr'=>1), + 'b'=>array('b'=>1), + 'option'=>array('option'=>1), + ); + + function __construct($str=null, $lowercase=true, $forceTagsClosed=true, $target_charset=DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT) + { + if ($str) + { + if (preg_match("/^http:\/\//i",$str) || is_file($str)) + { + $this->load_file($str); + } + else + { + $this->load($str, $lowercase, $stripRN, $defaultBRText, $defaultSpanText); + } + } + // Forcing tags to be closed implies that we don't trust the html, but it can lead to parsing errors if we SHOULD trust the html. + if (!$forceTagsClosed) { + $this->optional_closing_array=array(); + } + $this->_target_charset = $target_charset; + } + + function __destruct() + { + $this->clear(); + } + + // load html from string + function load($str, $lowercase=true, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT) + { + global $debug_object; + + // prepare + $this->prepare($str, $lowercase, $stripRN, $defaultBRText, $defaultSpanText); + // strip out cdata + $this->remove_noise("'<!\[CDATA\[(.*?)\]\]>'is", true); + // strip out comments + $this->remove_noise("'<!--(.*?)-->'is"); + // Per sourceforge http://sourceforge.net/tracker/?func=detail&aid=2949097&group_id=218559&atid=1044037 + // Script tags removal now preceeds style tag removal. + // strip out <script> tags + $this->remove_noise("'<\s*script[^>]*[^/]>(.*?)<\s*/\s*script\s*>'is"); + $this->remove_noise("'<\s*script\s*>(.*?)<\s*/\s*script\s*>'is"); + // strip out <style> tags + $this->remove_noise("'<\s*style[^>]*[^/]>(.*?)<\s*/\s*style\s*>'is"); + $this->remove_noise("'<\s*style\s*>(.*?)<\s*/\s*style\s*>'is"); + // strip out preformatted tags + $this->remove_noise("'<\s*(?:code)[^>]*>(.*?)<\s*/\s*(?:code)\s*>'is"); + // strip out server side scripts + $this->remove_noise("'(<\?)(.*?)(\?>)'s", true); + // strip smarty scripts + $this->remove_noise("'(\{\w)(.*?)(\})'s", true); + + // parsing + while ($this->parse()); + // end + $this->root->_[HDOM_INFO_END] = $this->cursor; + $this->parse_charset(); + + // make load function chainable + return $this; + + } + + // load html from file + function load_file() + { + $args = func_get_args(); + $this->load(call_user_func_array('file_get_contents', $args), true); + // Throw an error if we can't properly load the dom. + if (($error=error_get_last())!==null) { + $this->clear(); + return false; + } + } + + // set callback function + function set_callback($function_name) + { + $this->callback = $function_name; + } + + // remove callback function + function remove_callback() + { + $this->callback = null; + } + + // save dom as string + function save($filepath='') + { + $ret = $this->root->innertext(); + if ($filepath!=='') file_put_contents($filepath, $ret, LOCK_EX); + return $ret; + } + + // find dom node by css selector + // Paperg - allow us to specify that we want case insensitive testing of the value of the selector. + function find($selector, $idx=null, $lowercase=false) + { + return $this->root->find($selector, $idx, $lowercase); + } + + // clean up memory due to php5 circular references memory leak... + function clear() + { + foreach ($this->nodes as $n) {$n->clear(); $n = null;} + // This add next line is documented in the sourceforge repository. 2977248 as a fix for ongoing memory leaks that occur even with the use of clear. + if (isset($this->children)) foreach ($this->children as $n) {$n->clear(); $n = null;} + if (isset($this->parent)) {$this->parent->clear(); unset($this->parent);} + if (isset($this->root)) {$this->root->clear(); unset($this->root);} + unset($this->doc); + unset($this->noise); + } + + function dump($show_attr=true) + { + $this->root->dump($show_attr); + } + + // prepare HTML data and init everything + protected function prepare($str, $lowercase=true, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT) + { + $this->clear(); + + // set the length of content before we do anything to it. + $this->size = strlen($str); + // Save the original size of the html that we got in. It might be useful to someone. + $this->original_size = $this->size; + + //before we save the string as the doc... strip out the \r \n's if we are told to. + if ($stripRN) { + $str = str_replace("\r", " ", $str); + $str = str_replace("\n", " ", $str); + + // set the length of content since we have changed it. + $this->size = strlen($str); + } + + $this->doc = $str; + $this->pos = 0; + $this->cursor = 1; + $this->noise = array(); + $this->nodes = array(); + $this->lowercase = $lowercase; + $this->default_br_text = $defaultBRText; + $this->default_span_text = $defaultSpanText; + $this->root = new simple_html_dom_node($this); + $this->root->tag = 'root'; + $this->root->_[HDOM_INFO_BEGIN] = -1; + $this->root->nodetype = HDOM_TYPE_ROOT; + $this->parent = $this->root; + if ($this->size>0) $this->char = $this->doc[0]; + } + + // parse html content + protected function parse() + { + if (($s = $this->copy_until_char('<'))==='') + { + return $this->read_tag(); + } + + // text + $node = new simple_html_dom_node($this); + ++$this->cursor; + $node->_[HDOM_INFO_TEXT] = $s; + $this->link_nodes($node, false); + return true; + } + + // PAPERG - dkchou - added this to try to identify the character set of the page we have just parsed so we know better how to spit it out later. + // NOTE: IF you provide a routine called get_last_retrieve_url_contents_content_type which returns the CURLINFO_CONTENT_TYPE from the last curl_exec + // (or the content_type header from the last transfer), we will parse THAT, and if a charset is specified, we will use it over any other mechanism. + protected function parse_charset() + { + global $debug_object; + + $charset = null; + + if (function_exists('get_last_retrieve_url_contents_content_type')) + { + $contentTypeHeader = get_last_retrieve_url_contents_content_type(); + $success = preg_match('/charset=(.+)/', $contentTypeHeader, $matches); + if ($success) + { + $charset = $matches[1]; + if (is_object($debug_object)) {$debug_object->debug_log(2, 'header content-type found charset of: ' . $charset);} + } + + } + + if (empty($charset)) + { + $el = $this->root->find('meta[http-equiv=Content-Type]',0, true); + if (!empty($el)) + { + $fullvalue = $el->content; + if (is_object($debug_object)) {$debug_object->debug_log(2, 'meta content-type tag found' . $fullvalue);} + + if (!empty($fullvalue)) + { + $success = preg_match('/charset=(.+)/i', $fullvalue, $matches); + if ($success) + { + $charset = $matches[1]; + } + else + { + // If there is a meta tag, and they don't specify the character set, research says that it's typically ISO-8859-1 + if (is_object($debug_object)) {$debug_object->debug_log(2, 'meta content-type tag couldn\'t be parsed. using iso-8859 default.');} + $charset = 'ISO-8859-1'; + } + } + } + } + + // If we couldn't find a charset above, then lets try to detect one based on the text we got... + if (empty($charset)) + { + // Use this in case mb_detect_charset isn't installed/loaded on this machine. + $charset = false; + if (function_exists('mb_detect_encoding')) + { + // Have php try to detect the encoding from the text given to us. + $charset = mb_detect_encoding($this->root->plaintext . "ascii", $encoding_list = array( "UTF-8", "CP1252" ) ); + if (is_object($debug_object)) {$debug_object->debug_log(2, 'mb_detect found: ' . $charset);} + } + + // and if this doesn't work... then we need to just wrongheadedly assume it's UTF-8 so that we can move on - cause this will usually give us most of what we need... + if ($charset === false) + { + if (is_object($debug_object)) {$debug_object->debug_log(2, 'since mb_detect failed - using default of utf-8');} + $charset = 'UTF-8'; + } + } + + // Since CP1252 is a superset, if we get one of it's subsets, we want it instead. + if ((strtolower($charset) == strtolower('ISO-8859-1')) || (strtolower($charset) == strtolower('Latin1')) || (strtolower($charset) == strtolower('Latin-1'))) + { + if (is_object($debug_object)) {$debug_object->debug_log(2, 'replacing ' . $charset . ' with CP1252 as its a superset');} + $charset = 'CP1252'; + } + + if (is_object($debug_object)) {$debug_object->debug_log(1, 'EXIT - ' . $charset);} + + return $this->_charset = $charset; + } + + // read tag info + protected function read_tag() + { + if ($this->char!=='<') + { + $this->root->_[HDOM_INFO_END] = $this->cursor; + return false; + } + $begin_tag_pos = $this->pos; + $this->char = (++$this->pos<$this->size) ? $this->doc[$this->pos] : null; // next + + // end tag + if ($this->char==='/') + { + $this->char = (++$this->pos<$this->size) ? $this->doc[$this->pos] : null; // next + // This represents the change in the simple_html_dom trunk from revision 180 to 181. + // $this->skip($this->token_blank_t); + $this->skip($this->token_blank); + $tag = $this->copy_until_char('>'); + + // skip attributes in end tag + if (($pos = strpos($tag, ' '))!==false) + $tag = substr($tag, 0, $pos); + + $parent_lower = strtolower($this->parent->tag); + $tag_lower = strtolower($tag); + + if ($parent_lower!==$tag_lower) + { + if (isset($this->optional_closing_tags[$parent_lower]) && isset($this->block_tags[$tag_lower])) + { + $this->parent->_[HDOM_INFO_END] = 0; + $org_parent = $this->parent; + + while (($this->parent->parent) && strtolower($this->parent->tag)!==$tag_lower) + $this->parent = $this->parent->parent; + + if (strtolower($this->parent->tag)!==$tag_lower) { + $this->parent = $org_parent; // restore origonal parent + if ($this->parent->parent) $this->parent = $this->parent->parent; + $this->parent->_[HDOM_INFO_END] = $this->cursor; + return $this->as_text_node($tag); + } + } + else if (($this->parent->parent) && isset($this->block_tags[$tag_lower])) + { + $this->parent->_[HDOM_INFO_END] = 0; + $org_parent = $this->parent; + + while (($this->parent->parent) && strtolower($this->parent->tag)!==$tag_lower) + $this->parent = $this->parent->parent; + + if (strtolower($this->parent->tag)!==$tag_lower) + { + $this->parent = $org_parent; // restore origonal parent + $this->parent->_[HDOM_INFO_END] = $this->cursor; + return $this->as_text_node($tag); + } + } + else if (($this->parent->parent) && strtolower($this->parent->parent->tag)===$tag_lower) + { + $this->parent->_[HDOM_INFO_END] = 0; + $this->parent = $this->parent->parent; + } + else + return $this->as_text_node($tag); + } + + $this->parent->_[HDOM_INFO_END] = $this->cursor; + if ($this->parent->parent) $this->parent = $this->parent->parent; + + $this->char = (++$this->pos<$this->size) ? $this->doc[$this->pos] : null; // next + return true; + } + + $node = new simple_html_dom_node($this); + $node->_[HDOM_INFO_BEGIN] = $this->cursor; + ++$this->cursor; + $tag = $this->copy_until($this->token_slash); + $node->tag_start = $begin_tag_pos; + + // doctype, cdata & comments... + if (isset($tag[0]) && $tag[0]==='!') { + $node->_[HDOM_INFO_TEXT] = '<' . $tag . $this->copy_until_char('>'); + + if (isset($tag[2]) && $tag[1]==='-' && $tag[2]==='-') { + $node->nodetype = HDOM_TYPE_COMMENT; + $node->tag = 'comment'; + } else { + $node->nodetype = HDOM_TYPE_UNKNOWN; + $node->tag = 'unknown'; + } + if ($this->char==='>') $node->_[HDOM_INFO_TEXT].='>'; + $this->link_nodes($node, true); + $this->char = (++$this->pos<$this->size) ? $this->doc[$this->pos] : null; // next + return true; + } + + // text + if ($pos=strpos($tag, '<')!==false) { + $tag = '<' . substr($tag, 0, -1); + $node->_[HDOM_INFO_TEXT] = $tag; + $this->link_nodes($node, false); + $this->char = $this->doc[--$this->pos]; // prev + return true; + } + + if (!preg_match("/^[\w-:]+$/", $tag)) { + $node->_[HDOM_INFO_TEXT] = '<' . $tag . $this->copy_until('<>'); + if ($this->char==='<') { + $this->link_nodes($node, false); + return true; + } + + if ($this->char==='>') $node->_[HDOM_INF... [truncated message content] |
From: <wis...@us...> - 2015-12-01 15:59:12
|
Revision: 13174 http://sourceforge.net/p/xoops/svn/13174 Author: wishcraft Date: 2015-12-01 15:59:10 +0000 (Tue, 01 Dec 2015) Log Message: ----------- Pingtrax -- the Pinglist and Trackback Automated module -- Pre-alpha 1.01 -- Planning Modified Paths: -------------- XoopsModules/pingtrax/trunk/class/plugins.php XoopsModules/pingtrax/trunk/language/english/modinfo.php XoopsModules/pingtrax/trunk/xoops_version.php Modified: XoopsModules/pingtrax/trunk/class/plugins.php =================================================================== --- XoopsModules/pingtrax/trunk/class/plugins.php 2015-12-01 14:58:33 UTC (rev 13173) +++ XoopsModules/pingtrax/trunk/class/plugins.php 2015-12-01 15:59:10 UTC (rev 13174) @@ -72,9 +72,10 @@ foreach(get_declared_classes() as $class) { - if (substr(strtolower($class), 0, strlen($this->getModuleDirname()))==strtolower($this->getModuleDirname()) && (!strpos(strtolower($class), 'categor') && !strpos(strtolower($this->getModulePHPSelf()), 'categor'))) + if ($this->getModuleDirname() != '' && substr(strtolower($class), 0, strlen($this->getModuleDirname()))==strtolower($this->getModuleDirname()) && (!strpos(strtolower($class), 'categor') && !strpos(strtolower($this->getModulePHPSelf()), 'categor'))) { - if (is_a(@new $class(), "XoopsPersistableObjectHandler")) + @$obj = new $class(); + if (is_a($obj, "XoopsPersistableObjectHandler")) return strtolower(str_replace(array(ucfirst($this->getModuleDirname()), $this->getModuleDirname(), 'handler', 'Handler'), '', $class)); } } @@ -93,7 +94,7 @@ { default: - $idnaming = explode(array("\n", "\n\r", "\r\n"), file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'item-id-names.txt')); + $idnaming = explode(PHP_EOL, file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'item-id-names.txt')); foreach($_GET as $key => $value) { if (!is_array($value)) @@ -102,7 +103,7 @@ { if (strpos($key, $idname) && is_numeric($_GET[$key])) $id = $_GET[$key]; - elseif (is_numeric($_GET[$key]) && !in_array($key, explode(array("\n", "\n\r", "\r\n"), file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'exclude-names.txt')))) + elseif (is_numeric($_GET[$key]) && !in_array($key, explode(PHP_EOL, file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'exclude-names.txt')))) $id = $_GET[$key]; } } @@ -147,7 +148,7 @@ { default: - $idnaming = explode(array("\n", "\n\r", "\r\n"), file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'category-id-names.txt')); + $idnaming = explode(PHP_EOL, file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'category-id-names.txt')); foreach($_GET as $key => $value) { if (!is_array($value)) @@ -156,7 +157,7 @@ { if (strpos($key, $idname) && is_numeric($_GET[$key])) $id = $_GET[$key]; - elseif ($id = 0 && is_numeric($_GET[$key]) && !in_array($key, explode(array("\n", "\n\r", "\r\n"), file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'exclude-names.txt')))) + elseif ($id = 0 && is_numeric($_GET[$key]) && !in_array($key, explode(PHP_EOL, file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'exclude-names.txt')))) $id = $_GET[$key]; } } @@ -186,8 +187,6 @@ */ function getItemRefererURI() { - if (parse_url(strtolower(XOOPS_URL), PHP_URL_PATH) == substr(strtolower($_SERVER["REQUEST_URI"]), 0, strlen(parse_url(strtolower(XOOPS_URL), PHP_URL_PATH)))) - return substr($_SERVER["REQUEST_URI"], strlen(parse_url(strtolower(XOOPS_URL), PHP_URL_PATH))-1); return $_SERVER["REQUEST_URI"]; } @@ -340,7 +339,7 @@ */ function getFeedProtocol() { - return parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_SCHEME); + return parse_url(strtolower(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url'])), PHP_URL_SCHEME); } /** @@ -348,7 +347,7 @@ */ function getFeedDomain() { - return parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_HOST); + return parse_url(strtolower(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url'])), PHP_URL_HOST); } /** @@ -356,7 +355,7 @@ */ function getFeedRefererURI() { - return parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_PATH) . "?" .parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_QUERY); + return parse_url(strtolower(str_replace("%xoops_url%", XOOPS_URL, $this->_configs['default_feed_url'])), PHP_URL_PATH) . "?" .parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_QUERY); } } @@ -408,6 +407,7 @@ } if (is_object($this->_plugins[$dirname])) { + $ret['type'] = 'local'; $ret['module-dirname'] = $this->_plugins[$dirname]->getModuleDirname(); $ret['module-class'] = $this->_plugins[$dirname]->getModuleClass(); $ret['module-item-id'] = $this->_plugins[$dirname]->getModuleItemID(); @@ -426,9 +426,9 @@ if (!empty($ret)) { $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); - $item = $itemHandler->create(true); + $item = $itemsHandler->create(true); $item->setVars($ret); - $ret = $itemHandler->get($itemHandler->insert($item)); + $ret = $itemsHandler->get($itemsHandler->insert($item)); } return $ret; } @@ -464,7 +464,7 @@ $item->setVar('item-title', $this->_plugins[$dirname]->getItemTitle()); $item->setVar('item-description', $this->_plugins[$dirname]->getItemTitle()); $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); - return $itemHandler->get($itemHandler->insert($item)); + return $itemsHandler->get($itemsHandler->insert($item)); } return $item; } Modified: XoopsModules/pingtrax/trunk/language/english/modinfo.php =================================================================== --- XoopsModules/pingtrax/trunk/language/english/modinfo.php 2015-12-01 14:58:33 UTC (rev 13173) +++ XoopsModules/pingtrax/trunk/language/english/modinfo.php 2015-12-01 15:59:10 UTC (rev 13174) @@ -1,14 +1,27 @@ <?php -// $Id: modinfo.php 12363 2014-03-08 10:39:06Z beckmi $ -// _LANGCODE: en -// _CHARSET : UTF-8 -// Translator: XOOPS Translation Team -define('_IPV4_MI_NAME',"IPv4 Debt"); -define('_IPV4_MI_DESC',"Module for displaying the IPv4 debt to Chronolabs Cooperative"); -define('_IPV4_MI_HTACCESS',"Support HTACCESS"); -define('_IPV4_MI_HTACCESS_DESC',"This will enable support for htaccess"); -define('_IPV4_MI_BASEURL',"Base URL for htaccess"); -define('_IPV4_MI_BASEURL_DESC',"This is the base URL of htaccess"); -define('_IPV4_MI_ENDURL',"End of URL"); -define('_IPV4_MI_ENDURL_DESC',""); +/** + * PingTrax Module Global Constants + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ +define('_MI_PINGTRAX_NAME',"PingTrax"); +define('_MI_PINGTRAX_DESC',"Module for Automated PingList's and Trackbacks as well as sitemaps in XML!"); +define('_MI_PINGTRAX_DEFAULT_FEED_URL',"Default URL for the RSS Feed Backend"); +define('_MI_PINGTRAX_DEFAULT_FEED_URL_DESC',"This will provide the default URL for the feed, <em>%xoops_url%</em> will be replaced with <em>".XOOPS_URL."</em>"); + Modified: XoopsModules/pingtrax/trunk/xoops_version.php =================================================================== --- XoopsModules/pingtrax/trunk/xoops_version.php 2015-12-01 14:58:33 UTC (rev 13173) +++ XoopsModules/pingtrax/trunk/xoops_version.php 2015-12-01 15:59:10 UTC (rev 13174) @@ -79,31 +79,12 @@ $modversion['hasMain'] = 0; $modversion['config'] = array(); -/* $modversion['config'][] = array( - 'name' => 'htaccess', - 'title' => '_MI_PINGTRAX_HTACCESS', - 'description' => '_MI_PINGTRAX_HTACCESS_DESC', - 'formtype' => 'yesno', - 'valuetype' => 'int', - 'default' => false -); - -$modversion['config'][] = array( - 'name' => 'base_url', - 'title' => '_MI_PINGTRAX_BASEURL', - 'description' => '_MI_PINGTRAX_BASEURL_DESC', - 'formtype' => 'textbox', + 'name' => 'default_feed_url', + 'title' => '_MI_PINGTRAX_DEFAULT_FEED_URL', + 'description' => '_MI_PINGTRAX_DEFAULT_FEED_URL_DESC', + 'formtype' => 'text', 'valuetype' => 'text', - 'default' => "ipv4" + 'default' => '%xoops_url%/backend.php' ); -$modversion['config'][] = array( - 'name' => 'end_url', - 'title' => '_MI_PINGTRAX_ENDURL', - 'description' => '_MI_PINGTRAX_ENDURL_DESC', - 'formtype' => 'textbox', - 'valuetype' => 'text', - 'default' => ".html" -); -*/ |
From: <wis...@us...> - 2015-12-01 14:58:35
|
Revision: 13173 http://sourceforge.net/p/xoops/svn/13173 Author: wishcraft Date: 2015-12-01 14:58:33 +0000 (Tue, 01 Dec 2015) Log Message: ----------- Pingtrax -- the Pinglist and Trackback Automated module -- Pre-alpha 1.01 -- Planning Modified Paths: -------------- XoopsModules/pingtrax/trunk/class/items.php XoopsModules/pingtrax/trunk/class/plugins.php XoopsModules/pingtrax/trunk/plugins/default.php XoopsModules/pingtrax/trunk/preloads/items.php Modified: XoopsModules/pingtrax/trunk/class/items.php =================================================================== --- XoopsModules/pingtrax/trunk/class/items.php 2015-12-01 13:44:06 UTC (rev 13172) +++ XoopsModules/pingtrax/trunk/class/items.php 2015-12-01 14:58:33 UTC (rev 13173) @@ -76,9 +76,9 @@ $this->initVar('module-php-self', XOBJ_DTYPE_OTHER, '', false, 150); $this->initVar('module-get', XOBJ_DTYPE_ARRAY, array(), false); $this->initVar('item-author-uid', XOBJ_DTYPE_INT, 0, false); - $this->initVar('item-author-name', XOBJ_DTYPE_TXTBOX, 0, false, 64); - $this->initVar('item-title', XOBJ_DTYPE_TXTBOX, 0, false, 180); - $this->initVar('item-description', XOBJ_DTYPE_TXTBOX, 0, false, 250); + $this->initVar('item-author-name', XOBJ_DTYPE_TXTBOX, '', false, 64); + $this->initVar('item-title', XOBJ_DTYPE_TXTBOX, '', false, 180); + $this->initVar('item-description', XOBJ_DTYPE_TXTBOX, '', false, 250); $this->initVar('item-protocol', XOBJ_DTYPE_ENUM, XOOPS_PROT, true, false, false, false, array('https://','http://')); $this->initVar('item-domain', XOBJ_DTYPE_TXTBOX, parse_url(XOOPS_URL, PHP_URL_HOST), true, 150); $this->initVar('item-referer-uri', XOBJ_DTYPE_TXTBOX, $_SERVER["REQUEST_URI"], true, 250); @@ -88,7 +88,6 @@ $this->initVar('feed-referer-uri', XOBJ_DTYPE_TXTBOX, parse_url(XOOPS_URL, PHP_URL_PATH) . '/backend.php', true, 250); $this->initVar('discovery-hook', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('php','preloader','smarty','combination','unknown')); $this->initVar('user-session', XOBJ_DTYPE_ENUM, 'unknown', true, false, false, false, array('admin','user','guest','unknown')); - $this->initVar('written', XOBJ_DTYPE_INT, 0, false); $this->initVar('created', XOBJ_DTYPE_INT, 0, false); $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); @@ -115,7 +114,17 @@ { if ($object->isNew()) { - $object->setVar('created', time()); + $criteria = new Criteria('referer', $object->getVar('referer')); + if ($this->getCount($criteria)==0) + $object->setVar('created', time()); + else + { + $objs = $this->getObjects($criteria, false); + if (isset($objs[0])) + return $objs[0]->getVar('id'); + else + return false; + } } else { $object->setVar('updated', time()); } Modified: XoopsModules/pingtrax/trunk/class/plugins.php =================================================================== --- XoopsModules/pingtrax/trunk/class/plugins.php 2015-12-01 13:44:06 UTC (rev 13172) +++ XoopsModules/pingtrax/trunk/class/plugins.php 2015-12-01 14:58:33 UTC (rev 13173) @@ -29,11 +29,25 @@ { /** + * @var array + */ + var $_configs = array(); + + /** * */ function __construct() { $this->XoopsObject(); + + // Load Module Config's into object array + $moduleHandler = xoops_gethandler('module'); + $module = $moduleHandler->getByDirname('pingtrax'); + if (is_a($module, 'XoopsModule')) + { + $configHandler = xoops_gethandler('config'); + $this->_configs = $configHandler->getConfigList($module->getVar('mid')); + } } /** @@ -60,8 +74,8 @@ { if (substr(strtolower($class), 0, strlen($this->getModuleDirname()))==strtolower($this->getModuleDirname()) && (!strpos(strtolower($class), 'categor') && !strpos(strtolower($this->getModulePHPSelf()), 'categor'))) { - if (is_a(new $class(), "XoopsPersistableObjectHandler")) - return $class; + if (is_a(@new $class(), "XoopsPersistableObjectHandler")) + return strtolower(str_replace(array(ucfirst($this->getModuleDirname()), $this->getModuleDirname(), 'handler', 'Handler'), '', $class)); } } @@ -186,6 +200,165 @@ return substr($_SERVER["PHP_SELF"], strlen(XOOPS_ROOT_PATH)-1); return $_SERVER["PHP_SELF"]; } + + + /** + * + */ + function getItemTitle() + { + switch ($this->getModulePHPSelf()) + { + default: + + if (is_object($GLOBALS['xoopsTpl'])) + return $GLOBALS['xoopsTpl']->_tpl_vars['xoops_pagetitle']; + break; + } + return $GLOBALS["xoopsConfig"]['sitename']; + } + + + /** + * + */ + function getItemDescription() + { + switch ($this->getModulePHPSelf()) + { + default: + + if (is_object($GLOBALS['xoopsTpl'])) + return $GLOBALS['xoopsTpl']->_tpl_vars['xoops_meta_description']; + break; + } + return $GLOBALS["xoopsConfigMetaFooter"]['meta_description']; + } + + /** + * + */ + function getItemAuthorUID() + { + static $uid = 0; + if ($uid = 0) + switch ($this->getModulePHPSelf()) + { + default: + foreach($GLOBALS['xoopsTpl']->_tpl_vars as $key => $values) + { + if ($key = 'uid' && is_numeric($values)) + $uid = $values; + elseif(is_array($values)) + $uid = explore_array($values, 'uid', 'uid=([0-9]+)'); + elseif(is_string($values)) + { + preg_match('uid=([0-9])+', $values, $matches); + if (!empty($matches)) + { + foreach($matches as $match) + { + if (is_array($match)) + { + foreach($match as $value) + if (is_numeric($value)) + { + $uid = $value; + continue; + continue; + continue; + continue; + } + } else { + $uid = $match; + continue; + continue; + continue; + } + } + } + } + if ($uid>0) + continue; + } + } + return $uid; + } + + function explore_array($array = array(), $key = 'uid', $pattern = 'uid=([0-9]+)') + { + foreach($array as $key => $values) + { + if ($key = 'uid' && is_numeric($values)) + return $values; + elseif(is_array($values)) + return explore_array($values, 'uid', 'uid=([0-9]+)'); + elseif(is_string($values)) + { + preg_match('uid=([0-9])+', $values, $matches); + if (!empty($matches)) + foreach($matches as $match) + if (is_array($match)) + foreach($match as $value) + if (is_numeric($value)) + { + return $value; + } + else + return $match; + } + } + } + + /** + * + */ + function getItemAuthorName() + { + switch ($this->getModulePHPSelf()) + { + default: + if ($this->getItemAuthorUID()>0) + { + $userHandler = xoops_gethandler('user'); + $user = $userHandler->get($this->getItemAuthorUID()); + if (is_a($user, "XoopsUser")) + { + if (trim($user->getVar('name'))!='') + return trim($user->getVar('name')); + else + return trim($user->getVar('uname')); + } + } + } + return $GLOBALS["xoopsConfig"]['sitename']; + } + + + /** + * + */ + function getFeedProtocol() + { + return parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_SCHEME); + } + + /** + * + */ + function getFeedDomain() + { + return parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_HOST); + } + + /** + * + */ + function getFeedRefererURI() + { + return parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_PATH) . "?" .parse_url(strtolower($this->_configs['default_feed_url']), PHP_URL_QUERY); + } + } @@ -213,7 +386,7 @@ parent::__construct($db); } - function getIntialItemArray() + function getItemObject() { $ret = array(); if (is_a($GLOBALS['xoopsModule'], 'XoopsModule')) @@ -244,14 +417,55 @@ $ret['item-protocol'] = $this->_plugins[$dirname]->getItemProtocol(); $ret['item-domain'] = $this->_plugins[$dirname]->getItemDomain(); $ret['item-referer-uri'] = $this->_plugins[$dirname]->getItemRefererURI(); + $ret['feed-protocol'] = $this->_plugins[$dirname]->getFeedProtocol(); + $ret['feed-domain'] = $this->_plugins[$dirname]->getFeedDomain(); + $ret['feed-referer-uri'] = $this->_plugins[$dirname]->getFeedRefererURI(); $ret['item-php-self'] = $this->_plugins[$dirname]->getItemPHPSelf(); $ret['referer'] = $this->getReferer($ret); } + if (!empty($ret)) + { + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + $item = $itemHandler->create(true); + $item->setVars($ret); + $ret = $itemHandler->get($itemHandler->insert($item)); + } return $ret; } function getReferer($ret = array()) { - return sha1($ret['item-php-self'] . $ret['item-referer-uri'] . $ret['module-dirname'] . $ret['module-class'] . $ret['item-category-id'] . $ret['module-item-id'] . $ret['module-php-self'] . json_encode($ret['module-get'], true) . $ret['item-protocol'] . $ret['item-domain']); + return sha1($ret['item-php-self'] . $ret['item-referer-uri'] . $ret['feed-protocol'] . $ret['feed-domain'] . $ret['feed-referer-uri'] . $ret['module-dirname'] . $ret['module-class'] . $ret['item-category-id'] . $ret['module-item-id'] . $ret['module-php-self'] . json_encode($ret['module-get'], true) . $ret['item-protocol'] . $ret['item-domain']); } + + function setFooterItem(PingtraxItems $item) + { + if (is_a($GLOBALS['xoopsModule'], 'XoopsModule')) + { + if (file_exists($file = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . ($dirname = $GLOBALS['xoopsModule']->getVar('dirname')) . '.php')) + { + require_once $file; + } elseif (file_exists($file = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . ($dirname = $this->_default) . '.php')) + { + require_once $file; + } + } elseif (file_exists($file = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . ($dirname = $this->_default) . '.php')) + { + require_once $file; + } + if (class_exists($class = "PingtraxPlugins".ucfirst(strtolower($dirname))) && empty($this->_plugins[$dirname])) + { + $this->_plugins[$dirname] = new $class(); + } + if (is_object($this->_plugins[$dirname])) + { + $item->setVar('item-author-uid', $this->_plugins[$dirname]->getItemAuthorUID()); + $item->setVar('item-author-name', $this->_plugins[$dirname]->getItemAuthorName()); + $item->setVar('item-title', $this->_plugins[$dirname]->getItemTitle()); + $item->setVar('item-description', $this->_plugins[$dirname]->getItemTitle()); + $itemsHandler = xoops_getmodulehandler('items', 'pingtrax'); + return $itemHandler->get($itemHandler->insert($item)); + } + return $item; + } } Modified: XoopsModules/pingtrax/trunk/plugins/default.php =================================================================== --- XoopsModules/pingtrax/trunk/plugins/default.php 2015-12-01 13:44:06 UTC (rev 13172) +++ XoopsModules/pingtrax/trunk/plugins/default.php 2015-12-01 14:58:33 UTC (rev 13173) @@ -27,25 +27,6 @@ */ class PingtraxPluginsDefault extends PingtraxPlugins { - /** - * @param $args - - function eventCoreIncludeFunctionsRedirectheader($args) - { - $context = stream_context_create(array('http' => array( - 'method' => "POST", - 'header' => "Content-Type: text/xml\r\n", - 'content' => $xml - ))); - $file = @file_get_contents($post_to, false, $context); - if ($file === false) { echo '<p>Couldn\'t connect!</p>'; } - elseif ($file) { - echo '<p>The following response was returned:</p>'; - echo '<pre>'.htmlspecialchars($file).'</pre>'; - } else { - echo '<p>Empty response!</p>'; - } - } - */ + } Modified: XoopsModules/pingtrax/trunk/preloads/items.php =================================================================== --- XoopsModules/pingtrax/trunk/preloads/items.php 2015-12-01 13:44:06 UTC (rev 13172) +++ XoopsModules/pingtrax/trunk/preloads/items.php 2015-12-01 14:58:33 UTC (rev 13173) @@ -33,9 +33,23 @@ */ function eventCoreIncludeCommonEnd($args) { - global $moduleitem; + global $pingtraxitem; $pluginHandler = xoops_getmodulehandler('plugins', 'pingtrax'); - $moduleitem = $pluginHandler->getIntialItemArray(); + $pingtraxitem = $pluginHandler->getItemObject(); } - + + /** + * @param $args + */ + function eventCoreFooterEnd($args) + { + global $pingtraxitem; + if (is_a($pingtraxitem, "PingtraxItems")) + { + $pluginHandler = xoops_getmodulehandler('plugins', 'pingtrax'); + if ($pingtraxitem->getVar('discover-hook')=='unknown') + $pingtraxitem->setVar('discover-hook', 'preloader'); + $pingtraxitem = $pluginHandler->setFooterItem($pingtraxitem); + } + } } |
From: <wis...@us...> - 2015-12-01 13:44:08
|
Revision: 13172 http://sourceforge.net/p/xoops/svn/13172 Author: wishcraft Date: 2015-12-01 13:44:06 +0000 (Tue, 01 Dec 2015) Log Message: ----------- Pingtrax -- the Pinglist and Trackback Automated module -- Pre-alpha 1.01 -- Planning Modified Paths: -------------- XoopsModules/pingtrax/data/ping-resources.json Modified: XoopsModules/pingtrax/data/ping-resources.json =================================================================== --- XoopsModules/pingtrax/data/ping-resources.json 2015-12-01 13:25:01 UTC (rev 13171) +++ XoopsModules/pingtrax/data/ping-resources.json 2015-12-01 13:44:06 UTC (rev 13172) @@ -1 +1 @@ -{"7316f65ff94cfaddad8f757278b7739fe651291f":{"type":"XML-RPC","uri":"http:\/\/feedburner.google.com\/fb\/a\/pingSubmit?bloglink=%url"},"c04a74256fe9eb8e10b7ddad3129a279cf958612":{"type":"XML-RPC","uri":"http:\/\/rpc.weblogs.com\/pingSiteForm?name=%title&url=%url"},"cc793152f02383ca15ef3a31e467f1e4b6b3c423":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com\/ping\/RPC2"},"382c38f300f113f0f45f0fc404da76964d5d46fa":{"type":"XML-RPC","uri":"http:\/\/api.my.yahoo.com\/RPC2"},"529fb0320405c9a67cdaec0ee866355e69715cd7":{"type":"SITEMAPS","uri":"http:\/\/www.bing.com\/ping?sitemap=%url"},"6222205ce495f0a60f36fa6414216e0a1be2494c":{"type":"XML-RPC","uri":"http:\/\/api.my.yahoo.com\/rss\/ping"},"8fb83eeffec9e8b6a3c0783ec9b046a3fc66c6c6":{"type":"XML-RPC","uri":"http:\/\/bblog.com\/ping.php"},"f0683d5bd56fae5b3b014f83377630c590bcad0a":{"type":"XML-RPC","uri":"http:\/\/blog.goo.ne.jp\/XMLRPC"},"2944b7d8115f5b4997c62901b833b19ee5634fb6":{"type":"XML-RPC","uri":"http:\/\/blogdb.jp\/xmlrpc"},"af57e5bbb1734f7c7cca2f1931916e3af3fdd650":{"type":"XML-RPC","uri":"http:\/\/blogmatcher.com\/u.php"},"9e893b41ef46001780476321d8fc0dbb2b035236":{"type":"XML-RPC","uri":"http:\/\/bulkfeeds.net\/rpc"},"2bc4776643a440d33dd190edc23f2373d889c24d":{"type":"XML-RPC","uri":"http:\/\/coreblog.org\/ping\/"},"28ec8143dd32a3772bb78953e5832a4dae2c9304":{"type":"XML-RPC","uri":"http:\/\/mod-pubsub.org\/kn_apps\/blogchatt"},"6a3c21035d8d90c067d77a4ecfc1ec63b50e66db":{"type":"XML-RPC","uri":"http:\/\/www.lasermemory.com\/lsrpc\/"},"39524c5c101a4ada73ac2e976e9ded030f64f999":{"type":"XML-RPC","uri":"http:\/\/ping.amagle.com\/"},"b476efa949c3cabd28b2dd5832f18f933489b39d":{"type":"XML-RPC","uri":"http:\/\/ping.bitacoras.com"},"b2e77f4e79d4d25f16fd3c216a9217cbc3cbea89":{"type":"XML-RPC","uri":"http:\/\/ping.blo.gs\/"},"2332c6e7a4afefa85054afd2199ecfb34f8b07cf":{"type":"XML-RPC","uri":"http:\/\/ping.bloggers.jp\/rpc\/"},"3438b9c7e6f78c1bb504b06f63eb73e30272387e":{"type":"XML-RPC","uri":"http:\/\/ping.cocolog-nifty.com\/xmlrpc"},"7eeaeea6789c0b1151befb69ed0686b741cc4320":{"type":"XML-RPC","uri":"http:\/\/ping.blogmura.jp\/rpc\/"},"7dbde537866d978ec2ac7292c28b3dff589feb43":{"type":"XML-RPC","uri":"http:\/\/ping.feedburner.com"},"360b63598d7475264e7bfd893d3700d373928398":{"type":"XML-RPC","uri":"http:\/\/ping.myblog.jp"},"5991bd2f360b140c76f0d0b185d3b813c862b6e5":{"type":"XML-RPC","uri":"http:\/\/ping.rootblog.com\/rpc.php"},"29d6c22480a1ec546b186305eb9613f4db996c74":{"type":"XML-RPC","uri":"http:\/\/ping.weblogs.se\/"},"aa03e735a7250164fb4cbc6048ec2c3d12e6aa3d":{"type":"XML-RPC","uri":"http:\/\/pingoat.com\/goat\/RPC2"},"931a3eccc17023c4903e948b1e2cc73d859a76c6":{"type":"XML-RPC","uri":"http:\/\/rcs.datashed.net\/RPC2\/"},"c61f5629941a8067dac826bdd362ff885b97224b":{"type":"XML-RPC","uri":"http:\/\/rpc.blogbuzzmachine.com\/RPC2"},"a5ee3040e5629a5ad130025b711287d2f000d38e":{"type":"XML-RPC","uri":"http:\/\/rpc.icerocket.com:10080\/"},"baa599e29fe35baa81907a9c60e1de62bb3853eb":{"type":"XML-RPC","uri":"http:\/\/rpc.newsgator.com\/"},"65c065933ba53b9ebc811acac8ba09b8412437a0":{"type":"XML-RPC","uri":"http:\/\/rpc.pingomatic.com"},"183e07e3fd1ac30c73403c8d0aac246a1cb2b845":{"type":"XML-RPC","uri":"http:\/\/rpc.technorati.com\/rpc\/ping"},"525d9f79190a8246f64205c893ad6920daa97b6a":{"type":"XML-RPC","uri":"http:\/\/rpc.weblogs.com\/RPC2"},"1011261ef2a170c2a2e1c089dcce9fc90b739d2a":{"type":"XML-RPC","uri":"http:\/\/topicexchange.com\/RPC2"},"3a81f63dc6fd19a2afd90ba2608750d14d78b8b1":{"type":"XML-RPC","uri":"http:\/\/trackback.bakeinu.jp\/bakeping.php"},"72a73954d397374491f86221da0c7ba7f8e129b0":{"type":"XML-RPC","uri":"http:\/\/www.a2b.cc\/setloc\/bp.a2b"},"a2c5c61f9dda5b97d3118881afdb290706ebc878":{"type":"XML-RPC","uri":"http:\/\/www.blogoole.com\/ping\/"},"1f63ad887f47832c8fbf5ec05da4fa0868b1d0aa":{"type":"XML-RPC","uri":"http:\/\/www.blogoon.net\/ping\/"},"f1c24832456fadc1507a2c7713cb888c2d6b66f5":{"type":"XML-RPC","uri":"http:\/\/www.blogpeople.net\/servlet\/weblogUpdates"},"9d272966b012bf19a34fc8b4073f2303821727c4":{"type":"XML-RPC","uri":"http:\/\/www.blogroots.com\/tb_populi.blog?id=1"},"5b11eeba3663d3a79304d16cfb5991a1071f7030":{"type":"XML-RPC","uri":"http:\/\/www.blogstreet.com\/xrbin\/xmlrpc.cgi"},"8cfd88dba0cd1e0921c257b9e7a1216fbf932881":{"type":"XML-RPC","uri":"http:\/\/www.mod-pubsub.org\/kn_apps\/blogchatter\/ping.php"},"277cd44a3d69292d4c79186dfbee485e0b82e137":{"type":"XML-RPC","uri":"http:\/\/www.popdex.com\/addsite.php"},"a7487cd6db1e14d23db34420ae3a226ac29f9fe8":{"type":"XML-RPC","uri":"http:\/\/www.snipsnap.org\/RPC2"},"3e3fb95faf0d2361e50a507090eba40abcdb8606":{"type":"XML-RPC","uri":"http:\/\/www.weblogues.com\/RPC\/"},"38457437eba9b6a329c370d7b19cce7ef06af757":{"type":"XML-RPC","uri":"http:\/\/xmlrpc.blogg.de"},"f11db7253708f9ec5c580c65ba69d38483e15d0f":{"type":"XML-RPC","uri":"http:\/\/xping.pubsub.com\/ping\/"},"bbe0dba709b6dfe73faa935debd18a9c60b00096":{"type":"XML-RPC","uri":"http:\/\/ping.blo.gs\/"},"1a68c1c1caaa56715a63e386e8ea549954ecdff2":{"type":"XML-RPC","uri":"http:\/\/blog.goo.ne.jp\/XMLRPC"},"b42a50aa3bb05f1bfc0784eceef7c51933fe28ac":{"type":"XML-RPC","uri":"http:\/\/blog.with2.net\/ping.php"},"88796b1030f253d849280474b7413bdc94b6e32e":{"type":"XML-RPC","uri":"http:\/\/blogping.unidatum.com\/RPC2"},"c332e3141d1b292e425b139ff5e1d979081d352f":{"type":"XML-RPC","uri":"http:\/\/blogpingr.de\/ping\/rpc2"},"cf145feb5a01325acfd9ed5c8386a6cbd7165a8d":{"type":"XML-RPC","uri":"https:\/\/ping.blogs.yandex.ru\/RPC2"},"460333f2ec808f56be029face63adb9774f8ad87":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ae\/ping\/RPC2"},"019091155f30938f66d5d527ddd3df8b3bac61a0":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.at\/ping\/RPC2"},"c6439a72e25a99ef95200173afbdf183ef64e3b9":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.be\/ping\/RPC2"},"d294000e738a28705b666c8a01908f610122b099":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.bg\/ping\/RPC2"},"b1f41598cf155eeaf3c0c4d1b40ea817bb17fb07":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ca\/ping\/RPC2"},"81ab67d50dd66f2a40982a75f22a75eeef7417ef":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ch\/ping\/RPC2"},"6b55c5dab140bf10f27223da2381c3e27acbe6c0":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.cl\/ping\/RPC2"},"31a89b7a87e789e3df41ecaa638228f2fedfb969":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.cr\/ping\/RPC2"},"f648fc1be9f114c2b7ad4e1a1e04b3ddf901be74":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.hu\/ping\/RPC2"},"bcdc1dcfa961e77d7f6e5a2b3791e74cec4eef07":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.id\/ping\/RPC2"},"53c67e8aa62f0a29831a41f3a41ce6b3fbe68162":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.il\/ping\/RPC2"},"638c8b404ea1375fb1b3321a895d4eee71b1c4d7":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.in\/ping\/RPC2"},"6b3c9bbd32757f5e0e4d9a0a504fde8fe58c8061":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.it\/ping\/RPC2"},"76b8f98acad1cec3d44e6a823ad94197d5be473c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.jp\/ping\/RPC2"},"b795f319c290cdab4e4211c189d4989bd46ce40d":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.ma\/ping\/RPC2"},"ce746bf1ea3594a3c813390ca9001580702600b4":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.nz\/ping\/RPC2"},"6727276f4843f869ebc88cfc20fd9536898aa33d":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.th\/ping\/RPC2"},"23b91df58c00f7bc205773b939a7c7b5ec8718a4":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.uk\/ping\/RPC2"},"e93a15ffbb01bdb74eb4c1103b78e631e0918e9c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.ve\/ping\/RPC2"},"5fb894edab2d240f4d94d2166a9a937a784a849b":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.za\/ping\/RPC2"},"942332df8fa0c6d35d84f271606f6503821a5ec1":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.ar\/ping\/RPC2"},"b4acdda0cf8bdaf285c88da38a9e642697c77146":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.au\/ping\/RPC2"},"5a29022c4578b19eeb2c58a0cc1929e6175a11cd":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.br\/ping\/RPC2"},"7a7312fbd01dcaaf37655c0c0dd6a3fe61ba0440":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.co\/ping\/RPC2"},"8a0ae89c6e611f9093b98ecdd8831b762e39fbd1":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.do\/ping\/RPC2"},"02cc2cdf073640c761837f73f441552698a99b56":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.mx\/ping\/RPC2"},"366dbe9d547cf62128aa6298260369df655a2a99":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.my\/ping\/RPC2"},"6f947e5debc331ede9eb31bf4da4bf032ff079b8":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.pe\/ping\/RPC2"},"ee2c83597c4b7e7ab3e55aaf7d689aaf2cd5cc3a":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.sa\/ping\/RPC2"},"71b08d645ae9777d122208b4c9b68fbaceda4f5c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.sg\/ping\/RPC2"},"0989a43db8f2f9ecaed1853e134f9587cb2dbd58":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.tr\/ping\/RPC2"},"89a579322e118b4eef7b7a3acc8aadba2d6b43f9":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.tw\/ping\/RPC2"},"ba17f76352dad5d67d44417fb2dd5e5c9eafc40c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.ua\/ping\/RPC2"},"4afdd9e9e312a5a0f90386e5fbb891a73e586cce":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.uy\/ping\/RPC2"},"399ce59dc4eb766d7c80ba93e215b7cc425c1f7a":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.vn\/ping\/RPC2"},"a45bb56738bdbc9fc50ff3f01b792b4857dfa8db":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com\/ping\/RPC2"},"88a697eeb34f3ecc4730486095a00021742142a5":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.de\/ping\/RPC2"},"f08fb186bccdb92e6cf28193e485f30cfe5045f4":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.es\/ping\/RPC2"},"102f15d72bae6b762b49b4e2bf5f0ae75b511d24":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.fi\/ping\/RPC2"},"33671d0b4601ddfb44cdbc6143719046c6b78641":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.fr\/ping\/RPC2"},"83650edecb9a245bff5fa6d63b77a9164747ea19":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.gr\/ping\/RPC2"},"51c7593d04dab395445ca837a19ff22c1c62de3b":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.hr\/ping\/RPC2"},"ac1a080eae9b1ce92df1c5304cefbf96789eeaee":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ie\/ping\/RPC2"},"1c8547d977f3546d77d47f3d5252540827148bdd":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.in\/ping\/RPC2"},"eb1d1f6c71f40ad389959d42d2ddc5d1b163176c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.it\/ping\/RPC2"},"53d47f5785340beebde422a91bdec911dea9ad8e":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.jp\/ping\/RPC2"},"60171b59160dac4e7e357ded51cd74173a8b1fa0":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ki\/ping\/RPC2"},"acffc7361697e2edda8bea8977c8576795bd5008":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.kz\/ping\/RPC2"},"4a6a3e402b8f1b75d6f0cc5b5e7f6e8ef229b86f":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.la\/ping\/RPC2"},"b9e9756e0df597a274e6629dfa889676c3f90cc7":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.li\/ping\/RPC2"},"22d53b028a5dd0f543bca8a6b1399b70c25df038":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.lk\/ping\/RPC2"},"1ae28b9caeab31919018a19b571295ac996a0729":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.lt\/ping\/RPC2"},"78ae49807132da0e22ea7394fbb5fec0eb313050":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.lu\/ping\/RPC2"},"3326366b3984112495ca5f75381c4df3f1d81512":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.md\/ping\/RPC2"},"7e583c8560a7c7fb9c08e9d4c00c2888b5128fc6":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.mn\/ping\/RPC2"},"9ad60a2d2977d3dc615e9467e2a95efbddfb6d13":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ms\/ping\/RPC2"},"dbd474bcdf6b6a53a912ae67369ad6f4cb00902b":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.mu\/ping\/RPC2"},"095689ab1246371c6ae5753b2cf1e84b7993d285":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.mv\/ping\/RPC2"},"b5ebe472a6da2c79c8b4426708be216d6ee7d9b7":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.mw\/ping\/RPC2"},"ab069dfa2aa25d9fdbde3c0661b878cbf660ecff":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.nl\/ping\/RPC2"},"def11305df119e03193369dfd689c94a6b520e43":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.no\/ping\/RPC2"},"722d28d8d34318ab4f5a74017f15a2915e7afde2":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.nr\/ping\/RPC2"},"5974b1e708336bc9381dca3e0d73434dac0a0dbf":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.nu\/ping\/RPC2"},"ea09012bd02272c56472cf07e0c3fd09c96b478f":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.pl\/ping\/RPC2"},"ca87c63b294595a69cc47681e8bb12ec08bad20a":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.pn\/ping\/RPC2"},"9c7896bbb9c9a7ce8a0f67e65ebe060fa6f7006f":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.pt\/ping\/RPC2"},"9f81539271b3c620e182a0568b251cd93926626a":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ro\/ping\/RPC2"},"3478adffacda66919463825886405f4bd92932da":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ru\/ping\/RPC2"},"bcebe6d4df240654ed13e9f98bf7cca5423b8458":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.rw\/ping\/RPC2"},"d9119b44be77e41f6555770bcea3f270176b3886":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sc\/ping\/RPC2"},"0af16277ab509b09552611db8fa857e676f94e88":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.se\/ping\/RPC2"},"4afa80bb4a158d8dc3b3e88d3b908d57fdbd8ecd":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sh\/ping\/RPC2"},"22db7327c408be9982e64d4b13b7dfb2aaba3102":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.si\/ping\/RPC2"},"4ea4e9594f2662bfa8ffd3282c00b401a9d2f5bc":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sk\/ping\/RPC2"},"2fe8b83635088583a458147b9529820b735e274f":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sm\/ping\/RPC2"},"36f2894f6d2aba1e6538aca827ff94c0a7587397":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sn\/ping\/RPC2"},"d2b857da222f5426a1481c808d45e54da01a8c13":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.st\/ping\/RPC2"},"88c269654839720c29aec21385c561e584dd0e72":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tk\/ping\/RPC2"},"87d0eaa7f3f00c35fc8edf9d5d4382f86d0499b3":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tl\/ping\/RPC2"},"8621a435345964d34613978f430b98ccd09ae589":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tm\/ping\/RPC2"},"e1ca0585c2b5a92cc0f6596596a9401d3e61f379":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.to\/ping\/RPC2"},"2614665a9b5ccd568b4145e31e95c78ef480aee6":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tp\/ping\/RPC2"},"b269945ef9985135d7f0b9b9026036acb7907712":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tt\/ping\/RPC2"},"46da9c8ecaaae611db7deb7c1419d7277972b306":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tw\/ping\/RPC2"},"43cf6fcb82b80f6b708ca15e20c8b78cd88cadef":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.us\/ping\/RPC2"},"47e54e8fe919200d08c68f98192d44106cfe9f2d":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.vg\/ping\/RPC2"},"edcc57888cf3d14eac38f4fe6280e98fec214c84":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.vu\/ping\/RPC2"},"114ec0c1c6a1f70f87d1b0df8603e5fa8d72e412":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ws\/ping\/RPC2"},"5bedee508aca71c3054664fddc8181b974ababa8":{"type":"XML-RPC","uri":"http:\/\/news2paper.com\/ping"},"6a39c650b84c03b6b7a51a7bd5797142d1453629":{"type":"XML-RPC","uri":"http:\/\/ping.bloggers.jp\/rpc"},"4526584784861b57dcd1a9d602d65adb8528c92e":{"type":"XML-RPC","uri":"http:\/\/ping.fc2.com"},"111052cd4d6f2a7e7aab08c4f70d09d770971cb3":{"type":"XML-RPC","uri":"http:\/\/ping.rss.drecom.jp"},"2b6df6456594f96b23c048437f5af4ce5b0e5d8c":{"type":"XML-RPC","uri":"http:\/\/rpc.bloggerei.de\/ping\/"},"731cf9c74c99b8986f24a5944cf9274341abbe9c":{"type":"XML-RPC","uri":"http:\/\/rpc.pingomatic.com"},"bb5dd04b9ff18f4a3087c38c727faa9b41437f85":{"type":"XML-RPC","uri":"http:\/\/rpc.technorati.com\/rpc\/ping"},"ebe83fd384fc762c6bc8472976d76988cfc123e8":{"type":"XML-RPC","uri":"http:\/\/rpc.twingly.com"},"047d5d2930e8615c9c0f89059393bdd405abee90":{"type":"XML-RPC","uri":"http:\/\/services.newsgator.com\/ngws\/xmlrpcping.aspx"}} \ No newline at end of file +{"7316f65ff94cfaddad8f757278b7739fe651291f":{"type":"XML-RPC","uri":"http:\/\/feedburner.google.com\/fb\/a\/pingSubmit?bloglink=%url"},"c04a74256fe9eb8e10b7ddad3129a279cf958612":{"type":"XML-RPC","uri":"http:\/\/rpc.weblogs.com\/pingSiteForm?name=%title&url=%url"},"cc793152f02383ca15ef3a31e467f1e4b6b3c423":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com\/ping\/RPC2"},"382c38f300f113f0f45f0fc404da76964d5d46fa":{"type":"XML-RPC","uri":"http:\/\/api.my.yahoo.com\/RPC2"},"529fb0320405c9a67cdaec0ee866355e69715cd7":{"type":"SITEMAPS","uri":"http:\/\/www.bing.com\/ping?sitemap=%url"},"6222205ce495f0a60f36fa6414216e0a1be2494c":{"type":"XML-RPC","uri":"http:\/\/api.my.yahoo.com\/rss\/ping"},"8fb83eeffec9e8b6a3c0783ec9b046a3fc66c6c6":{"type":"XML-RPC","uri":"http:\/\/bblog.com\/ping.php"},"f0683d5bd56fae5b3b014f83377630c590bcad0a":{"type":"XML-RPC","uri":"http:\/\/blog.goo.ne.jp\/XMLRPC"},"2944b7d8115f5b4997c62901b833b19ee5634fb6":{"type":"XML-RPC","uri":"http:\/\/blogdb.jp\/xmlrpc"},"af57e5bbb1734f7c7cca2f1931916e3af3fdd650":{"type":"XML-RPC","uri":"http:\/\/blogmatcher.com\/u.php"},"9e893b41ef46001780476321d8fc0dbb2b035236":{"type":"XML-RPC","uri":"http:\/\/bulkfeeds.net\/rpc"},"2bc4776643a440d33dd190edc23f2373d889c24d":{"type":"XML-RPC","uri":"http:\/\/coreblog.org\/ping\/"},"28ec8143dd32a3772bb78953e5832a4dae2c9304":{"type":"XML-RPC","uri":"http:\/\/mod-pubsub.org\/kn_apps\/blogchatt"},"6a3c21035d8d90c067d77a4ecfc1ec63b50e66db":{"type":"XML-RPC","uri":"http:\/\/www.lasermemory.com\/lsrpc\/"},"39524c5c101a4ada73ac2e976e9ded030f64f999":{"type":"XML-RPC","uri":"http:\/\/ping.amagle.com\/"},"b476efa949c3cabd28b2dd5832f18f933489b39d":{"type":"XML-RPC","uri":"http:\/\/ping.bitacoras.com"},"b2e77f4e79d4d25f16fd3c216a9217cbc3cbea89":{"type":"XML-RPC","uri":"http:\/\/ping.blo.gs\/"},"2332c6e7a4afefa85054afd2199ecfb34f8b07cf":{"type":"XML-RPC","uri":"http:\/\/ping.bloggers.jp\/rpc\/"},"3438b9c7e6f78c1bb504b06f63eb73e30272387e":{"type":"XML-RPC","uri":"http:\/\/ping.cocolog-nifty.com\/xmlrpc"},"7eeaeea6789c0b1151befb69ed0686b741cc4320":{"type":"XML-RPC","uri":"http:\/\/ping.blogmura.jp\/rpc\/"},"7dbde537866d978ec2ac7292c28b3dff589feb43":{"type":"XML-RPC","uri":"http:\/\/ping.feedburner.com"},"360b63598d7475264e7bfd893d3700d373928398":{"type":"XML-RPC","uri":"http:\/\/ping.myblog.jp"},"5991bd2f360b140c76f0d0b185d3b813c862b6e5":{"type":"XML-RPC","uri":"http:\/\/ping.rootblog.com\/rpc.php"},"29d6c22480a1ec546b186305eb9613f4db996c74":{"type":"XML-RPC","uri":"http:\/\/ping.weblogs.se\/"},"aa03e735a7250164fb4cbc6048ec2c3d12e6aa3d":{"type":"XML-RPC","uri":"http:\/\/pingoat.com\/goat\/RPC2"},"931a3eccc17023c4903e948b1e2cc73d859a76c6":{"type":"XML-RPC","uri":"http:\/\/rcs.datashed.net\/RPC2\/"},"c61f5629941a8067dac826bdd362ff885b97224b":{"type":"XML-RPC","uri":"http:\/\/rpc.blogbuzzmachine.com\/RPC2"},"a5ee3040e5629a5ad130025b711287d2f000d38e":{"type":"XML-RPC","uri":"http:\/\/rpc.icerocket.com:10080\/"},"baa599e29fe35baa81907a9c60e1de62bb3853eb":{"type":"XML-RPC","uri":"http:\/\/rpc.newsgator.com\/"},"65c065933ba53b9ebc811acac8ba09b8412437a0":{"type":"XML-RPC","uri":"http:\/\/rpc.pingomatic.com"},"183e07e3fd1ac30c73403c8d0aac246a1cb2b845":{"type":"XML-RPC","uri":"http:\/\/rpc.technorati.com\/rpc\/ping"},"525d9f79190a8246f64205c893ad6920daa97b6a":{"type":"XML-RPC","uri":"http:\/\/rpc.weblogs.com\/RPC2"},"1011261ef2a170c2a2e1c089dcce9fc90b739d2a":{"type":"XML-RPC","uri":"http:\/\/topicexchange.com\/RPC2"},"3a81f63dc6fd19a2afd90ba2608750d14d78b8b1":{"type":"XML-RPC","uri":"http:\/\/trackback.bakeinu.jp\/bakeping.php"},"72a73954d397374491f86221da0c7ba7f8e129b0":{"type":"XML-RPC","uri":"http:\/\/www.a2b.cc\/setloc\/bp.a2b"},"a2c5c61f9dda5b97d3118881afdb290706ebc878":{"type":"XML-RPC","uri":"http:\/\/www.blogoole.com\/ping\/"},"1f63ad887f47832c8fbf5ec05da4fa0868b1d0aa":{"type":"XML-RPC","uri":"http:\/\/www.blogoon.net\/ping\/"},"f1c24832456fadc1507a2c7713cb888c2d6b66f5":{"type":"XML-RPC","uri":"http:\/\/www.blogpeople.net\/servlet\/weblogUpdates"},"9d272966b012bf19a34fc8b4073f2303821727c4":{"type":"XML-RPC","uri":"http:\/\/www.blogroots.com\/tb_populi.blog?id=1"},"5b11eeba3663d3a79304d16cfb5991a1071f7030":{"type":"XML-RPC","uri":"http:\/\/www.blogstreet.com\/xrbin\/xmlrpc.cgi"},"8cfd88dba0cd1e0921c257b9e7a1216fbf932881":{"type":"XML-RPC","uri":"http:\/\/www.mod-pubsub.org\/kn_apps\/blogchatter\/ping.php"},"277cd44a3d69292d4c79186dfbee485e0b82e137":{"type":"XML-RPC","uri":"http:\/\/www.popdex.com\/addsite.php"},"a7487cd6db1e14d23db34420ae3a226ac29f9fe8":{"type":"XML-RPC","uri":"http:\/\/www.snipsnap.org\/RPC2"},"3e3fb95faf0d2361e50a507090eba40abcdb8606":{"type":"XML-RPC","uri":"http:\/\/www.weblogues.com\/RPC\/"},"38457437eba9b6a329c370d7b19cce7ef06af757":{"type":"XML-RPC","uri":"http:\/\/xmlrpc.blogg.de"},"f11db7253708f9ec5c580c65ba69d38483e15d0f":{"type":"XML-RPC","uri":"http:\/\/xping.pubsub.com\/ping\/"},"bbe0dba709b6dfe73faa935debd18a9c60b00096":{"type":"XML-RPC","uri":"http:\/\/ping.blo.gs\/"},"1a68c1c1caaa56715a63e386e8ea549954ecdff2":{"type":"XML-RPC","uri":"http:\/\/blog.goo.ne.jp\/XMLRPC"},"b42a50aa3bb05f1bfc0784eceef7c51933fe28ac":{"type":"XML-RPC","uri":"http:\/\/blog.with2.net\/ping.php"},"88796b1030f253d849280474b7413bdc94b6e32e":{"type":"XML-RPC","uri":"http:\/\/blogping.unidatum.com\/RPC2"},"c332e3141d1b292e425b139ff5e1d979081d352f":{"type":"XML-RPC","uri":"http:\/\/blogpingr.de\/ping\/rpc2"},"cf145feb5a01325acfd9ed5c8386a6cbd7165a8d":{"type":"XML-RPC","uri":"https:\/\/ping.blogs.yandex.ru\/RPC2"},"460333f2ec808f56be029face63adb9774f8ad87":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ae\/ping\/RPC2"},"019091155f30938f66d5d527ddd3df8b3bac61a0":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.at\/ping\/RPC2"},"c6439a72e25a99ef95200173afbdf183ef64e3b9":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.be\/ping\/RPC2"},"d294000e738a28705b666c8a01908f610122b099":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.bg\/ping\/RPC2"},"b1f41598cf155eeaf3c0c4d1b40ea817bb17fb07":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ca\/ping\/RPC2"},"81ab67d50dd66f2a40982a75f22a75eeef7417ef":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ch\/ping\/RPC2"},"6b55c5dab140bf10f27223da2381c3e27acbe6c0":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.cl\/ping\/RPC2"},"31a89b7a87e789e3df41ecaa638228f2fedfb969":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.cr\/ping\/RPC2"},"f648fc1be9f114c2b7ad4e1a1e04b3ddf901be74":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.hu\/ping\/RPC2"},"bcdc1dcfa961e77d7f6e5a2b3791e74cec4eef07":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.id\/ping\/RPC2"},"53c67e8aa62f0a29831a41f3a41ce6b3fbe68162":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.il\/ping\/RPC2"},"638c8b404ea1375fb1b3321a895d4eee71b1c4d7":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.in\/ping\/RPC2"},"6b3c9bbd32757f5e0e4d9a0a504fde8fe58c8061":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.it\/ping\/RPC2"},"76b8f98acad1cec3d44e6a823ad94197d5be473c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.jp\/ping\/RPC2"},"b795f319c290cdab4e4211c189d4989bd46ce40d":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.ma\/ping\/RPC2"},"ce746bf1ea3594a3c813390ca9001580702600b4":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.nz\/ping\/RPC2"},"6727276f4843f869ebc88cfc20fd9536898aa33d":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.th\/ping\/RPC2"},"23b91df58c00f7bc205773b939a7c7b5ec8718a4":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.uk\/ping\/RPC2"},"e93a15ffbb01bdb74eb4c1103b78e631e0918e9c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.ve\/ping\/RPC2"},"5fb894edab2d240f4d94d2166a9a937a784a849b":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.co.za\/ping\/RPC2"},"942332df8fa0c6d35d84f271606f6503821a5ec1":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.ar\/ping\/RPC2"},"b4acdda0cf8bdaf285c88da38a9e642697c77146":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.au\/ping\/RPC2"},"5a29022c4578b19eeb2c58a0cc1929e6175a11cd":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.br\/ping\/RPC2"},"7a7312fbd01dcaaf37655c0c0dd6a3fe61ba0440":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.co\/ping\/RPC2"},"8a0ae89c6e611f9093b98ecdd8831b762e39fbd1":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.do\/ping\/RPC2"},"02cc2cdf073640c761837f73f441552698a99b56":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.mx\/ping\/RPC2"},"366dbe9d547cf62128aa6298260369df655a2a99":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.my\/ping\/RPC2"},"6f947e5debc331ede9eb31bf4da4bf032ff079b8":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.pe\/ping\/RPC2"},"ee2c83597c4b7e7ab3e55aaf7d689aaf2cd5cc3a":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.sa\/ping\/RPC2"},"71b08d645ae9777d122208b4c9b68fbaceda4f5c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.sg\/ping\/RPC2"},"0989a43db8f2f9ecaed1853e134f9587cb2dbd58":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.tr\/ping\/RPC2"},"89a579322e118b4eef7b7a3acc8aadba2d6b43f9":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.tw\/ping\/RPC2"},"ba17f76352dad5d67d44417fb2dd5e5c9eafc40c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.ua\/ping\/RPC2"},"4afdd9e9e312a5a0f90386e5fbb891a73e586cce":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.uy\/ping\/RPC2"},"399ce59dc4eb766d7c80ba93e215b7cc425c1f7a":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com.vn\/ping\/RPC2"},"a45bb56738bdbc9fc50ff3f01b792b4857dfa8db":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.com\/ping\/RPC2"},"88a697eeb34f3ecc4730486095a00021742142a5":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.de\/ping\/RPC2"},"f08fb186bccdb92e6cf28193e485f30cfe5045f4":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.es\/ping\/RPC2"},"102f15d72bae6b762b49b4e2bf5f0ae75b511d24":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.fi\/ping\/RPC2"},"33671d0b4601ddfb44cdbc6143719046c6b78641":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.fr\/ping\/RPC2"},"83650edecb9a245bff5fa6d63b77a9164747ea19":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.gr\/ping\/RPC2"},"51c7593d04dab395445ca837a19ff22c1c62de3b":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.hr\/ping\/RPC2"},"ac1a080eae9b1ce92df1c5304cefbf96789eeaee":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ie\/ping\/RPC2"},"1c8547d977f3546d77d47f3d5252540827148bdd":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.in\/ping\/RPC2"},"eb1d1f6c71f40ad389959d42d2ddc5d1b163176c":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.it\/ping\/RPC2"},"53d47f5785340beebde422a91bdec911dea9ad8e":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.jp\/ping\/RPC2"},"60171b59160dac4e7e357ded51cd74173a8b1fa0":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ki\/ping\/RPC2"},"acffc7361697e2edda8bea8977c8576795bd5008":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.kz\/ping\/RPC2"},"4a6a3e402b8f1b75d6f0cc5b5e7f6e8ef229b86f":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.la\/ping\/RPC2"},"b9e9756e0df597a274e6629dfa889676c3f90cc7":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.li\/ping\/RPC2"},"22d53b028a5dd0f543bca8a6b1399b70c25df038":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.lk\/ping\/RPC2"},"1ae28b9caeab31919018a19b571295ac996a0729":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.lt\/ping\/RPC2"},"78ae49807132da0e22ea7394fbb5fec0eb313050":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.lu\/ping\/RPC2"},"3326366b3984112495ca5f75381c4df3f1d81512":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.md\/ping\/RPC2"},"7e583c8560a7c7fb9c08e9d4c00c2888b5128fc6":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.mn\/ping\/RPC2"},"9ad60a2d2977d3dc615e9467e2a95efbddfb6d13":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ms\/ping\/RPC2"},"dbd474bcdf6b6a53a912ae67369ad6f4cb00902b":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.mu\/ping\/RPC2"},"095689ab1246371c6ae5753b2cf1e84b7993d285":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.mv\/ping\/RPC2"},"b5ebe472a6da2c79c8b4426708be216d6ee7d9b7":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.mw\/ping\/RPC2"},"ab069dfa2aa25d9fdbde3c0661b878cbf660ecff":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.nl\/ping\/RPC2"},"def11305df119e03193369dfd689c94a6b520e43":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.no\/ping\/RPC2"},"722d28d8d34318ab4f5a74017f15a2915e7afde2":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.nr\/ping\/RPC2"},"5974b1e708336bc9381dca3e0d73434dac0a0dbf":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.nu\/ping\/RPC2"},"ea09012bd02272c56472cf07e0c3fd09c96b478f":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.pl\/ping\/RPC2"},"ca87c63b294595a69cc47681e8bb12ec08bad20a":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.pn\/ping\/RPC2"},"9c7896bbb9c9a7ce8a0f67e65ebe060fa6f7006f":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.pt\/ping\/RPC2"},"9f81539271b3c620e182a0568b251cd93926626a":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ro\/ping\/RPC2"},"3478adffacda66919463825886405f4bd92932da":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ru\/ping\/RPC2"},"bcebe6d4df240654ed13e9f98bf7cca5423b8458":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.rw\/ping\/RPC2"},"d9119b44be77e41f6555770bcea3f270176b3886":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sc\/ping\/RPC2"},"0af16277ab509b09552611db8fa857e676f94e88":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.se\/ping\/RPC2"},"4afa80bb4a158d8dc3b3e88d3b908d57fdbd8ecd":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sh\/ping\/RPC2"},"22db7327c408be9982e64d4b13b7dfb2aaba3102":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.si\/ping\/RPC2"},"4ea4e9594f2662bfa8ffd3282c00b401a9d2f5bc":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sk\/ping\/RPC2"},"2fe8b83635088583a458147b9529820b735e274f":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sm\/ping\/RPC2"},"36f2894f6d2aba1e6538aca827ff94c0a7587397":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.sn\/ping\/RPC2"},"d2b857da222f5426a1481c808d45e54da01a8c13":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.st\/ping\/RPC2"},"88c269654839720c29aec21385c561e584dd0e72":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tk\/ping\/RPC2"},"87d0eaa7f3f00c35fc8edf9d5d4382f86d0499b3":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tl\/ping\/RPC2"},"8621a435345964d34613978f430b98ccd09ae589":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tm\/ping\/RPC2"},"e1ca0585c2b5a92cc0f6596596a9401d3e61f379":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.to\/ping\/RPC2"},"2614665a9b5ccd568b4145e31e95c78ef480aee6":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tp\/ping\/RPC2"},"b269945ef9985135d7f0b9b9026036acb7907712":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tt\/ping\/RPC2"},"46da9c8ecaaae611db7deb7c1419d7277972b306":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.tw\/ping\/RPC2"},"43cf6fcb82b80f6b708ca15e20c8b78cd88cadef":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.us\/ping\/RPC2"},"47e54e8fe919200d08c68f98192d44106cfe9f2d":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.vg\/ping\/RPC2"},"edcc57888cf3d14eac38f4fe6280e98fec214c84":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.vu\/ping\/RPC2"},"114ec0c1c6a1f70f87d1b0df8603e5fa8d72e412":{"type":"XML-RPC","uri":"http:\/\/blogsearch.google.ws\/ping\/RPC2"},"5bedee508aca71c3054664fddc8181b974ababa8":{"type":"XML-RPC","uri":"http:\/\/news2paper.com\/ping"},"6a39c650b84c03b6b7a51a7bd5797142d1453629":{"type":"XML-RPC","uri":"http:\/\/ping.bloggers.jp\/rpc"},"4526584784861b57dcd1a9d602d65adb8528c92e":{"type":"XML-RPC","uri":"http:\/\/ping.fc2.com"},"111052cd4d6f2a7e7aab08c4f70d09d770971cb3":{"type":"XML-RPC","uri":"http:\/\/ping.rss.drecom.jp"},"2b6df6456594f96b23c048437f5af4ce5b0e5d8c":{"type":"XML-RPC","uri":"http:\/\/rpc.bloggerei.de\/ping\/"},"731cf9c74c99b8986f24a5944cf9274341abbe9c":{"type":"XML-RPC","uri":"http:\/\/rpc.pingomatic.com"},"bb5dd04b9ff18f4a3087c38c727faa9b41437f85":{"type":"XML-RPC","uri":"http:\/\/rpc.technorati.com\/rpc\/ping"},"ebe83fd384fc762c6bc8472976d76988cfc123e8":{"type":"XML-RPC","uri":"http:\/\/rpc.twingly.com"},"047d5d2930e8615c9c0f89059393bdd405abee90":{"type":"XML-RPC","uri":"http:\/\/services.newsgator.com\/ngws\/xmlrpcping.aspx"},"7316f65ff94cfaddad8f757278ii739fe651291f":{"type":"XML-RPC","uri":"http:\/\/ping.labs.coop\/rpc"}} \ No newline at end of file |
From: <wis...@us...> - 2015-12-01 13:25:03
|
Revision: 13171 http://sourceforge.net/p/xoops/svn/13171 Author: wishcraft Date: 2015-12-01 13:25:01 +0000 (Tue, 01 Dec 2015) Log Message: ----------- Pingtrax -- the Pinglist and Trackback Automated module -- Pre-alpha 1.01 -- Planning Modified Paths: -------------- XoopsModules/pingtrax/trunk/class/items.php XoopsModules/pingtrax/trunk/class/items_pings.php XoopsModules/pingtrax/trunk/class/items_sitemaps.php XoopsModules/pingtrax/trunk/class/pings.php XoopsModules/pingtrax/trunk/class/pings_sitemaps.php XoopsModules/pingtrax/trunk/class/plugins.php XoopsModules/pingtrax/trunk/class/sitemaps.php XoopsModules/pingtrax/trunk/sql/mysql.sql Added Paths: ----------- XoopsModules/pingtrax/trunk/include/category-id-names.txt XoopsModules/pingtrax/trunk/include/exclude-names.txt XoopsModules/pingtrax/trunk/include/item-id-names.txt XoopsModules/pingtrax/trunk/preloads/items.php Modified: XoopsModules/pingtrax/trunk/class/items.php =================================================================== --- XoopsModules/pingtrax/trunk/class/items.php 2015-12-01 11:48:27 UTC (rev 13170) +++ XoopsModules/pingtrax/trunk/class/items.php 2015-12-01 13:25:01 UTC (rev 13171) @@ -1,6 +1,6 @@ <?php /** - * Pintrax Database Class Handler module + * Pingtrax Database Class Handler module * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code @@ -22,7 +22,7 @@ /** - * Class PintraxItems + * Class PingtraxItems * * @subpackage pingtrax * @@ -97,9 +97,9 @@ } /** - * Class PintraxItemsHandler + * Class PingtraxItemsHandler */ -class PintraxItemsHandler extends XoopsPersistableObjectHandler +class PingtraxItemsHandler extends XoopsPersistableObjectHandler { /** @@ -110,5 +110,37 @@ parent::__construct($db, "pingtrax_items", 'PingtraxItems', 'id', 'referer'); } + + function insert($object = NULL, $force = true) + { + if ($object->isNew()) + { + $object->setVar('created', time()); + } else { + $object->setVar('updated', time()); + } + switch ($object->getVar('user-session')) + { + default: + case 'unknown': + if (is_object($GLOBALS['xoopsUser'])) + { + if ($GLOBALS['xoopsUser']->isAdmin()) + $object->setVar('user-session', 'admin'); + } + case 'admin': + if (is_object($GLOBALS['xoopsUser'])) + { + if (!$GLOBALS['xoopsUser']->isAdmin()) + $object->setVar('user-session', 'user'); + } + case 'user': + if (!is_object($GLOBALS['xoopsUser'])) + $object->setVar('user-session', 'guest'); + case 'guest': + break; + } + return parent::insert($object, $force); + } } Modified: XoopsModules/pingtrax/trunk/class/items_pings.php =================================================================== --- XoopsModules/pingtrax/trunk/class/items_pings.php 2015-12-01 11:48:27 UTC (rev 13170) +++ XoopsModules/pingtrax/trunk/class/items_pings.php 2015-12-01 13:25:01 UTC (rev 13171) @@ -1,6 +1,6 @@ <?php /** - * Pintrax Database Class Handler module + * Pingtrax Database Class Handler module * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code @@ -22,7 +22,7 @@ /** - * Class PintraxItems_pings + * Class PingtraxItems_pings * * @subpackage itemtrax * @@ -56,9 +56,9 @@ } /** - * Class PintraxItems_pingsHandler + * Class PingtraxItems_pingsHandler */ -class PintraxItems_pingsHandler extends XoopsPersistableObjectHandler +class PingtraxItems_pingsHandler extends XoopsPersistableObjectHandler { /** Modified: XoopsModules/pingtrax/trunk/class/items_sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/class/items_sitemaps.php 2015-12-01 11:48:27 UTC (rev 13170) +++ XoopsModules/pingtrax/trunk/class/items_sitemaps.php 2015-12-01 13:25:01 UTC (rev 13171) @@ -1,6 +1,6 @@ <?php /** - * Pintrax Database Class Handler module + * Pingtrax Database Class Handler module * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code @@ -22,7 +22,7 @@ /** - * Class PintraxItems_sitemaps + * Class PingtraxItems_sitemaps * * @subpackage itemtrax * @@ -56,9 +56,9 @@ } /** - * Class PintraxItems_sitemapsHandler + * Class PingtraxItems_sitemapsHandler */ -class PintraxItems_sitemapsHandler extends XoopsPersistableObjectHandler +class PingtraxItems_sitemapsHandler extends XoopsPersistableObjectHandler { /** Modified: XoopsModules/pingtrax/trunk/class/pings.php =================================================================== --- XoopsModules/pingtrax/trunk/class/pings.php 2015-12-01 11:48:27 UTC (rev 13170) +++ XoopsModules/pingtrax/trunk/class/pings.php 2015-12-01 13:25:01 UTC (rev 13171) @@ -1,6 +1,6 @@ <?php /** - * Pintrax Database Class Handler module + * Pingtrax Database Class Handler module * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code @@ -22,7 +22,7 @@ /** - * Class PintraxPings + * Class PingtraxPings * * @subpackage pingtrax * @@ -66,7 +66,6 @@ $this->initVar('sleep-till', XOBJ_DTYPE_INT, 0, false); $this->initVar('success-time', XOBJ_DTYPE_INT, 0, false); $this->initVar('failure-time', XOBJ_DTYPE_INT, 0, false); - $this->initVar('written', XOBJ_DTYPE_INT, 0, false); $this->initVar('created', XOBJ_DTYPE_INT, 0, false); $this->initVar('updated', XOBJ_DTYPE_INT, 0, false); $this->initVar('offline', XOBJ_DTYPE_INT, 0, false); @@ -75,18 +74,48 @@ } /** - * Class PintraxPingsHandler + * Class PingtraxPingsHandler */ -class PintraxPingsHandler extends XoopsPersistableObjectHandler +class PingtraxPingsHandler extends XoopsPersistableObjectHandler { + /** + * var string URL of JSON Resource for Install + */ + var $_resource = "https://sourceforge.net/p/xoops/svn/HEAD/tree/XoopsModules/pingtrax/data/ping-resources.json?format=raw"; + /** * @param null|object $db */ function __construct(&$db) { parent::__construct($db, "pingtrax_pings", 'PingtraxPings', 'id', 'referer'); + + $criteria = new Criteria('id',0,"<>"); + if ($this->getCount($criteria)==0) + { + $data = json_decode(file_get_contents($this->_resource), true); + foreach($data as $referer => $values) + { + $obj = $this->create(true); + $obj->setVar('referer', $referer); + $obj->setVar('type', $values['type']); + $obj->setVar('uri', $values['uri']); + $this->insert($obj); + } + } } + + function insert($object = NULL, $force = true) + { + if ($object->isNew()) + { + $object->setVar('created', time()); + } else { + $object->setVar('updated', time()); + } + return parent::insert($object, $force); + } } Modified: XoopsModules/pingtrax/trunk/class/pings_sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/class/pings_sitemaps.php 2015-12-01 11:48:27 UTC (rev 13170) +++ XoopsModules/pingtrax/trunk/class/pings_sitemaps.php 2015-12-01 13:25:01 UTC (rev 13171) @@ -1,6 +1,6 @@ <?php /** - * Pintrax Database Class Handler module + * Pingtrax Database Class Handler module * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code @@ -22,7 +22,7 @@ /** - * Class PintraxPings_sitemaps + * Class PingtraxPings_sitemaps * * @subpackage pingtrax * @@ -56,9 +56,9 @@ } /** - * Class PintraxPings_sitemapsHandler + * Class PingtraxPings_sitemapsHandler */ -class PintraxPings_sitemapsHandler extends XoopsPersistableObjectHandler +class PingtraxPings_sitemapsHandler extends XoopsPersistableObjectHandler { /** Modified: XoopsModules/pingtrax/trunk/class/plugins.php =================================================================== --- XoopsModules/pingtrax/trunk/class/plugins.php 2015-12-01 11:48:27 UTC (rev 13170) +++ XoopsModules/pingtrax/trunk/class/plugins.php 2015-12-01 13:25:01 UTC (rev 13171) @@ -23,29 +23,235 @@ defined('XOOPS_ROOT_PATH') || die('XOOPS root path not defined'); /** - * Class PingtraxPluginsDefault + * Class PingtraxPlugins */ -class PingtraxPlugins +class PingtraxPlugins extends XoopsObject { - /** - * @param $args - - function eventCoreIncludeFunctionsRedirectheader($args) - { - $context = stream_context_create(array('http' => array( - 'method' => "POST", - 'header' => "Content-Type: text/xml\r\n", - 'content' => $xml - ))); - $file = @file_get_contents($post_to, false, $context); - if ($file === false) { echo '<p>Couldn\'t connect!</p>'; } - elseif ($file) { - echo '<p>The following response was returned:</p>'; - echo '<pre>'.htmlspecialchars($file).'</pre>'; - } else { - echo '<p>Empty response!</p>'; - } - } - */ - + + /** + * + */ + function __construct() + { + $this->XoopsObject(); + } + + /** + * + */ + function getModuleDirname() + { + if (is_a($GLOBALS['xoopsModule'], 'XoopsModule')) + { + return $GLOBALS['xoopsModule']->getVar('dirname'); + } + } + + /** + * + */ + function getModuleClass() + { + switch ($this->getModulePHPSelf()) + { + default: + + foreach(get_declared_classes() as $class) + { + if (substr(strtolower($class), 0, strlen($this->getModuleDirname()))==strtolower($this->getModuleDirname()) && (!strpos(strtolower($class), 'categor') && !strpos(strtolower($this->getModulePHPSelf()), 'categor'))) + { + if (is_a(new $class(), "XoopsPersistableObjectHandler")) + return $class; + } + } + + break; + } + } + + /** + * + */ + function getModuleItemID() + { + $id = 0; + switch ($this->getModulePHPSelf()) + { + default: + + $idnaming = explode(array("\n", "\n\r", "\r\n"), file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'item-id-names.txt')); + foreach($_GET as $key => $value) + { + if (!is_array($value)) + { + foreach($idnaming as $idname) + { + if (strpos($key, $idname) && is_numeric($_GET[$key])) + $id = $_GET[$key]; + elseif (is_numeric($_GET[$key]) && !in_array($key, explode(array("\n", "\n\r", "\r\n"), file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'exclude-names.txt')))) + $id = $_GET[$key]; + } + } + } + } + return $id; + } + + /** + * + */ + function getModulePHPSelf() + { + $parts = explode(DIRECTORY_SEPARATOR, $this->getItemPHPSelf()); + $found = false; + foreach($parts as $id => $value) + { + if ($found == false) + unset($parts[$id]); + if ($value == 'modules') + $found = true; + } + return implode(DIRECTORY_SEPARATOR, $parts); + } + + /** + * + */ + function getModuleGet() + { + return $_GET; + } + + + /** + * + */ + function getItemCategoryID() + { + $id = 0; + switch ($this->getModulePHPSelf()) + { + default: + + $idnaming = explode(array("\n", "\n\r", "\r\n"), file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'category-id-names.txt')); + foreach($_GET as $key => $value) + { + if (!is_array($value)) + { + foreach($idnaming as $idname) + { + if (strpos($key, $idname) && is_numeric($_GET[$key])) + $id = $_GET[$key]; + elseif ($id = 0 && is_numeric($_GET[$key]) && !in_array($key, explode(array("\n", "\n\r", "\r\n"), file_get_contents(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'include' . DIRECTORY_SEPARATOR . 'exclude-names.txt')))) + $id = $_GET[$key]; + } + } + } + } + return $id; + } + + /** + * + */ + function getItemProtocol() + { + return strtolower(XOOPS_PROT); + } + + /** + * + */ + function getItemDomain() + { + return parse_url(strtolower(XOOPS_URL), PHP_URL_HOST); + } + + /** + * + */ + function getItemRefererURI() + { + if (parse_url(strtolower(XOOPS_URL), PHP_URL_PATH) == substr(strtolower($_SERVER["REQUEST_URI"]), 0, strlen(parse_url(strtolower(XOOPS_URL), PHP_URL_PATH)))) + return substr($_SERVER["REQUEST_URI"], strlen(parse_url(strtolower(XOOPS_URL), PHP_URL_PATH))-1); + return $_SERVER["REQUEST_URI"]; + } + + /** + * + */ + function getItemPHPSelf() + { + if (XOOPS_ROOT_PATH == substr(strtolower($_SERVER["REQUEST_URI"]), 0, strlen(XOOPS_ROOT_PATH))) + return substr($_SERVER["PHP_SELF"], strlen(XOOPS_ROOT_PATH)-1); + return $_SERVER["PHP_SELF"]; + } } + + +/** + * Class PingtraxPluginsHandler + */ +class PingtraxPluginsHandler extends XoopsPersistableObjectHandler +{ + + /** + * @var string + */ + var $_default = 'default'; + + /** + * @var array + */ + var $_plugins = array(); + + /** + * @param null|object $db + */ + function __construct(&$db) + { + parent::__construct($db); + } + + function getIntialItemArray() + { + $ret = array(); + if (is_a($GLOBALS['xoopsModule'], 'XoopsModule')) + { + if (file_exists($file = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . ($dirname = $GLOBALS['xoopsModule']->getVar('dirname')) . '.php')) + { + require_once $file; + } elseif (file_exists($file = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . ($dirname = $this->_default) . '.php')) + { + require_once $file; + } + } elseif (file_exists($file = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . ($dirname = $this->_default) . '.php')) + { + require_once $file; + } + if (class_exists($class = "PingtraxPlugins".ucfirst(strtolower($dirname))) && empty($this->_plugins[$dirname])) + { + $this->_plugins[$dirname] = new $class(); + } + if (is_object($this->_plugins[$dirname])) + { + $ret['module-dirname'] = $this->_plugins[$dirname]->getModuleDirname(); + $ret['module-class'] = $this->_plugins[$dirname]->getModuleClass(); + $ret['module-item-id'] = $this->_plugins[$dirname]->getModuleItemID(); + $ret['module-php-self'] = $this->_plugins[$dirname]->getModulePHPSelf(); + $ret['module-get'] = $this->_plugins[$dirname]->getModuleGet(); + $ret['item-category-id'] = $this->_plugins[$dirname]->getItemCategoryID(); + $ret['item-protocol'] = $this->_plugins[$dirname]->getItemProtocol(); + $ret['item-domain'] = $this->_plugins[$dirname]->getItemDomain(); + $ret['item-referer-uri'] = $this->_plugins[$dirname]->getItemRefererURI(); + $ret['item-php-self'] = $this->_plugins[$dirname]->getItemPHPSelf(); + $ret['referer'] = $this->getReferer($ret); + } + return $ret; + } + + function getReferer($ret = array()) + { + return sha1($ret['item-php-self'] . $ret['item-referer-uri'] . $ret['module-dirname'] . $ret['module-class'] . $ret['item-category-id'] . $ret['module-item-id'] . $ret['module-php-self'] . json_encode($ret['module-get'], true) . $ret['item-protocol'] . $ret['item-domain']); + } +} Modified: XoopsModules/pingtrax/trunk/class/sitemaps.php =================================================================== --- XoopsModules/pingtrax/trunk/class/sitemaps.php 2015-12-01 11:48:27 UTC (rev 13170) +++ XoopsModules/pingtrax/trunk/class/sitemaps.php 2015-12-01 13:25:01 UTC (rev 13171) @@ -1,6 +1,6 @@ <?php /** - * Pintrax Database Class Handler module + * Pingtrax Database Class Handler module * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code @@ -22,7 +22,7 @@ /** - * Class PintraxSitemaps + * Class PingtraxSitemaps * * Database MySQL Table:- * @@ -81,9 +81,9 @@ } /** - * Class PintraxSitemapsHandler + * Class PingtraxSitemapsHandler */ -class PintraxSitemapsHandler extends XoopsPersistableObjectHandler +class PingtraxSitemapsHandler extends XoopsPersistableObjectHandler { /** @@ -94,5 +94,16 @@ parent::__construct($db, "pingtrax_sitemaps", 'PingtraxSitemaps', 'id', 'referer'); } + + function insert($object = NULL, $force = true) + { + if ($object->isNew()) + { + $object->setVar('created', time()); + } else { + $object->setVar('updated', time()); + } + return parent::insert($object, $force); + } } Added: XoopsModules/pingtrax/trunk/include/category-id-names.txt =================================================================== --- XoopsModules/pingtrax/trunk/include/category-id-names.txt (rev 0) +++ XoopsModules/pingtrax/trunk/include/category-id-names.txt 2015-12-01 13:25:01 UTC (rev 13171) @@ -0,0 +1,3 @@ +id +cat +category \ No newline at end of file Added: XoopsModules/pingtrax/trunk/include/exclude-names.txt =================================================================== --- XoopsModules/pingtrax/trunk/include/exclude-names.txt (rev 0) +++ XoopsModules/pingtrax/trunk/include/exclude-names.txt 2015-12-01 13:25:01 UTC (rev 13171) @@ -0,0 +1,3 @@ +start +num +weight \ No newline at end of file Added: XoopsModules/pingtrax/trunk/include/item-id-names.txt =================================================================== --- XoopsModules/pingtrax/trunk/include/item-id-names.txt (rev 0) +++ XoopsModules/pingtrax/trunk/include/item-id-names.txt 2015-12-01 13:25:01 UTC (rev 13171) @@ -0,0 +1,2 @@ +id +item \ No newline at end of file Added: XoopsModules/pingtrax/trunk/preloads/items.php =================================================================== --- XoopsModules/pingtrax/trunk/preloads/items.php (rev 0) +++ XoopsModules/pingtrax/trunk/preloads/items.php 2015-12-01 13:25:01 UTC (rev 13171) @@ -0,0 +1,41 @@ +<?php +/** + * PingTrax Preloads + * + * You may not change or alter any portion of this comment or credits + * of supporting developers from this source code or any supporting source code + * which is considered copyrighted (c) material of the original comment or credit authors. + * 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. + * + * @copyright Chronolabs Cooperative http://sourceforge.net/projects/chronolabs/ + * @license GNU GPL 3 (http://labs.coop/briefs/legal/general-public-licence/13,3.html) + * @author Simon Antony Roberts <wis...@us...> + * @see http://sourceforge.net/projects/xoops/ + * @see http://sourceforge.net/projects/chronolabs/ + * @see http://sourceforge.net/projects/chronolabsapi/ + * @see http://labs.coop + * @version 1.0.1 + * @since 1.0.1 + */ + +defined('XOOPS_ROOT_PATH') || die('XOOPS root path not defined'); + +/** + * Class PingtraxPingPreload + */ +class PingtraxItemsPreload extends XoopsPreloadItem +{ + + /** + * @param $args + */ + function eventCoreIncludeCommonEnd($args) + { + global $moduleitem; + $pluginHandler = xoops_getmodulehandler('plugins', 'pingtrax'); + $moduleitem = $pluginHandler->getIntialItemArray(); + } + +} Modified: XoopsModules/pingtrax/trunk/sql/mysql.sql =================================================================== --- XoopsModules/pingtrax/trunk/sql/mysql.sql 2015-12-01 11:48:27 UTC (rev 13170) +++ XoopsModules/pingtrax/trunk/sql/mysql.sql 2015-12-01 13:25:01 UTC (rev 13171) @@ -1,6 +1,4 @@ -DROP TABLE IF EXISTS `pingtrax_items`; - CREATE TABLE `pingtrax_items` ( `id` mediumint(20) NOT NULL AUTO_INCREMENT, `referer` varchar(44) NOT NULL DEFAULT '', @@ -34,8 +32,6 @@ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; -DROP TABLE IF EXISTS `pingtrax_items_pings`; - CREATE TABLE `pingtrax_items_pings` ( `id` mediumint(32) NOT NULL AUTO_INCREMENT, `ping-referer` varchar(44) NOT NULL DEFAULT '', @@ -46,8 +42,6 @@ KEY `CHRONOLOGISTICS` (`ping-referer`,`item-referer`,`when`) USING BTREE KEY_BLOCK_SIZE=64 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; -DROP TABLE IF EXISTS `pingtrax_items_sitemaps`; - CREATE TABLE `pingtrax_items_sitemaps` ( `id` mediumint(32) NOT NULL AUTO_INCREMENT, `map-referer` varchar(44) NOT NULL DEFAULT '', @@ -58,8 +52,6 @@ KEY `CHRONOLOGISTICS` (`map-referer`,`item-referer`,`when`) USING BTREE KEY_BLOCK_SIZE=64 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; -DROP TABLE IF EXISTS `pingtrax_pings`; - CREATE TABLE `pingtrax_pings` ( `id` int(14) NOT NULL AUTO_INCREMENT, `referer` varchar(44) NOT NULL DEFAULT '', @@ -79,8 +71,6 @@ KEY `CHRONOLOGISTICS` (`id`,`referer`,`created`,`updated`,`offlined`,`failure-time`,`success-time`,`sleep-till`) USING BTREE KEY_BLOCK_SIZE=128 ) ENGINE=InnoDB AUTO_INCREMENT=150 DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=16; -DROP TABLE IF EXISTS `pingtrax_pings_sitemaps`; - CREATE TABLE `pingtrax_pings_sitemaps` ( `id` mediumint(32) NOT NULL AUTO_INCREMENT, `map-referer` varchar(44) NOT NULL DEFAULT '', @@ -91,8 +81,6 @@ KEY `CHRONOLOGISTICS` (`map-referer`,`ping-referer`,`when`) USING BTREE KEY_BLOCK_SIZE=64 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=1 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC KEY_BLOCK_SIZE=8; -DROP TABLE IF EXISTS `pingtrax_sitemaps`; - CREATE TABLE `pingtrax_sitemaps` ( `id` int(10) NOT NULL AUTO_INCREMENT, `referer` varchar(44) NOT NULL DEFAULT '', |