Merge remote-tracking branch 'origin/new/bug_7458'
[koha.git] / admin / checkmarc.pl
index 6721b2c..e08796f 100755 (executable)
 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 #
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA  02111-1307 USA
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 use strict;
+#use warnings; FIXME - Bug 2505
 use C4::Output;
 use C4::Auth;
 use CGI;
@@ -168,6 +169,7 @@ while (($res,$res2,$field) = $sth->fetchrow) {
     } else {
            $template->param(holdingbranch => 1);
            $total++;
+           last; #MR
     }
 }
 
@@ -208,7 +210,7 @@ if ($res) {
        $total++;
 }
 
-# verify that all of a field's subfields (except the ones explicitly ignore
+# verify that all of a field's subfields (except the ones explicitly ignored)
 # are in the same tab
 $sth = $dbh->prepare("SELECT tagfield, frameworkcode, frameworktext, GROUP_CONCAT(DISTINCT tab) AS tabs
                       FROM marc_subfield_structure
@@ -224,6 +226,24 @@ if (scalar(@$inconsistent_tabs) > 0) {
     $template->param(tab_info => $inconsistent_tabs);
 }
 
+# verify that authtypecodes used in the framework 
+# are defined in auth_types
+$sth = $dbh->prepare("SELECT frameworkcode, frameworktext, tagfield, tagsubfield, authtypecode
+                      FROM marc_subfield_structure
+                      LEFT JOIN biblio_framework USING (frameworkcode)
+                      WHERE authtypecode IS NOT NULL
+                      AND authtypecode <> ''
+                      AND tab > '-1'
+                      AND authtypecode NOT IN (SELECT authtypecode FROM auth_types)
+                      ORDER BY frameworkcode, tagfield, tagsubfield");
+$sth->execute;
+my $invalid_authtypecodes = $sth->fetchall_arrayref({});
+if (scalar(@$invalid_authtypecodes) > 0) {
+    $total++;
+    $template->param(invalid_authtypecodes => 1);
+    $template->param(authtypecode_info => $invalid_authtypecodes);
+}
+
 $template->param(total => $total,
                );