ReachEdge is a simple module to install the ReachEdge tracking snippet to appropriate pages on the website. I am unaware of any other projects that add the ReachEdge Tracking code.

Here is a site id: 0609400b-668f-4f63-a09f-bd23b568f1ff

With this installed, you will be able to see network traffic going to ReachLocal related to visit information in the browser inspector while visiting the front end pages.

Project Page: https://www.drupal.org/sandbox/redrupalplugin/2675668

To Clone:
git clone --branch 7.x-1.x https://git.drupal.org/sandbox/REDrupalPlugin/2675668.git reachedge

Manual reviews of other projects

Comments

REDrupalPlugin created an issue. See original summary.

PA robot’s picture

Status: Needs review » Needs work

There are some errors reported by automated review tools, did you already check them? See http://pareview.sh/pareview/httpgitdrupalorgsandboxREDrupalPlugin2675668git

We are currently quite busy with all the project applications and we prefer projects with a review bonus. Please help reviewing and put yourself on the high priority list, then we will take a look at your project right away :-)

Also, you should get your friends, colleagues or other community members involved to review this application. Let them go through the review checklist and post a comment that sets this issue to "needs work" (they found some problems with the project) or "reviewed & tested by the community" (they found no major flaws).

I'm a robot and this is an automated message from Project Applications Scraper.

abhishek.pareek’s picture

Hey, there are some feedback from my end..

First of all please change your module folder name to match your rest of the module file's name.

Another thing is that you have used two variables here at
line 104: reachedge_pages
and at
line 103: reachedge_visibility_pages

but i don't see you have set them anywhere, then what is the need to store that fixed value in database.

Although this one is minor but still, at line 24: Title is not wrapped up in t()

REDrupalPlugin’s picture

I'm not positive what you mean by "change your module folder name to match the module's file name" can you explain?

I have removed the references to the variables: reachedge_pages and reachedge_visibility_pages

Also, If I try to use t on line 24, I get phpcs tells me not to use t() in hook_menu()

abhishek.pareek’s picture

I'm not positive what you mean by "change your module folder name to match the module's file name" can you explain?

Well by that I only meant that your project application git clone command should be like this: git clone --branch 7.x-1.x https://git.drupal.org/sandbox/REDrupalPlugin/2675668.git reachedge instead of git clone --branch 7.x-1.x https://git.drupal.org/sandbox/REDrupalPlugin/2675668.git

Also, If I try to use t on line 24, I get phpcs tells me not to use t() in hook_menu()

Yes its not required in hook_menu(), translation of title and decription in hook_menu are handled internally.

REDrupalPlugin’s picture

Issue summary: View changes
Status: Needs work » Needs review
REDrupalPlugin’s picture

Priority: Normal » Major

The guidelines for elevating application priority are as follows:

  • Normal: All applications must begin with a normal priority. Applications with elevated priorities should be returned to normal priority once a reviewer has continued the application review.
  • Major: Applications with a status of needs review that have been awaiting response from a reviewer for 2+ weeks.
  • Critical: Applications with a status of needs review that have been awaiting response from a reviewer for 4+ weeks.
laboratory.mike’s picture

Well hello REDP! I used to work with Loni at ReachLocal. I will go ahead and review :D

laboratory.mike’s picture

OK, here's my review:

Code

The structure is very good overall. While the individual files are small enough to all fit into one .module file without being overly cluttered, I like how it's broken out with the admin.inc and variable.inc files. The functions also follow namespace conventions, and all functions have some Doxygen documentation. Great stuff!

Security

In reachedge.module I saw $_GET['q'] a few times; these should probably be wrapped in a check_plain() function or similar. EDIT: check_plain() is only necessary when data is printed to HTML, which is not the case here.

Also, I saw a call to php_eval(). Is it really needed? That said, I see that it evaluates a constant that is defined on an admin page.

Other Comments

Having worked for ReachLocal, I know that 'http://go.reachlocal.com/contact-us-edge.html' in README.txt is one of RL's marketing pages. Of course, I know that going through that page is the only way to get ReachEdge, but it would be nice to explain first what ReachEdge is, followed by explaining how the module is a bridge to install ReachEdge on Drupal sites. In other words, the wording in the first paragraph could be a little clearer, but otherwise the README file is well written.

laboratory.mike’s picture

Status: Needs review » Needs work

Changing to 'needs work' until we can get an explanation or fix for the security items.

laboratory.mike’s picture

Ah, just caught this; In your hook_menu, the title and description should be wrapped in the t() function.

kattekrab’s picture

Hi @REDrupalPlugin!

Thanks for contributing your module.

I've just confirmed you as a new user - Welcome to the Drupal.org community :-)

Glad to see you've had a couple of reviews now - would you be willing to help some others get off the starting line too and review some other modules? Once you've reviewed three other projects you're eligible for the Project Application Review Bonus, which will put you in the fast track lane to approval.

Thanks again - and good luck!

cheers
Donna

REDrupalPlugin’s picture

Status: Needs work » Needs review

In reachedge.module I saw $_GET['q'] a few times; these should probably be wrapped in a check_plain() function or similar.

I have wrapped all the $_GET['q'] with check_plain, per your recommendation.

Also, I saw a call to php_eval(). Is it really needed?

No it is not needed, I completely removed the elseif and the php_eval that was in it.

Ah, just caught this; In your hook_menu, the title and description should be wrapped in the t() function.

Actually, phpcs tells me not to use t() in hook_menu()

Thank You for taking the time to review my module in detail. I have implemented all of your recommendations. I will look into rewording the first paragraph of the description, but I don't think that should hold up my review.

REDrupalPlugin’s picture

Priority: Major » Critical

The guidelines for elevating application priority are as follows:

  • Normal: All applications must begin with a normal priority. Applications with elevated priorities should be returned to normal priority once a reviewer has continued the application review.
  • Major: Applications with a status of needs review that have been awaiting response from a reviewer for 2+ weeks.
  • Critical: Applications with a status of needs review that have been awaiting response from a reviewer for 4+ weeks.
kattekrab’s picture

@REDrupalPlugin - Have you done any other module reviews yet?

Make sure you link to them in the summary here and add the PARreview bonus tag when you have to get more eyeballs on your module.

More info on the review bonus system is here: https://www.drupal.org/node/1975228

kari.kaariainen’s picture

Pareview reports that there are two README files and @author unnecessarily used in documentation.

REDrupalPlugin’s picture

Removed README.md and @author tag

kari.kaariainen’s picture

Apparently one extra line (line 9 actually) was left behind in reachedge.module.

10 | ERROR | [x] Additional blank lines found at end of doc comment

kari.kaariainen’s picture

What site id should I use for testing? I can get a free trial at http://go.reachlocal.com/naus-offer-edge-free-trial.html but they require my contact info including email. Is there a way to test this without giving my email address?

REDrupalPlugin’s picture

I have fixed the Extra Line.

And I am trying to get you an account setup for testing.

Thanks,

Mark

REDrupalPlugin’s picture

You can use this site id: 95bf76b7-518d-46b0-aa2a-1255f174bc87

I was not able to get you a login into our system to view the reporting, and lead management, etc....

However, you can see it working on the client side if you open your developer tools. You will be able to see the network traffic posting inisghts information and visit tracking. If your site has a form on it, you should see the network traffic for capturing form posts, when you submit your form.

If you add this phone number to your site "089242925016", you will see that it gets replaced with "08994396940". Or if you the text "STRING REPLACEMENT", you will see that it gets replaced with "THIS WORKS".

Looking at the sources section of developer tools, you should see that it loads the remote file: https://cdn.rlets.com/capture_configs/95b/f76/b75/18d46b0aa2a1255f174bc8... Which is the config file for that site id. Config files contain which phone numbers to use when visiting from different campaigns or referral sources.

I hope this gives you the information you would like to know.

Thanks,

Mark

kari.kaariainen’s picture

A couple of suggestions: on admin/config/system/reachedge you could use placeholder instead of default value, like so:
'#attributes' => array('placeholder' => 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'),

Also increase the size slightly so the user can see the end of the placeholder. (The end doesn't really need to be seen, but it's nicer that way.) '#size' => 38,

After entering the site id and going to some other page, I get a long pop-up in German!: "Wir erheben, verarbeiten und nutzen bestimmte personenbezogene Daten von Ihnen...". Finnish could've been expected (I live in Finland) but German is highly unexpected ;)

089242925016 gets changed to 08994396959 (not the one you said) with a delay varying from a fraction of a second to a couple of seconds, which could be confusing to a visitor.

STRING REPLACEMENT was not changed.

I see stuff happening at developer tools, so I guess that part is working, and it doesn't depend on Drupal anyway.

REDrupalPlugin’s picture

Updated the Size, per your recommendation.

It is a test account so the configuration can be changed by several different people at any time.

But overall it is loading the config file related to the site id supplied and the javascript is running as expected.

So this should be approved now, correct?

Thanks,

Mark

kattekrab’s picture

@REDrupalPlugin - To speed up approval, you'll need to post your reviews of other projects to the issue summary.

The Git admins are only approving applications that have the review bonus.

For info on the review bonus please see: #1975228: Review bonus

Here's some new applications that need review:
* #2702713: [D7] Duplicate Images
* #2700917: [D7] Views Results Inject
* #2624458: [D8] Simple Analytics

kari.kaariainen’s picture

@REDrupalPlugin, would you mind sharing why you chose not to use the placeholder?

I think you should revise the Description section of the README.txt file. You have now seven links to the same contact address. Also I'd prefer reading about how this Drupal module works, instead of what looks like a sales pitch for the service. A brief explanation about the service and a link to it would suffice in my opinion. Following that, a description of what this Drupal module does.

At the Requirements section of the README.txt you could mention how to get the ID.

Also at reachedge_menu and reachedge_variable_group_info I'd prefer having a description about those particular menu items instead of the boilerplate description about the service "ReachEdge offers lead & call tracking...".

kattekrab’s picture

Priority: Critical » Normal
Status: Needs review » Needs work

@kari.kaariainen - that sounds like back to needs work?

REDrupalPlugin’s picture

REDrupalPlugin’s picture

Issue summary: View changes
REDrupalPlugin’s picture

Issue summary: View changes
REDrupalPlugin’s picture

Status: Needs work » Needs review

Updated Readme file

REDrupalPlugin’s picture

Issue summary: View changes
REDrupalPlugin’s picture

REDrupalPlugin’s picture

Issue summary: View changes
Issue tags: +PAreview: review bonus
REDrupalPlugin’s picture

Issue summary: View changes
REDrupalPlugin’s picture

Priority: Critical » Normal
REDrupalPlugin’s picture

Issue summary: View changes
REDrupalPlugin’s picture

Issue summary: View changes
REDrupalPlugin’s picture

Priority: Normal » Major

Updated Descriptions

The guidelines for elevating application priority are as follows:

  • Normal: All applications must begin with a normal priority. Applications with elevated priorities should be returned to normal priority once a reviewer has continued the application review.
  • Major: Applications with a status of needs review that have been awaiting response from a reviewer for 2+ weeks.
  • Critical: Applications with a status of needs review that have been awaiting response from a reviewer for 4+ weeks.
REDrupalPlugin’s picture

Priority: Major » Normal

Waiting another week before changing to critical

kari.kaariainen’s picture

What's the story with the placeholder? Do you really prefer a default value that the user has to delete?

REDrupalPlugin’s picture

Updated to use placeholder instead of default value

Thanks,

Mark

kari.kaariainen’s picture

Status: Needs review » Reviewed & tested by the community

Tested. Works as advertised. Found no problems. No errors from pareview.sh.

klausi’s picture

Issue summary: View changes

Removed 2 automated review links from the issue summary.

klausi’s picture

Status: Reviewed & tested by the community » Fixed

manual review:

  1. reachedge_page_alter(): you are not altering the page, you are just adding stuff to it. Use hook_page_build() instead.
  2. reachedge_page_alter(): Since you have $page available you should not use drupal_add_js() but rather #attached on the render array. See https://api.drupal.org/api/drupal/developer--topics--forms_api_reference...
  3. _reachedge_visibility_pages(): @return do is missing, see https://www.drupal.org/coding-standards/docs#return
  4. _reachedge_visibility_pages(): the check_plain() calls are useless here since you are not printing data to HTML. I think that was wrong advice from laboratory.mike above, sorry about that. You only need to sanitize data for XSS when printing to HTML. Make sure to read https://www.drupal.org/node/28984 again.

But otherwise looks good to me.

Thanks for your contribution, Mark!

I updated your account so you can promote this to a full project and also create new projects as either a sandbox or a "full" project.

Here are some recommended readings to help with excellent maintainership:

You can find lots more contributors chatting on IRC in #drupal-contribute. So, come hang out and stay involved!

Thanks, also, for your patience with the review process. Anyone is welcome to participate in the review process. Please consider reviewing other projects that are pending review. I encourage you to learn more about that process and join the group of reviewers.

Thanks to the dedicated reviewer(s) as well.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.