Planet phpMyAdmin

May 27, 2015

Madhura Jayaratne

phpMyAdmin work during thirty third week

Similar to the last week I spent most of the time working on bug fixes. Additionally I spent more time on general code improvements during the week. It was mostly the bugs that led to these code improvements, i.e. while fixing bugs I went on to do some related improvements. The list of bugs fixed during the week is as follows.

Bugs fixed
#4910 Insane slow
#4911 Lock page icon is not shown after fresh reload
#4912 "Highlight pointer" and "Row marker" doesn't work properly
#4913 GROUP_CONCAT is shown as GROUPBY_CONCAT in the autocomplete in SQL Query editor
#4917 Changing time with datetime picker gives JS error
#4918 Date field popup dialog position bug
Allow accessing visual query builder when pmadb is not configured
Browse foreigners window goes out of the window

Additionally the following bugs were investigated during the week.

Bugs investigated
#4914 Navigation pane highlighting issue when in database view
#4916 Autocomplete either doesn't function at all or auto completes the original table name when joining multiple aliased tables

Bugs #4913 and #4916 were infact CodeMirror bugs and I sent pull requests to the upstream project fixing these bugs. When CodeMirror 5.3 was released with a fix for #4913 I upgraded CodeMirror to this new version. This needed some effort as CodeMirror had not been updated for some time. Moreover, custom style affecting CodeMirror was in tangle with library's CSS and this is now resolved. The same bugs also led to refactoring code segments related to syntax highlighted SQL editors across phpMyAdmin. Moreover, bug #4910 led to improve routines, triggers and event fetching code to adhere to DisableIS directive.

General coding improvements
Improve JavaScript codes related to the query chart page
Improve routines, triggers and event fetching code to adhere to DisableIS directive
Upgrade CodeMirror to version 5.3.0
Refactor code segments related to syntax highlighted SQL editors across phpMyAdmin

Following feature requests were also implemented during the period.

Feature requests implemented
#1242 Work with --skip-grant-tables
#1619 Show databases as list instead of as dropdown when no database is selected - update
#1671 Directly show table comments in structure view

by Madhura ( at May 27, 2015 10:51 AM

May 25, 2015

Deven Bansod

GSoC 2015 : Weekly Report #2 : RFE #657 & RFE#946

Week #2 Task(s) completed: RFE #657 : Alter privileges when renaming database/ tables/ fields etc. RFE #946 : Warn before changing collations Scheduled Deadline: 7th  June, 2015 Completed on: 23rd May, 2015 Details: 1. The RFE#657 mentions that we should provide an option to ‘Alter Privileges’ while renaming the database / table/ fields/ procedures etc. MySQL, on its own, does not adjust […]

by Deven Bansod at May 25, 2015 03:29 AM

May 22, 2015

Zhang Hao

The OOP & refactor project weekly report 3

During this week I updated the template system by changing its support extension to “.phtml”. Also, I have templated some scripts.

Files Covered In This Week

  • Template.class.php
  • tbl_indexes.lib.php
  • scripts/update-po
  • tbl_printview.lib.php

Outcomes In This Week

Change template extension to “.phtml”
After thinking about conversations involved in the PR 1642, I decided to change the template extension to “.phtml” since it’s clearer to show these files are used to render but not being executed. Using “.phtml” as extension has no security risk because everyone can access phpMyAdmin’s source code anywhere.
Further, I have changed a tranlation related script (scripts.update-po) to let it include template scripts.

Add tests for Template class
The problem of lack of tests for the Template class was solved.

Complete templates for db designer module
Templates on db designer was completed. Now it should be clearer!

Template for tbl_indexes.lib.php, tbl_printview.lib.php
In recent two days I complete tests on the tbl_indexes.lib.php and tbl_printview.lib.php. Their template correspond to index_form.phtml and printview directory in the templates folder respectively. Once I complete the template scripts for tbl_column_definitions.lib.php, then I will open a pull request.

What will I Do Next

I will continue working on templates of table related scripts next week.

by jasondaurus at May 22, 2015 10:46 AM

Michal Čihař

Weblate 2.3

Weblate 2.3 has been released today. It comes with better features for project owners, better file formats support and more configuration options for users.

Full list of changes for 2.3:

  • Dropped support for Django 1.6 and South migrations.
  • Support for adding new translations when using Java Property files
  • Allow to accept suggestion without editing.
  • Improved support for Google OAuth2.
  • Added support for Microsoft .resx files.
  • Tuned default robots.txt to disallow big crawling of translations.
  • Simplified workflow for accepting suggestions.
  • Added project owners who always receive important notifications.
  • Allow to disable editing of monolingual template.
  • More detailed repository status view.
  • Direct link for editing template when changing translation.
  • Allow to add more permissions to project owners.
  • Allow to show secondary language in zen mode.
  • Support for hiding source string in favor of secondary language.

You can find more information about Weblate on, the code is hosted on Github. If you are curious how it looks, you can try it out on demo server. You can login there with demo account using demo password or register your own user.

Weblate is also being used as official translating service for phpMyAdmin, Gammu, Weblate itself and other projects.

If you are free software project which would like to use Weblate, I'm happy to help you with set up or even host Weblate for you.

Further development of Weblate would not be possible without people providing donations, thanks to everybody who have helped so far!

PS: The roadmap for next release is just being prepared, you can influence this by expressing support for individual issues either by comments or by providing bounty for them.

Filed under: English phpMyAdmin SUSE Weblate | 0 comments

by Michal Čihař ( at May 22, 2015 08:00 AM

May 21, 2015

Michal Čihař

Translating Sphinx documentation

Few days ago, I've started writing Odorik module to manipulate with API of one Czech mobile network operator. As usual, the code comes with documentation written in English. Given that vast majority of users are Czech, it sounds useful to have in Czech language as well.

The documentation itself is written in Sphinx and built using Read the Docs. Using those to translate the documentation is quite easy.

First step is to add necessary configuration to the Sphinx project as described in their Internationalization Quick Guide. It's matter of few configuration directives and invoking of sphinx-intl and the result can be like this commit.

Once the code in repository is ready, you can start building translated documentation on the Read the docs. There is nice guide for that as well. All you need to do is to create another project, set it's language and link it from master project as translation.

The last step is to find some translators to actually translate the document. For me the obvious choice was using Weblate, so the translation is now on Hosted Weblate. The mass import of several po files can be done by import_project management command.

And thanks to all these you can now read Czech documentation for python Odorik module.

Filed under: Coding English Odorik Weblate | 0 comments

by Michal Čihař ( at May 21, 2015 04:00 PM

May 20, 2015

Michal Čihař

Odorik modul 0.4

Dnes jsem vydal novou verzi Python modulu Odorik. Přidává spoustu užitečných vlastností pro zjištění stavu účtu.

Jako bonus k tomuto vydání je dokumentace přeložená do češtiny za použití Weblate.

Filed under: Coding Czech Odorik | 0 comments

by Michal Čihař ( at May 20, 2015 04:00 PM

Smita Kumari

GSoC'15 - awaiting another summer with phpMyAdmin

Yay! another year of Google summer of code project and again with phpMyAdmin :-). First, I would like to thank all the awesome phpMyAdmin mentors for accepting my project proposal and giving me yet another opportunity to work on a GSoC project.
Last summer, it was an awesome time working on automated normalization and central list of columns features of phpMyAdmin with help of Marc, he had been amazing mentor and really learnt a lot from him.

This time my project is to improve the Error reporting server of phpMyAdmin in terms of performance, scalibility, ease of use and functionality. Error reporting server is used to collect and manage the error reports submitted by users. I hope to make it usable. I am awaiting a fun filled coding summer ahead under the guidance of my this year mentor Michal Čihař.

Keep checking out this space for my this year GSoC project progress, those might be boring read but will try make it a bit informative! :-)

by Smita Kumari ( at May 20, 2015 03:47 PM

May 18, 2015

Michal Čihař

Python modul pro Odorik

Pokud náhodou použáváte operátora Odorik, mohl by se vám hodit můj nový modul pro Python. Dokonce ani nemusíte umět Python, dá se použít i přímo z příkazové řádky.

Funkčnost je zatím velmi jednoduchá, ale čase určitě přibudou další užitečné funkce (nebojte se mi nahlásit nápady).

Zjištění zůstatku na účtu:

$ odorik balance
balance: 123.45

Zjištění aktuálního využití dat:

$ odorik mobile-data --phone 00420789123456
bytes_total: 111593707
bytes_down: 87039672
bytes_up: 24554035
price: 0

Odeslání SMS zprávy:

$ odorik send-sms 00420789123456 "Ahoj, jak se mas?"

Více příkadů naleznete v dokumentaci.

Filed under: Coding Czech Odorik | 0 comments

by Michal Čihař ( at May 18, 2015 04:00 PM

Deven Bansod

GSoC 2015 : Weekly Report #1 : RFE #1485

Hi, as I had posted here, I have been selected for GSoC 2015 with phpMyAdmin and will be working on project ‘Feature Request Project Enhancments’ mentored by Isaac Bennetch. The official GSoC 2015 timeline suggests that the project coding-up period starts on 25th May, but I had started to work on project on 6th May, […]

by Deven Bansod at May 18, 2015 08:08 AM

Madhura Jayaratne

phpMyAdmin work during thirty second week

The main highlight of the week was the two security issues handled during the week. I was after some time a security issue was reported and in fact there was only on security issue reported prior to these in 2015. As the security coordinator I handle communicating with reporters, obtaining CVE IDs, preparing security announcements and part of the fixing as well. We had to port the changes to 4.0, 4.2, 4.3 and 4.4 since all these series are supported for security fixes. The issues were,

Security issues
#4899 CSRF in setup
#4900 Man-In-the-Middle - Github API

The usual bug fixing continued during the week. An old bug, #4367 Import status infinite loop, received attention and was fixed sine it was reported to be still present in the current stable version. Moreover, a couple of bugs related to designer was fixed.

Bugs fixed
#4367 Import status infinite loop
#4512 ForceSSL Redirect Check
#4898 JS error after selecting a field and press Enter
#4902 Designer: Loading does not work
#4904 Setup: Overview > Display does not work
#4906 Designer: pages from all databases
Escape database and table names for partition maintenance

Feature request #1242 Work with --skip-grant-tables, was investigated and this seems to work for most part in the current master branch. Additionally, following feature requests were fixed,

Feature requests implemented
#1668 Procedures window shift-click should select multiple rows
#1669 Designer: "Sticky" menu option
Allow truncating partitions in partition maintenance

Feature requests investigated
#1242 Work with --skip-grant-tables

Improvements were done to the code segments related to partition maintenance. Further, filter_input s were removed from code since they bypass token check, posing a security threat.

Code improvements
Improve partition maintenance functionality
Quit using filter_input since they bypass token check

by Madhura ( at May 18, 2015 02:44 AM

phpMyAdmin work during thirty first week

I am sorry this post comes quite late, almost a week after the thirty first week has ended. I thought of combining this with the next week report but later decided to have separate posts for each week to be able to track work done during individual weeks.

Again, bug fixes were the predominant operation during the week and some of these bugs were reported by myself. So, following are the bugs fixed during the period.

Bugs fixed
#4885 Some icons are above the overlay of jQuery dialogs
#4886 Clicking on external links in advisor rules give JS error
#4887 Name column excluded from quick filters in central columns
#4888 Filter in central columns does not work in other languages
#4890 'window.webkitStorageInfo' & 'webkitIndexedDB' is deprecated
#4891 CSV Import ignores "Replace table data with file" checkbox
#4892 Undefined variable: unique_conditions
#4894 Deleting without confirmation
#4896 Non-styled error page when following results link

I also engaged in implementing new features. 
MariaDB website offers a service to analyze the output of 'Explain' queries. So, as requested in rfe #1413, phpMyAdmin now allows to post the output of 'Explain' queries to this service and get a better understanding. The new link is shown when you click on 'Explain SQL' link is clicked. I also added multi submit operations to the routines, triggers and events pages. With this the user is able to export and delete muple rte items.

Feature requests implemented
#1413 Explain analyzer
UI improvements to the `Processes' page
Multi submits for RTE pages
Use CodeMirror editor in query

Feature requests investigated
#548  Cross-tablulation/pivot table
#1451 HTML5 input tag enhancements

I investigated a quite old rfe #548 which requested for a pivot table functionality in phpMyAdmin. I found a couple of interesting third party pivot table libraries that operate on JavaScript level which can be integrated with phpMyAdmin. However, these libraries would not be able to handle large datasets and break the purpose of a pivot table. Moreover, since there are quite a lot of applications that does this work now a days we thought this is out of scope for phpMyAdmin.

by Madhura ( at May 18, 2015 01:54 AM

May 14, 2015

Zhang Hao

The OOP & refactor project weekly report 2

Hello everyone, one week soon come to an end, and here is my weekly report on what did I do in the last week. During last week, I was working on the Template class and try to fix the test problems in the PR 1642.

Files Covered In This Week

  • PMA_SystemDatabase_test.php
  • PMA_DatabaseInterface_test.php
  • Template.class.php

Outcomes In This Week

Introduce trim($string) to Template class
public static function trim($string)
public function render($data = array(), $trim = true)

I implemented a trim method for Template class because I found Javascript often reference value of HTML tags. Sometimes there may have some whitespaces in these tag values (Perhaps, for better readability of template codes), then we cannot get correct value of that tag by using $().html() in Javascript.
The trim method is default applied to all templates after it gets rendered. If you don’t want it be trimed, you can simply set the boolean field $trim in render method to false.
The trim method is designed to be static, so it can also be used as an utility for trim spaces in HTML pages.

Fix on PR 1642
Firstly I feel so sorry for taking so long to fix the problem of the pull request. I over estimated my knowledge on the phpunit test framework, eventually I have to spend a lot of more time to learn how to use it again.
Tests involve functions originally in tbl_views.lib.php was moved from PMA_tbl_views_lib_test.php to PMA_SystemDatabase_test.php and PMA_DatabaseInterface_test.php.

What will I Do Next

In next few days I will submit my works on template of the Designer Module. Also, I will post a new blog on dependency calculation on TableSearch.class.php.
The major job in next week will be starting template on table related scripts.

by jasondaurus at May 14, 2015 08:05 PM

May 12, 2015

Michal Čihař

python-gammu 2.2

After recent porting python-gammu to Python 3, it was quite obvious to me that new release will have some problems. Fortunately they have proven to be rather cosmetic and no big bugs were found so far.

Anyway it's time to push the minor fixes to the users, so here comes python-gammu 2.2. As you can see, the changes are pretty small, but given that I don't expect much development in the future, it's good to release them early.

Filed under: English Gammu python-gammu SUSE Wammu | 0 comments

by Michal Čihař ( at May 12, 2015 10:00 AM

May 07, 2015

Zhang Hao

The OOP & refactor project weekly report 1

After a whole week of work, I have almost finished the job of first phase — calculate dependencies. Firstly I used automated tools like doxygen and phpstorm to determine where the functions is called. Then I can decide how to refactor it.

Files covered in this week

  • tbl_chart.lib.php
  • tbl_indexes.lib.php
  • tbl_relation.lib.php
  • tbl_printview.lib.php
  • tbl_gis_visualization.lib.php
  • tbl_columns_definition_form.lib.php
  • Table.class.php

But the works on tbl_relation.lib.php and Table.class.php are not finished yet. Also the TableSearch.class.php will be covered in less than 2 days.

Outcomes in this week


Function to get html for displaying table chart


Function to get the name and type of the columns of a table

Function to handle the creation or edit of an index

Function to get the sql query for index creation or edit

Function to prepare the form values for index

Function to get the number of fields for the form

Function to get form parameters

Function to get html for displaying the index form


Get table related parameters from $_REQUEST object

Get header cells for showing table

Function for moving, load all available column names

Get row data for regenerating previous when error occurred

Get submit properties for regenerating previous when error occurred

An error happened with previous inputs, so we will restore the data * to embed it once again in this form

Get form parameters for old column


Returns a modified query iwht only the label column and spatical columns

Formats a visualization for the GIS query results

Generate visualization for GIS query results and save it to a file

Notes on Table.class.php

I suggest that PMA_Table should be created by PMA_DatabaseInterface::getTable($db, $table) and the PMA_DatabaseInterface objecct should be injected as a parameter in constructor. And there will be some changes for the class:
These functions are used to handle errors or messages in an array, but we can use a throw statement for that

  • getLastError
  • getLastMessage

These functions are not used, so we can remove them:

  • set
  • get

These functions are static methods, and we needs to make them a member function

  • isView
  • isUpdatableView
  • analyzeStructure
  • isMerge
  • getStatusInfo
  • countRecords

These functions are not table related actions. They are UI related actions, therefore I’d like to move them into other classes (maybe PMA\Template?)

  • getUiProp
  • setUiProp
  • removeUiProp

The public $cache property should be moved into PMA_DatabaseInterface.

That’s all for this week! I will fix issues mentioned by my mentor in the PR 1642 as soon as possible.

by jasondaurus at May 07, 2015 08:24 PM

May 06, 2015

Michal Čihař

This was Sri Lanka

We've spent beautiful weeks on Sri Lanka in January and February. On the way we've seen many different places - ancient cities, mountains, natural parks or beaches. Here comes selection of photos which I like most.

Filed under: English Photography Travelling | 0 comments

by Michal Čihař ( at May 06, 2015 10:00 AM

May 02, 2015

Zhang Hao

Details on the “OOP and refactoring” project

As it mentioned in the phpMyAdmin GSoC 2015 idea list, the project is majorly about refactoring the code base to object-oriented. But I’d like to take one more step. I am going to build a basic template system first, which is helpful for our refactoring process.

Simple template system

As the HTML response are treated as PHP strings now, it’s pretty horrible to maintain such a long-long string variable. We can never know whether the HTML in it is correct or not until we execute it. So our first task is to build a basic template system. It is not necessary to apply the template system to the whole phpMyAdmin project immediately, but we can use it to manage codes that we needed to refactor this time easily.

You can see the template branch in my fork for more detail:

It create a PMA_template method in libraries/template.lib.php and I’ve applied this feature to the designer module. Here is the commit information:

The designer module should be much “clearer” now.

It should be noticed that the template system is isolated from phpMyAdmin current codebase. That is, the introduction of template system is painless and it just makes it easier for us to refactor codes. After refactoring, the HTML strings should be moved out from the Table related scripts and form template scripts.

Object-oriented design and refactoring

Currently our logical functions are separated in files with “.lib” and “.class” postfixes. But most of these files are poor designed and needs to be refactored. As the idea list specified, the project is pretty huge and it’s open-ended. So I’d like to separate the task into three steps:

Build a source code dependency graph for files involved in the refactoring project
It’s worthwhile to make a detailed plan before we start working. That is, for this project, we need to build a source dependency graph with details of functions we needs to refactor. A source dependency graph should contains the following things:

  1. Dependencies of the function
  2. Callers of the function
  3. Classification of the function
  4. A brief description on the function

Since the project is so huge that we can hardly handle all of files in this project, we should control our scope in Table related functionalities in the project. During this duration, we will also create template scripts to extract HTML strings from php codes.

Packaging the relative functions into classes

After we building the source code dependency graph, we can safely move the functions into classes. We can apply some object-oriented design pattern in this step, but it just only a little. Actually, all we need to do in this step is just putting the functions into the related classes, just like the way figured out in the Table class:

We can reserve some procedural features in this step for convenience.

Refining classes

After the classes have been built, we need to refine them with some OO design patterns. For the Table class we have talked above, we can package the $db and $table parameters into the class as private members for re-usability. And the ways to refactor the class structures is depended on the features of specified class.

To make a class well-designed, we can apply following few steps for each class:

  1. Encapsulate relative variables to keep the API concise
  2. Pick redundant parameters in member functions and make them be private members
  3. Extract duplicated pieces of code and put them into member functions

But when we refining these classes, we should always remember that it’s important to keep the code base simple and clean. So we must not over-design these classes. Basically I think the factory pattern is good enough for our project this time.


  1. A simple template system
  2. A source dependency graph for relative files
  3. Well-designed, and OOPed classes

by jasondaurus at May 02, 2015 04:37 PM

May 01, 2015

Madhura Jayaratne

phpMyAdmin work during thirtieth week

The highlight of this week was the coding style improvements I undertook. During the last upgrade to the CheckStyle rules, there were couple of new rules added and these had increased the number of style violations. Moreover, day to day coding had introduced new violations and the violation count was 800+. I spent pretty much two days fixing these issue and the following graph shows the improvements to the code.

I also worked on improving the Designer during the week. While working on this I found a number of issues with the designer and went on to report them and eventually fix them. The list of bugs fixed during the week consists mostly of these bugs. Following bugs were fixed/investigated during the week.

Bugs fixed
#4878 Column list of central columns is not cleared
#4879 Exit full screen in Designer does not change the button text
#4880 Designer icons missing when using original theme
#4881 jQuery dialogs in Designer are not displayed in full screen
#4883 Search function breaks when searching for certain combinations of backslashes and slashes
Fix resize icon in Designer
Fix inconsistent icons

Bugs investigated
#4872 Drop table doesn't remove the table name from navigation bar
#4874 Username like john_smith is split to two names in dropdown list

I also worked on a couple of feature requests during the week. One of them was on supporting MariaDB virtual columns. However this was postponed as our current parser was unable to recognize virtual column syntax and this was vital for extracting column details. This will hopefully be implemented during the summer when one of the GSoC students attend to the parser. See

With the implementation of feature request #1380, the SQL editor support parametrized queries. Now you can simply copy paste queries from your code and bind parameters before query execution. Additionally, towards the end of the week I went on to improve the original theme. The jQuery dialogs in original theme always looked alien to me and with the latest style changes they are in better harmony.

Feature requests implemented
#1380 Support for Parameters with raw SQL
Improve table maintenance page
jQuery-ui style updates for original theme

Feature requests investigated
#1517 Support for virtual/persistent columns
#1628 need "display binary as hex/string" option in Settings UI
#1633 User Preferences reset should clear the value in pma__userconfig

by Madhura ( at May 01, 2015 01:15 PM

April 28, 2015

Madhura Jayaratne

phpMyAdmin work during twenty eighth and twenty ninth weeks

Here I am combining the work done during two week into a single blog post. Since GSoC rush was somewhat over I started attending to bugs again. However, I was on leave on 16th April to celebrate Sinhala new year.

Following are the bugs attended during the two weeks.

Bugs fixed
#4207 json_encode error , because strftime return string is not utf8 in Windows 8.1 Chinese version
#4794 Server error viewing table content
#4849 Functions accessed from navigation do not load on ajax dialog
#4850 Relation view on 1920
#4851 PHP errors in login dialogue
#4853 Relation view between 1600 and 1780 px
#4859 Don't scroll (to bottom) when editing multiple rows
#4862 Misaligned Inline edit field
#4866 Limit column dragging in index edit dialog
#4869 Drop column action not asking to confirm
#4870 Inconsistency in 'Ignore' checkbox in insert page
$meta->decimals is not available for mysql extension
Fix issues related to number of decimal places in time

Bugs investigated
#3270 Revoking privileges when you lack 'ALL PRIVILEGES' yourself
#3481 Designer relations in IE 8
#3588 X-WebKit-CSP Header breaks Safari 5.1
#4510 QBE generates wrong query
#4795 Query builder: missing joint for the intermediary table
#4854 "Error: Token mismatch" when using multiple servers in parallel
#4856 Error with PMA_DisplayResults->getTable()
#4858 issues with SQL autocomplete
#4871 Error on creating table

Similar to earlier weeks, I also attended to a set of feature requests. Among feature requests implemented, notables ones are the transformation for IPv6 addresses and support for CHECKSUM TABLE operation. Transformation for IPv6 was implemented as both output and input transformation.

I also worked on schema import from mysql workbench output files. Work on this is still underway.

Feature requests implemented
#433  Import/export of meta data (relations, MIME, etc.)
#1639 Add grouping to stored procedures in the navigation tree
#1655 Support IPv6 browser transformation
#1656 Edit vs Change
#1661 Support checksum table
Input transformation - ip to binary
Icon for columns with indexes / identify keys in structure snapshots
Option groups for 'With selected' dropdown in database structure page
Set maximum length for fields based on mysql name sizes

Feature requests investigated
#862  Group dbs/tables by regexp
#913  Import schema from Mysql Workbench
#1657 Single-line vs multi-line edit fields
#1659 Display the CREATE TABLE statement like HeidiSQL

Moreover, I did a couple of code improvements.

Coding improvements
Properly identify types in doc comments

by Madhura ( at April 28, 2015 06:16 AM

Deven Bansod

Project Details : Feature Request Project Enhancements

Hi, as I posted earlier, my project ‘GSoC 2015 Feature Request Enhancements‘ got selected with phpMyAdmin in Google Summer of Code, 2015. This are some details about the project : Project Details The project aims to provide some added functionality to the users in the above mentioned areas. The project involves implementing these RFEs over […]

by Deven Bansod at April 28, 2015 03:19 AM

Selected for GSoC 2015 with phpMyAdmin

Hi all, The list of accepted projects for Google Summer of Code, 2015 [0] was published yesterday (i.e.) 27th April, 2015. My project ‘GSoC 2015 Feature Request Enhancements’ submitted to phpMyAdmin[1] has been selected. Seeing my name up there and recieving the mail regarding my selection was one of the happiest moments of my life. […]

by Deven Bansod at April 28, 2015 03:11 AM

April 27, 2015

Dan Ungureanu

Hello, world!

Hello, world!

I am one of the participants in this year’s Google Summer of Code. During this summer, I will be working with the phpMyAdmin team to rewrite the SQL parser that is used in analyzing queries. My project’s title is “Parser and Analyzer Rewrite” and as the name suggests, the purpose of it is to rewrite a better SQL parser and analyzer that will be implemented in phpMyAdmin by the end of the summer. During this summer, Marc Delisle, who is one of the maintainers of phpMyAdmin and my mentor, is going to review my work.

To get a better idea of what my project consists, you can read the abstract of my proposal that can be found on Google Melange website here and a copy of my entire proposal, which can be found here. I hope it will serve well any students that are planning to participate in GSoC next years.

April 27, 2015 12:00 AM

April 15, 2015

Michal Čihař

Packaging python-gammu

After Monday release of separate Gammu and python-gammu, the obvious task was to get the new package to distributions.

First I've started with Debian packages, what was quite easy as from quite complex CMake + Python package it is now purely CMake and it was mostly about removing stuff. Soon the updated Gammu package was uploaded to experimental. Once having that ready, I've also update the backports for Ubuntu and these are available in Gammu PPA. Creating new python-gammu package was a bit harder as this is the first Python 3 compatible package I've created, but it's now ready and sitting in the NEW queue.

While working on python-gammu package, I've realized that some of the data used in testsuite are missing in the tarball. While not being critical, this is definitely not nice, so I've decided to release python-gammu 2.1 today. It also includes fixes for some corner cases found by coverity.

For openSUSE the packaging was quite easy as well, stripping out unneeded parts of Gammu package went smoothly and it's now in hardware project, SR to Factory is pending. With python-gammu it turned out to be much harder as the testsuite had failed there with some strange error coming out of libdbi. After looking deeper into it, the problem is in new return type available in Git snapshot openSUSE is shipping. Fortunately producing fix was quite easy, so next Gammu upstream will handle that properly and package in hardware project is already patched. You can now use python-python-gammu from devel:languages:python and SR to Factory is pending as well.

Filed under: Debian English Gammu python-gammu SUSE Wammu | 0 comments

by Michal Čihař ( at April 15, 2015 10:00 AM

April 14, 2015

Michal Čihař

Hacking Gammu

I've spent first day of SUSE Hackweek on Gammu. There are quite many tasks to be done and I wanted to complete at least some of them.

First I started with the website. I did not really like the old layout and aggressive colors and while touching it's code it's good idea to make the website work well in mobile devices. I've started with conversion to Bootstrap and It turned out to be quite easy task. The next step was making the pages simpler as in many places there was too much information hidden in sidebar. While doing content cleanup, I've removed some features which really don't make much sense these days (such as mirror selection). Anyway read more in the news entry on the site itself.

Second big task was to add support for Python 3 in python-gammu. It seems that world is finally slowly moving towards Python 3 and people started to request python-gammu to be available there as well. The porting itself took quite some time, but I've mostly completed it before Hackweek. Yesterday, there was just some time spent on polishing and releasing standalone python-gammu and Gammu without python bindings. Now you can build python-gammu using distutils or install it using pip install python-gammu.

Filed under: English Gammu python-gammu SUSE Wammu | 0 comments

by Michal Čihař ( at April 14, 2015 06:30 AM

April 10, 2015

Madhura Jayaratne

phpMyAdmin work during twenty seventh week

During the week I attended both bug fixes as well as feature requests. To the latter part of the week I also attended some coding style improvements.

Among the bugs that were fixed, fixing output buffering was interesting. Since, I wasn't very familiar with the output buffering used in phpMyAdmin this was a good learning experience for me as well. Here, the issues was to use output buffering for CSS and JS. I modified the PMA_OutputBuffering class to accommodate output buffering for CSS, static and dynamic JS.

Here are the list of bugs fixed and investigated during the week.

Bugs fixed
#4829 Create procedure via SQL Editor not more possible
#4833 CSS and Javascript are not compressed
#4841 Status page: Mislukte pogingen per uur value is incorrect
#4848 Trigger sql with delimiters maxes out cpu resources
MIME Transformation link fixed

Bugs investigated
#4757 Error: Token mismatch
#4787 If mysql server default timezone is not set(by default), Phpmyadmin export wrong timestamp and timezone combination
#4847 Some query take very long time

The ability to export metadata was implemented as requested in  RFE #1632. These metadata are the data in configuration storage related to databases or tables being exported. With this one would be able to do a complete export and see the full state reinstated. Additionally the ability to copy multiple rows were implemented. 

The feature requests for the week were

Feature requests implemented
#1632 Importing and exporting pMA meta-data
#1643 No SQL query for loading data
#1646 Metro theme design update
#1650 Support a default page in designer
#1651 Allow copying mutiple rows
#1653 New data validation feature and datetime type

Feature requests investigated
#1645 MIME Transformation Imagelink and link - repairs and idea
#1648 Metro theme - table background style
#1654 After login session expires, restore navigation pane

Previously the designer loaded the first designer page for the database. Now it looks for page by the name of the database to load as default and falls back to old behavior in the absence of such a page.

Coding style improvements
No longer use global variables in schema export plugins

by Madhura ( at April 10, 2015 04:39 PM

April 05, 2015

Madhura Jayaratne

phpMyAdmin work during twenty sixth week

During this week I was back to bug fixing. This is mainly because the GSoC application deadline has passed and the pull request rush from potential GSoC students have declined. So I had a look at the bug tracker and did some cleaning up and fixing. Here are the bugs fixed during the week.

Bugs fixed
#3292 Incoherent backup generated
#4067 Import Resume at breakpoint failure
#4754 pMA DB not detected properly
#4821 Timed-out import fails to restart when file represented
#4825 Datepicker missing when changing number of rows on Insert page
#4828 JavaScript is loaded in wrong order
#4831 Recaptcha API v2
#4832 Sorting distinct values result loses links
#4834 Do not attach token to css requests to improve caching
#4835 PMA_hideShowConnection not called after submit_num_fields
#4836 server warning after moving from console to Direct clicks

Apparently, allowing users to resubmit import files when import fails due to timeout has been broken for some time. Now that it is fixed user is presented a link to click when the import hits timeout and this link takes the user to import interface to resubmit the file with parameters carrying the details of where to restart the import from.

Additionally following bugs were investigated.

Bugs investigated
#3689 Variable 'character_set_client' can't be set
#4827 TEXT formatting doesn't work after editing
#4826 Two inline edit windows
#4829 Create procedure via SQL Editor not more possible 

Feature requests received relatively less attention during this week. I started working on supporting .xz compression. I did most of the work and a pull request for the same is was submitted. However, I had a hard time installing and configuring xz compression im my environment and wasted almost half a day trying. So I have to get someone else's help to test my PR.

Feature requests implemented
#1621 Add support for xz compression
#1635 Have ZeroConf create phpmyadmin DB if possible

Feature requests investigated
#862  Group dbs/tables by regexp
#1633 User Preferences reset should clear the value in pma__userconfig

by Madhura ( at April 05, 2015 04:53 PM

April 02, 2015

Michal Čihař

GSoC 2015 applications for phpMyAdmin

As usual, I look at the application stats for phpMyAdmin just after student application period of Google Summer of Code is over.

First of all we got way more proposals than in last years, but also number of bogus proposals went up (you can see them as ignored in the chart).

Same as in past years, people leave the submission to the last moment, even though we encourage them to submit early so that they can adjust the application based on our feedback. But still we got more than half of the proposals in last three days.

Number of applications over time

Anyway we're just working on evaluation and will finalize it in upcoming days. Of course you will know the results from Google on April 27th.

PS: You can compare to our 2014, 2013 and 2012 numbers.

Filed under: English phpMyAdmin SUSE | 0 comments

by Michal Čihař ( at April 02, 2015 04:00 AM

April 01, 2015

Madhura Jayaratne

phpMyAdmin work during twenty fifth week

During the week I attended to a mix of feature requests and bug fixes. Following are the feature requests implemented and investigated.

Feature requests implemented
#354  PDF schema sort options
#933  Manage multiple variable in bookmarked query
#947  Show edit/delete also when there is calculated column
#1619 Show databases as list instead of as dropdown when no database is selected

Feature requests investigated
#942 Table flush for NDB

With rfe #933, phpMyAdmin now support multiple variables in bookmarked queries. The placeholders should be in the format [VARIABLEN] where N is the index of the variable. For backward compatibility [VARIABLE] is considered  equal to [VARIABLE1] for backward compatibility.

Another long awaited feature was the ability to edit/delete columns when there is a calculated column. Earlier even though a primary or a unique key was present in the results set, the presence of a column with a function applied removed the ability to delete, edit and inline edit the row. Now this is supported and inline editing is not allowed for the function column.

Additionally following bugs were fixed during the week.

Bugs fixed
#4781 "Requery" bookmark from console does not work
#4805 Inline edit broken when using functions in query
#4814 MySQL 5.7.6 and Databases
#4815 Infinite calls to index.php
#4819 Request URI too large
Use 'server' parameter in console to work in multi server environments
Missing tooltip in monitor
Missing sort icons in monitor

Additionally, I took a couple of hours to fix some of the Scrutinizer error reported.

Code improvements
Fix code style errors reported by Scrutinizer

by Madhura ( at April 01, 2015 07:48 AM

March 27, 2015

Michal Čihař

Porting python-gammu to Python 3

Over the time I started to get more and more requests to have python-gammu working with Python 3. Of course this request makes sense, but I somehow failed to find time for that.

Also for quite some time python-gammu has been distributed together with Gammu sources. This was another struggle to overcome when supporting Python 3 as in many cases users will want to build the module for both Python 2 and 3 (at least most distributions will want to do so) and with current CMake based build system this did not seem to be easy to achieve.

So I've decided it's time to split python module out of the library. The reasons for having that together are no longer valid (libGammu has quite stable API these days) and having standard module which can be installed by pip is a nice thing.

Once the code has been put into separate git module, I've slowly progressed on porting to Python 3. Most of the problems were on the C side of the code, where Python really does not make it easy to support both Python 2 and 3. So the code ended up with many #ifdefs, but I see no other way. While doing these changes, many points in the API were fixed to accept unicode stings in Python 2 as well.

Anyway, today we have first successful build of python-gammu working on both Python 2 and 3. I'm afraid there is still some bug leading to occasional segfaults on Travis, but not reproducible locally. But hopefully this will be fixed in upcoming weeks and we can release separate python-gammu module again.

Filed under: English Gammu python-gammu Wammu | 0 comments

by Michal Čihař ( at March 27, 2015 05:00 PM

Spring is here

Finally winter seems to be over and it's time to take out camera and make some pictures. Out of many areas where you can see spring snowflakes, we've chosen area Čtvrtě near Mcely, village which is less famous, but still very nice.

Filed under: English Photography Travelling | 0 comments

by Michal Čihař ( at March 27, 2015 05:00 AM

March 25, 2015

Madhura Jayaratne

phpMyAdmin work during twenty fourth week

The highlight of the week was updating metro theme to be compatible with upcoming phpMyAdmin version 4.4. The decision to have an alternative theme was made at this months online team meeting and metro theme was selected for this upgrade since most people preferred it and it happened to be color blind friendly.

My approach to update the theme was to basically go through all the commits related to styling changes since 2013 (when metro theme was up to date). This was to make sure that no layout styling goes unnoticed. However, this was quite time consuming. I also went on to style some of the jQuery dialogs, so they are in harmony with the rest of the application. All the commits related to the theme upgrade can be found at

Even though metro theme had its sprite generated most of its original icons were missing. So I decomposed the sprite image to get the individual icons. However, when regenerating sprites with all the images a part of sprites looked washed out. I am attending to this issue right now.

During the latter part of the week I also attended to some bugs. Here are the bugs that were fixed.

Bugs fixed
#4802 Changelog page is not working
#4804 Undefined Index after export schema
#4806 Unable to work with two different databases in two tabs
#4810 Broken find and replace
#4812 Issues with index dialog while creating a table
Fix missing title for MySQL documentation

Moreover, following feature request related to specifying indexes while creating table was implemented. Meantime I went on to clean up the code related to this feature.

Feature requests implemented
#1626 Display/edit index name

by Madhura ( at March 25, 2015 03:13 PM

March 18, 2015

Madhura Jayaratne

phpMyAdmin work during the twenty second and twenty third weeks

I was on leave on the first three days of the twenty second week. So here I am combining the work done on the rest of the twenty second week and twenty third week into a single blog post. 

During the two week I attended to bugs, new features, unit testing as well as to general coding improvements. Following are the bugs fixed during the period.

Bugs fixed
#4758 Firefox with auth_type to http with multiple server doesn't work anymore
#4779 PMA_Util::parseEnumSetValues fails on enums with UTF-8 values
#4789 Views aren't dropped when copying a database
#4790 DROP TABLE/VIEW IF EXISTS are not tracked
#4791 Zoom search: js error
Compatibility with central columns of version 4.4

Bug #4789  was figured out while attending to a feature request related to tracking and bug #4758 arose from another fix from infamous 'Token mismatch' problem.

Following are the feature requests I worked on during the period. Pagination for GIS visualization was necessary as visualizing all the data from the table made the browser unresponsive when there were lot of data.

Feature requests investigated
#900 Add one option to disable SQL_CALC_FOUND_ROWS
#1300 tracking changes of store proc, triggers, events

Feature requests implemented
#1306 add lock tables, disable keys options
Pagination for GIS visualization

During the period I attended to a number of improvements in the central columns page. I changed how the 'extra' column is handled and now it stores value as a comma separated value which is readily compatible with data from older version. I also rewrote most of the unit test related to central columns and attended to fix UI inconsistencies I detected on the page.

Unit testing
Rewrite unit tests related to central columns

Code improvements
Improve `extra` value handling in central columns
UI improvements to central columns page
Being able to use multiple servers at the same time when using cookie auth
Metro theme upgrade to be compatible with 4.4 

While looking into a feature request regarding the ability to use multiple servers simultaneously I figure out we need to have initialization vectors per server and added it. This was later ported to QA_4_4 branch. At the online team meeting it was decided to update metro theme to be compatible with the upcoming version 4.4 and I started working on that. I am continuing this work to the next week.

by Madhura ( at March 18, 2015 02:38 AM

March 13, 2015

Deven Bansod

RFEs and Bugs!

Hi all, As I stated in my previous post, I started to contribute to phpMyAdmin from last few weeks. And these last weeks have been quite eventful and wonderful. The basic way to contribute to majority of the open-source projects is to take a cue for the project developers and start with some basic bugs […]

by Deven Bansod at March 13, 2015 12:03 PM

March 07, 2015

Deven Bansod

phpMyAdmin – A new Beginning in Open Source Contributions!

Hi all, I am back after a long time once again. After a series of bug fixes for WordPress Meta, I have recently started to contribute to phpMyAdmin project. I will continue contributing to WordPress as well but for now, I am excited about phpMyAdmin. phpMyAdmin provides a web interface to MySQL and is widely […]

by Deven Bansod at March 07, 2015 01:43 PM

March 02, 2015

Michal Čihař

Gammu 1.35.0

Gammu 1.35.0 has been just released. This is just bugfix release to fix some major issues introduced in 1.34.0.

Full list of changes:

  • Fixed encoding of UTF-8 for higher code points.
  • Improved provided udev rules.
  • Fixed possible lock while getting network status in SMSD.
  • Various localization updates.

You can download it from

I will not make any promises for future releases (if there will be any) as the tool is not really in active development.

Filed under: English Gammu Wammu | 0 comments

by Michal Čihař ( at March 02, 2015 05:00 PM

February 27, 2015

Madhura Jayaratne

phpMyAdmin work during the twenty first week

Continuing from the previous week I focused more on feature requests. However this did not prevent me from fixing couple of bugs. Most of these bugs were noticed while I was doing something in phpMyAdmin and fixed them immediately. So following are the bugs fixed during the week.

Bugs fixed
#4760 Cannot re-import settings from local storage
#4767 Drizzle: undefined index in
#4777 Some images are missing in Designer for original theme
#4778 SQL error when database list is sorted by additional columns
#4780 Notice when timestamp column does not have default value

From the feature requests implemented rfe #501 regarding the SSL grant option when creating users was due for a long time. Now you can require that the user connect with SSL or specifically X509 or even more specifically with other options. 

Feature requests implemented
#501  Support for SSL GRANT option
#1207 Export users associated with a specific schema/database
#1327 Hide 'Add user' link if user does not have privileges
#1441 Add regexp match when using AllowArbitraryServer
Change tracking activation status from db level tracking page
More default transformations for pmadb

Feature requests investigated
#1182 Use Hex/WKT for Geometry Export columns

Meanwhile, I also worked on some JS coding style improvements.

Code improvements
JS code style improvements

by Madhura ( at February 27, 2015 05:20 PM

February 22, 2015

Madhura Jayaratne

phpMyAdmin work during twentieth week

Unfortunately the twentieth week was started with ill health. I was not feeling during the weekend, but started work on Monday since I felt little better. However, I was down with flu again and did not work on Tuesday and Wednesday. So, twentieth was a 3 working day week.

During the week I attempted a mix of bug fixes and feature requests. One of the reported bugs was about exporting being limited by the number of tables and this was due to the new feature to allow aliases for db/table/columns. This feature was using empty parameters even when no aliases were used. I reported and fixed bug #4769 which was related to the same functionality. 

Bugs fixed
#4763 Database export with more than 512 tables fails
#4769 Previously set column aliases are destroyed if returned to the same table
Properly align export alias jQuery dialog
Fix persisting column visibility to permanent storage

Bugs investigated
#3481 Designer relations in IE 8

I noticed that there were two feature requests about editors for JSON and HTML and realized that these could be implemented as input transformations. I used CodeMirror editor by adding required JSON and XML modes to implement the features. Since SQL mode was already available I implemented SQL editor as a input transformation as well.

Feature requests implemented
#685  Editor for HTML content
#1275 Comfortable editing of serialize()'d data (Implemented for JSON)
#1481 Need Support Time/DateTime/TimeStamp dynamic columns
CodeMirror based SQL editor as an input transformation

I also made a couple of UI improvements to the view level pages making them more constistent with table level pages.

Code improvements
Make UI more consistent for views

by Madhura ( at February 22, 2015 02:05 PM

February 20, 2015

Madhura Jayaratne

phpMyAdmin work during the nineteenth week

During the week I continued to focus on feature requests. I went onto clean up the feature request tracker by implementing, marking implemented and duplicate ones and even rejecting the ones that did not make much sense. Further, as per Marc's suggestion, a set of feature requests chosen by me was discussed at the monthly IRC to decide on their faith. Following are the list of feature requests implemented and investigated during the week.

Feature requests implemented:
#937  Relations with views like with tables
#1208 Linking from information_schema
#1235 Relation view: move to main "Structure" page
#1241 Browse Field -> Search
#1549 Reset auto-increment when exporting structure
Ability to disable foreign key check when emptying tables

Feature requests investigated:
#448  FK relation popup DHTML window based on multiple fields
#620  (Relations) Display multiple fields for relations
#947  Show edit/delete also when there is calculated column
#1509 Metro theme update to work with 4.1.8
#1526 Make export sql more friendly to side-by-side comparison
#1599 UNIQUE/PRIMARY key index for a partitioned table

Bug fixing did not receive priority this week since a set of keen potential GSoC students were looking into bugs. However, whenever I came across a bug I fixed them. That is why the following fixed bugs do not have bug numbers :)

Bugs fixed:
Remove extra column heading in view structure page
Add missing confirmation when deleting tracking report entries
Add missing confirmation when deleting central columns

Bugs investigated:
#4758 Firefox with auth_type to http with multiple server doesn't work anymore

A couple of weeks back I worked on improving both db and table level tracking pages. However, I still felt that those pages were not in par with other pages and went onto do a number of UI improvements to them. These included sortable tables, adding missing icons, adhering to various UI configuration etc. More UI improvements were done to the central columns page as well.

Code improvements:
UI improvements to the db, table tracking pages and central columns page
Fixing bugs reported by Scrutinizer

by Madhura ( at February 20, 2015 02:44 PM

February 19, 2015

Michal Čihař

Weblate 2.2

Weblate 2.2 has been released today. It comes with improved search, user interface cleanup and various other fixes.

Full list of changes for 2.2:

  • Performance improvements.
  • Fulltext search on location and comments fields.
  • New SVG/javascript based activity charts.
  • Support for Django 1.8.
  • Support for deleting comments.
  • Added own SVG badge.
  • Added support for Google Analytics.
  • Improved handling of translation file names.
  • Added support for monolingual JSON translations.
  • Record component locking in a history.
  • Support for editing source (template) language for monolingual translations.
  • Added basic support for Gerrit.

You can find more information about Weblate on, the code is hosted on Github. If you are curious how it looks, you can try it out on demo server. You can login there with demo account using demo password or register your own user.

Weblate is also being used as official translating service for phpMyAdmin, Gammu, Weblate itself and other projects.

If you are free software project which would like to use Weblate, I'm happy to help you with set up or even host Weblate for you.

Further development of Weblate would not be possible without people providing donations, thanks to everybody who have helped so far!

PS: The roadmap for next release is just being prepared, you can influence this by expressing support for individual issues either by comments or by providing bounty for them.

Filed under: English phpMyAdmin SUSE Weblate | 0 comments

by Michal Čihař ( at February 19, 2015 05:00 PM

February 11, 2015

Michal Čihař

Hosted Weblate welcomes new projects

In past days, several new free software projects have been added to Hosted Weblate. If you are interested in translating your project there, just follow instruction at our website.

The new projects include:

PS: Added later during the week:

  • Boilr, a cryptocurrency and bullion price alarms for Android
  • SwitchyOmega, a proxy manager and switcher for Chromium

Filed under: English phpMyAdmin SUSE Weblate | 0 comments

by Michal Čihař ( at February 11, 2015 05:00 PM

February 10, 2015

Madhura Jayaratne

phpMyAdmin work during the eighteenth week

Eighteenth week saw most of my time spent on implementing feature requests. Marc also suggested I do the same as potential GSoC students were looking into bugs. Similar to the last week I started going through the feature request tracker giving priority to older ones. Some of the requests were out of date either because they had been implemented already or did not make sense for the current version. Following are the lists of feature requests implemented and investigated.

Feature requests implemented
#954  Allow SALT in ENCRYPT function
#1074 Renaming of colums referenced as foreign keys in InnoDBs
#1174 Comment removed from query -> no comment in db function/proc
#1179 Speed up slow triggers by using EVENT_OBJECT_SCHEMA
#1260 Setting LoginCookieValidity > session.gc_maxlifetime

Feature requests investigated
#1070 db_structure.php : column for table creation and update date
#1126 Allow SQL query textarea growable / resizable
#1129 Allow designer to show other Databases
#1253 Show per table privileges

Meanwhile, I also attended to a set of bugs.

Bugs fixed
#4592 Editing columns (tbl_structure.php) is incredibly slow
#4706 Schema export doesn't handle dots in db/table name
#4745 Tracking does not handle views properly
#4748 Column name center-aligned instead of left-aligned in Relations
#4750 Disable renaming referenced columns

Bugs investigated
#4742 CSV export of query result fails with name problem

Since most of the application use JSON heavily, I wanted to add a transformation to display JSON content for some time and during the week I had time to implement it.

Code improvements or refactoring
New transformation for JSON content stored in databases

Note: I was on leave on Tuesday, 3rd February.

by Madhura ( at February 10, 2015 12:44 PM

February 05, 2015

Madhura Jayaratne

phpMyAdmin work during the seventeenth week

During this week I spent more time on feature requests compared to other weeks. Since there are a large number of feature requests most of which are relatively old, I started by going though the older ones. Some of them were quite old that they did not make sense in the current context. However, I found a couple of quite interesting ones which were missing in phpMyAdmin and went on to implement them. Following are the feature requests implemented.

Feature requests implemented:
#719  More details in PDF relation view
#767  USING BTREE support for HEAP/MEMORY tables
#801  Built-in transformations and relations
#1096 Cannot enter connection for federated engine table

While attempting #767 I improved the current interface for editing indexes by adding more options which are supported by newer version of MySQL.

I also engaged in usual bug fixing and following are the bugs fixed and bugs investigated.

Bugs fixed
#4729 Display original field when using "Relational display column" option and "Choose column to display" is empty
#4730 Notice while browsing tables when phpmyadmin pma database exists, but not all the tables
#4734 Default values for binary fields do not support binary values
#4735 Floating menu bar appears on top of jQuery dialogs
#4736 Changing display options breaks query highlighting
#4738 Header lose align when scrolling in Firefox v35
#4739 Make index editor work without the Ajax dialog
#4741 In ./libraries/Advisor.class.php#184 vsprintf(): Too few arguments

Bugs investigated
#4732 Some databases not showing
#4733 config parameter 'only_db' ignored

by Madhura ( at February 05, 2015 01:30 PM

January 24, 2015

Madhura Jayaratne

phpMyAdmin work during the fifteenth and sixteenth weeks

Since I had to spend some time on a couple of submissions for part-time M.Sc. that I am following, I took leave on 15th, 16th and 19th, 20th Jan 2015. So I am combining the work done on 6 days over fifteenth and sixteenth weeks here. 

Results display direction was deprecated for a long time due to the additional complexity it brought to the code and we hoped to remove the feature a couple of years back. However, its removal never took place and during the first half I focused on doing that. The related code was quite mingled with the rest and had to take a lot of caution not to break the normal query results displaying.

Code improvements and cleanup
Remove display direction which was deprecated for some time

Usual bug fixing was continued during the two weeks and following are the bugs fixed during the period.

Bugs fixed
#4699 Navigation panel should not hide icons based on 'TableNavigationLinksMode'
           Properly implement 'TableNavigationLinksMode' configuration
#4703 Unsaved schema page exported as pdf.pdf
#4705 Table structure: adding primary key doesn't refresh page
           Reload navigation after adding indexes
#4707 Call to undefined method PMA_Schema_PDF::dieSchema()
#4702 URL is non RFC-2396 compatible in get_scripts.js.php
#4721 Undefined property: stdClass::$version
#4719 'only_db' not working
#4716 Collapse all in navigation panel is sometimes broken
#4700 Error text: Internal Server Error
#4724 Cannot navigate in filtered table list
#4717 Database navigation menu broken when resolution/screen is changing
#4727 Collation column missing in database list when DisableIS is true

Moreover, following bug were investigated during the six days.

Bugs investigated
#4704 DisableIS enabled, only shows information_schema db
#4693 phpMyAdmin sometimes hangs after login
#4701 session_expired URL loop on session expiry via ajax
#4709 Cannot browse table if sorting column is renamed
#1437 Configure Text/Icons/Both separately for tabs and in-table edits

by Madhura ( at January 24, 2015 02:58 AM

January 23, 2015

Deven Bansod

WordPress Meta #262

Hi there! After having tried my hands at some of the bugs with “good-first-bugs” tag in the meta section, I thought it wise to move to other open tickets. And here I land at #262. The WordCamp organizers generally print and/or distribute the Badges at their wordcamps which are often called “Gravatar Badges”. These are […]

by Deven Bansod at January 23, 2015 08:22 AM

January 19, 2015

Deven Bansod

2014 in review

Another Wonderful feature from Automattic! Loved it :) The stats helper monkeys prepared a 2014 annual report for this blog. Here’s an excerpt: A San Francisco cable car holds 60 people. This blog was viewed about 510 times in 2014. If it were a cable car, it would take about 9 trips to carry […]

by Deven Bansod at January 19, 2015 02:51 PM

Few More Bugs Targetted!

Having experienced a patch acceptance recently, I was in a good mood to continue my contribution to WordPress-meta and that happened when I found (in the meta-trac) #574. As mentioned by Ian on the ticket description It’s normal for CampTix installations to get a significant number of failed registrations (i.e., Attendee posts with theFailed or […]

by Deven Bansod at January 19, 2015 09:52 AM

January 17, 2015

Deven Bansod

WordPress Development Re-started!

Hello Happy New Year!  Here I am again! Back again after a long time! After my application( failed though! ) in last year’s GSoC 2014 with WordPress, I was almost cut off from the community and development due to some other commitments. But when I used WordPress in December 2014 while revamping the Society for […]

by Deven Bansod at January 17, 2015 04:41 AM

January 15, 2015

Michal Čihař

Weblate UI polishing

After releasing Weblate 2.0 with Bootstrap based UI, there was still lot of things to improve. Weblate 2.1 brought more consistency in using buttons with colors and icons. Weblate 2.2 will bring some improvements in other graphics elements.

One of thing which was for quite long in our issue tracker is to provide own renderer for SVG status badge. So far Weblate has offered either PNG badge or external SVG rendered by Relying on external service was not good in a long term and also caused requests to third party server on many pages, what could be considered bad privacy wise.

Since this week, Weblate can render SVG badge on it's own and they are also matching current style used by other services (eg. Travis CI):

Translation status

One last thing which really did not fit into new UI were activity charts. In past they were rendered as PNG on server side, but for upcoming releases we have switched to use Chartist javascript library and render them as SVG on client side. This way we can nicely style them to fit into page, they scale properly and also reduce server load. You can see them in action on Hosted Weblate server:

Weblate activity chart

Filed under: English phpMyAdmin SUSE Weblate | 0 comments

by Michal Čihař ( at January 15, 2015 05:00 PM

January 12, 2015

Madhura Jayaratne

phpMyAdmin work during the fourteenth week

Fourteenth week of phpMyAdmin work drew my attention to both bug fixing as well as feature request implementations. 

Since the bug rush had slowed down a bit I had the chance to look into feature requests. At the beginning of the week I went though the feature requests tracker and identified a set of rfe s the made sense and implemented some of the during the week. So following are the new features that were added during this week.

Feature requests implemented
#347   Allow table with transformed column anywhere in FROM clause
#1450 Improve handling of missing function in ImportXml
#1525 Generate keys one per line, like foreign key constraints
#1590 Recaptcha API v2
#1580 Individual Zeroconf PMA tables support

I enjoyed fixing a very old rfe, #347, which I wanted to see in phpMyAdmin for some time. Implementing rfe #1580 Individual Zeroconf PMA tables support was motivated by the recent work I did in the same area. I also enjoyed upgrading the reCaptcha feature to its new API.

Routine bug fixing was also carried out during the week and following are the list of bugs that were implemented and investigated.

Bugs fixed
#4685 Call to a member function isUserType() on a non-object
#4686 Select elements flicker and selects something else
#4687 Designer breaks without configuration storage
#4688 File permissions in archive
#4691 Do not include console when no server is selected

Bugs investigated
#4510 QBE generates wrong query
#4646 Version Check Broken

by Madhura ( at January 12, 2015 05:38 PM

January 07, 2015

Madhura Jayaratne

phpMyAdmin work during the thirteenth week

During this week I attended to a mix of feature requests as well as usual bug fixes. First few days of the week was mostly spent on implementing new feature requests. One of them were regarding the facility to format SQL and I tried implementing it with CodeMirror. CodeMirro did not have formatting rules for SQL and I added a set of simple rules for SQL. However, CodeMirror developers have discontinued developing/supporting the formatting module.

Feature requests
#1582 SQL formatter (proposed)
#1567 Sever Variables Table UI Improvements
#1572 User prefs: Diff-friendly JSON for config

Second half of the week was dedicated to fixing bugs related to phpMyAdmin configuration storage. It started with a fix for ZeroConf functionality, however the fix went on to be quite big (more of an implementation than a fix), taking pretty much two days. I noticed a number of shortcomings in the configuration storage while fixing this bug and I attended to those bugs as well.

Bug fixes
#4675 phpMyAdmin should be able to work without 'examples' DIR
#4676 Auto-configuration issues
#4677 Advanced feature checker does not check for favorite tables feature
#4678 Some of the data stored in configuration storage are not deleted upon db or table delete
#4679 Setup does not allow providing a name for favorites table
#4680 Number of favorite table are not configurable in setup
#4681 'Central columns table' field in setup does not have a description
#4683 Relational data is not properly updated on table rename

by Madhura ( at January 07, 2015 08:20 AM

December 31, 2014

Madhura Jayaratne

phpMyAdmin work during the twelfth week

A merry Christmas to everyone!!!

Christmas happened to fall on my Twelfth week of work. The work week was a short one since I took leave on Thursday and Friday (25th and 26th) around Christmas. Just like the last week, I focused on bug fixing during this week as bugs were reported frequently. Following are the bugs that were fixed during the week

Bugs fixed
#4651 don't open console with esc
#4653 Always connection error was shown, on /setup at tab "configuration storage"
#4661 Drag and drop file import always fails
#4663 Export missing back ticks for order table name
#4664 select min() displays 1 row, but reports the table amount of rows returned
#4666 Undefined indexes in table print view of a view
#4668 Remove from central columns error
#4670 CSV import reads both commas and values into first column after first row
#4671 Unable to move all columns

Additionally following feature request was addressed.

Feature requests implemented
#1563 Change keyboard shortcut for console display to other then 'escape'

The last time I updated the TCPDF library we got an error and I reported it to upstream. Since the developer has fixed it, TCPDF library used in phpMyAdmin was updated to its latest version.

Updated TCPDF to its latest version 6.2.3

by Madhura ( at December 31, 2014 01:30 PM

Michal Čihař

No Windows builds for Gammu and Wammu

For quite some time I used to produce Windows builds for both Wammu and Gammu using cross compiling on Linux. But this has proven to produce some errors and needed my time to maintain the cross compilation environment. I've decided to stop producing Windows binaries and I don't expect to get back to that anytime soon.

This is actually no news for Wammu, where I've removed Windows builds some about two years ago as they proven to be too broken for normal usage, but for Gammu it's new as previous release had Windows builds. I've lost the cross compilation environment due to hard drive failure and restoring it is simply too much of work and still will not allow me to build complete release (I've not managed to build Python modules properly).

So if anybody is interested in Windows binaries, he needs to produce them on Windows. I can help with fixing code or existing setup scripts (they probably need adjustments as they were tweaked for cross compiling), but somebody has to setup the environment with all dependencies and test the build on Windows.

Filed under: English Gammu Wammu | 0 comments

by Michal Čihař ( at December 31, 2014 11:00 AM

December 30, 2014

Michal Čihař

Gammu 1.34.0

Gammu 1.34.0 has been just released. It has been more than year from last Gammu release and it's time to release all new features and bugfixes.

Full list of changes:

  • Add phone power ON/OFF function.
  • Removed deprecated Python modules gammu.Data and gammu.Worker.
  • Store network name and code in SMSD tables.
  • Fixed build with recent clang compiler.
  • Fixed several possible issues found by Coverity scan.
  • Fixed possible crash on SMSD startup.
  • Fixed decoding unicode SMS messages.
  • Added identification for several Nokia phones.
  • Fixed compilation issues on various platforms.
  • SMSD now honors loglevel for all logging targets.
  • SMSD can automatically hangup incoming calls.
  • Correctly detect Network errors.

You can download it from

I will not make any promises for future releases (if there will be any) as the tool is not really in active development.

Filed under: English Gammu Wammu | 0 comments

by Michal Čihař ( at December 30, 2014 09:00 AM

December 29, 2014

Michal Čihař

Wammu 0.38

It seems that the 0.37 release was not that good as I hoped for, so here comes another bugfix release. So here comes Wammu 0.38.

The list of changes is not really huge:

  • Compatibility with latest wxPython releases.
  • Fixed corrupted appdata metadata.
  • Fixed broken desktop file due to Chinese translation.
  • Translation updates.

I will not make any promises for future releases (if there will be any) as the tool is not really in active development.

Filed under: English Gammu Wammu | 0 comments

by Michal Čihař ( at December 29, 2014 01:50 PM

December 21, 2014

Madhura Jayaratne

phpMyAdmin work during tenth and eleventh weeks

Here I am combining work done on two weeks since I was on leave for four days during the latter week and there is no point of writing a separate blog post for just one day of work.

During the tenth week I concentrated solely on the bug fixes as a load of bugs were reported during the week. Most of them were on the 4.3 series and this indicated that more and more people are starting to use the new version, which is great.

So here is the list of bugs I fixed during the six days

Bugs fixed
#3794 failure to handle repeating empty columns when importing ODS
#4617 UI issues with sortable tables
#4625 "Insufficient space to save the file" on export SQL to file on server
#4626 Ctrl + click on a column not is sort triggers a server call to erroneous url
#4627 "file_get_contents(examples/create_tables.sql): failed to open stream" after update
#4628 PHP error while exporting schema as PDF
#4629 Problem with custom SQL queries using cookie authentication
#4630 AJAX request infinite loop
#4631 Server selector submits two server parameters
#4632 Notice in ./libraries/Util.class.php#1916 Undefined index: query
#4633 Wrong parameter in fetchValue
#4634 Error reporting creates an infinite loop
#4638 Default Export Method setting broken
#4639 Export SQL missing indentation first field
#4644 Error when browsing tables
#4646 Version Check Broken
#4649 Attributes field size smaller than others

In addition to that I attended to the following list of bugs

Bugs attended
#4438 “Token Mismatch” Error In Safari via MAMP
#4589 Can not add new procedures
#4641 Zeroconf PMA tables support
#4642 phpmyadmin often fails to load due to specific load order

by Madhura ( at December 21, 2014 12:23 PM

Public Transportation Usage Analysis for City of Chicago

As part of my BI course I'm taking for my part time MSc, I started working on an analysis on the public transit data of the city of Chicago.


Public transportation system can benefit greatly from insights into the traffic volumes. These insights can be helpful in identifying the peak times and peak routes and will be instrumental in effective allocation of buses and other transportation modes to cater those transportation needs. This can further help the authorities in making other corporate decisions such as purchase decisions and decisions to issue route permits (in SL context) etc.

Further, such insights would be used to do demand management. In demand management the user is offered incentives to direct users to use the transportation system when the congestion is less. Airline industry benefits greatly from demand management and this can be applied to other transportation to various extends. To do demand management, insights into the traffic details would be crucial and it can in turn help the authorities of companies identify the effectiveness of such demand management strategies.

Data Set

The data was available from the Open Data Portal of City of Chicago and it included data for both bus and metro lines. The data was in the granularity of days and for buses it had data for each of the bus routes. In the case of metro, the data was in the form of metro station entries. More data was available on bus stops and metro stop. However, these data could not be used for the analysis since the fact tables were in the granularity of bus route and station entries.

The data was in CSV format and my first task was to get them into a relational databases. I did a quick analysis on data in the relational database. Bus rides data had about 700,000 tuples while the station entry data had about 600,000 tuples. I had to derive separate tables for metro stations and bus routes and define required primary keys as well as foreign keys among tables. Since the data was in granularity of days I created a new table for days and added extra columns such as year, month, day of month, day of week which is helpful in further analysis. So my final schema looked like this.


For the analysis the preferred BI suite chosen was Pentaho. However, I soon realized the the Community Edition of it lacks much of the ease of use and many things has to be done manually.

BI schema

Since time is the major dimension of the analysis I required time to form a hierarchy and designing time in a hierarchical manner was not possible with the schema generation in Pentaho BI server. For that I used the Pentaho Schema Workbench which allowed me to properly mark the dimension and time for the required hierarchy.

OLAP cube

OLAP cubes were generated using the jPivot plugin for Pentaho. Since time was defined in a hierarchy, now I can drilldown the cube in a more meaningful manner (in a year, month, day hierarchy). 


The dashboard available in the community edition lacks ease of use and dashboard needs to be defined and the tweaks needs to be done with CSS and JavaScript. So this dashboard creation is not for non-geeks. I included the following charts in the dashboard.
  • Bus rides by bus routes
  • Station entries by station
  • Bus rides and station entries by year (to identify overall trend in public transportation usage) 
  • Bus rides and station entries by month (to identify seasonal variations)
  • Bus rides and station entries by day of month
  • Bus rides and station entries by day of week (to identify weekly patterns)
  • Bus rides and station entries over time


Pentaho comes with a report design tool which allows creating report templates and binding data with them easily . I created reports which included total bus rides and station entries by month, year and by station and routes. Report Designer allows publishing those reports to the BI server. However, I got an error while doing so. Though I did not find any documentation to suggest that, I suspect this is not allowed in the community edition. Report designer allows publishing reports in multiple formats and the following is a sample report in HTML format.

Observations and Interesting Findings

A number of interesting observations were made using the Pentaho dashboard. 

There is an year by year increase of metro usage while the usage of buses remained constant over the course of 13 years. 

As expected, Sunday recorded the least usage of public transport followed by Saturday. However, interestingly Monday had a noticeable drop compared to other week days. May be people feel lazy to wake up on Monday mornings and rush to work with their own vehicles :)

Moreover, interesting seasonal variations were observed which is suspected to be related to four seasons. There was a noticeable drop in the public transit usage in the months of December, January, and February and this is possibly due to the winter conditions.

Further I noticed that some days in the month has considerable less usage. In the below graph 31st day of the month record lowest since not every month has a 31st. The drop in 29th and 30 the can probably be asserted to the month of February. Drops on 1st, 4th and 25th can possible be due to US holidays that falls on fixed days (1st Jan - New year's day, 4th Jul - Independence day, 25th Dec - Christmas day). However, I did not find such a drop for 11th Nov which is the Veteran's day.

by Madhura ( at December 21, 2014 11:02 AM

December 09, 2014

Madhura Jayaratne

phpMyAdmin work during the ninth week

This was a four day week since I was on leave on 3rd Wednesday.

During the week I was more engaged in code improvement work opposed to putting effort on bug fixing compared to previous weeks. The jQuery and jQuery-ui versions phpMyAdmin was using were too outdated and it needed an upgrade for sometime. jQuery was stuck at version 1.8 since there were major changes in upgrading from 1.8 to 1.9. This included a set of methods removed such as .live() and .die() methods which were deprecated for sometime. However, these methods were heavily used in phpMyAdmin making phpMyAdmin stuck at version 1.8.

I started with going through the upgrade guide for jQuery 1.9 [1] and inspecting the phpMyAdmin for possible breakages in case of an jQuery upgrade. There were heaps of .live() and .die() methods to be replaced and more instances of other methods removed. 

Then I went on to check each of jQuery plugins for their updates as most of them were pre 1.9. Some of them had updates - the ones that are actively being developed -, while for the others, I had to patch them to be compatible with jQuery 1.9+. Now after much effort phpMyAdmin uses jQuery version 1.11.1 and jQuery-ui version 1.11.2.

Code improvements
Making code compatible with jQuery 1.9+ and upgrading phpMyAdmin to use latest versions of jQuery and jQuery-ui
Upgrading phpMyAdmin to use latest versions of jQuery plugins where newer versions are available and upgrading other jQuery plugins to be compatible with jQuery 1.9+

Bug Fixes
#4615 SQL highlighting in process list breaks on auto refresh
#4616 Warning on db structure print view page
#4618 Page scrolls while GIS visualization is zoomed in/out with mousewheel

Security fixese
#4611 DOS attack with long passwords (coordination)
#4612 XSS vulnerability in redirection mechanism (coordination)


by Madhura ( at December 09, 2014 12:07 PM

December 05, 2014

Michal Čihař

Weblate 2.1

Weblate 2.1 has been released today. It comes with native Mercurial support, user interface cleanup and various other fixes.

Full list of changes for 2.1:

  • Added support for Mercurial repositories.
  • Replaced Glyphicon font by Awesome.
  • Added icons for social authentication services.
  • Better consistency of button colors and icons.
  • Documentation improvements.
  • Various bugfixes.
  • Automatic hiding of columns in translation listing for small screens.
  • Changed configuration of filesystem paths.
  • Improved SSH keys handling and storage.
  • Improved repository locking.
  • Customizable quality checks per source string.

You can find more information about Weblate on, the code is hosted on Github. If you are curious how it looks, you can try it out on demo server. You can login there with demo account using demo password or register your own user. Ready to run appliances will be soon available in SUSE Studio Gallery.

Weblate is also being used as official translating service for phpMyAdmin, Gammu, Weblate itself and others.

If you are free software project which would like to use Weblate, I'm happy to help you with set up or even host Weblate for you.

Further development of Weblate would not be possible without people providing donations, thanks to everybody who have helped so far!

Filed under: English phpMyAdmin SUSE Weblate | 0 comments | Flattr this!

by Michal Čihař ( at December 05, 2014 02:25 PM

December 03, 2014

Madhura Jayaratne

phpMyAdmin work during the eighth week

As mentioned in my last blog post I started working on the token mismatch issue that we received a lot of complaints about for so long. The main issue was that both http and config authentications were not able to refresh the page when when PHP session expires. I implemented a solution similar to what we used for cookie authentication on session timeout which would refresh the page with new token. 

I also attended to regular bug fixes reported within the week. Altogether here is the list of bugs fixed and attended.

Bugs fixed
#4605 Unseen messages in tracking
#4606 Tracking report export as SQL dump does not work
#4607 Syntax Error during db_copy operation
#4608 SELECT permission issues with relations and restricted access
#4227 Token mismatch when using HTTP AUTH and the SESSION expires
#4280 Error: Token mismatch
#4387 Token mismatch (one server http auth, one cookie)
#3893 Token mismatch error on every action

Bugs attended
#4569 Issues with Relation View dropdowns
#4409 Not displaying results of archive table

During the latter part of the week I concentrated on refactoring and code improvements. I improved the database and table level tracking pages with facility to enable/disable tracking for multiple tables, ability to delete multiple versions of tracking etc. I also worked on displaying results of multiple queries. This involved quite a lot of changes since most of the work had been done assuming that only one result set would be displayed. This work continued to the next week. So here is the list of feature requests and refactoring done during the week.

Feature requests
#1562 Allow tracking multiple table at once from database level tracking page
#1564 Improve action message on Tracking page

Refactoring and code improvements
Refactoring database level and table level tracking pages
Refactoring query results display page to facilitate display results of multiple queries at once

PS: I took the day off on Monday, the 24th.

by Madhura ( at December 03, 2014 01:19 AM

November 27, 2014

Madhura Jayaratne

phpMyAdmin work during the seventh week

This week was quite busy with a lot security fixes. At the beginning of the week 5 security vulnerabilities were reported and I spent most of Monday and Tuesday doing fixes, porting them to other branches, preparing security advisories and communicating with reporter, security team and CVE team.

Following are the list of security vulnerabilities fixed.

Security fixes
#4594 Path Traversal in File Inclusion of GIS Factory
#4595 Path Traversal can lead to leakage of line count
#4596 XSS through exception stack
#4597 XSS through pma_fontsize cookie
#4598 XSS in multi submit

During the week I was also engaged in usual bug fixing and following bug fixes are now ready to be released with the next release.

Bug fixes
#4057 db/table query string parameters no longer work
#4444 No insert statement produced in SQL export for queries with alias
#4591 Spinner in navigation running forever
#4599 Input field is erased after keyboard language switch
#4602 Exporting selected rows export all rows of the query
#4603 Field disabled when internal relations used

Additionally, I also attended to the following bugs.

Bugs attended
#4254 Unable to log in after timeout had been exceeded (cookie)
#4008 Unable to log back in after session expired
#3773 No tables shown because of privileges of views
#4367 Import status infinite loop
#4295 Problem when session expires while importing file

Towards the end of the week, I had a look at the token mismatch issue that were reported to us several time. I will update you on the progress of this in the next post.

by Madhura ( at November 27, 2014 04:36 PM

November 18, 2014

Michal Čihař

Mercurial support in Weblate

Weblate has started as a translation system tightly bound to Git version control system. This was in no means design decision, but rather it was the version control I've used. But this has shown not to be sufficient and other systems were requested as well. And Mercurial is first of them to be supported.

Weblate 2.0 already had separated VCS layer and adding another system to that is quite easy if you know the VCS you're adding. Unfortunately this wasn't the case for me with Mercurial as I've never used it for anything more serious than cloning a repository, committing fixes and pushing it back. Weblate needs a bit more than that, especially in regard to remote branches. But nevertheless I've figured out all operations and the implementation is ready in our Git.

In case somebody is interested in adding support for another version control, patches are always welcome!

Filed under: English phpMyAdmin SUSE Weblate | 0 comments | Flattr this!

by Michal Čihař ( at November 18, 2014 05:00 PM