Giter VIP home page Giter VIP logo

phpip's Introduction

Introduction

phpIP is a web tool for managing an IP rights portfolio, especially patents. It is intended to satisfy most needs of an IP law firm. The tool was designed to be flexible and simple to use. It is based on an Apache-MySQL-PHP framework.

There are many IP rights management tools out there. They are all proprietary and pretty expensive. It is not the cost, in fact, that led us to designing our own system, because the design resources we spent could equate to the cost of a couple of years license and maintenance fees of existing systems. We found that existing systems are overkill for our needs, because they are designed to satisfy the needs of a majority – hence they have more features than what each individual user needs, so they are very complex to use, yet not all specific needs of the individual user are satisfied. So the user needs to adapt to the system, whereas it should be the other way round.

Since we are patent attorneys and don't have resources for selling and maintaining our software, yet would like others to benefit from it, and hopefully contribute, we decided to open source it. This is an important step in reaching the goal of creating a tool adapted to the user's specific needs. We also designed phpIP to be extremely flexible, so that, hopefully, most users will be able to configure it (and not redesign it) to fit their needs.

Head for the Wiki for further information.

New features

2024-08-02 Updated the old application structure to that of Laravel 11

This involved deleting, moving and cleaning many files, yet the functionality should not change. See commit bf00718.

The authorization mechanism has been improved, using gates rather than policies. See commit a4c4764.

2024-01-05 A significant upgrade of the autocompletion functionality

Navigation and selection in the suggestion lists can now be performed with the keyboard.

More foolproof.

Many bugfixes.

2023-11-16 A significant upgrade of the back-end and front-end infrastructures

Upgraded to Laravel 10 for the back-end.

Upgraded to Bootstrap 5 for the front-end.

Removed all dependencies to jQuery by rewriting many functions that depended on it, especially the autocompletion functionality.

2023-02-09 Automatic family import from Open Patent Services (OPS)

OPS provide a REST API for accessing world-wide patent information. We have integrated this service to automatically import a whole patent family into phpIP by just providing one of the publication numbers in the family.

The tool is available through the menu Matters->Create family from OPS

Check the dedicated Wiki section.

2021-01-08 Document drag-and-drop merge functionality

Use your favorite DOCX templates to merge them with the data of a matter displayed in phpIP by simple drag-and-drop.

Check the dedicated Wiki section.

2019-12-08 Renewal process management tool

This tool manages renewal watching, first calls, reminders, payments and invoicing of renewals. Emails are created for each step for a client's portfolio. The emails may be sent automatically or to oneself as a template for resending.

Check the dedicated Wiki article.

phpip's People

Contributors

axeldeneu avatar dependabot[bot] avatar jjdejong avatar papoteur-mga avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

phpip's Issues

colonne last_login

La colonne "last_login" de la table "actor" ne semble pas se mettre à jour.
Cela ne semble pas poser de problème

Affichage All Matters - par date de création de la fiche

L'affichage se fait du dossier dernièrement créé au plus ancien, et non en liste de la famille la plus ancienne à la plus récente.
On se retrouve donc avec un affichage non pas par famille mais par date de création, qui n'a pas de réelle logique au quotidien.

Error in migration task_rules

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; ...
'index fk_category to for_category' at line 1 (SQL: alter table task_rules rename index fk_category to for_category)
database/migrations/2020_02_24_192100_implement_generic_renewals.php:44

fk_category index exists. Renaming is not allowed. I don't know why.
Here an extract from phpmyadmin, indexes from task_rules table.
image

New event - le champ "number" ne redescent pas dans les tâches

Lors de la création d'un événement, exemple "examiner action", "communication" il y a la possibilité de préciser OA1, OA2, R19.1, etc.
Ce numéro redescendait dans la précédente version dans les tâches : Respond : Communication R19.1
Cette fonction est très utile au quotidien

Renewal management UI - XML payment order

This XML file is created with all the checked renewals, irrespective of the countries, generating one file combining the multiple countries. One separate file should be created for each country.

Errors in dates produced by the Nat. Phase function

In the createN() method of MatterController, some events are copied to a new matter from a parent matter using relationships. The used create()/createMany() methods require arrays that are produced with the toArray() method.

The issue is that the dates are (wrongly) timezone-corrected by the toArray() method.

For instance, $parent_matter->filing returns a date "2017-04-10", whereas $parent_matter->filing->toArray() returns "2017-04-09T22:00:00.000000Z", which is one day earlier, and this is the date used for creating the filing event in the new matter.

I believe the issue arose when introducing Carbon for the event dates. Looking into it.

Is restricted (client) access possible

I was exploring the possibility of using this as a portal for customers ...

  1. Is there a way to restrict client access to only matters that they are assigned to? For example, Joe Client is assigned by Pete Practitioner to application GreatIdea1. When Joe Client signs in, he can ONLY see GreatIdea1 (and any other applications he has been assigned to).
  2. Also (and this would be optional but highly desirable) would there be a way to give them read-only access? (i.e. don't let them inadvertently disrupt dates and information ... inventors tend to be very hands-on people and many would likely assume it is OK to explore functionality)

Page expired

Some requests fails with 419 code, page expired, after a delay without activity.
For example, for the search field for a matter.
This is also the case when updating a field, except that the update fails silently (Events, Tasks, Titles...).
All come back well after refreshing the page.
I think this is because the CRSF token expired, or something like that.
We need at least better messages about what fails, or sync this delay with the login delay.

Editing the filing date is not possible

In events frame, I try to edit the filing date, because I mistyping the year.
In edition mode, I can modify the day or the month, but for the year, the edition is stored before I finish to type the 4 digits. Thus, I get 20 and the last digits are lost.
The date picker is of no help, because it is set to 20, and jumping to more than 2000 needs 2000 clicks.

Error when create Image Classtifier type on Matter

I cannot add Image Classtifier on Matter (Chrome browser). Because File Input is not showing. I fixed it on app.blade.php as below:

if(e.target.previousElementSibling != null){
if (e.target.previousElementSibling.name === 'type_code' && e.target.previousElementSibling.value === 'IMG') {
        for (elt of addClassifierForm.getElementsByClassName('hideForFile')) {
          elt.classList.add('d-none');
        }
        forFile.classList.remove('d-none');
        cTypeCode = 'IMG'
      }
      if (e.target.previousElementSibling.name === 'type_code' && e.target.previousElementSibling.value !== 'IMG' && cTypeCode === 'IMG') {
        for (elt of addClassifierForm.getElementsByClassName('hideForFile')) {
          elt.classList.remove('d-none');
        }
        forFile.classList.add('d-none');
        cTypeCode = ''
      }
   }

It right?
Thank you

Actor creation modal does not close

In the actor list view, when adding an actor, the creation modal form does not close. It is apparently refreshed instead, whereas the list behind is not updated.

Logic Caseref on Matter

Hi jjdejong,

is Caseref an integer?

in the database the caseref is in varchar datatype, but in your code below I saw the ++ thinking it is an integer. I edited the code: (int) $request->term and it works when I input 01 or 02 ..... Please explain to me about this case. Thanks

Route::get('matter/new-caseref', function (Request $request) { $term = (int) $request->term; $newref = App\Matter::where('caseref', 'like', "$term%")->max('caseref'); $newref++; return [['key' => $newref, 'value' => $newref]]; });

Autocompletion works erratically

Sometimes, a string typed too fast is not processed by the server and needs deleting and retyping. This seems to be caused by the datalist-based autocompletion functionality - I will need to revert to another autocompletion tool...

Payor reference

Lors de l'ajout d'un acteur avec le rôle "payor", il est possible d'ajouter une référence de cet acteur pour le dossier.
Néanmoins, la référence ne s'affiche pas dans l'UI.

QUESTION: Installing v2 directly?

Is there a (straightforward) way to install v2 directly on a new Ubuntu 18.04 server -- and skip installing Zend framework, etc.?

THANKS!

Cannot create default_actor

Cannot create default_actor because:
Column not found: 1054 Unknown column 'updated_at', 'created_at' in 'field list'

Migrate scripts broken?

Just updated ... git pull then composer install
When run php artisan serve receive following error:

   Illuminate\Database\QueryException  : SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO) (SQL: select * from information_schema.tables where table_schema = my_table_name and table_name = migrations and table_type = 'BASE TABLE')

  at /var/www/html/phpip-v2/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
    665|         // If an exception occurs when attempting to run a query, we'll format the error
    666|         // message to include the bindings with SQL, which will make this exception a
    667|         // lot more helpful to the developer instead of just the database's errors.
    668|         catch (Exception $e) {
  > 669|             throw new QueryException(
    670|                 $query, $this->prepareBindings($bindings), $e
    671|             );
    672|         }
    673| 

  Exception trace:

  1   Doctrine\DBAL\Driver\PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)")
      /var/www/html/phpip-v2/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:31

  2   PDOException::("SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)")
      /var/www/html/phpip-v2/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:27

  Please use the argument -v to see more details.

Not sure what the user "forge" is? ("my_table_name" is the name of the table, and is correct ... I just changed it to make it more generic when posting).

Je ne peux plus rien éditer...

vraiment désolé...
Je ne peux plus rien modifier sur ma base de prod avec mon login/mdp habituels.
Que dois je vérifier dans la base de données ? Faut il que je m'assigne un rôle par défaut: lequel?
(jusque là je n'en avais pas et ca fonctionnait)

(Au passage, j'ai installé une base de données neuve avec le jeu de données que vous proposez et l'adresse email d'un yves est fournie.)

php artisan migrate:fresh

Bonjour à tous,

lorsqu'on lance cette commande : php artisan migrate:fresh

On obtient l'erreur suivante...

Alexandre

Migrating: 2018_12_08_002558_create_views_and_functions

Illuminate\Database\QueryException

SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'task_list' already exists (SQL: CREATE
VIEW task_list AS select task.ID AS id,
task.code AS code,
event_name.name AS name,
task.detail AS detail,
task.due_date AS due_date,
task.done AS done,
task.done_date AS done_date,
event.matter_ID AS matter_id,
task.cost AS cost,
task.fee AS fee,
task.trigger_ID AS trigger_id,
matter.category_code AS category,
matter.caseref AS caseref,
matter.country AS country,
matter.origin AS origin,
matter.type_code AS type_code,
matter.idx AS idx,
ifnull(task.assigned_to,matter.responsible) AS responsible,
actor.login AS delegate,
task.rule_used AS rule_used,
matter.dead AS dead
from (((((matter
left join matter_actor_lnk on(((ifnull(matter.container_ID,matter.ID) = matter_actor_lnk.matter_ID) and (matter_actor_lnk.role = 'DEL'))))
left join actor on((actor.ID = matter_actor_lnk.actor_ID)))
join event on((matter.ID = event.matter_ID)))
join task on((task.trigger_ID = event.ID)))
join event_name on((task.code = event_name.code))))

at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671
667| // If an exception occurs when attempting to run a query, we'll format the error
668| // message to include the bindings with SQL, which will make this exception a
669| // lot more helpful to the developer instead of just the database's errors.
670| catch (Exception $e) {

671| throw new QueryException(
672| $query, $this->prepareBindings($bindings), $e
673| );
674| }
675|

  +9 vendor frames 

10 database/migrations/2018_12_08_002558_create_views_and_functions.php:14
Illuminate\Support\Facades\Facade::__callStatic("statement")

  +34 vendor frames 

45 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

colum "renwal_first"

Bonjour Jean-Jacques, Yves,
je n'arrive pas à passer le script d'hier sur la base neuve, car il me manque une colonne dans la table country.
De ce fait, j'ai recherché quel script sql du passé créait cette colonne mais je n'ai pas trouvé.
Auriez-vous une solution pour celà ?

Question subsidiaire: comment faites vous pour créer une base de test avec les données de la bases de productions pour pouvoir tester les mises à jour avant de les appliquer sur la base de production ?

Bien à vous
Alexandre

Migrating: 2020_03_28_190000_update_country

Illuminate\Database\QueryException

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'renewal_first' in 'field list' (SQL: update country set renewal_first = 3 where iso = BE)

at vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attempting to run a query, we'll format the error
666| // message to include the bindings with SQL, which will make this exception a
667| // lot more helpful to the developer instead of just the database's errors.
668| catch (Exception $e) {

669| throw new QueryException(
670| $query, $this->prepareBindings($bindings), $e
671| );
672| }
673|

• A column was not found: You might have forgotten to run your migrations. You can run your migrations using php artisan migrate.
https://laravel.com/docs/master/migrations#running-migrations

  +9 vendor frames 

10 database/migrations/2020_03_28_190000_update_country.php:16
Illuminate\Database\Query\Builder::update([])

  +22 vendor frames 

33 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

Statut "dead" sur fiche

Lorsqu'une titre est abandonné, lors de l’affichage des résultats de la recherche, la référence dossier est barrée.
En revanche, en consultant la fiche elle-même, elle n'est plus barrée, ce qui ne permet pas de visualiser immédiatement le statut "dead"

Reset password form -- not sending password in .env

Ubuntu 18.04, PHP7.3, PHPIP-V2 (fresh install)

When trying to use the 'reset password' form to send email using SMTP, I get:

 Swift_TransportException
Connection could not be established with host email.solidrock.enterprises [Connection refused #111]

The email server maillog shows:

email postfix/submission/smtpd[26492]: connect from mywebdomain.com[web-ip-address]
email postfix/submission/smtpd[26492]: Anonymous TLS connection established from mywebdomain.com[web-ip-address]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
email postfix/submission/smtpd[26492]: warning:mywebdomain.com[web-ip-address]: SASL LOGIN authentication failed: UGFzc3dvcmQ6

UGFzc3dvcmQ6 resolves to "password" (see https://serverfault.com/questions/211631/sasl-login-authentication-failed-ugfzc3dvcmq6-find-the-username). Thus ... it appears that SwiftMail is just sending "password", and not the password setup in my .env file.

For reference, the mail portion of the .env file for PHPIP-V2 is:
MAIL_DRIVER=smtp
MAIL_HOST=myemailserver.com
MAIL_PORT=587
MAIL_USERNAME=[email protected]
MAIL_PASSWORD=myemailpassword
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=[email protected]
MAIL_FROM_NAME="[email protected]"

Is this an error that should be fixed, or a configuration issue? Not being familiar with Laravel, I am hesitant to go mucking in the code without a second opinion.

demande divionnaire, date de dépôt et calcul des annuités

Bonjour ,
lorsqu'on souhaite saisir une demande divisionnaire (d'une demande parente), faut-il utiliser l'évènement "file" ?
En effet, cela génère des événements d'annuité à payer le mois de dépôt (et non pas le mois de dépôt de la demande parente).
Merci

Affichage famille pas intuitif

L'affichage d'une famille lors d'une recherche fait redescendre les titres par ordre de création de la plus récente à la plus ancienne - le dépôt prioritaire se retrouve tout en bas
Un affichage par date de création de la plus ancienne à la plus récente serait plus intuitif, ou à tout le moins la possibilité de gérer son affichage avec un bouton "sort by"

conversion de v1 vers v2

Bonjour,
j'essaie de tester la version 2 après avoir suivi le wiki.
J'ai au passage une erreur de conversion du SQL, la requête suivante ne s'executant pas.
Je précise que j'avais executé tous les "patch" sql sur la version v1.
ALTER TABLE actor
ADD COLUMN remember_token VARCHAR(100) DEFAULT NULL AFTER updater

#1060 - Nom du champ 'remember_token' déjà utilisé

Je n'arrive pas à passer l'étape du "login" avec la nouvelle version.
Voici l'erreur:
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from actor where login = alexandre limit 1)
Previous exceptions
SQLSTATE[HY000] [2002] Connection refused (2002)
SQLSTATE[HY000] [2002] Connection refused (2002)

J'ai pourtant bien un utilisateur alexandre et j'ai utilisé la commande php -r 'echo password_hash("your password",PASSWORD_BCRYPT) . "\n";' pour inscrire le résultat dans le champ mot de passe de la table acteur...

Column not found: 1054 Unknown column 'password_salt' for empty database

When starting with an empty db and running php artisan migrate --seed, I receive the following:

λ php artisan migrate --seed
Migration table created successfully.
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.03 seconds)
Migrating: 2018_12_07_184310_create_actor_role_table
Migrated:  2018_12_07_184310_create_actor_role_table (0.06 seconds)
Migrating: 2018_12_07_184310_create_actor_table
Migrated:  2018_12_07_184310_create_actor_table (0.14 seconds)
Migrating: 2018_12_07_184310_create_classifier_table
Migrated:  2018_12_07_184310_create_classifier_table (0.1 seconds)
Migrating: 2018_12_07_184310_create_classifier_type_table
Migrated:  2018_12_07_184310_create_classifier_type_table (0.06 seconds)
Migrating: 2018_12_07_184310_create_classifier_value_table
Migrated:  2018_12_07_184310_create_classifier_value_table (0.04 seconds)
Migrating: 2018_12_07_184310_create_country_table
Migrated:  2018_12_07_184310_create_country_table (0.04 seconds)
Migrating: 2018_12_07_184310_create_default_actor_table
Migrated:  2018_12_07_184310_create_default_actor_table (0.07 seconds)
Migrating: 2018_12_07_184310_create_event_name_table
Migrated:  2018_12_07_184310_create_event_name_table (0.06 seconds)
Migrating: 2018_12_07_184310_create_event_table
Migrated:  2018_12_07_184310_create_event_table (0.11 seconds)
Migrating: 2018_12_07_184310_create_matter_actor_lnk_table
Migrated:  2018_12_07_184310_create_matter_actor_lnk_table (0.09 seconds)
Migrating: 2018_12_07_184310_create_matter_category_table
Migrated:  2018_12_07_184310_create_matter_category_table (0.07 seconds)
Migrating: 2018_12_07_184310_create_matter_table
Migrated:  2018_12_07_184310_create_matter_table (0.13 seconds)
Migrating: 2018_12_07_184310_create_matter_type_table
Migrated:  2018_12_07_184310_create_matter_type_table (0.04 seconds)
Migrating: 2018_12_07_184310_create_task_rules_table
Migrated:  2018_12_07_184310_create_task_rules_table (0.11 seconds)
Migrating: 2018_12_07_184310_create_task_table
Migrated:  2018_12_07_184310_create_task_table (0.09 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_actor_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_actor_table (0.45 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_classifier_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_classifier_table (0.36 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_classifier_type_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_classifier_type_table (0.05 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_classifier_value_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_classifier_value_table (0.05 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_default_actor_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_default_actor_table (0.19 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_event_name_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_event_name_table (0.04 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_event_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_event_table (0.15 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_matter_actor_lnk_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_matter_actor_lnk_table (0.21 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_matter_category_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_matter_category_table (0.04 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_matter_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_matter_table (0.62 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_task_rules_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_task_rules_table (2.51 seconds)
Migrating: 2018_12_07_184312_add_foreign_keys_to_task_table
Migrated:  2018_12_07_184312_add_foreign_keys_to_task_table (0.19 seconds)
Migrating: 2018_12_08_000109_add_trigger
Migrated:  2018_12_08_000109_add_trigger (0.34 seconds)
Migrating: 2018_12_08_002558_create_views_and_functions
Migrated:  2018_12_08_002558_create_views_and_functions (0.09 seconds)
Migrating: 2019_03_07_171752_create_procedure_recalculate_tasks
Migrated:  2019_03_07_171752_create_procedure_recalculate_tasks (0.01 seconds)
Migrating: 2019_03_07_171910_create_procedure_recreate_tasks
Migrated:  2019_03_07_171910_create_procedure_recreate_tasks (0.01 seconds)
Migrating: 2019_03_07_171939_create_procedure_update_expired
Migrated:  2019_03_07_171939_create_procedure_update_expired (0 seconds)
Migrating: 2019_08_13_145446_update_tables
Migrated:  2019_08_13_145446_update_tables (0.1 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (0.02 seconds)
Migrating: 2019_11_13_135330_update_tables2
Migrated:  2019_11_13_135330_update_tables2 (0.06 seconds)
Migrating: 2019_11_17_025422_update_tables3
Migrated:  2019_11_17_025422_update_tables3 (0.21 seconds)
Migrating: 2019_11_18_002207_update_tables4
Migrated:  2019_11_18_002207_update_tables4 (0.02 seconds)
Migrating: 2019_11_25_123348_update_tables5
Migrated:  2019_11_25_123348_update_tables5 (0.1 seconds)
Seeding: CountryTableSeeder
Seeded:  CountryTableSeeder (0.03 seconds)
Seeding: MatterCategoryTableSeeder
Seeded:  MatterCategoryTableSeeder (0.04 seconds)
Seeding: ClassifierTypeTableSeeder
Seeded:  ClassifierTypeTableSeeder (0.01 seconds)
Seeding: ActorRoleTableSeeder
Seeded:  ActorRoleTableSeeder (0.01 seconds)
Seeding: ActorTableSeeder

   Illuminate\Database\QueryException  : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'password_salt' in 'field list' (SQL: insert into `actor` (`VAT_number`, `address`, `address_billing`, `address_mailing`, `company_id`, `country`, `country_billing`, `country_mailing`, `default_role`, `display_name`, `email`, `first_name`, `function`, `id`, `last_login`, `legal_form`, `login`, `name`, `nationality`, `notes`, `parent_id`, `password`, `password_salt`, `phone`, `phy_person`, `registration_no`, `remember_token`, `site_id`, `small_entity`, `warn`) values (?, ?, ?, ?, ?, ?, ?, ?, ANN, CLIENT, ?, ?, ?, 1, ?, ?, ?, Client handled, ?, DO NOT DELETE - Special actor used for removing renewal tasks that are handled by the client, ?, ?, ?, ?, 0, ?, ?, ?, 0, 0), (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, root@localhost, ?, ?, 120, 2017-12-04 09:28:29, ?, phpipuser, phpIP User, ?, ?, ?, $2y$10$auLQHQ3EIsg90hqnQsA1huhks3meaxwfWWEvJtD8R38jzwNN6y3zO, salt, ?, 1, ?, ?, ?, 0, 0))

  at C:\_projects\phpip\vendor\laravel\framework\src\Illuminate\Database\Connection.php:665
    661|         // If an exception occurs when attempting to run a query, we'll format the error
    662|         // message to include the bindings with SQL, which will make this exception a
    663|         // lot more helpful to the developer instead of just the database's errors.
    664|         catch (Exception $e) {
  > 665|             throw new QueryException(
    666|                 $query, $this->prepareBindings($bindings), $e
    667|             );
    668|         }
    669|

  Exception trace:

  1   Doctrine\DBAL\Driver\PDOException::("SQLSTATE[42S22]: Column not found: 1054 Unknown column 'password_salt' in 'field list'")
      C:\_projects\phpip\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php:63

  2   PDOException::("SQLSTATE[42S22]: Column not found: 1054 Unknown column 'password_salt' in 'field list'")
      C:\_projects\phpip\vendor\doctrine\dbal\lib\Doctrine\DBAL\Driver\PDOConnection.php:61

  Please use the argument -v to see more details.

I'm on Windows 10 with an XAMPP stack (MySQL for the database). I can see that the actor table doesn't have a password_salt column.

It looks like the password_salt column is dropped in this migration: https://github.com/jjdejong/phpip/blob/b7476ec5ddd9583a4df400b374e16cecc9f3e258/database/migrations/2019_11_13_135330_update_tables2.php

UI is missing buttons etc.

I installed, logged in. Looked quite empty
Tried: php artisan db:seed --class=SampleSeeder
Seeding: ActorSampleSeeder
Seeded: ActorSampleSeeder (0.02 seconds)
(...)
(?, EXA, ?, 2017-07-28, 67, 10, ?))

at /var/www/html/phpip/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attempting to run a query, we'll format the error
666| // message to include the bindings with SQL, which will make this exception a
667| // lot more helpful to the developer instead of just the database's errors.
668| catch (Exception $e) {

669| throw new QueryException(
670| $query, $this->prepareBindings($bindings), $e
671| );
672| }
673|

Exception trace:

1 Doctrine\DBAL\Driver\PDOException::("SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='")
/var/www/html/phpip/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:123

2 PDOException::("SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='")
/var/www/html/phpip/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:121

Please use the argument -v to see more details.
image

Looks like the UI is missing some buttons?

Actor addresses cannot be emptied via actor edition form

The three address fields of an actor are defined in the database as not null with a default value of an empty string (I don't recall why). When clearing an address field in the actor edition form, a null value is sent to the database instead of an empty string, causing an integrity constraint violation 1048. A solution is of course to define the address fields as nullable in the actor table definition. But I wonder if there is not a way to send an empty string instead of null to the database.

recherche avec une référence "complexe"

lors de la recherche d'un dossier particulier d'une famille de brevets, si on souhaite préciser le code pays ex. 500351MX, la recherche ne donne aucun résultat
la recherche n'est donc possible que sur la famille

2019_12_06_002_alter_task_table

desolé, j'ai une erreur sur une migration précédente, c'est peut être en rapport ?
voici ma version de maria db: 10.3.22-MariaDB-0+deb10u1

Migrating: 2019_12_06_002_alter_task_table

Illuminate\Database\QueryException

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'task_before_update BEFORE UPDATE ON task FOR EACH ROW
BEGIN
IF NEW.done_d' at line 1 (SQL: CREATE task_before_update BEFORE UPDATE ON task FOR EACH ROW
BEGIN
IF NEW.done_date IS NOT NULL AND OLD.done_date IS NULL AND OLD.done = 0 THEN
SET NEW.done = 1;
END IF;
IF NEW.done_date IS NULL AND OLD.done_date IS NOT NULL AND OLD.done = 1 THEN
SET NEW.done = 0;
END IF;
IF NEW.done = 1 AND OLD.done = 0 AND NEW.done_date IS NULL THEN
SET NEW.done_date = Least(OLD.due_date, Now());
END IF;
IF NEW.done = 0 AND OLD.done = 1 AND OLD.done_date IS NOT NULL THEN
SET NEW.done_date = NULL, NEW.step = 0, NEW.invoice_step = 0, NEW.grace_period = 0;
END IF;
END)

at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671
667| // If an exception occurs when attempting to run a query, we'll format the error
668| // message to include the bindings with SQL, which will make this exception a
669| // lot more helpful to the developer instead of just the database's errors.
670| catch (Exception $e) {

671| throw new QueryException(
672| $query, $this->prepareBindings($bindings), $e
673| );
674| }
675|

  +9 vendor frames 

10 database/migrations/2019_12_06_002_alter_task_table.php:30
Illuminate\Support\Facades\Facade::__callStatic("unprepared")

  +22 vendor frames 

33 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

2020_02_22_183512_add_foreignkeys_to_template_classes

Bonjour,
j'espère que vous allez bien.
après quelques temps j'ai voulu me mettre à jour, et j'ai l'erreur suivante.
Je suis donc bloqué et je ne sais pas ce qu'il faut faire.
Alexandre

Migrated: 2020_02_22_161215_create_template_classes (0.34 seconds)
Migrating: 2020_02_22_164446_create_template_members
Migrated: 2020_02_22_164446_create_template_members (0.62 seconds)
Migrating: 2020_02_22_173742_create_event_class_lnk
Migrated: 2020_02_22_173742_create_event_class_lnk (0.2 seconds)
Migrating: 2020_02_22_181558_add_foreignkeys_to_template_members
Migrated: 2020_02_22_181558_add_foreignkeys_to_template_members (1.14 seconds)
Migrating: 2020_02_22_183512_add_foreignkeys_to_template_classes

Illuminate\Database\QueryException

SQLSTATE[HY000]: General error: 1005 Can't create table phpip.template_classes (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table template_classes add constraint template_classes_default_role_foreign foreign key (default_role) references actor_role (code) on delete SET NULL on update CASCADE)

at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671
667| // If an exception occurs when attempting to run a query, we'll format the error
668| // message to include the bindings with SQL, which will make this exception a
669| // lot more helpful to the developer instead of just the database's errors.
670| catch (Exception $e) {

671| throw new QueryException(
672| $query, $this->prepareBindings($bindings), $e
673| );
674| }
675|

  +11 vendor frames 

12 database/migrations/2020_02_22_183512_add_foreignkeys_to_template_classes.php:18
Illuminate\Support\Facades\Facade::__callStatic("table")

  +22 vendor frames 

35 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

Nginx Configuration

Completed successful installation of PHPIP-V2 on Ubuntu 18.04 server running Nginx with PHP7.3.
Wanted to share a few of the Nginx configuration details in case it helps others:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    #Import default https certs (this is server-specific, and includes location of SSL keys)
    include global/https.conf;

    # Your web address
    server_name your-domain.com;

    # Path to the root of your installation
    root /var/www/html/phpip-v2/public/;

    # Set preferred index
    index index.php;

    #Location and name of logs
    access_log /var/log/nginx/mydomain.com.access.log combined;
    error_log /var/log/nginx/mydomain.com.error.log;

    # Tell Nginx how to direct all requests:
    # 1) see if it's a file, 2) see if it's a directory, and 3) see if it works with index.php
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # Tell Nginx how to handle all php documents
    # (NOTE: this is CRITICAL to making nginx work with php/laravel/etc)
    location ~ \.php {
        # Tell nginx to pass php files through to php
        # (NOTE: This file path depends on your installed version of php, 
        # and where it is located on your server)
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Hope this helps someone else! Thanks for PHPIP!

mise à jour et problèmes

Bonjour,
je n'avais pas effectué de mise à jour depuis nos derniers échanges.
Aujourd'hui, j'ai passé avec succès la commande sudo git pull.
puis la commande sudo composer install.

En revanche, la commande sudo php artisan migrate me fait le retour suivant:

SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'actor_role' already exists (SQL: create table actor_role (code char(5) not null, name varchar(45) not null, display_order tinyint(1) null default '127' comment 'Order of display in interface', shareable tinyint(1) not null default '0' comment 'Indicates whether actors listed with this role are shareable for all matters of the same family', show_ref tinyint(1) not null default '0', show_company tinyint(1) not null default '0', show_rate tinyint(1) not null default '0', show_date tinyint(1) not null default '0', notes varchar(160) null, creator varchar(20) null, updater varchar(20) null, created_at timestamp null, updated_at timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci' engine = InnoDB)

at vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attempting to run a query, we'll format the error
666| // message to include the bindings with SQL, which will make this exception a
667| // lot more helpful to the developer instead of just the database's errors.
668| catch (Exception $e) {

669| throw new QueryException(
670| $query, $this->prepareBindings($bindings), $e
671| );
672| }
673|

  +11 vendor frames 

12 database/migrations/2018_12_07_184310_create_actor_role_table.php:30
Illuminate\Support\Facades\Facade::__callStatic("create")

  +22 vendor frames 

35 artisan:37
Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

Evidemment, plus rien ne marche: vous pouvez tenter la connection ici: https://phpip.ddns.net/login

Comment sait on quelle version de laravel tourne sur le serveur ?

Merci beaucoup de m'avoir lu.

Cannot add Priority Claim to patent

I can add the published, granted, and expiry dates and numbers to a matter with no problem, When I try to add a "Priority Claim" event to record the application number, there is no error shown, but the events list is not updated with the new event. There are no errors shown in the application or in the log file.

Edit: it looks like it has something to do with the date. I can add a priority claim of 1/1/2019, but I can't change it afterwards.

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'uqtrigger' in 'field list'

Dear Jean-Jacques,
I'm using Ubuntu Eoan and have been struggling a bit.
Facing a few errors at "php artisan migrate --seed"
To be able to move forward I commented out / added a couple of lines in install-phpip-bionic.sh

Commented out:
echo "CREATE DATABASE phpip; GRANT ALL PRIVILEGES ON phpip.* TO phpip@localhost IDENTIFIED BY 'phpip';" | mysql

Replaced by:
echo "CREATE DATABASE phpip; CREATE USER 'phpip'@'localhost' IDENTIFIED BY 'phpip'; GRANT ALL ON phpip.* TO 'phpip'@'localhost';" | mysql
echo "alter user 'phpip'@'localhost' identified with mysql_native_password by 'phpip'; set global log_bin_trust_function_creators=1;" | mysql

Then I launched: php artisan migrate --seed
Which gave
(...)
Seeded: ActorTableSeeder (0.01 seconds)
Seeding: EventNameTableSeeder

Illuminate\Database\QueryException : SQLSTATE[42S22]: Column not found: 1054 Unknown column 'uqtrigger' in 'field list' (SQL: insert into event_name (code, name, category, country, is_task, status_event, default_responsible, use_matter_resp, unique, uqtrigger, killer, notes) values (ABA, Abandoned, ?, ?, 0, 1, ?, 0, 1, 0, 1, ?))

at /var/www/html/phpip/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attempting to run a query, we'll format the error
666| // message to include the bindings with SQL, which will make this exception a
667| // lot more helpful to the developer instead of just the database's errors.
668| catch (Exception $e) {

669| throw new QueryException(
670| $query, $this->prepareBindings($bindings), $e
671| );
672| }
673|

Exception trace:

1 Doctrine\DBAL\Driver\PDOException::("SQLSTATE[42S22]: Column not found: 1054 Unknown column 'uqtrigger' in 'field list'")
/var/www/html/phpip/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:63

2 PDOException::("SQLSTATE[42S22]: Column not found: 1054 Unknown column 'uqtrigger' in 'field list'")
/var/www/html/phpip/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:61

Please use the argument -v to see more details.

I tried using afterwards:
sudo ./install-phpip-bionic.sh
and it gave:
(...)


Installing database


Nothing to migrate.
Seeding: CountryTableSeeder

Illuminate\Database\QueryException : SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'AD' for key 'country.PRIMARY' (SQL: insert into country (em, ep, iso, iso3, name, name_DE, name_FR, numcode, oa, wo) values (0, 0, AD, AND, Andorra, Andorra, Andorre, 20, 0, 0), (0, 0, AE, ARE, United Arab Emirates, Vereinigte Arabische Emirate, Émirats Arabes Unis, 784, 0, 0), (0, 0, AF, AFG, Afghanistan, Afghanistan, Afghanistan, 4, 0, 0), (0, 0, AG, ATG, Antigua and Barbuda, Antigua und Barbuda (...)
...
Zimbabwe, Simbabwe, Zimbabwe, 716, 0, 0))

at /var/www/html/phpip/vendor/laravel/framework/src/Illuminate/Database/Connection.php:669
665| // If an exception occurs when attempting to run a query, we'll format the error
666| // message to include the bindings with SQL, which will make this exception a
667| // lot more helpful to the developer instead of just the database's errors.
668| catch (Exception $e) {

669| throw new QueryException(
670| $query, $this->prepareBindings($bindings), $e
671| );
672| }
673|

Exception trace:

1 Doctrine\DBAL\Driver\PDOException::("SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'AD' for key 'country.PRIMARY'")
/var/www/html/phpip/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:123

2 PDOException::("SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'AD' for key 'country.PRIMARY'")
/var/www/html/phpip/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOStatement.php:121

Please use the argument -v to see more details.


Install finished. If you want to populate the database with sample data run
php artisan db:seed --class=SampleSeeder
Go to http://phpip.local and login with the credentials phpipuser:changeme


I hope this helps a bit to trace the error.
Many thanks,
Thomas

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.