移动网站后:意外(T_VARIABLE),期待功能(T_FUNCTION)

时间:2014-02-10 13:10:41

标签: wordpress plugins

将网站移动到其他服务器后,我在WordPress调试器上收到此消息:

  

解析错误:语法错误,意外的'$ plg'(T_VARIABLE),期待第469行/var/www/pls.de/wp-content/plugins/pls-checklist/pls_checklist.php中的函数(T_FUNCTION)< / p>

第469行就是这一行(它是代码的最后一行):

$plg = new Agile_Checklist();

我想我的新服务器有更新版本的PHP导致此错误,但我该如何解决这个问题?

这是文件:

<?php


if ( !class_exists( 'Agile_Checklist' )){
class Agile_Checklist{

    function __construct() {
        add_action( 'admin_init', array(&$this, 'admin_init') );
        add_action('init', array(&$this, 'fe_init'));
        add_action( 'admin_menu', array(&$this, 'addAdminPage') );
        add_action('admin_enqueue_scripts', array(&$this, 'scripts_method') );
        add_action('wp_enqueue_scripts', array(&$this, 'frontend_scripts') );
        add_action('admin_footer', array(&$this, 'admin_footer'));
        add_shortcode( 'agile_checklist', array(&$this, 'checklist_page') );
        add_shortcode( 'agile_return', array(&$this, 'return_page') );
        add_shortcode( 'agile_cl_overall', array(&$this, 'overall_page') );
        register_activation_hook( __FILE__, array($this, 'install') );
        //register_deactivation_hook( __FILE__, array($this, 'de_activate') );
    }

    function fe_init(){
        ob_start();
    }
    function admin_init(){
        /* Register our stylesheet. */
        wp_register_style( 'checklist_admin_style', plugins_url('css/admin.css', __FILE__) );
        if (!session_id()) {
            session_start();
        }
        ob_start(); //holds output till full page is loaded
    }
    function addAdminPage() {
        add_menu_page('Checklist', 'Checklist', 'manage_options', 'agile_checklist', array(&$this, 'view_lists') );
        add_submenu_page('', 'Edit Checklist', 'Edit Checklist', 'manage_options', 'agile_edit_checklist', array(&$this, 'edit_list'));
    }
    function scripts_method(){
        wp_enqueue_script('jquery');
        wp_enqueue_script('checklist_admin', plugins_url('js/admin.js', __FILE__) );
        wp_enqueue_style('checklist_admin_style');
    }
    function frontend_scripts(){
        wp_enqueue_script('jquery');
        wp_enqueue_script('stc-front',
            plugins_url('js/front.js', __FILE__)
        );
        wp_enqueue_style( 'checklist_front_style', plugins_url('css/front.css', __FILE__) );
    }
    function admin_footer() {

    }
    function view_lists(){
        if(isset($_POST['submit'])){
            if($_POST['submit']=='Del'){
                $this->del_checklist($_POST['list_name']);
                $msg="Checklist Deleted";
            }
            if($_POST['submit']=='Add'){
                $name=$_POST['list_name'];
                if($this->checklist_exists($name)){
                    $msg="Checklist already exists";
                }else{
                    wp_redirect( admin_url()."admin.php?page=agile_edit_checklist&name={$name}");
                    exit;
                }
            }
        }
        ?>
            <div><h1>Manage Checklists</h1></div>
            <div id="msg"><?php echo $msg;?></div>
            <div id="div_add_new"><button id="btn_add_new" type="button" name="" value="" class="button-primary">Add New</button></div>
            <div id="add_new">
                <form name="frm_add_new" method="post" action="">
                    <label for="list_name">List Name</label>
                    <input type="text" name="list_name" id="list_name">
                    <input  type="submit" name="submit" value="Add" class="button-primary">
                </form>
            </div>
            <div id="cl_row">
                <div class="cl_list_name"><h3>Checklist Name</h3></div>
                <div class="cl_list_questions"><h3>Questions</h3></div>
            </div>
        <?php
            $rs = $this->get_checklists();
            if($rs){
                    foreach($rs as $r){
        ?>
                    <div class="cl_row">
                        <form name="cl_list" method="post" action="">
                            <div class="cl_list_name"><a href="<?php echo admin_url()."admin.php?page=agile_edit_checklist&name={$r->name}";?>"><?php echo $r->name?></a></div>
                            <div class="cl_list_questions"><?php echo $r->questions;?></div>
                            <input type="hidden" name="list_name" value="<?php echo $r->name?>">
                            <div class="edit_del"><input type="submit" name="submit" value="Del" class="button-primary" onClick="return confirm('Are you sure to delete checklist?');"> </div>
                        </form>
                    </div>  
        <?
                    } //foreach ends
            } //if rs ends
    }
    function edit_list(){
        if(isset($_POST['submit'])){
            if($_POST['submit']=='Del'){
                $this->del_question($_POST['edit_id']);
                $msg="Question Deleted";
            }
            if($_POST['submit']=='Add'){
                if($this->question_exists($_POST['edit_question'])){
                    $msg="Question already exists";
                }else{
                    $this->save_question($_POST);
                    $msg="Question Saved";
                }
            }
            if($_POST['submit']=='Save'){
                $this->update_question($_POST);
                $msg="Question updated";
            }
        }
        $name=$_GET['name'];
        if(empty($name)) return;
        $new = isset($_GET['new']);
        if($new){
            if($this->checklist_exists($name)){
                echo "{$name} already exists, Select a different name";
                return;
            }
        }
        ?>
        <div><h1>Edit Checklist <?php echo $name;?></h1></div>
        <div id="msg"><?php echo $msg;?></div>
        <div id="div_add_new"><button id="btn_add_new" type="button" name="" value="" class="button-primary">Add New</button></div>
            <div id="add_new">
                <form name="frm_add_new" method="post" action="">
                    <label for="edit_question">Question</label>
                    <input id="btn_add_new_question" type="text" name="edit_question" size="60">
                    <label for="edit_marks">Marks</label>
                    <input id="btn_add_new_marks" type="text" name="edit_marks" size="4">
                    <input type="hidden" name="edit_name" value="<?php echo $name?>">
                    <input id="btn_add_new_submit" type="submit" name="submit" value="Add" class="button-primary">
                </form>
            </div>
            <div class="edit_row">
                <div class="edit_question"><h3>Question</h3> </div>
                <div class="edit_marks"><h3>Marks</h3> </div>
            </div>

        <?php
            $rs = $this->get_questions($name);
            foreach($rs as $r){
        ?>
            <form name="frm_add_new" method="post" action="">
            <div class="edit_row">
                <div class="edit_question"><input type="text" name="edit_question" size="60" value="<?php echo $r->question;?>"> </div>
                <div class="edit_marks"><input type="text" name="edit_marks" size="4" value="<?php echo $r->marks;?>"> </div>
                <input type="hidden" name="edit_id" value="<?php echo $r->id?>">
                <div class="edit_del"><input type="submit" name="submit" value="Del" class="button-primary" onClick="return confirm('Are you sure to delete question?');"> </div>
                <div class="edit_save"><input type="submit" name="submit" value="Save" class="button-primary"></div>
            </div>
            </form>
        <?php
            } //foreach ends
    }
    function overall_page($atts, $content = null ){
        wp_enqueue_style('agile_cl_checklist_fe', plugins_url('css/front.css', __FILE__));

        //get current user info
        global $current_user;
        get_currentuserinfo();
        $userid = $current_user->ID;

        $overall = $this->get_overall_percent($userid);
        $ret = '
                <progress class="bar" max="100" value="'.$overall.'">
                  <strong>HTML5 not supported on this browser</strong>
                </progress>
                ';
        return $ret;
    }
    function return_page($atts, $content = null ){
        wp_enqueue_style('agile_cl_checklist_fe', plugins_url('css/front.css', __FILE__));
        extract( shortcode_atts( array(
          'url' => site_url(),
          'score' => 0,
          ), $atts ) 
        );

        //get current user info
        global $current_user;
        get_currentuserinfo();
        $userid = $current_user->ID;

        $overall = $this->get_overall_percent($userid);
        if($overall < $score){
            wp_redirect($url);
            exit; 
        }
    }
    function checklist_page($atts, $content = null ){
        wp_enqueue_style('agile_cl_checklist_fe', plugins_url('css/front.css', __FILE__));
        extract( shortcode_atts( array(
          'name' => "test",
          ), $atts ) 
        );

        //get current user info
        global $current_user;
        get_currentuserinfo();
        $userid = $current_user->ID;

        //handle post
        if(isset($_POST['submit'])){
            $aids = $_POST['aid'];
            $mks = $_POST['marksobtained'];
            $n=0;

            foreach($aids as $aid){
                $this->update_aid($aid,$mks[$n]);
                $n++;
            }
        }

        //setup answers
        $this->setup_answers($name,$userid);

        $rs = $this->get_question_answers($name,$userid);
        if($rs){
                $per = $this->get_checklist_percent($name,$userid);
                $overall = $this->get_overall_percent($userid);
                $tot = $this->get_checklist_total($name);

                $op='
                <form name="frm_checklist" method="post" action="">
                    <div id="checklist_wrap">
                        <div class="cl_fe_row"><div class="bar_title">Fortschritt:</div>
                            <progress id="pbar" class="bar" max="100" value="'.$per.'">
                              <strong>HTML5 not supported on this browser</strong>
                            </progress>
                        </div>
                        <input id="tot" type="hidden" name="tot" value="'.$tot.'">
                ';
                        foreach($rs as $r){
                        if($r->marksobtained == 0){
                            $icon='no.jpg';
                        }else{
                            $icon='yes.jpg';
                        }   
                $op .='
                            <div class="cl_fe_row">
                                <div class="cl_icon"><img class="cl_img" id="img_'.$r->aid.'" src="'. plugins_url('img/', __FILE__).$icon.'"  height="32" width="32">  </div>
                                <div class="cl_question">'.$r->question.'</div>
                                <input id="mko_'.$r->aid.'" type="hidden" name="marksobtained[]" value="'.$r->marksobtained.'">
                                <input id="mkt_'.$r->aid.'"type="hidden" name="marks[]" value="'. $r->marks.'">
                                <input type="hidden" name="aid[]" value="'.$r->aid.'">
                            </div>
                    ';//op2
                        } //foreach ends
                $op .='
                        <div class="cl_fe_row"><input type="submit" name="submit" value="Speichern" class="css3button"></div>

                    </div>
                </form>
                '; //op3
        } //if rs ends
        return $op;
    }
    function install(){
        global $wpdb;
        require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
        $sql="
            CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."agile_checklist_answers` (
              `id` int(11) NOT NULL AUTO_INCREMENT,
              `userid` int(11) NOT NULL,
              `listname` varchar(30) NOT NULL,
              `qid` int(11) NOT NULL,
              `marksobtained` int(11) NOT NULL,
              PRIMARY KEY (`id`)
            ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
            ";
        dbDelta($sql);
        $sql="
            CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."agile_checklist_questions` (
              `id` int(11) NOT NULL AUTO_INCREMENT,
              `name` varchar(30) NOT NULL,
              `question` varchar(255) NOT NULL,
              `marks` int(11) NOT NULL,
              PRIMARY KEY (`id`)
            ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
            ";
        dbDelta($sql);
        /*
        $sql="
            CREATE TABLE IF NOT EXISTS `".$wpdb->prefix."agile_checklist_totals` (
              `id` int(11) NOT NULL AUTO_INCREMENT,
              `userid` int(11) NOT NULL,
              `listname` varchar(30) NOT NULL,
              `total` int(11) NOT NULL,
              PRIMARY KEY (`id`)
            ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
            ";
        dbDelta($sql);
        */
    }
    function setup_answers($name,$userid){
        global $wpdb;

        $name=strtolower($name);
        $sql="Select * from {$wpdb->prefix}agile_checklist_answers where listname='{$name}' and userid={$userid}";
        $rsa = $wpdb->get_results($sql);
        $rsq = $this->get_questions($name);
        if(count($rsa) == count($rsq)) return;

        $sql = "delete from {$wpdb->prefix}agile_checklist_answers where listname='{$name}' and userid={$userid}";
        $wpdb->query($sql); //delete any un sync answers

        foreach($rsq as $r){
            $sql = "insert into {$wpdb->prefix}agile_checklist_answers (userid,listname,qid,marksobtained) values({$userid},'{$name}',{$r->id},0)";
            $wpdb->query($sql);
        }
    }
    function get_questions($name){
        global $wpdb;

        $name=strtolower($name);
        $sql="Select * from {$wpdb->prefix}agile_checklist_questions where name='{$name}'";
        $rs = $wpdb->get_results($sql);
        return $rs;
    }
    function update_aid($aid,$marksobtained){
        global $wpdb;

        $sql="update {$wpdb->prefix}agile_checklist_answers set marksobtained={$marksobtained} where id='{$aid}'";
        $wpdb->query($sql);
    }
    function del_question($id){
        global $wpdb;

        $sql="Delete from {$wpdb->prefix}agile_checklist_questions where id='{$id}'";
        $wpdb->query($sql);
    }
    function del_checklist($name){
        global $wpdb;

        $name=strtolower($name);
        $sql="Delete from {$wpdb->prefix}agile_checklist_questions where name='{$name}'";
        $wpdb->query($sql);
    }
    function save_question($p){
        global $wpdb;

        $name=strtolower($p['edit_name']);
        $question=$p['edit_question'];
        $marks=$p['edit_marks'];
        $sql="Insert into {$wpdb->prefix}agile_checklist_questions (name,question,marks) values('{$name}','{$question}',{$marks})";
        $wpdb->query($sql);
    }
    function update_question($p){
        global $wpdb;

        $id=$p['edit_id'];
        $question=$p['edit_question'];
        $marks=$p['edit_marks'];
        $sql="update {$wpdb->prefix}agile_checklist_questions set question='{$question}', marks={$marks} where id={$id}";
        $wpdb->query($sql);
    }
    function question_exists($q){
        global $wpdb;

        $sql="Select * from {$wpdb->prefix}agile_checklist_questions where question='{$q}'";
        $rs = $wpdb->get_results($sql);
        if($rs) return true;
        return false;
    }

    function get_checklists(){
        global $wpdb;

        $sql="Select name, count(question) as questions from {$wpdb->prefix}agile_checklist_questions GROUP BY name order by name";
        $rs = $wpdb->get_results($sql);
        return $rs;
    }
    function get_checklist($name){
        global $wpdb;

        $name=strtolower($name);
        $sql="Select * from {$wpdb->prefix}agile_checklist_questions where name='{$name}'";
        $rs = $wpdb->get_results($sql);
        return $rs;
    }
    function get_question_answers($name,$userid){
        global $wpdb;

        $name=strtolower($name);
        $sql="
            SELECT q . * , a.id AS aid, a.marksobtained
            FROM {$wpdb->prefix}agile_checklist_questions AS q, {$wpdb->prefix}agile_checklist_answers AS a
            WHERE q.id = a.qid
            AND q.name = '{$name}'
            AND a.userid ={$userid}
            ";
        $rs = $wpdb->get_results($sql);
        return $rs;
    }
    function get_checklist_total($name){
        global $wpdb;

        $name=strtolower($name);
        $sql="
                SELECT (
                sum( marks )
                ) AS p
                FROM {$wpdb->prefix}agile_checklist_questions where name = '{$name}'
            ";
        $rs = $wpdb->get_var($sql);
        return $rs;
    }
    function get_checklist_percent($name,$userid){
        global $wpdb;

        $name=strtolower($name);
        $sql="
                SELECT (
                sum( a.marksobtained ) / sum( marks ) *100
                ) AS p
                FROM {$wpdb->prefix}agile_checklist_questions AS q, {$wpdb->prefix}agile_checklist_answers AS a
                WHERE q.id = a.qid
                AND q.name = '{$name}'
                AND a.userid ={$userid}
            ";
        $rs = $wpdb->get_var($sql);
        return $rs;
    }
    function get_overall_percent($userid){
        global $wpdb;

        $name=strtolower($name);
        $sql="
                SELECT (
                sum( marksobtained )
                ) AS p
                FROM {$wpdb->prefix}agile_checklist_answers AS a
                WHERE userid ={$userid}
            ";
        $mo = $wpdb->get_var($sql);
        $sql= "Select sum(marks) from {$wpdb->prefix}agile_checklist_questions";
        $mt = $wpdb->get_var($sql);

        return ($mo/$mt *100);
    }
    function checklist_exists($name){
        global $wpdb;

        $name=strtolower($name);
        $sql="Select * from {$wpdb->prefix}agile_checklist_questions where 
name='{$name}'";
        $rs = $wpdb->get_results($sql);
        if($rs) return true;
        return false;
    }


} //class ends
} //class exists ends
$plg = new Agile_Checklist();
?>

3 个答案:

答案 0 :(得分:1)

您正在使用php短标记<?可能在此新服务器中不可用 所以尝试将其更改为长标签<?php,看看会发生什么 或者,如果您有权访问您的服务器,请打开php.ini中的短标签 重置apache和presto !!看看会发生什么。

答案 1 :(得分:0)

尝试在您的条件中声明上面的类或尝试在单独的文件中创建新实例$plg = new Agile_Checklist();

require ('AgileChecklist.php'); $plg = new Agile_Checklist();

答案 2 :(得分:0)

谢谢你的窍门! 我已经看到他们迟到所以我降级到php 5.3,现在它也可以工作。

谢谢你,稍后会在测试服务器上尝试这个,也许再次升级php。