From 152141b2ebe7c600fe981cbcbc1175c6e0b75f21 Mon Sep 17 00:00:00 2001 From: Amigo <49749100+aamigo@users.noreply.github.com> Date: Thu, 20 Jun 2019 15:09:26 +0200 Subject: [PATCH] Updated 033 Export Import of fully mapped components (markdown) --- ...xport-Import-of-fully-mapped-components.md | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/033-Export-Import-of-fully-mapped-components.md b/033-Export-Import-of-fully-mapped-components.md index 739e2b2..9b0a4af 100644 --- a/033-Export-Import-of-fully-mapped-components.md +++ b/033-Export-Import-of-fully-mapped-components.md @@ -1 +1,46 @@ -Greetings We're happy to announce a new feature That's been added To the advanced component builder for Joomla [00:00:10](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h00m10s) This feature Is a feature I suppose can Can become very Useful In the future of JCB It allows you to export A component Out of JCB And not only The component's information but everything attached to it [00:00:34](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h00m34s) So If the component has Admin views linked to it and those admin views have Fields link to it and those Fields have field types linked And those Component has site views and custom admin views And those site views and custom admin views has templates and layouts And dynamic gets And all these various linked concepts to a component Is exported [00:01:09](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h01m09s) Now The way that you will export a component is you'd simply click on this export component And obviously you need to select The component or components that you would like to export Now There's a few things to say when When we want to export a component There are two ways in which we export a component one is [00:01:36](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h01m36s) An encrypted way And the other is non encrypted Let me show you that in the code So I like you to understand exactly how it works So we have a method here called smart export Builder Now Smart export builder gets fired at the very end Of the Compilation or rather the built Where all the data has now been extracted from the database [00:02:05](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h02m05s) And it's now one Big array Of objects Now Basically in this function Called Get Smart export Is where this data extrusion takes place During this process We actually [00:02:25](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h02m25s) Take A we take a Count of a specific value And that value's name is export key So in this for each We are looping Through the components that you've selected so if you selected more than one Then it will check whether there is an export key For that component now let me show you where that is a set in the user interface When you open a component [00:03:00](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h03m00s) It has a tab called settings And At the bottom of the right-hand column it has a new A field called export key How you can put any value in here If you leave this value empty And you export only this component Then the component will not be encrypted If you add A value to this field [00:03:32](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h03m32s) And you export this component it will encrypt That component's Data The database values It will not encrypt Attached files or folders or images That are part of this component it will only encrypt The data from the database Now Having said that [00:03:54](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h03m54s) If you select multiple components And any one of them has a key Then it will encrypt All the components Ok And I'll explain again in the code how this Is done So we go back to the code now in the code Basically we are asking does this component have an export key [00:04:16](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h04m16s) If it's true and it is a string We actually this key is encrypted in a database So we first check That it is able to be decrypted And then we decrypt the key And then we add it To the key array With the component's ID So basically we are building up an array [00:04:41](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h04m41s) Of each component's key now if a component does not have a key It simply ignores this little script and it continues building its data set Then Once all the data set of all components are finished We basically get to the Smart export builder I set spoke of you know When we started looking at the code Now in this Smart export builder we are simply asking have we found any keys If we have found any keys [00:05:15](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h05m15s) We are gonna explode sorry, Implode The array And convert it to MD5 string Very simple We will then use this MD5 string With An AES Encryption Cypher To lock the data [00:05:37](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h05m37s) So there is the data Now above here we already changed the whole dataset To a serialised string So we have a string in this variable And here we are basically encrypting the whole string And now In this variable we have the encrypted value If we don't have any keys Even if that means if none of the components that was selected Had any keys set Then it will default to Simply [00:06:09](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h06m09s) Do a base64 encode And that is swell then gets written to the file That's part of the package So that is how It exports the data I'm too much about the actual mechanics that's happening here In the bottom of the file You're welcome to obviously look through it And if you see any room for improvements You're welcome to make a pull request This this is obviously the first try [00:06:43](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h06m43s) Ok so it exports the data and then checks whether we have any keys So if you have For example exporting five Components And all five components have keys In all five keys will Basically create a very long String And then that whole string will be changed into an MD5 string which is 32 characters And that 32 characters is then used to encrypt the data [00:07:13](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h07m13s) Now not to worry This actual key Which we then end up using to do the encryption Will be shown to you in the interface after the you know after the the data is being exported Ok so let's go back to To the to the user interface and let's export a component Ok so I have this component And it has a key And I have other components that has no keys at this stage So I'll select this one as a demonstration [00:07:52](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h07m52s) And then I'll click export component And as you can see A generated a key for me Which I can then use To import This package into another JCB I can import it into the same JCB But it's obviously not necessary So I could use it as a backup Now [00:08:19](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h08m19s) It is storing the compiled package in The temporary folder at this stage I am Working to Determine whether we should actually make this placement of the file the dynamic So that you could change it Because I think it will be ideal if it automatically becomes a kind of backup method So we're even thinking of setting up a timer that could run backups Of your components using this method Anyway that's future planning that's not [00:08:55](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h08m55s) gonna be happening Soon though Ok so You have an exported component At the moment if you if your data sets on not too big and your memory Settings on your PHP and so forth is allowing this kind of compilation You could select all components And Export them The same will be the result Since I have only one component set with a key [00:09:26](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h09m26s) They all will be Basically encrypted With the same key And they all be stored in this package so I have just now While talking to you Exported all my components Into this one package Now to demonstrate the importing of this data set I have a Blank website ready [00:09:49](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h09m49s) So let's go there So here's my blank website Basically it has no special JCB components The first thing I'll do is I'm gonna install JCB I'm gonna install it from From github So I'm going to git Hub And then I will Open the releases [00:10:14](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h10m14s) And I'll just copy the link To this latest release And go back here Paste that in here And basically install it Okay the installation was successful Now I'm gonna go to Component Builder Then I'll open the components And as you can see [00:10:43](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h10m43s) I have only the demo component here And I would like to basically Move all these components that I have Over to this new install Ok So I'm gonna click on import components Then I'm gonna browse to that That package that we've just exported And then I'm gonna upload it Now [00:11:13](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h11m13s) We have two features here This Force local update Basically what it will do Is on normal circumstances if you do a import The The import function looks at the data that are currently in this In this current JCB install So for example We're talking about field types we're talking about Fields we're talking about admin views and site views [00:11:42](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h11m42s) If it finds a side view that is being installed That it is already in the current Database It looks at the last modified date And then by that determines whether The current installed version is newer If it's newer It will by Default ignore the new data and not install it Now sometimes you might get a package where you would like to force that it updates The current data even though it may be all the data So this is why we have to switch you can then click yes to force the update [00:12:20](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h12m20s) Now We have a key for this package so we'll leave this to yes I'll basically just come over here and copy that key This key will then always be necessary if you're importing this package And that will be it and we'll click continue It might take a time since this is quite a huge dataset So you could just patiently wait And it last it is installed it tells us that the install is being successful You might get these warnings Now what these warnings is really telling you [00:13:01](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h13m01s) Is that During the install Obviously you realise that Lots of IDs Will change I mean We are working with a database that creates IDs as the new item is added And since these are the IDs used to link into the various components and views and places All these IDc must be remapped Now We have been able to actually [00:13:30](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h13m30s) Find a very well formulated algorithm to To resolve this problem So it remaps all the IDs But sometimes There are certain IDs that hasn't you know it's not possible to remap And so we are basically telling you here about them And so you could see that the target field in the admin views Has a mismatch in the field With ID 244 now you can go back to the old install And try and find out what happened there [00:14:04](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h14m04s) And most the time when I have reviewed this usually it is because that specific field Is no longer published or is no longer available or some reason So this is just giving you a heads up of any changes that may have occurred And then you can actually go to these various places and manually Fix them Most of the time these warnings will not show and everything will just say All is ok But if there is warnings and errors just Simply read the messages slowly and close Closely And I'm sure you'll be able to resolve it [00:14:43](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h14m43s) Quite easily Well that is a demonstration of the new feature Now just to show you that it actually does work I'm didn't mention before but it actually Removes all the customer files as well as custom folders As well as all the images per admin view site view and Wherever To the new install so it move it into its right place So if that is true we should be able to go to the compiler Select any of the components And [00:15:19](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h15m19s) It should load that components image here I should be able to just click Ok compile And it should be able to Simply compile that component After compilation I could simply click installing the component Obviously if this component was correctly mapped Previously And I were to go to that component now I would see that Everything about the component is right and it works well [00:15:51](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h15m51s) And That is really This new feature in action I really hope that it will be as useful to you as it's gonna be to me And that you will have fun with it I must tell you I suppose that at some point We could even start looking at selling mapped components I have a number of components that was made for specific Purposes But could be easily adapted for others [00:16:22](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h16m22s) And so I'm starting to look at the idea of selling mapped components Obviously It's a little difficult because it's basically selling The rights to it in a way that you could resell it So I'm not sure what would be the price tag of that Anyway We'll see Thank you for watching +# EXPORT IMPORT OF FULLY MAPPED COMPONENTS + +### Various Linked Concepts to A component is Exported + +We're happy to announce a new feature that's been added to the advanced component builder for Joomla. [00:00:10](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h00m10s) This feature is a feature I suppose can become very useful in the future of JCB. It allows you to export a component out of JCB, and not only the component's information, but everything attached to it. [00:00:34](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h00m34s) If the component has admin views linked to it, and those admin views have fields linked to it, and those fields have field types linked to it, and those component has site views, and custom admin views, and those site views and custom admin views has templates and layouts, and dynamic gets, and all these various linked concepts to a component is exported. [00:01:09](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h01m09s) +Ok so +### Two Ways To Export A Component - Encrypted And Non Encrypted + +The way that you will export a component is you'd simply click on export component. You need to select the component or components that you would like to export. There's a few things to say when we want to export a component. There are two ways in which we export a component. One is [00:01:36](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h01m36s) an encrypted way, and the other is non encrypted. + +### Smart Export Builder + +Let me show you that in the code. So I like you to understand exactly how it works. So we have a method here called smartExportBuilder. Now SmartExportBuilder gets fired at the very end of the compilation or rather the build. Where all the data has now been extracted from the database [00:02:05](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h02m05s) and it's now one big array of objects. In this function called getSmartExport, is where this data extrusion takes place. + +### Export Key + +During this process we actually [00:02:25](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h02m25s) take an account of a specific value. That value's name is export key. So in this 'foreach' we are looping through the components that you've selected. If you selected more than one, then it will check whether there is an export key for that component. Let me show you where that is a set in the user interface. When you open a component, [00:03:00](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h03m00s) it has a tab called settings. At the bottom of the right-hand column it has a new field called export key. You can put any value in here. If you leave this value empty, and you export only this(sermonDistributor) component, then the component will not be encrypted. If you add a value to this(export key) field [00:03:32](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h03m32s) and you export this component it will encrypt that component's data, the database values. It will not encrypt attached files or folders or images that are part of this component. It will only encrypt the data from the database. + +### Export Key - Encrypt All Components + +Having said that, [00:03:54](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h03m54s) if you select multiple components, and any one of them has a key, then it will encrypt all the components. I'll explain again in the code how this is done. We go back to the code. In the code we are asking, does this component have an export key? [00:04:16](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h04m16s) If it's true and it has a string, this Ok so key is encrypted in a database. We first check that it is able to be encrypted, and then we encrypt the key. Then we add it to the key array with the component's id. Basically we are building up an array [00:04:41](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h04m41s) of each component's key. If a component does not have a key, it simply ignores this little script and it continues building its data set. Then once all the data set of all components are finished, we get to the smartExportBuilder I spoke of when we started looking at the code. In this smartExportBuilder we are simply asking, have we found any keys? + +### If Any Key - Implode The array + +If we have found any keys, [00:05:15](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h05m15s) we are going to implode the array, convert it to md5 string. We will then use this md5 string with an Aes encryption cypher to lock the data. [00:05:37](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h05m37s) So there is the data. Now above here we already changed the whole data set to a serialized string. So we have a string in this(data) variable. And here we are encrypting the whole string. In this(data) variable we have the encrypted value. If we don't have any keys, even if that means if none of the components that was selected had any keys set, then it will default to simply [00:06:09](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h06m09s) do a base64_encode. If that is well, then it gets written to the file that's part of the package. So that is how it exports the data. I'm not going to explain much about the actual mechanics that's happening here in the bottom of the file. You're welcome to look through it. If you see any room for improvements, you're welcome to make a pull request. [00:06:43](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h06m43s) So it exports the data and then checks whether we have any keys. So if you have, for example exporting five components, and all five components have keys, in all five keys will create a very long string, and then that whole string will be changed into an md5 string which is 32 characters. And that 32 characters is then used to encrypt the data. [00:07:13](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h07m13s) +Basically + +### Exporting A Component - Generating A Key + +This actual key which we then end up using to do the encryption, will be shown to you in the interface after the data is being exported. Let's go back to the user interface and let's export a component. I have this(Learning Manager) component, and it has a key. I have other components that has no keys at this stage. I'll select Learning Manager as a demonstration. [00:07:52](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h07m52s) Then I'll click export component. As you can see it generated a key for me, which I can then use to import this package into another JCB. I can import it into the same JCB. But it's obviously not necessary. I could use it as a backup. Now [00:08:19](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h08m19s) It is storing the compiled package in the temporary folder at this stage. I am working to determine whether we should make this placement of the file dynamic, that you could change it. I think it will be ideal if it automatically becomes a kind of backup method. We're even thinking of setting up a timer that could run backups of your components using this method. Anyway that's future planning. [00:08:55](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h08m55s) You have an exported component at the moment, if your data sets are not too big and your memory settings on your PHP and so forth is allowing this kind of compilation, you could select all components and export them. The same will be the result. Since I have only one component set with a key, [00:09:26](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h09m26s) they all will be encrypted with the same key. They all will be stored in this package. I have exported all my components into this one package. + +### Importing Components - JCB_smartPackage.zip + +Now to demonstrate the importing of this(JCB_smartPackage.zip) data set, I have a blank website ready. [00:09:49](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h09m49s) Here's my blank website, it has no special JCB components. The first thing I'll do is I'm going to install JCB from GitHub. I'm going to GitHub and I will open the releases. [00:10:14](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h10m14s) I'll just copy the link to the latest release. Go back, paste that in here(Install From URL). And install it. The installation was successful. I'm going to Component Builder, then I'll open the components. As you can see [00:10:43](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h10m43s) I have only the demo component. I would like to move all these components that I have, over to the new install. I'm going to click on import components. Then I'm going to browse to that package that we've just exported. I'm going to upload it. [00:11:13](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h11m13s) + +### Two Features - Force Local Update - Use Key + +We have two features here. This force local update, what it will do, is on normal circumstances if you do a import, the import function looks at the data that are currently in this JCB install. For example we're talking about field types, fields, admin views and site views. [00:11:42](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h11m42s) If it finds a site view that is being installed, that is already in the current database, it looks at the last modified date, and then by that determines whether the current installed version is newer. If it's newer it will by default ignore the new data and not install it. Sometimes you might get a package where you would like to force that it updates the current data even though it may be all the data. So this is why we have the switch, you can then click yes to force the update. [00:12:20](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h12m20s) We have a key for this package, so we'll leave this to yes. I'll just come over here(Joomla Components) and copy that key. This key will then always be necessary if you're importing this package. That will be it and we'll click continue. It might take a time since this is quite a huge dataset. You could just patiently wait. At last it is installed, it tells us that the install is being successful. You might get these warnings. + +### Warnings - Remapped + +Now what these warnings is really telling you, [00:13:01](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h13m01s) is that during the install you realize that lots of ids will change. We are working with a database that creates ids as the new item is added. Since these are the ids is used to link into the various components, views and places, all these ids must be remapped. We have been able to [00:13:30](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h13m30s) find a very well formulated algorithm to resolve this problem. So it remaps all the ids. Sometimes there are certain ids that wasn't possible to remap. We are telling you about them. You could see that the target field in the admin views has a mismatch in the field with id.244. You can go back to the old install, and try and find out what happened there. [00:14:04](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h14m04s) Most of the time when I have reviewed this, usually it is because that specific field is no longer published or is no longer available for some reason. So this is just giving you a heads up of any changes that may have occurred. You can go to these various places and manually fix them. Most of the time these warnings will not show and everything will just say all is right. If there is warnings and errors just simply read the messages slowly and closely. I'm sure you'll be able to resolve it [00:14:43](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h14m43s) quite easily. + +### Mapped Components + +Now just to show you that it actually does work, I didn't mention before but it actually moves all the customer files, custom folders, as well as all the images per admin view, site view and wherever to the new install, so it moves it into its right place. So if that is true we should be able to go to the compiler, select any of the components. [00:15:19](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h15m19s) It should load that components image here, I should be able to just click compile. It should be able to simply compile that component after compilation. I could click installing the component. If this component was correctly mapped previously, and I were to go to that component, I would see that everything about the component is right and it works well. [00:15:51](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h15m51s) That is this new feature in action. I really hope that it will be as useful to you as it's going to be to me, and that you will have fun with it. I must tell you I suppose that at some point we could even start looking at selling mapped components. I have a number of components that was made for specific purposes, but could be easily adapted for others. [00:16:22](https://www.youtube.com/watch?v=lkE0ZiSWufg&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&t=00h16m22s) I'm starting to look at the idea of selling mapped components. It's a little difficult because it's basically selling the rights to it in a way that you could resell it. So I'm not sure what would be the price tag of that.