Overview

Packages

  • currencysymbol
  • MAbout
  • Mage
    • Admin
    • Adminhtml
    • AdminNotification
    • Api
    • Api2
    • Authorizenet
    • Backup
    • Bundle
    • Captcha
    • Catalog
    • CatalogIndex
    • CatalogInventory
    • CatalogRule
    • CatalogSearch
    • Centinel
    • Checkout
    • Cms
    • Compiler
    • Connect
    • Contacts
    • Core
    • Cron
    • CurrencySymbol
    • Customer
    • Dataflow
    • Directory
    • DirtectPost
    • Downloadable
    • Eav
    • GiftMessage
    • GoogleAnalytics
    • GoogleBase
    • GoogleCheckout
    • ImportExport
    • Index
    • Install
    • Log
    • Media
    • Newsletter
    • Oauth
    • Page
    • PageCache
    • Paygate
    • Payment
    • Paypal
    • PaypalUk
    • Persistent
    • Poll
    • ProductAlert
    • Rating
    • Reports
    • Review
    • Rss
    • Rule
    • Sales
    • SalesRule
    • Sedfriend
    • Sendfriend
    • Shipping
    • Sitemap
    • Tag
    • Tax
    • Usa
    • Weee
    • Widget
    • Wishlist
    • XmlConnect
  • None
  • Phoenix
    • Moneybookers
  • PHP
  • Zend
    • Date
    • Mime
    • XmlRpc

Classes

  • Mage_XmlConnect_Adminhtml_MobileController
  • Mage_XmlConnect_Block_Adminhtml_History
  • Mage_XmlConnect_Block_Adminhtml_History_Grid
  • Mage_XmlConnect_Block_Adminhtml_Mobile
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Form
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Submission
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Cache
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Content
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Design
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Design_Accordion
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Design_Accordion_Images
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Design_Accordion_Tabs
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Design_Accordion_Themes
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Design_Preview
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Design_Themes
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Flurryanalytics
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_General
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Notification
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Payment
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Settings
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Social
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tab_Submission_History
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Edit_Tabs
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Form_Element_Addrow
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Form_Element_Color
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Form_Element_Country
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Form_Element_Datetime
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Form_Element_Font
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Form_Element_Image
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Form_Element_Page
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Form_Element_Tabs
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Form_Element_Theme
  • Mage_Xmlconnect_Block_Adminhtml_Mobile_Grid
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Grid_Renderer_Bool
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Grid_Renderer_Type
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Preview_Content
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Preview_Tabitems
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Submission
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Form
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Renderer_Country_Androidmarket
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Renderer_Country_Istore
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Tab_Container
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Tab_Container_Submission
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Submission_Tabs
  • Mage_XmlConnect_Block_Adminhtml_Mobile_Widget_Form
  • Mage_XmlConnect_Block_Adminhtml_Queue
  • Mage_XmlConnect_Block_Adminhtml_Queue_Edit
  • Mage_XmlConnect_Block_Adminhtml_Queue_Edit_Form
  • Mage_XmlConnect_Block_Adminhtml_Queue_Grid
  • Mage_XmlConnect_Block_Adminhtml_Queue_Grid_Renderer_Action
  • Mage_XmlConnect_Block_Adminhtml_Queue_Grid_Renderer_Application
  • Mage_XmlConnect_Block_Adminhtml_Queue_Grid_Renderer_Id
  • Mage_XmlConnect_Block_Adminhtml_Queue_Grid_Renderer_Msgtitle
  • Mage_XmlConnect_Block_Adminhtml_Queue_Grid_Renderer_Pushtitle
  • Mage_XmlConnect_Block_Adminhtml_Queue_Grid_Renderer_Status
  • Mage_XmlConnect_Block_Adminhtml_Queue_Grid_Renderer_Template
  • Mage_XmlConnect_Block_Adminhtml_Template
  • Mage_XmlConnect_Block_Adminhtml_Template_Edit
  • Mage_XmlConnect_Block_Adminhtml_Template_Edit_Form
  • Mage_XmlConnect_Block_Adminhtml_Template_Grid
  • Mage_XmlConnect_Block_Adminhtml_Template_Grid_Renderer_Application
  • Mage_XmlConnect_Block_Adminhtml_Template_Grid_Renderer_Name
  • Mage_XmlConnect_Block_Adminhtml_Template_Preview
  • Mage_XmlConnect_Block_Adminhtml_Template_Preview_Form
  • Mage_XmlConnect_Block_Cart
  • Mage_XmlConnect_Block_Cart_Crosssell
  • Mage_XmlConnect_Block_Cart_Info
  • Mage_XmlConnect_Block_Cart_Item_Renderer
  • Mage_XmlConnect_Block_Cart_Item_Renderer_Configurable
  • Mage_XmlConnect_Block_Cart_Item_Renderer_Grouped
  • Mage_XmlConnect_Block_Cart_Paypal_Mecl_Details
  • Mage_XmlConnect_Block_Cart_Paypal_Mecl_Review
  • Mage_XmlConnect_Block_Cart_Paypal_Mecl_Shippingmethods
  • Mage_XmlConnect_Block_Cart_Paypal_Mep_Totals
  • Mage_XmlConnect_Block_Cart_Totals
  • Mage_XmlConnect_Block_Catalog
  • Mage_XmlConnect_Block_Catalog_Category
  • Mage_XmlConnect_Block_Catalog_Category_Info
  • Mage_XmlConnect_Block_Catalog_Filters
  • Mage_XmlConnect_Block_Catalog_Product
  • Mage_XmlConnect_Block_Catalog_Product_Attributes
  • Mage_XmlConnect_Block_Catalog_Product_Gallery
  • Mage_XmlConnect_Block_Catalog_Product_List
  • Mage_XmlConnect_Block_Catalog_Product_Options
  • Mage_XmlConnect_Block_Catalog_Product_Options_Bundle
  • Mage_XmlConnect_Block_Catalog_Product_Options_Configurable
  • Mage_XmlConnect_Block_Catalog_Product_Options_Giftcard
  • Mage_XmlConnect_Block_Catalog_Product_Options_Grouped
  • Mage_XmlConnect_Block_Catalog_Product_Options_Simple
  • Mage_XmlConnect_Block_Catalog_Product_Options_Virtual
  • Mage_XmlConnect_Block_Catalog_Product_Price
  • Mage_XmlConnect_Block_Catalog_Product_Price_Bundle
  • Mage_XmlConnect_Block_Catalog_Product_Price_Default
  • Mage_XmlConnect_Block_Catalog_Product_Price_Giftcard
  • Mage_XmlConnect_Block_Catalog_Product_Related
  • Mage_XmlConnect_Block_Catalog_Product_Review
  • Mage_XmlConnect_Block_Catalog_Product_Review_List
  • Mage_XmlConnect_Block_Catalog_Search
  • Mage_XmlConnect_Block_Catalog_Search_Suggest
  • Mage_XmlConnect_Block_Checkout_Address_Billing
  • Mage_XmlConnect_Block_Checkout_Address_Form
  • Mage_XmlConnect_Block_Checkout_Address_Shipping
  • Mage_XmlConnect_Block_Checkout_Agreements
  • Mage_XmlConnect_Block_Checkout_Order_Review
  • Mage_XmlConnect_Block_Checkout_Order_Review_Info
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Authorizenet
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Ccsave
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Checkmo
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Authorizenet
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Ccsave
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Checkmo
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Free
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Paypal_Abstract
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Paypal_Express
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Paypal_Mecl
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Pbridge_Authorizenet
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Pbridge_Paypal_Direct
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Pbridge_Paypaluk_Direct
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Pbridge_Verisign
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Info_Purchaseorder
  • Mage_XmlConnect_Block_Checkout_Payment_Method_List
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Paypal_Direct
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Paypal_Payflow
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Pbridge_Abstract
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Pbridge_Authorizenet
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Pbridge_Paypal
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Pbridge_Paypaluk
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Pbridge_Verisign
  • Mage_XmlConnect_Block_Checkout_Payment_Method_Purchaseorder
  • Mage_XmlConnect_Block_Checkout_Pbridge_Result
  • Mage_XmlConnect_Block_Checkout_Shipping_Method_Available
  • Mage_XmlConnect_Block_Cms_Page
  • Mage_XmlConnect_Block_Configuration
  • Mage_XmlConnect_Block_Customer_Address_Form
  • Mage_XmlConnect_Block_Customer_Address_List
  • Mage_XmlConnect_Block_Customer_Form
  • Mage_XmlConnect_Block_Customer_Form_Renderer_Boolean
  • Mage_XmlConnect_Block_Customer_Form_Renderer_Date
  • Mage_XmlConnect_Block_Customer_Form_Renderer_File
  • Mage_XmlConnect_Block_Customer_Form_Renderer_Image
  • Mage_XmlConnect_Block_Customer_Form_Renderer_Multiline
  • Mage_XmlConnect_Block_Customer_Form_Renderer_Multiselect
  • Mage_XmlConnect_Block_Customer_Form_Renderer_Select
  • Mage_XmlConnect_Block_Customer_Form_Renderer_Text
  • Mage_XmlConnect_Block_Customer_Form_Renderer_Textarea
  • Mage_XmlConnect_Block_Customer_GiftcardCheck
  • Mage_XmlConnect_Block_Customer_Order_Details
  • Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Bundle
  • Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Default
  • Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Downloadable
  • Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Giftcard
  • Mage_XmlConnect_Block_Customer_Order_Item_Renderer_Grouped
  • Mage_XmlConnect_Block_Customer_Order_Items
  • Mage_XmlConnect_Block_Customer_Order_List
  • Mage_XmlConnect_Block_Customer_Order_Totals
  • Mage_XmlConnect_Block_Customer_Order_Totals_Customerbalance
  • Mage_XmlConnect_Block_Customer_Order_Totals_Customerbalance_Refunded
  • Mage_XmlConnect_Block_Customer_Order_Totals_Giftcards
  • Mage_XmlConnect_Block_Customer_Order_Totals_Tax
  • Mage_XmlConnect_Block_Customer_Storecredit
  • Mage_XmlConnect_Block_Home
  • Mage_XmlConnect_Block_Review_Form
  • Mage_XmlConnect_Block_Wishlist
  • Mage_XmlConnect_CartController
  • Mage_XmlConnect_CatalogController
  • Mage_XmlConnect_CheckoutController
  • Mage_XmlConnect_CmsController
  • Mage_XmlConnect_ConfigurationController
  • Mage_XmlConnect_Controller_Action
  • Mage_XmlConnect_CustomerController
  • Mage_XmlConnect_Helper_Android
  • Mage_XmlConnect_Helper_Catalog_Category_Image
  • Mage_XmlConnect_Helper_Customer_Form_Renderer
  • Mage_XmlConnect_Helper_Customer_Order
  • Mage_XmlConnect_Helper_Data
  • Mage_XmlConnect_Helper_Image
  • Mage_XmlConnect_Helper_Ipad
  • Mage_XmlConnect_Helper_Iphone
  • Mage_XmlConnect_Helper_Theme
  • Mage_XmlConnect_IndexController
  • Mage_XmlConnect_Model_Adminhtml_System_Config_Backend_Baseurl
  • Mage_XmlConnect_Model_Adminhtml_System_Config_Backend_Currency_Default
  • Mage_XmlConnect_Model_Application
  • Mage_XmlConnect_Model_Catalog_Category_Image
  • Mage_XmlConnect_Model_ConfigData
  • Mage_XmlConnect_Model_History
  • Mage_XmlConnect_Model_Mysql4_Application
  • Mage_XmlConnect_Model_Mysql4_Application_Collection
  • Mage_XmlConnect_Model_Mysql4_Cms_Page_Collection
  • Mage_XmlConnect_Model_Mysql4_ConfigData
  • Mage_XmlConnect_Model_Mysql4_ConfigData_Collection
  • Mage_XmlConnect_Model_Mysql4_Filter_Collection
  • Mage_XmlConnect_Model_Mysql4_History
  • Mage_XmlConnect_Model_Mysql4_History_Collection
  • Mage_XmlConnect_Model_Mysql4_Queue
  • Mage_XmlConnect_Model_Mysql4_Queue_Collection
  • Mage_XmlConnect_Model_Mysql4_Setup
  • Mage_XmlConnect_Model_Mysql4_Template
  • Mage_XmlConnect_Model_Mysql4_Template_Collection
  • Mage_XmlConnect_Model_Observer
  • Mage_XmlConnect_Model_Payment_Method_Paypal_Config
  • Mage_XmlConnect_Model_Payment_Method_Paypal_Mecl
  • Mage_XmlConnect_Model_Payment_Method_Paypal_Mep
  • Mage_XmlConnect_Model_Paypal_Mecl_Checkout
  • Mage_XmlConnect_Model_Paypal_Mep_Checkout
  • Mage_XmlConnect_Model_Preview_Abstract
  • Mage_XmlConnect_Model_Preview_Android
  • Mage_XmlConnect_Model_Preview_Ipad
  • Mage_XmlConnect_Model_Preview_Iphone
  • Mage_XmlConnect_Model_Queue
  • Mage_XmlConnect_Model_Resource_Application
  • Mage_XmlConnect_Model_Resource_Application_Collection
  • Mage_XmlConnect_Model_Resource_Cms_Page_Collection
  • Mage_XmlConnect_Model_Resource_ConfigData
  • Mage_XmlConnect_Model_Resource_ConfigData_Collection
  • Mage_XmlConnect_Model_Resource_Filter_Collection
  • Mage_XmlConnect_Model_Resource_History
  • Mage_XmlConnect_Model_Resource_History_Collection
  • Mage_XmlConnect_Model_Resource_Queue
  • Mage_XmlConnect_Model_Resource_Queue_Collection
  • Mage_XmlConnect_Model_Resource_Setup
  • Mage_XmlConnect_Model_Resource_Template
  • Mage_XmlConnect_Model_Resource_Template_Collection
  • Mage_XmlConnect_Model_Simplexml_Element
  • Mage_XmlConnect_Model_Simplexml_Form
  • Mage_XmlConnect_Model_Simplexml_Form_Abstract
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Abstract
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Checkbox
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Collection
  • Mage_XmlConnect_Model_Simplexml_Form_Element_CountryListSelect
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Date
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Email
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Fieldset
  • Mage_XmlConnect_Model_Simplexml_Form_Element_File
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Image
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Multiline
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Multiselect
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Select
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Text
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Textarea
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Validator
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Validator_Abstract
  • Mage_XmlConnect_Model_Simplexml_Form_Element_Validator_Rule
  • Mage_XmlConnect_Model_Tabs
  • Mage_XmlConnect_Model_Template
  • Mage_XmlConnect_Model_Theme
  • Mage_XmlConnect_Paypal_MeclController
  • Mage_XmlConnect_Paypal_MepController
  • Mage_XmlConnect_PbridgeController
  • Mage_XmlConnect_ReviewController
  • Mage_XmlConnect_WishlistController

Interfaces

  • Mage_XmlConnect_Model_Simplexml_Form_Element_Renderer_Interface
  • Overview
  • Package
  • Class
  • Tree
   1: <?php
   2: /**
   3:  * Magento
   4:  *
   5:  * NOTICE OF LICENSE
   6:  *
   7:  * This source file is subject to the Open Software License (OSL 3.0)
   8:  * that is bundled with this package in the file LICENSE.txt.
   9:  * It is also available through the world-wide-web at this URL:
  10:  * http://opensource.org/licenses/osl-3.0.php
  11:  * If you did not receive a copy of the license and are unable to
  12:  * obtain it through the world-wide-web, please send an email
  13:  * to license@magentocommerce.com so we can send you a copy immediately.
  14:  *
  15:  * DISCLAIMER
  16:  *
  17:  * Do not edit or add to this file if you wish to upgrade Magento to newer
  18:  * versions in the future. If you wish to customize Magento for your
  19:  * needs please refer to http://www.magentocommerce.com for more information.
  20:  *
  21:  * @category    Mage
  22:  * @package     Mage_XmlConnect
  23:  * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
  24:  * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
  25:  */
  26: 
  27: /**
  28:  * Xmlconnect Application model
  29:  *
  30:  * @method Mage_XmlConnect_Model_Resource_Application _getResource()
  31:  * @method Mage_XmlConnect_Model_Resource_Application getResource()
  32:  * @method string getName()
  33:  * @method Mage_XmlConnect_Model_Application setName(string $value)
  34:  * @method string getCode()
  35:  * @method Mage_XmlConnect_Model_Application setCode(string $value)
  36:  * @method string getType()
  37:  * @method Mage_XmlConnect_Model_Application setType(string $value)
  38:  * @method Mage_XmlConnect_Model_Application setStoreId(int $value)
  39:  * @method string getActiveFrom()
  40:  * @method Mage_XmlConnect_Model_Application setActiveFrom(string $value)
  41:  * @method string getActiveTo()
  42:  * @method Mage_XmlConnect_Model_Application setActiveTo(string $value)
  43:  * @method string getUpdatedAt()
  44:  * @method Mage_XmlConnect_Model_Application setUpdatedAt(string $value)
  45:  * @method int getStatus()
  46:  * @method Mage_XmlConnect_Model_Application setStatus(int $value)
  47:  * @method int getBrowsingMode()
  48:  * @method Mage_XmlConnect_Model_Application setBrowsingMode(int $value)
  49:  *
  50:  * @category    Mage
  51:  * @package     Mage_XmlConnect
  52:  * @author      Magento Core Team <core@magentocommerce.com>
  53:  */
  54: class Mage_XmlConnect_Model_Application extends Mage_Core_Model_Abstract
  55: {
  56:     /**
  57:      * Application code cookie name
  58:      */
  59:     const APP_CODE_COOKIE_NAME      = 'app_code';
  60: 
  61:     /**
  62:      * Device screen size name
  63:      */
  64:     const APP_SCREEN_SIZE_NAME      = 'screen_size';
  65: 
  66:     /**
  67:      * Device screen size name
  68:      */
  69:     const APP_SCREEN_SIZE_DEFAULT   = '320x480';
  70: 
  71:     /**
  72:      * Device screen size source name
  73:      */
  74:     const APP_SCREEN_SOURCE_DEFAULT = 'default';
  75: 
  76:     /**
  77:      * Application status "submitted" value
  78:      */
  79:     const APP_STATUS_SUCCESS    = 1;
  80: 
  81:     /**
  82:      * Application status "not submitted" value
  83:      */
  84:     const APP_STATUS_INACTIVE   = 0;
  85: 
  86:     /**
  87:      * Application prefix length of cutted part of deviceType and storeCode
  88:      */
  89:     const APP_PREFIX_CUT_LENGTH = 3;
  90: 
  91:     /**
  92:      * Last submitted data from history table
  93:      *
  94:      * @var null|array
  95:      */
  96:     protected $_lastParams;
  97: 
  98:     /**
  99:      * Application submit info
 100:      *
 101:      * @var array
 102:      */
 103:     protected $submit_params = array();
 104: 
 105:     /**
 106:      * Application submit action type
 107:      *
 108:      * @var bool
 109:      */
 110:     protected $is_resubmit_action = false;
 111: 
 112:     /**
 113:      * Full application code
 114:      *
 115:      * @var null|string
 116:      */
 117:     protected $code;
 118: 
 119:     /**
 120:      * Main configuration of current application
 121:      *
 122:      * @deprecated Serialized config storage has been removed
 123:      * @var null|array
 124:      */
 125:     protected $conf;
 126: 
 127:     /**
 128:      * Configuration model
 129:      *
 130:      * @var Mage_XmlConnect_Model_ConfigData
 131:      */
 132:     protected $_configModel;
 133: 
 134:     /**
 135:      * Flag of loaded configuration
 136:      *
 137:      * @var bool
 138:      */
 139:     protected $_isConfigurationLoaded = false;
 140: 
 141:     /**
 142:      * Social networking validation array
 143:      *
 144:      * Social networking validation array specified as
 145:      *      array (
 146:      *          network id => API key string length
 147:      *      )
 148:      *
 149:      * @var array
 150:      */
 151:     protected $_socialNetValidationArray = array(
 152:         Mage_XmlConnect_Helper_Data::SOCIAL_NETWORK_TWITTER,
 153:         Mage_XmlConnect_Helper_Data::SOCIAL_NETWORK_FACEBOOK,
 154:         Mage_XmlConnect_Helper_Data::SOCIAL_NETWORK_LINKEDIN,
 155:     );
 156: 
 157:     /**
 158:      * Submission/Resubmission key max length
 159:      */
 160:     const APP_MAX_KEY_LENGTH = 40;
 161: 
 162:     /**
 163:      * XML path to config with an email address
 164:      * for contact to receive credentials
 165:      * of Urban Airship notifications
 166:      */
 167:     const XML_PATH_CONTACT_CREDENTIALS_EMAIL        = 'xmlconnect/mobile_application/urbanairship_credentials_email';
 168: 
 169:     /**
 170:      * XML path to config with Urban Airship Terms of Service URL
 171:      */
 172:     const XML_PATH_URBAN_AIRSHIP_TOS_URL            = 'xmlconnect/mobile_application/urbanairship_terms_of_service_url';
 173: 
 174:     /**
 175:      * XML path to config with Urban Airship partner's login URL
 176:      */
 177:     const XML_PATH_URBAN_AIRSHIP_PARTNER_LOGIN_URL  = 'xmlconnect/mobile_application/urbanairship_login_url';
 178: 
 179:     /**
 180:      * XML path to config with Urban Airship Push notifications product URL
 181:      */
 182:     const XML_PATH_URBAN_AIRSHIP_ABOUT_PUSH_URL     = 'xmlconnect/mobile_application/urbanairship_push_url';
 183: 
 184:     /**
 185:      * XML path to config with Urban Airship Rich Push notifications product URL
 186:      */
 187:     const XML_PATH_URBAN_AIRSHIP_ABOUT_RICH_PUSH_URL    = 'xmlconnect/mobile_application/urbanairship_rich_push_url';
 188: 
 189:     /**
 190:      * XML path to config copyright data
 191:      */
 192:     const XML_PATH_DESIGN_FOOTER_COPYRIGHT          = 'design/footer/copyright';
 193: 
 194:     /**
 195:      * XML path to config restriction status
 196:      * (EE module)
 197:      */
 198:     const XML_PATH_GENERAL_RESTRICTION_IS_ACTIVE    = 'general/restriction/is_active';
 199: 
 200:     /**
 201:      * XML path to config restriction mode
 202:      * (EE module)
 203:      */
 204:     const XML_PATH_GENERAL_RESTRICTION_MODE         = 'general/restriction/mode';
 205: 
 206:     /**
 207:      * XML path to config secure base link URL
 208:      */
 209:     const XML_PATH_SECURE_BASE_LINK_URL             = 'web/secure/base_link_url';
 210: 
 211:     /**
 212:      * XML path to config for paypal business account
 213:      */
 214:     const XML_PATH_PAYPAL_BUSINESS_ACCOUNT          = 'paypal/general/business_account';
 215: 
 216:     /**
 217:      * XML path to config for default cache time
 218:      */
 219:     const XML_PATH_DEFAULT_CACHE_LIFETIME           = 'xmlconnect/mobile_application/cache_lifetime';
 220: 
 221:     /**
 222:      * XML path to How-To URL for twitter
 223:      */
 224:     const XML_PATH_HOWTO_TWITTER_URL                = 'xmlconnect/social_networking/howto_twitter_url';
 225: 
 226:     /**
 227:      * XML path to How-To URL for facebook
 228:      */
 229:     const XML_PATH_HOWTO_FACEBOOK_URL               = 'xmlconnect/social_networking/howto_facebook_url';
 230: 
 231:     /**
 232:      * XML path to How-To URL for linkedin
 233:      */
 234:     const XML_PATH_HOWTO_LINKEDIN_URL               = 'xmlconnect/social_networking/howto_linkedin_url';
 235: 
 236:     /**
 237:      * XML path to XmlConnect module version
 238:      */
 239:     const XML_PATH_MODULE_VERSION                   = 'modules/Mage_XmlConnect/innerVersion';
 240: 
 241:     /**
 242:      * Deprecated config flag
 243:      *
 244:      * @deprecated Serialized config storage has been removed
 245:      */
 246:     const DEPRECATED_CONFIG_FLAG                    = 'deprecated';
 247: 
 248:     /**
 249:      * Delete on update paths for config data
 250:      *
 251:      * @var array
 252:      */
 253:     protected $_deleteOnUpdateConfig    = array(
 254:         self::DEPRECATED_CONFIG_FLAG => 'native/pages'
 255:     );
 256: 
 257:     /**
 258:      * Initialize application
 259:      *
 260:      * @return null
 261:      */
 262:     protected function _construct()
 263:     {
 264:         $this->_init('xmlconnect/application');
 265:         $this->_configModel = Mage::getModel('xmlconnect/configData');
 266:         $this->_configModel->setDeleteOnUpdate($this->getDeleteOnUpdateConfig());
 267:     }
 268: 
 269:     /**
 270:      * Checks is it app is submitted
 271:      * (edit is premitted only before submission)
 272:      *
 273:      * @return bool
 274:      */
 275:     public function getIsSubmitted()
 276:     {
 277:         return $this->getStatus() == Mage_XmlConnect_Model_Application::APP_STATUS_SUCCESS;
 278:     }
 279: 
 280:     /**
 281:      * Load data (flat array) for Varien_Data_Form
 282:      *
 283:      * @return array
 284:      */
 285:     public function getFormData()
 286:     {
 287:         $data = $this->getData();
 288:         $data = Mage::helper('xmlconnect')->getDeviceHelper()->checkImages($data);
 289:         return $this->_flatArray($data);
 290:     }
 291: 
 292:     /**
 293:      * Load data (flat array) for Varien_Data_Form
 294:      *
 295:      * @param array $subtree
 296:      * @param string $prefix
 297:      * @return array
 298:      */
 299:     protected function _flatArray($subtree, $prefix=null)
 300:     {
 301:         $result = array();
 302:         foreach ($subtree as $key => $value) {
 303:             if (is_null($prefix)) {
 304:                 $name = $key;
 305:             } else {
 306:                 $name = $prefix . '[' . $key . ']';
 307:             }
 308: 
 309:             if (is_array($value)) {
 310:                 $result = array_merge($result, $this->_flatArray($value, $name));
 311:             } else {
 312:                 $result[$name] = $value;
 313:             }
 314:         }
 315:         return $result;
 316:     }
 317: 
 318:     /**
 319:      * Like array_merge_recursive(), but string values will be replaced
 320:      *
 321:      * @param array $array1
 322:      * @param array $array2
 323:      * @return array
 324:      */
 325:     protected function _configMerge(array $array1, array $array2)
 326:     {
 327:         $result = array();
 328:         $keys = array_unique(array_merge(array_keys($array1), array_keys($array2)));
 329:         foreach ($keys as $key) {
 330:             if (!isset($array1[$key])) {
 331:                 $result[$key] = $array2[$key];
 332:             } elseif (!isset($array2[$key])) {
 333:                 $result[$key] = $array1[$key];
 334:             } elseif (is_scalar($array1[$key]) || is_scalar($array2[$key])) {
 335:                 $result[$key] = $array2[$key];
 336:             } else {
 337:                 $result[$key] = $this->_configMerge($array1[$key], $array2[$key]);
 338:             }
 339:         }
 340:         return $result;
 341:     }
 342: 
 343:     /**
 344:      * Set default configuration data
 345:      *
 346:      * @return null
 347:      */
 348:     public function loadDefaultConfiguration()
 349:     {
 350:         $this->setCode($this->getCodePrefix());
 351:         $this->setConf(Mage::helper('xmlconnect')->getDeviceHelper()->getDefaultConfiguration());
 352:     }
 353: 
 354:     /**
 355:      * Return first part for application code field
 356:      *
 357:      * @return string
 358:      */
 359:     public function getCodePrefix()
 360:     {
 361:         return substr(Mage::app()->getStore($this->getStoreId())->getCode(), 0, self::APP_PREFIX_CUT_LENGTH)
 362:             . substr($this->getType(), 0, self::APP_PREFIX_CUT_LENGTH);
 363:     }
 364: 
 365:     /**
 366:      * Checks if application code field has autoincrement
 367:      *
 368:      * @return bool
 369:      */
 370:     public function isCodePrefixed()
 371:     {
 372:         $suffix = substr($this->getCode(), self::APP_PREFIX_CUT_LENGTH * 2);
 373:         return !empty($suffix);
 374:     }
 375: 
 376:     /**
 377:      * Load application configuration
 378:      *
 379:      * @deprecated Serialized config storage has been removed
 380:      * @return array
 381:      */
 382:     public function prepareConfiguration()
 383:     {
 384:         return $this->getData('conf');
 385:     }
 386: 
 387:     /**
 388:      * Get config formatted for rendering
 389:      *
 390:      * @return array
 391:      */
 392:     public function getRenderConf()
 393:     {
 394:         $result = Mage::helper('xmlconnect')->getDeviceHelper()->getDefaultConfiguration();
 395:         $result = $result['native'];
 396: 
 397:         if (isset($this->_data['conf'])) {
 398:             if (isset($this->_data['conf']['native'])) {
 399:                 $result = $this->_configMerge($result, $this->_data['conf']['native']);
 400:             }
 401:             if (isset($this->_data['conf']['extra'])) {
 402:                 $extra = $this->_data['conf']['extra'];
 403:                 if (isset($extra['tabs'])) {
 404:                     $tabs = Mage::getModel('xmlconnect/tabs', $extra['tabs']);
 405:                     $result['tabBar']['tabs'] = $tabs;
 406:                 }
 407:                 if (isset($extra['fontColors'])) {
 408:                     if (!empty($extra['fontColors']['header'])) {
 409:                         $result['fonts']['Title1']['color'] = $extra['fontColors']['header'];
 410:                     }
 411:                     if (!empty($extra['fontColors']['primary'])) {
 412:                         $result['fonts']['Title2']['color'] = $extra['fontColors']['primary'];
 413:                         $result['fonts']['Title3']['color'] = $extra['fontColors']['primary'];
 414:                         $result['fonts']['Text1']['color']  = $extra['fontColors']['primary'];
 415:                         $result['fonts']['Text2']['color']  = $extra['fontColors']['primary'];
 416:                         $result['fonts']['Title7']['color'] = $extra['fontColors']['primary'];
 417:                     }
 418:                     if (!empty($extra['fontColors']['secondary'])) {
 419:                         $result['fonts']['Title4']['color'] = $extra['fontColors']['secondary'];
 420:                         $result['fonts']['Title6']['color'] = $extra['fontColors']['secondary'];
 421:                         $result['fonts']['Title8']['color'] = $extra['fontColors']['secondary'];
 422:                         $result['fonts']['Title9']['color'] = $extra['fontColors']['secondary'];
 423:                     }
 424:                     if (!empty($extra['fontColors']['price'])) {
 425:                         $result['fonts']['Title5']['color'] = $extra['fontColors']['price'];
 426:                     }
 427:                 }
 428:             }
 429:         }
 430: 
 431:         /** @var $helperImage Mage_XmlConnect_Helper_Image */
 432:         $helperImage = Mage::helper('xmlconnect/image');
 433:         $paths = $helperImage->getInterfaceImagesPathsConf();
 434: 
 435:         foreach ($paths as $confPath => $dataPath) {
 436:             $imageNodeValue =& $helperImage->findPath($result, $dataPath);
 437: 
 438:             if (!$helperImage->checkAndGetImagePath($imageNodeValue)) {
 439:                 /**
 440:                  * We set empty string to get default image if original was missing in some reason
 441:                  */
 442:                 $imageNodeValue = '';
 443:             } else {
 444:                 /**
 445:                  * Creating file ending (some_inner/some_dir/filename.png) For url
 446:                  */
 447:                 $imageNodeValue = $helperImage->getFileCustomDirSuffixAsUrl($confPath, $imageNodeValue);
 448:             }
 449:         }
 450:         $result = $this->_absPath($result);
 451: 
 452:         /**
 453:          * General configuration
 454:          */
 455:         $result['general']['updateTimeUTC'] = strtotime($this->getUpdatedAt());
 456:         $result['general']['browsingMode'] = $this->getBrowsingMode();
 457:         $result['general']['currencyCode'] = Mage::app()->getStore($this->getStoreId())->getDefaultCurrencyCode();
 458:         $result['general']['secureBaseUrl'] = $this->getSecureBaseUrl();
 459: 
 460:         $maxRecipients  = 0;
 461:         $allowGuest     = 0;
 462:         if (Mage::getStoreConfig(Mage_Sendfriend_Helper_Data::XML_PATH_ENABLED)) {
 463:             $maxRecipients = Mage::getStoreConfig(Mage_Sendfriend_Helper_Data::XML_PATH_MAX_RECIPIENTS);
 464:             $allowGuest = Mage::getStoreConfig(Mage_Sendfriend_Helper_Data::XML_PATH_ALLOW_FOR_GUEST);
 465:         }
 466:         $result['general']['emailToFriendMaxRecepients'] = $maxRecipients;
 467:         $result['general']['emailAllowGuest'] = $allowGuest;
 468:         $result['general']['primaryStoreLang'] = Mage::app()
 469:             ->getStore($this->getStoreId())->getConfig(Mage_Core_Model_Locale::XML_PATH_DEFAULT_LOCALE);
 470:         $result['general']['magentoVersion'] = Mage::getVersion();
 471:         $result['general']['copyright'] = Mage::getStoreConfig(
 472:             self::XML_PATH_DESIGN_FOOTER_COPYRIGHT, $this->getStoreId()
 473:         );
 474:         $result['general']['xmlconnectVersion'] = Mage::getConfig()->getNode(self::XML_PATH_MODULE_VERSION);
 475: 
 476:         $result['general']['isAllowedGuestCheckout'] = (int)Mage::getSingleton('checkout/session')
 477:             ->getQuote()->isAllowedGuestCheckout();
 478: 
 479:         /**
 480:          * Check is guest can post product reviews
 481:          */
 482:         if (Mage::helper('review')->getIsGuestAllowToWrite()) {
 483:             $result['general']['isAllowedGuestReview'] = '1';
 484:         } else {
 485:             $result['general']['isAllowedGuestReview'] = '0';
 486:         }
 487: 
 488:         /**
 489:         * Check is wishlist enabled in a config
 490:         */
 491:         if (Mage::getStoreConfigFlag('wishlist/general/active')) {
 492:             $result['general']['wishlistEnable'] = '1';
 493:         } else {
 494:             $result['general']['wishlistEnable'] = '0';
 495:         }
 496: 
 497:         /**
 498:          * "Use Secure URLs in Frontend" flag
 499:          */
 500:         $result['general']['useSecureURLInFrontend'] = $this->getUseSecureURLInFrontend();
 501: 
 502:         /**
 503:          * Is enabled Store credit functionality
 504:          */
 505:         if (is_object(Mage::getConfig()->getNode('modules/Enterprise_CustomerBalance'))) {
 506:             $storeCreditFlag = Mage::getStoreConfig(Enterprise_CustomerBalance_Helper_Data::XML_PATH_ENABLED);
 507:             $isStoreCreditEnable = (int)$storeCreditFlag;
 508:             $canShowHistoryFlag = (int) Mage::getStoreConfigFlag(
 509:                 'customer/enterprise_customerbalance/show_history'
 510:             );
 511:         } else {
 512:             $isStoreCreditEnable = $canShowHistoryFlag = 0;
 513:         }
 514:         $result['general']['isStoreCreditEnabled'] = $isStoreCreditEnable;
 515:         $result['general']['isStoreCreditHistoryEnabled'] = $canShowHistoryFlag;
 516: 
 517:         /**
 518:          * Is available Gift Card functionality
 519:          */
 520:         $result['general']['isGiftcardEnabled'] = (int) is_object(
 521:             Mage::getConfig()->getNode('modules/Enterprise_GiftCard')
 522:         );
 523: 
 524:         /**
 525:          * PayPal configuration
 526:          */
 527:         $result['paypal']['businessAccount'] = Mage::getModel('paypal/config')->businessAccount;
 528:         $result['paypal']['merchantLabel'] = $this->getData('conf/special/merchantLabel');
 529: 
 530:         $isActive = 0;
 531:         $paypalMepIsAvailable = Mage::getModel('xmlconnect/payment_method_paypal_mep')->isAvailable(null);
 532:         if ($paypalMepIsAvailable && isset($result['paypal']['isActive'])) {
 533:             $isActive = (int) $result['paypal']['isActive'];
 534:         }
 535:         $result['paypal']['isActive'] = $isActive;
 536: 
 537:         $paypalMeclIsAvailable = Mage::getModel('xmlconnect/payment_method_paypal_mecl')->isAvailable(null);
 538: 
 539:         /**
 540:          * PayPal Mobile Express Library Checkout
 541:          */
 542:         $result['paypalMecl']['isActive'] = (int) (
 543:             $paypalMeclIsAvailable
 544:             && $this->getData('config_data/payment/paypalmecl_is_active')
 545:         );
 546: 
 547:         if ((int)Mage::getStoreConfig(self::XML_PATH_GENERAL_RESTRICTION_IS_ACTIVE)) {
 548:             $result['website_restrictions']['mode'] = (int)Mage::getStoreConfig(
 549:                 self::XML_PATH_GENERAL_RESTRICTION_MODE
 550:             );
 551:         }
 552: 
 553:         ksort($result);
 554:         return $result;
 555:     }
 556: 
 557:     /**
 558:      * Get secure base url
 559:      *
 560:      * @return string
 561:      */
 562:     public function getSecureBaseUrl()
 563:     {
 564:         return Mage::getStoreConfig(self::XML_PATH_SECURE_BASE_LINK_URL, $this->getStoreId());
 565:     }
 566: 
 567:     /**
 568:      * Is forced front secure url
 569:      *
 570:      * @return int
 571:      */
 572:     public function getUseSecureURLInFrontend()
 573:     {
 574:         return (int) Mage::getStoreConfigFlag(Mage_Core_Model_Store::XML_PATH_SECURE_IN_FRONTEND);
 575:     }
 576: 
 577:     /**
 578:      * Return current screen_size parameter
 579:      *
 580:      * @return string
 581:      */
 582:     public function getScreenSize()
 583:     {
 584:         if (!isset($this->_data['screen_size'])) {
 585:             $this->_data['screen_size'] = self::APP_SCREEN_SIZE_DEFAULT;
 586:         }
 587:         return $this->_data['screen_size'];
 588:     }
 589: 
 590:     /**
 591:      * Setter
 592:      * for current screen_size parameter
 593:      *
 594:      * @param string $screenSize
 595:      * @return this
 596:      */
 597:     public function setScreenSize($screenSize)
 598:     {
 599:         $this->_data['screen_size'] = Mage::helper('xmlconnect/image')->filterScreenSize((string) $screenSize);
 600:         return $this;
 601:     }
 602: 
 603:     /**
 604:      * Return Enabled Tabs array from actual config
 605:      *
 606:      * @return array:
 607:      */
 608:     public function getEnabledTabsArray()
 609:     {
 610:         if ($this->getData('conf/extra/tabs')) {
 611:             return Mage::getModel('xmlconnect/tabs', $this->getData('conf/extra/tabs'))->getRenderTabs();
 612:         }
 613:         return array();
 614:     }
 615: 
 616:     /**
 617:      * Change URLs to absolute
 618:      *
 619:      * @param array $subtree
 620:      * @return array
 621:      */
 622:     protected function _absPath($subtree)
 623:     {
 624:         foreach ($subtree as $key => $value) {
 625:             if (!empty($value)) {
 626:                 if (is_array($value)) {
 627:                     $subtree[$key] = $this->_absPath($value);
 628:                 } elseif (strtolower(substr($key, -4)) == 'icon' || strtolower(substr($key, -5)) == 'image') {
 629:                     $subtree[$key] = Mage::getBaseUrl('media') . 'xmlconnect/' . $value;
 630:                 }
 631:             }
 632:         }
 633:         return $subtree;
 634:     }
 635: 
 636:     /**
 637:      * Return content pages
 638:      *
 639:      * @return array
 640:      */
 641:     public function getPages()
 642:     {
 643:         if (isset($this->_data['conf']['native']['pages'])) {
 644:             return $this->_data['conf']['native']['pages'];
 645:         }
 646:         return array();
 647:     }
 648: 
 649:     /**
 650:      * Get configuration model
 651:      *
 652:      * @return Mage_XmlConnect_Model_ConfigData
 653:      */
 654:     public function getConfigModel()
 655:     {
 656:         return $this->_configModel;
 657:     }
 658: 
 659:     /**
 660:      * Processing object before save data
 661:      *
 662:      * @return Mage_XmlConnect_Model_Application
 663:      */
 664:     protected function _beforeSave()
 665:     {
 666:         $this->setUpdatedAt(Mage::getSingleton('core/date')->gmtDate());
 667:         return $this;
 668:     }
 669: 
 670:     /**
 671:      * Processing object after save data
 672:      *
 673:      * @return Mage_XmlConnect_Model_Application
 674:      */
 675:     protected function _afterSave()
 676:     {
 677:         $this->_saveConfigData();
 678:         $this->_saveDeprecatedConfig();
 679:         parent::_afterSave();
 680:         return $this;
 681:     }
 682: 
 683:     /**
 684:      * Save configuration data of application model
 685:      *
 686:      * @return Mage_XmlConnect_Model_Application
 687:      */
 688:     protected function _saveConfigData()
 689:     {
 690:         $configuration = $this->getData('config_data');
 691:         if (is_array($configuration)) {
 692:             $this->getConfigModel()->setConfigData($this->getId(), $configuration)->initSaveConfig();
 693:         }
 694:         return $this;
 695:     }
 696: 
 697:     /**
 698:      * Save old deprecated config to application config data table
 699:      *
 700:      * @deprecated Serialized config storage has been removed
 701:      * @return Mage_XmlConnect_Model_Application
 702:      */
 703:     private function _saveDeprecatedConfig()
 704:     {
 705:         $deprecatedConfig = $this->getData('conf');
 706:         if (is_array($deprecatedConfig)) {
 707:             $this->getConfigModel()->saveConfig(
 708:                 $this->getId(), $this->convertOldConfing($deprecatedConfig), self::DEPRECATED_CONFIG_FLAG
 709:             );
 710:         }
 711:         return $this;
 712:     }
 713: 
 714:     /**
 715:      * Convert deprecated configuration array to new standard
 716:      *
 717:      * @deprecated Serialized config storage has been removed
 718:      * @param array $conf
 719:      * @param bool $path
 720:      * @return array
 721:      */
 722:     public function convertOldConfing(array $conf, $path = false)
 723:     {
 724:         $result = array();
 725:         foreach ($conf as $key => $val) {
 726:             $key = $path ? $path . '/' . $key : $key;
 727:             if (is_array($val)) {
 728:                 $result += $this->convertOldConfing($val, $key);
 729:             } else {
 730:                 $result[$key] = $val;
 731:             }
 732:         }
 733:         return $result;
 734:     }
 735: 
 736:     /**
 737:      * Load configuration data (from serialized blob)
 738:      *
 739:      * @return Mage_XmlConnect_Model_Application
 740:      */
 741:     public function loadConfiguration()
 742:     {
 743:         if (!$this->_isConfigurationLoaded) {
 744:             if ($this->getId()) {
 745:                 $this->_loadDeprecatedConfig()->_loadConfigData();
 746:                 $this->_isConfigurationLoaded = true;
 747:             }
 748:         }
 749:         return $this;
 750:     }
 751: 
 752:     /**
 753:      * Load configuration data
 754:      *
 755:      * @internal re-factoring in progress
 756:      * @return Mage_XmlConnect_Model_Application
 757:      */
 758:     protected function _loadConfigData()
 759:     {
 760:         $configuration = $this->getConfigModel()->getCollection()->addArrayFilter(array(
 761:             'application_id' => $this->getId(),
 762:             'category' => 'payment'
 763:         ))->toOptionArray();
 764: 
 765:         $this->setData('config_data', $configuration);
 766:         return $this;
 767:     }
 768: 
 769:     /**
 770:      * Load deprecated configuration
 771:      *
 772:      * @deprecated Serialized config storage has been removed
 773:      * @return Mage_XmlConnect_Model_Application
 774:      */
 775:     private function _loadDeprecatedConfig()
 776:     {
 777:         $configuration = $this->_convertConfig(
 778:             $this->getConfigModel()->getCollection()->addArrayFilter(array(
 779:                 'application_id' => $this->getId(),
 780:                 'category' => self::DEPRECATED_CONFIG_FLAG
 781:             ))->toOptionArray()
 782:         );
 783:         $this->setData('conf', $configuration);
 784:         return $this;
 785:     }
 786: 
 787:     /**
 788:      * Convert old config data array
 789:      *
 790:      * @deprecated  Serialized config storage has been removed
 791:      * @param  $config
 792:      * @return array
 793:      */
 794:     protected function _convertConfig($config)
 795:     {
 796:         $result = array();
 797:         foreach ($config as $values) {
 798:             foreach ($values as $path => $value) {
 799:                 if (preg_match('@[^\w\/]@', $path)) {
 800:                     Mage::throwException(
 801:                         Mage::helper('xmlconnect')->__('Unsupported character in path: "%s"', $path)
 802:                     );
 803:                 }
 804:                 $keyArray = explode('/', $path);
 805:                 $keys = '$result["' . implode('"]["', $keyArray) . '"]';
 806:                 eval($keys . ' = $value;');
 807:             }
 808:         }
 809:         return $result;
 810:     }
 811: 
 812:     /**
 813:      * Load application by code
 814:      *
 815:      * @param string $code
 816:      * @return Mage_XmlConnect_Model_Application
 817:      */
 818:     public function loadByCode($code)
 819:     {
 820:         $this->_getResource()->load($this, $code, 'code');
 821:         return $this;
 822:     }
 823: 
 824:     /**
 825:      * Loads submit tab data from xmlconnect/history table
 826:      *
 827:      * @return bool
 828:      */
 829:     public function loadSubmit()
 830:     {
 831:         $isResubmitAction = false;
 832:         if ($this->getId()) {
 833:             $params = $this->getLastParams();
 834:             if (!empty($params)) {
 835:                 // Using Pointer !
 836:                 $conf = &$this->_data['conf'];
 837:                 if (!isset($conf['submit_text']) || !is_array($conf['submit_text'])) {
 838:                     $conf['submit_text'] = array();
 839:                 }
 840:                 if (!isset($conf['submit_restore']) || !is_array($conf['submit_restore'])) {
 841:                     $conf['submit_restore'] = array();
 842:                 }
 843:                 foreach ($params as $id => $value) {
 844:                     $deviceImages = Mage::helper('xmlconnect')->getDeviceHelper()->getSubmitImages();
 845: 
 846:                     if (!in_array($id, $deviceImages)) {
 847:                         $conf['submit_text'][$id] = $value;
 848:                     } else {
 849:                         $conf['submit_restore'][$id] = $value;
 850:                     }
 851:                     $isResubmitAction = true;
 852:                 }
 853:             }
 854:         }
 855:         $this->setIsResubmitAction($isResubmitAction);
 856:         return $isResubmitAction;
 857:     }
 858: 
 859:     /**
 860:      * Returns ( image[ ID ] => "SRC" )  array
 861:      *
 862:      * @return array
 863:      */
 864:     public function getImages()
 865:     {
 866:         $images = array();
 867:         $params = $this->getLastParams();
 868:         $deviceImages = Mage::helper('xmlconnect')
 869:             ->getDeviceHelper()
 870:             ->getSubmitImages();
 871: 
 872:         foreach ($deviceImages as $id) {
 873:             $path = $this->getData('conf/submit/'.$id);
 874:             $basename = null;
 875:             if (!empty($path)) {
 876:                 /**
 877:                  * Fetching data from session restored array
 878:                  */
 879:                  $basename = basename($path);
 880:             } elseif (isset($params[$id])) {
 881:                /**
 882:                 * Fetching data from submission history table record
 883:                 *
 884:                 * converting :  "@\var\somedir\media\xmlconnect\form_icon_6.png"
 885:                 * to "\var\somedir\media\xmlconnect\forn_icon_6.png"
 886:                 */
 887:                 $basename = basename($params[$id]);
 888:             }
 889:             if (!empty($basename)) {
 890:                 $images['conf/submit/'.$id] = Mage::getBaseUrl('media') . 'xmlconnect/'
 891:                     . Mage::helper('xmlconnect/image')->getFileDefaultSizeSuffixAsUrl($basename);
 892:             }
 893:         }
 894:         return $images;
 895:     }
 896: 
 897:     /**
 898:      * Return last submitted data from history table
 899:      *
 900:      * @return array
 901:      */
 902:     public function getLastParams()
 903:     {
 904:         if (!isset($this->_lastParams)) {
 905:             $this->_lastParams = Mage::getModel('xmlconnect/history')->getLastParams($this->getId());
 906:         }
 907:         return $this->_lastParams;
 908:     }
 909: 
 910:     /**
 911:      * Validate application data
 912:      *
 913:      * @return array|bool
 914:      */
 915:     public function validate()
 916:     {
 917:         $errors = array();
 918: 
 919:         $validateConf = $this->_validateConf();
 920:         if ($validateConf !== true) {
 921:             $errors = $validateConf;
 922:         }
 923: 
 924:         if (!Zend_Validate::is($this->getName(), 'NotEmpty')) {
 925:             $errors[] = Mage::helper('xmlconnect')->__('Please enter "App Title".');
 926:         }
 927: 
 928:         if (empty($errors)) {
 929:             return true;
 930:         }
 931:         return $errors;
 932:     }
 933: 
 934:     /**
 935:      * Validate submit application data
 936:      *
 937:      * @param array $params
 938:      * @return array|bool
 939:      */
 940:     public function validateSubmit($params)
 941:     {
 942:         $errors = array();
 943:         $validateConf = $this->_validateConf();
 944:         if ($validateConf !== true) {
 945:             $errors = $validateConf;
 946:         }
 947: 
 948:         $submitErrors = Mage::helper('xmlconnect')->getDeviceHelper($this)->validateSubmit($params);
 949: 
 950:         if (count($submitErrors)) {
 951:             $errors = array_merge($errors, $submitErrors);
 952:         }
 953:         if (empty($errors)) {
 954:             return true;
 955:         }
 956:         return $errors;
 957:     }
 958: 
 959:     /**
 960:      * Check config for valid values
 961:      *
 962:      * @return bool|array
 963:      */
 964:     protected function _validateConf()
 965:     {
 966:         $conf   = $this->getConf();
 967:         $native = isset($conf['native']) && is_array($conf['native']) ? $conf['native'] : false;
 968:         $errors = Mage::helper('xmlconnect')->getDeviceHelper($this)->validateConfig($native);
 969: 
 970:         foreach ($this->_socialNetValidationArray as $networkKey) {
 971:             if (isset($native['socialNetworking'][$networkKey]['isActive'])
 972:                 && $native['socialNetworking'][$networkKey]['isActive']
 973:             ) {
 974:                 if ($networkKey !== Mage_XmlConnect_Helper_Data::SOCIAL_NETWORK_FACEBOOK) {
 975:                     $networkName = ucfirst($networkKey);
 976:                     if (!isset($native['socialNetworking'][$networkKey]['apiKey'])
 977:                         || !Zend_Validate::is($native['socialNetworking'][$networkKey]['apiKey'], 'NotEmpty')
 978:                     ) {
 979:                         $errors[] = Mage::helper('xmlconnect')->__('%s API Key required.', $networkName);
 980:                     }
 981:                     if (!isset($native['socialNetworking'][$networkKey]['secretKey'])
 982:                         || !Zend_Validate::is($native['socialNetworking'][$networkKey]['secretKey'], 'NotEmpty')
 983:                     ) {
 984:                         $errors[] = Mage::helper('xmlconnect')->__('%s Secret Key required.', $networkName);
 985:                     }
 986:                 } else {
 987:                     $networkName = ucfirst($networkKey);
 988:                     if (!isset($native['socialNetworking'][$networkKey]['appID'])
 989:                         || !Zend_Validate::is($native['socialNetworking'][$networkKey]['appID'], 'NotEmpty')
 990:                     ) {
 991:                         $errors[] = Mage::helper('xmlconnect')->__('%s Application ID required.', $networkName);
 992:                     }
 993:                 }
 994:             }
 995:         }
 996: 
 997:         if (empty($errors)) {
 998:             return true;
 999:         }
1000:         return $errors;
1001:     }
1002: 
1003:     /**
1004:      * Imports post/get data into the model
1005:      *
1006:      * @param array $data - $_REQUEST[]
1007:      * @return array
1008:      */
1009:     public function prepareSubmitParams($data)
1010:     {
1011:         $params = array();
1012:         if (isset($data['conf']) && is_array($data['conf'])) {
1013: 
1014:             if (isset($data['conf']['submit_text']) && is_array($data['conf']['submit_text'])) {
1015:                 $params = $data['conf']['submit_text'];
1016:             }
1017: 
1018:             $params['name'] = $this->getName();
1019:             $params['code'] = $this->getCode();
1020:             $params['type'] = $this->getType();
1021:             $params['url'] = Mage::getUrl('xmlconnect/configuration/index', array(
1022:                 '_store' => $this->getStoreId(), '_nosid' => true, 'app_code' => $this->getCode()
1023:             ));
1024: 
1025:             $params['magentoversion'] = Mage::getVersion();
1026: 
1027:             if (isset($params['country']) && is_array($params['country'])) {
1028:                 $params['country'] = implode(',', $params['country']);
1029:             }
1030:             if ($this->getIsResubmitAction()) {
1031:                 if (isset($params['resubmission_activation_key'])) {
1032:                     $params['resubmission_activation_key'] = trim($params['resubmission_activation_key']);
1033:                     $params['key'] = $params['resubmission_activation_key'];
1034:                 } else {
1035:                     $params['key'] = '';
1036:                 }
1037:             } else {
1038:                 $params['key'] = isset($params['key']) ? trim($params['key']) : '';
1039:             }
1040: 
1041:             // processing files
1042:             $submit = array();
1043:             if (isset($this->_data['conf']['submit']) && is_array($this->_data['conf']['submit'])) {
1044:                  $submit = $this->_data['conf']['submit'];
1045:             }
1046: 
1047:             $submitRestore  = array();
1048:             if (isset($this->_data['conf']['submit_restore']) && is_array($this->_data['conf']['submit_restore'])) {
1049:                 $submitRestore = $this->_data['conf']['submit_restore'];
1050:             }
1051: 
1052:             $deviceImages = Mage::helper('xmlconnect')->getDeviceHelper()->getSubmitImages();
1053: 
1054:             foreach ($deviceImages as $id) {
1055:                 if (isset($submit[$id])) {
1056:                     $params[$id] = '@' . Mage::helper('xmlconnect/image')->getDefaultSizeUploadDir() . DS
1057:                         . $submit[$id];
1058:                 } elseif (isset($submitRestore[$id])) {
1059:                     $params[$id] = $submitRestore[$id];
1060:                 }
1061:             }
1062:         }
1063:         $this->setSubmitParams($params);
1064:         return $params;
1065:     }
1066: 
1067:     /**
1068:      * Retrieve Store Id
1069:      *
1070:      * @return int
1071:      */
1072:     public function getStoreId()
1073:     {
1074:         if ($this->hasData('store_id')) {
1075:             return $this->getData('store_id');
1076:         }
1077:         return Mage::app()->getStore()->getId();
1078:     }
1079: 
1080:     /**
1081:      * Getter, returns activation key for current application
1082:      *
1083:      * @return string|null
1084:      */
1085:     public function getActivationKey()
1086:     {
1087:         $key = null;
1088:         if (isset($this->_data['conf']['submit_text']['key'])) {
1089:             $key = $this->_data['conf']['submit_text']['key'];
1090:         }
1091:         return $key;
1092:     }
1093: 
1094:     /**
1095:      * Perform update for all applications "updated at" parameter with current date
1096:      *
1097:      * @return Mage_XmlConnect_Model_Application
1098:      */
1099:     public function updateAllAppsUpdatedAtParameter()
1100:     {
1101:         $this->_getResource()->updateAllAppsUpdatedAtParameter();
1102:         return $this;
1103:     }
1104: 
1105:     /**
1106:      * Checks if notifications is active
1107:      *
1108:      * @return boolean
1109:      */
1110:     public function isNotificationsActive()
1111:     {
1112:         return (boolean)$this->loadConfiguration()->getData('conf/native/notifications/isActive');
1113:     }
1114: 
1115:     /**
1116:      * Getter return concatenated user and password
1117:      *
1118:      * @return string
1119:      */
1120:     public function getUserpwd()
1121:     {
1122:         return $this->loadConfiguration()->getAppKey() . ':' . $this->getAppMasterSecret();
1123:     }
1124: 
1125:     /**
1126:      * Getter for Application Key
1127:      *
1128:      * @return string
1129:      */
1130:     public function getAppKey()
1131:     {
1132:         return $this->getData('conf/native/notifications/applicationKey');
1133:     }
1134: 
1135:     /**
1136:      * Getter for Application Secret
1137:      *
1138:      * @return string
1139:      */
1140:     public function getAppSecret()
1141:     {
1142:         return $this->getData('conf/native/notifications/applicationSecret');
1143:     }
1144: 
1145:     /**
1146:      * Getter for Application Master Secret
1147:      *
1148:      * @return string
1149:      */
1150:     public function getAppMasterSecret()
1151:     {
1152:         return $this->getData('conf/native/notifications/applicationMasterSecret');
1153:     }
1154: 
1155:     /**
1156:      * Getter for Application Cache Lifetime
1157:      *
1158:      * @return int|string
1159:      */
1160:     public function getCacheLifetime()
1161:     {
1162:         $lifetime = (int)$this->loadConfiguration()->getData('conf/native/cacheLifetime');
1163:         return $lifetime <= 0 ? '' : $lifetime;
1164:     }
1165: 
1166:     /**
1167:      * Get delete on update paths for config data
1168:      *
1169:      * @return array
1170:      */
1171:     public function getDeleteOnUpdateConfig()
1172:     {
1173:         return $this->_deleteOnUpdateConfig;
1174:     }
1175: 
1176:     /**
1177:      * Set delete on update paths for config data
1178:      *
1179:      * @param array $pathsToDelete
1180:      * @return Mage_XmlConnect_Model_Application
1181:      */
1182:     public function setDeleteOnUpdateConfig(array $pathsToDelete)
1183:     {
1184:         $this->_deleteOnUpdateConfig = array_merge($this->_deleteOnUpdateConfig, $pathsToDelete);
1185:         return $this;
1186:     }
1187: }
1188: 
Magento 1.7.0.2 API documentation generated by ApiGen 2.8.0