|
From: <luc...@us...> - 2014-02-07 21:20:26
|
Revision: 12292
http://sourceforge.net/p/xoops/svn/12292
Author: luciorota
Date: 2014-02-07 21:20:20 +0000 (Fri, 07 Feb 2014)
Log Message:
-----------
standardize and templatize module: still in progress
Modified Paths:
--------------
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/admin/sendletter.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/cron.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/header.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/functions.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/task.inc.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/index.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/language/english/admin.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/language/english/main.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/language/english/modinfo.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/letter.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/print.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/protocol.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/sendletter.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/subscription.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/templates/xnewsletter_protocol.html
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/templates/xnewsletter_subscription_list_subscriptions.html
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/xoops_version.php
Added Paths:
-----------
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/request.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/session.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/xnewsletter.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/common.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/constants.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/language/english/common.php
XoopsModules/xnewsletter/branches/luciorota/xNewsletter/templates/xnewsletter_print.html
Modified: XoopsModules/xnewsletter/branches/luciorota/xNewsletter/admin/sendletter.php
===================================================================
--- XoopsModules/xnewsletter/branches/luciorota/xNewsletter/admin/sendletter.php 2014-02-07 20:41:47 UTC (rev 12291)
+++ XoopsModules/xnewsletter/branches/luciorota/xNewsletter/admin/sendletter.php 2014-02-07 21:20:20 UTC (rev 12292)
@@ -39,9 +39,9 @@
$xn_send_in_packages_time = 0;
}
-$result = Create_Tasklist($op, $letter_id, $xn_send_in_packages, $xn_send_in_packages_time);
+$result = xNewsletter_createTasks($op, $letter_id, $xn_send_in_packages, $xn_send_in_packages_time);
-$result_exec = Execute_Tasks($xn_send_in_packages, $letter_id);
+$result_exec = xNewsletter_executeTasks($xn_send_in_packages, $letter_id);
redirect_header("letter.php", 3, $result_exec);
Added: XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/request.php
===================================================================
--- XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/request.php (rev 0)
+++ XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/request.php 2014-02-07 21:20:20 UTC (rev 12292)
@@ -0,0 +1,998 @@
+<?php
+/*
+ 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.
+ */
+/**
+ * xNewsletterRequest class
+ *
+ * @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
+ * @license GNU/GPL, see LICENSE.php
+ * Joomla! is free software. This version may have been modified pursuant
+ * to the GNU General Public License, and as distributed it includes or
+ * is derivative of works licensed under the GNU General Public License or
+ * other free or open source software licenses.
+ * See COPYRIGHT.php for copyright notices and details.
+ * @package xNewsletter
+ * @since 1.3
+ * @author trabis <lus...@gm...>
+ * @version svn:$id$
+ */
+
+/**
+ * Set the available masks for cleaning variables
+ */
+define('XNEWSLETTER_REQUEST_NOTRIM', 1);
+define('XNEWSLETTER_REQUEST_ALLOWRAW', 2);
+define('XNEWSLETTER_REQUEST_ALLOWHTML', 4);
+
+/**
+ * xNewsletterRequest Class
+ * This class serves to provide a common interface to access
+ * request variables. This includes $_POST, $_GET, and naturally $_REQUEST. Variables
+ * can be passed through an input filter to avoid injection or returned raw.
+ */
+class xNewsletterRequest
+{
+
+ /**
+ * Gets the request method
+ *
+ * @return string
+ */
+ static function getMethod()
+ {
+ $method = strtoupper($_SERVER['REQUEST_METHOD']);
+
+ return $method;
+ }
+
+ /**
+ * Fetches and returns a given variable.
+ * The default behaviour is fetching variables depending on the
+ * current request method: GET and HEAD will result in returning
+ * an entry from $_GET, POST and PUT will result in returning an
+ * entry from $_POST.
+ * You can force the source by setting the $hash parameter:
+ * post $_POST
+ * get $_GET
+ * files $_FILES
+ * cookie $_COOKIE
+ * env $_ENV
+ * server $_SERVER
+ * method via current $_SERVER['REQUEST_METHOD']
+ * default $_REQUEST
+ *
+ * @static
+ *
+ * @param string $name Variable name
+ * @param string $default Default value if the variable does not exist
+ * @param string $hash Where the var should come from (POST, GET, FILES, COOKIE, METHOD)
+ * @param string $type Return type for the variable, for valid values see {@link JFilterInput::clean()}
+ * @param int $mask Filter mask for the variable
+ *
+ * @return mixed Requested variable
+ */
+ static function getVar($name, $default = null, $hash = 'default', $type = 'none', $mask = 0)
+ {
+ // Ensure hash and type are uppercase
+ $hash = strtoupper($hash);
+ if ($hash === 'METHOD') {
+ $hash = strtoupper($_SERVER['REQUEST_METHOD']);
+ }
+ $type = strtoupper($type);
+ // Get the input hash
+ switch ($hash) {
+ case 'GET' :
+ $input = & $_GET;
+ break;
+ case 'POST' :
+ $input = & $_POST;
+ break;
+ case 'FILES' :
+ $input = & $_FILES;
+ break;
+ case 'COOKIE' :
+ $input = & $_COOKIE;
+ break;
+ case 'ENV' :
+ $input = & $_ENV;
+ break;
+ case 'SERVER' :
+ $input = & $_SERVER;
+ break;
+ default:
+ $input = & $_REQUEST;
+ $hash = 'REQUEST';
+ break;
+ }
+ if (isset($input[$name]) && $input[$name] !== null) {
+ // Get the variable from the input hash and clean it
+ $var = xNewsletterRequest::_cleanVar($input[$name], $mask, $type);
+ // Handle magic quotes compatability
+ if (get_magic_quotes_gpc() && ($var != $default) && ($hash != 'FILES')) {
+ $var = xNewsletterRequest::_stripSlashesRecursive($var);
+ }
+ } elseif ($default !== null) {
+ // Clean the default value
+ $var = xNewsletterRequest::_cleanVar($default, $mask, $type);
+ } else {
+ $var = $default;
+ }
+
+ return $var;
+ }
+
+ /**
+ * Fetches and returns a given filtered variable. The integer
+ * filter will allow only digits to be returned. This is currently
+ * only a proxy function for getVar().
+ * See getVar() for more in-depth documentation on the parameters.
+ *
+ * @static
+ *
+ * @param string $name Variable name
+ * @param int $default Default value if the variable does not exist
+ * @param string $hash Where the var should come from (POST, GET, FILES, COOKIE, METHOD)
+ *
+ * @return integer Requested variable
+ */
+ static function getInt($name, $default = 0, $hash = 'default')
+ {
+ return xNewsletterRequest::getVar($name, $default, $hash, 'int');
+ }
+
+ /**
+ * Fetches and returns a given filtered variable. The float
+ * filter only allows digits and periods. This is currently
+ * only a proxy function for getVar().
+ * See getVar() for more in-depth documentation on the parameters.
+ *
+ * @static
+ *
+ * @param string $name Variable name
+ * @param float $default Default value if the variable does not exist
+ * @param string $hash Where the var should come from (POST, GET, FILES, COOKIE, METHOD)
+ *
+ * @return float Requested variable
+ */
+ static function getFloat($name, $default = 0.0, $hash = 'default')
+ {
+ return xNewsletterRequest::getVar($name, $default, $hash, 'float');
+ }
+
+ /**
+ * Fetches and returns a given filtered variable. The bool
+ * filter will only return true/false bool values. This is
+ * currently only a proxy function for getVar().
+ * See getVar() for more in-depth documentation on the parameters.
+ *
+ * @static
+ *
+ * @param string $name Variable name
+ * @param bool $default Default value if the variable does not exist
+ * @param string $hash Where the var should come from (POST, GET, FILES, COOKIE, METHOD)
+ *
+ * @return bool Requested variable
+ */
+ static function getBool($name, $default = false, $hash = 'default')
+ {
+ return xNewsletterRequest::getVar($name, $default, $hash, 'bool');
+ }
+
+ /**
+ * Fetches and returns a given filtered variable. The word
+ * filter only allows the characters [A-Za-z_]. This is currently
+ * only a proxy function for getVar().
+ * See getVar() for more in-depth documentation on the parameters.
+ *
+ * @static
+ *
+ * @param string $name Variable name
+ * @param string $default Default value if the variable does not exist
+ * @param string $hash Where the var should come from (POST, GET, FILES, COOKIE, METHOD)
+ *
+ * @return string Requested variable
+ */
+ static function getWord($name, $default = '', $hash = 'default')
+ {
+ return xNewsletterRequest::getVar($name, $default, $hash, 'word');
+ }
+
+ /**
+ * Fetches and returns a given filtered variable. The cmd
+ * filter only allows the characters [A-Za-z0-9.-_]. This is
+ * currently only a proxy function for getVar().
+ * See getVar() for more in-depth documentation on the parameters.
+ *
+ * @static
+ *
+ * @param string $name Variable name
+ * @param string $default Default value if the variable does not exist
+ * @param string $hash Where the var should come from (POST, GET, FILES, COOKIE, METHOD)
+ *
+ * @return string Requested variable
+ */
+ static function getCmd($name, $default = '', $hash = 'default')
+ {
+ return xNewsletterRequest::getVar($name, $default, $hash, 'cmd');
+ }
+
+ /**
+ * Fetches and returns a given filtered variable. The string
+ * filter deletes 'bad' HTML code, if not overridden by the mask.
+ * This is currently only a proxy function for getVar().
+ * See getVar() for more in-depth documentation on the parameters.
+ *
+ * @static
+ *
+ * @param string $name Variable name
+ * @param string $default Default value if the variable does not exist
+ * @param string $hash Where the var should come from (POST, GET, FILES, COOKIE, METHOD)
+ * @param int $mask Filter mask for the variable
+ *
+ * @return string Requested variable
+ */
+ static function getString($name, $default = '', $hash = 'default', $mask = 0)
+ {
+ // Cast to string, in case JREQUEST_ALLOWRAW was specified for mask
+ return (string)xNewsletterRequest::getVar($name, $default, $hash, 'string', $mask);
+ }
+
+ static function getArray($name, $default = array(), $hash = 'default')
+ {
+ return xNewsletterRequest::getVar($name, $default, $hash, 'array');
+ }
+
+ static function getText($name, $default = '', $hash = 'default')
+ {
+ return (string)xNewsletterRequest::getVar($name, $default, $hash, 'string', PUBLISHER_REQUEST_ALLOWRAW);
+ }
+
+ /**
+ * Set a variabe in on of the request variables
+ *
+ * @access public
+ *
+ * @param string $name Name
+ * @param string $value Value
+ * @param string $hash Hash
+ * @param boolean $overwrite Boolean
+ *
+ * @return string Previous value
+ */
+ static function setVar($name, $value = null, $hash = 'method', $overwrite = true)
+ {
+ //If overwrite is true, makes sure the variable hasn't been set yet
+ if (!$overwrite && array_key_exists($name, $_REQUEST)) {
+ return $_REQUEST[$name];
+ }
+ // Get the request hash value
+ $hash = strtoupper($hash);
+ if ($hash === 'METHOD') {
+ $hash = strtoupper($_SERVER['REQUEST_METHOD']);
+ }
+ $previous = array_key_exists($name, $_REQUEST) ? $_REQUEST[$name] : null;
+ switch ($hash) {
+ case 'GET' :
+ $_GET[$name] = $value;
+ $_REQUEST[$name] = $value;
+ break;
+ case 'POST' :
+ $_POST[$name] = $value;
+ $_REQUEST[$name] = $value;
+ break;
+ case 'COOKIE' :
+ $_COOKIE[$name] = $value;
+ $_REQUEST[$name] = $value;
+ break;
+ case 'FILES' :
+ $_FILES[$name] = $value;
+ break;
+ case 'ENV' :
+ $_ENV['name'] = $value;
+ break;
+ case 'SERVER' :
+ $_SERVER['name'] = $value;
+ break;
+ }
+
+ return $previous;
+ }
+
+ /**
+ * Fetches and returns a request array.
+ * The default behaviour is fetching variables depending on the
+ * current request method: GET and HEAD will result in returning
+ * $_GET, POST and PUT will result in returning $_POST.
+ * You can force the source by setting the $hash parameter:
+ * post $_POST
+ * get $_GET
+ * files $_FILES
+ * cookie $_COOKIE
+ * env $_ENV
+ * server $_SERVER
+ * method via current $_SERVER['REQUEST_METHOD']
+ * default $_REQUEST
+ *
+ * @static
+ *
+ * @param string $hash to get (POST, GET, FILES, METHOD)
+ * @param int $mask Filter mask for the variable
+ *
+ * @return mixed Request hash
+ */
+ static function get($hash = 'default', $mask = 0)
+ {
+ $hash = strtoupper($hash);
+ if ($hash === 'METHOD') {
+ $hash = strtoupper($_SERVER['REQUEST_METHOD']);
+ }
+ switch ($hash) {
+ case 'GET' :
+ $input = $_GET;
+ break;
+ case 'POST' :
+ $input = $_POST;
+ break;
+ case 'FILES' :
+ $input = $_FILES;
+ break;
+ case 'COOKIE' :
+ $input = $_COOKIE;
+ break;
+ case 'ENV' :
+ $input = & $_ENV;
+ break;
+ case 'SERVER' :
+ $input = & $_SERVER;
+ break;
+ default:
+ $input = $_REQUEST;
+ break;
+ }
+ $result = xNewsletterRequest::_cleanVar($input, $mask);
+ // Handle magic quotes compatability
+ if (get_magic_quotes_gpc() && ($hash != 'FILES')) {
+ $result = xNewsletterRequest::_stripSlashesRecursive($result);
+ }
+
+ return $result;
+ }
+
+ /**
+ * Sets a request variable
+ *
+ * @param array $array An associative array of key-value pairs
+ * @param string $hash The request variable to set (POST, GET, FILES, METHOD)
+ * @param boolean $overwrite If true and an existing key is found, the value is overwritten, otherwise it is ingored
+ */
+ static function set($array, $hash = 'default', $overwrite = true)
+ {
+ foreach ($array as $key => $value) {
+ xNewsletterRequest::setVar($key, $value, $hash, $overwrite);
+ }
+ }
+
+ /**
+ * Cleans the request from script injection.
+ *
+ * @static
+ * @return void
+ */
+ static function clean()
+ {
+ xNewsletterRequest::_cleanArray($_FILES);
+ xNewsletterRequest::_cleanArray($_ENV);
+ xNewsletterRequest::_cleanArray($_GET);
+ xNewsletterRequest::_cleanArray($_POST);
+ xNewsletterRequest::_cleanArray($_COOKIE);
+ xNewsletterRequest::_cleanArray($_SERVER);
+ if (isset($_SESSION)) {
+ xNewsletterRequest::_cleanArray($_SESSION);
+ }
+ $REQUEST = $_REQUEST;
+ $GET = $_GET;
+ $POST = $_POST;
+ $COOKIE = $_COOKIE;
+ $FILES = $_FILES;
+ $ENV = $_ENV;
+ $SERVER = $_SERVER;
+ if (isset ($_SESSION)) {
+ $SESSION = $_SESSION;
+ }
+ foreach ($GLOBALS as $key => $value) {
+ if ($key != 'GLOBALS') {
+ unset($GLOBALS[$key]);
+ }
+ }
+ $_REQUEST = $REQUEST;
+ $_GET = $GET;
+ $_POST = $POST;
+ $_COOKIE = $COOKIE;
+ $_FILES = $FILES;
+ $_ENV = $ENV;
+ $_SERVER = $SERVER;
+ if (isset($SESSION)) {
+ $_SESSION = $SESSION;
+ }
+ }
+
+ /**
+ * Adds an array to the GLOBALS array and checks that the GLOBALS variable is not being attacked
+ *
+ * @access protected
+ *
+ * @param array $array Array to clean
+ * @param boolean $globalise True if the array is to be added to the GLOBALS
+ */
+ static function _cleanArray(&$array, $globalise = false)
+ {
+ static $banned = array('_files', '_env', '_get', '_post', '_cookie', '_server', '_session', 'globals');
+ foreach ($array as $key => $value) {
+ // PHP GLOBALS injection bug
+ $failed = in_array(strtolower($key), $banned);
+ // PHP Zend_Hash_Del_Key_Or_Index bug
+ $failed |= is_numeric($key);
+ if ($failed) {
+ exit('Illegal variable <strong>' . implode('</strong> or <strong>', $banned) . '</strong> passed to script.');
+ }
+ if ($globalise) {
+ $GLOBALS[$key] = $value;
+ }
+ }
+ }
+
+ /**
+ * Clean up an input variable.
+ *
+ * @param mixed $var The input variable.
+ * @param int $mask Filter bit mask. 1=no trim: If this flag is cleared and the
+ * input is a string, the string will have leading and trailing whitespace
+ * trimmed. 2=allow_raw: If set, no more filtering is performed, higher bits
+ * are ignored. 4=allow_html: HTML is allowed, but passed through a safe
+ * HTML filter first. If set, no more filtering is performed. If no bits
+ * other than the 1 bit is set, a strict filter is applied.
+ * @param string $type The variable type {@see JFilterInput::clean()}.
+ *
+ * @return string
+ */
+ static function _cleanVar($var, $mask = 0, $type = null)
+ {
+ // Static input filters for specific settings
+ static $noHtmlFilter = null;
+ static $safeHtmlFilter = null;
+ // If the no trim flag is not set, trim the variable
+ if (!($mask & 1) && is_string($var)) {
+ $var = trim($var);
+ }
+ // Now we handle input filtering
+ if ($mask & 2) {
+ // If the allow raw flag is set, do not modify the variable
+ } elseif ($mask & 4) {
+ // If the allow html flag is set, apply a safe html filter to the variable
+ if (is_null($safeHtmlFilter)) {
+ $safeHtmlFilter = xNewsletterFilterInput::getInstance(null, null, 1, 1);
+ }
+ $var = $safeHtmlFilter->clean($var, $type);
+ } else {
+ // Since no allow flags were set, we will apply the most strict filter to the variable
+ if (is_null($noHtmlFilter)) {
+ $noHtmlFilter = xNewsletterFilterInput::getInstance( /* $tags, $attr, $tag_method, $attr_method, $xss_auto */);
+ }
+ $var = $noHtmlFilter->clean($var, $type);
+ }
+
+ return $var;
+ }
+
+ /**
+ * Strips slashes recursively on an array
+ *
+ * @access protected
+ *
+ * @param array $value Array of (nested arrays of) strings
+ *
+ * @return array|string The input array with stripshlashes applied to it
+ */
+ protected function _stripSlashesRecursive($value)
+ {
+ $value = is_array($value) ? array_map(array('xNewsletterRequest', '_stripSlashesRecursive'), $value) : stripslashes($value);
+
+ return $value;
+ }
+}
+
+/**
+ * xNewsletterInput is a class for filtering input from any data source
+ * Forked from the php input filter library by: Daniel Morris <da...@ro...>
+ * Original Contributors: Gianpaolo Racca, Ghislain Picard, Marco Wandschneider, Chris Tobin and Andrew Eddie.
+ *
+ * @author Louis Landry <lou...@jo...>
+ */
+class xNewsletterFilterInput
+{
+ var $tagsArray; // default = empty array
+ var $attrArray; // default = empty array
+ var $tagsMethod; // default = 0
+ var $attrMethod; // default = 0
+ var $xssAuto; // default = 1
+ var $tagBlacklist
+ = array(
+ 'applet',
+ 'body',
+ 'bgsound',
+ 'base',
+ 'basefont',
+ 'embed',
+ 'frame',
+ 'frameset',
+ 'head',
+ 'html',
+ 'id',
+ 'iframe',
+ 'ilayer',
+ 'layer',
+ 'link',
+ 'meta',
+ 'name',
+ 'object',
+ 'script',
+ 'style',
+ 'title',
+ 'xml'
+ );
+ var $attrBlacklist = array('action', 'background', 'codebase', 'dynsrc', 'lowsrc'); // also will strip ALL event handlers
+ /**
+ * Constructor for inputFilter class. Only first parameter is required.
+ *
+ * @access protected
+ *
+ * @param array $tagsArray list of user-defined tags
+ * @param array $attrArray list of user-defined attributes
+ * @param int $tagsMethod WhiteList method = 0, BlackList method = 1
+ * @param int $attrMethod WhiteList method = 0, BlackList method = 1
+ * @param int $xssAuto Only auto clean essentials = 0, Allow clean blacklisted tags/attr = 1
+ */
+ public function __construct($tagsArray = array(), $attrArray = array(), $tagsMethod = 0, $attrMethod = 0, $xssAuto = 1)
+ {
+ // Make sure user defined arrays are in lowercase
+ $tagsArray = array_map('strtolower', (array)$tagsArray);
+ $attrArray = array_map('strtolower', (array)$attrArray);
+ // Assign member variables
+ $this->tagsArray = $tagsArray;
+ $this->attrArray = $attrArray;
+ $this->tagsMethod = $tagsMethod;
+ $this->attrMethod = $attrMethod;
+ $this->xssAuto = $xssAuto;
+ }
+
+ /**
+ * Returns a reference to an input filter object, only creating it if it doesn't already exist.
+ * This method must be invoked as:
+ * <pre> $filter = & xNewsletterFilterInput::getInstance();</pre>
+ *
+ * @static
+ *
+ * @param array $tagsArray list of user-defined tags
+ * @param array $attrArray list of user-defined attributes
+ * @param int $tagsMethod WhiteList method = 0, BlackList method = 1
+ * @param int $attrMethod WhiteList method = 0, BlackList method = 1
+ * @param int $xssAuto Only auto clean essentials = 0, Allow clean blacklisted tags/attr = 1
+ *
+ * @return object The xNewsletterFilterInput object.
+ * @since 1.5
+ */
+ public static function & getInstance($tagsArray = array(), $attrArray = array(), $tagsMethod = 0, $attrMethod = 0, $xssAuto = 1)
+ {
+ static $instances;
+ $sig = md5(serialize(array($tagsArray, $attrArray, $tagsMethod, $attrMethod, $xssAuto)));
+ if (!isset ($instances)) {
+ $instances = array();
+ }
+ if (empty ($instances[$sig])) {
+ $instances[$sig] = new xNewsletterFilterInput($tagsArray, $attrArray, $tagsMethod, $attrMethod, $xssAuto);
+ }
+
+ return $instances[$sig];
+ }
+
+ /**
+ * Method to be called by another php script. Processes for XSS and
+ * specified bad code.
+ *
+ * @access public
+ *
+ * @param mixed $source Input string/array-of-string to be 'cleaned'
+ * @param string $type Return type for the variable (INT, FLOAT, BOOLEAN, WORD, ALNUM, CMD, BASE64, STRING, ARRAY, PATH, NONE)
+ *
+ * @return mixed 'Cleaned' version of input parameter
+ * @static
+ */
+ public function clean($source, $type = 'string')
+ {
+ // Handle the type constraint
+ switch (strtoupper($type)) {
+ case 'INT' :
+ case 'INTEGER' :
+ // Only use the first integer value
+ preg_match('/-?[0-9]+/', (string)$source, $matches);
+ $result = @ (int)$matches[0];
+ break;
+ case 'FLOAT' :
+ case 'DOUBLE' :
+ // Only use the first floating point value
+ preg_match('/-?[0-9]+(\.[0-9]+)?/', (string)$source, $matches);
+ $result = @ (float)$matches[0];
+ break;
+ case 'BOOL' :
+ case 'BOOLEAN' :
+ $result = (bool)$source;
+ break;
+ case 'WORD' :
+ $result = (string)preg_replace('/[^A-Z_]/i', '', $source);
+ break;
+ case 'ALNUM' :
+ $result = (string)preg_replace('/[^A-Z0-9]/i', '', $source);
+ break;
+ case 'CMD' :
+ $result = (string)preg_replace('/[^A-Z0-9_\.-]/i', '', $source);
+ $result = ltrim($result, '.');
+ break;
+ case 'BASE64' :
+ $result = (string)preg_replace('/[^A-Z0-9\/+=]/i', '', $source);
+ break;
+ case 'STRING' :
+ // Check for static usage and assign $filter the proper variable
+ if (isset($this) && is_a($this, 'xNewsletterFilterInput')) {
+ $filter =& $this;
+ } else {
+ $filter = xNewsletterFilterInput::getInstance();
+ }
+ $result = (string)$filter->_remove($filter->_decode((string)$source));
+ break;
+ case 'ARRAY' :
+ $result = (is_array($source)) ? (array)$source : array();
+ break;
+ case 'PATH' :
+ $pattern = '/^[A-Za-z0-9_-]+[A-Za-z0-9_\.-]*([\\\\\/][A-Za-z0-9_-]+[A-Za-z0-9_\.-]*)*$/';
+ preg_match($pattern, (string)$source, $matches);
+ $result = @ (string)$matches[0];
+ break;
+ case 'USERNAME' :
+ $result = (string)preg_replace('/[\x00-\x1F\x7F<>"\'%&]/', '', $source);
+ break;
+ default :
+ // Check for static usage and assign $filter the proper variable
+ if (is_object($this) && get_class($this) == 'xNewsletterFilterInput') {
+ $filter =& $this;
+ } else {
+ $filter = xNewsletterFilterInput::getInstance();
+ }
+ // Are we dealing with an array?
+ if (is_array($source)) {
+ foreach ($source as $key => $value) {
+ // filter element for XSS and other 'bad' code etc.
+ if (is_string($value)) {
+ $source[$key] = $filter->_remove($filter->_decode($value));
+ }
+ }
+ $result = $source;
+ } else {
+ // Or a string?
+ if (is_string($source) && !empty ($source)) {
+ // filter source for XSS and other 'bad' code etc.
+ $result = $filter->_remove($filter->_decode($source));
+ } else {
+ // Not an array or string.. return the passed parameter
+ $result = $source;
+ }
+ }
+ break;
+ }
+
+ return $result;
+ }
+
+ /**
+ * Function to determine if contents of an attribute is safe
+ *
+ * @static
+ *
+ * @param array $attrSubSet A 2 element array for attributes name,value
+ *
+ * @return boolean True if bad code is detected
+ */
+ public function checkAttribute($attrSubSet)
+ {
+ $attrSubSet[0] = strtolower($attrSubSet[0]);
+ $attrSubSet[1] = strtolower($attrSubSet[1]);
+
+ return (((strpos($attrSubSet[1], 'expression') !== false) && ($attrSubSet[0]) == 'style') || (strpos($attrSubSet[1], 'javascript:') !== false)
+ || (strpos($attrSubSet[1], 'behaviour:') !== false)
+ || (strpos($attrSubSet[1], 'vbscript:') !== false)
+ || (strpos($attrSubSet[1], 'mocha:') !== false)
+ || (strpos($attrSubSet[1], 'livescript:') !== false));
+ }
+
+ /**
+ * Internal method to iteratively remove all unwanted tags and attributes
+ *
+ * @access protected
+ *
+ * @param string $source Input string to be 'cleaned'
+ *
+ * @return string 'Cleaned' version of input parameter
+ */
+ protected function _remove($source)
+ {
+ $loopCounter = 0;
+ // Iteration provides nested tag protection
+ while ($source != $this->_cleanTags($source)) {
+ $source = $this->_cleanTags($source);
+ $loopCounter++;
+ }
+
+ return $source;
+ }
+
+ /**
+ * Internal method to strip a string of certain tags
+ *
+ * @access protected
+ *
+ * @param string $source Input string to be 'cleaned'
+ *
+ * @return string 'Cleaned' version of input parameter
+ */
+ protected function _cleanTags($source)
+ {
+ /*
+ * In the beginning we don't really have a tag, so everything is
+ * postTag
+ */
+ $preTag = null;
+ $postTag = $source;
+ // Is there a tag? If so it will certainly start with a '<'
+ $tagOpen_start = strpos($source, '<');
+ while ($tagOpen_start !== false) {
+ // Get some information about the tag we are processing
+ $preTag .= substr($postTag, 0, $tagOpen_start);
+ $postTag = substr($postTag, $tagOpen_start);
+ $fromTagOpen = substr($postTag, 1);
+ $tagOpen_end = strpos($fromTagOpen, '>');
+ // Let's catch any non-terminated tags and skip over them
+ if ($tagOpen_end === false) {
+ $postTag = substr($postTag, $tagOpen_start + 1);
+ $tagOpen_start = strpos($postTag, '<');
+ continue;
+ }
+ // Do we have a nested tag?
+ $tagOpen_nested = strpos($fromTagOpen, '<');
+ if (($tagOpen_nested !== false) && ($tagOpen_nested < $tagOpen_end)) {
+ $preTag .= substr($postTag, 0, ($tagOpen_nested + 1));
+ $postTag = substr($postTag, ($tagOpen_nested + 1));
+ $tagOpen_start = strpos($postTag, '<');
+ continue;
+ }
+ // Lets get some information about our tag and setup attribute pairs
+ $currentTag = substr($fromTagOpen, 0, $tagOpen_end);
+ $tagLength = strlen($currentTag);
+ $tagLeft = $currentTag;
+ $attrSet = array();
+ $currentSpace = strpos($tagLeft, ' ');
+ // Are we an open tag or a close tag?
+ if (substr($currentTag, 0, 1) == '/') {
+ // Close Tag
+ $isCloseTag = true;
+ list ($tagName) = explode(' ', $currentTag);
+ $tagName = substr($tagName, 1);
+ } else {
+ // Open Tag
+ $isCloseTag = false;
+ list ($tagName) = explode(' ', $currentTag);
+ }
+ /*
+ * Exclude all "non-regular" tagnames
+ * OR no tagname
+ * OR remove if xssauto is on and tag is blacklisted
+ */
+ if ((!preg_match("/^[a-z][a-z0-9]*$/i", $tagName)) || (!$tagName)
+ || ((in_array(strtolower($tagName), $this->tagBlacklist))
+ && ($this->xssAuto))
+ ) {
+ $postTag = substr($postTag, ($tagLength + 2));
+ $tagOpen_start = strpos($postTag, '<');
+ // Strip tag
+ continue;
+ }
+ /*
+ * Time to grab any attributes from the tag... need this section in
+ * case attributes have spaces in the values.
+ */
+ while ($currentSpace !== false) {
+ $attr = '';
+ $fromSpace = substr($tagLeft, ($currentSpace + 1));
+ $nextSpace = strpos($fromSpace, ' ');
+ $openQuotes = strpos($fromSpace, '"');
+ $closeQuotes = strpos(substr($fromSpace, ($openQuotes + 1)), '"') + $openQuotes + 1;
+ // Do we have an attribute to process? [check for equal sign]
+ if (strpos($fromSpace, '=') !== false) {
+ /*
+ * If the attribute value is wrapped in quotes we need to
+ * grab the substring from the closing quote, otherwise grab
+ * till the next space
+ */
+ if (($openQuotes !== false) && (strpos(substr($fromSpace, ($openQuotes + 1)), '"') !== false)) {
+ $attr = substr($fromSpace, 0, ($closeQuotes + 1));
+ } else {
+ $attr = substr($fromSpace, 0, $nextSpace);
+ }
+ } else {
+ /*
+ * No more equal signs so add any extra text in the tag into
+ * the attribute array [eg. checked]
+ */
+ if ($fromSpace != '/') {
+ $attr = substr($fromSpace, 0, $nextSpace);
+ }
+ }
+ // Last Attribute Pair
+ if (!$attr && $fromSpace != '/') {
+ $attr = $fromSpace;
+ }
+ // Add attribute pair to the attribute array
+ $attrSet[] = $attr;
+ // Move search point and continue iteration
+ $tagLeft = substr($fromSpace, strlen($attr));
+ $currentSpace = strpos($tagLeft, ' ');
+ }
+ // Is our tag in the user input array?
+ $tagFound = in_array(strtolower($tagName), $this->tagsArray);
+ // If the tag is allowed lets append it to the output string
+ if ((!$tagFound && $this->tagsMethod) || ($tagFound && !$this->tagsMethod)) {
+ // Reconstruct tag with allowed attributes
+ if (!$isCloseTag) {
+ // Open or Single tag
+ $attrSet = $this->_cleanAttributes($attrSet);
+ $preTag .= '<' . $tagName;
+ for ($i = 0; $i < count($attrSet); $i++) {
+ $preTag .= ' ' . $attrSet[$i];
+ }
+ // Reformat single tags to XHTML
+ if (strpos($fromTagOpen, '</' . $tagName)) {
+ $preTag .= '>';
+ } else {
+ $preTag .= ' />';
+ }
+ } else {
+ // Closing Tag
+ $preTag .= '</' . $tagName . '>';
+ }
+ }
+ // Find next tag's start and continue iteration
+ $postTag = substr($postTag, ($tagLength + 2));
+ $tagOpen_start = strpos($postTag, '<');
+ }
+ // Append any code after the end of tags and return
+ if ($postTag != '<') {
+ $preTag .= $postTag;
+ }
+
+ return $preTag;
+ }
+
+ /**
+ * Internal method to strip a tag of certain attributes
+ *
+ * @access protected
+ *
+ * @param array $attrSet Array of attribute pairs to filter
+ *
+ * @return array Filtered array of attribute pairs
+ */
+ protected function _cleanAttributes($attrSet)
+ {
+ // Initialize variables
+ $newSet = array();
+ // Iterate through attribute pairs
+ for ($i = 0; $i < count($attrSet); $i++) {
+ // Skip blank spaces
+ if (!$attrSet[$i]) {
+ continue;
+ }
+ // Split into name/value pairs
+ $attrSubSet = explode('=', trim($attrSet[$i]), 2);
+ list ($attrSubSet[0]) = explode(' ', $attrSubSet[0]);
+ /*
+ * Remove all "non-regular" attribute names
+ * AND blacklisted attributes
+ */
+ if ((!preg_match('/[a-z]*$/i', $attrSubSet[0]))
+ || (($this->xssAuto)
+ && ((in_array(strtolower($attrSubSet[0]), $this->attrBlacklist))
+ || (substr($attrSubSet[0], 0, 2) == 'on')))
+ ) {
+ continue;
+ }
+ // XSS attribute value filtering
+ if ($attrSubSet[1]) {
+ // strips unicode, hex, etc
+ $attrSubSet[1] = str_replace('&#', '', $attrSubSet[1]);
+ // strip normal newline within attr value
+ $attrSubSet[1] = preg_replace('/[\n\r]/', '', $attrSubSet[1]);
+ // strip double quotes
+ $attrSubSet[1] = str_replace('"', '', $attrSubSet[1]);
+ // convert single quotes from either side to doubles (Single quotes shouldn't be used to pad attr value)
+ if ((substr($attrSubSet[1], 0, 1) == "'") && (substr($attrSubSet[1], (strlen($attrSubSet[1]) - 1), 1) == "'")) {
+ $attrSubSet[1] = substr($attrSubSet[1], 1, (strlen($attrSubSet[1]) - 2));
+ }
+ // strip slashes
+ $attrSubSet[1] = stripslashes($attrSubSet[1]);
+ }
+ // Autostrip script tags
+ if (xNewsletterFilterInput::checkAttribute($attrSubSet)) {
+ continue;
+ }
+ // Is our attribute in the user input array?
+ $attrFound = in_array(strtolower($attrSubSet[0]), $this->attrArray);
+ // If the tag is allowed lets keep it
+ if ((!$attrFound && $this->attrMethod) || ($attrFound && !$this->attrMethod)) {
+ // Does the attribute have a value?
+ if ($attrSubSet[1]) {
+ $newSet[] = $attrSubSet[0] . '="' . $attrSubSet[1] . '"';
+ } elseif ($attrSubSet[1] == "0") {
+ /*
+ * Special Case
+ * Is the value 0?
+ */
+ $newSet[] = $attrSubSet[0] . '="0"';
+ } else {
+ $newSet[] = $attrSubSet[0] . '="' . $attrSubSet[0] . '"';
+ }
+ }
+ }
+
+ return $newSet;
+ }
+
+ /**
+ * Try to convert to plaintext
+ *
+ * @access protected
+ *
+ * @param string $source
+ *
+ * @return string Plaintext string
+ */
+ protected function _decode($source)
+ {
+ // entity decode
+ $trans_tbl = get_html_translation_table(HTML_ENTITIES);
+ foreach ($trans_tbl as $k => $v) {
+ $ttr[$v] = utf8_encode($k);
+ }
+ $source = strtr($source, $ttr);
+ // convert decimal
+ //$source = preg_replace('/&#(\d+);/me', "chr(\\1)", $source); // decimal notation
+ //TODO swich to this once we have PHP 5.3 as minimum
+// $source = preg_replace_callback('/&#(\d+);/m', function($m) {return chr($m[1]);}, $source); // decimal notation
+ $source = preg_replace_callback('/&#(\d+);/m', create_function('$matches', "return chr(\$matches[1]);"), $source); // decimal notation
+ // convert hex
+ //$source = preg_replace('/&#x([a-f0-9]+);/mei', "chr(0x\\1)", $source); // hex notation
+ //TODO swich to this once we have PHP 5.3 as minimum
+// $source = preg_replace_callback('/&#x([a-f0-9]+);/mi', function($m) {return chr(hexdec($m[1]));}, $source); // hex notation
+ $source = preg_replace_callback(
+ '/&#x([a-f0-9]+);/mi',
+ create_function('$matches', "return chr('0x'.\$matches[1]);"),
+ $source
+ ); // hex notation
+
+ return $source;
+ }
+}
Added: XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/session.php
===================================================================
--- XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/session.php (rev 0)
+++ XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/session.php 2014-02-07 21:20:20 UTC (rev 12292)
@@ -0,0 +1,103 @@
+<?php
+/*
+ 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.
+ */
+/**
+ * xNewsletterSession class
+ *
+ * @copyright The XUUPS Project http://sourceforge.net/projects/xuups/
+ * @license http://www.fsf.org/copyleft/gpl.html GNU public license
+ * @package xNewsletter
+ * @since 1.3
+ * @author trabis <lus...@gm...>
+ * @author Harry Fuecks (PHP Anthology Volume II)
+ * @version svn:$id$
+ */
+defined("XOOPS_ROOT_PATH") or die("XOOPS root path not defined");
+
+include_once dirname(dirname(__FILE__)) . '/include/common.php';
+
+class xNewsletterSession
+{
+ /**
+ * Session constructor<br />
+ * Starts the session with session_start()
+ * <strong>Note:</strong> that if the session has already started,
+ * session_start() does nothing
+ */
+ protected function __construct()
+ {
+ @session_start();
+ }
+
+ /**
+ * Sets a session variable
+ *
+ * @param string $name name of variable
+ * @param mixed $value value of variable
+ *
+ * @return void
+ * @access public
+ */
+ public function set($name, $value)
+ {
+ $_SESSION[$name] = $value;
+ }
+
+ /**
+ * Fetches a session variable
+ *
+ * @param string $name name of variable
+ *
+ * @return mixed value of session variable
+ * @access public
+ */
+ public function get($name)
+ {
+ if (isset($_SESSION[$name])) {
+ return $_SESSION[$name];
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Deletes a session variable
+ *
+ * @param string $name name of variable
+ *
+ * @return void
+ * @access public
+ */
+ public function del($name)
+ {
+ unset($_SESSION[$name]);
+ }
+
+ /**
+ * Destroys the whole session
+ *
+ * @return void
+ * @access public
+ */
+ public function destroy()
+ {
+ $_SESSION = array();
+ session_destroy();
+ }
+
+ public static function &getInstance()
+ {
+ static $_sess;
+ if (!isset($_sess)) {
+ $_sess = new xNewsletterSession();
+ }
+ return $_sess;
+ }
+}
Added: XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/xnewsletter.php
===================================================================
--- XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/xnewsletter.php (rev 0)
+++ XoopsModules/xnewsletter/branches/luciorota/xNewsletter/class/xnewsletter.php 2014-02-07 21:20:20 UTC (rev 12292)
@@ -0,0 +1,127 @@
+<?php
+/*
+ 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.
+ */
+/**
+ * xNewsletterxNewsletter class
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
+ * @package xNewsletter
+ * @since 1.3
+ * @author Xoops Development Team
+ * @version svn:$id$
+ */
+defined("XOOPS_ROOT_PATH") or die("XOOPS root path not defined");
+
+class xNewsletterxNewsletter
+{
+ var $dirname;
+ var $module;
+ var $handler;
+ var $config;
+ var $debug;
+ var $debugArray = array();
+
+ protected function __construct($debug)
+ {
+ $this->debug = $debug;
+ $this->dirname = basename(dirname(dirname(__FILE__)));
+ }
+
+ static function &getInstance($debug = false)
+ {
+ static $instance = false;
+ if (!$instance) {
+ $instance = new self($debug);
+ }
+//error_log("istance: [" . print_r($istance,true) . "]");
+//phpinfo();
+//debug_print_backtrace ();
+ return $instance;
+ }
+
+ function &getModule()
+ {
+ if ($this->module == null) {
+ $this->initModule();
+ }
+ return $this->module;
+ }
+
+ function getConfig($name = null)
+ {
+ if ($this->config == null) {
+ $this->initConfig();
+ }
+ if (!$name) {
+ $this->addLog("Getting all config");
+ return $this->config;
+ }
+ if (!isset($this->config[$name])) {
+ $this->addLog("ERROR :: CONFIG '{$name}' does not exist");
+ return null;
+ }
+ $this->addLog("Getting config '{$name}' : " . print_r($this->config[$name], true));
+ return $this->config[$name];
+ }
+
+ function setConfig($name = null, $value = null)
+ {
+ if ($this->config == null) {
+ $this->initConfig();
+ }
+ $this->config[$name] = $value;
+ $this->addLog("Setting config '{$name}' : " . $this->config[$name]);
+ return $this->config[$name];
+ }
+
+ function &getHandler($name)
+ {
+ if (!isset($this->handler[$name . '_handler'])) {
+ $this->initHandler($name);
+ }
+ $this->addLog("Getting handler '{$name}'");
+ return $this->handler[$name . '_handler'];
+ }
+
+ function initModule()
+ {
+ global $xoopsModule;
+ if (isset($xoopsModule) && is_object($xoopsModule) && $xoopsModule->getVar('dirname') == $this->dirname) {
+ $this->module = $xoopsModule;
+ } else {
+ $hModule = xoops_gethandler('module');
+ $this->module = $hModule->getByDirname($this->dirname);
+ }
+ $this->addLog('INIT MODULE');
+ }
+
+ function initConfig()
+ {
+ $this->addLog('INIT CONFIG');
+ $hModConfig = xoops_gethandler('config');
+ $this->config = $hModConfig->getConfigsByCat(0, $this->getModule()->getVar('mid'));
+ }
+
+ function initHandler($name)
+ {
+ $this->addLog('INIT ' . $name . ' HANDLER');
+ $this->handler[$name . '_handler'] = xoops_getModuleHandler($name, $this->dirname);
+ }
+
+ function addLog($log)
+ {
+ if ($this->debug) {
+ if (is_object($GLOBALS['xoopsLogger'])) {
+ $GLOBALS['xoopsLogger']->addExtra($this->module->name(), $log);
+ }
+ }
+ }
+}
Modified: XoopsModules/xnewsletter/branches/luciorota/xNewsletter/cron.php
===================================================================
--- XoopsModules/xnewsletter/branches/luciorota/xNewsletter/cron.php 2014-02-07 20:41:47 UTC (rev 12291)
+++ XoopsModules/xnewsletter/branches/luciorota/xNewsletter/cron.php 2014-02-07 21:20:20 UTC (rev 12292)
@@ -37,28 +37,28 @@
require_once XOOPS_ROOT_PATH . "/modules/xNewsletter/header.php";
require_once XOOPS_ROOT_PATH . "/modules/xNewsletter/include/task.inc.php";
-$modhandler =& xoops_gethandler('module');
-$xoopsModule =& $modhandler->getByDirname("xNewsletter");
-$config_handler =& xoops_gethandler("config");
-$xoopsModuleConfig =& $config_handler->getConfigsByCat(0,$xoopsModule->mid());
-$xn_send_in_packages = $xoopsModuleConfig['xn_send_in_packages'];
-
-$result_exec = Execute_Tasks($xn_send_in_packages, 0);
+$module_handler = xoops_gethandler('module');
+$config_handler = xoops_gethandler('config');
+$xoopsModule = $module_handler->getByDirname('xNewsletter');
+$xoopsModuleConfig = $config_handler->getConfigsByCat(0,$xoopsModule->mid());
+
+$result_exec = xNewsletter_executeTasks($xoopsModuleConfig['xn_send_in_packages'], 0);
+
if ($result_exec != '') {
//you can enable the block for creating protocol for cron
- $obj_protocol =& $protocolHandler->create();
- $obj_protocol->setVar("protocol_letter_id", "0");
- $obj_protocol->setVar("protocol_subscriber_id", "0");
- $obj_protocol->setVar("protocol_status", "Cron: ".$result_exec);
- $obj_protocol->setVar("protocol_success", "1");
- $obj_protocol->setVar("protocol_submitter", "0");
- $obj_protocol->setVar("protocol_created", time());
+ $protocolObj = $protocolHandler->create();
+ $protocolObj->setVar("protocol_letter_id", "0");
+ $protocolObj->setVar("protocol_subscriber_id", "0");
+ $protocolObj->setVar("protocol_status", "Cron: ".$result_exec);
+ $protocolObj->setVar("protocol_success", "1");
+ $protocolObj->setVar("protocol_submitter", "0");
+ $protocolObj->setVar("protocol_created", time());
- if ($protocolHandler->insert($obj_protocol)) {
+ if ($protocolHandler->insert($protocolObj)) {
//create protocol is ok
} else {
- echo $obj_protocol->getHtmlErrors();
+ echo $protocolObj->getHtmlErrors();
}
}
echo "<br/>result cron:" . $result_exec;
Modified: XoopsModules/xnewsletter/branches/luciorota/xNewsletter/header.php
===================================================================
--- XoopsModules/xnewsletter/branches/luciorota/xNewsletter/header.php 2014-02-07 20:41:47 UTC (rev 12291)
+++ XoopsModules/xnewsletter/branches/luciorota/xNewsletter/header.php 2014-02-07 21:20:20 UTC (rev 12292)
@@ -28,19 +28,24 @@
include '../../mainfile.php';
+global $xoopsConfig, $xoopsModule, $xoopsModuleConfig;
+
include_once XOOPS_ROOT_PATH . "/class/pagenav.php";
-include_once XOOPS_ROOT_PATH . "/modules/" . $xoopsModule->getVar('dirname') . "/include/config.php";
+include_once XOOPS_ROOT_PATH . "/modules/{$xoopsModule->getVar('dirname')}/include/config.php";
include_once XNEWSLETTER_PATH . "/include/functions.php";
+// Get Xoops instances
+$gperm_handler = xoops_gethandler('groupperm');
+$member_handler = xoops_gethandler('member');
+$config_handler = xoops_gethandler("config");
+
xoops_load('XoopsUserUtility');
$myts = & MyTextSanitizer::getInstance();
$style = XNEWSLETTER_URL . "/css/style.css";
-global $xoopsConfig, $xoopsModule, $xoopsModuleConfig;
if (empty($xoopsModuleConfig)) {
- $config_handler =& xoops_gethandler("config");
- $xoopsModuleConfig =& $config_handler->getConfigsByCat(0,$xoopsModule->mid());
+ $xoopsModuleConfig = $config_handler->getConfigsByCat(0, $xoopsModule->mid());
}
// Get the module instances
@@ -53,9 +58,6 @@
$protocolHandler =& xoops_getModuleHandler('xNewsletter_protocol', XNEWSLETTER_DIRNAME);
$mailinglistHandler =& xoops_getModuleHandler('xNewsletter_mailinglist', XNEWSLETTER_DIRNAME);
-// Get Xoops instances
-$gperm_handler =& xoops_gethandler('groupperm');
-$member_handler =& xoops_gethandler('member');
xoops_loadLanguage('modinfo', XNEWSLETTER_DIRNAME);
xoops_loadLanguage('main', XNEWSLETTER_DIRNAME);
Added: XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/common.php
===================================================================
--- XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/common.php (rev 0)
+++ XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/common.php 2014-02-07 21:20:20 UTC (rev 12292)
@@ -0,0 +1,62 @@
+<?php
+/*
+ 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.
+ */
+/**
+ * xNewsletter module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
+ * @package xNewsletter
+ * @since 1.3
+ * @author Xoops Development Team
+ * @version svn:$id$
+ */
+defined("XOOPS_ROOT_PATH") or die("XOOPS root path not defined");
+
+// This must contain the name of the folder in which reside xNewsletter
+define("XNEWSLETTER_DIRNAME", basename(dirname(dirname(__FILE__))));
+define("XNEWSLETTER_URL", XOOPS_URL . '/modules/' . XNEWSLETTER_DIRNAME);
+define("XNEWSLETTER_IMAGES_URL", XNEWSLETTER_URL . '/images');
+define("XNEWSLETTER_ADMIN_URL", XNEWSLETTER_URL . '/admin');
+define("XNEWSLETTER_ROOT_PATH", XOOPS_ROOT_PATH . '/modules/' . XNEWSLETTER_DIRNAME);
+
+xoops_loadLanguage('common', XNEWSLETTER_DIRNAME);
+
+//include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php';
+//include_once XOOPS_ROOT_PATH . '/class/tree.php';
+//include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
+
+//include_once XNEWSLETTER_ROOT_PATH . '/include/functions.php';
+include_once XNEWSLETTER_ROOT_PATH . '/include/constants.php';
+include_once XNEWSLETTER_ROOT_PATH . '/class/session.php'; // xNewsletterSession class
+include_once XNEWSLETTER_ROOT_PATH . '/class/xnewsletter.php'; // xNewsletterxNewsletter class
+include_once XNEWSLETTER_ROOT_PATH . '/class/request.php'; // xNewsletterRequest class
+
+xoops_load('XoopsUserUtility');
+// MyTextSanitizer object
+$myts = MyTextSanitizer::getInstance();
+
+$debug = false;
+$xnewsletter = xNewsletterxNewsletter::getInstance($debug);
+
+//This is needed or it will not work in blocks.
+global $xnewsletter_isAdmin;
+
+// Load only if module is installed
+if (is_object($xnewsletter->getModule())) {
+ // Find if the user is admin of the module
+ $xnewsletter_isAdmin = xnewsletter_userIsAdmin();
+}
+
+// Load Xoops handlers
+$module_handler = xoops_gethandler('module');
+$member_handler = xoops_gethandler('member');
+$notification_handler = &xoops_gethandler('notification');
+$gperm_handler = xoops_gethandler('groupperm');
Added: XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/constants.php
===================================================================
--- XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/constants.php (rev 0)
+++ XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/constants.php 2014-02-07 21:20:20 UTC (rev 12292)
@@ -0,0 +1,45 @@
+<?php
+/*
+ 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.
+ */
+/**
+ * xNewsletter module
+ *
+ * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/
+ * @license GNU GPL 2 or later (http://www.gnu.org/licenses/gpl-2.0.html)
+ * @package xNewsletter
+ * @since 1.3
+ * @author Xoops Development Team
+ * @version svn:$id$
+ */
+// constants for account
+define("_AM_ACCOUNTS_TYPE_VAL_PHP_MAIL", "1");
+define("_AM_ACCOUNTS_TYPE_VAL_PHP_SENDMAIL", "2");
+define("_AM_ACCOUNTS_TYPE_VAL_POP3", "3");
+define("_AM_ACCOUNTS_TYPE_VAL_SMTP", "4");
+define("_AM_ACCOUNTS_TYPE_VAL_GMAIL", "5");
+
+define("_AM_ACCOUNTS_TYPE_INBOX","INBOX");
+define("_AM_ACCOUNTS_TYPE_HARDBOX","INBOX.hard");
+define("_AM_ACCOUNTS_TYPE_SOFTBOX","INBOX.soft");
+
+// constants for actions letter
+define("_AM_XNEWSLETTER_LETTER_ACTION_VAL_NO", "0");
+define("_AM_XNEWSLETTER_LETTER_ACTION_VAL_PREVIEW", "1");
+define("_AM_XNEWSLETTER_LETTER_ACTION_VAL_SEND", "2");
+define("_AM_XNEWSLETTER_LETTER_ACTION_VAL_SENDTEST", "3");
+
+// constants for bounced mail handler
+define("_AM_XNEWSLETTER_BOUNCETYPE_HARD","hard");
+define("_AM_XNEWSLETTER_BOUNCETYPE_SOFT","soft");
+define("_AM_XNEWSLETTER_BMH_MEASURE_VAL_ALL", -1);
+define("_AM_XNEWSLETTER_BMH_MEASURE_VAL_PENDING", 0);
+define("_AM_XNEWSLETTER_BMH_MEASURE_VAL_NOTHING", 1);
+define("_AM_XNEWSLETTER_BMH_MEASURE_VAL_QUIT", 2);
+define("_AM_XNEWSLETTER_BMH_MEASURE_VAL_DELETE", 3);
Modified: XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/functions.php
===================================================================
--- XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/functions.php 2014-02-07 20:41:47 UTC (rev 12291)
+++ XoopsModules/xnewsletter/branches/luciorota/xNewsletter/include/functions.php 2014-02-07 21:20:20 UTC (rev 12292)
@@ -53,8 +53,31 @@
}
}
+/**
+ * Checks if a user is admin of Wfdownloads
+ *
+ * @return boolean
+ */
+function xNewsletter_userIsAdmin()
+{
+ global $xoopsUser;
+ $xnewsletter = xNewsletterxNewsletter::getInstance();
+ static $xnewsletter_isAdmin;
+ if (isset($xnewsletter_isAdmin)) {
+ return $xnewsletter_isAdmin;
+ }
+
+ if (!$xoopsUser) {
+ $xnewsletter_isAdmin = false;
+ } else {
+ $xnewsletter_isAdmin = $xoopsUser->isAdmin($xnewsletter->getModule()->getVar('mid'));
+ }
+
+ return $xnewsletter_isAdmin;
+}
+
function xNewsletter_checkEmail($email, $antispam = false) {
include_once XOOPS_ROOT_PATH . '/include/functions.php';
return checkEmail($email, $antispam);
@@ -277,14 +300,14 @@
-function UserAllowedCreateCat($cat_id = 0) {
+function xNewsletter_userAllowedCreateCat($cat_id = 0) {
//check the rights of current user
//if a cat is defined, than only check for this cat, otherwise check whether there is minimum one cat with right create
global $xoopsUser, $catHandler;
$allowedit = 0;
- $curren...
[truncated message content] |