forked from joomla/Component-Builder
Fixed gh-301 to insure the sql dump of tables will build new fields and views using the new subform method
This commit is contained in:
parent
01149bfb7c
commit
ffbd380b10
@ -125,7 +125,7 @@ Watch the [proposed development workflow](https://vdm.bz/proposed-development-wo
|
||||
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
|
||||
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
|
||||
+ *First Build*: 30th April, 2015
|
||||
+ *Last Build*: 31st May, 2018
|
||||
+ *Last Build*: 9th June, 2018
|
||||
+ *Version*: 2.8.0
|
||||
+ *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved.
|
||||
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
||||
|
@ -125,7 +125,7 @@ Watch the [proposed development workflow](https://vdm.bz/proposed-development-wo
|
||||
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
|
||||
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
|
||||
+ *First Build*: 30th April, 2015
|
||||
+ *Last Build*: 31st May, 2018
|
||||
+ *Last Build*: 9th June, 2018
|
||||
+ *Version*: 2.8.0
|
||||
+ *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved.
|
||||
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
||||
|
@ -55,32 +55,33 @@ class Mapping
|
||||
/**
|
||||
* The needed set of keys needed to set
|
||||
*/
|
||||
protected $setting = array('id' => 'default', 'buildcompsql' => 'base64', 'addadmin_views' => 'json', 'name_code' => 'safeString');
|
||||
protected $setting = array('id' => 'default', 'buildcompsql' => 'base64', 'name_code' => 'safeString');
|
||||
|
||||
/**
|
||||
* The needed set of keys needed to set
|
||||
*/
|
||||
protected $notRequiered = array('id', 'asset_id', 'published',
|
||||
'created_by', 'modified_by', 'created', 'modified', 'checked_out','checked_out_time',
|
||||
'version', 'hits', 'access', 'ordering',
|
||||
'metakey', 'metadesc', 'metadata', 'params');
|
||||
'created_by', 'modified_by', 'created', 'modified', 'checked_out','checked_out_time',
|
||||
'version', 'hits', 'access', 'ordering',
|
||||
'metakey', 'metadesc', 'metadata', 'params');
|
||||
|
||||
/**
|
||||
* The datatypes and it linked field types (basic)
|
||||
* (TODO) We may need to set this dynamicly
|
||||
*/
|
||||
protected $dataTypes = array( 'VARCHAR' => 'Text', 'CHAR' => 'Text',
|
||||
'MEDIUMTEXT' => 'Textarea', 'LONGTEXT' => 'Textarea',
|
||||
'TEXT' => 'Textarea', 'DATETIME' => 'Calendar',
|
||||
'DATE' => 'Text', 'TIME' => 'Text', 'TINYINT' => 'Text',
|
||||
'BIGINT' => 'Text', 'INT' => 'Text', 'FLOAT' => 'Text',
|
||||
'DECIMAL' => 'Text', 'DOUBLE' => 'Text');
|
||||
'MEDIUMTEXT' => 'Textarea', 'LONGTEXT' => 'Textarea',
|
||||
'TEXT' => 'Textarea', 'DATETIME' => 'Calendar',
|
||||
'DATE' => 'Text', 'TIME' => 'Text', 'TINYINT' => 'Text',
|
||||
'BIGINT' => 'Text', 'INT' => 'Text', 'FLOAT' => 'Text',
|
||||
'DECIMAL' => 'Text', 'DOUBLE' => 'Text');
|
||||
|
||||
/**
|
||||
* The datasize identifiers
|
||||
*/
|
||||
protected $dataSize = array( 'CHAR', 'VARCHAR', 'INT', 'TINYINT',
|
||||
'BIGINT', 'FLOAT', 'DECIMAL', 'DOUBLE');
|
||||
protected $dataSize = array(
|
||||
'CHAR', 'VARCHAR', 'INT', 'TINYINT',
|
||||
'BIGINT', 'FLOAT', 'DECIMAL', 'DOUBLE');
|
||||
|
||||
/**
|
||||
* The default identifiers
|
||||
@ -101,7 +102,7 @@ class Mapping
|
||||
// set the app to insure messages can be set
|
||||
$this->app = JFactory::getApplication();
|
||||
|
||||
if ($data)
|
||||
if (ComponentbuilderHelper::checkArray($data))
|
||||
{
|
||||
if (isset($data['buildcomp']) && 1 == $data['buildcomp'] && isset($data['buildcompsql']))
|
||||
{
|
||||
@ -129,6 +130,12 @@ class Mapping
|
||||
}
|
||||
}
|
||||
}
|
||||
// get linked admin views
|
||||
$addadmin_views = ComponentbuilderHelper::getVar('component_admin_views', $data['id'], 'joomla_component', 'addadmin_views');
|
||||
if (ComponentbuilderHelper::checkJson($addadmin_views))
|
||||
{
|
||||
$this->addadmin_views = json_decode($addadmin_views, true);
|
||||
}
|
||||
// set the map of the views needed
|
||||
if ($this->setMap())
|
||||
{
|
||||
|
@ -37,12 +37,13 @@ class Builder extends Mapping
|
||||
public $user;
|
||||
public $today;
|
||||
public $db;
|
||||
public $views = array();
|
||||
protected $fields = array();
|
||||
protected $title = array();
|
||||
protected $description = array();
|
||||
protected $alias = array();
|
||||
protected $list = array();
|
||||
public $views = array();
|
||||
public $admin_fields = array();
|
||||
protected $fields = array();
|
||||
protected $title = array();
|
||||
protected $description = array();
|
||||
protected $alias = array();
|
||||
protected $list = array();
|
||||
|
||||
/**
|
||||
* Field that should not be used in name, alias, disc, and list view
|
||||
@ -62,10 +63,10 @@ class Builder extends Mapping
|
||||
$data['buildcomp'] = 0;
|
||||
$data['buildcompsql'] = '';
|
||||
// set some globals
|
||||
$this->db = JFactory::getDbo();
|
||||
$this->user = JFactory::getUser();
|
||||
$this->today = JFactory::getDate()->toSql();
|
||||
|
||||
$this->db = JFactory::getDbo();
|
||||
$this->user = JFactory::getUser();
|
||||
$this->today = JFactory::getDate()->toSql();
|
||||
|
||||
// no start the building of the views and fields
|
||||
if ($this->setBuild())
|
||||
{
|
||||
@ -100,22 +101,21 @@ class Builder extends Mapping
|
||||
protected function setView(&$name)
|
||||
{
|
||||
// set the view object
|
||||
$object = new stdClass();
|
||||
$object->system_name = ComponentbuilderHelper::safeString($name, 'W') . ' (dynamic build)';
|
||||
$object->name_single = $name;
|
||||
$object->name_list = $name. 's';
|
||||
$object->short_description = $name. ' view (dynamic build)';
|
||||
$object->type = 1;
|
||||
$object->description = $name. ' view (dynamic build)';
|
||||
$object->add_fadein = 1;
|
||||
$object->add_sql = (isset($this->addSql[$name])) ? $this->addSql[$name]: 0;
|
||||
$object->source = (isset($this->source[$name])) ? $this->source[$name]: 0;
|
||||
$object->sql = (isset($this->sql[$name])) ? base64_encode($this->sql[$name]): '';
|
||||
$object->addpermissions = '{"action":["view.edit","view.edit.own","view.edit.state","view.create","view.delete","view.access"],"implementation":["3","3","3","3","3","3"]}';
|
||||
$object->addfields = $this->addFields($name);
|
||||
$object->created = $this->today;
|
||||
$object->created_by = $this->user->id;
|
||||
$object->published = 1;
|
||||
$object = new stdClass();
|
||||
$object->system_name = ComponentbuilderHelper::safeString($name, 'W') . ' (dynamic build)';
|
||||
$object->name_single = $name;
|
||||
$object->name_list = $name. 's';
|
||||
$object->short_description = $name. ' view (dynamic build)';
|
||||
$object->type = 1;
|
||||
$object->description = $name. ' view (dynamic build)';
|
||||
$object->add_fadein = 1;
|
||||
$object->add_sql = (isset($this->addSql[$name])) ? $this->addSql[$name]: 0;
|
||||
$object->source = (isset($this->source[$name])) ? $this->source[$name]: 0;
|
||||
$object->sql = (isset($this->sql[$name])) ? base64_encode($this->sql[$name]): '';
|
||||
$object->addpermissions = '{"action":["view.edit","view.edit.own","view.edit.state","view.create","view.delete","view.access"],"implementation":["3","3","3","3","3","3"]}';
|
||||
$object->created = $this->today;
|
||||
$object->created_by = $this->user->id;
|
||||
$object->published = 1;
|
||||
// add to data base
|
||||
if ($this->db->insertObject('#__componentbuilder_admin_view', $object))
|
||||
{
|
||||
@ -124,7 +124,8 @@ class Builder extends Mapping
|
||||
ComponentbuilderHelper::setAsset($id, 'admin_view');
|
||||
// load the views
|
||||
$this->views[] = $id;
|
||||
return true;
|
||||
// load the admin view fields
|
||||
return $this->addFields($name, $id);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -132,26 +133,12 @@ class Builder extends Mapping
|
||||
/**
|
||||
* Add the fields to the view
|
||||
*/
|
||||
protected function addFields(&$view)
|
||||
protected function addFields(&$view, &$view_id)
|
||||
{
|
||||
if (isset($this->fields[$view]))
|
||||
{
|
||||
// set some defaults
|
||||
$addField = array (
|
||||
'field' => array(),
|
||||
'list' => array(),
|
||||
'order_list' => array(),
|
||||
'title' => array(),
|
||||
'alias' => array(),
|
||||
'sort' => array(),
|
||||
'search' => array(),
|
||||
'filter' => array(),
|
||||
'link' => array(),
|
||||
'tab' => array(),
|
||||
'alignment' => array(),
|
||||
'order_edit' => array(),
|
||||
'permission' => array()
|
||||
);
|
||||
$addField = array ();
|
||||
$fixLink = (isset($this->title[$view])) ? 0 : 1;
|
||||
// build the field data... hmmm
|
||||
foreach ($this->fields[$view] as $nr => $id)
|
||||
@ -171,23 +158,32 @@ class Builder extends Mapping
|
||||
$fixLink = 0;
|
||||
}
|
||||
// load the field values
|
||||
$addField['field'][] = $id;
|
||||
$addField['list'][] = $isList;
|
||||
$addField['order_list'][] = ($key) ? $key : 0;
|
||||
$addField['title'][] = $isTitle;
|
||||
$addField['alias'][] = $isAlias;
|
||||
$addField['sort'][] = $isList;
|
||||
$addField['search'][] = $isList;
|
||||
$addField['filter'][] = $isList;
|
||||
$addField['link'][] = $isLink;
|
||||
$addField['tab'][] = 1;
|
||||
$addField['alignment'][] = ($isTitle || $isAlias) ? 4 : $alignment;
|
||||
$addField['order_edit'][] = $nr;
|
||||
$addField['permission'][] = 0;
|
||||
$addField['addfields'.$nr]['field'] = $id;
|
||||
$addField['addfields'.$nr]['list'] = $isList;
|
||||
$addField['addfields'.$nr]['order_list'] = ($key) ? $key : 0;
|
||||
$addField['addfields'.$nr]['title'] = $isTitle;
|
||||
$addField['addfields'.$nr]['alias'] = $isAlias;
|
||||
$addField['addfields'.$nr]['sort'] = $isList;
|
||||
$addField['addfields'.$nr]['search'] = $isList;
|
||||
$addField['addfields'.$nr]['filter'] = $isList;
|
||||
$addField['addfields'.$nr]['link'] = $isLink;
|
||||
$addField['addfields'.$nr]['tab'] = 1;
|
||||
$addField['addfields'.$nr]['alignment'] = ($isTitle || $isAlias) ? 4 : $alignment;
|
||||
$addField['addfields'.$nr]['order_edit'] = $nr;
|
||||
$addField['addfields'.$nr]['permission'] = 0;
|
||||
}
|
||||
return json_encode($addField);
|
||||
|
||||
// set the field object
|
||||
$object = new stdClass();
|
||||
$object->admin_view = $view_id;
|
||||
$object->addfields = json_encode($addField, JSON_FORCE_OBJECT);
|
||||
$object->created = $this->today;
|
||||
$object->created_by = $this->user->id;
|
||||
$object->published = 1;
|
||||
// add to data base
|
||||
return $this->db->insertObject('#__componentbuilder_admin_fields', $object);
|
||||
}
|
||||
return '';
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -198,21 +194,21 @@ class Builder extends Mapping
|
||||
if ($fieldType = $this->getFieldType($field['fieldType']))
|
||||
{
|
||||
// set the field object
|
||||
$object = new stdClass();
|
||||
$object->name = $field['label'] . ' (dynamic build)';
|
||||
$object->fieldtype = $fieldType;
|
||||
$object->datatype = $field['dataType'];
|
||||
$object->indexes = $field['key'];
|
||||
$object->null_switch = $field['null'];
|
||||
$object->datalenght = $field['size'];
|
||||
$object->datalenght_other = $field['sizeOther'];
|
||||
$object->datadefault = $field['default'];
|
||||
$object->datadefault_other = $field['defaultOther'];
|
||||
$object->created = $this->today;
|
||||
$object->created_by = $this->user->id;
|
||||
$object->published = 1;
|
||||
$object->store = 0;
|
||||
$object->xml = $this->setFieldXML($field, $fieldType);
|
||||
$object = new stdClass();
|
||||
$object->name = $field['label'] . ' (dynamic build)';
|
||||
$object->fieldtype = $fieldType;
|
||||
$object->datatype = $field['dataType'];
|
||||
$object->indexes = $field['key'];
|
||||
$object->null_switch = $field['null'];
|
||||
$object->datalenght = $field['size'];
|
||||
$object->datalenght_other = $field['sizeOther'];
|
||||
$object->datadefault = $field['default'];
|
||||
$object->datadefault_other = $field['defaultOther'];
|
||||
$object->created = $this->today;
|
||||
$object->created_by = $this->user->id;
|
||||
$object->published = 1;
|
||||
$object->store = 0;
|
||||
$object->xml = $this->setFieldXML($field, $fieldType);
|
||||
// add to data base
|
||||
if ($this->db->insertObject('#__componentbuilder_field', $object))
|
||||
{
|
||||
|
@ -36,106 +36,82 @@ class Extrusion extends Builder
|
||||
*/
|
||||
public function __construct(&$data)
|
||||
{
|
||||
// first we run the perent constructor
|
||||
if (parent::__construct($data))
|
||||
// make sure we have an id
|
||||
if (isset($data['id']) && $data['id'] > 0)
|
||||
{
|
||||
// link the view data to the component
|
||||
$data['addadmin_views'] = $this->linkAdminViews();
|
||||
if (ComponentbuilderHelper::checkJson($data['addadmin_views']))
|
||||
// first we run the perent constructor
|
||||
if (parent::__construct($data))
|
||||
{
|
||||
$this->app->enqueueMessage(
|
||||
JText::_('All the fields and views from your sql dump has been created and linked to this component.'),
|
||||
'Success'
|
||||
);
|
||||
return true;
|
||||
// link the view data to the component
|
||||
if ($this->setAdminViews($data['id']))
|
||||
{
|
||||
$this->app->enqueueMessage(
|
||||
JText::_('All the fields and views from your sql dump has been created and linked to this component.'),
|
||||
'Success'
|
||||
);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
$this->app->enqueueMessage(
|
||||
JText::_('Please try again, this error usualy happens if it is a new component, beacues we need a component ID to do this build with your sql dump.'),
|
||||
'Error'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* link the build views to the component
|
||||
*/
|
||||
protected function linkAdminViews()
|
||||
protected function setAdminViews(&$component_id)
|
||||
{
|
||||
// check if views were set
|
||||
if (ComponentbuilderHelper::checkArray($this->views))
|
||||
{
|
||||
// insure arrays are set
|
||||
if (!isset($this->addadmin_views['adminview']))
|
||||
$count = 0;
|
||||
if (ComponentbuilderHelper::checkArray($this->addadmin_views))
|
||||
{
|
||||
$this->addadmin_views['adminview'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['icomoon']))
|
||||
{
|
||||
$this->addadmin_views['icomoon'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['mainmenu']))
|
||||
{
|
||||
$this->addadmin_views['mainmenu'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['dashboard_add']))
|
||||
{
|
||||
$this->addadmin_views['dashboard_add'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['dashboard_list']))
|
||||
{
|
||||
$this->addadmin_views['dashboard_list'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['submenu']))
|
||||
{
|
||||
$this->addadmin_views['submenu'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['checkin']))
|
||||
{
|
||||
$this->addadmin_views['checkin'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['history']))
|
||||
{
|
||||
$this->addadmin_views['history'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['metadata']))
|
||||
{
|
||||
$this->addadmin_views['metadata'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['access']))
|
||||
{
|
||||
$this->addadmin_views['access'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['port']))
|
||||
{
|
||||
$this->addadmin_views['port'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['edit_create_site_view']))
|
||||
{
|
||||
$this->addadmin_views['edit_create_site_view'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['order']))
|
||||
{
|
||||
$this->addadmin_views['order'] = array();
|
||||
$count = (int) count((array)$this->addadmin_views) + 3;
|
||||
}
|
||||
// set the admin view data linking
|
||||
foreach ($this->views as $id)
|
||||
foreach ($this->views as $nr => $id)
|
||||
{
|
||||
$this->addadmin_views['adminview'][] = $id;
|
||||
$this->addadmin_views['icomoon'][] = 'joomla';
|
||||
$this->addadmin_views['mainmenu'][] = 1;
|
||||
$this->addadmin_views['dashboard_add'][] = 1;
|
||||
$this->addadmin_views['dashboard_list'][] = 1;
|
||||
$this->addadmin_views['submenu'][] = 1;
|
||||
$this->addadmin_views['checkin'][] = 1;
|
||||
$this->addadmin_views['history'][] = 1;
|
||||
$this->addadmin_views['metadata'][] = 1;
|
||||
$this->addadmin_views['access'][] = 1;
|
||||
$this->addadmin_views['port'][] = 1;
|
||||
$this->addadmin_views['edit_create_site_view'][] = 0;
|
||||
$this->addadmin_views['order'][] = count($this->addadmin_views['order']) + 1;
|
||||
$pointer = $count + $nr;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['adminview'] = $id;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['icomoon'] = 'joomla';
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['mainmenu'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['dashboard_add'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['dashboard_list'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['submenu'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['checkin'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['history'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['metadata'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['access'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['port'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['edit_create_site_view'] = 0;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['order'] = $pointer + 1;
|
||||
}
|
||||
}
|
||||
if (isset($this->addadmin_views) && ComponentbuilderHelper::checkArray($this->addadmin_views))
|
||||
{
|
||||
return json_encode($this->addadmin_views);
|
||||
// set the field object
|
||||
$object = new stdClass();
|
||||
$object->joomla_component = $component_id;
|
||||
$object->addadmin_views = json_encode($this->addadmin_views, JSON_FORCE_OBJECT);
|
||||
$object->created = $this->today;
|
||||
$object->created_by = $this->user->id;
|
||||
$object->published = 1;
|
||||
// check if it is already set
|
||||
if ($item_id = ComponentbuilderHelper::getVar('component_admin_views', $component_id, 'joomla_component', 'id'))
|
||||
{
|
||||
// set ID
|
||||
$object->id = (int) $item_id;
|
||||
return $this->db->updateObject('#__componentbuilder_component_admin_views', $object, 'id');
|
||||
}
|
||||
// add to data base
|
||||
return $this->db->insertObject('#__componentbuilder_component_admin_views', $object);
|
||||
}
|
||||
return '';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<extension type="component" version="3.2" method="upgrade">
|
||||
<name>COM_COMPONENTBUILDER</name>
|
||||
<creationDate>31st May, 2018</creationDate>
|
||||
<creationDate>9th June, 2018</creationDate>
|
||||
<author>Llewellyn van der Merwe</author>
|
||||
<authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail>
|
||||
<authorUrl>http://www.joomlacomponentbuilder.com</authorUrl>
|
||||
|
Loading…
Reference in New Issue
Block a user