Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.224.73.107
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/wavevlvu/misswavenigeria.com/wp-content/plugins/totalcontest-lite/src/Log/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/wavevlvu/misswavenigeria.com/wp-content/plugins/totalcontest-lite/src/Log/Repository.php
<?php

namespace TotalContest\Log;

use TotalContest\Contracts\Log\Repository as RepositoryContract;
use TotalContestVendors\TotalCore\Contracts\Foundation\Environment;
use TotalContestVendors\TotalCore\Contracts\Helpers\DateTime;
use TotalContestVendors\TotalCore\Contracts\Http\Request;
use TotalContestVendors\TotalCore\Helpers\Arrays;
use TotalContestVendors\TotalCore\Helpers\Sql;

/**
 * Log repository
 * @package TotalContest\Log
 * @since   1.0.0
 */
class Repository implements RepositoryContract {
	/**
	 * @var Environment $env
	 */
	protected $env;
	/**
	 * @var Request $request
	 */
	protected $request;
	/**
	 * @var \wpdb $database
	 */
	protected $database;

	public function __construct( $env, Request $request, $database ) {
		$this->env      = $env;
		$this->request  = $request;
		$this->database = $database;
	}

	/**
	 * Get log entries.
	 *
	 * @param $query
	 *
	 * @return mixed
	 * @since 1.0.0
	 */
	public function get( $query ) {
		$args = Arrays::parse( $query, [
			'conditions'     => [],
			'page'           => 1,
			'perPage'        => 30,
			'orderBy'        => 'date',
			'orderDirection' => 'DESC',
		] );

		/**
		 * Filters the list of arguments used for get log entries query.
		 *
		 * @param array $args Arguments.
		 * @param array $query Query.
		 *
		 * @return array
		 * @since 2.0.0
		 */
		$args = apply_filters( 'totalcontest/filters/log/get/query', $args, $query );

		// Models
		$logModels = [];
		// Where clause
		$where = Sql::generateWhereClause( $args['conditions'] );
		// Order
		$order = Sql::generateOrderClause( $args['orderBy'], $args['orderDirection'] );
		// Limit clause
		$limit = $args['perPage'] === - 1 ? '' : Sql::generateLimitClause( $args['page'], $args['perPage'] );
		// Finally our fancy SQL query
		$query = "SELECT * FROM `{$this->env['db.tables.log']}` {$where} {$order} {$limit}";

		// Get results
		$logEntries = (array) $this->database->get_results( $query, ARRAY_A );
		// Iterate and convert each row to log model
		foreach ( $logEntries as $logEntry ):
			$logModels[] = new Model( $logEntry );
		endforeach;

		/**
		 * Filters the results of log repository get query.
		 *
		 * @param \TotalContest\Contracts\Log\Model[] $logModels Log entries models.
		 * @param array $args Arguments.
		 * @param array $query Query.
		 *
		 * @return array
		 * @since 2.0.0
		 */
		$logModels = apply_filters( 'totalcontest/filters/log/get/results', $logModels, $args, $query );

		// Return models
		return $logModels;
	}

	/**
	 * Get log entry by id.
	 *
	 * @param $logId
	 *
	 * @return \TotalContest\Contracts\Log\Model|null
	 * @since 1.0.0
	 */
	public function getById( $logId ) {
		$result = $this->get( [ 'conditions' => [ 'id' => (int) $logId ] ] );

		return empty( $result ) ? null : $result[0];
	}

	/**
	 * Count log entries.
	 *
	 * @return mixed
	 * @since 1.0.0
	 */
	public function count( $args ) {
		$args = Arrays::parse( $args, [ 'conditions' => [] ] );

		/**
		 * Filters the list of arguments used for count log entries query.
		 *
		 * @param array $args Arguments.
		 * @param array $query Query.
		 *
		 * @return array
		 * @since 2.0.0
		 */
		$args  = apply_filters( 'totalcontest/filters/log/count/query', $args );
		$joins = '';

		if ( isset( $args['conditions']['category_id'] ) ):
			$args['conditions']['term_taxonomy_id'] = absint( $args['conditions']['category_id'] );
			unset( $args['conditions']['category_id'] );

			$joins = "INNER JOIN `{$this->database->term_relationships}` ON `{$this->env['db.tables.log']}`.`submission_id` = `{$this->database->term_relationships}`.`object_id`";
		endif;
		// Where clause
		$where = Sql::generateWhereClause( $args['conditions'] );
		// Finally our fancy SQL query
		$query = "SELECT COUNT(*) FROM `{$this->env['db.tables.log']}` {$joins} {$where}";

		// Get count
		return (int) $this->database->get_var( $query );
	}

	/**
	 * Create log entry.
	 *
	 * @param $attributes
	 *
	 * @return \TotalContest\Contracts\Log\Model|\WP_Error
	 * @since 1.0.0
	 */
	public function create( $attributes ) {

		$attributes = Arrays::parse( $attributes, [
			'date'      => TotalContest( 'datetime', [ 'now', new \DateTimeZone('UTC') ] ),
			'ip'        => $this->request->ip(),
			'useragent' => $this->request->userAgent(),
			'user_id'   => get_current_user_id(),
			'details'   => [],
		] );

		/**
		 * Filters the attributes of an log entry model used for insertion.
		 *
		 * @param array $attributes Entry attributes.
		 *
		 * @return array
		 * @since 2.0.0
		 */
		$attributes = apply_filters( 'totalcontest/filters/log/insert/attributes', $attributes );

		if ( empty( $attributes['contest_id'] ) || empty( $attributes['submission_id'] ) || empty( $attributes['action'] ) ):
			return new \WP_Error( 'missing_fields', esc_html__( 'contest_id, submission_id and action are required' ) );
		endif;

		$logModelAttributes = [
			'date'          => $attributes['date']->format( 'Y-m-d H:i:s' ),
			'ip'            => (string) $attributes['ip'],
			'useragent'     => (string) $attributes['useragent'],
			'user_id'       => (int) $attributes['user_id'],
			'contest_id'    => (int) $attributes['contest_id'],
			'submission_id' => (int) $attributes['submission_id'],
			'action'        => (string) $attributes['action'],
			'status'        => (string) $attributes['status'],
			'details'       => json_encode( (array) $attributes['details'], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE ),
		];

		$inserted = $this->database->insert( $this->env['db.tables.log'], $logModelAttributes );

		if ( ! $inserted ):
			return new \WP_Error( 'insert_fail', esc_html__( 'Unable to insert the entry.', 'totalcontest' ) );
		endif;


		$logModelAttributes['id'] = $this->database->insert_id;

		/**
		 * Filters the log entry model attributes after insertion.
		 *
		 * @param array $entryModel Log entry attributes.
		 * @param array $attributes Original insertion attributes.
		 *
		 * @return array
		 * @since 2.0.0
		 */
		$logModelAttributes = apply_filters( 'totalcontest/filters/log/insert/model', $logModelAttributes );


		return new Model( $logModelAttributes );
	}

	/**
	 * Delete log entries.
	 *
	 * @param $conditions array
	 *
	 * @return bool|\WP_Error
	 * @since 1.0.0
	 */
	public function delete( $conditions ) {
		$where = Sql::generateWhereClause( $conditions );

		if ( empty( $where ) ):
			return new \WP_Error( 'no_conditions', esc_html__( 'No conditions were specified', 'totalcontest' ) );
		endif;

		$query = "DELETE FROM `{$this->env['db.tables.log']}` {$where}";

		return (bool) $this->database->query( $query );

	}

	/**
	 * Anonymize log entries.
	 *
	 * @param $query
	 *
	 * @return mixed
	 * @since 1.0.0
	 */
	public function anonymize( $query ) {
		$args = Arrays::parse( $query, [
			'conditions' => [],
		] );

		/**
		 * Filters the list of arguments used for anonymize log entries query.
		 *
		 * @param array $args Arguments.
		 * @param array $query Query.
		 *
		 * @return array
		 * @since 2.0.0
		 */
		$args = apply_filters( 'totalcontest/filters/log/anonymize/query', $args, $query );
		// Where clause
		$where = Sql::generateWhereClause( $args['conditions'] );

		if ( empty( $where ) ):
			return new \WP_Error( 'no_conditions', esc_html__( 'No conditions were specified', 'totalcontest' ) );
		endif;

		// Finally our fancy SQL query
		$query = "UPDATE `{$this->env['db.tables.log']}` SET `user_id` = 0, `ip` = '', `useragent` = '', `details` = '{\"anonymized\":true}' {$where}";

		// Get results
		return (bool) $this->database->query( $query );

	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit