{"id":14968631,"url":"https://github.com/unlcms/unl-cms","last_synced_at":"2025-10-26T05:30:32.743Z","repository":{"id":2248822,"uuid":"11002804","full_name":"unlcms/UNL-CMS","owner":"unlcms","description":"Drupal 7 implementation at the University of Nebraska–Lincoln","archived":false,"fork":false,"pushed_at":"2023-09-27T18:30:00.000Z","size":90518,"stargazers_count":4,"open_issues_count":58,"forks_count":13,"subscribers_count":11,"default_branch":"develop","last_synced_at":"2025-01-31T15:11:16.960Z","etag":null,"topics":["drupal","drupal7","unlincoln"],"latest_commit_sha":null,"homepage":"http://unlcms.unl.edu/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/unlcms.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.txt","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2013-06-27T17:03:20.000Z","updated_at":"2023-03-24T18:27:42.000Z","dependencies_parsed_at":"2023-07-05T20:32:29.392Z","dependency_job_id":"58ae867b-7204-46fe-81a6-e2cea6a6b92a","html_url":"https://github.com/unlcms/UNL-CMS","commit_stats":null,"previous_names":[],"tags_count":98,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlcms%2FUNL-CMS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlcms%2FUNL-CMS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlcms%2FUNL-CMS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/unlcms%2FUNL-CMS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/unlcms","download_url":"https://codeload.github.com/unlcms/UNL-CMS/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238264672,"owners_count":19443388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["drupal","drupal7","unlincoln"],"created_at":"2024-09-24T13:40:19.711Z","updated_at":"2025-10-26T05:30:30.178Z","avatar_url":"https://github.com/unlcms.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Requirements:\n\n  * [Core drupal requirements](http://drupal.org/requirements)\n  * PHP LDAP Extension\n  * PHP Tidy Extension (for migration tool)\n\n## Get Started:\n\nIn this example the web root is /Library/WebServer/Documents and Apache runs as _www - modify the instructions below according to your setup\n\n  *  Fork and clone your fork into /Library/WebServer/Documents/workspace/UNL-CMS\n  *  Create a local database (example name: unlcms)\n  *  From /Library/WebServer/Documents/workspace/UNL-CMS run:\n\n        git submodule init\n        git submodule update\n\n  *  Create this file in your home directory with a name like resetunlcms.sh\n\n        echo 'Resetting UNL-CMS... Get ready for action!'\n\n        mysqldump -uYOURUSERNAME -pYOURPASS --add-drop-table --no-data unlcms | grep ^DROP | mysql -uYOURUSERNAME -pYOURPASS unlcms\n        echo 'unlcms database emptied....'\n\n        cd /Library/WebServer/Documents/workspace/UNL-CMS/sites/default\n        rm -rf files\n        rm settings.php\n        mkdir files\n        chown _www files\n        cp default.settings.php settings.php\n        chown _www settings.php\n\n        cd /Library/WebServer/Documents/workspace/UNL-CMS/sites\n        sudo rm -rf localhost.*\n        sudo rm -rf MYDEVMACHINE.unl.edu.*\n        sudo rm -rf unl.edu.*\n        sudo rm sites.php\n        cp example.sites.php sites.php\n\n        echo 'Resetting .htaccess'\n        cd /Library/WebServer/Documents/workspace/UNL-CMS\n        sudo rm .htaccess\n        sudo rm .htaccess-subsite-map.txt\n        cp .htaccess.sample .htaccess\n        cp .htaccess-subsite-map.txt.sample .htaccess-subsite-map.txt\n        sudo chown YOURUSER .htaccess\n        sudo chown YOURUSER .htaccess-subsite-map.txt\n        sed -i \"\" 's/# RewriteBase \\/drupal\\//RewriteBase \\/workspace\\/UNL-CMS\\//' \".htaccess\"\n\n        echo 'Done.'\n        echo 'Note: If you want clean urls you need to look at the .htaccess file where it says \"Allow public files to be accessed without the sites/\u003csite_dir\u003e/files prefix\"';\n\n  *  Run that script. (Can also be run whenever you want to reset your dev environment.)\n\n        sudo sh ~/resetunlcms.sh\n\n  *  Go to http://localhost/workspace/UNL-CMS and go through the install process\n\n## Upgrading Drupal Core\n\nDownload the current version (drupal-7.a) being used in this repo and the latest version (drupal-7.b) from https://drupal.org/project/drupal\n\n```\ndiff -ruNa drupal-7.a drupal-7.b \u003e drupal_patch.diff\ngit checkout -b drupal-7.b-update master\ngit apply —-check drupal_patch.diff\ngit apply drupal_patch.diff\ngit add .\ngit commit -m \"Upgrade Drupal Core to 7.b\"\ngit push yourfork drupal-7.b-update\n```\n\nOnce that is complete, open a Pull Request against develop in unlcms/UNL-CMS.\n\n## Install Issues:\n\n  * Can't create a new site with Drush/UNL Cron if pdo_pgsql is enabled\n\n    If pdo_pgsql is enabled on the php install that is running drush/unl cron then it will fail without modification.\n    Adding the following junk values for pgsql solves the problem at line 414 (D7.10) of install_run_task inside install.core.inc\n\n              $form_state['values']['pgsql']['username'] = 'xxxx'; //add this\n              $form_state['values']['pgsql']['database'] = 'xxxx'; //add this\n              drupal_form_submit($function, $form_state); //existing code\n              $errors = form_get_errors(); //existing code\n\n\n## Hacks of Core:\n\n  *  includes/bootstrap.inc\n\n     - function drupal_settings_initialize(). UNL change: include a \"global\" settings file that applies to all sites.\n\n     - function conf_path(). UNL change: Add $default_domains array support for sites.php to list which domains are ok to use with 'unl.edu.*' site_dirs.\n       If no $default_domains array is defined in sites.php, this code will do nothing.\n\n     - Fix so that drupal_serve_page_from_cache() won't override a cached Vary header. http://drupal.org/node/1321086\n\n  *  includes/database/database.inc\n\n     Add support for a \"db_select_only\" config option that prevents drupal from issuing non-select queries to that database.\n     This can be used to allow Drupal to function during a FLUSH TABLES WITH READ LOCK;\n\n  *  includes/install.inc\n\n     Add primary key to drupal_install_test https://www.drupal.org/project/drupal/issues/2856362\n\n  *  rewrite.php\n\n     This custom file is used to allow public files to be accessed without the sites/\u003csite_dir\u003e/files prefix.\n\n  *  sites/sites.php\n\n     Added support for $default_domains array. See conf_path() in includes/bootstrap.inc\n\n  *  sites/example.sites.php\n\n     Added an example of the $default_domains array. Added the stub record needed for creating site aliases.\n\n  *  modules/field/modules/text/text.module\n\n     - Add nl2br() on Plain Text processor. See http://drupal.org/node/1152216#comment-7174876\n\n  *  modules/forum\n\n     - Removed completely because its table doesn't have a primary key. (https://github.com/unlcms/UNL-CMS/issues/942)\n\n  *  modules/taxonomy\n\n     - Add a primary key to the {taxonomy_index} table. https://www.drupal.org/files/issues/drupal-n610076-75.patch\n\n## Hacks of Contrib modules:\n\n  *  autoban\n\n     - A \"Forced mode\" ban doesn't take effect until another IP triggers a watchdog message. https://www.drupal.org/project/autoban/issues/2969670\n     - Applied patch: 2969670-2-autoban-forced-mode.diff\n\n  *  cas\n\n     - Hide the login message, don't need it.\n\n  *  draggableviews\n\n     - Anonymous view displays an empty form with no submit button which fails webaudit.unl.edu testing. Applied draggableviews-add_hidden_submit_button_to_form-867.patch\n\n  *  drush/commands/core/drupal/site_install_7.inc\n\n     - function drush_core_site_install_version(). UNL change: Setting this to FALSE because we don't want them and they're hard coded.\n\n  *  drush/commands/core/site_install.drush.inc\n\n     - function drush_core_pre_site_install(). UNL change: Inserted a return before code that would otherwise drop the entire database.\n\n  *  feeds/plugins/FeedsParser.inc\n\n     - Remove the file extension check in getSafeFilename() so that UNL Events images (like https://events.unl.edu/images/12345) that don't have extensions will work.\n\n  *  feeds_imagegrabber\n\n     - https://www.drupal.org/project/feeds_imagegrabber/issues/2244833\n     - Applied patch: patches/feeds_imagegrabber-update_processor_callback-2244833-45.patch\n\n     - Fix _TypeError: mb_strrpos(): Argument #3 ($offset) must be of type int, string given in mb_strrpos() (line 126 of /var/www/htdocs/sites/all/modules/feeds_imagegrabber/libraries/url_to_absolute.inc)._\n     \"Passing the encoding as the third argument instead of an offset has been removed.\"\n\n  *  google_analytics\n\n     - Apply patch to support GA4: https://www.drupal.org/project/google_analytics/issues/3174214#comment-14496809\n\n  *  honeypot\n\n     - Applied patch: https://www.drupal.org/project/honeypot/issues/2943526\n\n  *  imce_rename.module\n\n     - Applied patch: https://www.drupal.org/files/issues/imce_rename-file_move-1376260-8.patch See https://www.drupal.org/node/1376260\n\n  *  masquerade\n\n     - Applied patch: patches/masquerade-remove_masquerade_table_and_rely_on_session-d7-1926074-31.patch.txt\n     - Removed login/logout hooks calls that were added in https://www.drupal.org/project/masquerade/issues/1364574 because they break SSO\n\n  *  memcache\n\n     - Fix _Deprecated function: strtolower(): Passing null to parameter #1 ($string) of type string is deprecated in dmemcache_serialize_extension() (line 736 of /var/www/htdocs/sites/all/modules/memcache/dmemcache.inc)_ by changing `NULL` to `''`\n\n  *  menu_block\n\n     - Added additional classes to menu_block_get_title() in menu_block.module\n\n  *  og_menu.module\n\n     - Fix permission problem for editor that is only the author of the page with no other permissions.\n\n  *  options_element\n\n     - https://www.drupal.org/files/issues/2019-09-26/php71-non-well-formed-numeric-value-form-options-2920613-14.patch\n\n  *  override_node_options\n\n     - Patch for PHP 8: https://www.drupal.org/project/override_node_options/issues/3274297\n\n  *  picture\n\n     - Remove height/width attributes for validity. See https://drupal.org/node/2115513\n\n  *  redirect\n\n     - Merge global redirect functions into Redirect module. See http://drupal.org/node/905914\n     - Patch #195 applied to rc-3 with added \"Sanity check\" to not redirect to external URLs.\n\n  *  themekey\n\n     - Patch applied: themekey-PHPCompatibility-3128131-2.patch\n     - PHP 8.0+ fix: https://www.drupal.org/project/themekey/issues/3128131\n\n  *  upload_replace.module\n\n     - Drupal 7 bug fixes. See http://drupal.org/node/1115484#comment-5646558\n\n  *  views_autorefresh\n\n     - In Drupal.ajax.prototype.commands.viewsAutoRefreshIncremental, change `var view_name_id = response.view_name_id;` to `var view_name_id = response.view_name;`\n\n  *  views_infinite_scroll\n\n     - views_plugin_pager_infinite_scroll.inc: render() - move views_infinite_scroll.js to scope =\u003e footer for compatibility with UNL Web Framework.\n\n  *  viewreference.module\n\n     - Lock down access to \"Allow PHP code.\" under \"Contextual filter arguments\". See https://drupal.org/node/2014723#comment-7878825 Patch applied: https://drupal.org/files/viewreference-php_perm-2014723-1.patch\n\n     - Fix label and settings var notices. See https://drupal.org/node/1790304#comment-7395496 Patch applied: https://drupal.org/files/viewreference-1790304-03-complex-entity-form.patch\n\n  *  workbench_access\n\n     - https://www.drupal.org/project/workbench_access/issues/2344173\n\n  *  workbench_moderation.module\n\n     - Fix broken books in workbench_moderation_node_presave(). See http://drupal.org/node/1505060\n\n  *  wysiwyg/editors/js/tinymce-3.js\n\n     - Comment out the part that switches wrappers from table-based to div. We need the original TinyMCE code for the PDW toggle plugin to work\n\n## Use of Features\n\nThere are content types provided by Features located in sites/all/modules/custom/features. If a new content type is added the following should be done:\n * Add templates and css to unl_five theme and update unl_five_preprocess_node() to only attach css to the content type.\n * Add machine name to _unl_content_type_access() in unl.module to prevent editing the content type.\n * Remove the content type from the admin/structure/types list in unl_page_alter() in unl.module.\n * Update unl_node_add_list() in unl.module to organize the /node/add page.\n * (Optional) Update the unl_hero module to not add the standard hero group and fields.\n\n## How to Contribute\n\nDevelopment is handled through GitHub\n\nAll code changes must be committed via git to a local fork and contributed back to the project via a pull request.\n\nIdeally each developer should have a fork of the project on GitHub where they can push changes.\n\nIn your local clone:\n\n * git pull origin develop\n * git checkout -b topics/whatever-you-work-on (or bugfix/NUM — for bugs)\n * write code and commit\n * git push origin topics/whatever-you-work-on\n * on github open a pull request from your branch to develop\n * have someone else review\n\nAnother developer will review your changes and merge in to the develop branch.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funlcms%2Funl-cms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funlcms%2Funl-cms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funlcms%2Funl-cms/lists"}