Skip to content

Commit

Permalink
Refactoring filters, not finished
Browse files Browse the repository at this point in the history
  • Loading branch information
Canx committed Mar 7, 2017
1 parent a33bbcc commit f3b01e5
Show file tree
Hide file tree
Showing 8 changed files with 182 additions and 35 deletions.
4 changes: 2 additions & 2 deletions classes/filter.php
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ class block_xp_filter implements renderable {
*
* Use {@link self::load_from_data()} instead.
*/
protected function __construct() {}
public function __construct() {}

/**
* Delete the rule.
Expand Down Expand Up @@ -245,7 +245,7 @@ public function save_default() {
$this->insert_or_update('block_xp_default_filters', $record);
}

private function insert_or_update($table, $record) {
protected function insert_or_update($table, $record) {
global $DB;

if (!$this->id) {
Expand Down
10 changes: 10 additions & 0 deletions classes/filter_course.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

defined('MOODLE_INTERNAL') || die();

class block_xp_filter_course extends block_xp_filter {


}

?>
24 changes: 24 additions & 0 deletions classes/filter_default.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php

defined('MOODLE_INTERNAL') || die();

class block_xp_filter_default extends block_xp_filter {

public function load($filter_object) {
$this->ruledata = $filter_object->ruledata;
$this->points = $filter_object->points;
$this->sortorder = $filter_object->sortorder;
}

public function save() {
$record = (object) array(
'ruledata' => $this->ruledata,
'points' => $this->points,
'sortorder' => $this->sortorder,
);

$this->insert_or_update('block_xp_default_filters', $record);
}
}

?>
45 changes: 12 additions & 33 deletions classes/filter_manager.php
Original file line number Diff line number Diff line change
Expand Up @@ -92,36 +92,10 @@ public function get_points_for_event(\core\event\base $event) {
* @return array Of filter objects.
*/
public static function get_static_filters() {
$d = new block_xp_rule_property(block_xp_rule_base::EQ, 'd', 'crud');
$c = new block_xp_rule_property(block_xp_rule_base::EQ, 'c', 'crud');
$r = new block_xp_rule_property(block_xp_rule_base::EQ, 'r', 'crud');
$u = new block_xp_rule_property(block_xp_rule_base::EQ, 'u', 'crud');
$static_filters = new block_xp_filters_static();
$static_filters->load();

// Skip those as they duplicate other more low level actions.
$bcmv = new block_xp_rule_event('\mod_book\event\course_module_viewed');
$dsc = new block_xp_rule_event('\mod_forum\event\discussion_subscription_created');
$sc = new block_xp_rule_event('\mod_forum\event\subscription_created');
$as = new block_xp_rule_property(block_xp_rule_base::CT, 'assessable_submitted', 'eventname');
$au = new block_xp_rule_property(block_xp_rule_base::CT, 'assessable_uploaded', 'eventname');

$list = array();

$ruleset = new block_xp_ruleset(array($bcmv, $dsc, $sc, $as, $au), block_xp_ruleset::ANY);
$data = array('rule' => $ruleset, 'points' => 0, 'editable' => true);
$list[] = block_xp_filter::load_from_data($data);

$data = array('rule' => $c, 'points' => 45, 'editable' => true);
$list[] = block_xp_filter::load_from_data($data);

$data = array('rule' => $r, 'points' => 9, 'editable' => true);
$list[] = block_xp_filter::load_from_data($data);

$data = array('rule' => $u, 'points' => 3, 'editable' => true);
$list[] = block_xp_filter::load_from_data($data);

$data = array('rule' => $d, 'points' => 0, 'editable' => true);
$list[] = block_xp_filter::load_from_data($data);
return $list;
return $static_filters->get();
}

/**
Expand Down Expand Up @@ -156,11 +130,16 @@ public function get_user_filters() {
* @return void
*/
public static function save_default_filters() {
$filters = self::get_static_filters();
$static_filters = new block_xp_filters_static();
$default_filters = new block_xp_filters_default();

foreach($filters as $filter) {
$filter->save_default();
}
$default_filters->import($static_filters);

//$filters = self::get_static_filters();

//foreach($filters as $filter) {
// $filter->save_default();
//}
}

/**
Expand Down
39 changes: 39 additions & 0 deletions classes/filters.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

abstract class block_xp_filters {

protected $filters;

public abstract function create_filter();

public abstract function load();

public function save() {
foreach($this->filters as $filter) {
$filter->save();
}
}

public function import($filters_object) {

if (!method_exists($this, 'create_filter')) {
throw new coding_exception(get_class($this) , " can't import filters");
}

unset($this->filters);

foreach($filters_object->filters as $filter) {
$cloned_filter = $this->create_filter();
$cloned_filter->load($filter);
$this->filters[] = $cloned_filter;
}

$this->save();
}

public function get() {
return $this->filters;
}
}

?>
26 changes: 26 additions & 0 deletions classes/filters_course.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

class block_xp_course_filters extends block_xp_filters {

protected $courseid;

public function __construct($id) {
$this->$courseid = $id;
}
public function load() {
throw new coding_exception('not implemented.');
}

public function save() {
throw new coding_exception('not implemented.');
}

public function create_filter() {
return new block_xp_filter_course($this->courseid);
}



}

?>
14 changes: 14 additions & 0 deletions classes/filters_default.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

class block_xp_filters_default extends block_xp_filters {

public function load() {
throw new coding_exception('not implemented.');
}

public function create_filter() {
return new block_xp_filter_default();
}
}

?>
55 changes: 55 additions & 0 deletions classes/filters_static.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

class block_xp_filters_static extends block_xp_filters {

public function create_filter() {
throw new coding_exception('Static filters cannot be modified.');
}

public function __construct() {
$this->filters = array();
$this->load();
}

public function load() {
if (empty($this->filters)) {
$this->load_set_1();
}
}

public function save() {
throw new \coding_exception("Static filters cannot be saved.");
}

private function load_set_1() {
$d = new block_xp_rule_property(block_xp_rule_base::EQ, 'd', 'crud');
$c = new block_xp_rule_property(block_xp_rule_base::EQ, 'c', 'crud');
$r = new block_xp_rule_property(block_xp_rule_base::EQ, 'r', 'crud');
$u = new block_xp_rule_property(block_xp_rule_base::EQ, 'u', 'crud');

// Skip those as they duplicate other more low level actions.
$bcmv = new block_xp_rule_event('\mod_book\event\course_module_viewed');
$dsc = new block_xp_rule_event('\mod_forum\event\discussion_subscription_created');
$sc = new block_xp_rule_event('\mod_forum\event\subscription_created');
$as = new block_xp_rule_property(block_xp_rule_base::CT, 'assessable_submitted', 'eventname');
$au = new block_xp_rule_property(block_xp_rule_base::CT, 'assessable_uploaded', 'eventname');

$ruleset = new block_xp_ruleset(array($bcmv, $dsc, $sc, $as, $au), block_xp_ruleset::ANY);
$data = array('rule' => $ruleset, 'points' => 0, 'editable' => true);
$this->filters[] = block_xp_filter::load_from_data($data);

$data = array('rule' => $c, 'points' => 45, 'editable' => true);
$this->filters[] = block_xp_filter::load_from_data($data);

$data = array('rule' => $r, 'points' => 9, 'editable' => true);
$this->filters[] = block_xp_filter::load_from_data($data);

$data = array('rule' => $u, 'points' => 3, 'editable' => true);
$this->filters[] = block_xp_filter::load_from_data($data);

$data = array('rule' => $d, 'points' => 0, 'editable' => true);
$this->filters[] = block_xp_filter::load_from_data($data);
}
}

?>

0 comments on commit f3b01e5

Please sign in to comment.