Im trying to integrate the smartyValidate into XOOPS 2.2.4, i got no errors but no validation progress also. Please look into my code and maybe you can help.
Im trying to port a directory script [phpLD]with smarty to xoops. The frontend is almost converted, but validation does not work
<?php // $Id: template.php,v 1.21.6.16 2005/07/22 18:22:58 mithyt2 Exp $ // ------------------------------------------------------------------------ // // XOOPS - PHP Content Management System // // Copyright (c) 2000 XOOPS.org // // <https://xoops.org/> // // ------------------------------------------------------------------------ // // This program is free software; you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation; either version 2 of the License, or // // (at your option) any later version. // // // // 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. See the // // GNU General Public License for more details. // // // // You should have received a copy of the GNU General Public License // // along with this program; if not, write to the Free Software // // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // ------------------------------------------------------------------------ // // Author: Kazumi Ono (AKA onokazu) // // URL: http://www.myweb.ne.jp/, https://xoops.org/, http://www.xoopscube.jp/ // // Project: The XOOPS Project // // ------------------------------------------------------------------------- // if (!defined('SMARTY_DIR')) { exit(); } /** * Base class: Smarty template engine */ require_once SMARTY_DIR.'Smarty.class.php'; require_once SMARTY_DIR.'SmartyValidate.class.php'; /** * Template engine * * @package kernel * @subpackage core * * @author Kazumi Ono <onokazu@xoops.org> * @copyright (c) 2000-2003 The XOOPS Project - http://www.xoops.org */ class XoopsTpl extends Smarty { /** * Allow update of template files from the themes/ directory? * This should be set to false on an active site to increase performance */ var $_canUpdateFromFile = false; /** * Constructor **/ function XoopsTpl() { global $xoopsConfig; $this->Smarty(); $this->compile_id = null; if ($xoopsConfig['theme_fromfile'] == 1) { $this->_canUpdateFromFile = true; $this->compile_check = true; } else { $this->_canUpdateFromFile = false; $this->compile_check = false; } $this->left_delimiter = '<{'; $this->right_delimiter = '}>'; $this->template_dir = XOOPS_THEME_PATH; $this->cache_dir = XOOPS_CACHE_PATH; $this->compile_dir = XOOPS_COMPILE_PATH; $this->plugins_dir = array(XOOPS_ROOT_PATH.'/class/smarty/plugins'); $this->default_template_handler_func = 'xoops_template_create'; // Added by goghs on 11-26 to deal with safe mode //if (ini_get('safe_mode') == "1") { $this->use_sub_dirs = false; //} else { // $this->use_sub_dirs = true; //} // END } /** * Set the directory for templates * * @param string $dirname Directory path without a trailing slash **/ function xoops_setTemplateDir($dirname) { $this->template_dir = $dirname; } /** * Get the active template directory * * @return string **/ function xoops_getTemplateDir() { return $this->template_dir; } /** * Set debugging mode * * @param boolean $flag **/ function xoops_setDebugging($flag=false) { $this->debugging = is_bool($flag) ? $flag : false; } /** * Set caching * * @param integer $num **/ function xoops_setCaching($num=0) { $this->caching = (int)$num; } /** * Set cache lifetime * * @param integer $num Cache lifetime **/ function xoops_setCacheTime($num=0) { $num = (int)$num; if ($num <= 0) { $this->caching = 0; } else { $this->cache_lifetime = $num; } } /** * Set directory for compiled template files * * @param string $dirname Full directory path without a trailing slash **/ function xoops_setCompileDir($dirname) { $this->compile_dir = $dirname; } /** * Set the directory for cached template files * * @param string $dirname Full directory path without a trailing slash **/ function xoops_setCacheDir($dirname) { $this->cache_dir = $dirname; } /** * Render output from template data * * @param string $data * @return string Rendered output **/ function xoops_fetchFromData(&$data) { $dummyfile = XOOPS_CACHE_PATH.'/dummy_'.time(); $fp = fopen($dummyfile, 'w'); fwrite($fp, $data); fclose($fp); $fetched = $this->fetch('file:'.$dummyfile); unlink($dummyfile); $this->clear_compiled_tpl('file:'.$dummyfile); return $fetched; } /** * **/ function xoops_canUpdateFromFile() { return $this->_canUpdateFromFile; } /** * Get caching * * @return int **/ function xoops_getCaching() { return $this->caching; } ///////////////////////// // function validConnect() { SmartyValidate::connect($this); } // function validDisconnect() { SmartyValidate::disconnect($this); } // function validate($post) { return SmartyValidate::is_valid($post); } // function redisplay($post) { $this->assign($post); //$this->display } ///////////////////////////////// } /** * Smarty default template handler function * * @param $resource_type * @param $resource_name * @param $template_source * @param $template_timestamp * @param $smarty_obj * @return bool **/ function xoops_template_create ($resource_type, $resource_name, &$template_source, &$template_timestamp, &$smarty_obj) { if ( $resource_type == 'db' ) { $file_handler =& xoops_gethandler('tplfile'); $tpl =& $file_handler->find('default', null, null, null, $resource_name, true); if (count($tpl) > 0 && is_object($tpl[0])) { $template_source = $tpl[0]->getSource(); $template_timestamp = $tpl[0]->getLastModified(); return true; } } else { } return false; } /** * function to update compiled template file in templates_c folder * * @param string $tpl_id * @param boolean $clear_old * @return boolean **/ function xoops_template_touch($tplfile, $clear_old = true) { $tpl = new XoopsTpl(); $tpl->force_compile = true; if ( is_object($tplfile) ) { $file = $tplfile->getVar('tpl_file'); if ($clear_old) { $tpl->clear_cache('db:'.$file); $tpl->clear_compiled_tpl('db:'.$file); } $tpl->fetch('db:'.$file); return true; } return false; } /** * Clear the module cache * * @param int $mid Module ID * @return **/ function xoops_template_clear_module_cache($mid) { $block_handler =& xoops_gethandler('block'); //note this uses backwards parameters for backwards compatibility - change that! $block_arr =& $block_handler->getByModule($mid, true, false); if (count($block_arr) > 0) { $instance_handler =& xoops_gethandler('blockinstance'); $instances =& $instance_handler->getObjects(new Criteria('bid', "(".implode(',', array_keys($block_arr)).")", "IN")); $count = count($instances); if ($count > 0) { $xoopsTpl = new XoopsTpl(); $xoopsTpl->xoops_setCaching(2); for ($i = 0; $i < $count; $i++) { if ($block_arr[$instances[$i]->getVar('bid')]->getVar('template') != '') { $xoopsTpl->clear_cache('db:'.$block_arr[$instances[$i]->getVar('bid')]->getVar('template'), 'blk_'.$instances[$i]->getVar('instanceid')); } } } } } ?>
<?php /** * Project: PHPLinkDirectory: Link exchange directory * * License: GNU GPL (http://www.opensource.org/licenses/gpl-license.html) * * This program is free software; * * you can redistribute it and/or modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * * 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. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with this program; * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * For questions, help, comments, discussion, etc., please join the * PHP Link Directory Forum http://www.phplinkdirectory.com/forum/ * * @link http://www.phplinkdirectory.com/ * @copyright 2004-2005 NetCreated, Inc. (http://www.netcreated.com/) * @projectManager David DuVal <david@david-duval.com> * @author Bogdan Dumitru <dcb@insomniacsoft.com> * @mod developers and support * Casey Wilson / Ap0s7le <at@ap0s7le.com> * York Kie Tan / yktan <yktan@hotmail.com> * @package PHPLinkDirectory * @version 2.0.0 RC5.2 **/ include '../../mainfile.php'; include(XOOPS_ROOT_PATH . '/header.php'); include("xoops_version.php"); $xoopsOption['template_main'] = 'submit.tpl'; require_once 'init.php'; session_start(); //Evaluate payment options if (PAY_ENABLE == '1' && PAYPAL_ACCOUNT != '') { $price = array (); if (FTR_ENABLE == '1' && PAY_FEATURED > 0) { $price['featured'] = PAY_FEATURED; } if (PAY_NORMAL > 0) { $price['normal'] = PAY_NORMAL; if (PAY_ENABLE_FREE) { $price['free'] = 0; } } if (PAY_RECPR > 0) { $price['reciprocal'] = PAY_RECPR; } $xoopsTpl->assign('price', $price); if (isset ($_REQUEST['LINK_TYPE'])) { $link_type = $_REQUEST['LINK_TYPE']; switch ($link_type) { case 'reciprocal' : $recpr_required = 1; break; case 'free' : $recpr_required = REQUIRE_RECIPROCAL; break; default : $recpr_required = 0; break; } } else { $recpr_required = 0; } $_SESSION['SmartyValidate']['submit_link']['validators'][6]['empty'] = $recpr_required ? 0 : 1; $_SESSION['SmartyValidate']['submit_link']['validators'][7]['empty'] = $recpr_required ? 0 : 1; } else { $recpr_required = REQUIRE_RECIPROCAL; } $xoopsTpl->assign('recpr_required', $recpr_required); if (empty ($_REQUEST['submit'])) { if (!empty ($_SERVER['HTTP_REFERER'])) $_SESSION['return'] = $_SERVER['HTTP_REFERER']; $cid = get_category($_SERVER['HTTP_REFERER']); $data = array (); $data['CATEGORY_ID'] = $cid; $data['RECPR_REQUIRED'] = $recpr_required; SmartyValidate :: connect($xoopsTpl); init_submission(); SmartyValidate :: register_form('submit_link', true); SmartyValidate :: register_criteria('isValueUnique', 'validate_unique', 'submit_link'); SmartyValidate :: register_criteria('isNotEqual', 'validate_not_equal', 'submit_link'); SmartyValidate :: register_criteria('isURLOnline', 'validate_url_online', 'submit_link'); SmartyValidate :: register_validator('v_TITLE', 'TITLE', 'notEmpty', false, false, false, 'trim', 'submit_link'); SmartyValidate :: register_validator('v_TITLE_U', 'TITLE:link:CATEGORY_ID', 'isValueUnique', false, false, false, null, 'submit_link'); SmartyValidate :: register_validator('v_URL', 'URL', 'isURL', false, false, false, 'trim', 'submit_link'); SmartyValidate :: register_validator('v_URL_ONLINE', 'URL', 'isURLOnline', false, false, false, null, 'submit_link'); SmartyValidate :: register_validator('v_URL_U', 'URL:link::'. (ALLOW_MULTIPLE ? ':CATEGORY_ID' : ''), 'isValueUnique', false, false, false, null, 'submit_link'); SmartyValidate :: register_validator('v_CATEGORY_ID', 'CATEGORY_ID:0', 'isNotEqual', true, false, false, null, 'submit_link'); SmartyValidate :: register_validator('v_RECPR_URL', 'RECPR_URL', 'isURL', !$recpr_required, false, false, 'trim', 'submit_link'); SmartyValidate :: register_criteria('isRecprOnline', 'validate_recpr_link', 'submit_link'); SmartyValidate :: register_validator('v_RECPR_ONLINE', 'RECPR_URL', 'isRecprOnline', !$recpr_required, false, false, null, 'submit_link'); SmartyValidate :: register_validator('v_OWNER_NAME', 'OWNER_NAME', 'notEmpty', false, false, false, 'trim', 'submit_link'); SmartyValidate :: register_validator('v_OWNER_EMAIL', 'OWNER_EMAIL', 'isEmail', false, false, false, 'trim', 'submit_link'); if(count($price)>0){ SmartyValidate :: register_validator('v_LINK_TYPE', 'LINK_TYPE', 'notEmpty', false, false, false, 'trim', 'submit_link'); } if (VISUAL_CONFIRM) { SmartyValidate :: register_criteria('isCaptchaValid', 'validate_captcha', 'submit_link'); SmartyValidate :: register_validator('v_CAPTCHA', 'CAPTCHA', 'isCaptchaValid', false, false, false, null, 'submit_link'); } } else { SmartyValidate :: connect($xoopsTpl); $data = get_table_data('link'); $data['STATUS'] = 1; $data['IPADDRESS'] = get_client_ip(); $data['VALID'] = 1; $data['LINK_TYPE'] = $link_type; $data['RECPR_REQUIRED'] = $recpr_required; if ($recpr_required) { $data['RECPR_VALID'] = 1; $data['RECPR_LAST_CHECKED'] = gmdate('Y-m-d H:i:s'); } if (ENABLE_ID) $data['RECPR_ID'] = $_SESSION['RECPR_ID']; $data['LAST_CHECKED'] = gmdate('Y-m-d H:i:s'); $data['DATE_ADDED'] = gmdate('Y-m-d H:i:s'); $data['DATE_MODIFIED'] = gmdate('Y-m-d H:i:s'); if (strlen(trim($data['URL'])) > 0 && !preg_match("`^http(s?)://`", $data['URL'])) $data['URL'] = "http://".$data['URL']; if (strlen(trim($data['RECPR_URL'])) > 0 && !preg_match("`^http(s?)://`", $data['RECPR_URL'])) $data['RECPR_URL'] = "http://".$data['RECPR_URL']; if (VISUAL_CONFIRM) { $data = array_merge($data, array ('CAPTCHA' => $_REQUEST['CAPTCHA'])); } if (SmartyValidate :: is_valid($data, 'submit_link')) { if (VISUAL_CONFIRM) { unset ($data['CAPTCHA']); } if (ENABLE_PAGERANK) { require_once 'include/pagerank.php'; $data['PAGERANK'] = get_page_rank($data['URL']); if (!empty ($data['RECPR_URL'])) { $data['RECPR_PAGERANK'] = get_page_rank($data['RECPR_URL']); } } $id = $db->GenID($tables['link']['name'].'_SEQ'); $data['ID'] = $id; $data['LINK_TYPE'] = $link_type_int[$link_type]; switch($link_type){ case 'free': $data['NOFOLLOW'] = 1; break; case 'featured': $data['FEATURED'] = 1; break; } $data['OWNER_NOTIF'] = $price[$link_type] > 0?0:1; $data['PAYED'] = $price[$link_type] > 0?0:-1; if ($db->Replace($tables['link']['name'], $data, 'ID', true) > 0) { $xoopsTpl->assign('posted', true); send_submit_notifications($data); if($price[$link_type] > 0) { //Move to payment page header("Location: payment.php?id=".$data['ID']); exit; }else{ unset ($data['TITLE']); unset ($data['URL']); unset ($data['DESCRIPTION']); unset ($data['RECPR_URL']); if (ENABLE_ID) init_submission(); } } else { $xoopsTpl->assign('error', true); } } } unset ($_SESSION['CAPTCHA']); $path = array (); $path[] = array ('ID' => '0', 'TITLE' => _L(SITE_NAME), 'TITLE_URL' => DOC_ROOT, 'DESCRIPTION' => SITE_DESC); $path[] = array ('ID' => '0', 'TITLE' => _L('Submit Link'), 'TITLE_URL' => '', 'DESCRIPTION' => _L('Submit a new link to the directory ')); $xoopsTpl->assign('path', $path); if (ENABLE_ID) $xoopsTpl->assign('recpr_id', $_SESSION['RECPR_ID']); $categs = get_categs_tree($db, 0); $xoopsTpl->assign('categs', $categs); $xoopsTpl->assign($data); $xoopsTpl->assign('LINK_TYPE', $link_type); echo $xoopsTpl->fetch('submit.tpl', $id); function validate_captcha($value, $empty, & $params, & $form) { require_once '../../class/captcha/captcha.class.php'; return isset ($_SESSION['CAPTCHA']) && strtolower($_SESSION['CAPTCHA']) == strtolower($value); } function init_submission() { mt_srand(); $_SESSION['RECPR_ID'] = mt_rand(0, 0xFFFFFF); } $xoopsTpl->assign("xoops_module_header", '<link rel="stylesheet" type="text/css" href="module.css" />'); //echo $xoopsTpl->fetch('submit.tpl', $id); include XOOPS_ROOT_PATH . '/footer.php'; ?>