ExtraWatch allows you to watch your website visitors and bots in real-time from the administration menu. Specially their IP addresses, countries they come from, geographical location on a map, which pages they are viewing, their browser and operating system, it creates daily and all-time stats from these information plus unique, pageload and total hits statistics. Furthermore, you can block harmful IP addresses, see blocked attempts stats, evaluate the trend charts, and create goals based on many parameters. In the frontend, it can show the top countries, user and visit information for certain periods of time.
(It's a port of popular JoomlaWatch component for Joomla CMS to Wordpress from the same author)
- translations: brazilian portuguese, dutch, french, german, greek, russian, slovak, slovenian, spanish, swedish, czech, danish, lithuanian, polish italian, turkish, latvian, ukrainian, bulgarian, albanian, bengali, chinese-simplified, chinese-traditional, estonian, indonesian, arabic, japanese, hebrew, croatian, hungarian, macedonian, ukrainian, vietnamese
Comments
Comment #1
jpontani commentedNeed a link to your project page, at least.
Comment #2
matto3c commentedSorry about that:
Sandbox link:
http://drupal.org/sandbox/matto3c/1452324
Drupal core version: 7.x
Demo server:
http://www.codegravitydemo.com/drupal/
username: demo
password: demo
Security certificate located in: extrawatch/administrator/components/com_joomlawatch/security_certificate.pdf
Comment #3
klausiPlease add the sandbox link to the issue summary. Don't forget to set the status to "needs review" if you want to get a review.
The response time for a review is now approaching 4 weeks. Get a review bonus and we will come back to your application sooner.
Comment #4
matto3c commentedHi,
Here's asked link to issues:
http://drupal.org/project/issues/1452324?status=All&categories=All
This project was imported to your git repository from:
http://code.google.com/p/joomlawatch/updates/list (I had to rename JoomlaWatch to ExtraWatch because it's now available for more platforms, not just joomla)
Comment #5
mkadin commentedCheck out this link to an automated review of your module for drupal coding standards. Looks like you've got a lot of work to do to get this drupal ready :X
http://ventral.org/pareview/httpgitdrupalorgsandboxmatto3c1452324git
Manual Review:
I'm not positive what the rules are with drupal modules, but I'm pretty sure that modules with Free and Pro versions are not allowed. At least, I've never seen any other contributed module with that model...I've also never been asked to sign a license agreement in a contrib module. Again, I'm no expert on licensing topics, but I'm confident that's not in line with the drupal style.
Also your module seems to do most of its work by itself, ignoring Drupal's core functionality, It seems like it has some pretty great features, but it isn't really integrated with drupal, which has me questioning its possibility of being an official contrib module. As I see it, the project application process is as much about proving that you're a capable, knowledgable, security-conscious drupal developer.
As a side note, your module seems to register admin/overlay as a menu item, which I think could be pretty confusing as there is already an overlay module in drupal core. I'd consider changing that name around.
Comment #6
matto3c commentedHi There, thank you for your reply,
I'll fix the warnings in the report you sent me, especially admin/overlay ..
but some of them - it's not possible to make corrections there:
For example: Variable "extraWatch" is camel caps format. do not use mixed | | case (camelCase), use lower case and _
Whatever.. I'll try to make the list of warnings smallest as possible.
Regarding the Free/PRO version, this model is from JoomlaWatch (from which was this ported)
and this license screen remained there.. I submitted a free basic version there, hoping it would be also useful for drupal users and community. (I wonder, are there some commercial modules too?)
Regarding the integration, you are right, I'm using the minimum of drupal's API as possible. Because ExtraWatch is available for Wordpress and no CMS also. I just wanted to have top 3 CMS integrations covered.. Joomla, Wordpress and also Drupal.. (hoping that Drupal is the one of the top 3 CMS :) )
If you don't accept this module because of this, please just write me right away, so I don't have to additional fixes from the report.
Thank you.
Comment #7
mkadin commentedI'm leaving this as 'needs review' until someone more experienced can come in and comment. That said, I do feel as though you're going to have a hard time getting this module through the review process without a very serious overhaul. I understand that the module is a port of a plugin for Joomla and Wordpress, and it seems like it has great functionality...but the review process here is pretty stringent.
Of course you can absolutely market and and distribute your module however and wherever you'd like, but to have it entered as an official contrib module here on drupal.org, I'm fairly sure you'll need to get it through the stringent rules of the review process.
http://drupal.org/node/539608 explains the detail of what to expect form the application here. Maybe that will help clear up what's you have to do to get the module in.
Comment #8
matto3c commentedOk thank you..
well.. other platforms have no problems with this model (that there's the least of CMS API used).. I thought that drupal would like to get as much interesting modules as possible.. and this module is very popular on Joomla
but of course, if there's strict NO from your side, I must accept it and move on to other CMS .. It's just a pity that I invested quite much time into making it compatible with drupal API and to make it work, because as I said I wanted to have top 3 CMS integrations covered.
Please just let me know soon :)
Thank you,
Matej Koval
www.codegravity.com
Comment #9
matto3c commentedNo update on this after 2 weeks? a 3rd most popular CMS which I thought is worth the effort ... but I was probably wrong
Comment #10
patrickd commentedI'm very sorry for the delay but there are currently about 160 other applications in the queue and only a hand full of reviewers (and also they got a job to do)
I can really understand your desperation with the process, I also got through it and it took months - that was the reason I took the initiative and helped out my self.
Please consider helping out in the queue your self, get a review bonus and we will come back to your application sooner.
Comment #11
lukas.fischer commented@Matto3c, I run your git repo on http://ventral.org/pareview/httpgitdrupalorgsandboxmatto3c1452324git again and there is a lot todo. I fully understand your feelings about the review process. When I first wanted to contribute a module years ago I was also frustrated. But - we not only have to accept this stringent process, we should actually love it. Just because it makes Drupal better, more stable and secure.
So - you may either start to rewrite the module or you ask for a co-maintainer. Btw. you could also use Coder http://drupal.org/project/coder which makes drupalify code much easier.
Comment #12
matto3c commentedHi,
thank you for your reply. I made some fixes (check the last commit)
and check the changed review:
http://ventral.org/pareview/httpgitdrupalorgsandboxmatto3c1452324git-7x-1x
there are some false reports: for example the ?> at the end of the files (they are not there anymore)
also the prefixes of the javascript funcitons - I made them unique and put the project name there - still the review script displays they need to be prefixed..
There are still some minor issues (after the end of reviewer script report) -
but please, forcing someone not to use camel case, and use _ instead - what kind of suggestion is that?
my variables are perfectly readable - eg. function: renderMostDynamicKeyphrases - the reviewer script's suggestion is to name this funciton as: render_most_dynamic_keyphrases .. wtf :)
Ok, anyway, all majors fixed now. I hope I'm closer to get the project approval.
Thank you.
Comment #13
matto3c commentedno-one? after 7 weeks?
Comment #14
patrickd commentedI'm sorry but just have a look into the queue, there are about a hundred applications waiting for more then 15 weeks.
As said, we do really need more hands in the application queue and highly recommend to get a review bonus so we can come back to your application sooner.
Comment #15
pgogy commentedHello,
I get
Warning: Cannot modify header information - headers already sent in drupal_goto() (line 685 of C:\xampp\htdocs\drupalclean\includes\common.inc).
After enabling the module
Clicking on extrawatch on the menu gives me
Strict warning: Only variables should be assigned by reference in ExtraWatch->ExtraWatch() (line 38 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.php).
Strict warning: Only variables should be assigned by reference in ExtraWatchVisit->ExtraWatchVisit() (line 36 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.visit.php).
Strict warning: Only variables should be assigned by reference in ExtraWatch->ExtraWatch() (line 38 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.php).
Strict warning: Only variables should be assigned by reference in ExtraWatchVisit->ExtraWatchVisit() (line 36 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.visit.php).
Strict warning: Only variables should be assigned by reference in ExtraWatch->ExtraWatch() (line 38 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.php).
Strict warning: Only variables should be assigned by reference in ExtraWatchVisit->ExtraWatchVisit() (line 36 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.visit.php).
Strict warning: Only variables should be assigned by reference in ExtraWatchVisit->ExtraWatchVisit() (line 36 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.visit.php).
The page after agreeing to the conditions says "A real-time AJAX joomla monitor" which might confuse people
Visiting some content to test the viewer gives me
Strict warning: Only variables should be assigned by reference in ExtraWatch->ExtraWatch() (line 38 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.php).
Strict warning: Only variables should be assigned by reference in ExtraWatchVisit->ExtraWatchVisit() (line 36 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.visit.php).
Strict warning: Only variables should be assigned by reference in ExtraWatch->ExtraWatch() (line 38 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.php).
Strict warning: Only variables should be assigned by reference in ExtraWatchVisit->ExtraWatchVisit() (line 36 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.visit.php).
Strict warning: Only variables should be assigned by reference in ExtraWatch->ExtraWatch() (line 38 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.php).
Strict warning: Only variables should be assigned by reference in ExtraWatchVisit->ExtraWatchVisit() (line 36 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.visit.php).
Strict warning: Only variables should be assigned by reference in ExtraWatchVisit->ExtraWatchVisit() (line 36 of C:\xampp\htdocs\drupalclean\sites\all\modules\extrawatch\components\com_extrawatch\class.extrawatch.visit.php).
Sorry this doesn't help much.
I'd consider hook_permissions and hook_help to make sure the module is easy to use and also that only certain people can access the view.
Comment #16
matto3c commentedHi,
I fixed all PHP strict warnings, I ran drupal in this mode, and made some refactoring (added static keywords to methods) etc.
I also changed the overlay/admin to overlay/extrawatch
Looking forward for review. Thank you!
Comment #17
matto3c commentedI made some other fixes for PHP strict mode
Comment #18
xenyo commentedMatt,
Although it may seem stringent, I think it will really help your review process if you read and follow some of the basic application guidelines such as;
http://drupal.org/node/1011698
Fill out the issue form:
Tips for ensuring a smooth review - http://drupal.org/node/1187664
Also, still throwing errors - http://ventral.org/pareview/httpgitdrupalorgsandboxmatto3c1452324git
Comment #19
mitchell commentedPlease see on Best Practices and Working with the Drupal API.
This code does not even resemble a Drupal module. It's ~20 MB uncompressed, while most modules are 8-80KB compressed.
I apologize for using the harshest status change, but in its current form, this is unable to be reviewed. Good luck continuing to learn Drupal. I recommend you check out the resources in http://skillcompass.org/topic/drupal-coding and http://skillcompass.org/topic/contrib-apis to get a good sense of what APIs are available.
Comment #20
matto3c commentedHmm.. this is a shame, the 20 MB are because most of it are the geolocation data. I wonder why wordpress and joomla have no problems with this extension. You want people to contribute, but after contributing the free version, you create obstacles.
The code is written the way that it uses minimum of drupal API, that's true. But it's because of being able to work with no CMS at all. Did you even try to install it to see what it does?
http://www.codegravity.com/demo/joomlawatch/1.2.17/
I respect your decision, but I still can't understand your opposition against these new modules on platform which is a growing platform and needs interesting modules to attract new users to get better market share.
Comment #21
mitchell commented> this is a shame
In part, yes. But think of the larger context. Maybe try learning a few new things while you're at it.
> the 20 MB are because most of it are the geolocation data.
Makes sense... but still screams 3rd party liability. Please look at How to review Full Project applications to get a sense of how I'm looking at this.
> I wonder why wordpress and joomla have no problems with this extension.
To be honest, it makes no difference.
> You want people to contribute, but after contributing the free version, you create obstacles.
I want to help people contribute, yes. But talking about free versus non-free versions doesn't jive with the philosophy behind Drupal. So, I'd be happy to help you get more involved, but it wouldn't lead toward me recommending non-free code to the community. That's just simply out of the question.
> The code is written the way that it uses minimum of drupal API, that's true. But it's because of being able to work with no CMS at all.
Hmm. I don't really know what to say about this. This is the first time anyone has presented me with that logic. So, I'd recommend further analysis on your part. I'll probably update the docs with a statement about this if someone else submits similar code, but, it's a lot more common for people to seek to extend Drupal.
> Did you even try to install it to see what it does?
I'm sorry, but my code smell-o-meter says bad things. As you can see, I value Drupal's core and contributed APIs very much. I'm not trying to stop you from working with people on drupal.org, but I don't see a point to reviewing this code and would recommend others prioritize more relevant code for the community.
Last minute edit: So the answer is yes, I /very/ briefly looked at it earlier to make the call I made above, and I haven't changed my mind about... but it does appear you have /some/ knowledge of Drupal practices and php coding experience. So I am more interested to read code you may contribute later, but until then, I can only offer words of encouragement along the path.
> http://www.codegravity.com/demo/joomlawatch/1.2.17/
This demo is for joomla and contains errors which don't even appear to be Drupal related:
Please understand, I'm not interested in reviewing this linked site any further.
>I respect your decision
I appreciate that.
> I still can't understand your opposition against these new modules on platform which is a growing platform and needs interesting modules to attract new users to get better market share.
I think my responses above should make a response to this point unnecessary.
Do you have any more questions regarding this application and the application review policies? If not, you can change this issue back to the old status to help me out a bit.
Comment #22
matto3c commentedHi, thank you very much for your reply.
(my responses are marked with >>)
Makes sense... but still screams 3rd party liability. Please look at How to review Full Project applications to get a sense of how I'm looking at this.
>> You can check all 3rd party libraries there
there is just:
js/fade.js
js/coda-slider.1.1.1.js
src/classes/class.ip2country.php
I want to help people contribute, yes. But talking about free versus non-free versions doesn't jive with the philosophy behind Drupal. So, I'd be happy to help you get more involved, but it wouldn't lead toward me recommending non-free code to the community. That's just simply out of the question.
>> This contributed version is 100% free and will always be.
> The code is written the way that it uses minimum of drupal API, that's true. But it's because of being able to work with no CMS at all.
Hmm. I don't really know what to say about this. This is the first time anyone has presented me with that logic. So, I'd recommend further analysis on your part. I'll probably update the docs with a statement about this if someone else submits similar code, but, it's a lot more common for people to seek to extend Drupal.
>>Well.. It's up to you. I saw other modules like: http://drupal.org/project/getclicky
I'm sorry, but my code smell-o-meter says bad things. As you can see, I value Drupal's core and contributed APIs very much. I'm not trying to stop you from working with people on drupal.org, but I don't see a point to reviewing this code and would recommend others prioritize more relevant code for the community.
>> I made the changes to the code and I will do the best to be compliant with your code style conventions.
http://ventral.org/pareview/httpgitdrupalorgsandboxmatto3c1452324git-7x-1x
It's clean now
but it does appear you have /some/ knowledge of Drupal practices and php coding experience. So I am more interested to read code you may contribute later, but until then, I can only offer words of encouragement along the path.
>> well.. I'm not saying that I'm a code-style perfectionist, but here are my arguments:
The whole code is object-oriented, with separated logic and presentation logic,
using the MVC principes (there are views in separate folders)
each class encapsulates own logic about one part of the application
There are also 44 language translations of this extension in separate folder (lang)
css styles are in own folder as well as javascript/sql/build files, etc.
If there are some places which use some kind of bad practices, please mention them here.
As I mentioned earlier, you can easily see the module here:
http://codegravitydemo.com/drupal/
(the agent module / frontend countries and visitors information)
- login to admin is: demo / demo
Click on "ExtraWatch" link
(The major tracking part with most of the functionality as presented in the videos)
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/c/o/codegravity.com/web/demo/joomlawatch/1.2.17/index.php:128) in /data/c/o/codegravity.com/web/libraries/joomla/session/session.php on line 423
>> fixed
>>I'll go through the application review policies once again to see if I did not miss something.
Thank you for your patience and I think this module could be a good addition to drupal community.
I'll do my best to make it so.
Best Regards,
Matej Koval
Comment #23
matto3c commentedComment #24
benjy commentedHi Mattoc3,
I don't mean to discourage you but I'm just going to list code changes / recommendations as I see them.
I know it seems like a lot but it will be worth it in the end.
Good luck :)
Comment #25
matto3c commentedHi benjy,
thank you very very much for your reply. I thought this post is completely dead and I moved on to other platforms such as Magento (successfully available on magento connect) and PrestaShop (currently in approval process).
Problem with your suggestion is, that they are the drupal-only functions.
The thing is, that ExtraWatch now runs on Joomla, Wordpress, Drupal, Magento, Prestashop, soon it will be integrated to OpenCart.
Why it does work?
Because I use the minimum of platform-dependent functions. I have a clear separation of interface implementations for each "platform".
Let me explain: in drupal to get a path: you recommend me to use drupal_get_path()
that's fine, it your way how to do things.. but for me, these things are Abstract, and are just in one class which encapsulates everything "platform"-dependent.
it's the same for all other CMS/platforms: eg. magento has some own way how to send email..
Please check:
\components\com_extrawatch\src\env\
is the only interface which exposes these platform-dependent methods: interface.extrawatch.env.php
it has the following definitions:
public function getDatabase();
public function getRequest();
public function & getURI();
public function isSSL();
public function getRootSite();
public function getAdminDir();
public function getCurrentUser();
public function getTimezoneOffset();
public function getUsersCustomTimezoneOffset();
public function getEnvironmentSuffix();
public function renderLink($task, $otherParams);
public function getUser();
public function getTitle();
public function getUsername();
public function sendMail($recipient, $sender, $recipient, $subject, $body, $true, $cc, $bcc, $attachment, $replyto, $replytoname);
public function getDbPrefix();
public function getAllowedDirsToCheckForSize();
public function getDirsToCheckForSize();
public function getAgentNotPublishedMsg($database);
1. - I can correct this, thanks
2. - I will rename this to EW_ROOT_PATH (or whatever, it just uses the same constant name)
3. - I'm afraid I cannot use this one (module_load_include's idea is nice, but it would not work with other platforms)
4. - Yepp, coding standards make sense. I changed many things from first 3 reports, I can carry on
5. - I'm also afraid that I would have to maintain "your" schema format together with the original one - which means duplicity
6. - won't also work with other platforms
7. - also too platform-dependent, I can probably separate this into implementation of interface, if the permissions are thing which are "required" for your application, so users can customize it.
If you strongly insist on everything being the "drupal-way", starting from such a simple thing like echoing an output,
I would have to stop every effort of providing this extension for free for drupal community.
Thank you.
Matej Koval
www.codegravity.com
Comment #26
matto3c commentedAfter 7 months of effort trying to contribute and fixing things some random strange guy from community suggested, I'm giving up..
no response, nothing..
Now I know why people post such comments:
http://amplicate.com/hate/drupal
I thought this IS a TOP CMS,
You're giving comments how things should be done, but what the hell is this then?
$form['#submit'][] = 'user_login_submit';
$form['name'] = array('#type' => 'textfield',
'#title' => t('Username'),
'#maxlength' => USERNAME_MAX_LENGTH,
'#size' => 15,
'#value' => 'admin',
'#required' => TRUE,
);
I just wanted to set default password value on my demo server.. How people should know what #spiderman values should be there?
ever heard of OBJECTS and CLASSES ??
..
I regret that I ever trusted this community and everything around Drupal
Don't wonder then, that this trend is so poor :(
http://www.google.com/trends/explore#q=joomla,%20wordpress,%20drupal
Comment #27
klausiSorry to hear your frustration. Feel free to reopen this application or create a new one for another project whenever you get back to Drupal.
Comment #28
avpaderno