Git Product home page Git Product logo

phpip-legacy's Introduction

This version is no longer being maintained because of the obsolescence of Zend Framework 1. A new version is being developed based on Laravel.

Introduction

phpIP is a web tool developed by Omnipat 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.

Basic structure of phpIP

“Micro-kernel” structure

The database is articulated around a central table called “matter” (such as patents, trademarks or designs), that contains minimal information for each matter (essentially a category, a case reference, a country, and an expire date). Information that will be the substance of a matter is freely linked to each matter, in any number, from additional tables: actors, events, tasks, and classifiers. We found that anything useful in a matter fits in one of these four tables.

Actors are any person or company involved in a matter (applicants, inventors, client, agents...). Each actor can be linked to a matter with any of several roles, and a same actor can be linked to a matter with multiple roles, for instance an inventor can also be an applicant. A client (company) can also be an applicant. All variations are possible.

The roles are contained in the actor_role table.

Actors are linked to matters through a link table called matter_actor_lnk. This link table contains additional information about the specific link, such as the actor's role, his reference (for clients and agents), his company, a date, his order of display among other actors with the same role...

Events are related to the history of the matter and show how the matter is progressing. They basically have a name and a date. They can be a link to another matter if that other matter is involved in the progress of the current matter (see more details below).

Tasks are triggered by specific events. They have a name, a deadline, a “done” flag, and an optional “done date”. For instance, in a patent, an event tracking an “examiner action” issued by a patent office will trigger a “Response” task having a deadline three months after the examiner action date.

Tasks can be added manually to events. Some tasks are created automatically based on information in a task_rules table, when corresponding trigger events are entered for the matter.

Classifiers are other pieces of useful information that do not correspond to the above, such as keywords, business units, patent classification... and also links to related matters, for instance patents around a same invention. They have a type and a value, or a link to another matter. The value can be free-text stored in the classifier table itself (a value that is specific to the matter and not reused in other matters), or an index in a classifier_value table containing values that can be used multiple times (such as a list of products or business units).

No duplication of information

One key feature of phpIP is that any piece of information, even if it is used in multiple matters, say patents, is stored in one place only. We use two mechanisms for that:

Linked events

For instance, the priority date of a second patent is the filing date of a first patent. In traditional systems, this date is copied into a record related to the second patent. What if the filing date of the first patent is changed? Well, the system or user needs to make sure the date is updated in the second patent. In phpIP, the priority date of the second patent is an event linked to the filing event of the first patent. If the filing date of the first patent is changed, that change is automatically reflected in the priority event of the second patent, and tasks that rely on this date are updated.

Containers for shared information

In phpIP, the first matter in a series of related matters, for instance the first filed patent in a family, is a container for information common to all patents in the family, for instance client, inventors and applicants. Classifiers are also shared. Each subsequent created matter in the family shares this information from the container without duplication. If the information needs to be changed, it is changed in one place for all family members. The user may configure what type of information is shared by default and he has the option to change that as he adds the information.

These features make queries for displaying all data related to a matter more complex, but this is all handled by the user interface, so it is transparent to the end user. You will need to be more careful if you intend to write advanced queries but we have provided some view tables that list all the data related to each matter (and hence make the linked event and container techniques transparent).

Jean J. de Jong

phpip-legacy's People

Contributors

jjdejong avatar sharadpopli avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

phpip-legacy's Issues

Future

Hello,
I'm interested by this application and will use it in the near future.
Which feature would you like to have some contribution?
I see some topic which would be useful:

  • mail merging using date from cases or parties;
  • managing the process of renewals (reminders, orders)
  • billing;
  • connection with other application like CRM/ERP to share the people/societies database, the offre/billing ...
    Papoteur

Some actors not displayed in list view

What steps will reproduce the problem?
1. Add a new actor to an existing role (e.g. "Applicant")
2. Delete the previous actor in the role


What is the expected output? What do you see instead?

See new actor in list view. Remains empty instead.



Original issue reported on code.google.com by [email protected] on 7 Jun 2013 at 2:13

Undefined index and variable error messages

Here is an excerpt of the httpd error log.

[Sat Oct 08 18:46:33 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
variable: classifier_arr in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 646, 
referer: http://phpip.omnipat.local/matter/view/id/1743/rid/9
[Sat Oct 08 18:46:33 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: Official Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 646, 
referer: http://phpip.omnipat.local/matter/view/id/1743/rid/9
[Sat Oct 08 18:46:33 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: English Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 646, 
referer: http://phpip.omnipat.local/matter/view/id/1743/rid/9
[Sat Oct 08 18:46:33 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: Alt. Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 646, 
referer: http://phpip.omnipat.local/matter/view/id/1743/rid/9
[Sat Oct 08 18:46:41 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
variable: classifier_arr in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/matter/view/id/1739/rid/0
[Sat Oct 08 18:46:41 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: Official Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/matter/view/id/1739/rid/0
[Sat Oct 08 18:46:41 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: English Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/matter/view/id/1739/rid/0
[Sat Oct 08 18:46:41 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: Alt. Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/matter/view/id/1739/rid/0
[Sat Oct 08 19:50:34 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
variable: classifier_arr in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/
[Sat Oct 08 19:50:34 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: Official Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/
[Sat Oct 08 19:50:34 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: English Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/
[Sat Oct 08 19:50:40 2011] [error] [client 192.168.0.162] PHP Warning: 
array_key_exists() expects parameter 2 to be array, null given in 
/home/www/phpip/application/models/Matter.php on line 2206, referer: 
http://phpip.omnipat.local/matter/view/id/2637
[Sat Oct 08 19:51:12 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
variable: classifier_arr in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/
[Sat Oct 08 19:51:12 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: Official Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/
[Sat Oct 08 19:51:12 2011] [error] [client 192.168.0.162] PHP Notice: Undefined 
index: English Title in 
/home/www/phpip/application/views/scripts/matter/view.phtml on line 658, 
referer: http://phpip.omnipat.local/

Original issue reported on code.google.com by omnipat.sas on 8 Oct 2011 at 7:24

PB affichage fenêtre Renewals

Lorsque j’acquitte une annuité sur une fiche la fenêtre Renewals se ferme et une fenêtre All tasks s’ouvre automatiquement

Matter back/forth navigation

When a matter is clicked on in the tasks list in the home page, navigating back 
or forth causes an application error. This is probably because no navigation 
list exists in this situation.

The httpd access log says:
GET /matter/matter-nav/rid/2 HTTP/1.1" 500 666 
"http://phpip.omnipat.local/matter/view/id/2637"

If there is no navigation list, a default list should be navigated 
corresponding to the default matter list.

Original issue reported on code.google.com by omnipat.sas on 8 Oct 2011 at 7:23

Error when entering a filed event in TM matter

I enter an event "Filed" in a TM matter.
I get:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (phpip.task, CONSTRAINT fk_assigned_to FOREIGN KEY (assigned_to) REFERENCES actor (login) ON DELETE SET NULL ON UPDATE CASCADE), query was: INSERT INTO event (matter_ID, code, event_date, detail, alt_matter_ID) VALUES (?, ?, ?, ?, ?)
This is not the case with PAT matters.

Renewal of trademarks

Hello !

I wonder how to create a renewal deadline for trademark.
The filing date does not create this deadline, nore publishing, neither 
registration.


What version of the product are you using? On what operating system?
I use the last version on Ubuntu.

Thank you for your help and thank you for this program!

Nathalie GRYNWALD


Original issue reported on code.google.com by [email protected] on 30 Oct 2014 at 9:17

Nouveau problème avec Evenement Depot

Bonjour,
je viens de réinstaller toute ma base au "propre" et vierge.
Je n'arrive pas à saisir l'évènement "filed" alors que tous les autres semblent fonctionner.

Le message d'erreur reçu est le suivant:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (phpip.task, CONSTRAINT fk_assigned_to FOREIGN KEY (assigned_to) REFERENCES actor (login) ON DELETE SET NULL ON UPDATE CASCADE), query was: INSERT INTO event (matter_ID, code, event_date, alt_matter_ID) VALUES (?, ?, ?, ?)

Merci de votre réponse
Bien cordialement,
Alexandre

Migrations

Hi;
Only users table migrating
I don't know how i can make all tables migrating
Thanks

Task creation dialog

In some browsers, the fields are misaligned. The text fields appear to be too 
wide.

Original issue reported on code.google.com by omnipat.sas on 16 Apr 2012 at 8:42

Problème de saisie automatique des noms des acteurs

En voulant créer un « new matter », le champ "responsible" ne se remplit plus avec la saisie semi-automatique
Auparavant, je tapais les premières lettres de l'ingénieur en charge et phpIP me proposait les noms des acteurs correspondant. Cela n’est plus la cas

Filtered matter list issues

When clicking on a matter in an unfiltered list, the selected matter is opened 
in a new window - this is the correct behavior.

When the list is filtered, the matter opens in the same window, i.e. the 
filtered list disappears and can no longer be consulted (clicking "back" 
returns to the unfiltered list).

And then navigating back or forth causes an application error:
GET /matter/matter-nav/rid/2 HTTP/1.1" 500 666 
"http://phpip.omnipat.local/matter/view/id/2281"


Original issue reported on code.google.com by omnipat.sas on 8 Oct 2011 at 7:26

[Feature] Add internationalisation

It would be interesting to have the application translated in more languages.
The php part can be translated using Zend_translate based on gettext system.
Strings can be quoted:
$translate->_("string to translate");
xgettext generates catalog .pot files.
msgmerge updates .po files.
msgformat generates compiled .mo catalog files which are used by Zend_translate.

Obsolescence of Zend Framework 1 - what next?

Migrating the application to Zend Framework 2 is too tough, because it actually requires a full redesign. Since a full redesign is required anyway, I envision porting the application to another MVC framework that is easier to learn than ZF2 - Laravel. I'll be posting my initial works soon.

trouble in the MySQL part; no account for 'root'@'%'

Hi Jean-Jacque, thank you for the instructions. i try to install phpip on a 
completely new server with ubuntu 10.04 LTS, i have some trouble....

(i am not a computer guy, but i know the minimum to manage a pc with Linux 
environment...)

first i would like to give some precision: - at the end of "2.2 Virtual host in 
Apache for Zend" part it can be necessary to clear the history of firefox (if 
you use it)

in the "2.3. MySQL" part

for me "gunzip phpip_skel-YYYYMMDD.sql.gz" must be exect as root : "sudo gunzip 
phpip_skel-YYYYMMDD.sql.gz"

that is all that i was able to do. At the next command line i have trouble... 
indeed at "mysql -u root -p < phpip_skel-20120201.sql" i have an error after 
the good root password entry:

"ERROR 1449 (HY000) at line 2033: The user specified as definer ('root'@'%') 
does not exist"

I of course check if mysql have a root user, it have it.

i have another question: as PHPIP will be improve by the community, can you do 
a tutorial to update phpip with new features without to erase the data.

thank you for your job and your help

Arthur

Original issue reported on code.google.com by [email protected] on 4 Mar 2012 at 5:02

Automatic calculation of next CaseRef

The next caseref suggested upon creating new matters has less characters than 
required when the matter count has less than three digits. I.e. if the last 
used caseref is ABC002, the suggested caseref is ABC3 instead of ABC003.


Original issue reported on code.google.com by omnipat.sas on 2 Mar 2012 at 9:05

how to set a french filling date of an application

What steps will reproduce the problem?
1.Create a new French Patent App
2.Try to set the filing date in the past

What is the expected output? What do you see instead?
an output similar as if it was another patent application

What version of the product are you using? On what operating system?


Please provide any additional information below.
this is what I get: 
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a 
child row: a foreign key constraint fails (`phpip`.`task`, CONSTRAINT 
`fk_assigned_to` FOREIGN KEY (`assigned_to`) REFERENCES `actor` (`login`) ON 
DELETE SET NULL ON UPDATE CASCADE)

Original issue reported on code.google.com by [email protected] on 23 Oct 2014 at 12:23

Pb nouvelle installation

Après vérification de l’installation et essai sur l’installation faite, il apparait que le logiciel PHPIP édité sur github n’est pas complet. En effet, lors d’une installation suivant la procédure prescrite dans le wiki, je n’arrive pas à faire marcher la commande php artisan (que ce soit pour générer la clé de chiffrement ou se servir d’un serveur web local). Cette commande me retourne qu’il n’existe pas de fichiers dans un répertoire non fourni dans github. J’ai également créé un projet laravel (cms (comme wordpress) de phpip) vierge qui est fonctionnel. Dans ce projet vierge, il apparait un dossier vendor (demandé par artisan) absent de phpip-v2.
Pour essayer de résoudre le problème, j’ai, dans un premier temps, copié ce dossier dans le projet phpip. Dans ce cadre, artisan retourne une série d’erreurs ne trouvant pas certaines class. Dans un second temps, j’ai copié les fichiers spécifiques à phpip dans ce projet vierge. Malheureusement, malgré le non impact sur artisan (toujours opérationnel), la page qui s’affiche est toujours la page par défaut de laravel.
De plus, la version 1 de phpip n’est plus opérationnel (également testé).

Avez vous une une procédure d’installation en partant d’un projet laravel vierge ?

Merci

Possible to install on Windows

Since this app works on Apache / Mysql / PHP. I guess there should be no issues with running this on windows correct? Are there any special considerations before getting it to run on windows?

NGINX -- Zend application in index.php is 'echoing' commands

Installed a fresh copy manually in a subdirectory of /var/www, linked to a dedicated subdomain.
Setup NGINX accordingly -- nginx is loading index.php, but index.php is just printing out all commands after $application->.
Site can be seen here.

I have a copy running well on Apache2 on a local-only server, but was working on setting up a public server. The server runs NGINX, and I don't see any particular reason it shouldn't work under NGINX.
That said ... this doesn't really seem like an NGINX problem, but I'm not familiar at all with the ZEND framework. E.g. ... I'm not sure where index.php finds the 'Zend/Application.php' file, since it's not in the 'public' folder?

Any ideas?
Thanks!

suppression d'annuités

Bonjour,
lorsque je cherche à supprimer une annuité, j'ai un message d'erreur qui apparaît après avoir cliqué sur la croix. Pour autant, l'annuité est bien supprimée.

Voici le contenu du message:
Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/phpip/application/views/scripts/matter/tasklist.phtml on line 393.

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.