Project Page
https://drupal.org/sandbox/jmihalik/2051227
Repo
git clone --branch 7.x-1.x http://git.drupal.org/sandbox/jmihalik/2051227.git skyword
Summary
The Skyword module for Drupal provides easy integration between the Skyword
content marketing platform and any Drupal website. Skyword is a cloud based
content marketing platform that helps websites manage their content creation
process.
For more information on the Skyword content marketing platform, please see:
The Skyword module provides the following benefits:
- Access to Skyword's content marketing tools and services including:
- Advanced content approval and editing workflows
- Access to thousands of writers
- Automated writer payment via paypal
- Detailed analytics tracking and reporting
- Enables automatic publication of articles from the Skyword platform to Drupal
- Allows automatic syncing of Drupal taxonomies to the Skyword platform
- Extends the default Drupal installation by adding enhanced SEO metadata fields
including the following:
- SEO optimized title tag
- Meta description
- Google News target keyword
- Supports the generation of meta-tags using the Open Graph protocol
(http://developers.facebook.com/docs/opengraphprotocol/)
- Creates new Drupal authors automatically when articles are approved in Skyword
- Gives you the ability to track the performance of your articles by using a
Skyword tracking tag
| Comment | File | Size | Author |
|---|---|---|---|
| #5 | move-files-to-root.patch | 41.91 KB | asherry |
Comments
Comment #1
ayesh commentedHi, and Welcome!
I did a ventral.org test and here are the results: http://ventral.org/pareview/httpgitdrupalorgsandboxjmihalik2051227git
There are many warnings and errors reported by this report. Probably you need to configure your IDE to use correct line endings and indentations?
Manual review
- It looks like you have 2 semi colons in the .info file. If autoload module is a dependency, please uncomment that line. Drupal 7 requires php 5.2 already, so not necessary to explicitly require it here.
- You are using the variable system (system_settings_form()), so please add some variable_del() calls in your .install file to remove them during module uninstallation. If you don't need to add any variables during the installation, you can remove the hook_install implementation.
skyword.module
You are trying to include these files relatively to the Drupal root folder. As this is a 'require' call, this will trigger a fatal error.
Please do not include any file in your .module file's global scope unless you really need to do so.
menu hook (hook_menu) supports a
filekey that you can specify a file to include before calling any page callback function.There are some concerns with checking permissions before creating a node on behalf of a user, making use of the permission system, etc but I do not have skyword access, nor the module worked during the installation so all my comments above are from what I can see from a normal git clone (7.x-1.x branch)
Comment #2
ayesh commentedComment #3
Skyword commentedI've made the requested changes, but I'm getting an error about my README.txt not existing from paraview. The file is there though, so I'm not sure if I'm doing something wrong.
Comment #4
PA robot commentedWe 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.
Comment #5
asherry commented@skyword, I think the problem is all your code isn't in the root of the repository, it's in another directory called 'skyword'.
Try out this patch and recommit, I think that error will go away.
Comment #6
asherry commentedI believe the needs work status is the appropriate one in this case.
Comment #7
Skyword commentedI've moved the files and that took care of the README.txt issue, so I think this is all set.
Comment #8
snig commentedhi Skyword,
- clean up your .info file.
- remove .install file.
- clean up CS
- use t() function (for example at skyword_validate_secret $error_data['message']).
Comment #9
snig commentedchanged status
Comment #10
Skyword commentedI was hoping I could get some more info on what cleanup CS meant. The only error I saw from paraview before was an invalid warning about a variable being used.
Also what did we need changed in the info file?
Comment #11
asherry commented@skyword - I think @snig was referring to the commented out code at the bottom of the info file.
;dependencies[] = autoload
It's not always 100% possible to lose all the commented out code, but it's a good guideline to delete it before your public releases. If it's not meant to be commented out then just lose the semi-colon.
Keep in mind the pareview.sh might pickup some errors that you can't fix for whatever reason. As long as you've fixed the ones that you can, you should be good to go.
Comment #12
Skyword commentedThanks @asherry. I think this is set now.
Comment #13
kscheirerinitshould also be the user's email address, and roles should be an array of roles to give them, or empty array./* Allow updates. */section, can you elaborate on that? Generally vids are not the same as nids, and you don't have to update $node->changed manually, that will happen on node_save anyway.absolute => TRUEoption.$vid = 1, how do you know what vocabulary is at vid 1?array_keys($term);sometimes be undefined?error_reporting()manually - not only can this fail on some hosts, you should respect the admin's php settings.url('node/1', array('absolute' => TRUE)in skyword_page_alter()?Looks like a nifty module! Settings to needs work for the number of outstanding issues.
----
Top Shelf Modules - Crafted, Curated, Contributed.
Comment #14
PA robot commentedClosing due to lack of activity. Feel free to reopen if you are still working on this application (see also the project application workflow).
I'm a robot and this is an automated message from Project Applications Scraper.
Comment #15
Skyword commentedWe have made the changes called out by @kscheirer a year ago, and would like to have the project application re-reviewed.
Comment #16
Skyword-Rick commentedIs there any chance of getting an ETA on when this module will be re-evaluated?
Comment #17
asherry commentedI would really strongly recommend doing the review bonus. Without it, there are almost hundreds of other applications in 'needs review' status, but if you have the bonus you're only in line with a few.
It also helps out the drupal.org maintainers that actually promote these projects as they don't have to provide as much feedback to all the other projects.
Comment #18
ayesh commentedFirst of all, let me apologize for not responding to your replies lately. I have had a lot of changes lately, and couldn't respond to any project applications.
A few suggestions. None of them are release blocker per se, but I think they can be important.
- Using fields to store meta data. You are using skyword_create_field() to create fields, which resets the cache during the run-time. You can always use a custom table for that, and hook into node_save to save the data only when present. I have worked on a similar functionality that creates fields on-demand, but immediately realized resetting the cache is a problem that I cannot ignore. Besides, it's only 3 fields that would fit perfectly in a single custom table. You can use node_load to load the data, and they will be available to preprocess/view hooks.
- If possible, move the xmlrpc functions to a separate file. You can keep the function stubs in the .module, and the stub includes the file when called. On a far extreme side, the xmlrpc callback can be a static method of a well-encapsulated class. I haven't seen any D7 modules using this approach, though.
- Excellent use of preprocess hooks, file API, hook_menu, t(), and xmlrpc.
I don't see any release blockers now. Hopefully an admin will review this and change your account to allow full status. Good luck!
Comment #19
Skyword commentedThanks for your comments and review Ayesh.
Comment #20
robbertv commentedI did a manual review of the project. There are a few stylistic issues I can see
In skyword.admin.inc, all your form fields use the t function for title and description except for skyword_adminpage. Also the markup and description fields exceed the 80 character line limit. You also have several long lines in the module file.
You may also consider adding better documentation in your comments for each function to clarify the return type and what parameters are passed to the function.
Other than that, the code looks good.
Comment #21
robbertv commentedForgot to change the status.
Comment #22
Skyword commentedComment #23
zaporylieWhy this module has another (with the same name) inside src/modules? Sounds like a bug or bad practice.
root/src/modules/skyword/skyword.info
and
root/skyword.info
Comment #24
asherry commentedIt looks like something used for continuous integration. Something like http://reload.github.io/phing-drupal-template perhaps? Probably not the best idea to make assumptions about continuous integration at the drupal.org project level.
I would clean that out from the repository and let the individual customize as needed for continuous integration.
Comment #25
Skyword commentedFixed the odd directory structure. Not sure what happened there.
Comment #26
kandy-io commentedAutomated Review
FILE: /var/www/drupal-7-pareview/pareview_temp/skyword.module:
FOUND 34 ERRORS AND 3 WARNINGS AFFECTING 25 LINES
Manual Review
You should show your git clone command to help reviewer get your project instanly:
git clone --branch 7.x-1.x http://git.drupal.org/sandbox/jmihalik/2051227.git skyword
Comment #27
k_zoltan commentedAll user accounts are for individuals. Accounts created for more than one user or those using anonymous mail services will be blocked when discovered (see Get a Drupal.org account).
Please note that organization accounts cannot be approved for git commit access. See https://drupal.org/node/1966218 and https://drupal.org/node/1863498 for details on what is/isn't allowed. Please update your user profile so that we don't have to assume that this is a group account.
Comment #28
Skyword commentedComment #29
shammack commentedI fixed all the pareview.sh/ errors in the code. I also created a new Drupal user for myself. Is there anything I need to do to the Skyword user?
Comment #30
shammack commentedComment #31
crstnkal commentedHello,
Comment #32
klausiThat look like minor improvements for the module, but not application blockers. Anything else that you found or should this be RTBC instead?
Comment #33
ayesh commentedSorry about this late post.
This module adds a few meta tags and other tags to the htnl head section, and values are taken from the nose in context. Hiwever, those values are not sanitized, and drupal does not sanitize them for you.
Wrapping the #markup and meta tags content with check_plain() should do it.
Comment #34
shammack commentedComment #35
Sumit kumar commentedPA Review Error:
Comment #36
klausiThose minor coding standard errors are surely not application blockers, please do a real manual review.
Comment #37
Skyword commentedI have fixed all issues brought up by pareview.sh. If there are no other application blockers, can we please RTBC? This has been a long 6 month process since I've started working on this.
Comment #38
shammack commentedWhoops, that was me above. Forgot I was logged in the other account.
Comment #39
klausiSwitched application author to shammack.
Comment #40
harings_rob commentedThis is no release blocker, but one issue left in the automated review:
Manual review:
1.
On skyword.admin.inc you first store your description/markup into a variable, then add the variable to your form item.
It's better to maintain if you place these inline.
2.
You do not use proper function documentation in the skyword.install file.
The uninstall function comment should start with:
Implements hook_install().
See: https://www.drupal.org/node/1354
3.
Inside the skywords_create_metafields function you also store the description into a variable and then use it in your code:
Perhaps rewrite it to this for readability:
Other then that looks good, and should be released to a full project.
Comment #41
ayesh commentedRe #40: well the doc comment needs some work but saving text literals to variables is alright. It makes the function call easier to see and interpret (by humans) it well knowing function parameters.
I'm setting this back to "Needs review" because they are easy to fix and not critical issues to block the release.
If you find any other issues about securit you, performance, etc, feel free to change status again.
Comment #42
shammack commentedFixed whitespace issue and doc comment. I will be keeping the text literals mentioned above as variables as I find it easier to read.
Comment #43
andread commentedYou need to move your configuration page under the configuration menu.
Your settings page accepts everything, and states that settings are saved. - Probably a bug.
Comment #44
shammack commentedI moved the configuration page. What do you mean by the settings page accepts everything?
Comment #45
andread commentedYou are not checking the inserted value. You can insert any value. and the system still says its accepted.
It would be good usability to check if the inserted value looks like the validation key you are expecting.
Comment #46
shammack commentedAdded form validation to Skyword API Key.
Comment #47
wwedding commentedIn the queue for 2 years, whew! It even looks like you've been actively making commits this whole time, too. Hopefully you didn't give up on the review process!
Automated Checks
PAReview is reporting a bunch of minor code style issues have crept into your commits you've made since this was last reviewed.
Considering these are all minor (mostly spacing) issues and that you've had this application here for 2 years, I'm not gonna say any of those are blocking issues. Please try harder to make PAReview or Codesniffer part of your normal workflow when this goes live, though. Thanks!
Manual Review - Blocker
There is only one item I feel should be fixed before this can be RTBC, but you're really close! If someone else feels otherwise, I'll set to it RTBC without it fixed and file an issue in your issue queue about it.
Admin form validation approach (blocker)
You are validating the settings form now as requested in #45 but you aren't really following the patterns that Drupal developers hoping to contribute to your code might expect.
Book's Admin Page (note that the validate is set directly in the form it builds)
Book's Admin Validate Callback (it's located in the same file as the form it is checking)
It is very rare that you'll need to use hook_form_alter() on your own forms... best to just do it when you're building the form in the first place!
Please move the validation callback into your skyward.admin.inc file, and set the callback directly in skyword_adminpage() instead of skyword_form_alter().
Manual Review - Non blockers
README.txt
Configuration page href mistake
The anchor on the configuration page that it supposed to go to http://www.skyward.com is incorrectly written. It needs "http://" in the href attribute.
Use of user_load() in rapid succession
I'm not 100% sure how much of user_load() ultimately uses cached information, but code like
strikes me as a little... awkward. I see why you're doing it, but I'd be inclined to re-write your conditionals in such a way so that you don't need to call an entity load function immediately after you already called it.
phpinfo() in xml-rmcp response
Even though phpinfo() by itself isn't harmful, it does usually provide information that would make attacks via other vulnerabilities easier to complete. Someone would need to know the API key in order to even get this information, but I also think it would be kind to allow a Drupal admin to disable this one via your configuration page and leave it disabled by default.
Consider changing permission 'Access Skyword Admin' to 'Administer Skyward'
Mostly a semantic issue. "access" is about viewing information but not making changes, while your configuration is about actually "administering" and changing configuration.
Comment #48
shammack commentedMade changes for above suggestions.
Comment #49
nitebreedAutomated Review
No issues found. See http://pareview.sh/pareview/httpgitdrupalorgsandboxjmihalik2051227git-7x-1x
Manual Review
In the 'CONTENTS OF THIS FILE' section you refer to sections that don't exist. Also, you have a duplicate 'INSTALLATION' section
The starred items (*) are fairly big issues and warrant going back to Needs Work. Items marked with a plus sign (+) are important and should be addressed before a stable project release. The rest of the comments in the code walkthrough are recommendations.
This review uses the Project Application Review Template.
Comment #50
wwedding commentedTo clarify, I think #6 is referring to params that aren't being defined in comments. Maybe Nitebreed can clarify if I'm wrong about the intent of that feedback.
Thanks for being so responsive to feedback! Things aren't quite ready for a stable release but it's pretty close.
One more suggestion would be to add a "configure" line to your module's info file so that it can be easily accessed on
admin/modules.Comment #51
nitebreed@stickywes, you're right!
Comment #52
shammack commentedMade changes based on above feedback.
Comment #53
arunkumarkHi shammack,
I have suggestion about these below 2 points
1. In skywords.admin.inc file for form fields set default values for the function variable_get(); Lines: 35,44,53,62,71,80
Ex: variable_get(VARIABLE_NAME, DEFAULT_VALUE);
2. In module file line number 313 hook_form_alter() you altered your form to add validation instead of you can directly define skyword_adminpage_validate() in skyword.admin.inc file.
Comment #54
wwedding commentedGlad to see you're still working at this despite sitting at RTBC for 2 whole months!
Still passing automated PAReview checks; it notes that you don't have tests implemented but that isn't new feedback.
I don't think the issues in #53 are enough to hold this up from RTBC. Please put this back into "Needs Work" if you disagree.
Comment #55
wwedding commentedComment #56
kattekrab commented@shammack - this is RTBC! Congratulations.
Have you reviewed any other modules yet? If you have, please add them to the issue summary so you can get the review bonus and get this module approved and promoted to full status.
Well done, you have shown amazing patience and perseverance. Thank you!
Comment #57
kattekrab commented@shammack - Information on the review bonus system can be found here: #1975228: Review bonus
Comment #58
shammack commentedI've been working on other projects. I hope to do some reviews soon.
Comment #59
kattekrab commentedBumping to critical
Comment #60
mlncn commentedThanks for your contribution! Congratulations, you are now a vetted Git user. You can promote this to a full project.
When you create new projects (typically as a sandbox to start) you can then promote them to 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.