GIF89a;
Direktori : /home/serb/www/poll/app.ajax-poll/ |
Current File : /home/serb/www/poll/app.ajax-poll/class-app.inc.php |
<?php //==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>>==>>> // // Ajax Poll Script v3.02 [ GPL ] // Copyright (c) phpkobo.com ( http://www.phpkobo.com/ ) // Email : admin@phpkobo.com // ID : APSMX-302 // //==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<<==<<< include( dirname(__FILE__) . '/include/common.inc.php' ); class CTClassApp extends CTClassObject { function setup( $sys ) { if ( !parent::setup( $sys ) ) { return false; } //-- setup data folder if ( !$this->setupDataFolder() ) { return false; } //-- setup poll & poll items $this->poll = new CPoll(); if ( !$this->poll->setup( $sys, $this ) ) { return false; } if ( !$this->setupPoll( $this->poll ) ) { return false; } //-- Cookie Block $name = $this->getCookieBlockName(); $this->ckblock = new CCookieBlock(); $this->ckblock->setup( $name ); //-- cmdpsec $this->cmdspec = array(); if ( !$this->setupCmdSpec( $this->cmdspec ) ) { return false; } return true; } function checkCkBlock( $name = null ) { if ( $this->poll->attr( "enable-cookie-block" ) ) { if ( is_null( $name ) ) { return $this->ckblock->exists(); } else { if ( $this->ckblock->exists() ) { return in_array( $name, explode( "\t", $this->ckblock->get() ) ); } else { return false; } } } else { return false; } } function setupDataFolder() { //-- check app data folder $path = $this->getAppDataPath(); if ( !$this->checkPermission( "rw", $path ) ) { return false; } //-- tclass data folder exists? $path = $this->getDataFolderPath(); if ( !file_exists( $path ) ) { @mkdir( $path ); @chmod( $path, TCLASS_DATA_FOLDER_PERMISSION ); if ( !file_exists( $path ) ) { $err_msg = "Can not create a folder in [app.data]"; $this->showErrorMsg( $err_msg ); return false; } } return true; } function setupCmdSpec( &$cmdspec ) { parent::setupCmdSpec( $cmdspec ); if ( $this->poll->ended() ) { $cmdspec["init"] = "result"; } else { $cmdspec["init"] = "front"; } $cmdspec["front"] = array( "@hd_front", "tpl.front.inc.php", "js.front.inc.php", ); $cmdspec["result"] = array( "@hd_result", "tpl.result.inc.php", "js.result.inc.php", ); $cmdspec["vote"] = array( "@hd_vote", "tpl.result.inc.php", "js.result.inc.php", ); $cmdspec["clear_block"] = array( "@hd_clear_block", ); return true; } function addStyle( $style ) { $style = str_replace( "\r", "\\r", $style ); $style = str_replace( "\n", "\\n", $style ); $style = str_replace( "\"", "\\\"", $style ); $s = ""; $s .= "<script>(function(\$){"; $s .= "\$('head').append( \"{$style}\" );"; $s .= "}(jQuery));</script>"; echo $s; } function checkDataFilePerm( $path ) { if ( !file_exists( $path ) ) { if ( is_writable( dirname($path) ) ) { touch( $path ); } else { return $this->checkPermission( 'rw', dirname($path) ); } } return $this->checkPermission( 'rw', $path ); } function getIPBlockFilePath() { return $this->getDataFolderPath() . "ip-block.txt"; } function getCookieBlockName() { return $this->getIdName() . ".cookie-block"; } function hd_front( &$ret ) { return true; } function hd_result( &$ret ) { $this->poll->load(); $this->poll->calcStats(); return true; } function hd_vote( &$ret ) { //-- IP Block if ( $this->poll->attr( "enable-ip-block" ) ) { $path = $this->getIPBlockFilePath(); if ( !$this->checkDataFilePerm( $path ) ) { return false; } $ipblock = new CIPBlock(); $ipblock->setup( $path ); if ( !$ipblock->validate() ) { $ret["cmd"] = "none"; $ret["msg"] = array( "cmd" => "already_voted" ); return false; } } //-- Cookie Block if ( $this->poll->attr( "enable-cookie-block" ) ) { $cookie_name = $this->getCookieBlockName(); $cookie_block = new CCookieBlock(); $cookie_block->setup( $cookie_name, $this->poll->attr( "cookie-block-period" ) ); if ( !$cookie_block->validate() ) { $ret["cmd"] = "none"; $ret["msg"] = array( "cmd" => "already_voted" ); return false; } } //-- Load Data $this->poll->load(true); $this->poll->calcStats(); //-- store choice in cookie if ( isset( $cookie_block ) ) { $answer = isset( $_REQUEST['answer'] ) ? $_REQUEST['answer'] : ""; $answer = json_decode( $answer, true ); $val = implode( "\t", $answer ); $cookie_block->add( $val ); } //-- return response $ret["msg"] = array( "cmd" => "thank_you" ); return true; } function hd_clear_block( &$ret ) { $ret["cmd"] = "alert"; if ( $this->poll->attr( "b-reset-block" ) ) { CTClassSys::loadLang('ajax.block',$lng); $msg_ip_block_reset = $lng[ 'msg:ip-block-reset' ]; $msg_ip_block_not_reset = $lng[ 'msg:ip-block-not-reset' ]; $msg_cookie_block_reset = $lng[ 'msg:cookie-block-reset' ]; $msg_cookie_block_not_reset = $lng[ 'msg:cookie-block-not-reset' ]; //-- IP Block $path = $this->getIPBlockFilePath(); if ( !$this->checkDataFilePerm( $path ) ) return false; $ipblock = new CIPBlock(); $ipblock->setup( $path ); if ( $ipblock->clear() ) { echo $msg_ip_block_reset . "\r\n"; } else { echo $msg_ip_block_not_reset . "\r\n"; } //-- Cookie Block $cookie_name = $this->getCookieBlockName(); $cookie_block = new CCookieBlock(); $cookie_block->setup( $cookie_name, $this->poll->attr( "cookie-block-period" ) ); if ( $cookie_block->clear() ) { echo $msg_cookie_block_reset . "\r\n"; } else { echo $msg_cookie_block_not_reset . "\r\n"; } } else { echo "Unauthorized Access\r\n"; } return true; } } ?>