814 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			814 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * This is the administration panel for the plugin Flatpress Comment Center.
 | |
|  */
 | |
| 
 | |
| if(!class_exists('plugin_commentcenter')) {
 | |
| 	die('Don\'t try to hack us.');
 | |
| }
 | |
| 
 | |
| class admin_entry_commentcenter extends AdminPanelAction {
 | |
| 
 | |
| 	# The language files
 | |
| 	var $langres='plugin:commentcenter';
 | |
| 	# The commands
 | |
| 	var $commands=array('configure', 'polup', 'poldown', 'poledit', 'poldelete', 'approve_list',
 | |
| 		'publishcomm', 'pubnoham', 'deletecomm', 'manage', 'deletecomm2', 'commspam');
 | |
| 	# The submits
 | |
| 	var $events=array('configure', 'edit_policy', 'delok', 'cancel', 'multidel', 'mpubcomm', 'mdelcomm',
 | |
| 		'commdelok', 'ccancel', 'entry_search', 'mdelcomm_2', 'commdelok_2', 'ccancel_2');
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is used as a callback when the panel is loaded.
 | |
| 	 * It indicates the Smarty template and it saves by reference the
 | |
| 	 * main class of the plugin Comment Center.
 | |
| 	 */
 | |
| 	function setup() {
 | |
| 		global $lang;
 | |
| 		$this->plugin=&$GLOBALS['plugin_commentcenter'];
 | |
| 		$smarty=&$this->smarty;
 | |
| 
 | |
| 		# The default TPL
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/policies');
 | |
| 		$smarty->assign('plugin_url', plugin_geturl('commentcenter'));
 | |
| 
 | |
| 		$smarty->register_modifier('idToSubject', array(&$this, '_idToTitle'));
 | |
| 		add_filter('wp_title', array(&$this, '_title'), 15, 2);
 | |
| 		add_action('wp_head', array(&$this, '_head'), 10);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the hook system.
 | |
| 	 * It sets the title.
 | |
| 	 *
 | |
| 	 * @param string $val: The current title
 | |
| 	 * @param string $sep: The separator
 | |
| 	 * @return string: The title
 | |
| 	 */
 | |
| 	function _title($val, $sep)  {
 | |
| 		return "{$val} {$sep} Comment Center";
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the hook system.
 | |
| 	 * It adds the javascript of the plugin.
 | |
| 	 */
 | |
| 	function _head()  {
 | |
| 		if(!function_exists('plugin_jquery_head')) {
 | |
| 			return;
 | |
| 		}
 | |
| 		$src1=plugin_geturl('commentcenter').'res/ajax.js';
 | |
| 		$src2=BLOG_BASEURL.'admin.php?jslang=commentcenter';
 | |
| 		echo '<script type="text/javascript" src="'.$src1."\"></script>\n";
 | |
| 		echo '<script type="text/javascript" src="'.$src2."\"></script>\n";
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function return the entry title from the id.
 | |
| 	 * It's made to be called from Smarty.
 | |
| 	 *
 | |
|  	 * @param string $id: The entry id
 | |
| 	 * @return string: The output
 | |
| 	 */
 | |
| 	function _idToTitle($id) {
 | |
| 		$o=new FPDB_Query(array('start'=>0, 'count'=>1, 'fullparse'=>false, 'id'=>$id), null);
 | |
| 		if(!$o->hasMore()) {
 | |
| 			return false;
 | |
| 		}
 | |
| 		$arr=$o->getEntry();
 | |
| 		return wp_specialchars($arr[1]['subject']);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is an advanced redirect option.
 | |
| 	 *
 | |
| 	 * @param string $cmd: The command
 | |
| 	 * @param mixed $cmdval: The value for the command
 | |
| 	 * @param boolean $nosuccess: Don't save the success?
 | |
| 	 */
 | |
| 	function _redirect($cmd, $cmdval=1, $nosuccess=false) {
 | |
| 		global $panel;
 | |
| 		$smarty=&$this->smarty;
 | |
| 		sess_add("success_{$panel}", $smarty->get_template_vars('success'));
 | |
| 
 | |
| 		$action_url=$smarty->get_template_vars('action_url');
 | |
| 		$url=admin_filter_command($action_url, $cmd, $cmdval);
 | |
| 		$url=html_entity_decode($url);
 | |
| 		$url=substr($url, strlen(BLOG_BASEURL));
 | |
| 		utils_redirect($url);
 | |
| 		die;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the main function of the panel.
 | |
| 	 */
 | |
| 	function main() {
 | |
| 		$smarty=&$this->smarty;
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$plugin->loadPolicies();
 | |
| 		$smarty->assign('policies', $plugin->policies);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the callback for the configure command.
 | |
| 	 */
 | |
| 	function doconfigure() {
 | |
| 		global $lang;
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$conf=$plugin->getConf();
 | |
| 
 | |
| 		$smarty=&$this->smarty;
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/configure');
 | |
| 		$smarty->assign('pl_conf', $conf);
 | |
| 
 | |
| 		$conf=$plugin->getConf();
 | |
| 		if($conf['akismet_check']) {
 | |
| 			$akismet=$plugin->akismetLoad();
 | |
| 			if(is_numeric($akismet)) {
 | |
| 				$error=$lang['admin']['entry']['commentcenter']['akismet_errors'][$akismet];
 | |
| 				$smarty->assign('warnings', $error);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This callback is used when the configuration is saved.
 | |
| 	 */
 | |
| 	function onconfigure() {
 | |
| 		if(!empty($_POST['akismet_url'])) {
 | |
| 			$pos=strpos($_POST['akismet_url'], '//');
 | |
| 			if($pos===FALSE || $pos>8) {
 | |
| 				$_POST['akismet_url']='http://'.$_POST['akismet_url'];
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		$save=array('log_all'=>isset($_POST['log_all']), 
 | |
| 			'email_alert'=>isset($_POST['email_alert']),
 | |
| 			'akismet_check'=>isset($_POST['akismet_check']),
 | |
| 			'akismet_key'=>$_POST['akismet_key'],
 | |
| 			'akismet_url'=>$_POST['akismet_url']);
 | |
| 		// It doesn't make very sense: I could just use array_merge but...
 | |
| 		foreach($save as $key=>$value) {
 | |
| 			plugin_addoption('commentcenter', $key, $value);
 | |
| 		}
 | |
| 
 | |
| 		$success=plugin_saveoptions() ? 1 : -1;
 | |
| 		$this->smarty->assign('success', $success);
 | |
| 		$this->_redirect('configure');
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * The edit policy/new policy action callback.
 | |
| 	 *
 | |
| 	 * @param integer $id: The policy id. -1 means a new one
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function dopoledit($id) {
 | |
| 		global $lang;
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$smarty=&$this->smarty;
 | |
| 		$plang=&$lang['admin']['entry']['commentcenter'];
 | |
| 
 | |
| 		$plugin->loadPolicies();
 | |
| 		$smarty->assign('policy', array());
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/editpol');
 | |
| 		$smarty->assign('pol_id', $id);
 | |
| 
 | |
| 		if($id!=-1 && isset($plugin->policies[$id])) {
 | |
| 			$smarty->assign('policy', $plugin->policies[$id]);
 | |
| 		} elseif($id!=-1) {
 | |
| 			# Inexistent policy
 | |
| 			$smarty->assign('errors', $plang['errors']['pol_nonex']);
 | |
| 		} else {
 | |
| 			$smarty->assign('polnew', true);
 | |
| 		}
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * The edit policy/new policy save callback.
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function onedit_policy() {
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$success=2;
 | |
| 		$policy=array();
 | |
| 		@$id=$_POST['policy_id'];
 | |
| 
 | |
| 		$plugin->loadPolicies();
 | |
| 		if($id!=-1 && !isset($plugin->policies[$id])) {
 | |
| 			$success=-2;
 | |
| 		}
 | |
| 
 | |
| 		while(true && $success==2) {
 | |
| 			if(empty($_POST['apply_to'])) {
 | |
| 				$success=-2;
 | |
| 				break;
 | |
| 			}
 | |
| 			if(!isset($_POST['behavoir'])) {
 | |
| 				$success=-2;
 | |
| 				break;
 | |
| 			}
 | |
| 
 | |
| 			$behavoir=$_POST['behavoir'];
 | |
| 			if($behavoir!=1 && $behavoir!=0 && $behavoir!=-1) {
 | |
| 				$success=-2;
 | |
| 				break;
 | |
| 			}
 | |
| 			$policy['do']=$behavoir;
 | |
| 
 | |
| 			switch($_POST['apply_to']) {
 | |
| 				case 'all_entries':
 | |
| 					$policy['is_all']=true;
 | |
| 					break 2;
 | |
| 				case 'some_entries':
 | |
| 					if(empty($_POST['entries'])) {
 | |
| 						$success=-2;
 | |
| 					} else {
 | |
| 						$entries=array();
 | |
| 						foreach($_POST['entries'] as $entry) {
 | |
| 							if(entry_exists($entry)) {
 | |
| 								$entries[]=$entry;
 | |
| 							}
 | |
| 						}
 | |
| 						if(count($entries)==0) {
 | |
| 							$success=-2;
 | |
| 						} else {
 | |
| 							$entries=array_unique($entries);
 | |
| 							$policy['entry']=$entries;
 | |
| 						}
 | |
| 					}
 | |
| 					break 2;
 | |
| 				case 'properties':
 | |
| 					$policy['is_all']=true;
 | |
| 					if(isset($_POST['cats'])) {
 | |
| 						$policy['categories']=array_keys($_POST['cats']);
 | |
| 						$policy['is_all']=false;
 | |
| 					}
 | |
| 					if(is_numeric($_POST['older'])) {
 | |
| 						# Save in seconds
 | |
| 						$policy['older']=$_POST['older']*86400;
 | |
| 						$policy['is_all']=false;
 | |
| 					}
 | |
| 					if(isset($policy['is_all']) && @!$policy['is_all']) {
 | |
| 						unset($policy['is_all']);
 | |
| 					}
 | |
| 					break 2;
 | |
| 				default:
 | |
| 					$success=-2;
 | |
| 					break 2;
 | |
| 			}
 | |
| 			break;
 | |
| 		}
 | |
| 
 | |
| 		if($success==2) {
 | |
| 			if($id==-1) {
 | |
| 				$plugin->policies[]=$policy;
 | |
| 			} else {
 | |
| 				$plugin->policies[$id]=$policy;
 | |
| 			}
 | |
| 			$success=$plugin->savePolicies() ? 2 : -2;
 | |
| 		}
 | |
| 
 | |
| 		$this->smarty->assign('success', $success);
 | |
| 		return 2;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the poldelete action.
 | |
| 	 *
 | |
| 	 * @param integer $id: The id of policy you wish to delete
 | |
| 	 * @return integer: Redirect option
 | |
| 	 */
 | |
| 	function dopoldelete($id) {
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$smarty=&$this->smarty;
 | |
| 
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/deletepol');
 | |
| 		$plugin->loadPolicies();
 | |
| 
 | |
| 		if(isset($plugin->policies[$id])) {
 | |
| 			$smarty->assign('policies', array($id=>$plugin->policies[$id]));
 | |
| 		}
 | |
| 		$smarty->assign('single', true);
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is like dopoldelete but it's for multiple policies.
 | |
| 	 *
 | |
| 	 * @return integer: Redirect option
 | |
| 	 */
 | |
| 	function onmultidel() {
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$smarty=&$this->smarty;
 | |
| 
 | |
| 		if(@!count($_POST['select'])) {
 | |
| 			$smarty->assign('success', -4);
 | |
| 			return 2;
 | |
| 		}
 | |
| 
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/deletepol');
 | |
| 		$plugin->loadPolicies();
 | |
| 		$policies=array();
 | |
| 
 | |
| 		foreach($_POST['select'] as $polid=>$checkvalue) {
 | |
| 			if(isset($plugin->policies[$polid])) {
 | |
| 				$policies[$polid]=$plugin->policies[$polid];
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		if(count($policies)>0) {
 | |
| 			$smarty->assign('policies', $policies);
 | |
| 		} else {
 | |
| 			$smarty->assign('success', -4);
 | |
| 			return 2;
 | |
| 		}
 | |
| 
 | |
| 		if(count($policies)==1) {
 | |
| 			$smarty->assign('single', true);
 | |
| 		}
 | |
| 
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the delete ok command.
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function ondelok() {
 | |
| 		if(empty($_POST['del_policy'])) {
 | |
| 			$s=-4;
 | |
| 		} else {
 | |
| 			$plugin=$this->plugin;
 | |
| 			$plugin->loadPolicies();
 | |
| 			foreach($_POST['del_policy'] as $polid) {
 | |
| 				if(isset($plugin->policies[$polid])) {
 | |
| 					unset($plugin->policies[$polid]);
 | |
| 				}
 | |
| 			}
 | |
| 			$s=$plugin->savePolicies() ? 4 : -4;
 | |
| 		}
 | |
| 		$this->smarty->assign('success', $s);
 | |
| 		return 2;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the cancel callback. It just makes the redirect.
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function oncancel() {
 | |
| 		return 2;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the polup action.
 | |
| 	 *
 | |
| 	 * @param integer $id: The id of policy you wish to delete
 | |
| 	 * @return integer: Redirect option
 | |
| 	 */
 | |
| 	function dopolup($id) {
 | |
| 		$s=-3;
 | |
| 
 | |
| 		if($id>0) {
 | |
| 			$plugin=&$this->plugin;
 | |
| 			$plugin->loadPolicies();
 | |
| 			$plugin->policyMove($id, $id-1);
 | |
| 			$s=$plugin->savePolicies() ? 3 : -3;
 | |
| 		}
 | |
| 
 | |
| 		$this->smarty->assign('success', $s);
 | |
| 		return 2;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the poldown action.
 | |
| 	 *
 | |
| 	 * @param integer $id: The id of policy you wish to delete
 | |
| 	 * @return integer: Redirect option
 | |
| 	 */
 | |
| 	function dopoldown($id) {
 | |
| 		$s=-3;
 | |
| 
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$plugin->loadPolicies();
 | |
| 
 | |
| 		if($id<count($plugin->policies)-1) {
 | |
| 			$plugin->policyMove($id, $id+1);
 | |
| 			$s=$plugin->savePolicies() ? 3 : -3;
 | |
| 		}
 | |
| 
 | |
| 		$this->smarty->assign('success', $s);
 | |
| 		return 2;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the approve_list command
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function doapprove_list() {
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$smarty=&$this->smarty;
 | |
| 
 | |
| 		$conf=$plugin->getConf();
 | |
| 		$smarty->assign('use_akismet', @$conf['akismet_check']);
 | |
| 		$smarty->assign('other', @$conf['log_all']);
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/approvelist');
 | |
| 
 | |
| 		$lister=new commentcenter_list($plugin->pl_dir);
 | |
| 		$smarty->assign('entries', $lister->toDetails());
 | |
| 
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the publishcomm command
 | |
| 	 *
 | |
| 	 * @param string $id: The comment id
 | |
| 	 * @param boolean $noredirect: If true, don't redirect
 | |
| 	 * @param boolean $noham: If it was blocked from Akismet, don't submit as ham
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function dopublishcomm($id, $noredirect=false, $noham=false) {
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$smarty=&$this->smarty;
 | |
| 		$f=$plugin->pl_dir.$id.'.txt';
 | |
| 
 | |
| 		if(!file_exists($f)) {
 | |
| 			$smarty->assign('success', -5);
 | |
| 			$succ=-5;
 | |
| 		} else {
 | |
| 
 | |
| 			include $f;
 | |
| 
 | |
| 			$entry=substr($id, 1, 18);
 | |
| 			$ham=false;
 | |
| 
 | |
| 			if(isset($comment['log_reason'])) {
 | |
| 				$ham=$comment['log_reason']=='akismet' && !$noham;
 | |
| 				unset($comment['log_reason']);
 | |
| 			}
 | |
| 			if(isset($comment['id'])) {
 | |
| 				unset($comment['id']);
 | |
| 			}
 | |
| 
 | |
| 			if($ham) {
 | |
| 				$clean=$plugin->akismetClean($comment, $entry);
 | |
| 				$akismet=&$plugin->akismetLoad();
 | |
| 				if(is_object($akismet)) {
 | |
| 					$akismet->setComment($clean);
 | |
| 					$akismet->submitHam();
 | |
| 				}
 | |
| 			}
 | |
| 
 | |
| 			$id=comment_save($entry, $comment);
 | |
| 			do_action('comment_post', $entry, array($id, $comment));
 | |
| 			$succ=$id ? 5 : -5;
 | |
| 			$smarty->assign('success', $succ);
 | |
| 
 | |
| 			if($succ==5) {
 | |
| 				@unlink($f);
 | |
| 			}
 | |
| 
 | |
| 		}
 | |
| 
 | |
| 		if($noredirect) {
 | |
| 			return $succ==5;
 | |
| 		}
 | |
| 
 | |
| 		$this->_redirect('approve_list');
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the callback for the action pubnoham.
 | |
| 	 *
 | |
| 	 * @param string $id: The comment id
 | |
| 	 * @return integer: The redirect option.
 | |
| 	 */
 | |
| 	function dopubnoham($id) {
 | |
| 		return $this->dopublishcomm($id, false, true);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the callback to publish multiple comments.
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function onmpubcomm() {
 | |
| 		if(!isset($_POST['select'])) {
 | |
| 			$this->dopublishcomm('fake');
 | |
| 		}
 | |
| 
 | |
| 		$target=count($_POST['select']);
 | |
| 		$noham=!isset($_POST['submitham']);
 | |
| 		$i=0;
 | |
| 
 | |
| 		foreach((array)$_POST['select'] as $comm=>$check) {
 | |
| 			$i++;
 | |
| 			$this->dopublishcomm($comm, $i!=$target, $noham);
 | |
| 		}
 | |
| 
 | |
| 		// If it's correct, we should exited the script before
 | |
| 		$this->smarty->assign('success', -5);
 | |
| 		$this->_redirect('approve_list');
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the deletecomm action.
 | |
| 	 *
 | |
| 	 * @param integer $id: The id of the comment you wish to delete
 | |
| 	 * @return integer: Redirect option
 | |
| 	 */
 | |
| 	function dodeletecomm($id) {
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$smarty=&$this->smarty;
 | |
| 
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/deletecomm');
 | |
| 
 | |
| 		$entry=substr($id, 1, 18);
 | |
| 		$commid=substr($id, 21, 20);
 | |
| 
 | |
| 		$f=$plugin->pl_dir.$id.'.txt';
 | |
| 		if(file_exists($f)) {
 | |
| 			include $f;
 | |
| 			$delete[$entry]['del'][$commid]=$comment;
 | |
| 			$smarty->assign('entries', $delete);
 | |
| 		} else {
 | |
| 			$smarty->assign('success', -6);
 | |
| 			$this->_redirect('approve_list');
 | |
| 		}
 | |
| 
 | |
| 		$smarty->assign('single', true);
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is like dopoldelete but it's for multiple policies.
 | |
| 	 *
 | |
| 	 * @return integer: Redirect option
 | |
| 	 */
 | |
| 	function onmdelcomm() {
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$smarty=&$this->smarty;
 | |
| 
 | |
| 		if(@!count($_POST['select'])) {
 | |
| 			$smarty->assign('success', -6);
 | |
| 			$this->_redirect('approve_list');
 | |
| 			return 0;
 | |
| 		}
 | |
| 
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/deletecomm');
 | |
| 		$remove=array();
 | |
| 
 | |
| 		foreach($_POST['select'] as $commbig=>$check) {
 | |
| 			$entry=substr($commbig, 1, 18);
 | |
| 			$commid=substr($commbig, 21, 20);
 | |
| 			$f=$plugin->pl_dir.$commbig.'.txt';
 | |
| 			if(file_exists($f)) {
 | |
| 				include $f;
 | |
| 				$remove[$entry]['del'][$commid]=$comment;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		if(count($remove)>0) {
 | |
| 			$smarty->assign('entries', $remove);
 | |
| 		} else {
 | |
| 			$smarty->assign('success', -6);
 | |
| 			$this->_redirect('approve_list');
 | |
| 			return 0;
 | |
| 		}
 | |
| 
 | |
| 		if(count($remove)==1) {
 | |
| 			$smarty->assign('single', true);
 | |
| 		}
 | |
| 
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the delete ok command.
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function oncommdelok() {
 | |
| 		if(empty($_POST['select'])) {
 | |
| 			$s=-6;
 | |
| 		} else {
 | |
| 			foreach($_POST['select'] as $commid=>$check) {
 | |
| 				$f=$this->plugin->pl_dir.$commid.'.txt';
 | |
| 				@unlink($f);
 | |
| 			}
 | |
| 			$s=6;
 | |
| 		}
 | |
| 		$this->smarty->assign('success', $s);
 | |
| 		$this->_redirect('approve_list');
 | |
| 		return 2;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the cancel callback. It just makes the redirect.
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function onccancel() {
 | |
| 		$this->_redirect('approve_list');
 | |
| 		return 2;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the action "manage".
 | |
| 	 *
 | |
| 	 * @param string $entry: The entry id
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function domanage($entry) {
 | |
| 		global $lang, $fpdb;
 | |
| 		$smarty=&$this->smarty;
 | |
| 
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/manage');
 | |
| 		$smarty->assign('is_managing', true);
 | |
| 
 | |
| 		$conf=$this->plugin->getConf();
 | |
| 		if(@$conf['akismet_check']) {
 | |
| 			$smarty->assign('use_akismet', true);
 | |
| 		}
 | |
| 
 | |
| 		if($entry!='search' && !entry_exists($entry)) {
 | |
| 			$smarty->assign('error', $lang['admin']['entry']['commentcenter']['errors']['entry_nf']);
 | |
| 		} elseif($entry!='search') {
 | |
| 			$smarty->assign('entry_id', $entry);
 | |
| 			$smarty->assign('fetch', 'list');
 | |
| 
 | |
| 			$fpdb->query("id:{$entry},fullparse:true,comments:true");
 | |
| 			$q=&$fpdb->getQuery();
 | |
| 			$q->getEntry();
 | |
| 			$list=array();
 | |
| 			while($q->comments->hasMore()) {
 | |
| 				list($id, $comment)=$q->comments->getComment();
 | |
| 				$list[$entry]['list'][$id]=$comment;
 | |
| 			}
 | |
| 			$smarty->assign('entries', $list);
 | |
| 		}
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Since it's impossible to use a GET form in Flatpress, to search entries
 | |
| 	 * we have to use a POST form, and here's its callback.
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function onentry_search() {
 | |
| 		if(!isset($_POST['entry'])) {
 | |
| 			$_POST['entry']='';
 | |
| 		}
 | |
| 		// In the function we call 'search' isn't an error, but here yes, so delete it
 | |
| 		if($_POST['entry']=='search') {
 | |
| 			$_POST['entry']='';
 | |
| 		}
 | |
| 		return @$this->domanage($_POST['entry']);
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is the callback for the deletecomm2 action.
 | |
| 	 *
 | |
| 	 * @param integer $id: The id of the comment you wish to delete
 | |
| 	 * @return integer: Redirect option
 | |
| 	 */
 | |
| 	function dodeletecomm2($id) {
 | |
| 		$smarty=&$this->smarty;
 | |
| 
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/deletecomm');
 | |
| 		$smarty->assign('is_managing', true);
 | |
| 
 | |
| 		$entry=substr($id, 1, 18);
 | |
| 		$commid=substr($id, 21, 20);
 | |
| 		$smarty->assign('entry', $entry);
 | |
| 
 | |
| 		if(comment_exists($entry, $commid)) {
 | |
| 			$delete[$entry]['del'][$commid]=comment_parse($entry, $commid);
 | |
| 			$smarty->assign('entries', $delete);
 | |
| 		} else {
 | |
| 			$smarty->assign('success', -6);
 | |
| 			$this->_redirect('manage', $entry);
 | |
| 		}
 | |
| 
 | |
| 		$smarty->assign('single', true);
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This function is like dopoldelete but it's for multiple policies.
 | |
| 	 *
 | |
| 	 * @return integer: Redirect option
 | |
| 	 */
 | |
| 	function onmdelcomm_2() {
 | |
| 		$smarty=&$this->smarty;
 | |
| 
 | |
| 		if(@!count($_POST['select'])) {
 | |
| 			$smarty->assign('success', -6);
 | |
| 			$this->_redirect('manage', @$_POST['entry_hid']);
 | |
| 			return 0;
 | |
| 		}
 | |
| 
 | |
| 		$smarty->assign('admin_resource', 'plugin:commentcenter/deletecomm');
 | |
| 		$smarty->assign('is_managing', true);
 | |
| 		$smarty->assign('entry', @$_POST['entry_hid']);
 | |
| 		$remove=array();
 | |
| 
 | |
| 		foreach($_POST['select'] as $commbig=>$check) {
 | |
| 			$entry=substr($commbig, 1, 18);
 | |
| 			$commid=substr($commbig, 21, 20);
 | |
| 			$comment=comment_parse($entry, $commid);
 | |
| 			if($comment!==false) {
 | |
| 				$remove[$entry]['del'][$commid]=$comment;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		if(count($remove)>0) {
 | |
| 			$smarty->assign('entries', $remove);
 | |
| 		} else {
 | |
| 			$smarty->assign('success', -6);
 | |
| 			$this->_redirect('manage', @$_POST['entry_hid']);
 | |
| 			return 0;
 | |
| 		}
 | |
| 
 | |
| 		if(count($remove)==1) {
 | |
| 			$smarty->assign('single', true);
 | |
| 		}
 | |
| 
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the delete ok command.
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function oncommdelok_2() {
 | |
| 		if(empty($_POST['select'])) {
 | |
| 			$s=-6;
 | |
| 		} else {
 | |
| 			$i=0;
 | |
| 			foreach($_POST['select'] as $commid=>$check) {
 | |
| 				$entry=substr($commid, 1, 18);
 | |
| 				$commid=substr($commid, 21, 20);
 | |
| 				$i+=comment_delete($entry, $commid) ? 1 : 0;
 | |
| 			}
 | |
| 			$s=$i>0 ? 6 : -6;
 | |
| 		}
 | |
| 		$this->smarty->assign('success', $s);
 | |
| 		$this->_redirect('manage', @$_POST['entry']);
 | |
| 		return 2;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * This is the cancel callback. It just makes the redirect.
 | |
| 	 *
 | |
| 	 * @return integer: The redirect option
 | |
| 	 */
 | |
| 	function onccancel_2() {
 | |
| 		$this->_redirect('manage', @$_POST['entry']);
 | |
| 		return 2;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
|  	 * This function is the callback for the action commspam.
 | |
|  	 *
 | |
|  	 * @param string $id: The comment id
 | |
|  	 * @return integer: The redirect option
 | |
|  	 */
 | |
| 	function docommspam($id) {
 | |
| 		$smarty=&$this->smarty;
 | |
| 		$plugin=&$this->plugin;
 | |
| 		$entry=substr($id, 1, 18);
 | |
| 		$commid=substr($id, 21, 20);
 | |
| 
 | |
| 		if(!comment_exists($entry, $commid)) {
 | |
| 			$smarty->assign('success', -7);
 | |
| 		} else {
 | |
| 			$comment=comment_parse($entry, $commid);
 | |
| 			$clean=$plugin->akismetClean($comment, $entry);
 | |
| 
 | |
| 			$akismet=&$plugin->akismetLoad();
 | |
| 			if(is_object($akismet)) {
 | |
| 				$akismet->setComment($clean);
 | |
| 				$akismet->submitSpam();
 | |
| 				$smarty->assign('success', $akismet->errorsExist() ? -7 : 7);
 | |
| 			} else {
 | |
| 				$smarty->assign('success', -7);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		$this->_redirect('manage', $entry);
 | |
| 		return 0;
 | |
| 	}
 | |
| 
 | |
| }
 | |
| admin_addpanelaction('entry', 'commentcenter', true); | 
