PATH:
home
/
letacommog
/
letacommunication
/
wp-content
/
plugins
/
mailin
/
model
<?php /** * Model class <i>SIB_Forms</i> represents forms * * @package SIB_Forms */ if ( ! class_exists( 'SIB_Forms' ) ) { /** * Class SIB_Forms * * @package SIB_Forms */ class SIB_Forms { /** * Tab table name */ const TABLE_NAME = 'sib_model_forms'; /** Create Table */ public static function createTable() { global $wpdb; // create list table. $creation_query = 'CREATE TABLE IF NOT EXISTS ' . $wpdb->prefix . self::TABLE_NAME . ' ( `id` int(20) NOT NULL AUTO_INCREMENT, `title` varchar(120) CHARACTER SET utf8 COLLATE utf8_unicode_ci, `html` longtext CHARACTER SET utf8 COLLATE utf8_unicode_ci, `css` longtext, `dependTheme` int(1) NOT NULL DEFAULT 1, `listID` longtext, `templateID` int(20) NOT NULL DEFAULT -1, `confirmID` int(20) NOT NULL DEFAULT -1, `isDopt` int(1) NOT NULL DEFAULT 0, `isOpt` int(1) NOT NULL DEFAULT 0, `redirectInEmail` varchar(255), `redirectInForm` varchar(255), `successMsg` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, `errorMsg` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, `existMsg` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, `invalidMsg` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, `requiredMsg` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, `attributes` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci, `date` DATE NOT NULL, `isDefault` int(1) NOT NULL DEFAULT 0, `gCaptcha` int(1) NOT NULL DEFAULT 0, `gCaptcha_secret` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, `gCaptcha_site` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, `termAccept` int(1) NOT NULL DEFAULT 0, `termsURL` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, PRIMARY KEY (`id`) );'; require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); $wpdb->query($creation_query); // create default form. $rows = $wpdb->get_results('SELECT * FROM '. $wpdb->prefix . self::TABLE_NAME ); if (count( $rows ) == 0 ) { self::createDefaultForm(); } } /** * Remove table */ public static function removeTable() { global $wpdb; $query = 'DROP TABLE IF EXISTS ' . $wpdb->prefix . self::TABLE_NAME . ';'; $wpdb->query( $query ); // db call ok; no-cache ok. } /** * Add columns for old versions */ public static function alterTable() { global $wpdb; // add columns -gCaptcha, gCaptcha_secret. $table_name = $wpdb->prefix . self::TABLE_NAME; // check if gCaptcha fields exist $gCaptcha = 'gCaptcha'; $result = $wpdb->query( $wpdb->prepare( "SHOW COLUMNS FROM `$table_name` LIKE %s ", $gCaptcha ) ); // db call ok; no-cache ok. if ( empty( $result ) ) { $alter_query = 'ALTER TABLE ' . $table_name . ' ADD COLUMN gCaptcha int(1) not NULL DEFAULT 0, ADD COLUMN gCaptcha_secret varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci, ADD COLUMN gCaptcha_site varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci'; $ret = $wpdb->query( $alter_query ); } // add columns -termAccept, termsURL : version 2.9.0 $check_query = 'SHOW COLUMNS FROM `' . $table_name . "` LIKE 'termAccept';"; $result = $wpdb->query( $check_query ); if ( empty( $result ) ) { $alter_query = 'ALTER TABLE ' . $table_name . ' ADD COLUMN termAccept int(1) not NULL DEFAULT 1, ADD COLUMN termsURL varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci'; $ret = $wpdb->query( $alter_query ); } // add columns - confirmID : version 2.9.0 $check_query = 'SHOW COLUMNS FROM `' . $table_name . "` LIKE 'confirmID';"; $result = $wpdb->query( $check_query ); if ( empty( $result ) ) { $alter_query = 'ALTER TABLE ' . $table_name . ' ADD COLUMN confirmID int(20) not NULL DEFAULT -1'; $ret = $wpdb->query( $alter_query ); } // add columns - requiredMsg : version 2.9.3 $check_query = 'SHOW COLUMNS FROM `' . $table_name . "` LIKE 'requiredMsg';"; $result = $wpdb->query( $check_query ); if ( empty( $result ) ) { $alter_query = 'ALTER TABLE ' . $table_name . ' ADD COLUMN requiredMsg varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci'; $ret = $wpdb->query( $alter_query ); } } /** * Get form data * * @param string $frmID - form ID. * @return array|null|object|void */ public static function getForm( $frmID = 'new' ) { global $wpdb; if ( 'new' == $frmID ) { // default form. $formData = self::getDefaultForm(); $list = maybe_serialize( array( SIB_API_Manager::get_default_list_id() ) ); $results = array( 'title' => '', 'html' => $formData['html'], 'css' => $formData['css'], 'listID' => $list, 'dependTheme' => '1', 'templateID' => '-1', 'confirmID' => '-1', 'isOpt' => '0', 'isDopt' => '0', 'redirectInEmail' => '', 'redirectInForm' => '', 'date' => date( 'Y-m-d' ), 'successMsg' => $formData['successMsg'], 'errorMsg' => $formData['errorMsg'], 'existMsg' => $formData['existMsg'], 'invalidMsg' => $formData['invalidMsg'], 'requiredMsg' => $formData['requiredMsg'], 'attributes' => 'email,NAME', ); } else { $query = $wpdb->prepare('SELECT * from ' . $wpdb->prefix . self::TABLE_NAME . ' where id = %d',array(esc_sql($frmID))); $results = $wpdb->get_row( $query, ARRAY_A ); // db call ok; no-cache ok. } if ( is_array( $results ) && count( $results ) > 0 ) { $listIDs = maybe_unserialize( $results['listID'] ); $results['listID'] = $listIDs; return $results; } return array(); } /** * Get all forms */ public static function getForms() { global $wpdb; $query = 'select * from ' . $wpdb->prefix . self::TABLE_NAME . ';'; $results = $wpdb->get_results( $query, ARRAY_A ); // db call ok; no-cache ok. if ( is_array( $results ) && count( $results ) > 0 ) { // add list names field to display form table. foreach ( $results as $key => $form ) { if ( SIB_Forms_Lang::check_form_trans( $form['id'] ) == true ) { unset( $results[ $key ] ); continue; } $listIDs = maybe_unserialize( $form['listID'] ); $listIDs = !empty($listIDs) ? $listIDs : array(); // get names form id array. $lists = SIB_API_Manager::get_lists(); // pair of id and name. $listNames = array(); foreach ( $lists as $list ) { if ( in_array( $list['id'], $listIDs ) ) { $listNames[] = $list['name']; } } $results[ $key ]['listName'] = implode( ',', $listNames ); $results[ $key ]['listID'] = $listIDs; } return $results; } return array(); } /** * Add new form * * @param array $formData - form data. * @return null|string */ public static function addForm( $formData ) { global $wpdb; $current_date = date( 'Y-m-d' ); global $wpdb; $query = 'INSERT INTO ' . $wpdb->prefix . self::TABLE_NAME.' (title,html,css,dependTheme,listID,templateID,confirmID,isOpt,isDopt,redirectInEmail,redirectInForm,successMsg,errorMsg,existMsg,invalidMsg,requiredMsg,attributes,date,gCaptcha,gCaptcha_secret,gCaptcha_site,termAccept,termsURL) VALUES '; $query .= ' (%s, %s, %s, %d, %s, %d, %d, %d, %d, %s, %s, %s, %s, %s, %s, %s, %s, %s, %d, %s, %s, %d, %s)'; $query = $wpdb->prepare($query,array($formData['title'],$formData['html'],$formData['css'],$formData['dependTheme'],$formData['listID'], $formData['templateID'],$formData['confirmID'],$formData['isOpt'],$formData['isDopt'],$formData['redirectInEmail'],$formData['redirectInForm'], $formData['successMsg'],$formData['errorMsg'],$formData['existMsg'],$formData['invalidMsg'],$formData['requiredMsg'],$formData['attributes'],$current_date,$formData['gcaptcha'],$formData['gcaptcha_secret'] ,$formData['gcaptcha_site'],$formData['termAccept'],$formData['termsURL'])); $wpdb->query( $query ); // db call ok; no-cache ok. $index = $wpdb->get_var( 'SELECT LAST_INSERT_ID();' ); // db call ok; no-cache ok. return $index; } /** * Update form * * @param int $formID - form ID. * @param array $formData - form data. * @return bool */ public static function updateForm( $formID, $formData ) { global $wpdb; $current_date = date( 'Y-m-d' ); global $wpdb; $query = 'UPDATE ' . $wpdb->prefix . self::TABLE_NAME ; $query .= " set title = %s, html = %s, css = %s, dependTheme = %d, listID = %s, templateID = %d, confirmID = %d, isOpt = %d, isDopt = %d, redirectInEmail = %s, redirectInForm = %s, successMsg = %s, errorMsg = %s, existMsg = %s, invalidMsg = %s, requiredMsg = %s, attributes = %s, date = %s, gCaptcha = %d, gCaptcha_secret = %s, gCaptcha_site = %s, termAccept = %d, termsURL = %s"; $query .= ' where id= %d'; $query = $wpdb->prepare( $query ,array($formData['title'],$formData['html'],$formData['css'],$formData['dependTheme'],$formData['listID'], $formData['templateID'],$formData['confirmID'],$formData['isOpt'],$formData['isDopt'],$formData['redirectInEmail'],$formData['redirectInForm'], $formData['successMsg'],$formData['errorMsg'],$formData['existMsg'],$formData['invalidMsg'],$formData['requiredMsg'],$formData['attributes'],$current_date,$formData['gcaptcha'],$formData['gcaptcha_secret'] ,$formData['gcaptcha_site'],$formData['termAccept'],$formData['termsURL'], esc_sql($formID))); $wpdb->query( $query ); // db call ok; no-cache ok. return true; } /** * Remove form * * @param int $id - target form id. */ public static function deleteForm( $id ) { global $wpdb; $wpdb->delete( $wpdb->prefix . self::TABLE_NAME, array( 'id' => $id, ) ); // db call ok; no-cache ok. } /** Clear forms data */ public static function removeAllForms() { global $wpdb; $wpdb->query( 'TRUNCATE TABLE ' . $wpdb->prefix . self::TABLE_NAME ); // db call ok; no-cache ok. return true; } /** Create default form */ public static function createDefaultForm() { $formData = self::getDefaultForm(); $html = $formData['html']; $css = $formData['css']; $list = maybe_serialize( array( SIB_API_Manager::get_default_list_id() ) ); $current_date = date( 'Y-m-d' ); $attributes = 'email,NAME'; global $wpdb; $query = 'INSERT INTO ' . $wpdb->prefix . self::TABLE_NAME . ' '; $deafult_form_name = esc_attr( __( 'Default Form', 'sib_lang' ) ); $query .= '(title,html,css,listID,dependTheme,successMsg,errorMsg,existMsg,invalidMsg,requiredMsg,attributes,date,isDefault) '; $query .= "VALUES ('{$deafult_form_name}','{$html}','{$css}','{$list}','1','{$formData['successMsg']}','{$formData['errorMsg']}','{$formData['existMsg']}','{$formData['invalidMsg']}','{$formData['requiredMsg']}','{$attributes}','{$current_date}','1')"; $wpdb->query( $query ); // db call ok; no-cache ok. } /** Get default form data */ public static function getDefaultForm() { $html = <<<EOD <p class="sib-email-area"> <label class="sib-email-area">Email Address*</label> <input type="email" class="sib-email-area" name="email" required="required"> </p> <p class="sib-NAME-area"> <label class="sib-NAME-area">Name</label> <input type="text" class="sib-NAME-area" name="NAME" > </p> <p> <input type="submit" class="sib-default-btn" value="Subscribe"> </p> EOD; $css = <<<EOD [form] { padding: 5px; -moz-box-sizing:border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } [form] input[type=text],[form] input[type=email], [form] select { width: 100%; border: 1px solid #bbb; height: auto; margin: 5px 0 0 0; } [form] .sib-default-btn { margin: 5px 0; padding: 6px 12px; color:#fff; background-color: #333; border-color: #2E2E2E; font-size: 14px; font-weight:400; line-height: 1.4285; text-align: center; cursor: pointer; vertical-align: middle; -webkit-user-select:none; -moz-user-select:none; -ms-user-select:none; user-select:none; white-space: normal; border:1px solid transparent; border-radius: 3px; } [form] .sib-default-btn:hover { background-color: #444; } [form] p{ margin: 10px 0 0 0; } EOD; $result = array( 'html' => $html, 'css' => $css, 'successMsg' => esc_attr( __( 'Thank you, you have successfully registered !', 'sib_lang' ) ), 'errorMsg' => esc_attr( __( 'Something wrong occured', 'sib_lang' ) ), 'existMsg' => esc_attr( __( 'You have already registered', 'sib_lang' ) ), 'invalidMsg' => esc_attr( __( 'Your email address is invalid', 'sib_lang' ) ), 'requiredMsg' => esc_attr(__('Please fill out this field', 'sib_lang')) ); return $result; } /** Get Default css */ public static function getDefaultMessageCss() { $css = <<<EOD [form] p.sib-alert-message { padding: 6px 12px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } [form] p.sib-alert-message-error { background-color: #f2dede; border-color: #ebccd1; color: #a94442; } [form] p.sib-alert-message-success { background-color: #dff0d8; border-color: #d6e9c6; color: #3c763d; } [form] p.sib-alert-message-warning { background-color: #fcf8e3; border-color: #faebcc; color: #8a6d3b; } EOD; return $css; } /** * Get form data of old version * We suppose that the clients have got own setting values for form. * If the client have default setting only then it will be return error. * This function will be removed after next version */ public static function get_old_form() { // create form from old version. $form_settings = get_option( 'sib_subscription_option' ); $html = $form_settings['sib_form_html']; $avail_atts = $form_settings['available_attributes']; $signup_settings = get_option( 'sib_signup_option' ); $is_confirm_email = 'yes' == $signup_settings['is_confirm_email'] ? 1 : 0; $is_double_optin = 'yes' == $signup_settings['is_double_optin'] ? 1 : 0; $redirect_url = $signup_settings['redirect_url']; $redirect_url_click = $signup_settings['redirect_url_click']; $template_id = 1 == $is_confirm_email ? $signup_settings['template_id'] : $signup_settings['doubleoptin_template_id']; $confirmMsg = get_option( 'sib_confirm_option' ); $homeSetting = get_option( 'sib_home_option' ); $sib_list = maybe_serialize( array( (string) $homeSetting['list_id'] ) ); $formData = array( 'title' => 'Old Form', 'html' => $html, 'css' => '', 'dependTheme' => '1', 'listID' => $sib_list, 'templateID' => $template_id, 'isOpt' => $is_confirm_email, 'isDopt' => $is_double_optin, 'redirectInEmail' => $redirect_url, 'redirectInForm' => $redirect_url_click, 'successMsg' => $confirmMsg['alert_success_message'], 'errorMsg' => $confirmMsg['alert_error_message'], 'existMsg' => $confirmMsg['alert_exist_subscriber'], 'invalidMsg' => $confirmMsg['alert_invalid_email'], 'attributes' => 'email,' . implode( ',', $avail_atts ), ); return $formData; } /** * Add prefix to the table */ public static function add_prefix() { global $wpdb; if (self::forms_table_exists()) { $query = 'ALTER TABLE ' . self::TABLE_NAME . ' RENAME TO ' . $wpdb->prefix . self::TABLE_NAME . ';'; $wpdb->query( $query ); // db call ok; no-cache ok. } } /** * Change datatype of attribute column */ public static function modify_datatype() { global $wpdb; if (self::forms_table_exists()) { $tableStructure = $wpdb->get_results( "DESC " . $wpdb->prefix . self::TABLE_NAME ); foreach ($tableStructure as $key => $value) { if($value->Field == "attributes" && $value->Type == "varchar(255)") $wpdb->query("ALTER TABLE ". $wpdb->prefix . self::TABLE_NAME." MODIFY ".$value->Field." TEXT DEFAULT NULL"); } } } /** * @return bool */ public static function forms_table_exists() { global $wpdb; return $wpdb->get_var( "SHOW TABLES LIKE '" . self::TABLE_NAME . "'" ) == self::TABLE_NAME; } } }
[+]
..
[-] model-users.php
[edit]
[-] model-contacts.php
[edit]
[-] model-lang.php
[edit]
[-] model-forms.php
[edit]
[-] index.php
[edit]