11

Note: The Title Master add-on should take care of all of this, but if you can't use that for whatever reason, here is the procedure for the hack: Update 10/10/14: Title Master appears to be abandonware at this point. This works as of EE 2.9 Always back up your files and database before hacking the core! Native EE Titles & URL Titles /system/...


6

Always backup first! Hopefully they're all still pending. Go into phpMyAdmin query tab and run the following query to delete pending members: DELETE FROM exp_members WHERE group_id = 'PENDING GROUP ID' You can also run the query right from the control panel: Admin › Utilities › SQL Manager › Database Query Form If the site isn't setup to verify ...


6

The encoded string stored in the site_system_preferences column is a base64 encoded serialized array. Follow these steps to both unserialize and decode the string: Go to http://blog.tanist.co.uk/files/unserialize/index.php Paste the entire string from the site_system_preferences column into the "Unserializer input" textarea field on the left of the page ...


5

Your "More Info" comment shows you are on the right track, in looking for other data fragments in the database. exp_channel_data contains your custom fields. Several third-party field types have their own table to store information in (like Matrix/exp_matrix_data). You should be safe to remove the row from exp_channel_titles. The other tables contain data ...


5

This error may caused if EE couldn't make database connection. Check your hostname, username, password within "/system/expressionengine/config/database.php". Also could you check "exp_sites" database table if its having at least one record (multiple records for MSM site) if not, import this table properly.


5

I would suggest checking your config.php file and see if any of those global template preferences are explicitly set in your configs. If you are using FocusLab master config, I would check config.master.php and your individual environment configs.


5

Most of required indexes are already there. What I usually do, is if I use custom sorting order with exp:channel:entries I add key on field that I sort by. I.e. if I have {exp:channel:entries orderby="title"} I add index on title in exp_channel_titles table. If I have {exp:channel:entries orderby="my_custom_field"} and my_custom_field is a custom field ...


5

Well, it doesn't particularly matter where it is stored in the database, as you can override that value in your config file. https://docs.expressionengine.com/latest/general/system-configuration-overrides.html https://docs.expressionengine.com/latest/general/system-configuration-overrides.html#base_url So as long as you have access to the file system, you ...


4

I found that this was happening because I was importing the database from a dev server, into the production server database, without first dropping all tables...which left unused/old tables still in the production database.


4

There are two issues here to deal with. Exporting Data from the old site This can be done in a variety of ways. And it's arguably the easier task. I generally write custom PHP scripts, or sometimes a CodeIgniter app to connect to a copy of the original database and output XML files from it. It's just a matter of collecting all the needed fields. Since you'...


4

You can use the channel fields api to get the field names: ee()->load->library('api'); ee()->api->instantiate('channel_fields'); $fields = ee()->api_channel_fields->fetch_custom_channel_fields(); //change 1 to your site_id if using MSM $quantity_field_id = $fields['custom_channel_fields'][1]['your_quantity_field_name']; $sql .= "picd....


4

For the sake of completeness you can fix this with a simple SQL query to add the required column. See see this official EE thread


4

You can do this by developing your add-on as a module rather than a plugin since only modules can use EE actions. (See the EE docs for an explanation of the difference between the types of add-on.) More info on EE actions here. Essentially, you need to develop a module to perform your desired action, then call the associated ACT URL (e.g. http://example....


4

You can make a module - like Steve advice. Use Yeoman ExpressionEngine Add-On generator to simplify developing process. On server you will need to setup cron with wget: execute cronjob every day at 3am 00 03 * * * wget http://example.com/index.php?ACT=XX&task_id=1 Or if you want something really quick and simple: Create a special template with some ...


4

Please see the documentation for full details: Connecting to an External Database But the basic pattern for spinning up a separate DB connection in v3 would be: Create a DBConfig object from your database's connection settings Create a new Database object using the DBConfig object Issue queries to a Query object on the new database with ->newQuery(), ...


3

This is because the master config changes database configurations based on the value of $_SERVER['HTTP_HOST'], and you likely have "denvillechamber.com" as your value, which is not the same as "www.denvillechamber.com". Your site should not be accessible at both www and non-www locations - one should redirect to the other. Put this in your .htaccess file: ...


3

I'm not aware of any established best practices for adding indexes to DB tables. I'd say the official EllisLab stance is you shouldn't have to add any because they've done this work for you where needed. But every project has different needs and developers have to evaluate this on a case by case basis depending on the project. In my years with EE, I've only ...


3

Well, that all depends on what kind of data was entered. Every fieldtype adds complexity - relationships, Playa, Matrix, Assets, Tag, categories - these all add new rows to additional database tables after the standard channel_titles and channel_data. The main thing to worry about is duplicate entry_ids. My tactic here is to go through each relevant entry ...


3

You can use one query instead of two using the sql JOIN: $sql = "UPDATE exp_channel_titles ct LEFT JOIN exp_channel_data cd ON cd.entry_id = ct.entry_id SET ct.status = 'Registered', cd.field_id_119 = 'Yes' WHERE ct.channel_id=12 AND cd.field_id_119 != 'Yes' AND ct.entry_id={entry_id} AND ct.status != 'Hidden'"; $this->EE->db->query($sql);


3

Right, you are performing two queries so you need two calls to the db (if you want to use CI). This is the only other way I could think to do reasonably do it, but it's actually more code (but not handwritten SQL). $this->EE->db->where(array( 'channel_id' => 12, 'entry_id' => $entry_id, 'status !=' => 'Hidden' )); $this->...


3

For custom field columns that will be used in join statements I find its best to set the column type to an int or a varchar(#) and then index it as suggested. You can also optimise the way EE gets its data from the database. When EE queries the database for a set of channel entries it brings back a lot of data that is often not needed. This includes ...


3

When you upgraded to 2.7, do you recall the first time you accessed admin.php seeing the upgrade screen? And once the upgrade was complete, removing the installer directory? It sounds like your db has not been upgraded. For example, open your db and check exp_security_hashes table for the 'used' column. Sounds like it is missing. Could be others things ...


3

Since your files transferred just fine, it's the database export/import process that failed you. If you are transferring a database from one server to another it is ideal to do one or both of the following: Export the database you are duplicating with DROP TABLES syntax and gzipped. If you don't add DROP tables syntax, you'll just merge the tables possibly ...


3

You should never have to reinstall addons locally if you are pulling files/DB from production properly. If you are having this problem, the issue is most likely related to how you are doing the migration. I'd suggest your errors are caused by your exported SQL not including DROP TABLE and you aren't manually dropping the tables in the DB before your import. ...


3

To get all your paths/urls changed is a bit of a PITA since they are located in so many different sections of the CP. The easiest way to do this is with an addon. The two most popular are: Deeploy Helper $22 (I prefer this one - use it on almost every build) or REElocate (free)


3

It's tricky. I'm in a similar situation, though I'm migrating from a non-EE site. So, I've had to write a number of SQL and PHP scripts that "know" what data can change and what can be new, and can grab just the change and insert or update into the EE database in the right place. But, take a look at this technique for capturing database queries on one EE ...


3

Can you define what you mean by "a modern CMS"? Any database driven system will face similar problems when using Git source control. This isn't specifically an ExpressionEngine problem. The only systems that wouldn't suffer this difficulty are those using flat file architecture. I often use Git with ExpressionEngine. The only possible sticking point being, ...


3

I figured it out. in API_channel_entries.php, the title was being brought in before insertion like this: 'title' => ($this->EE->config->item('auto_convert_high_ascii') == 'y') ? ascii_to_entities($data['title']) : $data['title'], I don't update regularly (we've made a lot of hacks to make EE work for us) so it's likely just my issue but that ...


3

You can temporarily disable ALL addons by adding this to your config file: $config['allow_extensions'] = 'n'; This should allow you to access the Control Panel and then attempt to delete Cartthrob from there (if you're sure you don't want to delete all your sales data!). If that fails then look in the exp_modules and exp_extensions tables in the database ...


3

You will want to open up your CP and navigate to Admin > System Preferences > General Configuration and scroll down to New Version Auto Check and set that to "No". From the EE1 docs: New Version Auto Check Enabling this feature will cause a message to be displayed in the Control Panel when a new version of ExpressionEngine is available. It will ...


Only top voted, non community-wiki answers of a minimum length are eligible