Skip to content
Snippets Groups Projects
Commit 57b5212e authored by Neil Drumm's avatar Neil Drumm :wave:
Browse files

Issue #3397020: Move project analysis data dumping to a drush command

parent e8336114
Branches
No related tags found
2 merge requests!312Issue # 3494493: Documentation: Document Maintainer Widget,!299Remove heroes from components field. Update CTA section and add variants.
......@@ -120,6 +120,9 @@ function drupalorg_drush_command() {
'drupalorg_uid_salesforce_push' => [
'description' => 'If an account has an active membership, push it\'s uid up to salesforce',
],
'drupalorg-update-project-analysis-data' => [
'description' => 'Updates files/project_analysis/allprojects.json for https://www.drupal.org/project/project_analysis',
],
];
}
......@@ -1590,3 +1593,45 @@ function drush_drupalorg_mark_revoked_project_releases_insecure() {
drush_log(dt('Only a batch of 50 was processed. Run again for another batch.'));
}
}
/**
* Updates files/project_analysis/allprojects.json for
* https://www.drupal.org/project/project_analysis
*/
function drush_drupalorg_update_project_analysis_data() {
$path = 'public://project_analysis/allprojects.json';
$stream = fopen(drupal_realpath($path), 'w');
db_query('SET SESSION group_concat_max_len = 65535');
$result = db_query("SELECT
fdfpmn.field_project_machine_name_value,
pcnm.package_namespace,
REGEXP_REPLACE(SUBSTRING_INDEX(fdf_rvl.field_release_vcs_label_value,'8.x-',-1), '.x','.x-dev') as Composer,
n.type,
fdfnmvi.field_next_major_version_info_value,
(SELECT sum(count) FROM {project_usage_week_release} puwr INNER JOIN {field_data_field_release_project} fdf_rp ON fdf_rp.entity_id = puwr.nid INNER JOIN {field_data_field_release_category} fdf_rc ON fdf_rc.entity_id = fdf_rp.entity_id AND fdf_rc.field_release_category_value = 'current' WHERE fdf_rp.field_release_project_target_id = prsv.nid AND puwr.timestamp = (SELECT max(timestamp) FROM {project_usage_week_release})),
IF (fdtv44.taxonomy_vocabulary_44_tid != 13032, '', 'Abandoned'),
IF (fdtv46.taxonomy_vocabulary_46_tid != 9994, '', 'Obsolete'),
group_concat(DISTINCT u.name)
FROM {project_release_supported_versions} prsv
INNER JOIN {field_data_field_project_machine_name} fdfpmn ON fdfpmn.entity_id = prsv.nid
LEFT JOIN {field_data_field_next_major_version_info} fdfnmvi ON fdfnmvi.entity_id = prsv.nid
LEFT JOIN (SELECT n.nid, fdf_rp.field_release_project_target_id project_nid, fdf_rv.field_release_version_value version FROM {node} n INNER JOIN {field_data_field_release_project} fdf_rp ON fdf_rp.entity_id = n.nid INNER JOIN {field_data_field_release_version} fdf_rv ON fdf_rv.entity_id = fdf_rp.entity_id WHERE n.status = 1) dev_release ON dev_release.project_nid = prsv.nid AND dev_release.version IN (concat(substring_index(prsv.branch, '.', 1), '.x-dev'), concat(prsv.branch, 'x-dev'))
INNER JOIN {node} n on n.nid = prsv.nid AND n.status = 1 AND n.type IN ('project_module', 'project_theme')
INNER JOIN {field_data_field_release_category} fdf_rc ON fdf_rc.entity_id = prsv.latest_release AND fdf_rc.field_release_category_value = 'current'
INNER JOIN {project_composer_namespace_map} pcnm ON pcnm.project_nid = fdfpmn.entity_id AND pcnm.component_name = fdfpmn.field_project_machine_name_value AND pcnm.category = 'current'
LEFT JOIN {field_data_taxonomy_vocabulary_44} fdtv44 on prsv.nid = fdtv44.entity_id
LEFT JOIN {field_data_taxonomy_vocabulary_46} fdtv46 on prsv.nid = fdtv46.entity_id
INNER JOIN {field_data_field_release_vcs_label} fdf_rvl ON fdf_rvl.entity_id = coalesce(dev_release.nid, prsv.latest_release)
INNER JOIN {field_data_field_security_advisory_coverage} fdf_sac ON fdf_sac.entity_id = prsv.nid AND fdf_sac.field_security_advisory_coverage_value != 'revoked'
INNER JOIN {versioncontrol_project_projects} vpp ON vpp.nid = prsv.nid
LEFT JOIN {versioncontrol_auth_account} vaa ON vaa.repo_id = vpp.repo_id AND vaa.access != 0
LEFT JOIN {users} u ON u.uid = vaa.uid AND u.status = 1
WHERE prsv.supported = 1
GROUP BY prsv.nid, prsv.branch
ORDER BY NULL", [], ['fetch' => PDO::FETCH_ASSOC]);
foreach ($result as $row) {
fwrite($stream, json_encode(array_values($row)) . PHP_EOL);
}
fclose($stream);
drupalorg_crosssite_fastly_purge_url(file_create_url($path));
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment