Le 30/03/2011 16:47, Ian Walls a écrit : > Fellow Developers, Hello everybody, > Last night, I stayed up late running circ/circulation.pl > <http://circulation.pl> through NYTProf, to get an idea where we may > be able to optimize circulation for speed. After much frustration > (darn session IDs...), I was able to get a report. The results > were... not exactly what I expected.
For those who have used or developed on Koha 2.x, you probably have noticed that Koha 2.x was much more slower than Koha 3.x So, yesterday and tonight i've taken my laptop and made a lot of testings. First of all, i'll thank forever ... The New York Times ... Why will you tell me ? Because of http://search.cpan.org/~adamk/Aspect-Library-NYTProf-1.00/lib/Aspect/Library/NYTProf.pm This tool is really amazing. You run perl -d:NYTProf mainpage.pl ; nytprofhtml --open And you get a highly detailled HTML report with the time spent in each line/sub/module to run mainpage.pl. Here is the result : http://depot.biblibre.com/ppoulain/nytprof.ini/ (the .ini is to keep track of the perf before anything optimized) Note : tests done on my laptop, that is not a server. 1st test with master: Profile of mainpage.pl for 1.73s (of 2.18s), executing 155108 statements and 41041 subroutine calls in 249 source files and 64 string evals. I have investigated to find the longest timings & if we can do something. (note All the following improvement have been done incrementally) First of all, C4::Context and C4::Koha are loaded on everypage, so it's worth investigating == C4::Context == * spent 185ms just reading the config file. Ouch ! that's almost 10% of the time !!! (http://depot.biblibre.com/ppoulain/nytprof.ini/C4-Context-pm-13-line.html#230) I tried to hardcode the hashref instead of XMLin-ing the config file, the results are astonishing : after = Profile of mainpage.pl for 1.59s (of 1.93s), executing 117399 statements and 26939 subroutine calls in 241 source files and 63 string evals. => PROPOSAL = add a YAML version of the XML config file that we could use in // => PROPOSAL 2 = memcache the config file (hint : the config file in koha 2 was not xml !) * C4::Context, sub db_scheme2dbi, the i flag in /mysql/i cost 84ms !!! with /i, the duration is 84.4ms, without, it's 10µs !!! after = Profile of mainpage.pl for 1.55s (of 1.91s), executing 117398 statements and 26938 subroutine calls in 241 source files and 63 string evals. => PROPOSAL = just 'return "mysql"' at the beginning of this sub, as everything else is not working anyway ! == C4::Languages == * C4::Languages::getAllLanguages 43ms => heavily under optimized mysql query = returns all languages from language_subtag_registry and language_descriptions even if only a few localisations are installed. * C4::Languages::_build_languages_arrayref 15ms => same as for getAllLanguages I know there is a patch (from hdl) pending to improve this sub, i haven't tested it yet (http://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=6000) (hint : this sub appeared in 3.0, was not in 2.2 !) == Other packages == * C4::Koha.pm 15ms for use Business::ISBN, that is used only in 1 sub used only in a few pages (and none if no cover images are enabled unless i'm wrong) * C4::Letters use MIME::Lite spend 26ms, that are useless 90% of the time (why is C4::Letters loaded ! answer = because C4::Reserves is loaded by Items.pm that is loaded by Biblio.pm that is loaded by AuthoritiesMarc.pm that is loaded (uselessly) by mainpage.pl * CGI/Session/Driver/mysql.pm needs 79ms i've tested by switching to driver::File::Serializer (dropped to 21ms). this seems to work, but probably requires more testing than what I did * Date::Manip needs requires 46ms and is useless most of the time. after = Profile of mainpage.pl for 1.31s (of 1.60s), executing 103643 statements and 25380 subroutine calls in 215 source files and 55 string evals. => PROPOSAL = WHERE it's interesting we could replace the use XXXX by a require XXXX just before the lines that need the package. The require is loaded at run tim, so, when unneeded, the package won't be loaded == mainpage.pl == Mainpage.pl load some authorities, we do nothing with it. Commenting the use C4::Authorities and all related code results in: after = Profile of mainpage.pl for 1.27s (of 1.57s), executing 103000 statements and 25194 subroutine calls in 212 source files and 55 string evals. == Packages nested == * I also noticed that Auth.pm loads Members.pm (to retrieve patron informations and display them on the top right). Members.pm loads Reserves that loads Biblio.pm, Circulation.pm and Items.pm All those packages are the biggest to load. I've written a script, that display, for each file in C4 which package is loaded and which sub in the package loaded are used. It shows, for example, that there is a "use Koha.pm;" that is useless in AuthoritiesMarc.pm It also shows which sub are used, and how many times. For example, Circulation.pm calls "use C4::Biblio" and : In Circulation.pm the Biblio.pm, sub GetBiblioItemData is used 1 times In Circulation.pm the Biblio.pm, sub GetBiblioFromItemNumber is used 4 times That will be handy to find what can be cleaned & removed. I've attached the script and the result. If you want to run it yourself, just export PERL5LIB, KOHA_CONF, put the script in $KOHA directory, and run it ! == Other == * packages that uses the biggest amount of CPU are not C4 packages : * utf8_heavy-pl is the most cpu consuming thing : 132ms, I don't know if we can do something * Template::Parser needs 123ms, not sure we can do something * all XML stuff is highly consuming = loading MARC::File::XML requires 47ms in Biblio.pm, XML::Sax::Base require 40ms to be loaded => definetly, the best way to reduce CPU time is by pre-loading things, we already knew that == Next step == * i'll file a bug for the various improvements that can be made easily * i'll continue investigate & report my findings I'm aware it's a 1st step, and the long-term road is to reach data&code persistency. But cleaning what we already have may ease the next big step. And any speed improvement is a good thing, isn't it ! HTH -- Paul POULAIN http://www.biblibre.com Expert en Logiciels Libres pour l'info-doc Tel : (33) 4 91 81 35 08
duplicate sub : in ImportBatch.pm and ImportBatch.pm
duplicate sub : output in Templates.pm and Dates.pm
duplicate sub : _current_language in Templates.pm and Output.pm
duplicate sub : themelanguage in Templates.pm and Output.pm
duplicate sub : _serialize in UploadedFile.pm and BackgroundJob.pm
duplicate sub : id in UploadedFile.pm and BackgroundJob.pm
duplicate sub : name in UploadedFile.pm and BackgroundJob.pm
duplicate sub : fetch in UploadedFile.pm and BackgroundJob.pm
duplicate sub : in Items.pm and ImportBatch.pm
duplicate sub : in Items.pm and ImportBatch.pm
duplicate sub : _filter_fields in SQLHelper.pm and Budgets.pm
duplicate sub : all in ItemType.pm and Category.pm
duplicate sub : fetch in Matcher.pm and BackgroundJob.pm
duplicate sub : description in Matcher.pm and Auth_with_ldap.pm
duplicate sub : _prefformat in Barcodes.pm and Dates.pm
duplicate sub : delete in ItemCirculationAlertPreference.pm and Matcher.pm
duplicate sub : find in ItemCirculationAlertPreference.pm and Message.pm
duplicate sub : init in Service.pm and Dates.pm
duplicate sub : GetContract in Contract.pm and Acquisition.pm
======
===== checking SIP =====
===== checking AuthoritiesMarc.pm =====
package AuthoritiesMarc.pm uses Context.pm
package AuthoritiesMarc.pm uses Koha.pm
There is a use Koha.pm that is useless in AuthoritiesMarc.pm
package AuthoritiesMarc.pm uses Biblio.pm
In AuthoritiesMarc.pm the Biblio.pm, sub GetMarcFromKohaField is used 1 times
In AuthoritiesMarc.pm the Biblio.pm, sub GetMarcBiblio is used 1 times
In AuthoritiesMarc.pm the Biblio.pm, sub ModBiblio is used 1 times
In AuthoritiesMarc.pm the Biblio.pm, sub GetFrameworkCode is used 1 times
In AuthoritiesMarc.pm the Biblio.pm, sub ModZebra is used 2 times
In AuthoritiesMarc.pm the Biblio.pm, sub TransformMarcToKoha is used 1 times
package AuthoritiesMarc.pm uses Search.pm
In AuthoritiesMarc.pm the Search.pm, sub SimpleSearch is used 2 times
In AuthoritiesMarc.pm the Search.pm, sub NZanalyse is used 2 times
package AuthoritiesMarc.pm uses AuthoritiesMarc.pm
package AuthoritiesMarc.pm uses AuthoritiesMarc.pm
package AuthoritiesMarc.pm uses Charset.pm
In AuthoritiesMarc.pm the Charset.pm, sub SetUTF8Flag is used 1 times
In AuthoritiesMarc.pm the Charset.pm, sub StripNonXmlChars is used 1 times
package AuthoritiesMarc.pm uses Log.pm
In AuthoritiesMarc.pm the Log.pm, sub logaction is used 3 times
===== checking ClassSortRoutine.pm =====
package ClassSortRoutine.pm uses Context.pm
package ClassSortRoutine.pm uses Koha.pm
There is a use Koha.pm that is useless in ClassSortRoutine.pm
package ClassSortRoutine.pm uses ClassSortRoutine.pm
package ClassSortRoutine.pm require ClassSortRoutine.pm
===== checking Print.pm =====
package Print.pm uses Context.pm
package Print.pm uses Circulation.pm
There is a use Circulation.pm that is useless in Print.pm
package Print.pm uses Members.pm
In Print.pm the Members.pm, sub GetPendingIssues is used 1 times
In Print.pm the Members.pm, sub GetMemberDetails is used 1 times
package Print.pm uses Dates.pm
In Print.pm the Dates.pm, sub format_date is used 1 times
In Print.pm the Dates.pm, sub today is used 1 times
package Print.pm uses Print.pm
===== checking External =====
===== checking Labels.pm =====
package Labels.pm uses Labels.pm
package Labels.pm uses Labels.pm
package Labels.pm uses Labels.pm
package Labels.pm uses Labels.pm
package Labels.pm uses Labels.pm
===== checking Log.pm =====
package Log.pm uses Context.pm
package Log.pm uses Dates.pm
In Log.pm the Dates.pm, sub format_date is used 1 times
In Log.pm the Dates.pm, sub output is used 2 times
package Log.pm uses Log.pm
===== checking Maintainance.pm =====
package Maintainance.pm uses Context.pm
package Maintainance.pm uses Maintenance.pm
There is a use Maintenance.pm that is useless in Maintainance.pm
===== checking ClassSource.pm =====
package ClassSource.pm uses Context.pm
package ClassSource.pm uses Koha.pm
There is a use Koha.pm that is useless in ClassSource.pm
package ClassSource.pm uses ClassSortRoutine.pm
In ClassSource.pm the ClassSortRoutine.pm, sub GetClassSortKey is used 1 times
package ClassSource.pm uses ClassSource.pm
===== checking Category.pm =====
package Category.pm uses Context.pm
package Category.pm uses Category.pm
===== checking AuthoritiesMarc =====
===== checking TmplToken.pm =====
package TmplToken.pm uses TmplTokenType.pm
There is a use TmplTokenType.pm that is useless in TmplToken.pm
===== checking Members =====
===== checking Patroncards =====
===== checking Accounts.pm =====
package Accounts.pm uses Context.pm
package Accounts.pm uses Stats.pm
In Accounts.pm the Stats.pm, sub UpdateStats is used 3 times
package Accounts.pm uses Members.pm
In Accounts.pm the Members.pm, sub GetMember is used 1 times
package Accounts.pm uses Items.pm
In Accounts.pm the Items.pm, sub ModItem is used 2 times
package Accounts.pm uses Circulation.pm
In Accounts.pm the Circulation.pm, sub MarkIssueReturned is used 2 times
package Accounts.pm uses Accounts.pm
===== checking Overdues.pm =====
package Overdues.pm uses Circulation.pm
In Overdues.pm the Circulation.pm, sub GetIssuingRule is used 2 times
package Overdues.pm uses Context.pm
package Overdues.pm uses Accounts.pm
In Overdues.pm the Accounts.pm, sub getnextacctno is used 2 times
package Overdues.pm uses Log.pm
In Overdues.pm the Log.pm, sub logaction is used 1 times
package Overdues.pm uses Debug.pm
There is a use Debug.pm that is useless in Overdues.pm
package Overdues.pm uses Circulation.pm
In Overdues.pm the Circulation.pm, sub GetIssuingRule is used 2 times
package Overdues.pm uses Overdues.pm
===== checking Members.pm =====
package Members.pm uses Context.pm
package Members.pm uses Dates.pm
In Members.pm the Dates.pm, sub output is used 1 times
package Members.pm uses Log.pm
In Members.pm the Log.pm, sub logaction is used 4 times
package Members.pm uses Overdues.pm
In Members.pm the Overdues.pm, sub checkoverdues is used 1 times
package Members.pm uses Reserves.pm
In Members.pm the Reserves.pm, sub GetReservesFromBorrowernumber is used 1 times
package Members.pm uses Accounts.pm
In Members.pm the Accounts.pm, sub manualinvoice is used 2 times
package Members.pm uses Biblio.pm
In Members.pm the Biblio.pm, sub GetBiblioFromItemNumber is used 1 times
package Members.pm uses SQLHelper.pm
In Members.pm the SQLHelper.pm, sub UpdateInTable is used 1 times
In Members.pm the SQLHelper.pm, sub InsertInTable is used 1 times
In Members.pm the SQLHelper.pm, sub SearchInTable is used 1 times
package Members.pm uses Members.pm
package Members.pm uses Members.pm
===== checking Bookseller.pm =====
package Bookseller.pm uses Bookseller.pm
===== checking ImportBatch.pm =====
package ImportBatch.pm uses Context.pm
package ImportBatch.pm uses Koha.pm
In ImportBatch.pm the Koha.pm, sub _isbn_cleanup is used 1 times
package ImportBatch.pm uses Biblio.pm
In ImportBatch.pm the Biblio.pm, sub GetMarcFromKohaField is used 2 times
In ImportBatch.pm the Biblio.pm, sub AddBiblio is used 1 times
In ImportBatch.pm the Biblio.pm, sub GetBiblio is used 2 times
In ImportBatch.pm the Biblio.pm, sub ModBiblio is used 2 times
In ImportBatch.pm the Biblio.pm, sub DelBiblio is used 1 times
In ImportBatch.pm the Biblio.pm, sub GetXmlBiblio is used 1 times
In ImportBatch.pm the Biblio.pm, sub TransformMarcToKoha is used 2 times
package ImportBatch.pm uses Items.pm
In ImportBatch.pm the Items.pm, sub DelItem is used 1 times
In ImportBatch.pm the Items.pm, sub GetItemnumberFromBarcode is used 1 times
In ImportBatch.pm the Items.pm, sub AddItemFromMarc is used 2 times
package ImportBatch.pm uses Charset.pm
In ImportBatch.pm the Charset.pm, sub StripNonXmlChars is used 3 times
In ImportBatch.pm the Charset.pm, sub MarcToUTF8Record is used 1 times
package ImportBatch.pm uses ImportBatch.pm
===== checking Budgets.pm =====
package Budgets.pm uses Context.pm
package Budgets.pm uses Dates.pm
In Budgets.pm the Dates.pm, sub regexp is used 1 times
In Budgets.pm the Dates.pm, sub format_date_in_iso is used 1 times
package Budgets.pm uses SQLHelper.pm
In Budgets.pm the SQLHelper.pm, sub UpdateInTable is used 2 times
In Budgets.pm the SQLHelper.pm, sub InsertInTable is used 2 times
In Budgets.pm the SQLHelper.pm, sub SearchInTable is used 2 times
package Budgets.pm uses Debug.pm
There is a use Debug.pm that is useless in Budgets.pm
===== checking Input.pm =====
package Input.pm uses Context.pm
package Input.pm uses Input.pm
===== checking . =====
===== checking Output.pm =====
package Output.pm uses Context.pm
package Output.pm uses Languages.pm
In Output.pm the Languages.pm, sub accept_language is used 1 times
In Output.pm the Languages.pm, sub getTranslatedLanguages is used 2 times
In Output.pm the Languages.pm, sub get_bidi is used 1 times
In Output.pm the Languages.pm, sub regex_lang_subtags is used 1 times
package Output.pm uses Dates.pm
In Output.pm the Dates.pm, sub format_date is used 1 times
package Output.pm uses Budgets.pm
There is a use Budgets.pm that is useless in Output.pm
package Output.pm uses Templates.pm
In Output.pm the Templates.pm, sub param is used 2 times
package Output.pm uses Debug.pm
There is a use Debug.pm that is useless in Output.pm
===== checking Scrubber.pm =====
package Scrubber.pm uses Context.pm
package Scrubber.pm uses Debug.pm
There is a use Debug.pm that is useless in Scrubber.pm
===== checking Ris.pm =====
===== checking TTParser.pm =====
package TTParser.pm uses TmplToken.pm
In TTParser.pm the TmplToken.pm, sub set_attributes is used 2 times
In TTParser.pm the TmplToken.pm, sub attributes is used 2 times
===== checking Search =====
===== checking XSLT.pm =====
package XSLT.pm uses Context.pm
package XSLT.pm uses Branch.pm
In XSLT.pm the Branch.pm, sub GetBranches is used 1 times
package XSLT.pm uses Items.pm
In XSLT.pm the Items.pm, sub GetItemsInfo is used 1 times
package XSLT.pm uses Koha.pm
In XSLT.pm the Koha.pm, sub GetItemTypes is used 1 times
In XSLT.pm the Koha.pm, sub xml_escape is used 2 times
package XSLT.pm uses Biblio.pm
In XSLT.pm the Biblio.pm, sub GetAuthorisedValueDesc is used 1 times
In XSLT.pm the Biblio.pm, sub GetMarcStructure is used 1 times
In XSLT.pm the Biblio.pm, sub GetFrameworkCode is used 1 times
package XSLT.pm uses Circulation.pm
In XSLT.pm the Circulation.pm, sub GetTransfers is used 1 times
package XSLT.pm uses Reserves.pm
In XSLT.pm the Reserves.pm, sub CheckReserves is used 1 times
package XSLT.pm uses Output.pm
In XSLT.pm the Output.pm, sub _current_language is used 2 times
===== checking Dates.pm =====
package Dates.pm uses Context.pm
package Dates.pm uses Debug.pm
There is a use Debug.pm that is useless in Dates.pm
===== checking Templates.pm =====
package Templates.pm uses Context.pm
===== checking .. =====
===== checking BackgroundJob.pm =====
package BackgroundJob.pm uses Context.pm
package BackgroundJob.pm uses Auth.pm
In BackgroundJob.pm the Auth.pm, sub get_session is used 2 times
===== checking tests =====
===== checking Calendar.pm =====
package Calendar.pm uses Context.pm
package Calendar.pm uses Calendar.pm
===== checking Reports.pm =====
package Reports.pm uses Context.pm
package Reports.pm uses Debug.pm
There is a use Debug.pm that is useless in Reports.pm
===== checking UploadedFile.pm =====
package UploadedFile.pm uses Context.pm
package UploadedFile.pm uses Auth.pm
In UploadedFile.pm the Auth.pm, sub get_session is used 4 times
===== checking Context.pm =====
package Context.pm uses Boolean.pm
In Context.pm the Boolean.pm, sub true_p is used 1 times
package Context.pm uses Debug.pm
There is a use Debug.pm that is useless in Context.pm
package Context.pm uses Context.pm
package Context.pm uses Context.pm
package Context.pm uses Context.pm
package Context.pm uses Context.pm
===== checking Heading =====
===== checking Utils.pm =====
===== checking Heading.pm =====
package Heading.pm uses Context.pm
package Heading.pm uses Heading.pm
package Heading.pm uses Search.pm
In Heading.pm the Search.pm, sub SimpleSearch is used 2 times
package Heading.pm uses Heading.pm
===== checking Output =====
===== checking Languages.pm =====
package Languages.pm uses Context.pm
package Languages.pm uses Languages.pm
===== checking Items.pm =====
package Items.pm uses Context.pm
package Items.pm uses Koha.pm
In Items.pm the Koha.pm, sub getitemtypeimagelocation is used 1 times
In Items.pm the Koha.pm, sub get_infos_of is used 1 times
In Items.pm the Koha.pm, sub GetAuthorisedValues is used 1 times
In Items.pm the Koha.pm, sub GetKohaAuthorisedValueLib is used 2 times
package Items.pm uses Biblio.pm
In Items.pm the Biblio.pm, sub GetMarcFromKohaField is used 7 times
In Items.pm the Biblio.pm, sub GetMarcBiblio is used 1 times
In Items.pm the Biblio.pm, sub GetMarcStructure is used 1 times
In Items.pm the Biblio.pm, sub ModBiblioMarc is used 1 times
In Items.pm the Biblio.pm, sub GetFrameworkCode is used 5 times
In Items.pm the Biblio.pm, sub TransformKohaToMarc is used 1 times
In Items.pm the Biblio.pm, sub ModZebra is used 5 times
In Items.pm the Biblio.pm, sub TransformMarcToKoha is used 4 times
package Items.pm uses Dates.pm
In Items.pm the Dates.pm, sub format_date is used 1 times
In Items.pm the Dates.pm, sub output is used 2 times
In Items.pm the Dates.pm, sub format_date_in_iso is used 1 times
package Items.pm uses ClassSource.pm
In Items.pm the ClassSource.pm, sub GetClassSort is used 1 times
package Items.pm uses Log.pm
In Items.pm the Log.pm, sub logaction is used 4 times
package Items.pm uses Branch.pm
In Items.pm the Branch.pm, sub GetBranchName is used 2 times
package Items.pm require Reserves.pm
In Items.pm the Reserves.pm, sub CheckReserves is used 1 times
package Items.pm uses Charset.pm
In Items.pm the Charset.pm, sub StripNonXmlChars is used 1 times
package Items.pm uses Acquisition.pm
In Items.pm the Acquisition.pm, sub ModOrder is used 1 times
In Items.pm the Acquisition.pm, sub GetOrderFromItemnumber is used 1 times
===== checking Review.pm =====
package Review.pm uses Context.pm
package Review.pm uses Review.pm
===== checking Auth_with_cas.pm =====
package Auth_with_cas.pm uses Debug.pm
There is a use Debug.pm that is useless in Auth_with_cas.pm
package Auth_with_cas.pm uses Context.pm
package Auth_with_cas.pm uses Utils.pm
There is a use Utils.pm that is useless in Auth_with_cas.pm
package Auth_with_cas.pm uses Auth_with_cas.pm
===== checking Charset.pm =====
package Charset.pm uses Debug.pm
There is a use Debug.pm that is useless in Charset.pm
package Charset.pm uses Charset.pm
===== checking VirtualShelves.pm =====
package VirtualShelves.pm uses Context.pm
package VirtualShelves.pm uses Circulation.pm
There is a use Circulation.pm that is useless in VirtualShelves.pm
package VirtualShelves.pm uses Debug.pm
There is a use Debug.pm that is useless in VirtualShelves.pm
package VirtualShelves.pm uses Members.pm
In VirtualShelves.pm the Members.pm, sub GetMemberDetails is used 1 times
package VirtualShelves.pm require Auth.pm
In VirtualShelves.pm the Auth.pm, sub get_session is used 1 times
package VirtualShelves.pm uses VirtualShelves.pm
===== checking Koha.pm =====
package Koha.pm uses Context.pm
package Koha.pm uses Output.pm
There is a use Output.pm that is useless in Koha.pm
package Koha.pm uses Koha.pm
===== checking Creators =====
===== checking Search.pm =====
package Search.pm uses Context.pm
package Search.pm uses Biblio.pm
In Search.pm the Biblio.pm, sub GetMarcFromKohaField is used 5 times
In Search.pm the Biblio.pm, sub GetAuthorisedValueDesc is used 1 times
In Search.pm the Biblio.pm, sub GetMarcBiblio is used 6 times
In Search.pm the Biblio.pm, sub get_biblio_authorised_values is used 1 times
In Search.pm the Biblio.pm, sub GetBiblioData is used 2 times
In Search.pm the Biblio.pm, sub GetFrameworkCode is used 3 times
In Search.pm the Biblio.pm, sub TransformMarcToKoha is used 4 times
In Search.pm the Biblio.pm, sub GetRecordValue is used 1 times
package Search.pm uses Koha.pm
In Search.pm the Koha.pm, sub GetItemTypes is used 1 times
In Search.pm the Koha.pm, sub getitemtypeimagelocation is used 4 times
In Search.pm the Koha.pm, sub GetKohaAuthorisedValues is used 1 times
In Search.pm the Koha.pm, sub GetAuthValCode is used 1 times
In Search.pm the Koha.pm, sub GetNormalizedEAN is used 1 times
In Search.pm the Koha.pm, sub getFacets is used 1 times
In Search.pm the Koha.pm, sub GetNormalizedOCLCNumber is used 1 times
In Search.pm the Koha.pm, sub GetNormalizedUPC is used 1 times
In Search.pm the Koha.pm, sub GetNormalizedISBN is used 1 times
package Search.pm uses Search.pm
package Search.pm uses Dates.pm
In Search.pm the Dates.pm, sub init is used 1 times
In Search.pm the Dates.pm, sub format_date is used 1 times
In Search.pm the Dates.pm, sub output is used 2 times
package Search.pm uses Members.pm
In Search.pm the Members.pm, sub GetHideLostItemsPreference is used 1 times
In Search.pm the Members.pm, sub Search is used 4 times
package Search.pm uses XSLT.pm
In Search.pm the XSLT.pm, sub XSLTParse4Display is used 1 times
package Search.pm uses Branch.pm
In Search.pm the Branch.pm, sub GetBranchName is used 1 times
package Search.pm uses Reserves.pm
In Search.pm the Reserves.pm, sub CheckReserves is used 1 times
package Search.pm uses Debug.pm
There is a use Debug.pm that is useless in Search.pm
package Search.pm uses Items.pm
In Search.pm the Items.pm, sub get_authorised_value_images is used 1 times
In Search.pm the Items.pm, sub GetHiddenItemnumbers is used 1 times
package Search.pm uses Branch.pm
In Search.pm the Branch.pm, sub GetBranchName is used 1 times
package Search.pm uses Charset.pm
In Search.pm the Charset.pm, sub SetUTF8Flag is used 1 times
In Search.pm the Charset.pm, sub SetMarcUnicodeFlag is used 1 times
===== checking Labels =====
===== checking Patroncards.pm =====
package Patroncards.pm uses Patroncards.pm
package Patroncards.pm uses Patroncards.pm
package Patroncards.pm uses Patroncards.pm
package Patroncards.pm uses Patroncards.pm
package Patroncards.pm uses Patroncards.pm
package Patroncards.pm uses Patroncards.pm
===== checking Reserves.pm =====
package Reserves.pm uses Context.pm
package Reserves.pm uses Biblio.pm
In Reserves.pm the Biblio.pm, sub GetBiblioItemData is used 2 times
In Reserves.pm the Biblio.pm, sub GetBiblioData is used 1 times
package Reserves.pm uses Members.pm
In Reserves.pm the Members.pm, sub GetMember is used 3 times
In Reserves.pm the Members.pm, sub GetFirstValidEmailAddress is used 1 times
In Reserves.pm the Members.pm, sub GetMemberDetails is used 1 times
package Reserves.pm uses Items.pm
In Reserves.pm the Items.pm, sub CartToShelf is used 2 times
In Reserves.pm the Items.pm, sub ModItemTransfer is used 1 times
In Reserves.pm the Items.pm, sub GetItemsInfo is used 1 times
In Reserves.pm the Items.pm, sub GetItem is used 4 times
package Reserves.pm uses Search.pm
There is a use Search.pm that is useless in Reserves.pm
package Reserves.pm uses Circulation.pm
In Reserves.pm the Circulation.pm, sub _GetCircControlBranch is used 1 times
In Reserves.pm the Circulation.pm, sub GetBranchItemRule is used 1 times
package Reserves.pm uses Accounts.pm
In Reserves.pm the Accounts.pm, sub getnextacctno is used 1 times
package Reserves.pm uses Members.pm
In Reserves.pm the Members.pm, sub GetMember is used 3 times
In Reserves.pm the Members.pm, sub GetFirstValidEmailAddress is used 1 times
In Reserves.pm the Members.pm, sub GetMemberDetails is used 1 times
package Reserves.pm uses Members.pm
In Reserves.pm the Members.pm, sub GetMember is used 3 times
In Reserves.pm the Members.pm, sub GetFirstValidEmailAddress is used 1 times
In Reserves.pm the Members.pm, sub GetMemberDetails is used 1 times
package Reserves.pm uses Letters.pm
In Reserves.pm the Letters.pm, sub parseletter is used 5 times
In Reserves.pm the Letters.pm, sub EnqueueLetter is used 4 times
In Reserves.pm the Letters.pm, sub getletter is used 2 times
package Reserves.pm uses Branch.pm
In Reserves.pm the Branch.pm, sub GetBranchDetail is used 2 times
package Reserves.pm uses Dates.pm
In Reserves.pm the Dates.pm, sub output is used 1 times
In Reserves.pm the Dates.pm, sub today is used 1 times
In Reserves.pm the Dates.pm, sub format_date_in_iso is used 2 times
package Reserves.pm uses Reserves.pm
===== checking XISBN.pm =====
package XISBN.pm uses Biblio.pm
In XISBN.pm the Biblio.pm, sub GetBiblioData is used 1 times
package XISBN.pm uses Koha.pm
In XISBN.pm the Koha.pm, sub GetNormalizedISBN is used 1 times
package XISBN.pm uses External.pm
There is a use External.pm that is useless in XISBN.pm
===== checking SQLHelper.pm =====
package SQLHelper.pm uses Context.pm
package SQLHelper.pm uses Dates.pm
In SQLHelper.pm the Dates.pm, sub regexp is used 1 times
In SQLHelper.pm the Dates.pm, sub format_date_in_iso is used 1 times
package SQLHelper.pm uses Debug.pm
There is a use Debug.pm that is useless in SQLHelper.pm
package SQLHelper.pm uses SQLHelper.pm
===== checking ItemType.pm =====
package ItemType.pm uses Context.pm
package ItemType.pm uses ItemType.pm
===== checking Csv.pm =====
package Csv.pm uses Context.pm
===== checking Installer =====
===== checking Form =====
===== checking Auth.pm =====
package Auth.pm uses Context.pm
package Auth.pm uses Output.pm
In Auth.pm the Output.pm, sub gettemplate is used 2 times
package Auth.pm uses Members.pm
In Auth.pm the Members.pm, sub GetMemberDetails is used 1 times
package Auth.pm uses Koha.pm
There is a use Koha.pm that is useless in Auth.pm
package Auth.pm uses Branch.pm
In Auth.pm the Branch.pm, sub GetBranchName is used 2 times
In Auth.pm the Branch.pm, sub GetBranches is used 3 times
In Auth.pm the Branch.pm, sub GetBranchesLoop is used 1 times
package Auth.pm uses VirtualShelves.pm
In Auth.pm the VirtualShelves.pm, sub GetRecentShelves is used 3 times
package Auth.pm require Auth_with_ldap.pm
In Auth.pm the Auth_with_ldap.pm, sub checkpw_ldap is used 1 times
package Auth.pm require Auth_with_cas.pm
In Auth.pm the Auth_with_cas.pm, sub checkpw_cas is used 1 times
In Auth.pm the Auth_with_cas.pm, sub login_cas_url is used 1 times
In Auth.pm the Auth_with_cas.pm, sub logout_cas is used 1 times
package Auth.pm uses Auth.pm
package Auth.pm uses Output.pm
In Auth.pm the Output.pm, sub gettemplate is used 2 times
===== checking Circulation.pm =====
package Circulation.pm uses Context.pm
package Circulation.pm uses Stats.pm
In Circulation.pm the Stats.pm, sub UpdateStats is used 4 times
package Circulation.pm uses Reserves.pm
In Circulation.pm the Reserves.pm, sub ModReserveFill is used 1 times
In Circulation.pm the Reserves.pm, sub CheckReserves is used 5 times
In Circulation.pm the Reserves.pm, sub ModReserve is used 1 times
In Circulation.pm the Reserves.pm, sub ModReserveStatus is used 1 times
In Circulation.pm the Reserves.pm, sub CancelReserve is used 2 times
package Circulation.pm uses Koha.pm
There is a use Koha.pm that is useless in Circulation.pm
package Circulation.pm uses Biblio.pm
In Circulation.pm the Biblio.pm, sub GetBiblioItemData is used 1 times
In Circulation.pm the Biblio.pm, sub GetBiblioFromItemNumber is used 4 times
package Circulation.pm uses Items.pm
In Circulation.pm the Items.pm, sub CartToShelf is used 1 times
In Circulation.pm the Items.pm, sub ModItemTransfer is used 4 times
In Circulation.pm the Items.pm, sub ModItem is used 5 times
In Circulation.pm the Items.pm, sub ModDateLastSeen is used 4 times
In Circulation.pm the Items.pm, sub GetItemnumberFromBarcode is used 3 times
In Circulation.pm the Items.pm, sub GetItem is used 5 times
package Circulation.pm uses Members.pm
In Circulation.pm the Members.pm, sub GetMemberAccountRecords is used 1 times
In Circulation.pm the Members.pm, sub IsMemberBlocked is used 1 times
In Circulation.pm the Members.pm, sub GetMemberDetails is used 5 times
package Circulation.pm uses Dates.pm
In Circulation.pm the Dates.pm, sub format_date is used 2 times
In Circulation.pm the Dates.pm, sub output is used 18 times
In Circulation.pm the Dates.pm, sub today is used 4 times
In Circulation.pm the Dates.pm, sub regexp is used 1 times
package Circulation.pm uses Calendar.pm
In Circulation.pm the Calendar.pm, sub addDate is used 2 times
package Circulation.pm uses Accounts.pm
In Circulation.pm the Accounts.pm, sub getnextacctno is used 3 times
package Circulation.pm uses ItemCirculationAlertPreference.pm
In Circulation.pm the ItemCirculationAlertPreference.pm, sub is_enabled_for is used 2 times
package Circulation.pm uses Dates.pm
In Circulation.pm the Dates.pm, sub format_date is used 2 times
In Circulation.pm the Dates.pm, sub output is used 18 times
In Circulation.pm the Dates.pm, sub today is used 4 times
In Circulation.pm the Dates.pm, sub regexp is used 1 times
package Circulation.pm uses Message.pm
In Circulation.pm the Message.pm, sub find_last_message is used 1 times
In Circulation.pm the Message.pm, sub append is used 1 times
In Circulation.pm the Message.pm, sub enqueue is used 1 times
package Circulation.pm uses Debug.pm
There is a use Debug.pm that is useless in Circulation.pm
package Circulation.pm uses Branch.pm
In Circulation.pm the Branch.pm, sub GetBranchName is used 1 times
In Circulation.pm the Branch.pm, sub mybranch is used 2 times
In Circulation.pm the Branch.pm, sub GetBranches is used 3 times
In Circulation.pm the Branch.pm, sub GetBranchDetail is used 1 times
package Circulation.pm uses Log.pm
In Circulation.pm the Log.pm, sub logaction is used 4 times
package Circulation.pm uses Circulation.pm
===== checking Letters.pm =====
package Letters.pm uses Members.pm
In Letters.pm the Members.pm, sub GetMember is used 3 times
In Letters.pm the Members.pm, sub GetFirstValidEmailAddress is used 1 times
package Letters.pm uses Branch.pm
In Letters.pm the Branch.pm, sub GetBranchDetail is used 1 times
package Letters.pm uses Log.pm
In Letters.pm the Log.pm, sub logaction is used 2 times
package Letters.pm uses SMS.pm
In Letters.pm the SMS.pm, sub send_sms is used 1 times
package Letters.pm uses Debug.pm
There is a use Debug.pm that is useless in Letters.pm
package Letters.pm uses Letters.pm
===== checking Scheduler.pm =====
package Scheduler.pm uses Context.pm
package Scheduler.pm uses Scheduler.pm
===== checking ImportExportFramework.pm =====
package ImportExportFramework.pm uses Context.pm
package ImportExportFramework.pm uses Debug.pm
There is a use Debug.pm that is useless in ImportExportFramework.pm
package ImportExportFramework.pm uses ImportExportFramework.pm
===== checking ShelfBrowser.pm =====
package ShelfBrowser.pm uses Biblio.pm
In ShelfBrowser.pm the Biblio.pm, sub GetAuthorisedValueDesc is used 2 times
In ShelfBrowser.pm the Biblio.pm, sub GetMarcBiblio is used 1 times
package ShelfBrowser.pm uses Branch.pm
In ShelfBrowser.pm the Branch.pm, sub GetBranches is used 1 times
package ShelfBrowser.pm uses Context.pm
package ShelfBrowser.pm uses Koha.pm
In ShelfBrowser.pm the Koha.pm, sub GetNormalizedOCLCNumber is used 1 times
In ShelfBrowser.pm the Koha.pm, sub GetNormalizedUPC is used 1 times
In ShelfBrowser.pm the Koha.pm, sub GetNormalizedISBN is used 1 times
package ShelfBrowser.pm uses ShelfBrowser.pm
===== checking Serials.pm =====
package Serials.pm uses Dates.pm
In Serials.pm the Dates.pm, sub format_date is used 13 times
In Serials.pm the Dates.pm, sub output is used 1 times
package Serials.pm uses Suggestions.pm
In Serials.pm the Suggestions.pm, sub NewSuggestion is used 1 times
package Serials.pm uses Koha.pm
There is a use Koha.pm that is useless in Serials.pm
package Serials.pm uses Biblio.pm
In Serials.pm the Biblio.pm, sub PrepareItemrecordDisplay is used 2 times
In Serials.pm the Biblio.pm, sub GetMarcFromKohaField is used 9 times
In Serials.pm the Biblio.pm, sub GetMarcBiblio is used 1 times
In Serials.pm the Biblio.pm, sub GetBiblio is used 1 times
In Serials.pm the Biblio.pm, sub ModBiblio is used 1 times
In Serials.pm the Biblio.pm, sub GetFrameworkCode is used 1 times
In Serials.pm the Biblio.pm, sub GetBiblioItemByBiblioNumber is used 1 times
package Serials.pm uses Branch.pm
In Serials.pm the Branch.pm, sub GetBranchName is used 1 times
package Serials.pm uses Items.pm
In Serials.pm the Items.pm, sub AddItemFromMarc is used 1 times
package Serials.pm uses Search.pm
There is a use Search.pm that is useless in Serials.pm
package Serials.pm uses Letters.pm
In Serials.pm the Letters.pm, sub SendAlerts is used 1 times
package Serials.pm uses Log.pm
In Serials.pm the Log.pm, sub logaction is used 4 times
package Serials.pm uses Debug.pm
There is a use Debug.pm that is useless in Serials.pm
package Serials.pm uses Serials.pm
===== checking RotatingCollections.pm =====
package RotatingCollections.pm uses Context.pm
package RotatingCollections.pm uses Circulation.pm
In RotatingCollections.pm the Circulation.pm, sub transferbook is used 1 times
===== checking SMS.pm =====
package SMS.pm uses Context.pm
===== checking Record.pm =====
package Record.pm uses Biblio.pm
In Record.pm the Biblio.pm, sub GetMarcBiblio is used 1 times
In Record.pm the Biblio.pm, sub GetMarcAuthors is used 1 times
In Record.pm the Biblio.pm, sub GetFrameworkCode is used 1 times
package Record.pm uses Csv.pm
In Record.pm the Csv.pm, sub GetCsvProfile is used 1 times
package Record.pm uses Koha.pm
In Record.pm the Koha.pm, sub GetKohaAuthorisedValuesFromField is used 2 times
===== checking Debug.pm =====
package Debug.pm uses Debug.pm
package Debug.pm uses Debug.pm
package Debug.pm uses Debug.pm
package Debug.pm uses Dates.pm
There is a use Dates.pm that is useless in Debug.pm
package Debug.pm uses Debug.pm
===== checking Message.pm =====
package Message.pm uses Context.pm
package Message.pm uses Letters.pm
In Message.pm the Letters.pm, sub parseletter is used 2 times
In Message.pm the Letters.pm, sub EnqueueLetter is used 2 times
In Message.pm the Letters.pm, sub getletter is used 2 times
package Message.pm uses Message.pm
package Message.pm uses Items.pm
In Message.pm the Items.pm, sub GetItem is used 1 times
package Message.pm uses Message.pm
===== checking TmplTokenType.pm =====
===== checking Acquisition.pm =====
package Acquisition.pm uses Context.pm
package Acquisition.pm uses Debug.pm
There is a use Debug.pm that is useless in Acquisition.pm
package Acquisition.pm uses Dates.pm
In Acquisition.pm the Dates.pm, sub format_date is used 3 times
In Acquisition.pm the Dates.pm, sub output is used 2 times
package Acquisition.pm uses Suggestions.pm
In Acquisition.pm the Suggestions.pm, sub ModSuggestion is used 1 times
In Acquisition.pm the Suggestions.pm, sub GetSuggestionFromBiblionumber is used 1 times
package Acquisition.pm uses Biblio.pm
There is a use Biblio.pm that is useless in Acquisition.pm
package Acquisition.pm uses Debug.pm
There is a use Debug.pm that is useless in Acquisition.pm
package Acquisition.pm uses SQLHelper.pm
In Acquisition.pm the SQLHelper.pm, sub InsertInTable is used 1 times
package Acquisition.pm uses Acquisition.pm
===== checking Auth_with_ldap.pm =====
package Auth_with_ldap.pm uses Debug.pm
There is a use Debug.pm that is useless in Auth_with_ldap.pm
package Auth_with_ldap.pm uses Context.pm
package Auth_with_ldap.pm uses Members.pm
In Auth_with_ldap.pm the Members.pm, sub AddMember is used 1 times
In Auth_with_ldap.pm the Members.pm, sub changepassword is used 2 times
package Auth_with_ldap.pm uses Members.pm
In Auth_with_ldap.pm the Members.pm, sub AddMember is used 1 times
In Auth_with_ldap.pm the Members.pm, sub changepassword is used 2 times
package Auth_with_ldap.pm uses Members.pm
In Auth_with_ldap.pm the Members.pm, sub AddMember is used 1 times
In Auth_with_ldap.pm the Members.pm, sub changepassword is used 2 times
package Auth_with_ldap.pm uses Utils.pm
In Auth_with_ldap.pm the Utils.pm, sub hashdump is used 1 times
package Auth_with_ldap.pm uses Auth_with_ldap.pm
===== checking Cache.pm =====
package Cache.pm uses Cache.pm
package Cache.pm uses Cache.pm
===== checking Boolean.pm =====
package Boolean.pm uses Boolean.pm
===== checking Installer.pm =====
package Installer.pm uses Context.pm
package Installer.pm uses Installer.pm
package Installer.pm uses Installer.pm
===== checking Matcher.pm =====
package Matcher.pm uses Context.pm
package Matcher.pm uses Search.pm
In Matcher.pm the Search.pm, sub SimpleSearch is used 1 times
package Matcher.pm uses Biblio.pm
In Matcher.pm the Biblio.pm, sub TransformMarcToKoha is used 1 times
===== checking Suggestions.pm =====
package Suggestions.pm uses Context.pm
package Suggestions.pm uses Output.pm
There is a use Output.pm that is useless in Suggestions.pm
package Suggestions.pm uses Dates.pm
In Suggestions.pm the Dates.pm, sub today is used 1 times
In Suggestions.pm the Dates.pm, sub format_date_in_iso is used 1 times
package Suggestions.pm uses SQLHelper.pm
In Suggestions.pm the SQLHelper.pm, sub UpdateInTable is used 1 times
In Suggestions.pm the SQLHelper.pm, sub InsertInTable is used 1 times
package Suggestions.pm uses Debug.pm
There is a use Debug.pm that is useless in Suggestions.pm
package Suggestions.pm uses Letters.pm
In Suggestions.pm the Letters.pm, sub parseletter is used 4 times
In Suggestions.pm the Letters.pm, sub EnqueueLetter is used 1 times
In Suggestions.pm the Letters.pm, sub getletter is used 1 times
package Suggestions.pm uses Dates.pm
In Suggestions.pm the Dates.pm, sub today is used 1 times
In Suggestions.pm the Dates.pm, sub format_date_in_iso is used 1 times
package Suggestions.pm uses Suggestions.pm
===== checking Breeding.pm =====
package Breeding.pm uses Biblio.pm
In Breeding.pm the Biblio.pm, sub TransformMarcToKoha is used 1 times
package Breeding.pm uses Koha.pm
In Breeding.pm the Koha.pm, sub _isbn_cleanup is used 1 times
package Breeding.pm uses Charset.pm
In Breeding.pm the Charset.pm, sub MarcToUTF8Record is used 1 times
package Breeding.pm uses ImportBatch.pm
In Breeding.pm the ImportBatch.pm, sub is used 61 times
In Breeding.pm the ImportBatch.pm, sub AddImportBatch is used 1 times
In Breeding.pm the ImportBatch.pm, sub ModBiblioInBatch is used 1 times
In Breeding.pm the ImportBatch.pm, sub AddBiblioToBatch is used 1 times
In Breeding.pm the ImportBatch.pm, sub GetZ3950BatchId is used 1 times
package Breeding.pm uses Scan.pm
There is a use Scan.pm that is useless in Breeding.pm
===== checking Barcodes.pm =====
package Barcodes.pm uses Context.pm
package Barcodes.pm uses Debug.pm
There is a use Debug.pm that is useless in Barcodes.pm
package Barcodes.pm uses Dates.pm
There is a use Dates.pm that is useless in Barcodes.pm
package Barcodes.pm uses Barcodes.pm
package Barcodes.pm uses Barcodes.pm
package Barcodes.pm uses Barcodes.pm
===== checking ILSDI =====
===== checking Biblio.pm =====
package Biblio.pm uses Koha.pm
In Biblio.pm the Koha.pm, sub get_infos_of is used 1 times
In Biblio.pm the Koha.pm, sub getitemtypeinfo is used 1 times
In Biblio.pm the Koha.pm, sub subfield_is_koha_internal_p is used 1 times
package Biblio.pm uses Dates.pm
In Biblio.pm the Dates.pm, sub format is used 2 times
package Biblio.pm uses Log.pm
In Biblio.pm the Log.pm, sub logaction is used 3 times
package Biblio.pm uses ClassSource.pm
In Biblio.pm the ClassSource.pm, sub GetClassSort is used 3 times
In Biblio.pm the ClassSource.pm, sub GetClassSources is used 1 times
package Biblio.pm uses Charset.pm
In Biblio.pm the Charset.pm, sub SetUTF8Flag is used 2 times
In Biblio.pm the Charset.pm, sub SetMarcUnicodeFlag is used 1 times
In Biblio.pm the Charset.pm, sub StripNonXmlChars is used 1 times
package Biblio.pm require Heading.pm
In Biblio.pm the Heading.pm, sub authorities is used 1 times
In Biblio.pm the Heading.pm, sub new_from_bib_field is used 1 times
package Biblio.pm require Serials.pm
In Biblio.pm the Serials.pm, sub DelSubscription is used 1 times
In Biblio.pm the Serials.pm, sub GetFullSubscriptionsFromBiblionumber is used 1 times
package Biblio.pm require Items.pm
In Biblio.pm the Items.pm, sub ModItem is used 1 times
In Biblio.pm the Items.pm, sub AddItem is used 1 times
In Biblio.pm the Items.pm, sub GetMarcItem is used 2 times
===== checking Z3950.pm =====
package Z3950.pm uses Input.pm
There is a use Input.pm that is useless in Z3950.pm
package Z3950.pm uses Biblio.pm
There is a use Biblio.pm that is useless in Z3950.pm
package Z3950.pm uses Z3950.pm
===== checking Reports =====
===== checking ItemCirculationAlertPreference.pm =====
package ItemCirculationAlertPreference.pm uses Context.pm
package ItemCirculationAlertPreference.pm uses Category.pm
There is a use Category.pm that is useless in ItemCirculationAlertPreference.pm
package ItemCirculationAlertPreference.pm uses ItemType.pm
There is a use ItemType.pm that is useless in ItemCirculationAlertPreference.pm
package ItemCirculationAlertPreference.pm uses ItemCirculationAlertPreference.pm
===== checking Branch.pm =====
package Branch.pm uses Context.pm
package Branch.pm uses Koha.pm
In Branch.pm the Koha.pm, sub get_infos_of is used 1 times
package Branch.pm uses Branch.pm
===== checking Stats.pm =====
package Stats.pm uses Context.pm
package Stats.pm uses Debug.pm
There is a use Debug.pm that is useless in Stats.pm
package Stats.pm uses Stats.pm
===== checking NewsChannels.pm =====
package NewsChannels.pm uses Context.pm
package NewsChannels.pm uses Dates.pm
In NewsChannels.pm the Dates.pm, sub format_date is used 5 times
===== checking Tags.pm =====
package Tags.pm uses Context.pm
package Tags.pm uses Debug.pm
There is a use Debug.pm that is useless in Tags.pm
package Tags.pm uses Tags.pm
===== checking Service.pm =====
package Service.pm uses Auth.pm
In Service.pm the Auth.pm, sub check_api_auth is used 1 times
package Service.pm uses Output.pm
There is a use Output.pm that is useless in Service.pm
package Service.pm uses Output.pm
There is a use Output.pm that is useless in Service.pm
===== checking Creators.pm =====
package Creators.pm uses Creators.pm
package Creators.pm uses Creators.pm
===== checking Barcodes =====
===== checking Cache =====
===== checking VirtualShelves =====
===== checking Contract.pm =====
package Contract.pm uses SQLHelper.pm
In Contract.pm the SQLHelper.pm, sub DeleteInTable is used 1 times
In Contract.pm the SQLHelper.pm, sub UpdateInTable is used 1 times
In Contract.pm the SQLHelper.pm, sub InsertInTable is used 1 times
In Contract.pm the SQLHelper.pm, sub SearchInTable is used 1 times
package Contract.pm uses Contract.pm
===== checking ClassSortRoutine =====
check_subs.pl
Description: content-type
_______________________________________________ Koha-devel mailing list [email protected] http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
