{"id":233,"date":"2019-03-28T09:58:00","date_gmt":"2019-03-28T02:58:00","guid":{"rendered":"https:\/\/www.rmuti.ac.th\/user\/suthep\/?p=233"},"modified":"2023-06-29T11:14:59","modified_gmt":"2023-06-29T04:14:59","slug":"%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-open-source-self-check-part-2","status":"publish","type":"post","link":"https:\/\/www.rmuti.ac.th\/user\/suthep\/%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b8%95%e0%b8%b4%e0%b8%94%e0%b8%95%e0%b8%b1%e0%b9%89%e0%b8%87-open-source-self-check-part-2\/","title":{"rendered":"\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Open Source Self Check Part 2"},"content":{"rendered":"\n<p>\u0e32\u0e01\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07&nbsp;\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Open Source Self Check Part I \u0e2b\u0e27\u0e31\u0e07\u0e27\u0e48\u0e32\u0e1c\u0e39\u0e49\u0e2d\u0e48\u0e32\u0e19\u0e04\u0e07\u0e08\u0e30\u0e28\u0e36\u0e01\u0e29\u0e32\u0e41\u0e25\u0e30\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e15\u0e48\u0e32\u0e07\u0e46 \u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e41\u0e25\u0e49\u0e27 \u0e16\u0e49\u0e32\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e41\u0e25\u0e49\u0e27\u0e01\u0e47\u0e21\u0e32\u0e25\u0e38\u0e22\u0e01\u0e31\u0e19\u0e15\u0e48\u0e2d\u0e40\u0e25\u0e22\u0e04\u0e23\u0e31\u0e1a<\/p>\n\n\n\n<p><strong>\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07<\/strong><\/p>\n\n\n\n<p><strong>\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48 1. \u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Open Source Self Check \u0e01\u0e23\u0e13\u0e35\u0e1a\u0e19&nbsp;Server<\/strong><\/p>\n\n\n\n<p>\u0e08\u0e32\u0e01\u0e01\u0e23\u0e13\u0e35\u0e19\u0e35\u0e49 \u0e08\u0e30\u0e2b\u0e21\u0e32\u0e22\u0e16\u0e36\u0e07 \u0e2b\u0e32\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e17\u0e48\u0e32\u0e19\u0e40\u0e2d\u0e07\u0e21\u0e35 Server \u0e17\u0e35\u0e48\u0e23\u0e2d\u0e07\u0e23\u0e31\u0e1a\u0e20\u0e32\u0e29\u0e32 PHP \u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27\u0e01\u0e47\u0e44\u0e21\u0e48\u0e21\u0e35\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e35\u0e48\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33\u0e2d\u0e30\u0e44\u0e23\u0e21\u0e32\u0e01\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e41\u0e15\u0e48\u0e1b\u0e23\u0e30\u0e2a\u0e32\u0e19\u0e01\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e41\u0e21\u0e48\u0e02\u0e48\u0e32\u0e22 \u0e27\u0e48\u0e32\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Open Source Self Check \u0e41\u0e15\u0e48\u0e17\u0e31\u0e49\u0e07\u0e19\u0e35\u0e49\u0e43\u0e2b\u0e49\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e27\u0e48\u0e32 \u0e44\u0e14\u0e49\u0e40\u0e1b\u0e34\u0e14 extension socket \u0e43\u0e19 PHP \u0e44\u0e27\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 \u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a \u0e44\u0e1f\u0e25\u0e4c php.ini \u0e27\u0e48\u0e32 \u0e44\u0e14\u0e49 Uncomment \u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14&nbsp;;extension=php_sockets.dll \u0e2b\u0e23\u0e37\u0e2d\u0e22\u0e31\u0e07\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e1b\u0e0f\u0e34\u0e1a\u0e31\u0e15\u0e34\u0e01\u0e32\u0e23 Windows \u0e41\u0e25\u0e49\u0e27\u0e17\u0e33\u0e15\u0e32\u0e21\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49<\/p>\n\n\n\n<p><em>\u0e1d\u0e31\u0e48\u0e07 Server<\/em><\/p>\n\n\n\n<p>1. Download&nbsp;<a href=\"https:\/\/web.archive.org\/web\/20150716112758\/https:\/\/code.google.com\/p\/open-source-self-check\/downloads\/list\">Open Source Self Check<\/a>&nbsp;\u0e2b\u0e23\u0e37\u0e2d\u0e2b\u0e32\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23 Version \u0e17\u0e35\u0e48\u0e1c\u0e21\u0e41\u0e25\u0e30\u0e17\u0e35\u0e21\u0e15\u0e48\u0e2d\u0e22\u0e2d\u0e14\u0e41\u0e15\u0e48\u0e22\u0e31\u0e07\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e1b\u0e25\u0e48\u0e2d\u0e22\u0e43\u0e2b\u0e49 Load \u0e01\u0e47\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e21\u0e32\u0e44\u0e14\u0e49\u0e04\u0e23\u0e31\u0e1a<\/p>\n\n\n\n<p>2. \u0e41\u0e15\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48 Download \u0e21\u0e32\u0e43\u0e19 Folder &nbsp;\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e40\u0e27\u0e47\u0e1a \u0e40\u0e0a\u0e48\u0e19 htdocs (\u0e01\u0e23\u0e38\u0e13\u0e32\u0e2a\u0e2d\u0e1a\u0e16\u0e32\u0e21\u0e08\u0e32\u0e01\u0e1c\u0e39\u0e49\u0e14\u0e39\u0e41\u0e25\u0e23\u0e30\u0e1a\u0e1a)<\/p>\n\n\n\n<p>3. \u0e41\u0e01\u0e49\u0e44\u0e02 File \u0e0a\u0e37\u0e48\u0e2d config.php \u0e14\u0e49\u0e27\u0e22 text editor \u0e14\u0e31\u0e07\u0e19\u0e35\u0e49 (\u0e01\u0e14 + expand source \u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39 Code \u0e17\u0e35\u0e48\u0e22\u0e48\u0e2d\u0e44\u0e27\u0e49) \u0e41\u0e25\u0e49\u0e27\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><em><strong>Config.php \u0e40\u0e14\u0e34\u0e21<\/strong><\/em><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n* Self Check\n*\n* This application provides a method of checking out and renewing materials via a web interface using 3M's SIP2 standard\n* Thanks to John Wohlers for his sip2 class -this application would not have come about without it\n*\n* If you make additions or other customizations that improve or extend the self check's\n* functionality I would love to hear about them.\n*\n* @author Eric Melton &lt;ericmelton@gmail.com&gt;\n* @licence http:\/\/opensource.org\/licenses\/gpl-3.0.html\n* @copyright Eric Melton &lt;ericmelton@gmail.com&gt;\n* @version 1.2\n*\/\n \n\/\/========================== SIP2 =================================\n$sip_hostname = '127.0.0.1';\n$sip_port = \"1\";\n$sip_login=''; \/\/if your SIP2 server does not require a username and password leave these empty\n$sip_password='';\n \n\/\/========================== Site Rules ==============================\n$sc_location='';\/\/enter a name for the self-check's location (e.g. 'East Branch') to track transactions in your SIP2 logs (in Polaris this is required and is the numeric organization ID)\n$allow_manual_userid_entry=false;\n$show_fines=true;\n$show_available_holds=true;\n$allow_email_receipts=false;\n$display_php_errors='on'; \/\/off or on\n$hide_cursor_pointer=false; \/\/hides default cursor pointer -should probably set to true on live self check\n \n\/\/========================== Logging =================================\n\/*\n use the query below to setup the mysql table (if you change the table name set\n the variable $log_table_name below equal to that new table name)\n \n CREATE TABLE `self_check_stats`\n (`id` int( 11 ) NOT NULL AUTO_INCREMENT ,\n `location` varchar( 50 ) DEFAULT NULL ,\n `count` int( 11 ) NOT NULL DEFAULT '0',\n `sessions` int( 11 ) NOT NULL DEFAULT '0',\n `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,\n PRIMARY KEY ( `id` ));\n \n*\/\n\/\/====================================================================\n$use_mysql_logging=false; \/* log your selfcheck checkout count by month?\n use the query above to set up the table *\/\n$log_table_name='self_check_stats';\n \n\/\/mysql connection info (ignore this if you're not using mysql logging)\n$dbhostname = \"localhost:3306\";\n$database = \"\";\n$dbusername = \"\";\n$dbpassword = \"\";\n \n\/\/====================== SIP2 Responses ==============\n\/*\n GET YOUR SYSTEM'S RESPONSE MESSAGES BY ENTERING YOUR SIP2 CONNECTION INFO ABOVE THEN OPENING responses.php\n IN YOUR BROWSER-THEY MUST BE KEPT UP TO DATE!\n These are case INsensitive.\n*\/\n\/\/====================================================================\n$already_ckdout_to_you='Item already charged to this user'; \/\/item already out to this borrower response\n \n\/\/====================== Wording, SMTP, &amp; Other Variables ==============\n$currency_symbol='$';\n$due_date_format='n\/j\/Y'; \/\/see http:\/\/php.net\/manual\/en\/function.date.php for information on formatting dates\n$inactivity_timeout=40000; \/\/time of inactivity before showing inactive prompt (in milliseconds)\n$account_check_timeout=15000; \/\/time of inactivity after patron card scan before showing out of order page (in milliseconds)\n$patron_id_length=; \/\/length of patron barcode or other id (leave empty if this varies)\n$online_catalog_url='http:\/\/publiclibrary.gov'; \/*leave blank if you don't have one or if your catalog does\n not allow renewals (this is for printing on the paper receipt and\n sending in the email receipt info about renewing online)*\/\n \n\/\/smtp (for emailing receipts)\n$smtp_host=\"\";\n$smtp_authentication=false;\n$smtp_username='';\n$smtp_pwd='';\n \n\/\/wording\n$library_name= \"Public Library\";\n$module_name='Self-Checkout Station'; \/\/shows on pages\/home.php and pages\/checkout.php\n$email_from_name=\"\"; \/\/library's email name\n$email_from_address=\"\"; \/\/library's email address\n$admin_emails=''; \/\/comma delimted list of email addresses that should be notified should the self-check go out of order\n$email_subject='Public Library Self-Checkout Receipt'; \/\/subject of email receipt\n$intro_screen_text=\"Scan your library card's barcode to begin\"; \/\/shown on pages\/home.php\n$welcome_screen_text=\"Scan an item's barcode to continue\"; \/\/shown on includes\/welcome.php\n$welcome_screen_subtext=\"(most barcodes are inside items' front covers)\";\n$renewal_prompt_text='is already checked out to your account.&lt;br \/&gt;Would you like to try to renew it?';\n$out_of_order_head='Out of Service'; \/\/shown on pages\/out_of_order.php\n$out_of_order_text='We are working to fix the problem'; \/\/shown on pages\/out_of_order.php\n \n\/\/====================== Paper &amp; Email Receipts ==============\n\/* add elements to or remove elements from the header &amp; footer arrays below to manipulate that piece of the receipt.\nthe elements will appear on separate lines of the receipt in the order that you place them below *\/\n$receipt_header&#91;]='Checkout Receipt';\n$receipt_header&#91;]=$library_name;\n$receipt_footer&#91;]='Renew your items online:';\n$receipt_footer&#91;]=$online_catalog_url;\n \n\/*place the following in the order you want the elements to appear in the item list on the\npaper and email receipts. remove (or comment out) any elements you don't want included.\nelement options include item_barcode, title, due_date, and call_number *\/\n$receipt_item_list_elements&#91;]='title';\n$receipt_item_list_elements&#91;]='call_number';\n$receipt_item_list_elements&#91;]='item_barcode';\n$receipt_item_list_elements&#91;]='due_date';\n \n\/\/========================= Sounds &amp; Images ==========================\n \/\/sounds\n$error_sound=\"sounds\/error.mp3\";\n$welcome_sound=\"sounds\/welcome.mp3\";\n$note_sound=\"sounds\/note.mp3\";\n \n \/\/images (you need to uncomment one -and only one- line from each group).\n\/*\n Keep in mind these are not the image files names -they are just meant to trigger the showing\n of the types of images listed here. For further customization, images are loaded in the following files:\n pages\/checkout.php , pages\/home.php, and includes\/welcome.php\n*\/\n \n \/\/======= group 1: home page images of library card =======\n\/\/$card_image='kpl';\n$card_image='barcoded';\n\/\/$card_image='magnetic';\n \n \/\/======= group 2: home and checkout page images of book ==\n$item_image='barcoded';\n\/\/$item_image='nonbarcoded';\n \n\/\/======================= Action Balloons =======================\n\/*\n \nThe following settings determine what types of materials will prompt the self check to issue an\naction message (a short message accompanied by a beep sound) upon checkout. You may want borrowers to unlock the cases of\nor desensitize certain types of items, for example, or give a reminder that a particular type of item has a\nshorter checkout period than other items like it.\n \nEach item that requires an action can have its action message triggered by 1) its item type OR 2) its permanent location.\n \nEach action balloon requires 2 variables set up in the following format:\n \n1) $action_balloon&#91;item type OR permanent location]&#91;'action_message']=action message;\n2) $action_balloon&#91;item type OR permanent location]&#91;'trigger']='item type' OR 'permanent location' OR 'call number prefix';\n \n2 examples:\n$action_balloon&#91;'CD']&#91;'action_message']='Please place your CDs inside one of the plastic bags near this station';\n$action_balloon&#91;'CD']&#91;'trigger']='permanent location';\n \n$action_balloon&#91;'EXPRESS DVDS']&#91;'action_message']='Express DVDs checkout for 3 days';\n$action_balloon&#91;'EXPRESS DVDS']&#91;'trigger']='item type';\n \n*\/\n\/\/======================================================================\n$action_balloon_bg_color='#f1cae1'; \/\/background color for action balloons\n\/\/$action_balloon&#91;'CD']&#91;'action_message']='Please place your CDs inside one of the plastic bags near this station';\n\/\/$action_balloon&#91;'CD']&#91;'trigger']='permanent location';\n \n\/\/==================================== Allowed IPs =======================\n\/*\n list each allowed ip on a new line as $allowed_ip&#91;]='IP';\n example: $allowed_ip&#91;]='192.168.0.2';\n $allowed_ip&#91;]='192.168.0.4';\n*\/\n$allowed_ip&#91;]=''; \/\/leave empty if you've already limited access to the self check via your server (Apache, IIS, etc.)\n \n\/\/==================================== Don't edit below this line =======================\nif (!in_array($_SERVER&#91;'REMOTE_ADDR'],$allowed_ip) &amp;&amp; !empty($allowed_ip&#91;0])){\n exit;\n}\nini_set('display_errors', $display_php_errors);\n?&gt;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-preformatted\"><em><strong>Config.php \u0e17\u0e35\u0e48\u0e41\u0e01\u0e49\u0e44\u0e02\u0e41\u0e25\u0e49\u0e27 \u0e2a\u0e31\u0e07\u0e40\u0e01\u0e15\u0e27\u0e48\u0e32\u0e17\u0e35\u0e48\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19\u0e20\u0e32\u0e29\u0e32\u0e44\u0e17\u0e22 (\u0e2d\u0e32\u0e08\u0e21\u0e35\u0e41\u0e15\u0e01\u0e15\u0e48\u0e32\u0e07\u0e01\u0e31\u0e1a\u0e15\u0e49\u0e19\u0e09\u0e1a\u0e31\u0e1a\u0e1a\u0e49\u0e32\u0e07\u0e40\u0e25\u0e47\u0e01\u0e19\u0e49\u0e2d\u0e22)<\/strong><\/em><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/**\n* Self Check\n*\n* This application provides a method of checking out and renewing materials via a web interface using 3M's SIP2 standard\n* Thanks to John Wohlers for his sip2 class -this application would not have come about without it\n*\n* If you make additions or other customizations that improve or extend the self check's\n* functionality I would love to hear about them.\n*\n* @author Eric Melton &lt;ericmelton@gmail.com&gt;\n* @licence http:\/\/opensource.org\/licenses\/gpl-3.0.html\n* @copyright Eric Melton &lt;ericmelton@gmail.com&gt;\n* @version 1.2\n*\/\n \n\/\/========================== SIP2 =================================\n$sip_hostname = '\u0e43\u0e2a\u0e48\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02 IP \u0e2b\u0e23\u0e37\u0e2d Hostname \u0e02\u0e2d\u0e07 SIP2 Server';\n$sip_port = '\u0e43\u0e2a\u0e48\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e25\u0e02\u0e1e\u0e2d\u0e23\u0e4c\u0e15\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a SIP2 Server';\n$sip_login= '\u0e43\u0e2a\u0e48 Username\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a SIP2 Server(\u0e16\u0e49\u0e32\u0e21\u0e35)'; \/\/if your SIP2 server does not require a username and password leave these empty\n$sip_password = '\u0e43\u0e2a\u0e48 Username\u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e01\u0e31\u0e1a SIP2 Server(\u0e16\u0e49\u0e32\u0e21\u0e35)';\n \n\/\/========================== Site Rules ==============================\n$sc_location = '\u0e43\u0e2a\u0e48 \u0e0a\u0e37\u0e48\u0e2d\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e23\u0e37\u0e2d\u0e1e\u0e37\u0e48\u0e19\u0e17\u0e35\u0e48\u0e17\u0e35\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07 self check';\/\/enter a name for the self-check's location (e.g. 'East Branch') to track transactions in your SIP2 logs (in Polaris this is required and is the numeric organization ID) CL park, Self Access Center 5 - 6, Library Floor 1 - 4 etc.\n$allow_manual_userid_entry = true; \/\/\u0e43\u0e2a\u0e48 true \u0e2b\u0e32\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e43\u0e2b\u0e49\u0e1b\u0e49\u0e2d\u0e19 username \u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e40\u0e2d\u0e07\u0e42\u0e14\u0e22\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e2d\u0e48\u0e32\u0e19\u0e1a\u0e31\u0e15\u0e23\n$show_fines = true;\n$show_available_holds = true;\n$allow_email_receipts = true;\n$display_php_errors = 'on'; \/\/off or on\n$hide_cursor_pointer = false; \/\/hides default cursor pointer -should probably set to true on live self check\n \n\/\/========================== Logging =================================\n\/*\n use the query below to setup the mysql table (if you change the table name set\n the variable $log_table_name below equal to that new table name)\n \n CREATE TABLE `self_check_stats`\n (`id` int( 11 ) NOT NULL AUTO_INCREMENT ,\n `location` varchar( 50 ) DEFAULT NULL ,\n `count` int( 11 ) NOT NULL DEFAULT '0',\n `sessions` int( 11 ) NOT NULL DEFAULT '0',\n `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,\n PRIMARY KEY ( `id` ));\n \n*\/\n\/\/====================================================================\n$use_mysql_logging = true; \/* log your selfcheck checkout count by month? use the query above to set up the table *\/\n$log_table_name = 'self_check_stats';\n \n\/\/mysql connection info (ignore this if you're not using mysql logging)\n$dbhostname = \"\";\n$database = \"\";\n$dbusername = \"\";\n$dbpassword = \"\";\n \n\/\/====================== SIP2 Responses ==============\n\/*\n GET YOUR SYSTEM'S RESPONSE MESSAGES BY ENTERING YOUR SIP2 CONNECTION INFO ABOVE THEN OPENING responses.php\n IN YOUR BROWSER-THEY MUST BE KEPT UP TO DATE!\n These are case INsensitive.\n*\/\n\/\/====================================================================\n\/\/$already_ckdout_to_you='Item already charged to this user'; \/\/item already out to this borrower response\n$already_ckdout_to_you = 'PASS&#91;Check out item succeeded.]'; \/\/item already out to this borrower response\n \n\/\/====================== Wording, SMTP, &amp; Other Variables ==============\n\/\/$currency_symbol='\u0e3f';\n$currency_symbol = NULL;\n$due_date_format = 'j\/n\/Y'; \/\/see http:\/\/php.net\/manual\/en\/function.date.php for information on formatting dates\n$inactivity_timeout = 40000; \/\/time of inactivity before showing inactive prompt (in milliseconds)\n$account_check_timeout = 20000; \/\/time of inactivity after patron card scan before showing out of order page (in milliseconds)\n \n\/\/$patron_id_length=NULL; \/\/length of patron barcode or other id (leave empty if this varies)\n$patron_id_length = 14;\n$enable_patron_password = true; \/\/Enable Patron Password Check\n \n$online_catalog_url = 'http:\/\/owpac.rmuti.ac.th'; \/\u0e43\u0e2a\u0e48 URL \u0e02\u0e2d\u0e07 OPAC *leave blank if you don't have one or if your catalog does\n not allow renewals (this is for printing on the paper receipt and\n sending in the email receipt info about renewing online)*\/\n \n\/\/smtp (for emailing receipts)\n$smtp_host = '';\n$smtp_authentication = false;\n$smtp_username = '';\n$smtp_pwd = '';\n \n\/\/wording\n$library_name = '\u0e41\u0e1c\u0e19\u0e01\u0e07\u0e32\u0e19\u0e2b\u0e49\u0e2d\u0e07\u0e2a\u0e21\u0e38\u0e14 \u0e1d\u0e48\u0e32\u0e22\u0e27\u0e34\u0e17\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23';\n$module_name = '\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e22\u0e37\u0e21\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34'; \/\/shows on pages\/home.php and pages\/checkout.php\n$email_from_name = '\u0e41\u0e1c\u0e19\u0e01\u0e07\u0e32\u0e19\u0e2b\u0e49\u0e2d\u0e07\u0e2a\u0e21\u0e38\u0e14'; \/\/library's email name\n$email_from_address = '\u0e41\u0e1c\u0e19\u0e01\u0e07\u0e32\u0e19\u0e2b\u0e49\u0e2d\u0e07\u0e2a\u0e21\u0e38\u0e14 \u0e1d\u0e48\u0e32\u0e22\u0e27\u0e34\u0e17\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \u0e2a\u0e33\u0e19\u0e31\u0e01\u0e27\u0e34\u0e17\u0e22\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e41\u0e25\u0e30\u0e40\u0e17\u0e04\u0e42\u0e19\u0e42\u0e25\u0e22\u0e35\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28'; \/\/library's email address\n$admin_emails = ''; \/\/comma delimted list of email addresses that should be notified should the self-check go out of order\n$email_subject = '\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e22\u0e37\u0e21\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28 \u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e22\u0e37\u0e21\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34'; \/\/subject of email receipt\n$intro_screen_text = \"\u0e1b\u0e49\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1a\u0e32\u0e23\u0e4c\u0e42\u0e04\u0e4a\u0e14\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e34\u0e48\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e23\u0e30\u0e1a\u0e1a !\"; \/\/shown on pages\/home.php\n$welcome_screen_text = '\u0e2a\u0e41\u0e01\u0e19\u0e1a\u0e32\u0e23\u0e4c\u0e42\u0e04\u0e4a\u0e14\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28 \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e22\u0e37\u0e21'; \/\/shown on includes\/welcome.php\n$welcome_screen_subtext = \"(\u0e1a\u0e32\u0e23\u0e4c\u0e42\u0e04\u0e4a\u0e14\u0e2d\u0e32\u0e08\u0e2d\u0e22\u0e39\u0e48\u0e14\u0e49\u0e32\u0e19\u0e43\u0e19\u0e41\u0e1c\u0e48\u0e19\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28)\";\n$renewal_prompt_text = '\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e2a\u0e32\u0e23\u0e2a\u0e19\u0e40\u0e17\u0e28\u0e19\u0e35\u0e49\u0e16\u0e39\u0e01\u0e22\u0e37\u0e21\u0e41\u0e25\u0e49\u0e27&lt;br \/&gt; \u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e22\u0e37\u0e21\u0e0b\u0e49\u0e33\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48 ?';\n$out_of_order_head = '\u0e23\u0e30\u0e1a\u0e1a\u0e02\u0e31\u0e14\u0e02\u0e49\u0e2d\u0e07 !'; \/\/shown on pages\/out_of_order.php\n$out_of_order_text = '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e14\u0e33\u0e40\u0e19\u0e34\u0e19\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e43\u0e02 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e40\u0e02\u0e49\u0e32\u0e2a\u0e39\u0e48\u0e23\u0e30\u0e1a\u0e1a\u0e43\u0e2b\u0e21\u0e48\u0e20\u0e32\u0e22\u0e2b\u0e25\u0e31\u0e07'; \/\/shown on pages\/out_of_order.php\n \n\/\/====================== Paper &amp; Email Receipts ==============\n\/* add elements to or remove elements from the header &amp; footer arrays below to manipulate that piece of the receipt.\nthe elements will appear on separate lines of the receipt in the order that you place them below *\/\n$receipt_header&#91;] = 'Checkout Receipt';\n$receipt_header&#91;] = $library_name;\n$receipt_footer&#91;] = 'Renew your items online:';\n$receipt_footer&#91;] = $online_catalog_url;\n \n\/*place the following in the order you want the elements to appear in the item list on the\npaper and email receipts. remove (or comment out) any elements you don't want included.\nelement options include item_barcode, title, due_date, and call_number *\/\n$receipt_item_list_elements&#91;] = 'title';\n$receipt_item_list_elements&#91;] = 'call_number';\n$receipt_item_list_elements&#91;] = 'item_barcode';\n$receipt_item_list_elements&#91;] = 'due_date';\n \n\/\/========================= Sounds &amp; Images ==========================\n \/\/sounds\n$error_sound = \"sounds\/error.mp3\";\n$welcome_sound = \"sounds\/welcome.mp3\";\n$note_sound = \"sounds\/note.mp3\";\n \n \/\/images (you need to uncomment one -and only one- line from each group).\n\/*\n Keep in mind these are not the image files names -they are just meant to trigger the showing\n of the types of images listed here. For further customization, images are loaded in the following files:\n pages\/checkout.php , pages\/home.php, and includes\/welcome.php\n*\/\n \n \/\/======= group 1: home page images of library card =======\n\/\/$card_image='kpl';\n$card_image = 'barcoded'; \/\/\u0e01\u0e23\u0e13\u0e35\u0e1a\u0e31\u0e15\u0e23\u0e40\u0e1b\u0e47\u0e19 Barcode \u0e43\u0e2b\u0e49 Uncomment \u0e2d\u0e2d\u0e01\n\/\/$card_image='magnetic';\n \n \/\/======= group 2: home and checkout page images of book ==\n$item_image = 'barcoded'; \/\/\u0e01\u0e23\u0e13\u0e35\u0e1a\u0e31\u0e15\u0e23\u0e40\u0e1b\u0e47\u0e19 Barcode \u0e43\u0e2b\u0e49 Uncomment \u0e2d\u0e2d\u0e01\n\/\/$item_image='nonbarcoded';\n \n\/\/======= Jason Encoding File welcome.php =======\n$cancle_button = '\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01';\n$thank_button = '\u0e02\u0e2d\u0e1a\u0e04\u0e38\u0e13\u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23\u0e04\u0e48\u0e30';\n$welcome_title = '\u0e22\u0e34\u0e19\u0e14\u0e35\u0e15\u0e49\u0e2d\u0e19\u0e23\u0e31\u0e1a...';\n\/\/======================= Action Balloons =======================\n\/*\n \nThe following settings determine what types of materials will prompt the self check to issue an\naction message (a short message accompanied by a beep sound) upon checkout. You may want borrowers to unlock the cases of\nor desensitize certain types of items, for example, or give a reminder that a particular type of item has a\nshorter checkout period than other items like it.\n \nEach item that requires an action can have its action message triggered by 1) its item type OR 2) its permanent location.\n \nEach action balloon requires 2 variables set up in the following format:\n \n1) $action_balloon&#91;item type OR permanent location]&#91;'action_message']=action message;\n2) $action_balloon&#91;item type OR permanent location]&#91;'trigger']='item type' OR 'permanent location' OR 'call number prefix';\n \n2 examples:\n$action_balloon&#91;'CD']&#91;'action_message']='Please place your CDs inside one of the plastic bags near this station';\n$action_balloon&#91;'CD']&#91;'trigger']='permanent location';\n \n$action_balloon&#91;'EXPRESS DVDS']&#91;'action_message']='Express DVDs checkout for 3 days';\n$action_balloon&#91;'EXPRESS DVDS']&#91;'trigger']='item type';\n \n*\/\n\/\/======================================================================\n$action_balloon_bg_color = '#f1cae1'; \/\/background color for action balloons\n\/\/$action_balloon&#91;'CD']&#91;'action_message']='Please place your CDs inside one of the plastic bags near this station';\n\/\/$action_balloon&#91;'CD']&#91;'trigger']='permanent location';\n \n\/\/==================================== Allowed IPs =======================\n\/*\n list each allowed ip on a new line as $allowed_ip&#91;]='IP';\n example: $allowed_ip&#91;]='192.168.0.2';\n $allowed_ip&#91;]='192.168.0.4';\n*\/\n$allowed_ip&#91;] = ''; \/\/leave empty if you've already limited access to the self check via your server (Apache, IIS, etc.)\n \n\/\/==================================== Don't edit below this line =======================\nif (!in_array($_SERVER&#91;'REMOTE_ADDR'],$allowed_ip) &amp;&amp; !empty($allowed_ip&#91;0])){\n exit;\n}\nini_set('display_errors', $display_php_errors);<\/code><\/pre>\n\n\n\n<p>4.\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49 \u0e15\u0e32\u0e21\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e40\u0e27\u0e47\u0e1a\u0e44\u0e0b\u0e15\u0e4c\u0e04\u0e37\u0e2d http:\/\/servername \u0e2b\u0e23\u0e37\u0e2d ip address\/folder\u0e17\u0e35\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 PHP Self check\/ \u0e40\u0e0a\u0e48\u0e19 \u0e02\u0e2d\u0e07\u0e1c\u0e21\u0e01\u0e47\u0e04\u0e37\u0e2d http:\/\/203.158.192.143\/selfcheck \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e19 (\u0e2d\u0e32\u0e08\u0e21\u0e35\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e32\u0e41\u0e1b\u0e25\u0e01\u0e44\u0e1b\u0e1a\u0e49\u0e32\u0e07\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e40\u0e1b\u0e47\u0e19 Code \u0e1a\u0e32\u0e07\u0e2a\u0e48\u0e27\u0e19\u0e17\u0e35\u0e48\u0e1b\u0e23\u0e31\u0e1a\u0e43\u0e2b\u0e49\u0e40\u0e02\u0e49\u0e32\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a\u0e41\u0e25\u0e30\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49\u0e17\u0e35\u0e48\u0e1c\u0e21\u0e17\u0e14\u0e2a\u0e2d\u0e1a) <em>\u0e1d\u0e31\u0e48\u0e07 Client<\/em><\/p>\n\n\n\n<p>5. \u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e17\u0e35\u0e48\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e25\u0e39\u0e01\u0e02\u0e48\u0e32\u0e22 \u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Browser \u0e40\u0e1b\u0e34\u0e14\u0e44\u0e1b\u0e17\u0e35\u0e48 URL \u0e43\u0e19\u0e02\u0e49\u0e2d 5 \u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e22\u0e37\u0e21\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23 \u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e2d\u0e48\u0e32\u0e19\u0e1a\u0e31\u0e15\u0e23\u0e2a\u0e21\u0e32\u0e0a\u0e34\u0e01\u0e17\u0e35\u0e48\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e25\u0e39\u0e01\u0e02\u0e48\u0e32\u0e22 \u0e1b\u0e49\u0e2d\u0e19\u0e23\u0e2b\u0e31\u0e2a\u0e1c\u0e48\u0e32\u0e19\u0e02\u0e2d\u0e07\u0e1c\u0e39\u0e49\u0e43\u0e0a\u0e49(\u0e16\u0e49\u0e32\u0e23\u0e30\u0e1a\u0e1a\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23) \u0e0b\u0e36\u0e48\u0e07\u0e08\u0e30\u0e40\u0e1b\u0e47\u0e19 User\/Password \u0e40\u0e14\u0e35\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e23\u0e30\u0e1a\u0e1a OPAC \u0e41\u0e25\u0e30\u0e25\u0e2d\u0e07\u0e22\u0e37\u0e21\u0e17\u0e23\u0e31\u0e1e\u0e22\u0e32\u0e01\u0e23\u0e15\u0e32\u0e21\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e17\u0e35\u0e48\u0e41\u0e19\u0e30\u0e19\u0e33\u0e1a\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e17\u0e14\u0e25\u0e2d\u0e07\u0e22\u0e37\u0e21 \u0e14\u0e39\u0e44\u0e14\u0e49\u0e08\u0e32\u0e01&nbsp;<a href=\"https:\/\/web.archive.org\/web\/20150716112758\/http:\/\/clpark.rmuti.ac.th\/suthep\/ideas\/%e0%b8%aa%e0%b8%b2%e0%b8%98%e0%b8%b4%e0%b8%95%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%83%e0%b8%8a%e0%b9%89%e0%b8%87%e0%b8%b2%e0%b8%99-open-source-self-check\">\u0e2a\u0e32\u0e18\u0e34\u0e15\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Open Source Self Check<\/a>&nbsp;\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22\u0e04\u0e23\u0e31\u0e1a \u0e41\u0e04\u0e48\u0e19\u0e35\u0e49\u0e01\u0e47\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e41\u0e25\u0e49\u0e27\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Open Source Self Check \u0e01\u0e23\u0e13\u0e35\u0e1a\u0e19&nbsp;Server<\/p>\n\n\n\n<p>\u0e40\u0e19\u0e37\u0e48\u0e2d\u0e07\u0e08\u0e32\u0e01\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e19\u0e35\u0e49\u0e04\u0e48\u0e2d\u0e19\u0e02\u0e49\u0e32\u0e07\u0e22\u0e32\u0e27 \u0e1c\u0e21\u0e02\u0e2d\u0e22\u0e01 \u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07&nbsp;\u0e41\u0e1a\u0e1a\u0e17\u0e35\u0e48 2. \u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Open Source Self Check \u0e1a\u0e19\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e04\u0e2d\u0e21\u0e1e\u0e34\u0e27\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e25\u0e39\u0e01\u0e02\u0e48\u0e32\u0e22 \u0e44\u0e1b\u0e44\u0e27\u0e49\u0e43\u0e19\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e19\u0e49\u0e32\u0e25\u0e30\u0e01\u0e31\u0e19\u0e19\u0e30\u0e04\u0e23\u0e31\u0e1a \u0e23\u0e31\u0e1a\u0e23\u0e2d\u0e07\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e2b\u0e19\u0e49\u0e32 \u0e44\u0e21\u0e48\u0e22\u0e32\u0e27\u0e41\u0e25\u0e49\u0e27\u0e04\u0e23\u0e31\u0e1a<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0e32\u0e01\u0e1a\u0e17\u0e04\u0e27\u0e32\u0e21\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e23\u0e37\u0e48\u0e2d\u0e07&nbsp;\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Open Source Self [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6,10],"tags":[27,28],"class_list":["post-233","post","type-post","status-publish","format-standard","hentry","category-ideas","category-works","tag-library-rfid","tag-28"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/posts\/233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/comments?post=233"}],"version-history":[{"count":2,"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/posts\/233\/revisions"}],"predecessor-version":[{"id":476,"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/posts\/233\/revisions\/476"}],"wp:attachment":[{"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/media?parent=233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/categories?post=233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rmuti.ac.th\/user\/suthep\/wp-json\/wp\/v2\/tags?post=233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}