From beeb749a03aefba826754efbda3a78aec3561ce4 Mon Sep 17 00:00:00 2001 From: Alexandra Nantel Date: Tue, 23 May 2017 10:59:51 -0400 Subject: [PATCH 1/9] PHP7 Compatibility release --- extension.meta.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/extension.meta.xml b/extension.meta.xml index 49342f6..383547a 100644 --- a/extension.meta.xml +++ b/extension.meta.xml @@ -24,6 +24,9 @@ frontend_localisation + + - PHP 7 Compatibility + - Added basic sorting capabilities (SBL 1.34+ required) @@ -34,4 +37,4 @@ - First release - \ No newline at end of file + From 65578c04c3119ac308b065fa4306a7146bac2577 Mon Sep 17 00:00:00 2001 From: Alexandra Nantel Date: Tue, 30 May 2017 15:47:34 -0400 Subject: [PATCH 2/9] Update dependencies --- extension.meta.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/extension.meta.xml b/extension.meta.xml index 383547a..27fa922 100644 --- a/extension.meta.xml +++ b/extension.meta.xml @@ -19,7 +19,6 @@ - languages selectbox_link_field frontend_localisation From 0376bb3d8f53440878436a6785ed27999aabb4cb Mon Sep 17 00:00:00 2001 From: Alexandra Nantel Date: Thu, 24 Aug 2017 15:50:53 -0400 Subject: [PATCH 3/9] SQL and PHP cases PHP true,false,null in lowercase SQL keywords uppercase --- fields/field.multilingual_selectbox_link.php | 42 ++++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/fields/field.multilingual_selectbox_link.php b/fields/field.multilingual_selectbox_link.php index 5787765..a31adfc 100644 --- a/fields/field.multilingual_selectbox_link.php +++ b/fields/field.multilingual_selectbox_link.php @@ -9,7 +9,7 @@ require_once(TOOLKIT . '/class.field.php'); require_once(EXTENSIONS . '/selectbox_link_field/fields/field.selectbox_link.php'); require_once(EXTENSIONS . '/frontend_localisation/lib/class.FLang.php'); - + /** * * Field class that will represent relationships between entries @@ -22,14 +22,14 @@ public function __construct(){ parent::__construct(); $this->_name = __('Multilingual Select Box Link'); } - + protected function getFieldSchema($fieldId) { $lc = FLang::getLangCode(); if (empty($lc)) { $lc = FLang::getMainLang(); } - + try { return Symphony::Database()->fetch(" SHOW COLUMNS FROM `tbl_entries_data_$fieldId` @@ -41,7 +41,7 @@ protected function getFieldSchema($fieldId) { } return parent::getFieldSchema($fieldId); } - + public function fetchIDfromValue($value) { $id = null; $related_field_ids = $this->get('related_field_id'); @@ -51,11 +51,11 @@ public function fetchIDfromValue($value) { if (empty($lc)) { $lc = FLang::getMainLang(); } - + $value = Lang::createHandle($value); - + $try_parent = false; - + foreach($related_field_ids as $related_field_id) { try { $return = Symphony::Database()->fetchCol("id", sprintf(" @@ -80,24 +80,24 @@ public function fetchIDfromValue($value) { $try_parent = true; } } - + if ($try_parent) { return parent::fetchIDfromValue($value); } return (is_null($id)) ? 0 : (int)$id; } - - public function fetchAssociatedEntrySearchValue($data, $field_id=NULL, $parent_entry_id=NULL){ + + public function fetchAssociatedEntrySearchValue($data, $field_id = null, $parent_entry_id = null){ // We dont care about $data, but instead $parent_entry_id if(!is_null($parent_entry_id)) return $parent_entry_id; if(!is_array($data)) return $data; - + $handle = addslashes($data['handle']); - + $try_parent = false; - + $searchvalue = array(); try { @@ -112,19 +112,19 @@ public function fetchAssociatedEntrySearchValue($data, $field_id=NULL, $parent_e // column doesn't exist! $try_parent = true; } - + if ($try_parent) { return parent::fetchAssociatedEntrySearchValue($data, $field_id, $parent_entry_id); } return $searchvalue['entry_id']; } - + private static function startsWith($haystack, $needle) { // search backwards starting from haystack length characters from the end - return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== FALSE; + return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== false; } - + protected function findRelatedValues(array $relation_id = array()) { $relation_data = parent::findRelatedValues($relation_id); if (is_array($relation_data)) { @@ -144,7 +144,7 @@ protected function findRelatedValues(array $relation_id = array()) { } return $relation_data; } - + public function prepareTextValue($data, $entry_id = null) { if(!is_array($data) || (is_array($data) && !isset($data['relation_id']))) { return parent::prepareTextValue($data, $entry_id); @@ -160,7 +160,7 @@ public function prepareTextValue($data, $entry_id = null) { if (empty($lc)) { $lc = FLang::getMainLang(); } - + $label = ''; foreach($result as $item){ if (isset($item['value-' . $lc])) { @@ -170,7 +170,7 @@ public function prepareTextValue($data, $entry_id = null) { } $label .= ', '; } - + return trim($label, ', '); } - } \ No newline at end of file + } From 450f4b1e10b1c971c178dd9011d644b6e9883143 Mon Sep 17 00:00:00 2001 From: Alexandra Nantel Date: Fri, 25 Aug 2017 11:26:31 -0400 Subject: [PATCH 4/9] Relase infos .. Again --- extension.meta.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extension.meta.xml b/extension.meta.xml index 27fa922..2f88364 100644 --- a/extension.meta.xml +++ b/extension.meta.xml @@ -23,7 +23,8 @@ frontend_localisation - + + - Update for Symphony 4.x - PHP 7 Compatibility From 50e8ca7a9af2ee5f3476857700ce64aca2b21a71 Mon Sep 17 00:00:00 2001 From: Alexandra Nantel Date: Thu, 7 Jun 2018 15:44:10 -0400 Subject: [PATCH 5/9] Fix dependency status --- extension.driver.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/extension.driver.php b/extension.driver.php index 3eae1e3..84240f0 100644 --- a/extension.driver.php +++ b/extension.driver.php @@ -3,14 +3,14 @@ Copyight: Deux Huit Huit 2015 LICENCE: MIT http://deuxhuithuit.mit-license.org; */ - + if(!defined("__IN_SYMPHONY__")) die("

Error

You cannot directly access this file

"); - + if (!class_exists('extension_selectbox_link_field')) { define('__SBLF_NOT_INSTALLED', 1); class extension_selectbox_link_field extends Extension {} } - + /** * * @author Deux Huit Huit @@ -24,7 +24,7 @@ class extension_multilingual_selectbox_link_field extends extension_selectbox_li * @var string */ const EXT_NAME = 'Field: Multilingual Selectbox Link'; - + /* ********* INSTALL/UPDATE/UNINSTALL ******* */ /** @@ -34,7 +34,7 @@ public function install() { if (__SBLF_NOT_INSTALLED) { $sbl_status = ExtensionManager::fetchStatus(array('handle' => 'selectbox_link_field')); $sbl_status = current($sbl_status); - if ($sbl_status != EXTENSION_ENABLED) { + if ($sbl_status != Extension::EXTENSION_ENABLED) { Administration::instance()->Page->pageAlert('Could not load `selectbox_link_field` extension.', Alert::ERROR); return false; } @@ -42,15 +42,15 @@ public function install() { // depends on "Languages" $languages_status = ExtensionManager::fetchStatus(array('handle' => 'languages')); $languages_status = current($languages_status); - if ($languages_status != EXTENSION_ENABLED) { + if ($languages_status != Extension::EXTENSION_ENABLED) { Administration::instance()->Page->pageAlert('Could not load `languages` extension.', Alert::ERROR); return false; } - + // create table "alias" Administration::instance()->Database()->query("CREATE OR REPLACE VIEW `tbl_fields_multilingual_selectbox_link` AS SELECT * FROM `tbl_fields_selectbox_link`;"); - + return true; } @@ -69,4 +69,4 @@ public function uninstall() { return true; } - } \ No newline at end of file + } From db3a9ddfb57573620cc6c6e69d836fe3c4188dad Mon Sep 17 00:00:00 2001 From: Alexandra Nantel Date: Tue, 19 Jun 2018 11:15:10 -0400 Subject: [PATCH 6/9] Replace deprecated method fetch() by select() --- fields/field.multilingual_selectbox_link.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fields/field.multilingual_selectbox_link.php b/fields/field.multilingual_selectbox_link.php index a31adfc..2421b9f 100644 --- a/fields/field.multilingual_selectbox_link.php +++ b/fields/field.multilingual_selectbox_link.php @@ -129,7 +129,7 @@ protected function findRelatedValues(array $relation_id = array()) { $relation_data = parent::findRelatedValues($relation_id); if (is_array($relation_data)) { foreach ($relation_data as $r => $relation) { - $e = EntryManager::fetch($relation['id']); + $e = (new EntryManager) ->select()->entry($relation['id'])->execute()->next(); $ed = $e[0]->getData(); foreach ($this->get('related_field_id') as $fieldId) { if (is_array($ed[$fieldId])) { From 1dfe6243973ce85a3d04b573ed81faa983cda54b Mon Sep 17 00:00:00 2001 From: Alexandra Nantel Date: Wed, 27 Jun 2018 17:01:56 -0400 Subject: [PATCH 7/9] Fix entrymanager includeallfields --- fields/field.multilingual_selectbox_link.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/fields/field.multilingual_selectbox_link.php b/fields/field.multilingual_selectbox_link.php index 2421b9f..478c98b 100644 --- a/fields/field.multilingual_selectbox_link.php +++ b/fields/field.multilingual_selectbox_link.php @@ -129,8 +129,15 @@ protected function findRelatedValues(array $relation_id = array()) { $relation_data = parent::findRelatedValues($relation_id); if (is_array($relation_data)) { foreach ($relation_data as $r => $relation) { - $e = (new EntryManager) ->select()->entry($relation['id'])->execute()->next(); - $ed = $e[0]->getData(); + $section_id = SectionManager::fetchIDFromHandle($relation['section_handle']); + $e = (new EntryManager) + ->select() + ->entry($relation['id']) + ->section($section_id) + ->includeAllFields() + ->execute() + ->next(); + $ed = $e->getData(); foreach ($this->get('related_field_id') as $fieldId) { if (is_array($ed[$fieldId])) { foreach ($ed[$fieldId] as $key => $value) { From ee7a0a4b5234ca724df96ca08093d9cdf1916474 Mon Sep 17 00:00:00 2001 From: Alexandra Nantel Date: Wed, 27 Jun 2018 17:15:27 -0400 Subject: [PATCH 8/9] Refactor database code --- fields/field.multilingual_selectbox_link.php | 45 +++++++++++--------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/fields/field.multilingual_selectbox_link.php b/fields/field.multilingual_selectbox_link.php index 478c98b..c08b8c8 100644 --- a/fields/field.multilingual_selectbox_link.php +++ b/fields/field.multilingual_selectbox_link.php @@ -31,10 +31,12 @@ protected function getFieldSchema($fieldId) { } try { - return Symphony::Database()->fetch(" - SHOW COLUMNS FROM `tbl_entries_data_$fieldId` - WHERE `Field` in ('value-$lc'); - "); + return Symphony::Database() + ->showColumns() + ->from('tbl_entries_data_' . $fieldId) + ->where(['Field' => ['in' => ['value-' . $lc]]]) + ->execute() + ->rows(); } catch (Exception $ex) { // bail out @@ -58,15 +60,16 @@ public function fetchIDfromValue($value) { foreach($related_field_ids as $related_field_id) { try { - $return = Symphony::Database()->fetchCol("id", sprintf(" - SELECT - `entry_id` as `id` - FROM - `tbl_entries_data_%d` - WHERE - `handle` = '%s' OR `handle-{$lc}` = '%s' - LIMIT 1", $related_field_id, $value, $value - )); + $return = Symphony::Database() + ->select(['entry_id' => 'id']) + ->from('tbl_entries_data_' . $related_field_id) + ->where(['or' => [ + ['handle' => $value], + ['handle-' . $lc => $value], + ]]) + ->limit(1) + ->execute() + ->column('id'); // Skipping returns wrong results when doing an // AND operation, return 0 instead. @@ -101,12 +104,16 @@ public function fetchAssociatedEntrySearchValue($data, $field_id = null, $parent $searchvalue = array(); try { - $searchvalue = Symphony::Database()->fetchRow(0, sprintf(" - SELECT `entry_id` FROM `tbl_entries_data_%d` - WHERE `handle` = '%s' OR `handle-{$lc}` = '%s' - LIMIT 1", - $field_id, $handle, $handle - )); + $searchvalue = Symphony::Database() + ->select(['entry_id']) + ->from('tbl_entries_data_' . $field_id) + ->where(['or' => [ + ['handle' => $handle], + ['handle-' . $lc => $handle], + ]]) + ->limit(1) + ->execute() + ->next(); } catch (Exception $ex) { // Try the parent since this would normally be the case when a handle // column doesn't exist! From ca27de2e3e79bab7e04f221668800c2da3ecc2f3 Mon Sep 17 00:00:00 2001 From: Alexandra Nantel Date: Mon, 4 Feb 2019 16:01:00 -0500 Subject: [PATCH 9/9] Fix filtering by value. --- fields/field.multilingual_selectbox_link.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fields/field.multilingual_selectbox_link.php b/fields/field.multilingual_selectbox_link.php index c08b8c8..c7c1ca0 100644 --- a/fields/field.multilingual_selectbox_link.php +++ b/fields/field.multilingual_selectbox_link.php @@ -97,11 +97,11 @@ public function fetchAssociatedEntrySearchValue($data, $field_id = null, $parent if(!is_array($data)) return $data; - $handle = addslashes($data['handle']); + $handle = $data['handle']; $try_parent = false; - $searchvalue = array(); + $searchvalue = null; try { $searchvalue = Symphony::Database() @@ -113,7 +113,7 @@ public function fetchAssociatedEntrySearchValue($data, $field_id = null, $parent ]]) ->limit(1) ->execute() - ->next(); + ->variable('entry_id'); } catch (Exception $ex) { // Try the parent since this would normally be the case when a handle // column doesn't exist! @@ -124,7 +124,7 @@ public function fetchAssociatedEntrySearchValue($data, $field_id = null, $parent return parent::fetchAssociatedEntrySearchValue($data, $field_id, $parent_entry_id); } - return $searchvalue['entry_id']; + return $searchvalue; } private static function startsWith($haystack, $needle) {