Skip to content

Commit

Permalink
Version 1.2.0.
Browse files Browse the repository at this point in the history
Refactor (former static) option model.
Bugfix setting sanitizer.
Improve settings error model.
Improve settings page view.
Improve taxonomy model.
Update translations.
Add "inner" composer file.
Add more tests.
  • Loading branch information
tfrommen committed Nov 12, 2015
1 parent fb46ba5 commit 468356f
Show file tree
Hide file tree
Showing 35 changed files with 1,623 additions and 145 deletions.
5 changes: 5 additions & 0 deletions composer.json
Expand Up @@ -41,6 +41,11 @@
"tfrommen\\LinkedTaxonomies\\": "src/inc/"
}
},
"scripts": {
"post-autoload-dump": [
"composer dump-autoload -d src"
]
},
"extra": {
"branch-alias": {
"dev-master": "1.3.x-dev"
Expand Down
2 changes: 1 addition & 1 deletion composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions phpunit.xml.dist
Expand Up @@ -12,4 +12,12 @@
<directory suffix="Test.php">tests/phpunit/unit</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">src/inc</directory>
<exclude>
<file>src/inc/Plugin.php</file>
</exclude>
</whitelist>
</filter>
</phpunit>
11 changes: 11 additions & 0 deletions src/composer.json
@@ -0,0 +1,11 @@
{
"autoload": {
"classmap": [
"inc/"
]
},
"config": {
"prepend-autoloader": false,
"classmap-authoritative": true
}
}
10 changes: 7 additions & 3 deletions src/inc/Plugin.php
Expand Up @@ -43,11 +43,13 @@ public function __construct( $file ) {
*/
public function initialize() {

$option = new Setting\Option();

$updater = new Update\Updater( $this->plugin_data[ 'version' ] );
$updater->update();

$taxonomy_controller = new Taxonomy\Controller(
new Taxonomy\Taxonomy()
new Taxonomy\Taxonomy( $option )
);
$taxonomy_controller->initialize();

Expand All @@ -57,15 +59,17 @@ public function initialize() {

$settings_page = new SettingsPage\SettingsPage();
$settings_page_controller = new SettingsPage\Controller(
new SettingsPage\View( $settings_page )
new SettingsPage\View( $settings_page, $option )
);
$settings_page_controller->initialize();

$setting_controller = new Setting\Controller(
new Setting\Setting(
$option,
new Setting\Sanitizer(
$settings_page,
new SettingsError\Factory()
new SettingsError\Factory(),
$option
)
)
);
Expand Down
31 changes: 10 additions & 21 deletions src/inc/Setting/Option.php
Expand Up @@ -3,7 +3,7 @@
namespace tfrommen\LinkedTaxonomies\Setting;

/**
* Static option model.
* Option model.
*
* @package tfrommen\LinkedTaxonomies\Setting
*/
Expand All @@ -12,16 +12,16 @@ class Option {
/**
* @var string
*/
private static $name = 'linked_taxonomies';
private $name = 'linked_taxonomies';

/**
* Returns the option name.
*
* @return string
*/
public static function get_name() {
public function get_name() {

return self::$name;
return $this->name;
}

/**
Expand All @@ -31,28 +31,17 @@ public static function get_name() {
*
* @return string[][]
*/
public static function get( array $default = array() ) {
public function get( array $default = array() ) {

$value = get_option( self::$name, $default );
$value = get_option( $this->name, $default );
if ( ! is_array( $value ) ) {
return $default;
$value = $default;
if ( ! is_array( $value ) ) {
return array();
}
}

return $value;
}

/**
* Update the option to the given value.
*
* @param string[][] $value New option value.
*
* @return bool
*/
public static function update( array $value ) {

$updated = update_option( self::$name, $value );

return $updated;
}

}
18 changes: 15 additions & 3 deletions src/inc/Setting/Sanitizer.php
Expand Up @@ -12,6 +12,11 @@
*/
class Sanitizer {

/**
* @var Option
*/
private $option;

/**
* @var SettingsErrorFactory
*/
Expand All @@ -27,12 +32,19 @@ class Sanitizer {
*
* @param SettingsPage $settings_page Settings page object.
* @param SettingsErrorFactory $settings_error_factory Settings error factory object.
* @param Option $option Option model.
*/
public function __construct( SettingsPage $settings_page, SettingsErrorFactory $settings_error_factory ) {
public function __construct(
SettingsPage $settings_page,
SettingsErrorFactory $settings_error_factory,
Option $option
) {

$this->settings_page = $settings_page;

$this->settings_error_factory = $settings_error_factory;

$this->option = $option;
}

/**
Expand All @@ -44,11 +56,11 @@ public function __construct( SettingsPage $settings_page, SettingsErrorFactory $
*/
public function sanitize( $data ) {

if ( ! $this->settings_page->get_capability( 'edit' ) ) {
if ( ! $this->settings_page->current_user_can( 'edit' ) ) {
$error = $this->settings_error_factory->create( 'no-permission-to-edit' );
$error->add();

$data = Option::get();
$data = $this->option->get();

return $data;
}
Expand Down
16 changes: 11 additions & 5 deletions src/inc/Setting/Setting.php
Expand Up @@ -9,6 +9,11 @@
*/
class Setting {

/**
* @var string
*/
private $option_name;

/**
* @var Sanitizer
*/
Expand All @@ -17,9 +22,12 @@ class Setting {
/**
* Constructor. Sets up the properties.
*
* @param Option $option Option model.
* @param Sanitizer $sanitizer Setting sanitizer object.
*/
public function __construct( Sanitizer $sanitizer ) {
public function __construct( Option $option, Sanitizer $sanitizer ) {

$this->option_name = $option->get_name();

$this->sanitizer = $sanitizer;
}
Expand All @@ -33,11 +41,9 @@ public function __construct( Sanitizer $sanitizer ) {
*/
public function register() {

$option_name = Option::get_name();

register_setting(
$option_name,
$option_name,
$this->option_name,
$this->option_name,
array( $this->sanitizer, 'sanitize' )
);
}
Expand Down
2 changes: 1 addition & 1 deletion src/inc/SettingsError/NullSettingsError.php
Expand Up @@ -7,7 +7,7 @@
*
* @package tfrommen\LinkedTaxonomies\SettingsError
*/
class NullSettingsError implements SettingsErrorInterface {
class NullSettingsError implements SettingsErrorInterface {

/**
* Adds the settings error.
Expand Down
8 changes: 4 additions & 4 deletions src/inc/SettingsError/SettingsError.php
Expand Up @@ -7,7 +7,7 @@
*
* @package tfrommen\LinkedTaxonomies\SettingsError
*/
class SettingsError implements SettingsErrorInterface {
class SettingsError implements SettingsErrorInterface {

/**
* @var string
Expand Down Expand Up @@ -57,15 +57,15 @@ public function __construct( $slug, $code, $message, $type = 'error' ) {
*/
public function add() {

if ( empty( $this->code ) ) {
if ( $this->code === '' ) {
return FALSE;
}

if ( empty( $this->message ) ) {
if ( $this->message === '' ) {
return FALSE;
}

if ( empty( $this->slug ) ) {
if ( $this->slug === '' ) {
return FALSE;
}

Expand Down
45 changes: 24 additions & 21 deletions src/inc/SettingsPage/View.php
Expand Up @@ -27,9 +27,9 @@ class View {
private $linked_taxonomies;

/**
* @var string
* @var Option
*/
private $option_name;
private $option;

/**
* @var SettingsPage
Expand All @@ -45,14 +45,15 @@ class View {
* Constructor. Sets up the properties.
*
* @param SettingsPage $settings_page Settings page model.
* @param Option $option Option model.
*/
public function __construct( SettingsPage $settings_page ) {
public function __construct( SettingsPage $settings_page, Option $option ) {

$this->settings_page = $settings_page;

$this->current_user_can_edit = $this->settings_page->current_user_can( 'edit' );
$this->current_user_can_edit = $settings_page->current_user_can( 'edit' );

$this->option_name = Option::get_name();
$this->option = $option;

$this->title = esc_html_x( 'Linked Taxonomies', 'Settings page title', 'linked-taxonomies' );
}
Expand Down Expand Up @@ -104,19 +105,21 @@ public function render() {
*/
$this->all_taxonomies = (array) apply_filters( 'linkable_taxonomies', $this->all_taxonomies );

$this->linked_taxonomies = Option::get();
$this->linked_taxonomies = $this->option->get();
?>
<div class="wrap">
<h2>
<?php echo $this->title; ?>
</h2>
<?php
if ( $this->current_user_can_edit ) {
$this->render_form();
} else {
$this->render_table();
}
?>
<?php if ( ! $this->all_taxonomies ) : ?>
<p>
<?php esc_html_e( 'No linkable taxonomies found.', 'linked-taxonomies' ); ?>
</p>
<?php elseif ( $this->current_user_can_edit ) : ?>
<?php $this->render_form(); ?>
<?php else : ?>
<?php $this->render_table(); ?>
<?php endif; ?>
</div>
<?php
}
Expand All @@ -128,9 +131,10 @@ public function render() {
*/
private function render_form() {

$option_name = $this->option->get_name();
?>
<form action="<?php echo admin_url( 'options.php' ); ?>" method="post">
<?php settings_fields( $this->option_name ); ?>
<?php settings_fields( $option_name ); ?>
<?php $this->render_table(); ?>
<?php submit_button(); ?>
</form>
Expand Down Expand Up @@ -160,12 +164,12 @@ private function render_table() {
*
* @param object $taxonomy Taxonomy object.
*
* @return bool
* @return void
*/
private function render_row( $taxonomy ) {

if ( ! isset( $taxonomy->label ) || ! isset( $taxonomy->name ) ) {
return FALSE;
return;
}
?>
<tr>
Expand Down Expand Up @@ -202,7 +206,6 @@ private function render_row( $taxonomy ) {
</td>
</tr>
<?php
return TRUE;
}

/**
Expand All @@ -211,12 +214,12 @@ private function render_row( $taxonomy ) {
* @param string $taxonomy_name Current taxonomy name.
* @param object $target_taxonomy Target taxonomy object.
*
* @return bool
* @return void
*/
private function render_taxonomy_settings( $taxonomy_name, $target_taxonomy ) {

if ( ! isset( $target_taxonomy->name ) || $taxonomy_name === $target_taxonomy->name ) {
return FALSE;
return;
}

$link = 0;
Expand All @@ -229,7 +232,8 @@ private function render_taxonomy_settings( $taxonomy_name, $target_taxonomy ) {
};
};

$name = "{$this->option_name}[$taxonomy_name][{$target_taxonomy->name}]";
$option_name = $this->option->get_name();
$name = "{$option_name}[$taxonomy_name][{$target_taxonomy->name}]";

$disabled = disabled( $this->current_user_can_edit, FALSE, FALSE );
?>
Expand All @@ -255,7 +259,6 @@ private function render_taxonomy_settings( $taxonomy_name, $target_taxonomy ) {
?>
</tr>
<?php
return TRUE;
}

}

0 comments on commit 468356f

Please sign in to comment.