Compare commits
50 Commits
a79f73a8ca
...
Issue-1
| Author | SHA1 | Date | |
|---|---|---|---|
| e3de786766 | |||
| b0aaf70e4d | |||
| b70996b4d9 | |||
| 8647c9b4d8 | |||
| b201ac6d24 | |||
| 1480feecf0 | |||
| f84395f79a | |||
| f3db1c1523 | |||
| 962bd7b504 | |||
| ec8efec61e | |||
| d23a19a3eb | |||
| 152bb30029 | |||
| 11c876886a | |||
| 9cce143cf9 | |||
| eb29a3799c | |||
| ba7db9279d | |||
| ce8e5d9ca7 | |||
| 0600ba18cd | |||
| ef0599342b | |||
| 5129d30992 | |||
| ed7a25cea3 | |||
| 968964e3fe | |||
| d41519ba91 | |||
| 513017d3cb | |||
| 3385954624 | |||
| 5a50400a56 | |||
| b138f462d9 | |||
| dd86d2e519 | |||
| 41c5b4560b | |||
| 01fd47814b | |||
| 9122040863 | |||
| 86f1512cc0 | |||
| 0145f5849f | |||
| c4d2d4334e | |||
| 5e1856f1dc | |||
| 262bd6dcdc | |||
| ff71083b49 | |||
| 1a4c9a9c2a | |||
| 5396f3367b | |||
| 557af4db04 | |||
| cc2b638a6a | |||
| 63bb7a3445 | |||
| 35173f6faa | |||
| f20b4cd8b6 | |||
| 71f60d353f | |||
| f74385d8f3 | |||
| 9e392faa4d | |||
| d2cb1851d0 | |||
| 07a6d352b0 | |||
| 0547e97479 |
3
BUGS
3
BUGS
@@ -1,4 +1,5 @@
|
||||
BUGS
|
||||
|
||||
1. Adding a reference to a note using the magnifying glass icon is possible even if not logged in. This results in a blank tech and shift.
|
||||
SOMEWHAT FIXED. If not logged in and the partview argument is not 1, redirects to login page. (This is not the optimal solution. There needs to be a specific view only state.)
|
||||
SOMEWHAT FIXED. If not logged in and the partview argument is not 1, redirects to login page. (This is not the optimal solution. There
|
||||
needs to be a specific view only state.)
|
||||
|
||||
42
CHANGELOG
42
CHANGELOG
@@ -240,3 +240,45 @@
|
||||
treating the $today variable as global.
|
||||
- In install.php, if a previous installation was found, make upgrade
|
||||
the default choice.
|
||||
|
||||
5.2.5 - 2026-02-10
|
||||
This is just a version number bump to get on a major-minor-patch
|
||||
scheme. There are no code changes for this release.
|
||||
|
||||
5.3.0 - 2026-02-20
|
||||
- Moved the template Create/Copy/Edit/Delete/Rename functionality to
|
||||
its own page to make it less confusing and to fix some strange
|
||||
behavior.
|
||||
- Added global templates which can be used by anyone but can only be
|
||||
created, modified, or deleted by administrators. This makes it
|
||||
easier to employ standardized templates.
|
||||
- Changed the character encoding of the database to utf8mb4 to enable
|
||||
using emojis in text fields.
|
||||
- Changed the insert link functionality. There are now two fields, link
|
||||
text, and URL. The full URL string will now not be displayed in the
|
||||
note, since it frequently was too long and deformed the table,
|
||||
causing the user to have to scroll right to see the entire note. If
|
||||
a URL is entered in the URL field and no link text is entered in the
|
||||
link text field, the link will show up as just the last part of the
|
||||
URL. For example, "http://somewhere.com/myfile.pdf" will show as
|
||||
"myfile.pdf" in the note text. If text is entered in the link text
|
||||
field, that is what will show as the clickable link in the note text.
|
||||
NOTE: URLs in previously entered notes will not automatically be
|
||||
converted.
|
||||
- Changed the flag handling code to no longer dynamically create flag_
|
||||
tables in the database to track assignments. This is now done using
|
||||
a flagmap table.
|
||||
NOTE: The database will be modified to support this and the
|
||||
importation of the previous data will take some time during
|
||||
installation.
|
||||
- References will no longer be stored in the lognotes table with the note.
|
||||
There is now a reflinks table that stores the link information.
|
||||
NOTE: The database will be modified to support this and the
|
||||
importation of the previous data will take some time during
|
||||
installation.
|
||||
- Various code cleanups to prevent php warnings in the logs if logging
|
||||
is enabled.
|
||||
- Validate all date and time fields to prevent user entered invalid date
|
||||
formats from crashing php.
|
||||
- Fixed profile page to automatically refresh page to show the results
|
||||
when a user changes their color preferences.
|
||||
|
||||
4
INSTALL
4
INSTALL
@@ -4,7 +4,6 @@
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
|
||||
Installation of OpenLog is straightforward.
|
||||
|
||||
1. Gather the required information.
|
||||
@@ -31,5 +30,4 @@ settings. You will need to log in as OpenLogAdmin. The initial default password
|
||||
is "OpenLog-1". From the Administration page, you can click on the links at the
|
||||
top to add techs, subjects, shifts, etc.
|
||||
|
||||
7. Start using OpenLog.
|
||||
|
||||
6. Start using OpenLog.
|
||||
|
||||
323
LICENSE
323
LICENSE
@@ -1,5 +1,5 @@
|
||||
The following license applies to all OpenLog code
|
||||
Copyright (C) 2016 by Rod Wright :
|
||||
Copyright (C) 2026 by Rod Wright :
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
@@ -382,3 +382,324 @@ The following license applies to jquery code :
|
||||
|
||||
CC0: http://creativecommons.org/publicdomain/zero/1.0/
|
||||
|
||||
|
||||
The following license applies to the Fugue icon set :
|
||||
Creative Commons Legal Code
|
||||
|
||||
Attribution 3.0 Unported
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR
|
||||
DAMAGES RESULTING FROM ITS USE.
|
||||
|
||||
License
|
||||
|
||||
THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE
|
||||
COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY
|
||||
COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS
|
||||
AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
|
||||
|
||||
BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE
|
||||
TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY
|
||||
BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS
|
||||
CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND
|
||||
CONDITIONS.
|
||||
|
||||
1. Definitions
|
||||
|
||||
a. "Adaptation" means a work based upon the Work, or upon the Work and
|
||||
other pre-existing works, such as a translation, adaptation,
|
||||
derivative work, arrangement of music or other alterations of a
|
||||
literary or artistic work, or phonogram or performance and includes
|
||||
cinematographic adaptations or any other form in which the Work may be
|
||||
recast, transformed, or adapted including in any form recognizably
|
||||
derived from the original, except that a work that constitutes a
|
||||
Collection will not be considered an Adaptation for the purpose of
|
||||
this License. For the avoidance of doubt, where the Work is a musical
|
||||
work, performance or phonogram, the synchronization of the Work in
|
||||
timed-relation with a moving image ("synching") will be considered an
|
||||
Adaptation for the purpose of this License.
|
||||
b. "Collection" means a collection of literary or artistic works, such as
|
||||
encyclopedias and anthologies, or performances, phonograms or
|
||||
broadcasts, or other works or subject matter other than works listed
|
||||
in Section 1(f) below, which, by reason of the selection and
|
||||
arrangement of their contents, constitute intellectual creations, in
|
||||
which the Work is included in its entirety in unmodified form along
|
||||
with one or more other contributions, each constituting separate and
|
||||
independent works in themselves, which together are assembled into a
|
||||
collective whole. A work that constitutes a Collection will not be
|
||||
considered an Adaptation (as defined above) for the purposes of this
|
||||
License.
|
||||
c. "Distribute" means to make available to the public the original and
|
||||
copies of the Work or Adaptation, as appropriate, through sale or
|
||||
other transfer of ownership.
|
||||
d. "Licensor" means the individual, individuals, entity or entities that
|
||||
offer(s) the Work under the terms of this License.
|
||||
e. "Original Author" means, in the case of a literary or artistic work,
|
||||
the individual, individuals, entity or entities who created the Work
|
||||
or if no individual or entity can be identified, the publisher; and in
|
||||
addition (i) in the case of a performance the actors, singers,
|
||||
musicians, dancers, and other persons who act, sing, deliver, declaim,
|
||||
play in, interpret or otherwise perform literary or artistic works or
|
||||
expressions of folklore; (ii) in the case of a phonogram the producer
|
||||
being the person or legal entity who first fixes the sounds of a
|
||||
performance or other sounds; and, (iii) in the case of broadcasts, the
|
||||
organization that transmits the broadcast.
|
||||
f. "Work" means the literary and/or artistic work offered under the terms
|
||||
of this License including without limitation any production in the
|
||||
literary, scientific and artistic domain, whatever may be the mode or
|
||||
form of its expression including digital form, such as a book,
|
||||
pamphlet and other writing; a lecture, address, sermon or other work
|
||||
of the same nature; a dramatic or dramatico-musical work; a
|
||||
choreographic work or entertainment in dumb show; a musical
|
||||
composition with or without words; a cinematographic work to which are
|
||||
assimilated works expressed by a process analogous to cinematography;
|
||||
a work of drawing, painting, architecture, sculpture, engraving or
|
||||
lithography; a photographic work to which are assimilated works
|
||||
expressed by a process analogous to photography; a work of applied
|
||||
art; an illustration, map, plan, sketch or three-dimensional work
|
||||
relative to geography, topography, architecture or science; a
|
||||
performance; a broadcast; a phonogram; a compilation of data to the
|
||||
extent it is protected as a copyrightable work; or a work performed by
|
||||
a variety or circus performer to the extent it is not otherwise
|
||||
considered a literary or artistic work.
|
||||
g. "You" means an individual or entity exercising rights under this
|
||||
License who has not previously violated the terms of this License with
|
||||
respect to the Work, or who has received express permission from the
|
||||
Licensor to exercise rights under this License despite a previous
|
||||
violation.
|
||||
h. "Publicly Perform" means to perform public recitations of the Work and
|
||||
to communicate to the public those public recitations, by any means or
|
||||
process, including by wire or wireless means or public digital
|
||||
performances; to make available to the public Works in such a way that
|
||||
members of the public may access these Works from a place and at a
|
||||
place individually chosen by them; to perform the Work to the public
|
||||
by any means or process and the communication to the public of the
|
||||
performances of the Work, including by public digital performance; to
|
||||
broadcast and rebroadcast the Work by any means including signs,
|
||||
sounds or images.
|
||||
i. "Reproduce" means to make copies of the Work by any means including
|
||||
without limitation by sound or visual recordings and the right of
|
||||
fixation and reproducing fixations of the Work, including storage of a
|
||||
protected performance or phonogram in digital form or other electronic
|
||||
medium.
|
||||
|
||||
2. Fair Dealing Rights. Nothing in this License is intended to reduce,
|
||||
limit, or restrict any uses free from copyright or rights arising from
|
||||
limitations or exceptions that are provided for in connection with the
|
||||
copyright protection under copyright law or other applicable laws.
|
||||
|
||||
3. License Grant. Subject to the terms and conditions of this License,
|
||||
Licensor hereby grants You a worldwide, royalty-free, non-exclusive,
|
||||
perpetual (for the duration of the applicable copyright) license to
|
||||
exercise the rights in the Work as stated below:
|
||||
|
||||
a. to Reproduce the Work, to incorporate the Work into one or more
|
||||
Collections, and to Reproduce the Work as incorporated in the
|
||||
Collections;
|
||||
b. to create and Reproduce Adaptations provided that any such Adaptation,
|
||||
including any translation in any medium, takes reasonable steps to
|
||||
clearly label, demarcate or otherwise identify that changes were made
|
||||
to the original Work. For example, a translation could be marked "The
|
||||
original work was translated from English to Spanish," or a
|
||||
modification could indicate "The original work has been modified.";
|
||||
c. to Distribute and Publicly Perform the Work including as incorporated
|
||||
in Collections; and,
|
||||
d. to Distribute and Publicly Perform Adaptations.
|
||||
e. For the avoidance of doubt:
|
||||
|
||||
i. Non-waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme cannot be waived, the Licensor
|
||||
reserves the exclusive right to collect such royalties for any
|
||||
exercise by You of the rights granted under this License;
|
||||
ii. Waivable Compulsory License Schemes. In those jurisdictions in
|
||||
which the right to collect royalties through any statutory or
|
||||
compulsory licensing scheme can be waived, the Licensor waives the
|
||||
exclusive right to collect such royalties for any exercise by You
|
||||
of the rights granted under this License; and,
|
||||
iii. Voluntary License Schemes. The Licensor waives the right to
|
||||
collect royalties, whether individually or, in the event that the
|
||||
Licensor is a member of a collecting society that administers
|
||||
voluntary licensing schemes, via that society, from any exercise
|
||||
by You of the rights granted under this License.
|
||||
|
||||
The above rights may be exercised in all media and formats whether now
|
||||
known or hereafter devised. The above rights include the right to make
|
||||
such modifications as are technically necessary to exercise the rights in
|
||||
other media and formats. Subject to Section 8(f), all rights not expressly
|
||||
granted by Licensor are hereby reserved.
|
||||
|
||||
4. Restrictions. The license granted in Section 3 above is expressly made
|
||||
subject to and limited by the following restrictions:
|
||||
|
||||
a. You may Distribute or Publicly Perform the Work only under the terms
|
||||
of this License. You must include a copy of, or the Uniform Resource
|
||||
Identifier (URI) for, this License with every copy of the Work You
|
||||
Distribute or Publicly Perform. You may not offer or impose any terms
|
||||
on the Work that restrict the terms of this License or the ability of
|
||||
the recipient of the Work to exercise the rights granted to that
|
||||
recipient under the terms of the License. You may not sublicense the
|
||||
Work. You must keep intact all notices that refer to this License and
|
||||
to the disclaimer of warranties with every copy of the Work You
|
||||
Distribute or Publicly Perform. When You Distribute or Publicly
|
||||
Perform the Work, You may not impose any effective technological
|
||||
measures on the Work that restrict the ability of a recipient of the
|
||||
Work from You to exercise the rights granted to that recipient under
|
||||
the terms of the License. This Section 4(a) applies to the Work as
|
||||
incorporated in a Collection, but this does not require the Collection
|
||||
apart from the Work itself to be made subject to the terms of this
|
||||
License. If You create a Collection, upon notice from any Licensor You
|
||||
must, to the extent practicable, remove from the Collection any credit
|
||||
as required by Section 4(b), as requested. If You create an
|
||||
Adaptation, upon notice from any Licensor You must, to the extent
|
||||
practicable, remove from the Adaptation any credit as required by
|
||||
Section 4(b), as requested.
|
||||
b. If You Distribute, or Publicly Perform the Work or any Adaptations or
|
||||
Collections, You must, unless a request has been made pursuant to
|
||||
Section 4(a), keep intact all copyright notices for the Work and
|
||||
provide, reasonable to the medium or means You are utilizing: (i) the
|
||||
name of the Original Author (or pseudonym, if applicable) if supplied,
|
||||
and/or if the Original Author and/or Licensor designate another party
|
||||
or parties (e.g., a sponsor institute, publishing entity, journal) for
|
||||
attribution ("Attribution Parties") in Licensor's copyright notice,
|
||||
terms of service or by other reasonable means, the name of such party
|
||||
or parties; (ii) the title of the Work if supplied; (iii) to the
|
||||
extent reasonably practicable, the URI, if any, that Licensor
|
||||
specifies to be associated with the Work, unless such URI does not
|
||||
refer to the copyright notice or licensing information for the Work;
|
||||
and (iv) , consistent with Section 3(b), in the case of an Adaptation,
|
||||
a credit identifying the use of the Work in the Adaptation (e.g.,
|
||||
"French translation of the Work by Original Author," or "Screenplay
|
||||
based on original Work by Original Author"). The credit required by
|
||||
this Section 4 (b) may be implemented in any reasonable manner;
|
||||
provided, however, that in the case of a Adaptation or Collection, at
|
||||
a minimum such credit will appear, if a credit for all contributing
|
||||
authors of the Adaptation or Collection appears, then as part of these
|
||||
credits and in a manner at least as prominent as the credits for the
|
||||
other contributing authors. For the avoidance of doubt, You may only
|
||||
use the credit required by this Section for the purpose of attribution
|
||||
in the manner set out above and, by exercising Your rights under this
|
||||
License, You may not implicitly or explicitly assert or imply any
|
||||
connection with, sponsorship or endorsement by the Original Author,
|
||||
Licensor and/or Attribution Parties, as appropriate, of You or Your
|
||||
use of the Work, without the separate, express prior written
|
||||
permission of the Original Author, Licensor and/or Attribution
|
||||
Parties.
|
||||
c. Except as otherwise agreed in writing by the Licensor or as may be
|
||||
otherwise permitted by applicable law, if You Reproduce, Distribute or
|
||||
Publicly Perform the Work either by itself or as part of any
|
||||
Adaptations or Collections, You must not distort, mutilate, modify or
|
||||
take other derogatory action in relation to the Work which would be
|
||||
prejudicial to the Original Author's honor or reputation. Licensor
|
||||
agrees that in those jurisdictions (e.g. Japan), in which any exercise
|
||||
of the right granted in Section 3(b) of this License (the right to
|
||||
make Adaptations) would be deemed to be a distortion, mutilation,
|
||||
modification or other derogatory action prejudicial to the Original
|
||||
Author's honor and reputation, the Licensor will waive or not assert,
|
||||
as appropriate, this Section, to the fullest extent permitted by the
|
||||
applicable national law, to enable You to reasonably exercise Your
|
||||
right under Section 3(b) of this License (right to make Adaptations)
|
||||
but not otherwise.
|
||||
|
||||
5. Representations, Warranties and Disclaimer
|
||||
|
||||
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR
|
||||
OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY
|
||||
KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,
|
||||
INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF
|
||||
LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,
|
||||
WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION
|
||||
OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
|
||||
|
||||
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE
|
||||
LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR
|
||||
ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES
|
||||
ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS
|
||||
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
7. Termination
|
||||
|
||||
a. This License and the rights granted hereunder will terminate
|
||||
automatically upon any breach by You of the terms of this License.
|
||||
Individuals or entities who have received Adaptations or Collections
|
||||
from You under this License, however, will not have their licenses
|
||||
terminated provided such individuals or entities remain in full
|
||||
compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will
|
||||
survive any termination of this License.
|
||||
b. Subject to the above terms and conditions, the license granted here is
|
||||
perpetual (for the duration of the applicable copyright in the Work).
|
||||
Notwithstanding the above, Licensor reserves the right to release the
|
||||
Work under different license terms or to stop distributing the Work at
|
||||
any time; provided, however that any such election will not serve to
|
||||
withdraw this License (or any other license that has been, or is
|
||||
required to be, granted under the terms of this License), and this
|
||||
License will continue in full force and effect unless terminated as
|
||||
stated above.
|
||||
|
||||
8. Miscellaneous
|
||||
|
||||
a. Each time You Distribute or Publicly Perform the Work or a Collection,
|
||||
the Licensor offers to the recipient a license to the Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
b. Each time You Distribute or Publicly Perform an Adaptation, Licensor
|
||||
offers to the recipient a license to the original Work on the same
|
||||
terms and conditions as the license granted to You under this License.
|
||||
c. If any provision of this License is invalid or unenforceable under
|
||||
applicable law, it shall not affect the validity or enforceability of
|
||||
the remainder of the terms of this License, and without further action
|
||||
by the parties to this agreement, such provision shall be reformed to
|
||||
the minimum extent necessary to make such provision valid and
|
||||
enforceable.
|
||||
d. No term or provision of this License shall be deemed waived and no
|
||||
breach consented to unless such waiver or consent shall be in writing
|
||||
and signed by the party to be charged with such waiver or consent.
|
||||
e. This License constitutes the entire agreement between the parties with
|
||||
respect to the Work licensed here. There are no understandings,
|
||||
agreements or representations with respect to the Work not specified
|
||||
here. Licensor shall not be bound by any additional provisions that
|
||||
may appear in any communication from You. This License may not be
|
||||
modified without the mutual written agreement of the Licensor and You.
|
||||
f. The rights granted under, and the subject matter referenced, in this
|
||||
License were drafted utilizing the terminology of the Berne Convention
|
||||
for the Protection of Literary and Artistic Works (as amended on
|
||||
September 28, 1979), the Rome Convention of 1961, the WIPO Copyright
|
||||
Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996
|
||||
and the Universal Copyright Convention (as revised on July 24, 1971).
|
||||
These rights and subject matter take effect in the relevant
|
||||
jurisdiction in which the License terms are sought to be enforced
|
||||
according to the corresponding provisions of the implementation of
|
||||
those treaty provisions in the applicable national law. If the
|
||||
standard suite of rights granted under applicable copyright law
|
||||
includes additional rights not granted under this License, such
|
||||
additional rights are deemed to be included in the License; this
|
||||
License is not intended to restrict the license of any rights under
|
||||
applicable law.
|
||||
|
||||
|
||||
Creative Commons Notice
|
||||
|
||||
Creative Commons is not a party to this License, and makes no warranty
|
||||
whatsoever in connection with the Work. Creative Commons will not be
|
||||
liable to You or any party on any legal theory for any damages
|
||||
whatsoever, including without limitation any general, special,
|
||||
incidental or consequential damages arising in connection to this
|
||||
license. Notwithstanding the foregoing two (2) sentences, if Creative
|
||||
Commons has expressly identified itself as the Licensor hereunder, it
|
||||
shall have all rights and obligations of Licensor.
|
||||
|
||||
Except for the limited purpose of indicating to the public that the
|
||||
Work is licensed under the CCPL, Creative Commons does not authorize
|
||||
the use by either party of the trademark "Creative Commons" or any
|
||||
related trademark or logo of Creative Commons without the prior
|
||||
written consent of Creative Commons. Any permitted use will be in
|
||||
compliance with Creative Commons' then-current trademark usage
|
||||
guidelines, as may be published on its website or otherwise made
|
||||
available upon request from time to time. For the avoidance of doubt,
|
||||
this trademark restriction does not form part of this License.
|
||||
|
||||
Creative Commons may be contacted at https://creativecommons.org/.
|
||||
|
||||
8
TODO.txt
8
TODO.txt
@@ -1,15 +1,15 @@
|
||||
TODO.txt
|
||||
|
||||
1. Create a weblink hot button on the add logbook entry page to insert a weblink. DONE
|
||||
2. Allow admins to create global templates.
|
||||
2. Allow admins to create global templates. DONE
|
||||
3. Create a way to restore the global page colors. (db change reqd)
|
||||
4. Pick a logbook subject to associate with a scheduled task to populate for the logbook entry. (db change reqd)
|
||||
5. Add info messages to scheduled task page edits.
|
||||
6. Allow scheduled tasks to be completed as a group instead of having to complete each member.
|
||||
7. Implement popup calendars for date entry fields. DONE
|
||||
8. Improve template management interface. It can be confusing. It needs its own page.
|
||||
9. Remove refs from templates. (db change reqd)
|
||||
10. Replace dynamic flag_ table creation with a flagassignment table. (db change reqd)
|
||||
8. Improve template management interface. It can be confusing. It needs its own page. DONE
|
||||
9. Remove refs from templates. (db change reqd) DONE
|
||||
10. Replace dynamic flag_ table creation with a flagassignment table. (db change reqd) DONE
|
||||
11. allow partids to be autogenerated if user doesn't supply one (db change reqd)
|
||||
12. If there are no flags, don't offer to set them on reference chain
|
||||
13. make some flags immutable so they won't be synced on reference chain.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,19 @@
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
function spinner() {
|
||||
local pid="$1"
|
||||
local delay="0.1"
|
||||
local spinstr='|/-\\'
|
||||
local i=0
|
||||
|
||||
while ps -p "$pid" > /dev/null; do
|
||||
i=$(( (i+1) % 4 ))
|
||||
printf "\r[%c]" "${spinstr:$i:1}"
|
||||
sleep "$delay"
|
||||
done
|
||||
printf "\r \r" # Clear the spinner line
|
||||
}
|
||||
|
||||
if [[ $1 == "" ]]
|
||||
then
|
||||
@@ -39,5 +52,95 @@ margs="--defaults-extra-file=$mysql_opt_file"
|
||||
# -------------------------------------
|
||||
|
||||
# ---------- version 5.3.0 ------------
|
||||
# Nothing to do
|
||||
#
|
||||
echo "Started database updates for OpenLog version 5.3.0..."
|
||||
|
||||
# Import old flag data from old scheme to new flagmap table
|
||||
if [[ $(mysql $margs -e "select count(*) from flagmap") == 0 ]]
|
||||
then
|
||||
echo "Importing flag data from old scheme to new flagmap table."
|
||||
echo "This may take some time..."
|
||||
(
|
||||
for flagnumber in $(mysql $margs -e "select flagid from flags")
|
||||
do
|
||||
flag_x=$(mysql $margs -s -e "show tables like 'flag_$flagnumber'")
|
||||
if [[ -n "$flag_x" ]]
|
||||
then
|
||||
for tgtid in $(mysql $margs -e "select id from flag_$flagnumber")
|
||||
do
|
||||
target=$(mysql $margs -e "select target from flag_$flagnumber where id=$tgtid")
|
||||
if [[ $target == "lognotes" ]]
|
||||
then
|
||||
mysql $margs -e "insert into flagmap(flagid,lognoteid) values($flagnumber,$tgtid)"
|
||||
elif [[ $target == "maintforms" ]]
|
||||
then
|
||||
mysql $margs -e "insert into flagmap(flagid,maintformid) values($flagnumber,$tgtid)"
|
||||
elif [[ $target == "notetemplates" ]]
|
||||
then
|
||||
mysql $margs -e "insert into flagmap(flagid,notetemplateid) values($flagnumber,$tgtid)"
|
||||
fi
|
||||
|
||||
done
|
||||
mysql $margs -e "drop table flag_$flagnumber"
|
||||
fi
|
||||
done
|
||||
) &
|
||||
task_pid=$!
|
||||
spinner $task_pid
|
||||
echo "...done."
|
||||
fi
|
||||
|
||||
# Import reference chain data into new reflinks table
|
||||
if [[ $(mysql $margs -e "select count(*) from reflinks") == 0 ]]
|
||||
then
|
||||
echo "Importing lognote reference chain data into new reflinks table."
|
||||
echo "This may take some time..."
|
||||
(
|
||||
for note in $(mysql $margs -e "select lognoteid from lognotes where refs!=''")
|
||||
do
|
||||
refstring=$(mysql $margs -e "select refs from lognotes where lognoteid=$note")
|
||||
oldifs=$IFS
|
||||
IFS=', '
|
||||
for target in $refstring
|
||||
do
|
||||
target=$(echo "$target" | xargs)
|
||||
mysql $margs -e "insert into reflinks(noteid,target) values($note,$target)"
|
||||
done
|
||||
IFS=$oldifs
|
||||
done
|
||||
) &
|
||||
task_pid=$!
|
||||
spinner $task_pid
|
||||
echo "...done."
|
||||
echo "Importing template reference chain data into new reflinks table."
|
||||
echo "This may take some time..."
|
||||
(
|
||||
for template in $(mysql $margs -e "select templateid from notetemplates where refs!=''")
|
||||
do
|
||||
refstring=$(mysql $margs -e "select refs from notetemplates where templateid=$template")
|
||||
oldifs=$IFS
|
||||
IFS=', '
|
||||
for target in $refstring
|
||||
do
|
||||
target=$(echo "$target" | xargs)
|
||||
mysql $margs -e "insert into reflinks(templateid,target) values($template,$target)"
|
||||
done
|
||||
IFS=$oldifs
|
||||
done
|
||||
) &
|
||||
task_pid=$!
|
||||
spinner $task_pid
|
||||
echo "...done."
|
||||
mysql $margs -e "alter table lognotes drop column refs" >/dev/null 2>&1
|
||||
mysql $margs -e "alter table notetemplates drop column refs" >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
# Convert database to utf8mb4/utf8mb4_unicode_ci
|
||||
echo "Converting database to utf8mb4 encoding..."
|
||||
mysql $margs -e "ALTER DATABASE CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci"
|
||||
for table in $(mysql $margs -e "show tables")
|
||||
do
|
||||
mysql $margs -e "ALTER TABLE $table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
||||
done
|
||||
echo "...done."
|
||||
# -------------------------------------
|
||||
|
||||
@@ -6,11 +6,15 @@ ALTER TABLE configs ADD UNIQUE(confname);
|
||||
|
||||
-- Delete db name, user, and password configs
|
||||
DELETE FROM configs where confname = "ol_dbname";
|
||||
|
||||
DELETE FROM configs where confname = "ol_dbuser";
|
||||
|
||||
DELETE FROM configs where confname = "ol_dbpass";
|
||||
|
||||
-- Add config option for server side error logging
|
||||
INSERT IGNORE INTO configs(confname,confvalue) values('log_errors','0')
|
||||
INSERT IGNORE INTO
|
||||
configs (confname, confvalue)
|
||||
values ('log_errors', '0')
|
||||
|
||||
-- Update version number
|
||||
UPDATE configs SET confvalue = "5.2.1" WHERE confname = "ol_version";
|
||||
@@ -59,4 +63,24 @@ UPDATE configs SET confvalue="5.2.5" WHERE confname="ol_version";
|
||||
-- ---------- version 5.3.0 -------------
|
||||
-- Update version number
|
||||
UPDATE configs SET confvalue = "5.3.0" WHERE confname = "ol_version";
|
||||
|
||||
-- Create the flagmap table
|
||||
CREATE TABLE IF NOT EXISTS `flagmap` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`flagid` int(11) NOT NULL,
|
||||
`lognoteid` int(11) DEFAULT NULL,
|
||||
`maintformid` int(11) DEFAULT NULL,
|
||||
`notetemplateid` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
-- Create the reflinks table
|
||||
CREATE TABLE IF NOT EXISTS `reflinks` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||
`noteid` int(11) DEFAULT NULL,
|
||||
`templateid` int(11) DEFAULT NULL,
|
||||
`target` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
|
||||
|
||||
-- --------------------------------------
|
||||
13
default-apache.conf
Normal file
13
default-apache.conf
Normal file
@@ -0,0 +1,13 @@
|
||||
# _APPNAME_ default Apache configuration
|
||||
|
||||
Alias /_BASEURL_ _DOCROOTIN_/_BASEURL_
|
||||
|
||||
<Directory _DOCROOTIN_/_BASEURL_>
|
||||
AllowOverride Options
|
||||
Options FollowSymLinks
|
||||
DirectoryIndex index.php
|
||||
|
||||
#RewriteEngine On
|
||||
#RewriteBase /_BASEURL_/
|
||||
#RewriteRule . maintenancemode.php [L]
|
||||
</Directory>
|
||||
@@ -240,3 +240,47 @@
|
||||
treating the $today variable as global.
|
||||
- In install.php, if a previous installation was found, make upgrade
|
||||
the default choice.
|
||||
|
||||
5.2.5 - 2026-02-10
|
||||
This is just a version number bump to get on a major-minor-patch
|
||||
scheme. There are no code changes for this release.
|
||||
|
||||
5.3.0 - 2026-02-20
|
||||
- Moved the template Create/Copy/Edit/Delete/Rename functionality to
|
||||
its own page to make it less confusing and to fix some strange
|
||||
behavior.
|
||||
- Added global templates which can be used by anyone but can only be
|
||||
created, modified, or deleted by administrators. This makes it
|
||||
easier to employ standardized templates.
|
||||
- Changed the character encoding of the database to utf8mb4 to enable
|
||||
using emojis in text fields.
|
||||
- Changed the insert link functionality. There are now two fields, link
|
||||
text, and URL. The full URL string will now not be displayed in the
|
||||
note, since it frequently was too long and deformed the table,
|
||||
causing the user to have to scroll right to see the entire note. If
|
||||
a URL is entered in the URL field and no link text is entered in the
|
||||
link text field, the link will show up as just the last part of the
|
||||
URL. For example, "http://somewhere.com/myfile.pdf" will show as
|
||||
"myfile.pdf" in the note text. If text is entered in the link text
|
||||
field, that is what will show as the clickable link in the note text.
|
||||
NOTE: URLs in previously entered notes will not automatically be
|
||||
converted.
|
||||
- Changed the flag handling code to no longer dynamically create flag_
|
||||
tables in the database to track assignments. This is now done using
|
||||
a flagmap table.
|
||||
NOTE: The database will be modified to support this and the
|
||||
importation of the previous data will take some time during
|
||||
installation.
|
||||
- References will no longer be stored in the lognotes table with the note.
|
||||
There is now a reflinks table that stores the link information.
|
||||
NOTE: The database will be modified to support this and the
|
||||
importation of the previous data will take some time during
|
||||
installation.
|
||||
- Various code cleanups to prevent php warnings in the logs if logging
|
||||
is enabled.
|
||||
- Validate all date and time fields to prevent user entered invalid date
|
||||
formats from crashing php.
|
||||
- Fixed profile page to automatically refresh page to show the results
|
||||
when a user changes their color preferences.
|
||||
|
||||
|
||||
|
||||
@@ -14,16 +14,14 @@ allow clients to reach them. You'll also need to know the username and
|
||||
password of the MySQL administrator.
|
||||
|
||||
2. Unpack
|
||||
Unpack the distribution in a convenient place (such as /tmp or My Documents).
|
||||
Unpack the distribution in a convenient place.
|
||||
A directory will be created called OpenLog-x.x.x.
|
||||
|
||||
3. Review License
|
||||
Change to the openlog-x.x.x directory and review the LICENSE file.
|
||||
Change to the OpenLog-x.x.x directory and review the LICENSE file.
|
||||
|
||||
4. Run the install script
|
||||
If installing on a Linux or Unix based system, type ./install.sh at a
|
||||
command prompt. If installing on a Windows based system, double click
|
||||
install.bat. Follow the prompts.
|
||||
Type ./install.sh at a command prompt. Follow the prompts.
|
||||
|
||||
5. Check and set Configuration
|
||||
Click on the Administration menu option on the main page to adjust the initial
|
||||
|
||||
@@ -92,5 +92,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -76,29 +76,31 @@ if(!$print){
|
||||
if ($add) {
|
||||
switch ($table) {
|
||||
case "techs":
|
||||
if ($admin) $admin=1; else $admin=0;
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($admin) $admin = 1;
|
||||
else $admin = 0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Tech name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select techid from techs where techname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Tech name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
// test for matching passwords
|
||||
if ($pass == $passconf) {
|
||||
$passmatch=1;
|
||||
$passmatch = TRUE;
|
||||
$passhash = password_hash($pass, PASSWORD_DEFAULT);
|
||||
} else {
|
||||
$passmatch=0;
|
||||
$passmatch = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> The passwords you supplied don't match.<br>";
|
||||
}
|
||||
if ($namesuppld && $nameunique && $passmatch) {
|
||||
@@ -108,21 +110,22 @@ if(!$print){
|
||||
}
|
||||
break;
|
||||
case "shifts":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Shift name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select shiftid from shifts where shiftname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Shift name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique) {
|
||||
// modify the table
|
||||
@@ -131,21 +134,22 @@ if(!$print){
|
||||
}
|
||||
break;
|
||||
case "subjects":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Subject name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select subjectid from subjects where subjectname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Subject name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique) {
|
||||
// modify the table
|
||||
@@ -154,27 +158,28 @@ if(!$print){
|
||||
}
|
||||
break;
|
||||
case "links":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Display text cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select linkid from links where displaytxt=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Display text already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
// test for urltxt supplied
|
||||
if (strlen(trim($url))) {
|
||||
$urlsuppld=1;
|
||||
$urlsuppld = TRUE;
|
||||
} else {
|
||||
$urlsuppld=0;
|
||||
$urlsuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> URL text cannot be blank.<br>";
|
||||
}
|
||||
if ($namesuppld && $nameunique && $urlsuppld) {
|
||||
@@ -188,60 +193,59 @@ if(!$print){
|
||||
}
|
||||
break;
|
||||
case "flags":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Flag name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Flag name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
// test for symbol supplied
|
||||
if (strlen(trim($flagsym))) {
|
||||
$symsuppld=1;
|
||||
$symsuppld = TRUE;
|
||||
} else {
|
||||
$symsuppld=0;
|
||||
$symsuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Flag symbol cannot be blank.<br>";
|
||||
}
|
||||
// test for symbol unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagsym=\"$flagsym\""))) {
|
||||
$symunique=0;
|
||||
$symunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Flag symbol already exists.<br>";
|
||||
} else {
|
||||
$symunique=1;
|
||||
$symunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique && $symsuppld && $symunique) {
|
||||
// insert record in links table
|
||||
// insert record in flags table
|
||||
mysqli_query($db, "insert into flags(flagname,flagsym,flagcolor,status) values(\"$name\",\"$flagsym\",\"$flagcolor\",\"$active\")");
|
||||
// create sub tables for this link
|
||||
$lastflagid=mysqli_insert_id($db);
|
||||
mysqli_query($db,"create table flag_$lastflagid(target tinytext,id int not null)");
|
||||
}
|
||||
break;
|
||||
case "logpartactions":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Part Action name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select lpactionid from logpartactions where lpactionname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Part Action name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique) {
|
||||
// modify the table
|
||||
@@ -253,17 +257,17 @@ if(!$print){
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Banner name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select bannerid from banners where bannername=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Banner name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique) {
|
||||
// modify the table
|
||||
@@ -281,29 +285,31 @@ if(!$print){
|
||||
if ($edit) {
|
||||
switch ($table) {
|
||||
case "techs":
|
||||
if ($admin) $admin=1; else $admin=0;
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($admin) $admin = 1;
|
||||
else $admin = 0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
if ($delete) {
|
||||
// check for log notes by this tech
|
||||
if (mysqli_num_rows(mysqli_query($db, "select lognoteid from lognotes where tech=\"$id\""))) {
|
||||
$hasnotes=1;
|
||||
$hasnotes = TRUE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Tech has notes in logbook and cannot be deleted.<br>";
|
||||
} else {
|
||||
$hasnotes=0;
|
||||
$hasnotes = FALSE;
|
||||
}
|
||||
// check for maintenance forms by this tech
|
||||
if (mysqli_num_rows(mysqli_query($db, "select maintformid from maintforms where mftech=\"$id\""))) {
|
||||
$hasmfs=1;
|
||||
$hasmfs = TRUE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Tech has maintenance forms and cannot be deleted.<br>";
|
||||
} else {
|
||||
$hasmfs=0;
|
||||
$hasmfs = FALSE;
|
||||
}
|
||||
// check for maintenance actions by this tech
|
||||
if (mysqli_num_rows(mysqli_query($db, "select maintactionid from maintactions where actiontech=\"$id\""))) {
|
||||
$hasmas=1;
|
||||
$hasmas = TRUE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Tech has maintenance actions and cannot be deleted.<br>";
|
||||
} else {
|
||||
$hasmas=0;
|
||||
$hasmas = FALSE;
|
||||
}
|
||||
if (!$hasnotes && !$hasmfs && !$hasmas) {
|
||||
// delete entity
|
||||
@@ -314,34 +320,34 @@ if(!$print){
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Tech name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select techid from techs where techname=\"$name\" and techid!=\"$id\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select techid from techs where techname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Tech name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
// test for matching passwords
|
||||
if ($pass != "password_is_unchanged") {
|
||||
if ($pass == $passconf) {
|
||||
$passmatch=1;
|
||||
$passmatch = TRUE;
|
||||
$passhash = password_hash($pass, PASSWORD_DEFAULT);
|
||||
$updqry = ("update techs set techname=\"$name\",admin=\"$admin\",shift=\"$shift\",techpass=\"$passhash\",status=\"$active\" where techid=\"$id\"");
|
||||
} else {
|
||||
$passmatch=0;
|
||||
$passmatch = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> The passwords you supplied don't match.<br>";
|
||||
}
|
||||
} else {
|
||||
$passmatch=1;
|
||||
$passmatch = TRUE;
|
||||
$updqry = "update techs set techname=\"$name\",admin=\"$admin\",shift=\"$shift\",status=\"$active\" where techid=\"$id\"";
|
||||
}
|
||||
if ($namesuppld && $nameunique && $passmatch) {
|
||||
@@ -351,14 +357,15 @@ if(!$print){
|
||||
}
|
||||
break;
|
||||
case "shifts":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
if ($delete) {
|
||||
// check for log notes with this shift
|
||||
if (mysqli_num_rows(mysqli_query($db, "select lognoteid from lognotes where shift=\"$id\""))) {
|
||||
$hasnotes=1;
|
||||
$hasnotes = TRUE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Shift has notes in logbook and cannot be deleted.<br>";
|
||||
} else {
|
||||
$hasnotes=0;
|
||||
$hasnotes = FALSE;
|
||||
}
|
||||
if (!$hasnotes) {
|
||||
// delete entity
|
||||
@@ -369,21 +376,21 @@ if(!$print){
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Shift name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select shiftid from shifts where shiftname=\"$name\" and shiftid!=\"$id\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select shiftid from shifts where shiftname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Shift name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique) {
|
||||
// modify the table
|
||||
@@ -392,14 +399,15 @@ if(!$print){
|
||||
}
|
||||
break;
|
||||
case "subjects":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
if ($delete) {
|
||||
// check for log notes with this subject
|
||||
if (mysqli_num_rows(mysqli_query($db, "select lognoteid from lognotes where subject=\"$id\""))) {
|
||||
$hasnotes=1;
|
||||
$hasnotes = TRUE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Subject has notes in logbook and cannot be deleted.<br>";
|
||||
} else {
|
||||
$hasnotes=0;
|
||||
$hasnotes = FALSE;
|
||||
}
|
||||
if (!$hasnotes) {
|
||||
// delete entity
|
||||
@@ -410,21 +418,21 @@ if(!$print){
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Subject name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select subjectid from subjects where subjectname=\"$name\" and subjectid!=\"$id\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select subjectid from subjects where subjectname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Subject name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique) {
|
||||
// modify the table
|
||||
@@ -433,7 +441,8 @@ if(!$print){
|
||||
}
|
||||
break;
|
||||
case "links":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
if ($delete) {
|
||||
mysqli_query($db, "delete from links where linkid=\"$id\"");
|
||||
}
|
||||
@@ -441,27 +450,27 @@ if(!$print){
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Display text cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select linkid from links where displaytxt=\"$name\" and linkid!=\"$id\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select linkid from links where displaytxt=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Display text already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
// test for urltxt supplied
|
||||
if (strlen(trim($url))) {
|
||||
$urlsuppld=1;
|
||||
$urlsuppld = TRUE;
|
||||
} else {
|
||||
$urlsuppld=0;
|
||||
$urlsuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> URL text cannot be blank.<br>";
|
||||
}
|
||||
if ($namesuppld && $nameunique && $urlsuppld) {
|
||||
@@ -476,58 +485,58 @@ if(!$print){
|
||||
}
|
||||
break;
|
||||
case "flags":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
if ($delete) {
|
||||
// check for things using this flag
|
||||
if (mysqli_num_rows(mysqli_query($db,"select * from flag_$id"))) {
|
||||
$used=1;
|
||||
if (mysqli_num_rows(mysqli_query($db, "select id from flagmap where flagid=\"$id\""))) {
|
||||
$used = TRUE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Flag is used by other tables and cannot be deleted.<br>";
|
||||
} else {
|
||||
$used=0;
|
||||
$used = FALSE;
|
||||
}
|
||||
if (!$used) {
|
||||
// delete entity
|
||||
mysqli_query($db, "delete from flags where flagid=\"$id\"");
|
||||
mysqli_query($db,"drop table flag_$id");
|
||||
}
|
||||
}
|
||||
if ($update) {
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Flag name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagname=\"$name\" and flagid!=\"$id\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Flag name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
// test for symbol supplied
|
||||
if (strlen(trim($flagsym))) {
|
||||
$symsuppld=1;
|
||||
$symsuppld = TRUE;
|
||||
} else {
|
||||
$symsuppld=0;
|
||||
$symsuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Flag symbol cannot be blank.<br>";
|
||||
}
|
||||
// test for symbol unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagsym=\"$flagsym\" and flagid!=\"$id\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagsym=\"$flagsym\""))) {
|
||||
$symunique=0;
|
||||
$symunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Flag symbol already exists.<br>";
|
||||
} else {
|
||||
$symunique=1;
|
||||
$symunique = TRUE;
|
||||
}
|
||||
} else {
|
||||
$symunique=1;
|
||||
$symunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique && $symsuppld && $symunique) {
|
||||
// modify the table
|
||||
@@ -536,14 +545,15 @@ if(!$print){
|
||||
}
|
||||
break;
|
||||
case "logpartactions":
|
||||
if ($active) $active=1; else $active=0;
|
||||
if ($active) $active = 1;
|
||||
else $active = 0;
|
||||
if ($delete) {
|
||||
// check for logparts with this part action
|
||||
if (mysqli_num_rows(mysqli_query($db, "select logpartid from logparts where action=\"$id\""))) {
|
||||
$hasparts=1;
|
||||
$hasparts = TRUE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Action is assigned to parts in logbook notes and cannot be deleted.<br>";
|
||||
} else {
|
||||
$hasparts=0;
|
||||
$hasparts = FALSE;
|
||||
}
|
||||
if (!$hasparts) {
|
||||
// delete entity
|
||||
@@ -554,21 +564,21 @@ if(!$print){
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Part Action name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select lpactionid from logpartactions where lpactionname=\"$name\" and lpactionid!=\"$id\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select lpactionid from logpartactions where lpactionname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Part Action name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique) {
|
||||
// modify the table
|
||||
@@ -585,21 +595,21 @@ if(!$print){
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Banner name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select bannerid from banners where bannername=\"$name\" and bannerid!=\"$id\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select bannerid from banners where bannername=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Banner name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
if ($namesuppld && $nameunique) {
|
||||
// modify the table
|
||||
@@ -610,21 +620,24 @@ if(!$print){
|
||||
case "configs":
|
||||
switch ($type) {
|
||||
case "display":
|
||||
if ($display_showts) $display_showts=1; else $display_showts=0;
|
||||
if ($display_techalpha=="a") $display_techalpha=1; else $display_techalpha=0;
|
||||
if ($display_subjalpha=="a") $display_subjalpha=1; else $display_subjalpha=0;
|
||||
if ($display_showts) $display_showts = 1;
|
||||
else $display_showts = 0;
|
||||
if ($display_techalpha == "a") $display_techalpha = 1;
|
||||
else $display_techalpha = 0;
|
||||
if ($display_subjalpha == "a") $display_subjalpha = 1;
|
||||
else $display_subjalpha = 0;
|
||||
// test for logname supplied
|
||||
if (strlen(trim($display_logname))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Log name cannot be blank.<br>";
|
||||
}
|
||||
// test for urlchunk supplied
|
||||
if (strlen(trim($display_urlchunk))) {
|
||||
$chunksuppld=1;
|
||||
$chunksuppld = TRUE;
|
||||
} else {
|
||||
$chunksuppld=0;
|
||||
$chunksuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> URL chunk size cannot be blank.<br>";
|
||||
}
|
||||
if ($namesuppld && $chunksuppld) {
|
||||
@@ -666,16 +679,16 @@ if(!$print){
|
||||
}
|
||||
// test for sessttl supplied
|
||||
if (strlen(trim($misc_sessttl))) {
|
||||
$ttlsuppld=1;
|
||||
$ttlsuppld = TRUE;
|
||||
} else {
|
||||
$ttlsuppld=0;
|
||||
$ttlsuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Session expiration time cannot be blank.<br>";
|
||||
}
|
||||
// test for sessdir supplied
|
||||
if (strlen(trim($misc_sessdir))) {
|
||||
$dirsuppld=1;
|
||||
$dirsuppld = TRUE;
|
||||
} else {
|
||||
$dirsuppld=0;
|
||||
$dirsuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Server session file directory cannot be blank.<br>";
|
||||
}
|
||||
if ($ttlsuppld && $dirsuppld) {
|
||||
@@ -751,6 +764,7 @@ switch($table) {
|
||||
";
|
||||
// pull current values from database
|
||||
$currentvalues = mysqli_fetch_assoc(mysqli_query($db, "select * from techs where techid=$id"));
|
||||
if (!empty($currentvalues)) {
|
||||
$name = $currentvalues["techname"];
|
||||
$pass = $passconf = "password_is_unchanged";
|
||||
$shift = $currentvalues["shift"];
|
||||
@@ -764,6 +778,13 @@ switch($table) {
|
||||
} else {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
$name = NULL;
|
||||
$pass = NULL;
|
||||
$shift = NULL;
|
||||
$admintag = "<input type=\"checkbox\" name=\"admin\">";
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
// set form options for add
|
||||
$sectiontitle = "<b>Add New Tech</b><br><br>";
|
||||
@@ -794,7 +815,7 @@ switch($table) {
|
||||
$shiftrow = mysqli_query($db, "select * from shifts");
|
||||
while ($shiftitem = mysqli_fetch_assoc($shiftrow)) {
|
||||
if ($shiftitem["status"] == 1) {
|
||||
if ($shiftitem["shiftid"]==$customshiftnum) {
|
||||
if ($shiftitem["shiftid"] == $shift) {
|
||||
printf("<option value=\"%s\" selected>%s</option>", $shiftitem["shiftid"], $shiftitem["shiftname"]);
|
||||
} else {
|
||||
printf("<option value=\"%s\">%s</option>", $shiftitem["shiftid"], $shiftitem["shiftname"]);
|
||||
@@ -830,8 +851,9 @@ switch($table) {
|
||||
} else {
|
||||
$statdef = "<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
||||
}
|
||||
$shiftname=dblookup($db,"shifts","shiftname","shiftid",$shift);
|
||||
printf("
|
||||
$shiftname = dblookup($db, "shifts", "shiftid", "shiftname", $tablerow["shift"]);
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"admin.php?table=$table&edit=1&id=%s\">%s</a></td>
|
||||
<td>%s</td>
|
||||
@@ -839,11 +861,13 @@ switch($table) {
|
||||
<td align=\"center\">%s</td>
|
||||
<td align=\"center\">%s</td>
|
||||
</tr>",
|
||||
$tablerow["techid"],$tablerow["techid"],
|
||||
$tablerow["techid"],
|
||||
$tablerow["techid"],
|
||||
$tablerow["techname"],
|
||||
$shiftname,
|
||||
$admdef,
|
||||
$statdef);
|
||||
$statdef
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
break;
|
||||
@@ -862,12 +886,17 @@ switch($table) {
|
||||
";
|
||||
// pull current values from database
|
||||
$currentvalues = mysqli_fetch_assoc(mysqli_query($db, "select * from shifts where shiftid=$id"));
|
||||
if (!empty($currentvalues)) {
|
||||
$name = $currentvalues["shiftname"];
|
||||
if ($currentvalues["status"] == 1) {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\" checked>";
|
||||
} else {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
$name = NULL;
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
// set form options for add
|
||||
$sectiontitle = "<b>Add New Shift</b><br><br>";
|
||||
@@ -906,15 +935,18 @@ switch($table) {
|
||||
} else {
|
||||
$statdef = "<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
||||
}
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"admin.php?table=$table&edit=1&id=%s\">%s</a></td>
|
||||
<td>%s</td>
|
||||
<td align=\"center\">%s</td>
|
||||
</tr>",
|
||||
$tablerow["shiftid"],$tablerow["shiftid"],
|
||||
$tablerow["shiftid"],
|
||||
$tablerow["shiftid"],
|
||||
$tablerow["shiftname"],
|
||||
$statdef);
|
||||
$statdef
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
break;
|
||||
@@ -933,12 +965,17 @@ switch($table) {
|
||||
";
|
||||
// pull current values from database
|
||||
$currentvalues = mysqli_fetch_assoc(mysqli_query($db, "select * from subjects where subjectid=$id"));
|
||||
if (!empty($currentvalues)) {
|
||||
$name = $currentvalues["subjectname"];
|
||||
if ($currentvalues["status"] == 1) {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\" checked>";
|
||||
} else {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
$name = "";
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
// set form options for add
|
||||
$sectiontitle = "<b>Add New Subject</b><br><br>";
|
||||
@@ -977,15 +1014,18 @@ switch($table) {
|
||||
} else {
|
||||
$statdef = "<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
||||
}
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"admin.php?table=$table&edit=1&id=%s\">%s</a></td>
|
||||
<td>%s</td>
|
||||
<td align=\"center\">%s</td>
|
||||
</tr>",
|
||||
$tablerow["subjectid"],$tablerow["subjectid"],
|
||||
$tablerow["subjectid"],
|
||||
$tablerow["subjectid"],
|
||||
$tablerow["subjectname"],
|
||||
$statdef);
|
||||
$statdef
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
break;
|
||||
@@ -1004,6 +1044,7 @@ switch($table) {
|
||||
";
|
||||
// pull current values from database
|
||||
$currentvalues = mysqli_fetch_assoc(mysqli_query($db, "select * from links where linkid=$id"));
|
||||
if (!empty($currentvalues)) {
|
||||
$name = $currentvalues["displaytxt"];
|
||||
$priority = $currentvalues["linkpriority"];
|
||||
$url = $currentvalues["urltxt"];
|
||||
@@ -1012,6 +1053,12 @@ switch($table) {
|
||||
} else {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
$name = NULL;
|
||||
$priority = NULL;
|
||||
$url = NULL;
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
// determine where we are in the priority stack
|
||||
$prow = mysqli_fetch_assoc(mysqli_query($db, "select min(linkpriority) as highest from links"));
|
||||
if ($prow["highest"] == $priority) {
|
||||
@@ -1090,17 +1137,21 @@ switch($table) {
|
||||
} else {
|
||||
$statdef = "<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
||||
}
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"admin.php?table=$table&edit=1&id=%s\">%s</a></td>
|
||||
<td>%s</td>
|
||||
<td><a href=\"%s\">%s</a></td>
|
||||
<td align=\"center\">%s</td>
|
||||
</tr>",
|
||||
$tablerow["linkid"],$tablerow["linkid"],
|
||||
$tablerow["linkid"],
|
||||
$tablerow["linkid"],
|
||||
$tablerow["displaytxt"],
|
||||
$tablerow["urltxt"],$tablerow["urltxt"],
|
||||
$statdef);
|
||||
$tablerow["urltxt"],
|
||||
$tablerow["urltxt"],
|
||||
$statdef
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
break;
|
||||
@@ -1119,10 +1170,22 @@ switch($table) {
|
||||
";
|
||||
// pull current values from database
|
||||
$currentvalues = mysqli_fetch_assoc(mysqli_query($db, "select * from flags where flagid=$id"));
|
||||
if (!empty($currentvalues)) {
|
||||
$name = $currentvalues["flagname"];
|
||||
$flagsym = $currentvalues["flagsym"];
|
||||
$flagcolor = $currentvalues["flagcolor"];
|
||||
$flagcoloropts = "";
|
||||
if ($currentvalues["status"] == 1) {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\" checked>";
|
||||
} else {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
$name = NULL;
|
||||
$flagsym = NULL;
|
||||
$flagcolor = NULL;
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
foreach ($basic_colors as $cname => $chex) {
|
||||
if ($chex == $flagcolor) {
|
||||
$flagcoloropts = $flagcoloropts . "<option value=\"$chex\" selected>$cname</option>";
|
||||
@@ -1130,11 +1193,6 @@ switch($table) {
|
||||
$flagcoloropts = $flagcoloropts . "<option value=\"$chex\">$cname</option>";
|
||||
}
|
||||
}
|
||||
if ($currentvalues["status"]==1) {
|
||||
$activetag="<input type=\"checkbox\" name=\"active\" checked>";
|
||||
} else {
|
||||
$activetag="<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
// set form options for add
|
||||
$sectiontitle = "<b>Add New Flag</b><br><br>";
|
||||
@@ -1187,17 +1245,21 @@ switch($table) {
|
||||
} else {
|
||||
$statdef = "<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
||||
}
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"admin.php?table=$table&edit=1&id=%s\">%s</a></td>
|
||||
<td>%s</td>
|
||||
<td align=\"center\"><font color=\"%s\">%s</font></td>
|
||||
<td align=\"center\">%s</td>
|
||||
</tr>",
|
||||
$tablerow["flagid"],$tablerow["flagid"],
|
||||
$tablerow["flagid"],
|
||||
$tablerow["flagid"],
|
||||
$tablerow["flagname"],
|
||||
$tablerow["flagcolor"],$tablerow["flagsym"],
|
||||
$statdef);
|
||||
$tablerow["flagcolor"],
|
||||
$tablerow["flagsym"],
|
||||
$statdef
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
break;
|
||||
@@ -1216,12 +1278,17 @@ switch($table) {
|
||||
";
|
||||
// pull current values from database
|
||||
$currentvalues = mysqli_fetch_assoc(mysqli_query($db, "select * from logpartactions where lpactionid=$id"));
|
||||
if (!empty($currentvalues)) {
|
||||
$name = $currentvalues["lpactionname"];
|
||||
if ($currentvalues["status"] == 1) {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\" checked>";
|
||||
} else {
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
$name = NULL;
|
||||
$activetag = "<input type=\"checkbox\" name=\"active\">";
|
||||
}
|
||||
} else {
|
||||
// set form options for add
|
||||
$sectiontitle = "<b>Add New Part Action</b><br><br>";
|
||||
@@ -1260,15 +1327,18 @@ switch($table) {
|
||||
} else {
|
||||
$statdef = "<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
||||
}
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"admin.php?table=$table&edit=1&id=%s\">%s</a></td>
|
||||
<td>%s</td>
|
||||
<td align=\"center\">%s</td>
|
||||
</tr>",
|
||||
$tablerow["lpactionid"],$tablerow["lpactionid"],
|
||||
$tablerow["lpactionid"],
|
||||
$tablerow["lpactionid"],
|
||||
$tablerow["lpactionname"],
|
||||
$statdef);
|
||||
$statdef
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
break;
|
||||
@@ -1287,9 +1357,15 @@ switch($table) {
|
||||
";
|
||||
// pull current values from database
|
||||
$currentvalues = mysqli_fetch_assoc(mysqli_query($db, "select * from banners where bannerid=$id"));
|
||||
if (!empty($currentvalues)) {
|
||||
$name = $currentvalues["bannername"];
|
||||
$bnrcolor = $currentvalues["bannercolor"];
|
||||
$bnrtextcolor = $currentvalues["textcolor"];
|
||||
} else {
|
||||
$name = NULL;
|
||||
$bnrcolor = NULL;
|
||||
$bnrtextcolor = NULL;
|
||||
}
|
||||
$bnrcoloropts = "";
|
||||
foreach ($basic_colors as $cname => $chex) {
|
||||
if ($chex == $bnrcolor) {
|
||||
@@ -1363,13 +1439,18 @@ switch($table) {
|
||||
<tr><th>Banner ID</th><th>Banner</th></tr>
|
||||
";
|
||||
while ($tablerow = mysqli_fetch_assoc($existingdata)) {
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"admin.php?table=$table&edit=1&id=%s\">%s</a></td>
|
||||
<td align=\"center\" bgcolor=\"%s\"><font color=\"%s\">%s</font></td>
|
||||
</tr>",
|
||||
$tablerow["bannerid"],$tablerow["bannerid"],
|
||||
$tablerow["bannercolor"],$tablerow["textcolor"],$tablerow["bannername"]);
|
||||
$tablerow["bannerid"],
|
||||
$tablerow["bannerid"],
|
||||
$tablerow["bannercolor"],
|
||||
$tablerow["textcolor"],
|
||||
$tablerow["bannername"]
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
break;
|
||||
@@ -1586,5 +1667,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -45,11 +45,13 @@ $basic_colors=array(
|
||||
"Blue" => "#0000FF",
|
||||
"Navy" => "#000080",
|
||||
"Fuchsia" => "#FF00FF",
|
||||
"Purple" => "#800080");
|
||||
"Purple" => "#800080"
|
||||
);
|
||||
|
||||
// Generic functions
|
||||
|
||||
function framework($option,$htmltitle,$pagetitle,$print) {
|
||||
function framework($option, $htmltitle, $pagetitle, $print)
|
||||
{
|
||||
// generates html code for the beginning and end of all pages
|
||||
if ($option == "begin") {
|
||||
// generates everything down to the first horiz rule inclusive
|
||||
@@ -221,7 +223,8 @@ function framework($option,$htmltitle,$pagetitle,$print) {
|
||||
}
|
||||
}
|
||||
|
||||
function pagetable($option) {
|
||||
function pagetable($option)
|
||||
{
|
||||
if ($option == "begin") {
|
||||
echo "
|
||||
<br>
|
||||
@@ -240,7 +243,8 @@ function pagetable($option) {
|
||||
}
|
||||
}
|
||||
|
||||
function pageblock($block,$option) {
|
||||
function pageblock($block, $option)
|
||||
{
|
||||
global $sbcolor;
|
||||
if ($block == "left") {
|
||||
if ($option == "begin") {
|
||||
@@ -280,7 +284,8 @@ function pageblock($block,$option) {
|
||||
}
|
||||
}
|
||||
|
||||
function sidemenu($noprint=false) {
|
||||
function sidemenu($noprint = false)
|
||||
{
|
||||
// Displays sidebar menu
|
||||
global $db, $mbgcolor, $noprint;
|
||||
$doparts = PARTS_FUNCTIONS;
|
||||
@@ -359,7 +364,8 @@ function sidemenu($noprint=false) {
|
||||
";
|
||||
}
|
||||
|
||||
function banner($print) {
|
||||
function banner($print)
|
||||
{
|
||||
// displays a banner
|
||||
global $db;
|
||||
$bannerid = BANNER;
|
||||
@@ -385,7 +391,8 @@ function banner($print) {
|
||||
}
|
||||
}
|
||||
|
||||
function dblookup($dbhandle,$table,$in_field,$out_field,$in_data) {
|
||||
function dblookup($dbhandle, $table, $in_field, $out_field, $in_data)
|
||||
{
|
||||
// look up a single field in a database given a value for a single field
|
||||
$dbqry = mysqli_query($dbhandle, "select $out_field from $table where $in_field=\"$in_data\"");
|
||||
if (mysqli_num_rows($dbqry)) {
|
||||
@@ -396,7 +403,8 @@ function dblookup($dbhandle,$table,$in_field,$out_field,$in_data) {
|
||||
return ($out_data);
|
||||
}
|
||||
|
||||
function calendar($year,$month,$day,$link_url) {
|
||||
function calendar($year, $month, $day, $link_url)
|
||||
{
|
||||
// takes a numeric year, month, day, and the basic url for the day links as arguments
|
||||
// Shows a calendar with clickable dates.
|
||||
// Based on an embeddable calendar by Yves Glodt.
|
||||
@@ -512,7 +520,8 @@ EOT;
|
||||
print "</table>\n";
|
||||
}
|
||||
|
||||
function colorpicker($baseurl) {
|
||||
function colorpicker($baseurl)
|
||||
{
|
||||
// takes a standard url and tacks the color number on to the end of it
|
||||
// giving a palette of links
|
||||
echo "
|
||||
@@ -595,7 +604,8 @@ function colorpicker($baseurl) {
|
||||
// Project functions
|
||||
|
||||
|
||||
function getsetting($setting_name,$tech_id) {
|
||||
function getsetting($setting_name, $tech_id)
|
||||
{
|
||||
// get the value of a setting for a tech
|
||||
global $db;
|
||||
$confinfo = mysqli_fetch_assoc(mysqli_query($db, "select confid,confvalue from configs where confname=\"$setting_name\""));
|
||||
@@ -617,7 +627,8 @@ function getsetting($setting_name,$tech_id) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
function putsetting($setting_name,$setting_value,$tech_id) {
|
||||
function putsetting($setting_name, $setting_value, $tech_id)
|
||||
{
|
||||
// set the value of a setting for a tech
|
||||
global $db;
|
||||
$confinfo = mysqli_fetch_assoc(mysqli_query($db, "select confid,confvalue from configs where confname=\"$setting_name\""));
|
||||
@@ -637,7 +648,8 @@ function putsetting($setting_name,$setting_value,$tech_id) {
|
||||
}
|
||||
}
|
||||
|
||||
function islink($il_note) {
|
||||
function islink($il_note)
|
||||
{
|
||||
// takes a noteid number as an argument
|
||||
// determines if the argument is a link in a reference chain
|
||||
// returns 1 if note is a link, 0 if not
|
||||
@@ -651,7 +663,8 @@ function islink($il_note) {
|
||||
}
|
||||
|
||||
|
||||
function generate_chain($chainlink) {
|
||||
function generate_chain($chainlink)
|
||||
{
|
||||
// generate a reference chain
|
||||
// takes a single parameter, a noteid
|
||||
// finds all notes that are members of a chain containing the supplied noteid
|
||||
@@ -693,7 +706,8 @@ function generate_chain($chainlink) {
|
||||
return ($chainarray);
|
||||
}
|
||||
|
||||
function convertweblinks($rawstring) {
|
||||
function convertweblinks($rawstring)
|
||||
{
|
||||
// takes a string, finds urls, and returns the string with urls converted to clickable links
|
||||
$urlchunksize = URL_CHUNK_SIZE;
|
||||
// define regex pattern for urls
|
||||
@@ -712,7 +726,8 @@ function convertweblinks($rawstring) {
|
||||
return $rawstring;
|
||||
}
|
||||
|
||||
function showlinklist($print) {
|
||||
function showlinklist($print)
|
||||
{
|
||||
global $db;
|
||||
$linkresult = mysqli_query($db, "select linkid from links where status=\"1\"");
|
||||
if (mysqli_num_rows($linkresult) && !$print) {
|
||||
@@ -726,7 +741,8 @@ function showlinklist($print) {
|
||||
}
|
||||
}
|
||||
|
||||
function nag($tech_id) {
|
||||
function nag($tech_id)
|
||||
{
|
||||
// nags the user if something is pending
|
||||
global $db, $today;
|
||||
// maintenance forms
|
||||
@@ -751,17 +767,20 @@ function nag($tech_id) {
|
||||
}
|
||||
}
|
||||
|
||||
function get_part_data($partinputdata) {
|
||||
function get_part_data($partinputdata)
|
||||
{
|
||||
// given an associative array of partid, uid, partnum, sernum,
|
||||
// return an associative array of
|
||||
// partid, uid, partnum, sernum, partname, result
|
||||
// where result=0 for success, 1 for no data found, 2 for mismatch
|
||||
global $db;
|
||||
$checkmm = FALSE;
|
||||
$result = 0;
|
||||
// pull input data from input array
|
||||
if ($partinputdata['partid'] && $partinputdata['partid'] != "") $partid= $partinputdata['partid'];
|
||||
if ($partinputdata['uid'] && $partinputdata['uid'] != "") $uid= $partinputdata['uid'];
|
||||
if ($partinputdata['partnum'] && $partinputdata['partnum'] != "") $partnum= $partinputdata['partnum'];
|
||||
if ($partinputdata['sernum'] && $partinputdata['sernum'] != "") $sernum= $partinputdata['sernum'];
|
||||
$partid = (array_key_exists('partid', $partinputdata) && $partinputdata['partid'] != "") ? $partinputdata['partid'] : NULL;
|
||||
$uid = (array_key_exists('uid', $partinputdata) && $partinputdata['uid'] != "") ? $partinputdata['uid'] : NULL;
|
||||
$partnum = (array_key_exists('partnum', $partinputdata) && $partinputdata['partnum'] != "") ? $partinputdata['partnum'] : NULL;
|
||||
$sernum = (array_key_exists('sernum', $partinputdata) && $partinputdata['sernum'] != "") ? $partinputdata['sernum'] : NULL;
|
||||
// for part data supplied, see what info is available
|
||||
// if a partid is supplied, pull other info from parts
|
||||
if ($partid) { // if partid supplied
|
||||
@@ -772,21 +791,21 @@ function get_part_data($partinputdata) {
|
||||
$partqry = mysqli_query($db, "select * from parts where partnum=\"$partnum\" and sernum=\"$sernum\"");
|
||||
} else if ($uid && $partnum && $sernum) { //if uid and pn/sn supplied
|
||||
$partqry = mysqli_query($db, "select * from parts where uid like \"$uid\" and partnum=\"$partnum\" and sernum=\"$sernum\"");
|
||||
$checkmm=1;
|
||||
$checkmm = TRUE;
|
||||
$mismatchqry = mysqli_query($db, "select * from parts where
|
||||
(uid like \"$uid\" and ((partnum !=\"$partnum\" and partnum !=\"\")or (sernum !=\"$sernum\" and sernum !=\"\"))) or
|
||||
((uid not like \"$uid\" and uid not like \"\") and (partnum =\"$partnum\" and sernum =\"$sernum\"))
|
||||
");
|
||||
} else if ($uid && $partnum && ! $sernum) { //if uid and pn only supplied
|
||||
$partqry = mysqli_query($db, "select * from parts where uid like \"$uid\" and partnum=\"$partnum\"");
|
||||
$checkmm=1;
|
||||
$checkmm = TRUE;
|
||||
$mismatchqry = mysqli_query($db, "select partid from parts where
|
||||
(uid like \"$uid\" and partnum !=\"$partnum\") or
|
||||
(uid not like \"$uid\" and partnum =\"$partnum\")
|
||||
");
|
||||
} else if ($uid && ! $partnum && $sernum) { //if uid and sn only supplied
|
||||
$partqry = mysqli_query($db, "select * from parts where uid like \"$uid\" and sernum=\"$sernum\"");
|
||||
$checkmm=1;
|
||||
$checkmm = TRUE;
|
||||
$mismatchqry = mysqli_query($db, "select partid from parts where
|
||||
(uid like \"$uid\" and sernum !=\"$sernum\") or
|
||||
(uid not like \"$uid\" and sernum =\"$sernum\")
|
||||
@@ -807,9 +826,6 @@ function get_part_data($partinputdata) {
|
||||
if ($checkmm) {
|
||||
if (mysqli_num_rows($mismatchqry)) {
|
||||
$result = 2;
|
||||
//while ($mmdata=mysqli_fetch_assoc($mismatchqry)) {
|
||||
//var_dump($mmdata);
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -822,7 +838,8 @@ function get_part_data($partinputdata) {
|
||||
return $partdata;
|
||||
}
|
||||
|
||||
function get_upcoming_events() {
|
||||
function get_upcoming_events()
|
||||
{
|
||||
// build array of upcoming events
|
||||
// takes no arguments
|
||||
// returns an array containing arrays of upcoming event data
|
||||
@@ -911,7 +928,8 @@ function get_upcoming_events() {
|
||||
return $ucevents;
|
||||
}
|
||||
|
||||
function format_message($msgtype,$msgtxt) {
|
||||
function format_message($msgtype, $msgtxt)
|
||||
{
|
||||
// displays a formatted message
|
||||
// $msgtype is 0 for success or anything else for failure
|
||||
// $msgtxt is the string to display
|
||||
@@ -931,4 +949,92 @@ function format_message($msgtype,$msgtxt) {
|
||||
";
|
||||
}
|
||||
|
||||
?>
|
||||
function templateselect($techid, $operation)
|
||||
{
|
||||
// Displays a line enabling selection of a user or global template
|
||||
// $techid is the id number of the current tech
|
||||
// $operation is one of "add" "edit" "delete" or NULL
|
||||
global $db;
|
||||
$isadmin = dblookup($db, "techs", "techid", "admin", $techid);
|
||||
echo "
|
||||
<form method=\"post\">
|
||||
";
|
||||
// generate template selection line
|
||||
echo "
|
||||
<table border=\"0\" cellpadding=\"10\"><tr>
|
||||
";
|
||||
// list user templates
|
||||
echo "
|
||||
<td>
|
||||
<select name=\"usertemplateid\" title=\"Select the user template you'd like to load and click the Load Template button. User template selection takes precedence.\">
|
||||
";
|
||||
if ($isadmin && $operation != NULL) {
|
||||
$templaterow = mysqli_query($db, "select * from notetemplates where tech!=\"0\" order by tech asc, templatename asc");
|
||||
} else {
|
||||
$templaterow = mysqli_query($db, "select * from notetemplates where tech=\"$techid\" order by templatename asc");
|
||||
}
|
||||
printf("<option value=\"%s\" selected>%s</option>", "0", "Select user template");
|
||||
while ($templateitem = mysqli_fetch_assoc($templaterow)) {
|
||||
if ($isadmin && $operation != NULL) {
|
||||
$techname = dblookup($db, "techs", "techid", "techname", $templateitem["tech"]);
|
||||
printf("<option value=\"%s\">%s(%s)</option>", $templateitem["templateid"], $templateitem["templatename"], $techname);
|
||||
} else {
|
||||
printf("<option value=\"%s\">%s</option>", $templateitem["templateid"], $templateitem["templatename"]);
|
||||
}
|
||||
}
|
||||
echo "
|
||||
</select> or
|
||||
";
|
||||
// list global templates
|
||||
echo "
|
||||
<select name=\"globaltemplateid\" title=\"Select the global template you'd like to load and click the Load Template button. User template selection takes precedence.\">
|
||||
";
|
||||
$templaterow = mysqli_query($db, "select * from notetemplates where tech=\"0\" order by templatename asc");
|
||||
printf("<option value=\"%s\" selected>%s</option>", "0", "Select global template");
|
||||
while ($templateitem = mysqli_fetch_assoc($templaterow)) {
|
||||
printf("<option value=\"%s\">%s</option>", $templateitem["templateid"], $templateitem["templatename"]);
|
||||
}
|
||||
echo "
|
||||
</select>
|
||||
";
|
||||
// show load button
|
||||
echo "
|
||||
<input type=\"hidden\" name=\"operation\" value=\"$operation\">
|
||||
<input type=\"submit\" name=\"loadtemplate\" value=\"Load Template\">
|
||||
</td>
|
||||
<td>
|
||||
<a href=\"templates.php\">Manage templates</a>
|
||||
</td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
</form>
|
||||
";
|
||||
}
|
||||
|
||||
function fix_date($datestring)
|
||||
{
|
||||
// accepts a string as an argument
|
||||
// returns a valid date string in the format YYYY-MM-DD
|
||||
// if input string is not a valid date, return the current date
|
||||
global $db, $today;
|
||||
|
||||
if (!$datestring) $datestring = $today;
|
||||
$datepatt = '/^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$/';
|
||||
if (!preg_match($datepatt, $datestring)) $datestring = $today;
|
||||
$datestring = mysqli_real_escape_string($db, $datestring);
|
||||
return $datestring;
|
||||
}
|
||||
|
||||
function fix_time($timestring)
|
||||
{
|
||||
// accepts a string as an argument
|
||||
// returns a valid time string in the format HH:MM:SS
|
||||
// if input string is not a valid time, return the current time
|
||||
global $db, $now;
|
||||
|
||||
if (!$timestring) $timestring = $now;
|
||||
$timepatt = '/^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/';
|
||||
if (!preg_match($timepatt, $timestring)) $timestring = $now;
|
||||
$timestring = mysqli_real_escape_string($db, $timestring);
|
||||
return $timestring;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
include("functions.php");
|
||||
|
||||
|
||||
$print=$_REQUEST['print'];
|
||||
$print = $_REQUEST['print'] ?? NULL;
|
||||
|
||||
if ($print) {
|
||||
$sbcolor = P_SIDEBAR_COLOR;
|
||||
@@ -380,5 +380,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
include("functions.php");
|
||||
|
||||
if (!$_SESSION['login'] && !$_REQUEST['partview']) {
|
||||
if (!array_key_exists("login", $_SESSION) && !array_key_exists("partview", $_REQUEST)) {
|
||||
header("Location: login.php");
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ $uids=$_POST['uids'] ?? [];
|
||||
$partnums = $_POST['partnums'] ?? [];
|
||||
$sernums = $_POST['sernums'] ?? [];
|
||||
$actions = $_POST['actions'] ?? [];
|
||||
$mfreqs=$_POST['mfreqs'] ?? [];
|
||||
$mfreqs = $_POST['mfreqs'] ?? ["off"];
|
||||
$schedmaintcomplete = $_REQUEST['schedmaintcomplete'] ?? NULL;
|
||||
$partview = $_REQUEST['partview'] ?? NULL;
|
||||
|
||||
@@ -96,10 +96,9 @@ if ($add) {
|
||||
// add the entry if submit is pressed
|
||||
if ($note) {
|
||||
// sanitize and fix blank date and time
|
||||
$date=mysqli_real_escape_string($db,$date);
|
||||
$time=mysqli_real_escape_string($db,$time);
|
||||
if (!$date) $date=$today;
|
||||
if (!$time) $time=$now;
|
||||
$date = fix_date($date);
|
||||
$time = fix_time($time);
|
||||
|
||||
// determine whether supplied date is future or past
|
||||
$datediff = mysqli_fetch_row(mysqli_query($db, "select datediff(\"$date\",CURRENT_DATE)"));
|
||||
// if future, set time to 00:00:01, if past, set to 23:59:59
|
||||
@@ -200,7 +199,7 @@ if ($add) {
|
||||
// add it to logparts table
|
||||
mysqli_query($db, "insert into logparts(lognoteid,partid,action) values(\"$newnoteid\",\"$lpid\",\"$actions[$plidx]\")");
|
||||
// create a maintenance form if required
|
||||
if ($mfreqs[$plidx]=="on") {
|
||||
if (array_key_exists($plidx,$mfreqs) && $mfreqs[$plidx] == "on") {
|
||||
mysqli_query($db, "insert into maintforms(mfdate,mftech,mfpart,pending,lognoteid) values(\"$date\",\"$techid\",\"$lpid\",1,\"$newnoteid\")");
|
||||
}
|
||||
|
||||
@@ -218,7 +217,7 @@ if ($add) {
|
||||
// add it to logparts table
|
||||
mysqli_query($db, "insert into logparts(lognoteid,partid,action) values(\"$newnoteid\",\"$lpid\",\"$actions[$plidx]\")");
|
||||
// create a maintenance form if required
|
||||
if ($mfreqs[$plidx]=="on") {
|
||||
if (array_key_exists($plidx,$mfreqs) && $mfreqs[$plidx] == "on") {
|
||||
mysqli_query($db, "insert into maintforms(mfdate,mftech,mfpart,pending,lognoteid) values(\"$date\",\"$techid\",\"$lpid\",1,\"$newnoteid\")");
|
||||
}
|
||||
|
||||
@@ -236,10 +235,9 @@ if ($add) {
|
||||
// add it to logparts table
|
||||
mysqli_query($db, "insert into logparts(lognoteid,partid,action) values(\"$newnoteid\",\"$lpid\",\"$actions[$plidx]\")");
|
||||
// create a maintenance form if required
|
||||
if ($mfreqs[$plidx]=="on") {
|
||||
if (array_key_exists($plidx,$mfreqs) && $mfreqs[$plidx] == "on") {
|
||||
mysqli_query($db, "insert into maintforms(mfdate,mftech,mfpart,pending,lognoteid) values(\"$date\",\"$techid\",\"$lpid\",1,\"$newnoteid\")");
|
||||
}
|
||||
|
||||
} else {
|
||||
// no part info was entered
|
||||
}
|
||||
@@ -264,6 +262,10 @@ if ($edit) {
|
||||
if ($removepart && $authorized) mysqli_query($db, "delete from logparts where lognoteid=\"$noteid\" and logpartid=\"$removepart\"");
|
||||
if ($submit) {
|
||||
if ($note) {
|
||||
// sanitize and fix blank date and time
|
||||
$date = fix_date($date);
|
||||
$time = fix_time($time);
|
||||
|
||||
// remove cruft from note text
|
||||
$note = strip_tags($note, "<a>");
|
||||
$note = mysqli_real_escape_string($db, $note);
|
||||
@@ -362,7 +364,7 @@ if ($edit) {
|
||||
// add it to logparts table
|
||||
mysqli_query($db, "insert into logparts(lognoteid,partid,action) values(\"$noteid\",\"$lpid\",\"$actions[$plidx]\")");
|
||||
// create a maintenance form if required
|
||||
if ($mfreqs[$plidx]=="on") {
|
||||
if (array_key_exists($plidx,$mfreqs) && $mfreqs[$plidx] == "on") {
|
||||
mysqli_query($db, "insert into maintforms(mfdate,mftech,mfpart,pending,lognoteid) values(\"$date\",\"$techid\",\"$lpid\",1,\"$noteid\")");
|
||||
}
|
||||
|
||||
@@ -380,7 +382,7 @@ if ($edit) {
|
||||
// add it to logparts table
|
||||
mysqli_query($db, "insert into logparts(lognoteid,partid,action) values(\"$noteid\",\"$lpid\",\"$actions[$plidx]\")");
|
||||
// create a maintenance form if required
|
||||
if ($mfreqs[$plidx]=="on") {
|
||||
if (array_key_exists($plidx,$mfreqs) && $mfreqs[$plidx] == "on") {
|
||||
mysqli_query($db, "insert into maintforms(mfdate,mftech,mfpart,pending,lognoteid) values(\"$date\",\"$techid\",\"$lpid\",1,\"$noteid\")");
|
||||
}
|
||||
|
||||
@@ -398,10 +400,9 @@ if ($edit) {
|
||||
// add it to logparts table
|
||||
mysqli_query($db, "insert into logparts(lognoteid,partid,action) values(\"$noteid\",\"$lpid\",\"$actions[$plidx]\")");
|
||||
// create a maintenance form if required
|
||||
if ($mfreqs[$plidx]=="on") {
|
||||
if (array_key_exists($plidx,$mfreqs) && $mfreqs[$plidx] == "on") {
|
||||
mysqli_query($db, "insert into maintforms(mfdate,mftech,mfpart,pending,lognoteid) values(\"$date\",\"$techid\",\"$lpid\",1,\"$noteid\")");
|
||||
}
|
||||
|
||||
} else {
|
||||
// no part info was entered
|
||||
;
|
||||
@@ -498,70 +499,15 @@ if ($submit) {
|
||||
if ($delete) {
|
||||
format_message(0, "<strong>Note deleted.</strong> <a href=\"lognotes.php\">Return to main page.</a>");
|
||||
}
|
||||
echo "
|
||||
<form method=\"post\" action=\"logentry.php\">
|
||||
";
|
||||
if ($_SESSION['login']) {
|
||||
// generate template line
|
||||
echo "
|
||||
<table border=\"0\" cellpadding=\"10\"><tr>
|
||||
";
|
||||
// list user templates
|
||||
echo "
|
||||
<td>
|
||||
<select name=\"usertemplateid\" title=\"Select the user template you'd like to load and click the Load Template button. User template selection takes precedence.\">
|
||||
";
|
||||
if ($loadtemplate) $templatename=dblookup($db,"notetemplates","templateid","templatename",$usertemplateid);
|
||||
$templaterow=mysqli_query($db,"select * from notetemplates where tech=\"$techid\" order by templatename asc");
|
||||
if ($loadtemplate) {
|
||||
printf("<option value=\"%s\">%s</option>","0","Select user template");
|
||||
} else {
|
||||
printf("<option value=\"%s\" selected>%s</option>","0","Select user template");
|
||||
}
|
||||
while ($templateitem=mysqli_fetch_assoc($templaterow)) {
|
||||
if ($loadtemplate && ($templateitem["templateid"] == $usertemplateid)) {
|
||||
printf("<option value=\"%s\" selected>%s</option>",$templateitem["templateid"],$templateitem["templatename"]);
|
||||
} else {
|
||||
printf("<option value=\"%s\">%s</option>",$templateitem["templateid"],$templateitem["templatename"]);
|
||||
}
|
||||
}
|
||||
echo "
|
||||
</select> or
|
||||
";
|
||||
// list global templates
|
||||
echo "
|
||||
<select name=\"globaltemplateid\" title=\"Select the global template you'd like to load and click the Load Template button. User template selection takes precedence.\">
|
||||
";
|
||||
if ($loadtemplate) $templatename=dblookup($db,"notetemplates","templateid","templatename",$globaltemplateid);
|
||||
$templaterow=mysqli_query($db,"select * from notetemplates where tech=\"0\" order by templatename asc");
|
||||
if ($loadtemplate) {
|
||||
printf("<option value=\"%s\">%s</option>","0","Select global template");
|
||||
} else {
|
||||
printf("<option value=\"%s\" selected>%s</option>","0","Select global template");
|
||||
}
|
||||
while ($templateitem=mysqli_fetch_assoc($templaterow)) {
|
||||
if ($loadtemplate && ($templateitem["templateid"] == $globaltemplateid)) {
|
||||
printf("<option value=\"%s\" selected>%s</option>",$templateitem["templateid"],$templateitem["templatename"]);
|
||||
} else {
|
||||
printf("<option value=\"%s\">%s</option>",$templateitem["templateid"],$templateitem["templatename"]);
|
||||
}
|
||||
}
|
||||
echo "
|
||||
</select>
|
||||
";
|
||||
// show load button
|
||||
echo "
|
||||
<input type=\"submit\" name=\"loadtemplate\" value=\"Load Template\">
|
||||
</td>
|
||||
<td>
|
||||
<a href=\"templates.php\">Manage templates</a>
|
||||
</td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
";
|
||||
|
||||
if (array_key_exists('login', $_SESSION)) {
|
||||
// show the template selection line
|
||||
templateselect($techid, NULL);
|
||||
}
|
||||
|
||||
// start note entry section
|
||||
echo "
|
||||
<form method=\"post\" action=\"logentry.php\">
|
||||
<table border=\"0\" cellpadding=\"5\">
|
||||
<tr>
|
||||
<td align=\"center\" colspan=\"2\"><b>Date: </b>
|
||||
@@ -575,7 +521,8 @@ if ($isadmin) {
|
||||
<td><b>Tech: </b>
|
||||
<select name=\"efftechid\">
|
||||
";
|
||||
if ($techalpha) $torder="techname"; else $torder="techid";
|
||||
if ($techalpha) $torder = "techname";
|
||||
else $torder = "techid";
|
||||
$techrow = mysqli_query($db, "select * from techs order by $torder asc");
|
||||
while ($techitem = mysqli_fetch_assoc($techrow)) {
|
||||
if ($techitem["status"] == 1) {
|
||||
@@ -618,7 +565,8 @@ echo "
|
||||
<td colspan=\"2\"><b>Subject: </b>
|
||||
<select name=\"subject\">
|
||||
";
|
||||
if ($subjalpha) $sorder="subjectname"; else $sorder="subjectid";
|
||||
if ($subjalpha) $sorder = "subjectname";
|
||||
else $sorder = "subjectid";
|
||||
$subjrow = mysqli_query($db, "select * from subjects order by $sorder asc");
|
||||
while ($subjitem = mysqli_fetch_assoc($subjrow)) {
|
||||
if ($subjitem["status"] == 1) {
|
||||
@@ -671,15 +619,24 @@ $flagcount=1;
|
||||
|
||||
// display checkboxes for all the flags, selecting the ones that are set for this note/template
|
||||
while ($flagcheckbox = mysqli_fetch_assoc($flagslist)) {
|
||||
|
||||
if (in_array($flagcheckbox["flagid"], $theseflags)) {
|
||||
printf("<input type=\"checkbox\" name=\"flags[]\" value=\"%s\" checked><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
|
||||
printf(
|
||||
"<input type=\"checkbox\" name=\"flags[]\" value=\"%s\" checked><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],
|
||||
$flagcheckbox["flagcolor"],
|
||||
$flagcheckbox["flagname"],
|
||||
$flagcheckbox["flagsym"]
|
||||
);
|
||||
} else {
|
||||
$flagid = $flagcheckbox["flagid"];
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagid=\"$flagid\" and status=1"))) {
|
||||
printf("<input type=\"checkbox\" name=\"flags[]\" value=\"%s\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
|
||||
printf(
|
||||
"<input type=\"checkbox\" name=\"flags[]\" value=\"%s\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],
|
||||
$flagcheckbox["flagcolor"],
|
||||
$flagcheckbox["flagname"],
|
||||
$flagcheckbox["flagsym"]
|
||||
);
|
||||
}
|
||||
}
|
||||
if ($flagcount < $flagsperline) {
|
||||
@@ -690,9 +647,15 @@ while ($flagcheckbox=mysqli_fetch_assoc($flagslist)) {
|
||||
$flagcount = 1;
|
||||
}
|
||||
}
|
||||
if (mysqli_num_rows($flagslist)) {
|
||||
echo "
|
||||
<br><input type=\"checkbox\" name=\"syncflags\" value=\"1\"><font title=\"Set the selected flags on the other notes in the reference chain\">Set flags on reference chain</font>
|
||||
";
|
||||
} else {
|
||||
echo "
|
||||
<input type=\"hidden\" name=\"syncflags\" value=\"0\">
|
||||
";
|
||||
}
|
||||
|
||||
if ($add && $refto) $refstring = $refto;
|
||||
echo "
|
||||
@@ -720,18 +683,14 @@ if ($add) {
|
||||
<td align=\"center\"><input type=\"text\" name=\"partnums[$partline]\" size=\"20\"></td>
|
||||
<td align=\"center\"><input type=\"text\" name=\"sernums[$partline]\" size=\"20\"></td>
|
||||
<td align=\"center\"><select name=\"actions[$partline]\">
|
||||
<option value=\"select\">Select Action</option>
|
||||
<option value=\"$defaultaction\" selected>Select Action</option>
|
||||
";
|
||||
$actrow = mysqli_query($db, "select * from logpartactions");
|
||||
while ($actitem = mysqli_fetch_assoc($actrow)) {
|
||||
if ($actitem["status"] == 1) {
|
||||
if ($actitem["lpactionid"]==$defaultaction) {
|
||||
printf("<option value=\"%s\" selected>%s</option>",$actitem["lpactionid"],$actitem["lpactionname"]);
|
||||
} else {
|
||||
printf("<option value=\"%s\">%s</option>", $actitem["lpactionid"], $actitem["lpactionname"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "
|
||||
</select>
|
||||
</td>
|
||||
@@ -781,19 +740,28 @@ if ($edit) {
|
||||
<td align=\"center\">$epsn</td>
|
||||
<td align=\"center\">
|
||||
";
|
||||
$actrow=mysqli_query($db,"select * from logpartactions");
|
||||
while ($actitem=mysqli_fetch_assoc($actrow)) {
|
||||
if ($actitem["lpactionid"]==$defaultaction) {
|
||||
echo "$actitem[lpactionname]";
|
||||
}
|
||||
if ($defaultaction) {
|
||||
// an action was selected previously, so just display it
|
||||
$actname = dblookup($db, "logpartactions", "lpactionid", "lpactionname", $defaultaction);
|
||||
echo "$actname";
|
||||
}
|
||||
echo "
|
||||
</td>
|
||||
";
|
||||
// find maint form for this line and show link
|
||||
$mflinknum=mysqli_fetch_assoc(mysqli_query($db,"select maintformid from maintforms where lognoteid=\"$noteid\" and mfpart=\"$lpidvar\""))["maintformid"];
|
||||
echo "
|
||||
<td align=\"center\"><a href=\"maintformentry.php?mfedit=1&maintformid=$mflinknum\" title=\"Click to view/edit this maintenance form\">$mflinknum</a></td>
|
||||
<td align=\"center\">
|
||||
";
|
||||
$mflinkqry = mysqli_query($db, "select maintformid from maintforms where lognoteid=\"$noteid\" and mfpart=\"$lpidvar\"");
|
||||
if (mysqli_num_rows($mflinkqry)) {
|
||||
$mflinkdata = mysqli_fetch_assoc($mflinkqry);
|
||||
$mflinknum = $mflinkdata["maintformid"];
|
||||
echo "
|
||||
<a href=\"maintformentry.php?mfedit=1&maintformid=$mflinknum\" title=\"Click to view/edit this maintenance form\">$mflinknum</a>
|
||||
";
|
||||
}
|
||||
echo "
|
||||
</td>
|
||||
</tr>
|
||||
";
|
||||
}
|
||||
@@ -806,18 +774,14 @@ if ($edit) {
|
||||
<td align=\"center\"><input type=\"text\" name=\"partnums[$partline]\" size=\"20\"></td>
|
||||
<td align=\"center\"><input type=\"text\" name=\"sernums[$partline]\" size=\"20\"></td>
|
||||
<td align=\"center\"><select name=\"actions[$partline]\">
|
||||
<option value=\"select\">Select Action</option>
|
||||
<option value=\"$defaultaction\" selected>Select Action</option>
|
||||
";
|
||||
$actrow = mysqli_query($db, "select * from logpartactions");
|
||||
while ($actitem = mysqli_fetch_assoc($actrow)) {
|
||||
if ($actitem["status"] == 1) {
|
||||
if ($actitem["lpactionid"]==$defaultaction) {
|
||||
printf("<option value=\"%s\" selected>%s</option>",$actitem["lpactionid"],$actitem["lpactionname"]);
|
||||
} else {
|
||||
printf("<option value=\"%s\">%s</option>", $actitem["lpactionid"], $actitem["lpactionname"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "
|
||||
</select>
|
||||
</td>
|
||||
@@ -841,5 +805,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
|
||||
include("functions.php");
|
||||
|
||||
$print=$_REQUEST['print'];
|
||||
$tech=$_REQUEST['tech'];
|
||||
$pass=$_REQUEST['pass'];
|
||||
$login=$_REQUEST['login'];
|
||||
$cancel=$_REQUEST['cancel'];
|
||||
$print = $_REQUEST['print'] ?? NULL;
|
||||
$tech = $_REQUEST['tech'] ?? NULL;
|
||||
$pass = $_REQUEST['pass'] ?? NULL;
|
||||
$login = $_REQUEST['login'] ?? NULL;
|
||||
$cancel = $_REQUEST['cancel'] ?? NULL;
|
||||
|
||||
if ($cancel) {
|
||||
session_destroy();
|
||||
@@ -58,7 +58,6 @@ if ($login) {
|
||||
while ($admintech = mysqli_fetch_row($adminqry)[0]) {
|
||||
echo "$admintech <br>";
|
||||
}
|
||||
|
||||
}
|
||||
} else if ($cancel) {
|
||||
echo "
|
||||
@@ -72,7 +71,8 @@ if ($login) {
|
||||
<b>Tech: </b>
|
||||
<select name=\"tech\">
|
||||
";
|
||||
if ($techalpha) $torder="techname"; else $torder="techid";
|
||||
if ($techalpha) $torder = "techname";
|
||||
else $torder = "techid";
|
||||
$techrow = mysqli_query($db, "select * from techs order by $torder asc");
|
||||
while ($techitem = mysqli_fetch_assoc($techrow)) {
|
||||
if ($techitem["status"] == 1) {
|
||||
@@ -98,5 +98,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -32,7 +32,8 @@ if ($print) {
|
||||
if ($tgt_date == "") $tgt_date = $today;
|
||||
|
||||
// define shifttable_classic function
|
||||
function shifttable_classic($shift, $tgt_date, $db) {
|
||||
function shifttable_classic($shift, $tgt_date, $db)
|
||||
{
|
||||
// convert the shift number to a name for display
|
||||
$doparts = PARTS_FUNCTIONS;
|
||||
$showtime = SHOW_TS;
|
||||
@@ -89,7 +90,9 @@ function shifttable_classic($shift, $tgt_date, $db) {
|
||||
<td valign=\"top\">%s</td>
|
||||
<td valign=\"top\">%s</td>
|
||||
</tr>\n",
|
||||
$tablerow["lognoteid"],$tablerow["lognoteid"],$tablerow["time"],
|
||||
$tablerow["lognoteid"],
|
||||
$tablerow["lognoteid"],
|
||||
$tablerow["time"],
|
||||
$tname,
|
||||
$subjname,
|
||||
$fmtnote,
|
||||
@@ -104,7 +107,8 @@ function shifttable_classic($shift, $tgt_date, $db) {
|
||||
<td valign=\"top\">%s</td>
|
||||
<td valign=\"top\">%s</td>
|
||||
</tr>\n",
|
||||
$tablerow["lognoteid"],$tablerow["lognoteid"],
|
||||
$tablerow["lognoteid"],
|
||||
$tablerow["lognoteid"],
|
||||
$tname,
|
||||
$subjname,
|
||||
$fmtnote,
|
||||
@@ -121,7 +125,8 @@ function shifttable_classic($shift, $tgt_date, $db) {
|
||||
}
|
||||
|
||||
// define the shifttable_clean function
|
||||
function shifttable_clean($shift, $tgt_date, $db) {
|
||||
function shifttable_clean($shift, $tgt_date, $db)
|
||||
{
|
||||
// convert the shift number to a name for display
|
||||
$doparts = PARTS_FUNCTIONS;
|
||||
$showtime = SHOW_TS;
|
||||
@@ -177,7 +182,8 @@ function shifttable_clean($shift, $tgt_date, $db) {
|
||||
%s</b>
|
||||
<br>%s<br>
|
||||
<hr>\n",
|
||||
$tablerow["lognoteid"],$tablerow["lognoteid"],
|
||||
$tablerow["lognoteid"],
|
||||
$tablerow["lognoteid"],
|
||||
$tablerow["time"],
|
||||
$tname,
|
||||
$subjname,
|
||||
@@ -192,7 +198,8 @@ function shifttable_clean($shift, $tgt_date, $db) {
|
||||
%s</b>
|
||||
<br>%s<br>
|
||||
<hr>\n",
|
||||
$tablerow["lognoteid"],$tablerow["lognoteid"],
|
||||
$tablerow["lognoteid"],
|
||||
$tablerow["lognoteid"],
|
||||
$tname,
|
||||
$subjname,
|
||||
$refs,
|
||||
@@ -249,5 +256,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -11,8 +11,9 @@ include("functions.php");
|
||||
|
||||
if (isset($_SESSION['login'])) $techid = $_SESSION['login'];
|
||||
|
||||
$histdays=$_REQUEST['histdays'];
|
||||
$submit=$_REQUEST['submit'];
|
||||
$print = $_REQUEST['print'] ?? NULL;
|
||||
$histdays = $_REQUEST['histdays'] ?? NULL;
|
||||
$submit = $_REQUEST['submit'] ?? NULL;
|
||||
|
||||
$logname = LOG_NAME;
|
||||
$uidtext = UID_TEXT;
|
||||
@@ -28,7 +29,8 @@ if ($print) {
|
||||
}
|
||||
|
||||
// define pendtable function
|
||||
function pendtable($tech_id, $db) {
|
||||
function pendtable($tech_id, $db)
|
||||
{
|
||||
$uidtext = UID_TEXT;
|
||||
// print section header
|
||||
if ($tech_id) {
|
||||
@@ -88,14 +90,16 @@ function pendtable($tech_id, $db) {
|
||||
<td valign=\"top\">%s</td>
|
||||
<td align=\"center\" valign=\"top\">$notetag</td>
|
||||
</tr>",
|
||||
$pendrow["maintformid"],$pendrow["maintformid"],
|
||||
$pendrow["maintformid"],
|
||||
$pendrow["maintformid"],
|
||||
$pendrow["mfdate"],
|
||||
$tname,
|
||||
$uid,
|
||||
$partno,
|
||||
$serno,
|
||||
$partname,
|
||||
$noteidval,$noteidval
|
||||
$noteidval,
|
||||
$noteidval
|
||||
);
|
||||
} else {
|
||||
printf(
|
||||
@@ -108,13 +112,15 @@ function pendtable($tech_id, $db) {
|
||||
<td valign=\"top\">%s</td>
|
||||
<td align=\"center\" valign=\"top\">$notetag</td>
|
||||
</tr>",
|
||||
$pendrow["maintformid"],$pendrow["maintformid"],
|
||||
$pendrow["maintformid"],
|
||||
$pendrow["maintformid"],
|
||||
$pendrow["mfdate"],
|
||||
$uid,
|
||||
$partno,
|
||||
$serno,
|
||||
$partname,
|
||||
$noteidval,$noteidval
|
||||
$noteidval,
|
||||
$noteidval
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -124,7 +130,8 @@ function pendtable($tech_id, $db) {
|
||||
}
|
||||
|
||||
// define histtable function
|
||||
function histtable($hist_days,$db) {
|
||||
function histtable($hist_days, $db)
|
||||
{
|
||||
$uidtext = UID_TEXT;
|
||||
$dayopts = array(30, 90, 180, 365);
|
||||
// print section header
|
||||
@@ -186,14 +193,16 @@ function histtable($hist_days,$db) {
|
||||
<td valign=\"top\">%s</td>
|
||||
<td align=\"center\" valign=\"top\">$notetag</td>
|
||||
</tr>",
|
||||
$histrow["maintformid"],$histrow["maintformid"],
|
||||
$histrow["maintformid"],
|
||||
$histrow["maintformid"],
|
||||
$histrow["mfdate"],
|
||||
$tname,
|
||||
$uid,
|
||||
$partno,
|
||||
$serno,
|
||||
$partname,
|
||||
$noteidval,$noteidval
|
||||
$noteidval,
|
||||
$noteidval
|
||||
);
|
||||
}
|
||||
echo "
|
||||
@@ -226,5 +235,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,52 +17,54 @@ if (!$_SESSION['login'] && ($_REQUEST['mfadd'] || $_REQUEST['actionadd'])) {
|
||||
$loggedinas = $_SESSION['login'];
|
||||
$isadmin = dblookup($db, "techs", "techid", "admin", $loggedinas);
|
||||
|
||||
function getmfdata($maintformid) {
|
||||
function getmfdata($maintformid)
|
||||
{
|
||||
// pull maintenance form data from maintforms table
|
||||
global $db;
|
||||
$mfdata = mysqli_fetch_assoc(mysqli_query($db, "select * from maintforms where maintformid=\"$maintformid\""));
|
||||
return $mfdata;
|
||||
}
|
||||
|
||||
function getactiondata($maintactionid) {
|
||||
function getactiondata($maintactionid)
|
||||
{
|
||||
// pull maintenance action data from maintactions table
|
||||
global $db;
|
||||
$actiondata = mysqli_fetch_assoc(mysqli_query($db, "select * from maintactions where maintactionid=\"$maintactionid\""));
|
||||
return $actiondata;
|
||||
}
|
||||
|
||||
$print=$_REQUEST['print'];
|
||||
$print = $_REQUEST['print'] ?? NULL;
|
||||
|
||||
$maintformid=$_REQUEST['maintformid'];
|
||||
$lognoteid=$_REQUEST['lognoteid'];
|
||||
$mfdate=$_REQUEST['date'];
|
||||
$mftime=$_REQUEST['time'];
|
||||
$mfsubmit=$_REQUEST['mfsubmit'];
|
||||
$mfadd=$_REQUEST['mfadd'];
|
||||
$mfedit=$_REQUEST['mfedit'];
|
||||
$mfdelete=$_REQUEST['mfdelete'];
|
||||
$mfpartloc=$_REQUEST['mfpartloc'];
|
||||
$mfmalfunction=$_REQUEST['mfmalfunction'];
|
||||
$nha=$_REQUEST['nha'];
|
||||
$repord=$_REQUEST['repord'];
|
||||
$mfpart=$_REQUEST['mfpart'];
|
||||
$uid=$_REQUEST['uid'];
|
||||
$partnum=$_REQUEST['partnum'];
|
||||
$sernum=$_REQUEST['sernum'];
|
||||
$partname=$_REQUEST['partname'];
|
||||
$actionadd=$_REQUEST['actionadd'];
|
||||
$actionedit=$_REQUEST['actionedit'];
|
||||
$actiondelete=$_REQUEST['actiondelete'];
|
||||
$maintactionid=$_REQUEST['maintactionid'];
|
||||
$actiondate=$_REQUEST['actiondate'];
|
||||
$actiontime=$_REQUEST['actiontime'];
|
||||
$actiontech=$_REQUEST['actiontech'];
|
||||
$action=$_REQUEST['action'];
|
||||
$actionaddsubmit=$_REQUEST['actionaddsubmit'];
|
||||
$actioneditsubmit=$_REQUEST['actioneditsubmit'];
|
||||
$printfmt=$_REQUEST['printfmt'];
|
||||
if ($printfmt) $print=1;
|
||||
$flags=$_POST['flags'];
|
||||
$maintformid = $_REQUEST['maintformid'] ?? NULL;
|
||||
$lognoteid = $_REQUEST['lognoteid'] ?? NULL;
|
||||
$mfdate = $_REQUEST['date'] ?? NULL;
|
||||
$mftime = $_REQUEST['time'] ?? NULL;
|
||||
$mfsubmit = $_REQUEST['mfsubmit'] ?? NULL;
|
||||
$mfadd = $_REQUEST['mfadd'] ?? NULL;
|
||||
$mfedit = $_REQUEST['mfedit'] ?? NULL;
|
||||
$mfdelete = $_REQUEST['mfdelete'] ?? NULL;
|
||||
$mfpartloc = $_REQUEST['mfpartloc'] ?? NULL;
|
||||
$mfmalfunction = $_REQUEST['mfmalfunction'] ?? NULL;
|
||||
$nha = $_REQUEST['nha'] ?? NULL;
|
||||
$repord = $_REQUEST['repord'] ?? NULL;
|
||||
$mfpart = $_REQUEST['mfpart'] ?? NULL;
|
||||
$uid = $_REQUEST['uid'] ?? NULL;
|
||||
$partnum = $_REQUEST['partnum'] ?? NULL;
|
||||
$sernum = $_REQUEST['sernum'] ?? NULL;
|
||||
$partname = $_REQUEST['partname'] ?? NULL;
|
||||
$actionadd = $_REQUEST['actionadd'] ?? NULL;
|
||||
$actionedit = $_REQUEST['actionedit'] ?? NULL;
|
||||
$actiondelete = $_REQUEST['actiondelete'] ?? NULL;
|
||||
$maintactionid = $_REQUEST['maintactionid'] ?? NULL;
|
||||
$actiondate = $_REQUEST['actiondate'] ?? NULL;
|
||||
$actiontime = $_REQUEST['actiontime'] ?? NULL;
|
||||
$actiontech = $_REQUEST['actiontech'] ?? NULL;
|
||||
$action = $_REQUEST['action'] ?? NULL;
|
||||
$actionaddsubmit = $_REQUEST['actionaddsubmit'] ?? NULL;
|
||||
$actioneditsubmit = $_REQUEST['actioneditsubmit'] ?? NULL;
|
||||
$printfmt = $_REQUEST['printfmt'] ?? NULL;
|
||||
if ($printfmt) $print = TRUE;
|
||||
$flags = $_POST['flags'] ?? [];
|
||||
|
||||
$logname = LOG_NAME;
|
||||
$uidtext = UID_TEXT;
|
||||
@@ -78,48 +80,49 @@ if ($printfmt) {
|
||||
framework("begin", "", "", $print);
|
||||
} else if ($mfedit) {
|
||||
framework("begin", "$logname", "Maintenance Form Edit", $print);
|
||||
if ($loggedinas) $mfauthorized=1;
|
||||
if ($loggedinas) $mfauthorized = TRUE;
|
||||
} else if ($mfdelete) {
|
||||
framework("begin", "$logname", "Maintenance Form Edit", $print);
|
||||
$mfowner = dblookup($db, "maintforms", "maintformid", "mftech", $maintformid);
|
||||
if (($loggedinas==$mfowner) || $isadmin) $mfauthorized=1;
|
||||
if (($loggedinas == $mfowner) || $isadmin) $mfauthorized = TRUE;
|
||||
} else if ($actionadd) {
|
||||
framework("begin", "$logname", "Maintenance Action Entry", $print);
|
||||
$mfowner = dblookup($db, "maintforms", "maintformid", "mftech", $maintformid);
|
||||
if ($loggedinas) {
|
||||
$mfauthorized=1;
|
||||
$actionauthorized=1;
|
||||
$mfauthorized = TRUE;
|
||||
$actionauthorized = TRUE;
|
||||
}
|
||||
} else if ($actionedit || $actiondelete) {
|
||||
framework("begin", "$logname", "Maintenance Action Edit", $print);
|
||||
$mfowner = dblookup($db, "maintforms", "maintformid", "mftech", $maintformid);
|
||||
if ($loggedinas) $mfauthorized=1;
|
||||
if ($loggedinas) $mfauthorized = TRUE;
|
||||
$actionowner = dblookup($db, "maintactions", "maintactionid", "actiontech", $maintactionid);
|
||||
if (($loggedinas==$actionowner) || $isadmin) $actionauthorized=1;
|
||||
if (($loggedinas == $actionowner) || $isadmin) $actionauthorized = TRUE;
|
||||
} else {
|
||||
$mfadd=1;
|
||||
$mfadd = TRUE;
|
||||
framework("begin", "$logname", "Maintenance Form Entry", $print);
|
||||
$mftech = $loggedinas;
|
||||
$mfauthorized=1;
|
||||
$mfauthorized = TRUE;
|
||||
}
|
||||
|
||||
// ******** begin database manipulation ********
|
||||
|
||||
//var_dump($_REQUEST);
|
||||
|
||||
$pdatamismatch = NULL;
|
||||
if ((($mfedit || $actionadd || $actionedit) && ! $mfsubmit) || $printfmt) {
|
||||
// pull mf data from database
|
||||
$mftoedit = getmfdata($maintformid);
|
||||
$partdatainput=array();
|
||||
$partdatainput = [];
|
||||
if ($mftoedit['mfpart']) $partdatainput['partid'] = $mftoedit['mfpart'];
|
||||
if ($uid) $partdatainput['uid'] = $uid;
|
||||
if ($partnum) $partdatainput['partnum'] = $partnum;
|
||||
if ($sernum) $partdatainput['sernum'] = $sernum;
|
||||
$partinfo = get_part_data($partdatainput);
|
||||
if ($partinfo['result'] == 2) {
|
||||
$pdatamismatch=1;
|
||||
$pdatamismatch = TRUE;
|
||||
} else {
|
||||
unset($pdatamismatch);
|
||||
$pdatamismatch = FALSE;
|
||||
if ($partinfo['partid']) $mfpart = $partinfo['partid'];
|
||||
if ($partinfo['uid']) $uid = $partinfo['uid'];
|
||||
if ($partinfo['partnum']) $partnum = $partinfo['partnum'];
|
||||
@@ -132,6 +135,9 @@ if ($mfadd) {
|
||||
if ($mfsubmit) {
|
||||
// add the entry if submit is pressed
|
||||
if ($mfmalfunction && ($uid || ($partnum && $sernum))) {
|
||||
// sanitize and fix blank date and time
|
||||
$mfdate = fix_date($mfdate);
|
||||
$mftime = fix_time($mftime);
|
||||
// determine whether supplied date is future or past
|
||||
$datediff = mysqli_fetch_row(mysqli_query($db, "select datediff(\"$mfdate\",CURRENT_DATE)"));
|
||||
// if future, set time to 00:00:01, if past, set to 23:59:59
|
||||
@@ -157,9 +163,10 @@ if ($mfadd) {
|
||||
mysqli_query($db, "insert into parts(uid,partnum,sernum,partname) values(\"$uid\",\"$partnum\",\"$sernum\",\"$partname\")");
|
||||
$mfpart = mysqli_insert_id($db);
|
||||
} else if ($partinfo['result'] == 2) {
|
||||
$pdatamismatch=1;
|
||||
$pdatamismatch = TRUE;
|
||||
} else {
|
||||
// if it is in parts table, get partid for this record
|
||||
$pdatamismatch = FALSE;
|
||||
$mfpart = $partinfo['partid'];
|
||||
}
|
||||
if ($uid == "" || $partnum == "" || $sernum == "") {
|
||||
@@ -171,15 +178,16 @@ if ($mfadd) {
|
||||
|
||||
// add the record to maintforms
|
||||
if (! $pdatamismatch) {
|
||||
$lognoteid = ($lognoteid == NULL) ? 0 : $lognoteid;
|
||||
mysqli_query($db, "insert into maintforms(mfdate,mftime,mftech,mfpart,mfpartloc,mfmalfunction,nha,repord,lognoteid,pending)
|
||||
values (\"$mfdate\", \"$mftime\",\"$loggedinas\",\"$mfpart\",\"$mfpartloc\",\"$mfmalfunction\",\"$nha\",\"$repord\",\"$lognoteid\",\"$pending\")");
|
||||
$newmaintformid = mysqli_insert_id($db);
|
||||
$mfidtoprint = $newmaintformid;
|
||||
|
||||
// add this maintformid to the appropriate flag_tables
|
||||
foreach ($flags as $flagtblnum) {
|
||||
$flagtblname="flag_".$flagtblnum;
|
||||
mysqli_query($db,"insert into $flagtblname(target,id) values(\"maintforms\",\"$newmaintformid\")");
|
||||
// update the flagmap table
|
||||
foreach ($flags as $thisflag) {
|
||||
// set flag for this maintenance form
|
||||
mysqli_query($db, "insert into flagmap(flagid,maintformid) values(\"$thisflag\",\"$newmaintformid\")");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -209,20 +217,12 @@ if ($mfedit) {
|
||||
if (! $pdatamismatch) {
|
||||
mysqli_query($db, "update maintforms set mfdate=\"$mfdate\", mftime=\"$mftime\", mfpart=\"$mfpart\", mfpartloc=\"$mfpartloc\",
|
||||
mfmalfunction=\"$mfmalfunction\", nha=\"$nha\", repord=\"$repord\", lognoteid=\"$lognoteid\", pending=\"$pending\" where maintformid=\"$maintformid\"");
|
||||
// update the appropriate flag_tables
|
||||
$flagids=mysqli_query($db,"select flagid from flags");
|
||||
while ($thisflagid=mysqli_fetch_row($flagids)) {
|
||||
$thisflag_tbl="flag_".$thisflagid[0];
|
||||
if ($flags[0]=="") $flags=[];
|
||||
if (in_array($thisflagid[0],$flags)) {
|
||||
if(!mysqli_num_rows(mysqli_query($db,"select id from $thisflag_tbl where target=\"maintforms\" and id=\"$maintformid\""))) {
|
||||
mysqli_query($db,"insert into $thisflag_tbl(target,id) values(\"maintforms\",\"$maintformid\")");
|
||||
}
|
||||
} else {
|
||||
if(mysqli_num_rows(mysqli_query($db,"select id from $thisflag_tbl where target=\"maintforms\" and id=\"$maintformid\""))) {
|
||||
mysqli_query($db,"delete from $thisflag_tbl where target=\"maintforms\" and id=\"$maintformid\"");
|
||||
}
|
||||
}
|
||||
|
||||
// update the flagmap table
|
||||
mysqli_query($db, "delete from flagmap where maintformid=\"$maintformid\"");
|
||||
foreach ($flags as $thisflag) {
|
||||
// set flag for this maintenance form
|
||||
mysqli_query($db, "insert into flagmap(flagid,maintformid) values(\"$thisflag\",\"$maintformid\")");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -233,17 +233,16 @@ if ($mfedit) {
|
||||
if ($mfdelete && $mfauthorized) {
|
||||
// delete from maintforms table
|
||||
mysqli_query($db, "delete from maintforms where maintformid=\"$maintformid\"");
|
||||
// delete occurances from the flag_ tables
|
||||
$flagids=mysqli_query($db,"select flagid from flags");
|
||||
while ($thisflagid=mysqli_fetch_row($flagids)) {
|
||||
$delflag_tbl="flag_".$thisflagid[0];
|
||||
mysqli_query($db,"delete from $delflag_tbl where target=\"maintforms\" and id=\"$maintformid\"");
|
||||
}
|
||||
// delete occurances from the flagmap table
|
||||
mysqli_query($db, "delete from flagmap where maintformid=\"$maintformid\"");
|
||||
}
|
||||
|
||||
if ($actionadd) {
|
||||
if ($actionaddsubmit) {
|
||||
if ($action) {
|
||||
// sanitize and fix blank date and time
|
||||
$actiondate = fix_date($actiondate);
|
||||
$actiontime = fix_time($actiontime);
|
||||
// determine whether supplied date is future or past
|
||||
$datediff = mysqli_fetch_row(mysqli_query($db, "select datediff(\"$actiondate\",CURRENT_DATE)"));
|
||||
// if future, set time to 00:00:01, if past, set to 23:59:59
|
||||
@@ -268,6 +267,9 @@ if ($actionadd) {
|
||||
if ($actionedit) {
|
||||
if ($actioneditsubmit && $actionauthorized) {
|
||||
// update the action
|
||||
// sanitize and fix blank date and time
|
||||
$actiondate = fix_date($actiondate);
|
||||
$actiontime = fix_time($actiontime);
|
||||
// remove cruft from action text
|
||||
$action = htmlentities($action);
|
||||
$action = addslashes($action);
|
||||
@@ -324,7 +326,8 @@ if (($mfedit || $actionadd || $actionedit) && ! ($mfsubmit || $actionaddsubmit |
|
||||
$sernum = $partinfo['sernum'];
|
||||
$partname = $partinfo['partname'];
|
||||
$pluresult = $partinfo['result'];
|
||||
if ($pluresult==2) $pdatamismatch=1; else unset($pdatamismatch);
|
||||
if ($pluresult == 2) $pdatamismatch = TRUE;
|
||||
else $pdatamismatch = FALSE;
|
||||
}
|
||||
|
||||
$techname = dblookup($db, "techs", "techid", "techname", $mftech);
|
||||
@@ -384,19 +387,21 @@ if ($printfmt) {
|
||||
<b><u>Flags</u></b><br>
|
||||
<table width=\"100%\" border=\"0\">
|
||||
";
|
||||
// get an array of flagids set for this maintformid
|
||||
|
||||
// create an array called theseflags of flagids set for this maintformid
|
||||
$allflags = mysqli_query($db, "select flagid from flags");
|
||||
unset($theseflags);
|
||||
$theseflags = [];
|
||||
while ($thisflag = mysqli_fetch_row($allflags)) {
|
||||
$thisflagtbl="flag_".$thisflag[0];
|
||||
if (mysqli_num_rows(mysqli_query($db,"select id from $thisflagtbl where target=\"maintforms\" and id=\"$maintformid\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select id from flagmap where flagid=\"$thisflag[0]\" and maintformid=\"$maintformid\""))) {
|
||||
$theseflags[] = $thisflag[0];
|
||||
}
|
||||
}
|
||||
// display flag symbols for set flags
|
||||
$flagslist = mysqli_query($db, "select * from flags");
|
||||
while ($flagsymbol = mysqli_fetch_assoc($flagslist)) {
|
||||
if ($theseflags[0] == "") $theseflags = [];
|
||||
if (in_array($flagsymbol["flagid"],$theseflags)) {
|
||||
if (!empty($theseflags) && in_array($flagsymbol["flagid"], $theseflags)) {
|
||||
echo $flagsymbol['flagsym'] . " ";
|
||||
}
|
||||
}
|
||||
@@ -470,13 +475,12 @@ if ($printfmt) {
|
||||
<tr><td><textarea rows=\"4\" cols=\"65\" name=\"mfmalfunction\" wrap=\"soft\">$mfmalfunction</textarea></td></tr>
|
||||
<tr><td>
|
||||
";
|
||||
// get an array of flagids set for this maintformid
|
||||
// create an array called theseflags of flagids set for this maintformid
|
||||
$allflags = mysqli_query($db, "select flagid from flags");
|
||||
unset($theseflags);
|
||||
$theseflags = [];
|
||||
while ($thisflag = mysqli_fetch_row($allflags)) {
|
||||
$thisflagtbl="flag_".$thisflag[0];
|
||||
if (mysqli_num_rows(mysqli_query($db,"select id from $thisflagtbl where target=\"maintforms\" and id=\"$maintformid\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select id from flagmap where flagid=\"$thisflag[0]\" and maintformid=\"$maintformid\""))) {
|
||||
$theseflags[] = $thisflag[0];
|
||||
}
|
||||
}
|
||||
@@ -488,15 +492,25 @@ if ($printfmt) {
|
||||
$flagsperline = 8;
|
||||
$flagcount = 1;
|
||||
while ($flagcheckbox = mysqli_fetch_assoc($flagslist)) {
|
||||
if ($theseflags[0]=="") $theseflags=[];
|
||||
//if ($theseflags[0]=="") $theseflags=[];
|
||||
if (in_array($flagcheckbox["flagid"], $theseflags)) {
|
||||
printf("<input type=\"checkbox\" name=\"flags[]\" value=\"%s\" checked><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
|
||||
printf(
|
||||
"<input type=\"checkbox\" name=\"flags[]\" value=\"%s\" checked><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],
|
||||
$flagcheckbox["flagcolor"],
|
||||
$flagcheckbox["flagname"],
|
||||
$flagcheckbox["flagsym"]
|
||||
);
|
||||
} else {
|
||||
$flagid = $flagcheckbox["flagid"];
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagid=\"$flagid\" and status=1"))) {
|
||||
printf("<input type=\"checkbox\" name=\"flags[]\" value=\"%s\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
|
||||
printf(
|
||||
"<input type=\"checkbox\" name=\"flags[]\" value=\"%s\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],
|
||||
$flagcheckbox["flagcolor"],
|
||||
$flagcheckbox["flagname"],
|
||||
$flagcheckbox["flagsym"]
|
||||
);
|
||||
}
|
||||
}
|
||||
if ($flagcount < $flagsperline) {
|
||||
@@ -658,5 +672,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -17,17 +17,17 @@ if (!isset($_SESSION['login'])) {
|
||||
$loggedinas = $_SESSION['login'];
|
||||
$isadmin = dblookup($db, "techs", "techid", "admin", $loggedinas);
|
||||
|
||||
$print=$_REQUEST['print'];
|
||||
$add=$_REQUEST['add'];
|
||||
$edit=$_REQUEST['edit'];
|
||||
$delete=$_REQUEST['delete'];
|
||||
$print = $_REQUEST['print'] ?? NULL;
|
||||
$add = $_REQUEST['add'] ?? NULL;
|
||||
$edit = $_REQUEST['edit'] ?? NULL;
|
||||
$delete = $_REQUEST['delete'] ?? NULL;
|
||||
|
||||
$partid=$_REQUEST['partid'];
|
||||
$uid=$_REQUEST['uid'];
|
||||
$partnum=$_REQUEST['partnum'];
|
||||
$sernum=$_REQUEST['sernum'];
|
||||
$partname=$_REQUEST['partname'];
|
||||
$submit=$_REQUEST['submit'];
|
||||
$partid = $_REQUEST['partid'] ?? NULL;
|
||||
$uid = $_REQUEST['uid'] ?? NULL;
|
||||
$partnum = $_REQUEST['partnum'] ?? NULL;
|
||||
$sernum = $_REQUEST['sernum'] ?? NULL;
|
||||
$partname = $_REQUEST['partname'] ?? NULL;
|
||||
$submit = $_REQUEST['submit'] ?? NULL;
|
||||
|
||||
$logname = LOG_NAME;
|
||||
$uidtext = UID_TEXT;
|
||||
@@ -96,13 +96,13 @@ $partdatainput=array();
|
||||
$partdatainput['partid'] = $partid;
|
||||
$partinfo = get_part_data($partdatainput);
|
||||
if ($partinfo['result'] == 2) {
|
||||
$pdatamismatch=1;
|
||||
$pdatamismatch = TRUE;
|
||||
} else {
|
||||
unset($pdatamismatch);
|
||||
if ($partinfo['uid']) $uid=$partinfo['uid'];
|
||||
if ($partinfo['partnum']) $partnum=$partinfo['partnum'];
|
||||
if ($partinfo['sernum']) $sernum=$partinfo['sernum'];
|
||||
if ($partinfo['partname']) $partname=$partinfo['partname'];
|
||||
$pdatamismatch = FALSE;
|
||||
$uid = (array_key_exists('uid', $partinfo)) ? $partinfo['uid'] : NULL;
|
||||
$partnum = (array_key_exists('partnum', $partinfo)) ? $partinfo['partnum'] : NULL;
|
||||
$sernum = (array_key_exists('sernum', $partinfo)) ? $partinfo['sernum'] : NULL;
|
||||
$partname = (array_key_exists('partname', $partinfo)) ? $partinfo['partname'] : NULL;
|
||||
}
|
||||
if ($delete) {
|
||||
if ($inmaintforms) {
|
||||
@@ -172,5 +172,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -10,15 +10,15 @@
|
||||
include("functions.php");
|
||||
|
||||
if (isset($_SESSION['login'])) {
|
||||
$loggedin=1;
|
||||
$loggedin = TRUE;
|
||||
} else {
|
||||
unset($loggedin);
|
||||
$loggedin = FALSE;
|
||||
}
|
||||
|
||||
$print=$_REQUEST['print'];
|
||||
$add=$_REQUEST['add'];
|
||||
$sort=$_REQUEST['sort'];
|
||||
$order=$_REQUEST['order'];
|
||||
$print = $_REQUEST['print'] ?? NULL;
|
||||
$add = $_REQUEST['add'] ?? NULL;
|
||||
$sort = $_REQUEST['sort'] ?? NULL;
|
||||
$order = $_REQUEST['order'] ?? NULL;
|
||||
|
||||
$logname = LOG_NAME;
|
||||
$uidtext = UID_TEXT;
|
||||
@@ -79,7 +79,8 @@ while ($partline=mysqli_fetch_assoc($partqry)) {
|
||||
$pluidtxt = $partline['uid'];
|
||||
}
|
||||
if ($loggedin) {
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td>
|
||||
<a href=\"partentry.php?edit=1&partid=%s\" title=\"Edit this part\">%s</a>
|
||||
@@ -87,13 +88,15 @@ while ($partline=mysqli_fetch_assoc($partqry)) {
|
||||
<td>%s</td>
|
||||
<td>%s</td>
|
||||
<td>%s</td>",
|
||||
$partline['partid'],$pluidtxt,
|
||||
$partline['partid'],
|
||||
$pluidtxt,
|
||||
$partline['partnum'],
|
||||
$partline['sernum'],
|
||||
$partline['partname']
|
||||
);
|
||||
} else {
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td>%s</td>
|
||||
<td>%s</td>
|
||||
@@ -119,5 +122,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -54,34 +54,34 @@ if(!$print){
|
||||
// do error checking
|
||||
// test for name supplied
|
||||
if (strlen(trim($name))) {
|
||||
$namesuppld=1;
|
||||
$namesuppld = TRUE;
|
||||
} else {
|
||||
$namesuppld=0;
|
||||
$namesuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Tech name cannot be blank.<br>";
|
||||
}
|
||||
// test for name unique
|
||||
if (mysqli_num_rows(mysqli_query($db, "select techid from techs where techname=\"$name\" and techid!=\"$techid\""))) {
|
||||
if (mysqli_num_rows(mysqli_query($db, "select techid from techs where techname=\"$name\""))) {
|
||||
$nameunique=0;
|
||||
$nameunique = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> Tech name already exists.<br>";
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
} else {
|
||||
$nameunique=1;
|
||||
$nameunique = TRUE;
|
||||
}
|
||||
// test for matching passwords
|
||||
if ($pass != "password_is_unchanged") {
|
||||
if ($pass == $passconf) {
|
||||
$passmatch=1;
|
||||
$passmatch = TRUE;
|
||||
$passhash = password_hash($pass, PASSWORD_DEFAULT);
|
||||
$namepassupdqry = ("update techs set techname=\"$name\",techpass=\"$passhash\" where techid=\"$techid\"");
|
||||
} else {
|
||||
$passmatch=0;
|
||||
$passmatch = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> The passwords you supplied don't match.<br>";
|
||||
}
|
||||
} else {
|
||||
$passmatch=1;
|
||||
$passmatch = TRUE;
|
||||
$namepassupdqry = "update techs set techname=\"$name\" where techid=\"$techid\"";
|
||||
}
|
||||
if ($namesuppld && $nameunique && $passmatch) {
|
||||
@@ -91,14 +91,17 @@ if(!$print){
|
||||
}
|
||||
if ($updatedisplay) {
|
||||
// display settings
|
||||
if ($display_showts) $display_showts=1; else $display_showts=0;
|
||||
if ($display_techalpha=="a") $display_techalpha=1; else $display_techalpha=0;
|
||||
if ($display_subjalpha=="a") $display_subjalpha=1; else $display_subjalpha=0;
|
||||
if ($display_showts) $display_showts = 1;
|
||||
else $display_showts = 0;
|
||||
if ($display_techalpha == "a") $display_techalpha = 1;
|
||||
else $display_techalpha = 0;
|
||||
if ($display_subjalpha == "a") $display_subjalpha = 1;
|
||||
else $display_subjalpha = 0;
|
||||
// test for urlchunk supplied
|
||||
if (strlen(trim($display_urlchunk))) {
|
||||
$chunksuppld=1;
|
||||
$chunksuppld = TRUE;
|
||||
} else {
|
||||
$chunksuppld=0;
|
||||
$chunksuppld = FALSE;
|
||||
echo "<img src=\"icons/exclamation-red.png\" border=\"0\"> URL chunk size cannot be blank.<br>";
|
||||
}
|
||||
if ($chunksuppld) {
|
||||
@@ -113,6 +116,8 @@ if(!$print){
|
||||
// color settings
|
||||
$hexcolor = "#" . ltrim($hexcolor);
|
||||
putsetting($modcolor, $hexcolor, $techid);
|
||||
$currentpage = $_SERVER['PHP_SELF'];
|
||||
header("Refresh: .1; url=$currentpage");
|
||||
}
|
||||
if ($resetcustom) mysqli_query($db, "delete from customs where customtech=\"$techid\"");
|
||||
|
||||
@@ -294,5 +299,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
include("functions.php");
|
||||
|
||||
$print = $_REQUEST['print'] ?? "";
|
||||
$chainnote=$_REQUEST['chainnote'];
|
||||
$chainnote = $_REQUEST['chainnote'] ?? NULL;
|
||||
|
||||
$logname = LOG_NAME;
|
||||
|
||||
@@ -70,20 +70,9 @@ while($mptr<count($master)) {
|
||||
}
|
||||
}
|
||||
|
||||
//$allflagqry=mysqli_query($db,"select flagid from flags");
|
||||
//while ($allflagids=mysqli_fetch_row($allflagqry)) {
|
||||
//$flagid=$allflagids[0];
|
||||
//$flag_tbl="flag_".$flagid;
|
||||
//if (mysqli_num_rows(mysqli_query($db,"select id from $flag_tbl where target=\"lognotes\" and id=\"$noteid\""))) {
|
||||
//$flagparam=mysqli_fetch_assoc(mysqli_query($db,"select * from flags where flagid=\"$flagid\""));
|
||||
//$flagcolor=$flagparam["flagcolor"];
|
||||
//$flagsym=$flagparam["flagsym"];
|
||||
//$flagstring=$flagstring."<font color=\"$flagcolor\">$flagsym</font> ";
|
||||
//}
|
||||
//}
|
||||
|
||||
if ($flagstring) $fmtnote = $fmtnote . "<br>" . $flagstring;
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"logentry.php?edit=1¬eid=%s\">%s</a></td>
|
||||
<td>%s / %s</td>
|
||||
@@ -93,13 +82,16 @@ while($mptr<count($master)) {
|
||||
<td>%s</td>
|
||||
<td>%s</td>
|
||||
</tr>",
|
||||
$tablerow["lognoteid"],$tablerow["lognoteid"],
|
||||
$tablerow["date"],$tablerow["time"],
|
||||
$tablerow["lognoteid"],
|
||||
$tablerow["lognoteid"],
|
||||
$tablerow["date"],
|
||||
$tablerow["time"],
|
||||
$shname,
|
||||
$tname,
|
||||
$subjname,
|
||||
$fmtnote,
|
||||
$refs);
|
||||
$refs
|
||||
);
|
||||
} else {
|
||||
printf("<tr><td colspan=\"7\"><font color=\"red\">Note Id <b> %s</b> has been deleted and cannot be displayed.</font></td></tr>\n", $master[$mptr]);
|
||||
}
|
||||
@@ -111,5 +103,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/*
|
||||
blankpage.php
|
||||
schedmaint.php
|
||||
OpenLog Online Logbook
|
||||
Copyright (C) 2026 Rod Wright
|
||||
|
||||
@@ -73,9 +73,9 @@ $errorstack=array();
|
||||
if ($action) {
|
||||
if ($complete) {
|
||||
// sanitize user input
|
||||
$completedate=mysqli_real_escape_string($db,$completedate);
|
||||
$completedate = fix_date($completedate);
|
||||
// update events
|
||||
mysqli_query($db,"update events set last_date=\"$completedate\", deferred_flag=0, deferred_date=\"0000-00-00\" where eventid=\"$id\"");
|
||||
mysqli_query($db, "update events set last_date=\"$completedate\", deferred_flag=0, deferred_date=\"0001-01-01\" where eventid=\"$id\"");
|
||||
if ($addlognote) {
|
||||
$compltaskname = mysqli_fetch_row(mysqli_query($db, "select tasks.taskname from tasks,events where events.eventid=\"$id\" and tasks.taskid=events.task"))[0];
|
||||
$compldevicename = mysqli_fetch_row(mysqli_query($db, "select devices.devicename from devices,events where events.eventid=\"$id\" and devices.deviceid=events.device"))[0];
|
||||
@@ -88,6 +88,7 @@ if ($action) {
|
||||
}
|
||||
}
|
||||
if ($defer) {
|
||||
$deferuntil = fix_date($deferuntil);
|
||||
// update events
|
||||
mysqli_query($db, "update events set deferred_flag=1, deferred_date=\"$deferuntil\" where eventid=\"$id\"");
|
||||
}
|
||||
@@ -110,9 +111,12 @@ if ($add) {
|
||||
$errorstack[] = "<img src=\"icons/exclamation-red.png\" border=\"0\"> You didn't select a device.<br>";
|
||||
}
|
||||
// sanitize text data
|
||||
$start_date=mysqli_real_escape_string($db,$start_date);
|
||||
$last_date=mysqli_real_escape_string($db,$last_date);
|
||||
$deferred_date=mysqli_real_escape_string($db,$deferred_date);
|
||||
if ($start_date == NULL) $start_date = $today;
|
||||
if ($last_date == NULL) $last_date = "0001-01-01";
|
||||
if ($deferred_date == NULL) $deferred_date = "0001-01-01";
|
||||
$start_date = fix_date($start_date);
|
||||
$last_date = fix_date($last_date);
|
||||
$deferred_date = fix_date($deferred_date);
|
||||
if ($taskselected && $deviceselected) {
|
||||
// determine if device represents a group and break out individual devices
|
||||
if (dblookup($db, "devices", "deviceid", "group_flag", $device)) {
|
||||
@@ -126,9 +130,6 @@ if ($add) {
|
||||
}
|
||||
// run through the memberlist and modify the table
|
||||
foreach ($memberlist as $memberdev) {
|
||||
if ($start_date==NULL) $start_date=$today;
|
||||
if ($last_date==NULL) $last_date="0000-00-00";
|
||||
if ($deferred_date==NULL) $deferred_date="0000-00-00";
|
||||
$addqry = ("insert into events(task,device,start_date,last_date,deferred_flag,deferred_date,active_flag)
|
||||
values(\"$task\",\"$memberdev\",\"$start_date\",\"$last_date\",\"$deferred_flag\",\"$deferred_date\",\"$active_flag\")");
|
||||
mysqli_query($db, $addqry);
|
||||
@@ -199,13 +200,13 @@ if ($edit) {
|
||||
if ($update) {
|
||||
// do error checking
|
||||
// sanitize text data
|
||||
$start_date=mysqli_real_escape_string($db,$start_date);
|
||||
$last_date=mysqli_real_escape_string($db,$last_date);
|
||||
$deferred_date=mysqli_real_escape_string($db,$deferred_date);
|
||||
// update the tasks table
|
||||
if ($start_date == NULL) $start_date = $today;
|
||||
if ($last_date==NULL) $last_date="0000-00-00";
|
||||
if ($deferred_date==NULL) $deferred_date="0000-00-00";
|
||||
if ($last_date == NULL) $last_date = "0001-01-01";
|
||||
if ($deferred_date == NULL) $deferred_date = "0001-01-01";
|
||||
$start_date = fix_date($start_date);
|
||||
$last_date = fix_date($last_date);
|
||||
$deferred_date = fix_date($deferred_date);
|
||||
// update the tasks table
|
||||
mysqli_query($db, "update events
|
||||
set task=\"$task\",device=\"$device\",start_date=\"$start_date\",last_date=\"$last_date\",deferred_flag=\"$deferred_flag\",
|
||||
deferred_date=\"$deferred_date\",active_flag=\"$active_flag\"
|
||||
@@ -404,9 +405,9 @@ if ($action) {
|
||||
} else {
|
||||
$deferredtag = "<input type=\"checkbox\" name=\"deferred_flag\" value=\"1\">";
|
||||
}
|
||||
if ($start_date=="0000-00-00") $start_date=$today;
|
||||
if ($last_date=="0000-00-00") $last_date="";
|
||||
if ($deferred_date=="0000-00-00") $deferred_date=$tomorrow;
|
||||
if ($start_date == "0001-01-01") $start_date = $today;
|
||||
//if ($last_date == "0001-01-01") $last_date = "";
|
||||
if ($deferred_date == "0001-01-01") $deferred_date = $tomorrow;
|
||||
$deferuntiltag = "<input type=\"text\" name=\"deferred_date\" id=\"deferdatepicker\" size=\"10\" maxlength=\"10\" value=\"$deferred_date\" title=\"Format: YYYY-MM-DD\">";
|
||||
$startdatetag = "<input type=\"text\" name=\"start_date\" id=\"startdatepicker\" size=\"10\" maxlength=\"10\" value=\"$start_date\" title=\"Format: YYYY-MM-DD\">";
|
||||
$lastdatetag = "<input type=\"text\" name=\"last_date\" id=\"completedatepicker\" size=\"10\" maxlength=\"10\" value=\"$last_date\" title=\"Format: YYYY-MM-DD\">";
|
||||
@@ -487,9 +488,9 @@ if ($action) {
|
||||
";
|
||||
while ($tablerow = mysqli_fetch_assoc($existingdata)) {
|
||||
extract($tablerow);
|
||||
if ($start_date=="0000-00-00") $start_date=$today;
|
||||
if ($last_date=="0000-00-00") $last_date="";
|
||||
if ($deferred_date=="0000-00-00") $deferred_date="";
|
||||
if ($start_date == "0001-01-01") $start_date = $today;
|
||||
if ($last_date == "0001-01-01") $last_date = "";
|
||||
if ($deferred_date == "0001-01-01") $deferred_date = "";
|
||||
if ($active_flag) {
|
||||
$statdef = "<img src=\"icons/tick.png\" title=\"active\" alt=\"active\">";
|
||||
} else {
|
||||
@@ -509,7 +510,8 @@ if ($action) {
|
||||
} else {
|
||||
$tasktitle = "Repeat every $taskdata_frequency $taskdata_period";
|
||||
}
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"schedmaint.php?schedule=1&edit=1&id=%s\">%s</a></td>
|
||||
<td title=\"%s\">%s</td>
|
||||
@@ -520,14 +522,17 @@ if ($action) {
|
||||
<td>%s</td>
|
||||
<td align=\"center\">%s</td>
|
||||
</tr>",
|
||||
$eventid,$eventid,
|
||||
$tasktitle,$taskdata_taskname,
|
||||
$eventid,
|
||||
$eventid,
|
||||
$tasktitle,
|
||||
$taskdata_taskname,
|
||||
$devicedata_devicename,
|
||||
$start_date,
|
||||
$last_date,
|
||||
$deferredflag,
|
||||
$deferred_date,
|
||||
$statdef);
|
||||
$statdef
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
} else if ($tasks) {
|
||||
@@ -650,7 +655,8 @@ if ($action) {
|
||||
} else {
|
||||
$wdoflag = "<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
||||
}
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"schedmaint.php?tasks=1&edit=1&id=%s\">%s</a></td>
|
||||
<td>%s</td>
|
||||
@@ -660,16 +666,17 @@ if ($action) {
|
||||
<td>%s</td>
|
||||
<td align=\"center\">%s</td>
|
||||
</tr>",
|
||||
$taskid,$taskname,
|
||||
$taskid,
|
||||
$taskname,
|
||||
$taskdesc,
|
||||
$rptstrg,
|
||||
$duecalc,
|
||||
$wdoflag,
|
||||
$refstrg,
|
||||
$statdef);
|
||||
$statdef
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
|
||||
} else if ($devices) {
|
||||
// manage devices
|
||||
if ($edit) {
|
||||
@@ -735,7 +742,8 @@ if ($action) {
|
||||
} else {
|
||||
$memberdef = "<input type=\"checkbox\" name=\"members[]\" value=\"$gtbl_deviceid\">";
|
||||
}
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td>%s</td>
|
||||
<td>%s</td>
|
||||
@@ -743,7 +751,8 @@ if ($action) {
|
||||
</tr>",
|
||||
$gtbl_devicename,
|
||||
$gtbl_devicedesc,
|
||||
$memberdef);
|
||||
$memberdef
|
||||
);
|
||||
}
|
||||
echo "</table><br>";
|
||||
}
|
||||
@@ -774,7 +783,8 @@ if ($action) {
|
||||
} else {
|
||||
$statdef = "<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
||||
}
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"schedmaint.php?devices=1&edit=1&id=%s\">%s</a></td>
|
||||
<td>%s</td>
|
||||
@@ -782,18 +792,23 @@ if ($action) {
|
||||
<td align=\"center\">%s</td>
|
||||
<td align=\"center\">%s</td>
|
||||
</tr>",
|
||||
$deviceid,$deviceid,
|
||||
$deviceid,
|
||||
$deviceid,
|
||||
$devicename,
|
||||
$devicedesc,
|
||||
$groupdef,
|
||||
$statdef);
|
||||
$statdef
|
||||
);
|
||||
}
|
||||
echo "</table>";
|
||||
} else {
|
||||
$ucevents = get_upcoming_events();
|
||||
|
||||
// sort the upcoming events
|
||||
function uc_cmp($a,$b) { return strcmp($a["duedate"], $b["duedate"]); }
|
||||
function uc_cmp($a, $b)
|
||||
{
|
||||
return strcmp($a["duedate"], $b["duedate"]);
|
||||
}
|
||||
uasort($ucevents, 'uc_cmp');
|
||||
|
||||
// show upcoming events table
|
||||
@@ -806,16 +821,20 @@ if ($action) {
|
||||
";
|
||||
foreach ($ucevents as $ucline) {
|
||||
extract($ucline);
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"schedmaint.php?action=1&id=%s\" title=\"Click to complete or defer this scheduled maintenance event\">%s</a></td>
|
||||
<td><font title=\"%s\">%s</font></td>
|
||||
<td><font title=\"%s\">%s</font></td>
|
||||
<td>%s</td>
|
||||
</tr>",
|
||||
$eventdata_eventid,$duedatestrg,
|
||||
$devicedata_devicedesc,$devicedata_devicename,
|
||||
$taskdata_taskdesc,$taskdata_taskname,
|
||||
$eventdata_eventid,
|
||||
$duedatestrg,
|
||||
$devicedata_devicedesc,
|
||||
$devicedata_devicename,
|
||||
$taskdata_taskdesc,
|
||||
$taskdata_taskname,
|
||||
$lastdatestrg
|
||||
);
|
||||
}
|
||||
@@ -837,7 +856,7 @@ if ($action) {
|
||||
$taskdata = mysqli_fetch_assoc(mysqli_query($db, "select * from tasks where taskid=\"$def_task\""));
|
||||
extract($taskdata, EXTR_PREFIX_ALL, "taskdata");
|
||||
if (! ($taskdata_period == "once" && $def_last_date > $def_start_date)) {
|
||||
if ($def_last_date=="0000-00-00") {
|
||||
if ($def_last_date == "0001-01-01") {
|
||||
$lastdatestrg = "never";
|
||||
} else {
|
||||
$lastdatestrg = "$def_last_date";
|
||||
@@ -865,16 +884,20 @@ if ($action) {
|
||||
";
|
||||
foreach ($defevents as $defline) {
|
||||
extract($defline);
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td><a href=\"schedmaint.php?action=1&id=%s\" title=\"Click to complete or defer this scheduled maintenance event\"><font color=\"#FFA500\">%s</font></a></td>
|
||||
<td><font title=\"%s\">%s</font></td>
|
||||
<td><font title=\"%s\">%s</font></td>
|
||||
<td>%s</td>
|
||||
</tr>",
|
||||
$def_eventid,$def_deferred_date,
|
||||
$devicedata_devicedesc,$devicedata_devicename,
|
||||
$taskdata_taskdesc,$taskdata_taskname,
|
||||
$def_eventid,
|
||||
$def_deferred_date,
|
||||
$devicedata_devicedesc,
|
||||
$devicedata_devicename,
|
||||
$taskdata_taskdesc,
|
||||
$taskdata_taskname,
|
||||
$lastdatestrg
|
||||
);
|
||||
}
|
||||
@@ -890,5 +913,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
|
||||
include("functions.php");
|
||||
|
||||
$noprint=1;
|
||||
$noprint = TRUE;
|
||||
|
||||
if (isset($_SESSION['login'])) {
|
||||
$loggedin=1;
|
||||
$loggedin = TRUE;
|
||||
} else {
|
||||
unset($loggedin);
|
||||
$loggedin = FALSE;
|
||||
}
|
||||
|
||||
$print = $_REQUEST['print'] ?? NULL;
|
||||
@@ -34,8 +34,8 @@ $srchpname=$_REQUEST['srchpname'] ?? NULL;
|
||||
$srchploc = $_REQUEST['srchploc'] ?? NULL;
|
||||
$srchnha = $_REQUEST['srchnha'] ?? NULL;
|
||||
$srchrepord = $_REQUEST['srchrepord'] ?? NULL;
|
||||
$srchflags=$_REQUEST['srchflags'] ?? NULL;
|
||||
$target=$_REQUEST['target'] ?? NULL;
|
||||
$srchflags = $_POST['srchflags'] ?? [];
|
||||
$target = $_REQUEST['target'] ?? ["log", "maintform", "part"];
|
||||
|
||||
$doparts = PARTS_FUNCTIONS;
|
||||
$logname = LOG_NAME;
|
||||
@@ -54,9 +54,20 @@ if ($print) {
|
||||
|
||||
framework("begin", "$logname Search", "Search", $print);
|
||||
|
||||
// echo "REQUEST variables: <br>";
|
||||
// var_dump($_REQUEST);
|
||||
// echo "<br>";
|
||||
|
||||
// ******** begin database manipulation ********
|
||||
|
||||
// define the arrays
|
||||
$logfromtables = [];
|
||||
$mffromtables = [];
|
||||
$pfromtables = [];
|
||||
$logconstraints = [];
|
||||
$mfconstraints = [];
|
||||
$pconstraints = [];
|
||||
|
||||
// get the date range of lognotes
|
||||
$logdateqry = mysqli_query($db, "select min(date), max(date) from lognotes");
|
||||
$logdateresults = mysqli_fetch_row($logdateqry);
|
||||
@@ -75,15 +86,12 @@ if ($mfmaxdate == "") $mfmaxdate = $today;
|
||||
$mindate = min($logmindate, $mfmindate);
|
||||
$maxdate = max($logmaxdate, $mfmaxdate);
|
||||
|
||||
|
||||
|
||||
if ($search) {
|
||||
// strip whitespace from beginning and end of text fields
|
||||
$srchtext = trim($srchtext);
|
||||
$srchpname = trim($srchpname);
|
||||
$srchploc = trim($srchploc);
|
||||
$srchnha = trim($srchnha);
|
||||
if ($target[0]=="") $target=[];
|
||||
if (in_array("log", $target)) {
|
||||
// define the query constraints
|
||||
// log note id
|
||||
@@ -122,15 +130,6 @@ if ($search) {
|
||||
$logfromtables[] = "lognotes";
|
||||
$logconstraints[] = "lognotes.lognote like \"%$srchtext%\"";
|
||||
}
|
||||
// flags
|
||||
if ($srchflags != NULL) {
|
||||
foreach ($srchflags as $flagtblnum) {
|
||||
$flagtblname="flag_{$flagtblnum}";
|
||||
$logfromtables[]="lognotes";
|
||||
$logfromtables[]=$flagtblname;
|
||||
$logconstraints[]="lognotes.lognoteid={$flagtblname}.id and {$flagtblname}.target=\"lognotes\"";
|
||||
}
|
||||
}
|
||||
// uid
|
||||
if ($srchuid != "any" && $srchuid != "") {
|
||||
$logfromtables[] = "lognotes";
|
||||
@@ -183,12 +182,28 @@ if ($search) {
|
||||
$logfromtables[] = "maintforms";
|
||||
$logconstraints[] = "lognotes.lognoteid=logparts.lognoteid and logparts.partid=parts.partid and maintforms.mfpart=parts.partid and maintforms.repord=\"{$srchrepord}\"";
|
||||
}
|
||||
// flags
|
||||
if (!empty($srchflags)) {
|
||||
unset($flagconstraints);
|
||||
$flagcount = count($srchflags);
|
||||
$logfromtables[] = "lognotes";
|
||||
$logfromtables[] = "flagmap";
|
||||
$flagconstraints[] = "flagmap.lognoteid=lognotes.lognoteid and flagmap.flagid in (";
|
||||
foreach ($srchflags as $flagid) {
|
||||
$flagconstraints[] = "\"$flagid\"";
|
||||
$flagconstraints[] = ",";
|
||||
}
|
||||
// remove final comma
|
||||
array_splice($flagconstraints, -1, 1);
|
||||
$flagconstraints[] = ") group by flagmap.lognoteid having count(distinct flagmap.flagid)=$flagcount";
|
||||
// make flagconstraints a single string so that the final implode doesn't split it
|
||||
$logconstraints[] = join('', $flagconstraints);
|
||||
}
|
||||
// build the clauses and run the query
|
||||
$logfromclause = implode(",", array_unique($logfromtables));
|
||||
$logwhereclause = implode(" and ", $logconstraints);
|
||||
$logrowqry = mysqli_query($db, "select lognotes.* from $logfromclause where $logwhereclause order by lognotes.date asc, lognotes.time asc");
|
||||
}
|
||||
if ($target[0]=="") $target=[];
|
||||
if (in_array("maintform", $target)) {
|
||||
// maintforms search
|
||||
// define the query constraints
|
||||
@@ -231,13 +246,6 @@ if ($search) {
|
||||
$mffromtables[] = "maintactions";
|
||||
$mfconstraints[] = "maintforms.mfmalfunction like \"%$srchtext%\" or (maintactions.action like \"%$srchtext%\" and maintforms.maintformid=maintactions.maintformnum)";
|
||||
}
|
||||
// flags
|
||||
foreach ($srchflags as $flagtblnum) {
|
||||
$flagtblname="flag_{$flagtblnum}";
|
||||
$mffromtables[]="maintforms";
|
||||
$mffromtables[]=$flagtblname;
|
||||
$mfconstraints[]="maintforms.maintformid={$flagtblname}.id and {$flagtblname}.target=\"maintforms\"";
|
||||
}
|
||||
// uid
|
||||
if ($srchuid != "any" && $srchuid != "") {
|
||||
$mffromtables[] = "maintforms";
|
||||
@@ -280,12 +288,28 @@ if ($search) {
|
||||
$mffromtables[] = "maintforms";
|
||||
$mfconstraints[] = "maintforms.mfpart=parts.partid and maintforms.repord=\"{$srchrepord}\"";
|
||||
}
|
||||
// flags
|
||||
if (!empty($srchflags)) {
|
||||
unset($flagconstraints);
|
||||
$flagcount = count($srchflags);
|
||||
$mffromtables[] = "maintforms";
|
||||
$mffromtables[] = "flagmap";
|
||||
$flagconstraints[] = "flagmap.maintformid=maintforms.maintformid and flagmap.flagid in (";
|
||||
foreach ($srchflags as $thisflagid) {
|
||||
$flagconstraints[] = "\"$thisflagid\"";
|
||||
$flagconstraints[] = ",";
|
||||
}
|
||||
// remove final comma
|
||||
array_splice($flagconstraints, -1, 1);
|
||||
$flagconstraints[] = ") group by flagmap.maintformid having count(distinct flagmap.flagid)=$flagcount";
|
||||
// make flagconstraints a single string so that the final implode doesn't split it
|
||||
$mfconstraints[] = join('', $flagconstraints);
|
||||
}
|
||||
// build the clauses and run the query
|
||||
$mffromclause = implode(",", array_unique($mffromtables));
|
||||
$mfwhereclause = implode(" and ", $mfconstraints);
|
||||
$mfrowqry = mysqli_query($db, "select maintforms.* from $mffromclause where $mfwhereclause order by maintforms.mfdate asc, maintforms.mftime asc");
|
||||
}
|
||||
if ($target[0]=="") $target=[];
|
||||
if (in_array("part", $target)) {
|
||||
// parts search
|
||||
// define the query constraints
|
||||
@@ -307,7 +331,6 @@ if ($search) {
|
||||
// tech doesn't apply to parts
|
||||
// subject doesn't apply to parts
|
||||
// search text doesn't apply to parts
|
||||
// flags doesn't apply to parts
|
||||
// uid
|
||||
if ($srchuid != "any" && $srchuid != "") {
|
||||
$pfromtables[] = "parts";
|
||||
@@ -346,6 +369,7 @@ if ($search) {
|
||||
$pfromtables[] = "maintforms";
|
||||
$pconstraints[] = "maintforms.mfpart=parts.partid and maintforms.repord=\"{$srchrepord}\"";
|
||||
}
|
||||
// flags doesn't apply to parts
|
||||
// build the clauses and run the query
|
||||
$pfromclause = implode(",", array_unique($pfromtables));
|
||||
$pwhereclause = implode(" and ", $pconstraints);
|
||||
@@ -363,21 +387,36 @@ if(!$print){
|
||||
pageblock("right", "begin");
|
||||
banner($print);
|
||||
// display the form
|
||||
if ($srchnoteid) $noteidval=$srchnoteid; else $noteidval="any";
|
||||
if ($srchmfid) $mfidval=$srchmfid; else $mfidval="any";
|
||||
if ($srchbdate) $bdateval=$srchbdate; else $bdateval=$mindate;
|
||||
if ($srchedate) $edateval=$srchedate; else $edateval=$maxdate;
|
||||
if ($srchshift) $shiftval=$srchshift; else $shiftval=0;
|
||||
if ($srchtech) $techval=$srchtech; else $techval=0;
|
||||
if ($srchsubj) $subjval=$srchsubj; else $subjval=0;
|
||||
if ($srchtext) $textval=$srchtext; else $textval="";
|
||||
if ($srchuid) $uidval=$srchuid; else $uidval="any";
|
||||
if ($srchpn) $pnval=$srchpn; else $pnval="any";
|
||||
if ($srchsn) $snval=$srchsn; else $snval="any";
|
||||
if ($srchpname) $pnameval=$srchpname; else $pnameval="any";
|
||||
if ($srchploc) $plocval=$srchploc; else $plocval="any";
|
||||
if ($srchnha) $nhaval=$srchnha; else $nhaval="any";
|
||||
if ($srchrepord) $repordval=$srchrepord; else $repordval="any";
|
||||
if ($srchnoteid) $noteidval = $srchnoteid;
|
||||
else $noteidval = "any";
|
||||
if ($srchmfid) $mfidval = $srchmfid;
|
||||
else $mfidval = "any";
|
||||
if ($srchbdate) $bdateval = $srchbdate;
|
||||
else $bdateval = $mindate;
|
||||
if ($srchedate) $edateval = $srchedate;
|
||||
else $edateval = $maxdate;
|
||||
if ($srchshift) $shiftval = $srchshift;
|
||||
else $shiftval = 0;
|
||||
if ($srchtech) $techval = $srchtech;
|
||||
else $techval = 0;
|
||||
if ($srchsubj) $subjval = $srchsubj;
|
||||
else $subjval = 0;
|
||||
if ($srchtext) $textval = $srchtext;
|
||||
else $textval = "";
|
||||
if ($srchuid) $uidval = $srchuid;
|
||||
else $uidval = "any";
|
||||
if ($srchpn) $pnval = $srchpn;
|
||||
else $pnval = "any";
|
||||
if ($srchsn) $snval = $srchsn;
|
||||
else $snval = "any";
|
||||
if ($srchpname) $pnameval = $srchpname;
|
||||
else $pnameval = "any";
|
||||
if ($srchploc) $plocval = $srchploc;
|
||||
else $plocval = "any";
|
||||
if ($srchnha) $nhaval = $srchnha;
|
||||
else $nhaval = "any";
|
||||
if ($srchrepord) $repordval = $srchrepord;
|
||||
else $repordval = "any";
|
||||
|
||||
if (!$print) {
|
||||
echo "
|
||||
@@ -412,7 +451,8 @@ if (!$print) {
|
||||
} else {
|
||||
echo "<option value=\"0\">any</option>";
|
||||
}
|
||||
if ($techalpha) $torder="techname"; else $torder="techid";
|
||||
if ($techalpha) $torder = "techname";
|
||||
else $torder = "techid";
|
||||
$techrow = mysqli_query($db, "select * from techs order by $torder asc");
|
||||
while ($techitem = mysqli_fetch_assoc($techrow)) {
|
||||
if ($techitem['techid'] == $techval) {
|
||||
@@ -430,7 +470,8 @@ if (!$print) {
|
||||
} else {
|
||||
echo "<option value=\"0\">any</option>";
|
||||
}
|
||||
if ($subjalpha) $sorder="subjectname"; else $sorder="subjectid";
|
||||
if ($subjalpha) $sorder = "subjectname";
|
||||
else $sorder = "subjectid";
|
||||
$subjrow = mysqli_query($db, "select * from subjects order by $sorder asc");
|
||||
while ($subjitem = mysqli_fetch_assoc($subjrow)) {
|
||||
if ($subjitem['subjectid'] == $subjval) {
|
||||
@@ -467,15 +508,25 @@ if (!$print) {
|
||||
$flagsperline = 8;
|
||||
$flagcount = 1;
|
||||
while ($flagcheckbox = mysqli_fetch_assoc($flagslist)) {
|
||||
if ($srchflags[0]=="") $srchflags=[];
|
||||
//if ($srchflags[0] == "") $srchflags = [];
|
||||
if (in_array($flagcheckbox["flagid"], $srchflags)) {
|
||||
printf("<input type=\"checkbox\" name=\"srchflags[]\" value=\"%s\" checked title=\"When checked, only results with this flag set will be shown\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
|
||||
printf(
|
||||
"<input type=\"checkbox\" name=\"srchflags[]\" value=\"%s\" checked title=\"When checked, only results with this flag set will be shown\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],
|
||||
$flagcheckbox["flagcolor"],
|
||||
$flagcheckbox["flagname"],
|
||||
$flagcheckbox["flagsym"]
|
||||
);
|
||||
} else {
|
||||
$flagid = $flagcheckbox["flagid"];
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagid=\"$flagid\" and status=1"))) {
|
||||
printf("<input type=\"checkbox\" name=\"srchflags[]\" value=\"%s\" title=\"When checked, only results with this flag set will be shown\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
|
||||
printf(
|
||||
"<input type=\"checkbox\" name=\"srchflags[]\" value=\"%s\" title=\"When checked, only results with this flag set will be shown\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],
|
||||
$flagcheckbox["flagcolor"],
|
||||
$flagcheckbox["flagname"],
|
||||
$flagcheckbox["flagsym"]
|
||||
);
|
||||
}
|
||||
}
|
||||
if ($flagcount < $flagsperline) {
|
||||
@@ -595,8 +646,11 @@ if (!$print) {
|
||||
if ($srchflags) {
|
||||
if ($srchflags[0] == "") $srchflags = [];
|
||||
if (in_array($flagcheckbox["flagid"], $srchflags)) {
|
||||
printf("<font color=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagcolor"],$flagcheckbox["flagsym"]);
|
||||
printf(
|
||||
"<font color=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagcolor"],
|
||||
$flagcheckbox["flagsym"]
|
||||
);
|
||||
}
|
||||
}
|
||||
if ($flagcount < $flagsperline) {
|
||||
@@ -637,9 +691,10 @@ if ($search) {
|
||||
if ($target[0] == "") $target = [];
|
||||
if (in_array("log", $target)) {
|
||||
// run lognotes query and show results
|
||||
if(mysqli_num_rows($logrowqry)) {
|
||||
$log_num_results = mysqli_num_rows($logrowqry);
|
||||
if ($log_num_results) {
|
||||
echo "
|
||||
<b>Results from Logbook</b><br><br>
|
||||
<b>Results from Logbook: $log_num_results</b><br><br>
|
||||
<table border=\"1\" width=\"100%\">
|
||||
<tr><th>Note ID</th><th>Date/Time</th><th>Shift</th><th>Tech</th><th>Subject</th><th>Note</th><th>References</th></tr>
|
||||
";
|
||||
@@ -656,21 +711,25 @@ if ($search) {
|
||||
$logsubjname = dblookup($db, "subjects", "subjectid", "subjectname", $logtablerow['subject']);
|
||||
// create links of urls in note
|
||||
$logfmtnote = convertweblinks($logtablerow['lognote']);
|
||||
|
||||
// generate the flags string
|
||||
$flagstring = "";
|
||||
$allflagqry=mysqli_query($db,"select flagid from flags");
|
||||
while ($allflagids=mysqli_fetch_row($allflagqry)) {
|
||||
$flagid=$allflagids[0];
|
||||
$flag_tbl="flag_".$flagid;
|
||||
if (mysqli_num_rows(mysqli_query($db,"select id from $flag_tbl where target=\"lognotes\" and id=\"$logtablerow[lognoteid]\""))) {
|
||||
$flagparam=mysqli_fetch_assoc(mysqli_query($db,"select * from flags where flagid=\"$flagid\""));
|
||||
$flagcolor=$flagparam["flagcolor"];
|
||||
$flagsym=$flagparam["flagsym"];
|
||||
$flagstring=$flagstring."<font color=\"$flagcolor\">$flagsym</font> ";
|
||||
$flagqry = mysqli_query($db, "select flagid from flagmap where lognoteid=$logtablerow[lognoteid]");
|
||||
while ($flagid = mysqli_fetch_row($flagqry)) {
|
||||
$flagparams = mysqli_fetch_assoc(mysqli_query($db, "select * from flags where flagid=\"$flagid[0]\""));
|
||||
$flagcolor = $flagparams["flagcolor"];
|
||||
$flagsym = $flagparams["flagsym"];
|
||||
$flagname = $flagparams["flagname"];
|
||||
$flagstring = $flagstring . "<font color=\"$flagcolor\" title=\"$flagname\">$flagsym</font> ";
|
||||
}
|
||||
if ($flagstring) {
|
||||
$logfmtnote = $logfmtnote . "<br>" . $flagstring . " ";
|
||||
} else {
|
||||
$logfmtnote = $logfmtnote . "<br>";
|
||||
}
|
||||
if ($flagstring) $logfmtnote=$logfmtnote."<br>".$flagstring;
|
||||
printf("<tr>
|
||||
|
||||
printf(
|
||||
"<tr>
|
||||
<td valign=\"top\"><a href=logentry.php?edit=1¬eid=%s>%s</a></td>
|
||||
<td valign=\"top\">%s / %s</td>
|
||||
<td valign=\"top\">%s</td>
|
||||
@@ -679,13 +738,16 @@ if ($search) {
|
||||
<td valign=\"top\">%s</td>
|
||||
<td valign=\"top\">%s</td>
|
||||
</tr>",
|
||||
$logtablerow['lognoteid'],$logtablerow['lognoteid'],
|
||||
$logtablerow['date'],$logtablerow['time'],
|
||||
$logtablerow['lognoteid'],
|
||||
$logtablerow['lognoteid'],
|
||||
$logtablerow['date'],
|
||||
$logtablerow['time'],
|
||||
$logshname,
|
||||
$logtname,
|
||||
$logsubjname,
|
||||
$logfmtnote,
|
||||
$logrefs);
|
||||
$logrefs
|
||||
);
|
||||
}
|
||||
echo "</table><br><hr>";
|
||||
} else {
|
||||
@@ -695,9 +757,10 @@ if ($search) {
|
||||
if ($target[0] == "") $target = [];
|
||||
if (in_array("maintform", $target)) {
|
||||
// run maintforms query and show results
|
||||
if(mysqli_num_rows($mfrowqry)) {
|
||||
$mf_num_results = mysqli_num_rows($mfrowqry);
|
||||
if ($mf_num_results) {
|
||||
echo "
|
||||
<b>Results from Maintenance Forms</b><br><br>
|
||||
<b>Results from Maintenance Forms: $mf_num_results</b><br><br>
|
||||
<br><table border=\"1\" width=\"100%\">
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
@@ -740,14 +803,16 @@ if ($search) {
|
||||
<td valign=\"top\">%s</td>
|
||||
<td align=\"center\" valign=\"top\">$mfnotetag</td>
|
||||
</tr>",
|
||||
$mfrow["maintformid"],$mfrow["maintformid"],
|
||||
$mfrow["maintformid"],
|
||||
$mfrow["maintformid"],
|
||||
$mfrow["mfdate"],
|
||||
$mftname,
|
||||
$mfuid,
|
||||
$mfpartno,
|
||||
$mfserno,
|
||||
$mfpartname,
|
||||
$mfnoteidval,$mfnoteidval
|
||||
$mfnoteidval,
|
||||
$mfnoteidval
|
||||
);
|
||||
}
|
||||
echo "</table><br><hr>";
|
||||
@@ -758,21 +823,23 @@ if ($search) {
|
||||
if ($target[0] == "") $target = [];
|
||||
if (in_array("part", $target)) {
|
||||
// run parts query and show results
|
||||
if(mysqli_num_rows($prowqry)) {
|
||||
$p_num_results = mysqli_num_rows($prowqry);
|
||||
if ($p_num_results) {
|
||||
echo "
|
||||
<b>Results from Parts</b><br><br>
|
||||
<b>Results from Parts: $p_num_results</b><br><br>
|
||||
<table width=\"100%\" border=\"1\" cellpadding=\"5\">
|
||||
<tr>
|
||||
<th>Action</th>
|
||||
<th><a href=\"parts.php?sort=uid&order=$order\" title=\"Sort by $uidtext\">$uidtext</a></th>
|
||||
<th><a href=\"parts.php?sort=partnum&order=$order\" title=\"Sort by Part Number\">Part Number</a></th>
|
||||
<th><a href=\"parts.php?sort=sernum&order=$order\" title=\"Sort by Serial Number\">Serial Number</a></th>
|
||||
<th><a href=\"parts.php?sort=partname&order=$order\" title=\"Sort by Part Name\">Part Name</a></th>
|
||||
<th>$uidtext</th>
|
||||
<th>Part Number</th>
|
||||
<th>Serial Number</th>
|
||||
<th>Part Name</th>
|
||||
</tr>
|
||||
";
|
||||
while ($partrow = mysqli_fetch_assoc($prowqry)) {
|
||||
if ($loggedin) {
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td>
|
||||
<a href=\"partentry.php?edit=1&partid=%s\"><img src=\"icons/notebook--pencil.png\" border=\"0\" title=\"Edit this part\" alt=\"Edit this part\"></a>
|
||||
@@ -788,7 +855,8 @@ if ($search) {
|
||||
$partrow['partname']
|
||||
);
|
||||
} else {
|
||||
printf("
|
||||
printf(
|
||||
"
|
||||
<tr>
|
||||
<td>
|
||||
<img src=\"icons/notebook--pencil.png\" border=\"0\" title=\"You must be logged in to edit a part\" alt=\"You must be logged in to edit a part\">
|
||||
@@ -821,5 +889,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
@@ -61,5 +61,3 @@ if ($logerrors==1) {
|
||||
} else {
|
||||
error_reporting(0);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -24,9 +24,6 @@ $flags=$_POST['flags'] ?? [];
|
||||
$refstring = $_REQUEST['refstring'] ?? NULL;
|
||||
$submit = $_REQUEST['submit'] ?? NULL;
|
||||
$operation = $_REQUEST['operation'] ?? NULL;
|
||||
//$add=$_REQUEST['add'] ?? NULL;
|
||||
//$edit=$_REQUEST['edit'] ?? NULL;
|
||||
//$delete=$_REQUEST['delete'] ?? NULL;
|
||||
$templateid = $_REQUEST['templateid'] ?? NULL;
|
||||
$templatename = $_REQUEST['templatename'] ?? NULL;
|
||||
$usertemplateid = $_REQUEST['usertemplateid'] ?? NULL;
|
||||
@@ -59,9 +56,10 @@ if ($isadmin) {
|
||||
$authorized = FALSE;
|
||||
}
|
||||
|
||||
var_dump($_REQUEST);
|
||||
// var_dump($_REQUEST);
|
||||
|
||||
function templatetable($db,$techid,$user) {
|
||||
function templatetable($db, $techid, $user)
|
||||
{
|
||||
// Show template table
|
||||
$isadmin = dblookup($db, "techs", "techid", "admin", $techid);
|
||||
$templatequery = mysqli_query($db, "select * from notetemplates where tech=\"$user\" order by templatename asc");
|
||||
@@ -154,53 +152,6 @@ function templatetable($db,$techid,$user) {
|
||||
echo "<br>";
|
||||
}
|
||||
|
||||
function templateselect($db,$techid,$operation) {
|
||||
echo "
|
||||
<form method=\"post\" action=\"templates.php\">
|
||||
";
|
||||
// generate template selection line
|
||||
echo "
|
||||
<table border=\"0\" cellpadding=\"10\"><tr>
|
||||
";
|
||||
// list user templates
|
||||
echo "
|
||||
<td>
|
||||
<select name=\"usertemplateid\" title=\"Select the user template you'd like to load and click the Load Template button. User template selection takes precedence.\">
|
||||
";
|
||||
$templaterow=mysqli_query($db,"select * from notetemplates where tech=\"$techid\" order by templatename asc");
|
||||
printf("<option value=\"%s\" selected>%s</option>","0","Select user template");
|
||||
while ($templateitem=mysqli_fetch_assoc($templaterow)) {
|
||||
printf("<option value=\"%s\">%s</option>",$templateitem["templateid"],$templateitem["templatename"]);
|
||||
}
|
||||
echo "
|
||||
</select> or
|
||||
";
|
||||
// list global templates
|
||||
echo "
|
||||
<select name=\"globaltemplateid\" title=\"Select the global template you'd like to load and click the Load Template button. User template selection takes precedence.\">
|
||||
";
|
||||
$templaterow=mysqli_query($db,"select * from notetemplates where tech=\"0\" order by templatename asc");
|
||||
printf("<option value=\"%s\" selected>%s</option>","0","Select global template");
|
||||
while ($templateitem=mysqli_fetch_assoc($templaterow)) {
|
||||
printf("<option value=\"%s\">%s</option>",$templateitem["templateid"],$templateitem["templatename"]);
|
||||
}
|
||||
echo "
|
||||
</select>
|
||||
";
|
||||
// show load button
|
||||
echo "
|
||||
<input type=\"hidden\" name=\"operation\" value=\"$operation\">
|
||||
<input type=\"submit\" name=\"loadtemplate\" value=\"Load Template\">
|
||||
</td>
|
||||
<td>
|
||||
<a href=\"templates.php\">Manage templates</a>
|
||||
</td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
</form>
|
||||
";
|
||||
}
|
||||
|
||||
// ******** begin database manipulation ********
|
||||
|
||||
if ($usertemplateid) {
|
||||
@@ -211,6 +162,12 @@ if ($usertemplateid) {
|
||||
$loadtemplate = NULL;
|
||||
}
|
||||
|
||||
// determine original owner of template
|
||||
$orig_owner = dblookup($db, "notetemplates", "templateid", "tech", $templateid);
|
||||
if ($efftechid != NULL && $efftechid != $orig_owner) {
|
||||
$operation = "add";
|
||||
}
|
||||
|
||||
if ($operation == "add") {
|
||||
if ($submit) {
|
||||
if ($note) {
|
||||
@@ -423,9 +380,8 @@ if ($operation=="delete") {
|
||||
<br><b>$optext template</b><br><hr>
|
||||
";
|
||||
|
||||
|
||||
// show the template selection line
|
||||
templateselect($db,$techid,$operation);
|
||||
templateselect($techid, $operation);
|
||||
|
||||
// start template entry section
|
||||
echo "
|
||||
@@ -444,7 +400,8 @@ if ($operation=="delete") {
|
||||
} else {
|
||||
echo "<option value=\"0\">--Global Template--</option>";
|
||||
}
|
||||
if ($techalpha) $torder="techname"; else $torder="techid";
|
||||
if ($techalpha) $torder = "techname";
|
||||
else $torder = "techid";
|
||||
$techrow = mysqli_query($db, "select * from techs order by $torder asc");
|
||||
while ($techitem = mysqli_fetch_assoc($techrow)) {
|
||||
if ($techitem["techid"] == $filltech) {
|
||||
@@ -482,7 +439,8 @@ if ($operation=="delete") {
|
||||
<td><b>Subject: </b>
|
||||
<select name=\"subject\">
|
||||
";
|
||||
if ($subjalpha) $sorder="subjectname"; else $sorder="subjectid";
|
||||
if ($subjalpha) $sorder = "subjectname";
|
||||
else $sorder = "subjectid";
|
||||
$subjrow = mysqli_query($db, "select * from subjects order by $sorder asc");
|
||||
while ($subjitem = mysqli_fetch_assoc($subjrow)) {
|
||||
if ($subjitem["status"] == 1) {
|
||||
@@ -525,13 +483,23 @@ if ($operation=="delete") {
|
||||
// display checkboxes for all the flags, selecting the ones that are set for this template
|
||||
while ($flagcheckbox = mysqli_fetch_assoc($flagslist)) {
|
||||
if ($operation == "edit" && in_array($flagcheckbox["flagid"], $theseflags)) {
|
||||
printf("<input type=\"checkbox\" name=\"flags[]\" value=\"%s\" checked><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
|
||||
printf(
|
||||
"<input type=\"checkbox\" name=\"flags[]\" value=\"%s\" checked><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],
|
||||
$flagcheckbox["flagcolor"],
|
||||
$flagcheckbox["flagname"],
|
||||
$flagcheckbox["flagsym"]
|
||||
);
|
||||
} else {
|
||||
$flagid = $flagcheckbox["flagid"];
|
||||
if (mysqli_num_rows(mysqli_query($db, "select flagid from flags where flagid=\"$flagid\" and status=1"))) {
|
||||
printf("<input type=\"checkbox\" name=\"flags[]\" value=\"%s\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],$flagcheckbox["flagcolor"],$flagcheckbox["flagname"],$flagcheckbox["flagsym"]);
|
||||
printf(
|
||||
"<input type=\"checkbox\" name=\"flags[]\" value=\"%s\"><font color=\"%s\" title=\"%s\">%s</font>",
|
||||
$flagcheckbox["flagid"],
|
||||
$flagcheckbox["flagcolor"],
|
||||
$flagcheckbox["flagname"],
|
||||
$flagcheckbox["flagsym"]
|
||||
);
|
||||
}
|
||||
}
|
||||
if ($flagcount < $flagsperline) {
|
||||
@@ -601,5 +569,3 @@ pageblock("right","end");
|
||||
pagetable("end");
|
||||
|
||||
framework("end", "", "", $print);
|
||||
|
||||
?>
|
||||
|
||||
153
install.sh
153
install.sh
@@ -2,7 +2,7 @@
|
||||
|
||||
# install.sh
|
||||
# OpenLog Online Logbook
|
||||
# Copyright (C) 2025 Rod Wright
|
||||
# Copyright (C) 2026 Rod Wright
|
||||
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
@@ -12,7 +12,6 @@ APP_VERSION="5.3.0"
|
||||
DOC_ROOT="/var/www"
|
||||
INSTALL_LOC="openlog"
|
||||
APACHE_CONF_DIR="/etc/apache2/conf-available"
|
||||
BACKUP_DIR="openlog-previous-installation"
|
||||
LANDING_PAGE="lognotes.php"
|
||||
CONFIG_TABLE="configs"
|
||||
CONFIG_NAME_COLUMN="confname"
|
||||
@@ -22,7 +21,7 @@ CONFIG_DEFAULT_COLUMN=""
|
||||
|
||||
function privilege_check() {
|
||||
# test for superuser rights
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
if [[ "$EUID" != 0 ]]; then
|
||||
echo "This script must be run with superuser privileges. Try sudo $0"
|
||||
exit 1
|
||||
fi
|
||||
@@ -37,11 +36,11 @@ function get_new_password() {
|
||||
echo ""
|
||||
read -p "Re-type new password: " -s -r rnewpw
|
||||
echo ""
|
||||
if [ "$newpassword" = "" -o "$rnewpw" = "" ]
|
||||
if [[ "$newpassword" == "" || "$rnewpw" == "" ]]
|
||||
then
|
||||
echo "Password cannot be blank. Please try again."
|
||||
echo ""
|
||||
elif [ "$newpassword" != "$rnewpw" ]
|
||||
elif [[ "$newpassword" != "$rnewpw" ]]
|
||||
then
|
||||
echo "Passwords do not match. Please try again."
|
||||
echo ""
|
||||
@@ -64,7 +63,7 @@ function install_required_packages() {
|
||||
gpattern=""
|
||||
for pkg_option in $(echo $prereq)
|
||||
do
|
||||
if [ "$pkg_option" != "or" ]
|
||||
if [[ "$pkg_option" != "or" ]]
|
||||
then
|
||||
gpattern+=" -e $pkg_option"
|
||||
preferred_pkg=$pkg_option
|
||||
@@ -77,7 +76,7 @@ function install_required_packages() {
|
||||
echo "$APP_NAME requires $prereq, but it doesn't seem to be installed. "
|
||||
echo -n "Install $preferred_pkg now? [Y/n]: "
|
||||
read reqinstall
|
||||
if [ "$reqinstall" = "N" -o "$reqinstall" = "n" ]
|
||||
if [[ "$reqinstall" == "N" || "$reqinstall" == "n" ]]
|
||||
then
|
||||
echo "$APP_NAME requires $prereq, but you have elected not to install it."
|
||||
echo "Installation cannot continue."
|
||||
@@ -173,20 +172,20 @@ echo ""
|
||||
echo -n "Enter name of $APP_NAME installation directory [$INSTALL_LOC] :"
|
||||
read install_loc_in
|
||||
echo ""
|
||||
if [ "$doc_root_in" = "" ]
|
||||
if [[ "$doc_root_in" == "" ]]
|
||||
then
|
||||
doc_root_in=$DOC_ROOT
|
||||
fi
|
||||
if [ "$install_loc_in" = "" ]
|
||||
if [[ "$install_loc_in" == "" ]]
|
||||
then
|
||||
install_loc_in=$INSTALL_LOC
|
||||
fi
|
||||
install_path="$doc_root_in/$install_loc_in"
|
||||
if [ -d "$install_path" ]
|
||||
if [[ -d "$install_path" ]]
|
||||
then
|
||||
echo "The installation path you chose already exists."
|
||||
# Install path exists.
|
||||
if [ -e "$install_path/db.php" ]
|
||||
if [[ -e "$install_path/db.php" ]]
|
||||
then
|
||||
# A db.php file was found in the install path
|
||||
if grep -q -e "$APP_NAME" $install_path/db.php
|
||||
@@ -196,13 +195,47 @@ then
|
||||
echo "and restart the install using a new installation location."
|
||||
echo -n "[U]pgrade or [C]ancel? [U] :"
|
||||
read upgrade_choice
|
||||
if [[ $upgrade_choice == "C" || $upgrade_choice == "c" ]] # Cancel chosen
|
||||
if [[ "$upgrade_choice" == "C" || "$upgrade_choice" == "c" ]] # Cancel chosen
|
||||
then
|
||||
echo "Cancelling installation"
|
||||
abort_exit
|
||||
else
|
||||
# proceed with upgrade
|
||||
mkdir -p backups
|
||||
# put app in maintenance mode
|
||||
echo "Putting the application in maintenance mode..."
|
||||
# make sure mod_rewrite is enabled
|
||||
if [[ ! -e "$APACHE_CONF_DIR/../mods-enabled/rewrite.load" ]]
|
||||
then
|
||||
a2enmod -q rewrite
|
||||
systemctl restart apache2
|
||||
fi
|
||||
# disable the app
|
||||
a2disconf -q $install_loc_in
|
||||
systemctl reload apache2
|
||||
# modify the apache conf file
|
||||
if ! grep -q "RewriteEngine" "$APACHE_CONF_DIR/$install_loc_in.conf"
|
||||
then
|
||||
# this is an old version of the conf file. Replace with new version
|
||||
cp -f default-apache.conf $APACHE_CONF_DIR/$install_loc_in.conf
|
||||
sed -i "s|_APPNAME_|$APP_NAME|g" $APACHE_CONF_DIR/$install_loc_in.conf
|
||||
sed -i "s|_BASEURL_|$install_loc_in|g" $APACHE_CONF_DIR/$install_loc_in.conf
|
||||
sed -i "s|_DOCROOTIN_|$doc_root_in|g" $APACHE_CONF_DIR/$install_loc_in.conf
|
||||
fi
|
||||
sed -i "s|#Rewrite|Rewrite|g" $APACHE_CONF_DIR/$install_loc_in.conf
|
||||
# copy in the default maintenancemode.php if it's not already there
|
||||
if [[ ! -e "$install_path/maintenancemode.php" ]]
|
||||
then
|
||||
cp maintenancemode.php $install_path/
|
||||
# modify the maintenancemode.php file
|
||||
sed -i "s|_APPNAME_|$APP_NAME|g" $install_path/maintenancemode.php
|
||||
fi
|
||||
# re-enable the app in maintenance mode
|
||||
a2enconf -q $install_loc_in
|
||||
systemctl reload apache2
|
||||
|
||||
datestamp=$(date +%Y-%m-%d_%H:%M:%S)
|
||||
backupdir=backups/$datestamp
|
||||
mkdir -p $backupdir
|
||||
operation="upgraded"
|
||||
curr_dbname=$(grep dbname $install_path/db.php | head -1 | cut -d\" -f2)
|
||||
|
||||
@@ -219,25 +252,21 @@ then
|
||||
|
||||
# back up existing database
|
||||
echo "Backing up the current database to the package directory."
|
||||
mysqldump --defaults-extra-file=$mysql_opt_file --no-tablespaces $curr_dbname > backups/$curr_dbname-$(date +%Y-%m-%d_%H:%M:%S)-backup.sql
|
||||
mysqldump --defaults-extra-file=$mysql_opt_file --no-tablespaces $curr_dbname > $backupdir/$curr_dbname-$datestamp-backup.sql
|
||||
|
||||
# back up existing installation
|
||||
echo "Backing up current installation to the package directory."
|
||||
cp -R $install_path backups/$install_loc_in-`date +%Y-%m-%d_%H:%M:%S`-backup
|
||||
cp -R $install_path $backupdir/$install_loc_in-$datestamp-backup
|
||||
|
||||
# delete all existing installation files except db.php
|
||||
find $install_path/ -mindepth 1 -not -name 'db.php' -delete
|
||||
# delete all existing installation files except db.php and maintenancemode.php
|
||||
find $install_path/ -mindepth 1 ! \( -name 'db.php' -o -name 'maintenancemode.php' \) -delete
|
||||
|
||||
echo "Performing database updates. This may take a while..."
|
||||
echo "Performing database updates..."
|
||||
# apply database updates from sql file
|
||||
(mysql --defaults-extra-file=$mysql_opt_file --force < database-update.sql >/dev/null 2>&1) &
|
||||
task_pid=$!
|
||||
spinner $task_pid
|
||||
mysql --defaults-extra-file=$mysql_opt_file --force < database-update.sql >/dev/null 2>&1
|
||||
|
||||
# apply database updates via script
|
||||
(bash ./database-update.sh $mysql_opt_file) &
|
||||
task_pid=$!
|
||||
spinner $task_pid
|
||||
bash ./database-update.sh $mysql_opt_file
|
||||
|
||||
echo "... finished with database updates."
|
||||
rm -f $mysql_opt_file
|
||||
@@ -249,12 +278,12 @@ then
|
||||
echo "Installing distribution . . ."
|
||||
cp -R distfiles/* $install_path
|
||||
# set symlink for jquery-ui
|
||||
if [ ! -L "$install_path/jquery-ui" ]
|
||||
if [[ ! -L "$install_path/jquery-ui" ]]
|
||||
then
|
||||
ln -s $install_path/jquery-ui* $install_path/jquery-ui
|
||||
fi
|
||||
# set symlink for index.php
|
||||
if [ ! -L "$install_path/index.php" ]
|
||||
if [[ ! -L "$install_path/index.php" ]]
|
||||
then
|
||||
ln -s $install_path/$LANDING_PAGE $install_path/index.php
|
||||
fi
|
||||
@@ -267,6 +296,19 @@ then
|
||||
echo ""
|
||||
echo "Setting file ownership . . ."
|
||||
chown -R $httpd_user_group $install_path
|
||||
echo "Backups of the previous openlog files and the previous database were made"
|
||||
echo "and are located in the $backupdir directory."
|
||||
|
||||
# take app out of maintenance mode
|
||||
echo "Taking the app out of maintenance mode..."
|
||||
# disable the app
|
||||
a2disconf -q $install_loc_in
|
||||
systemctl reload apache2
|
||||
# modify the apache conf file
|
||||
sed -i "s|Rewrite|#Rewrite|g" $APACHE_CONF_DIR/$install_loc_in.conf
|
||||
# re-enable the app in production mode
|
||||
a2enconf -q $install_loc_in
|
||||
systemctl reload apache2
|
||||
fi
|
||||
else
|
||||
# This was a mistake. Exit now to avoid clobbering another app.
|
||||
@@ -284,11 +326,11 @@ then
|
||||
echo "Would you like to use this location for a fresh installation or quit and"
|
||||
echo "investigate further? It's probably safest to quit and investigate."
|
||||
proceed=""
|
||||
while [[ $proceed != "P" && $proceed != "p" && $proceed != "Q" && $proceed != "q" ]]
|
||||
while [[ "$proceed" != "P" && "$proceed" != "p" && "$proceed" != "Q" && "$proceed" != "q" ]]
|
||||
do
|
||||
read proceed -p "[P]roceed with new install or [Q]uit? : "
|
||||
done
|
||||
if [[ $proceed == "Q" || $proceed == "q" ]]
|
||||
if [[ "$proceed" == "Q" || "$proceed" == "q" ]]
|
||||
then
|
||||
abort_exit
|
||||
fi
|
||||
@@ -303,7 +345,7 @@ else
|
||||
echo "This can be changed later in the application itself."
|
||||
echo -n "Installation name [$APP_NAME]: "
|
||||
read new_inst_name
|
||||
if [ "$new_inst_name" = "" ]
|
||||
if [[ "$new_inst_name" == "" ]]
|
||||
then
|
||||
new_inst_name="$APP_NAME"
|
||||
fi
|
||||
@@ -320,7 +362,7 @@ else
|
||||
echo "distinctive name."
|
||||
echo -n "database name [$DEFAULT_DB_NAME]: "
|
||||
read new_db_name
|
||||
if [ "$new_db_name" = "" ]
|
||||
if [[ "$new_db_name" == "" ]]
|
||||
then
|
||||
new_db_name=$DEFAULT_DB_NAME
|
||||
fi
|
||||
@@ -333,7 +375,7 @@ else
|
||||
echo "This probably means the database already exists."
|
||||
echo -n "Try again with a different database name? [Y/N]: "
|
||||
read dbcreatetry
|
||||
if [ "$dbcreatetry" != "Y" -o "$dbcreatetry" != "y" ]
|
||||
if [[ "$dbcreatetry" != "Y" || "$dbcreatetry" != "y" ]]
|
||||
then
|
||||
abort_exit
|
||||
fi
|
||||
@@ -353,7 +395,7 @@ else
|
||||
# Set the installation name
|
||||
export MYSQL_PWD="$db_pass"
|
||||
mysql -u"$db_user" $new_db_name -e "update $CONFIG_TABLE set $CONFIG_VALUE_COLUMN=\"$new_inst_name\" where $CONFIG_NAME_COLUMN=\"log_name\""
|
||||
if [ "$CONFIG_DEFAULT_COLUMN" != "" ]
|
||||
if [[ "$CONFIG_DEFAULT_COLUMN" != "" ]]
|
||||
then
|
||||
mysql -u"$db_user" $new_db_name -e "update $CONFIG_TABLE set $CONFIG_DEFAULT_COLUMN=\"$new_inst_name\" where $CONFIG_NAME_COLUMN=\"log_name\""
|
||||
fi
|
||||
@@ -362,23 +404,29 @@ else
|
||||
mkdir $install_path
|
||||
|
||||
# Create db.php if it doesn't exist
|
||||
if [ ! -f "$install_path/db.php" ]
|
||||
if [[ ! -f "$install_path/db.php" ]]
|
||||
then
|
||||
cp db.php.template $install_path/db.php
|
||||
sed -i "s/DBNAME/$new_db_name/g" $install_path/db.php
|
||||
sed -i "s/DBUSER/$db_user/g" $install_path/db.php
|
||||
sed -i "s/DBPASS/$db_pass/g" $install_path/db.php
|
||||
sed -i "s/APPNAME/$APP_NAME/g" $install_path/db.php
|
||||
sed -i "s|DBNAME|$new_db_name|g" $install_path/db.php
|
||||
sed -i "s|DBUSER|$db_user|g" $install_path/db.php
|
||||
sed -i "s|DBPASS|$db_pass|g" $install_path/db.php
|
||||
sed -i "s|APPNAME|$APP_NAME|g" $install_path/db.php
|
||||
fi
|
||||
# Create maintenancemode.php if it doesn't exist
|
||||
if [[ ! -f "$install_path/maintenancemode.php" ]]
|
||||
then
|
||||
cp maintenancemode.php $install_path/maintenancemode.php
|
||||
sed -i "s|_APPNAME_|$APP_NAME|g" $install_path/maintenancemode.php
|
||||
fi
|
||||
|
||||
# copy distribution to install location
|
||||
echo "Installing distribution . . ."
|
||||
cp -R distfiles/* $install_path
|
||||
if [ ! -L "$install_path/jquery-ui" ]
|
||||
if [[ ! -L "$install_path/jquery-ui" ]]
|
||||
then
|
||||
ln -s $install_path/jquery-ui* $install_path/jquery-ui
|
||||
fi
|
||||
if [ ! -L "$install_path/index.php" ]
|
||||
if [[ ! -L "$install_path/index.php" ]]
|
||||
then
|
||||
ln -s $install_path/$LANDING_PAGE $install_path/index.php
|
||||
fi
|
||||
@@ -401,23 +449,24 @@ echo ""
|
||||
echo ""
|
||||
echo "$APP_NAME has been $operation."
|
||||
base_url=$install_loc_in
|
||||
if [ "$operation" = "installed" ]
|
||||
if [[ "$operation" == "upgraded" ]]
|
||||
then
|
||||
echo "# $APP_NAME default Apache configuration" > $APACHE_CONF_DIR/$base_url.conf
|
||||
echo "" >> $APACHE_CONF_DIR/$base_url.conf
|
||||
echo "Alias /$base_url $doc_root_in/$base_url" >> $APACHE_CONF_DIR/$base_url.conf
|
||||
echo "" >> $APACHE_CONF_DIR/$base_url.conf
|
||||
echo "<Directory $doc_root_in/$base_url>" >> $APACHE_CONF_DIR/$base_url.conf
|
||||
echo " AllowOverride Options" >> $APACHE_CONF_DIR/$base_url.conf
|
||||
echo " Options FollowSymLinks" >> $APACHE_CONF_DIR/$base_url.conf
|
||||
echo " DirectoryIndex index.php" >> $APACHE_CONF_DIR/$base_url.conf
|
||||
echo "</Directory>" >> $APACHE_CONF_DIR/$base_url.conf
|
||||
a2enconf -q $base_url
|
||||
systemctl reload apache2
|
||||
fi
|
||||
if [[ "$operation" == "installed" ]]
|
||||
then
|
||||
cp -f default-apache.conf $APACHE_CONF_DIR/$base_url.conf
|
||||
sed -i "s|_APPNAME_|$APP_NAME|g" $APACHE_CONF_DIR/$base_url.conf
|
||||
sed -i "s|_BASEURL_|$base_url|g" $APACHE_CONF_DIR/$base_url.conf
|
||||
sed -i "s|_DOCROOTIN_|$doc_root_in|g" $APACHE_CONF_DIR/$base_url.conf
|
||||
|
||||
echo -n "The apache2 $base_url configuration must be enabled. Would you like to do that now? [Y/n] :"
|
||||
read enconf
|
||||
if [ "$enconf" = "" -o "$enconf" = "Y" -o "$enconf" = "y" ]
|
||||
if [[ "$enconf" == "" || "$enconf" == "Y" || "$enconf" == "y" ]]
|
||||
then
|
||||
a2enconf $base_url.conf >/dev/null
|
||||
service apache2 reload
|
||||
a2enconf -q $base_url.conf >/dev/null
|
||||
systemctl reload apache2
|
||||
echo "You can now point a web browser to $base_url on your web server "
|
||||
echo "to set up and configure $APP_NAME."
|
||||
echo ""
|
||||
|
||||
26
maintenancemode.php
Normal file
26
maintenancemode.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/*
|
||||
maintenancemode.php
|
||||
OpenLog Online Logbook
|
||||
Copyright (C) 2026 Rod Wright
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0
|
||||
*/
|
||||
|
||||
echo "
|
||||
<html>
|
||||
<head>
|
||||
<title>_APPNAME_</title>
|
||||
<style type=\"text/css\">
|
||||
* {font-family: Arial, Helvetica, sans-serif;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<br><br><br><br>
|
||||
_APPNAME_ is currently down for maintenance. Please try again later.
|
||||
<br><br>
|
||||
</body>
|
||||
</html>
|
||||
";
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user