Teaching programming

June 30th, 2010

I just ran across another educational tool—Scratch—for teaching programming to kids. I love the idea behind these simplified programming environments because they make getting started very easy, show you results instantly, and remove all the frustration of setting up a programming environment. If you want to introduce your kids to programming, you might start with one of these. They’re all free and they all work on Linux, Mac, and Windows.

Scratch

Scratch is a programming language that makes it easy to create your own interactive stories, animations, games, music, and art — and share your creations on the web.

Alice

Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web.

Processing

Processing is an open source programming language and environment for people who want to create images, animations, and interactions.

I couldn’t find a good introductory video for this one. But the documentation and tutorial pages are top notch.

Magento 1.4.1.0 event hooks

June 29th, 2010

This listing of Magento event hooks was generated automatically from the source code. Please let me know if you find any errors or omissions.

File Line Event
/cron.php 44 default
/app/code/core/Mage/CatalogRule/Model/Mysql4/Rule.php 399 catalogrule_before_apply
/app/code/core/Mage/CatalogRule/Model/Mysql4/Rule.php 534 catalogrule_after_apply
/app/code/core/Mage/Rule/Model/Environment.php 40 rule_environment_collect
/app/code/core/Mage/SalesRule/Model/Rule/Condition/Combine.php 54 salesrule_rule_condition_combine
/app/code/core/Mage/SalesRule/Model/Quote/Discount.php 83 sales_quote_address_discount_item
/app/code/core/Mage/SalesRule/Model/Quote/Discount.php 89 sales_quote_address_discount_item
/app/code/core/Mage/SalesRule/Model/Rule.php 298 salesrule_rule_get_coupon_types
/app/code/core/Mage/SalesRule/Model/Validator.php 345 salesrule_validator_process
/app/code/core/Mage/CatalogIndex/Model/Mysql4/Price.php 88 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogIndex/Model/Mysql4/Price.php 119 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogIndex/Model/Mysql4/Price.php 163 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogIndex/Model/Mysql4/Price.php 203 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogIndex/Model/Data/Abstract.php 204 catalogindex_get_minimal_price
/app/code/core/Mage/CatalogIndex/Model/Indexer.php 353 catalogindex_plain_reindex_after
/app/code/core/Mage/CatalogIndex/Model/Indexer.php 613 catalogindex_prepare_price_select
/app/code/core/Mage/Admin/Model/User.php 244 admin_user_authenticate_after
/app/code/core/Mage/Admin/Model/Session.php 101 admin_session_user_login_success
/app/code/core/Mage/Admin/Model/Session.php 111 admin_session_user_login_failed
/app/code/core/Mage/Sendfriend/controllers/ProductController.php 131 sendfriend_product
/app/code/core/Mage/Customer/Helper/Data.php 268 customer_registration_is_allowed
/app/code/core/Mage/Customer/Model/Customer.php 123 customer_customer_authenticated
/app/code/core/Mage/Customer/Model/Session.php 68 customer_session_init
/app/code/core/Mage/Customer/Model/Session.php 192 customer_login
/app/code/core/Mage/Customer/Model/Session.php 220 customer_logout
/app/code/core/Mage/GoogleCheckout/Model/Api/Xml/Checkout.php 110 google_checkout_discount_item_price
/app/code/core/Mage/Core/Block/Abstract.php 217 core_block_abstract_prepare_layout_before
/app/code/core/Mage/Core/Block/Abstract.php 219 core_block_abstract_prepare_layout_after
/app/code/core/Mage/Core/Block/Abstract.php 740 core_block_abstract_to_html_before
/app/code/core/Mage/Core/Block/Abstract.php 777 core_block_abstract_to_html_after
/app/code/core/Mage/Core/Controller/Response/Http.php 74 http_response_send_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 299 controller_action_layout_load_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 317 controller_action_layout_generate_xml_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 336 controller_action_layout_generate_blocks_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 348 controller_action_layout_generate_blocks_after
/app/code/core/Mage/Core/Controller/Varien/Action.php 383 controller_action_layout_render_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 384 controller_action_layout_render_before_
/app/code/core/Mage/Core/Controller/Varien/Action.php 497 controller_action_predispatch
/app/code/core/Mage/Core/Controller/Varien/Action.php 499 ‘controller_action_predispatch_’.$this->getRequest()->getRouteName(),
/app/code/core/Mage/Core/Controller/Varien/Action.php 504 ‘controller_action_predispatch_’.$this->getFullActionName(),
/app/code/core/Mage/Core/Controller/Varien/Action.php 519 ‘controller_action_postdispatch_’.$this->getFullActionName(),
/app/code/core/Mage/Core/Controller/Varien/Action.php 523 ‘controller_action_postdispatch_’.$this->getRequest()->getRouteName(),
/app/code/core/Mage/Core/Controller/Varien/Action.php 526 controller_action_postdispatch
/app/code/core/Mage/Core/Controller/Varien/Action.php 535 controller_action_noroute
/app/code/core/Mage/Core/Controller/Varien/Action.php 555 controller_action_nocookies
/app/code/core/Mage/Core/Controller/Varien/Front.php 128 controller_front_init_before
/app/code/core/Mage/Core/Controller/Varien/Front.php 147 controller_front_init_routers
/app/code/core/Mage/Core/Controller/Varien/Front.php 190 controller_front_send_response_after
/app/code/core/Mage/Core/Model/Mysql4/Collection/Abstract.php 443 core_collection_abstract_load_before
/app/code/core/Mage/Core/Model/Mysql4/Collection/Abstract.php 458 core_collection_abstract_load_after
/app/code/core/Mage/Core/Model/Resource.php 167 resource_get_tablename
/app/code/core/Mage/Core/Model/Locale.php 136 core_locale_set_locale
/app/code/core/Mage/Core/Model/App.php 1089 application_clean_cache
/app/code/core/Mage/Core/Model/Abstract.php 253 model_load_before
/app/code/core/Mage/Core/Model/Abstract.php 255 $this->_eventPrefix.’_load_before’
/app/code/core/Mage/Core/Model/Abstract.php 266 model_load_after
/app/code/core/Mage/Core/Model/Abstract.php 267 $this->_eventPrefix.’_load_after’
/app/code/core/Mage/Core/Model/Abstract.php 331 model_save_commit_after
/app/code/core/Mage/Core/Model/Abstract.php 332 $this->_eventPrefix.’_save_commit_after’
/app/code/core/Mage/Core/Model/Abstract.php 378 model_save_before
/app/code/core/Mage/Core/Model/Abstract.php 379 $this->_eventPrefix.’_save_before’
/app/code/core/Mage/Core/Model/Abstract.php 453 model_save_after
/app/code/core/Mage/Core/Model/Abstract.php 454 $this->_eventPrefix.’_save_after’
/app/code/core/Mage/Core/Model/Abstract.php 488 model_delete_before
/app/code/core/Mage/Core/Model/Abstract.php 489 $this->_eventPrefix.’_delete_before’
/app/code/core/Mage/Core/Model/Abstract.php 516 model_delete_after
/app/code/core/Mage/Core/Model/Abstract.php 517 $this->_eventPrefix.’_delete_after’
/app/code/core/Mage/Core/Model/Abstract.php 528 model_delete_commit_after
/app/code/core/Mage/Core/Model/Abstract.php 529 $this->_eventPrefix.’_delete_commit_after’
/app/code/core/Mage/Core/Model/Layout/Update.php 406 core_layout_update_updates_get_after
/app/code/core/Mage/Core/Model/Layout.php 433 core_layout_block_create_after
/app/code/core/Mage/Adminhtml/Block/Report/Grid.php 174 adminhtml_widget_grid_filter_collection
/app/code/core/Mage/Adminhtml/Block/Widget/Container.php 294 adminhtml_widget_container_html_before
/app/code/core/Mage/Adminhtml/Block/Template.php 80 adminhtml_block_html_before
/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Main.php 255 adminhtml_promo_quote_edit_tab_main_prepare_form
/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Actions.php 162 adminhtml_block_salesrule_actions_prepareform
/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Main.php 117 adminhtml_cms_page_edit_tab_main_prepare_form
/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Meta.php 76 adminhtml_cms_page_edit_tab_meta_prepare_form
/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php 125 adminhtml_cms_page_edit_tab_design_prepare_form
/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Content.php 98 adminhtml_cms_page_edit_tab_content_prepare_form
/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tabs.php 149 adminhtml_catalog_category_tabs
/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tree.php 284 adminhtml_catalog_category_tree_is_moveable
/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tree.php 322 adminhtml_catalog_category_tree_can_add_root_category
/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tree.php 342 adminhtml_catalog_category_tree_can_add_sub_category
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Action/Attribute/Tab/Attributes.php 48 adminhtml_catalog_product_form_prepare_excluded_field_list
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Price/Recurring.php 42 catalog_product_edit_form_render_recurring
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes.php 131 adminhtml_catalog_product_edit_prepare_form
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes.php 151 adminhtml_catalog_product_edit_element_types
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes/Create.php 85 adminhtml_catalog_product_edit_tab_attributes_create_html_before
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Main.php 71 adminhtml_product_attribute_types
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/New/Product/Attributes.php 64 adminhtml_catalog_product_edit_prepare_form
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/New/Product/Attributes.php 80 adminhtml_catalog_product_edit_element_types
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main.php 405 adminhtml_catalog_product_attribute_set_main_html_before
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Toolbar/Main.php 68 adminhtml_catalog_product_attribute_set_toolbar_main_html_before
/app/code/core/Mage/Adminhtml/Controller/Action.php 151 adminhtml_controller_action_predispatch_start
/app/code/core/Mage/Adminhtml/controllers/ReportController.php 82 on_view_report
/app/code/core/Mage/Adminhtml/controllers/Permissions/RoleController.php 189 admin_permissions_role_prepare_save
/app/code/core/Mage/Adminhtml/controllers/System/ConfigController.php 137 array(‘website’
/app/code/core/Mage/Adminhtml/controllers/System/StoreController.php 200 store_group_save
/app/code/core/Mage/Adminhtml/controllers/System/StoreController.php 222 $eventName,array(‘store’
/app/code/core/Mage/Adminhtml/controllers/System/StoreController.php 431 store_delete
/app/code/core/Mage/Adminhtml/controllers/CustomerController.php 220 adminhtml_customer_prepare_save
/app/code/core/Mage/Adminhtml/controllers/CustomerController.php 248 adminhtml_customer_save_after
/app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php 217 adminhtml_sales_order_create_process_data
/app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreditmemoController.php 156 adminhtml_sales_order_creditmemo_register_before
/app/code/core/Mage/Adminhtml/controllers/Promo/CatalogController.php 97 adminhtml_controller_catalogrule_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Promo/QuoteController.php 109 adminhtml_controller_salesrule_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php 134 cms_page_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php 185 adminhtml_cmspage_on_delete
/app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php 190 adminhtml_cmspage_on_delete
/app/code/core/Mage/Adminhtml/controllers/CacheController.php 142 clean_media_cache_after
/app/code/core/Mage/Adminhtml/controllers/CacheController.php 166 clean_catalog_images_cache_after
/app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController.php 311 catalog_category_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController.php 374 catalog_controller_category_delete
/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 182 catalog_product_new_action
/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 227 catalog_product_edit_action
/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 630 catalog_product_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 848 catalog_controller_product_delete
/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/Action/AttributeController.php 140 catalog_product_to_website_change
/app/code/core/Mage/Adminhtml/Model/Sales/Order/Create.php 217 sales_convert_order_to_quote
/app/code/core/Mage/Adminhtml/Model/Sales/Order/Create.php 306 sales_convert_order_item_to_quote_item
/app/code/core/Mage/Api/Model/User.php 174 api_user_authenticated
/app/code/core/Mage/Bundle/Block/Catalog/Product/View/Type/Bundle.php 101 bundle_product_view_config
/app/code/core/Mage/Bundle/Model/Mysql4/Price/Index.php 357 catalog_product_prepare_index_select
/app/code/core/Mage/Bundle/Model/Mysql4/Indexer/Price.php 218 catalog_product_prepare_index_select
/app/code/core/Mage/Bundle/Model/Mysql4/Indexer/Price.php 375 prepare_catalog_product_price_index_table
/app/code/core/Mage/Bundle/Model/Product/Price.php 78 catalog_product_get_final_price
/app/code/core/Mage/CatalogSearch/Model/Mysql4/Advanced.php 71 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogSearch/Model/Mysql4/Advanced.php 76 catalog_prepare_price_select
/app/code/core/Mage/CatalogSearch/Model/Mysql4/Fulltext.php 244 catalogsearch_reset_search_result
/app/code/core/Mage/GoogleBase/controllers/TypesController.php 46 controller_action_postdispatch_adminhtml
/app/code/core/Mage/Sales/Model/Order/Payment.php 149 sales_order_payment_place_start
/app/code/core/Mage/Sales/Model/Order/Payment.php 225 sales_order_payment_place_end
/app/code/core/Mage/Sales/Model/Order/Payment.php 260 sales_order_payment_capture
/app/code/core/Mage/Sales/Model/Order/Payment.php 388 sales_order_payment_pay
/app/code/core/Mage/Sales/Model/Order/Payment.php 406 sales_order_payment_cancel_invoice
/app/code/core/Mage/Sales/Model/Order/Payment.php 456 sales_order_payment_void
/app/code/core/Mage/Sales/Model/Order/Payment.php 540 sales_order_payment_refund
/app/code/core/Mage/Sales/Model/Order/Payment.php 606 sales_order_payment_cancel_creditmemo
/app/code/core/Mage/Sales/Model/Order/Payment.php 634 sales_order_payment_cancel
/app/code/core/Mage/Sales/Model/Order/Item.php 311 sales_order_item_cancel
/app/code/core/Mage/Sales/Model/Order/Payment/Transaction.php 397 $this->_eventPrefix.’_load_by_txn_id_before’
/app/code/core/Mage/Sales/Model/Order/Payment/Transaction.php 423 $this->_eventPrefix.’_load_by_txn_id_after’
/app/code/core/Mage/Sales/Model/Order/Creditmemo.php 297 sales_order_creditmemo_refund
/app/code/core/Mage/Sales/Model/Order/Creditmemo.php 340 sales_order_creditmemo_cancel
/app/code/core/Mage/Sales/Model/Order/Invoice.php 275 sales_order_invoice_pay
/app/code/core/Mage/Sales/Model/Order/Invoice.php 345 sales_order_invoice_cancel
/app/code/core/Mage/Sales/Model/Order/Invoice.php 517 sales_order_invoice_register
/app/code/core/Mage/Sales/Model/Quote/Address/Total/Discount.php 80 sales_quote_address_discount_item
/app/code/core/Mage/Sales/Model/Quote/Address/Total/Discount.php 111 sales_quote_address_discount_item
/app/code/core/Mage/Sales/Model/Quote/Payment.php 81 $this->_eventPrefix.’_import_data_before’
/app/code/core/Mage/Sales/Model/Quote/Item.php 177 sales_quote_item_qty_set_after
/app/code/core/Mage/Sales/Model/Quote/Item.php 261 sales_quote_item_set_product
/app/code/core/Mage/Sales/Model/Mysql4/Sale/Collection.php 166 sales_sale_collection_query_before
/app/code/core/Mage/Sales/Model/Mysql4/Order/Abstract.php 138 $this->_eventPrefix.’_init_virtual_grid_columns’
/app/code/core/Mage/Sales/Model/Mysql4/Order/Abstract.php 163 $this->_eventPrefix.’_update_grid_records’
/app/code/core/Mage/Sales/Model/Mysql4/Order/Abstract.php 290 $this->_eventPrefix.’_save_attribute_before’
/app/code/core/Mage/Sales/Model/Mysql4/Order/Abstract.php 309 $this->_eventPrefix.’_save_attribute_after’
/app/code/core/Mage/Sales/Model/Mysql4/Order/Collection/Abstract.php 57 $this->_eventPrefix.’_set_sales_order’
/app/code/core/Mage/Sales/Model/Mysql4/Quote/Item/Collection.php 179 sales_quote_item_collection_products_after_load
/app/code/core/Mage/Sales/Model/Convert/Order.php 53 sales_convert_order_to_quote
/app/code/core/Mage/Sales/Model/Convert/Quote.php 56 sales_convert_quote_to_order
/app/code/core/Mage/Sales/Model/Convert/Quote.php 74 sales_convert_quote_address_to_order
/app/code/core/Mage/Sales/Model/Convert/Quote.php 94 sales_convert_quote_address_to_order_address
/app/code/core/Mage/Sales/Model/Convert/Quote.php 113 sales_convert_quote_payment_to_order_payment
/app/code/core/Mage/Sales/Model/Convert/Quote.php 150 sales_convert_quote_item_to_order_item
/app/code/core/Mage/Sales/Model/Service/Quote.php 172 checkout_type_onepage_save_order
/app/code/core/Mage/Sales/Model/Service/Quote.php 173 sales_model_service_quote_submit_before
/app/code/core/Mage/Sales/Model/Service/Quote.php 176 sales_model_service_quote_submit_success
/app/code/core/Mage/Sales/Model/Service/Quote.php 178 sales_model_service_quote_submit_failure
/app/code/core/Mage/Sales/Model/Service/Quote.php 181 sales_model_service_quote_submit_after
/app/code/core/Mage/Sales/Model/Order.php 708 sales_order_place_before
/app/code/core/Mage/Sales/Model/Order.php 710 sales_order_place_after
/app/code/core/Mage/Sales/Model/Quote.php 619 sales_quote_remove_item
/app/code/core/Mage/Sales/Model/Quote.php 647 sales_quote_add_item
/app/code/core/Mage/Sales/Model/Quote.php 725 sales_quote_product_add_after
/app/code/core/Mage/Sales/Model/Quote.php 912 $this->_eventPrefix.’_collect_totals_before’
/app/code/core/Mage/Sales/Model/Quote.php 977 $this->_eventPrefix.’_collect_totals_after’
/app/code/core/Mage/Sales/Model/Quote.php 1170 $this->_eventPrefix.’_merge_before’
/app/code/core/Mage/Sales/Model/Quote.php 1213 $this->_eventPrefix.’_merge_after’
/app/code/core/Mage/Review/controllers/ProductController.php 73 review_controller_product_init_before
/app/code/core/Mage/Review/controllers/ProductController.php 85 review_controller_product_init
/app/code/core/Mage/Review/controllers/ProductController.php 86 review_controller_product_init_after
/app/code/core/Mage/Review/Model/Mysql4/Review/Collection.php 188 review_review_collection_load_before
/app/code/core/Mage/Tax/Model/Calculation.php 189 tax_rate_data_fetch
/app/code/core/Mage/Tax/Model/Calculation/Rate.php 90 tax_settings_change_after
/app/code/core/Mage/Tax/Model/Calculation/Rate.php 102 tax_settings_change_after
/app/code/core/Mage/Tax/Model/Calculation/Rate.php 146 tax_settings_change_after
/app/code/core/Mage/Tax/Model/Calculation/Rule.php 62 tax_settings_change_after
/app/code/core/Mage/Tax/Model/Calculation/Rule.php 74 tax_settings_change_after
/app/code/core/Mage/Log/Model/Mysql4/Visitor/Collection.php 299 log_visitor_collection_load_before
/app/code/core/Mage/Log/Model/Mysql4/Log.php 56 log_log_clean_before
/app/code/core/Mage/Log/Model/Mysql4/Log.php 64 log_log_clean_after
/app/code/core/Mage/Payment/Block/Info.php 166 payment_info_block_prepare_specific_information
/app/code/core/Mage/Payment/Block/Form/Cc.php 154 payment_form_block_to_html_before
/app/code/core/Mage/Payment/Model/Method/Abstract.php 600 payment_method_is_active
/app/code/core/Mage/Eav/Block/Adminhtml/Attribute/Edit/Main/Abstract.php 174 adminhtml_block_eav_attribute_edit_form_init
/app/code/core/Mage/Eav/Model/Entity/Attribute.php 180 eav_attribute_get_backend_type_by_input
/app/code/core/Mage/Eav/Model/Entity/Attribute.php 224 eav_attribute_get_default_value_by_input
/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php 788 eav_collection_abstract_load_before
/app/code/core/Mage/Cms/Helper/Page.php 105 cms_page_render
/app/code/core/Mage/Cms/Helper/Wysiwyg/Images.php 157 cms_wysiwyg_images_static_urls_allowed
/app/code/core/Mage/Cms/Controller/Router.php 71 cms_controller_router_match_before
/app/code/core/Mage/Cms/Model/Page.php 115 cms_page_get_available_statuses
/app/code/core/Mage/Cms/Model/Wysiwyg/Config.php 88 cms_wysiwyg_config_prepare
/app/code/core/Mage/Catalog/Block/Product/List/Upsell.php 70 catalog_product_upsell
/app/code/core/Mage/Catalog/Block/Product/View.php 160 catalog_product_view_config
/app/code/core/Mage/Catalog/Block/Product/List.php 150 catalog_block_product_list_collection
/app/code/core/Mage/Catalog/Helper/Output.php 48 catalog_helper_output_construct
/app/code/core/Mage/Catalog/controllers/CategoryController.php 43 catalog_controller_category_init_before
/app/code/core/Mage/Catalog/controllers/CategoryController.php 59 catalog_controller_category_init_after
/app/code/core/Mage/Catalog/controllers/ProductController.php 42 catalog_controller_product_init_before
/app/code/core/Mage/Catalog/controllers/ProductController.php 80 catalog_controller_product_init
/app/code/core/Mage/Catalog/controllers/ProductController.php 81 catalog_controller_product_init_after
/app/code/core/Mage/Catalog/controllers/ProductController.php 139 catalog_controller_product_view
/app/code/core/Mage/Catalog/controllers/Product/CompareController.php 80 catalog_product_compare_add_product
/app/code/core/Mage/Catalog/controllers/Product/CompareController.php 114 catalog_product_compare_remove_product
/app/code/core/Mage/Catalog/Model/Convert/Adapter/Product.php 737 catalog_product_import_after
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Collection.php 127 $this->_eventPrefix.’_load_before’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Collection.php 139 $this->_eventPrefix.’_load_after’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Collection.php 301 $this->_eventPrefix.’_add_is_active_filter’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Tree.php 197 catalog_category_tree_init_inactive_category_ids
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Tree.php 354 catalog_category_tree_move_before
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Tree.php 389 catalog_category_tree_move_after
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Flat.php 155 catalog_category_tree_init_inactive_category_ids
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Flat/Collection.php 109 $this->_eventPrefix.’_load_before’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Flat/Collection.php 121 $this->_eventPrefix.’_load_after’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Flat/Collection.php 196 $this->_eventPrefix.’_add_is_active_filter’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Layer/Filter/Price.php 104 catalogindex_prepare_price_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Layer/Filter/Price.php 109 catalog_prepare_price_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category.php 352 catalog_category_change_products
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Compare/Item/Collection.php 316 catalog_product_compare_item_collection_clear
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Grouped.php 114 catalog_product_prepare_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Default.php 252 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Default.php 269 prepare_catalog_product_price_index_table
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav/Source.php 140 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav/Source.php 213 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav/Abstract.php 187 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav/Decimal.php 97 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php 336 catalog_product_collection_load_before
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php 359 catalog_product_collection_load_after
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php 793 catalog_product_collection_before_add_count_to_categories
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php 1566 catalog_product_collection_apply_limitations_after
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat/Indexer.php 335 catalog_product_flat_prepare_columns
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat/Indexer.php 396 catalog_product_flat_prepare_indexes
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat/Indexer.php 848 catalog_product_flat_rebuild
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat/Indexer.php 1097 catalog_product_flat_update_product
/app/code/core/Mage/Catalog/Model/Product.php 165 $this->_eventPrefix.’_validate_before’
/app/code/core/Mage/Catalog/Model/Product.php 167 $this->_eventPrefix.’_validate_after’
/app/code/core/Mage/Catalog/Model/Product.php 989 catalog_model_product_duplicate
/app/code/core/Mage/Catalog/Model/Product.php 1187 catalog_product_is_salable_before
/app/code/core/Mage/Catalog/Model/Product.php 1197 catalog_product_is_salable_after
/app/code/core/Mage/Catalog/Model/Product.php 1334 $this->_eventPrefix.’_delete_after_done’
/app/code/core/Mage/Catalog/Model/Category.php 214 catalog_category_tree_move_before
/app/code/core/Mage/Catalog/Model/Category.php 215 $this->_eventPrefix.’_move_before’
/app/code/core/Mage/Catalog/Model/Category.php 219 $this->_eventPrefix.’_move_after’
/app/code/core/Mage/Catalog/Model/Category.php 220 catalog_category_tree_move_after
/app/code/core/Mage/Catalog/Model/Category.php 230 category_move
/app/code/core/Mage/Catalog/Model/Product/Action.php 93 catalog_product_website_update_before
/app/code/core/Mage/Catalog/Model/Product/Action.php 117 catalog_product_website_update
/app/code/core/Mage/Catalog/Model/Product/Status.php 208 catalog_product_status_update
/app/code/core/Mage/Catalog/Model/Product/Type/Price.php 68 catalog_product_get_final_price
/app/code/core/Mage/Catalog/Model/Product/Type/Abstract.php 371 catalog_product_type_prepare_cart_options
/app/code/core/Mage/Wishlist/Helper/Data.php 334 wishlist_items_renewed
/app/code/core/Mage/Wishlist/controllers/IndexController.php 137 wishlist_add_product
/app/code/core/Mage/Wishlist/controllers/IndexController.php 383 wishlist_share
/app/code/core/Mage/Rss/Block/Order/New.php 77 rss_order_new_collection_select
/app/code/core/Mage/Rss/Block/Catalog/Tag.php 87 rss_catalog_tagged_item_xml_callback
/app/code/core/Mage/Rss/Block/Catalog/Special.php 151 rss_catalog_special_xml_callback
/app/code/core/Mage/Rss/Block/Catalog/NotifyStock.php 81 rss_catalog_notify_stock_collection_select
/app/code/core/Mage/Rss/Block/Catalog/Category.php 119 rss_catalog_category_xml_callback
/app/code/core/Mage/Rss/Block/Catalog/Review.php 74 rss_catalog_review_collection_select
/app/code/core/Mage/Rss/Block/Catalog/New.php 105 rss_catalog_new_xml_callback
/app/code/core/Mage/Checkout/Helper/Data.php 275 checkout_allow_guest
/app/code/core/Mage/Checkout/controllers/CartController.php 191 checkout_cart_add_product_complete
/app/code/core/Mage/Checkout/controllers/OnepageController.php 223 checkout_onepage_controller_success_action
/app/code/core/Mage/Checkout/controllers/OnepageController.php 366 checkout_controller_onepage_save_shipping_method
/app/code/core/Mage/Checkout/controllers/MultishippingController.php 312 checkout_controller_multishipping_shipping_post
/app/code/core/Mage/Checkout/controllers/MultishippingController.php 503 checkout_multishipping_controller_success_action
/app/code/core/Mage/Checkout/Model/Type/Onepage.php 635 checkout_type_onepage_save_order_after
/app/code/core/Mage/Checkout/Model/Type/Multishipping.php 260 checkout_type_multishipping_set_shipping_items
/app/code/core/Mage/Checkout/Model/Type/Multishipping.php 480 checkout_type_multishipping_create_orders_single
/app/code/core/Mage/Checkout/Model/Session.php 93 checkout_quote_init
/app/code/core/Mage/Checkout/Model/Session.php 198 checkout_quote_destroy
/app/code/core/Mage/Checkout/Model/Cart.php 254 checkout_cart_product_add_after
/app/code/core/Mage/Checkout/Model/Cart.php 312 checkout_cart_update_items_before
/app/code/core/Mage/Checkout/Model/Cart.php 331 checkout_cart_update_items_after
/app/code/core/Mage/Checkout/Model/Cart.php 362 checkout_cart_save_after
/app/code/core/Mage/Tag/Model/Mysql4/Indexer/Summary.php 208 prepare_catalog_product_index_select
/app/code/core/Mage/Tag/Model/Mysql4/Product/Collection.php 395 tag_tag_product_collection_load_after
/app/Mage.php 610 mage_run_exception

Magento 1.4.0.1 Event hooks

June 29th, 2010

This listing of Magento event hooks was generated automatically from the source code. Please let me know if you find any errors or omissions.

File Line Event
/cron.php 44 default
/app/code/core/Mage/CatalogRule/Model/Mysql4/Rule.php 399 catalogrule_before_apply
/app/code/core/Mage/CatalogRule/Model/Mysql4/Rule.php 531 catalogrule_after_apply
/app/code/core/Mage/Rule/Model/Environment.php 40 rule_environment_collect
/app/code/core/Mage/SalesRule/Model/Rule/Condition/Combine.php 54 salesrule_rule_condition_combine
/app/code/core/Mage/SalesRule/Model/Quote/Discount.php 83 sales_quote_address_discount_item
/app/code/core/Mage/SalesRule/Model/Quote/Discount.php 89 sales_quote_address_discount_item
/app/code/core/Mage/SalesRule/Model/Validator.php 326 salesrule_validator_process
/app/code/core/Mage/CatalogIndex/Model/Mysql4/Price.php 88 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogIndex/Model/Mysql4/Price.php 119 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogIndex/Model/Mysql4/Price.php 163 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogIndex/Model/Mysql4/Price.php 203 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogIndex/Model/Data/Abstract.php 204 catalogindex_get_minimal_price
/app/code/core/Mage/CatalogIndex/Model/Indexer.php 353 catalogindex_plain_reindex_after
/app/code/core/Mage/CatalogIndex/Model/Indexer.php 613 catalogindex_prepare_price_select
/app/code/core/Mage/Admin/Model/User.php 244 admin_user_authenticate_after
/app/code/core/Mage/Admin/Model/Session.php 101 admin_session_user_login_success
/app/code/core/Mage/Admin/Model/Session.php 111 admin_session_user_login_failed
/app/code/core/Mage/Sendfriend/controllers/ProductController.php 131 sendfriend_product
/app/code/core/Mage/Customer/Helper/Data.php 268 customer_registration_is_allowed
/app/code/core/Mage/Customer/Model/Customer.php 124 customer_customer_authenticated
/app/code/core/Mage/Customer/Model/Session.php 68 customer_session_init
/app/code/core/Mage/Customer/Model/Session.php 192 customer_login
/app/code/core/Mage/Customer/Model/Session.php 220 customer_logout
/app/code/core/Mage/Core/Block/Abstract.php 210 core_block_abstract_prepare_layout_before
/app/code/core/Mage/Core/Block/Abstract.php 212 core_block_abstract_prepare_layout_after
/app/code/core/Mage/Core/Block/Abstract.php 660 core_block_abstract_to_html_before
/app/code/core/Mage/Core/Block/Abstract.php 682 core_block_abstract_to_html_after
/app/code/core/Mage/Core/Controller/Response/Http.php 74 http_response_send_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 299 controller_action_layout_load_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 317 controller_action_layout_generate_xml_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 336 controller_action_layout_generate_blocks_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 348 controller_action_layout_generate_blocks_after
/app/code/core/Mage/Core/Controller/Varien/Action.php 383 controller_action_layout_render_before
/app/code/core/Mage/Core/Controller/Varien/Action.php 384 controller_action_layout_render_before_
/app/code/core/Mage/Core/Controller/Varien/Action.php 497 controller_action_predispatch
/app/code/core/Mage/Core/Controller/Varien/Action.php 499 ‘controller_action_predispatch_’.$this->getRequest()->getRouteName(),
/app/code/core/Mage/Core/Controller/Varien/Action.php 504 ‘controller_action_predispatch_’.$this->getFullActionName(),
/app/code/core/Mage/Core/Controller/Varien/Action.php 519 ‘controller_action_postdispatch_’.$this->getFullActionName(),
/app/code/core/Mage/Core/Controller/Varien/Action.php 523 ‘controller_action_postdispatch_’.$this->getRequest()->getRouteName(),
/app/code/core/Mage/Core/Controller/Varien/Action.php 526 controller_action_postdispatch
/app/code/core/Mage/Core/Controller/Varien/Action.php 535 controller_action_noroute
/app/code/core/Mage/Core/Controller/Varien/Action.php 555 controller_action_nocookies
/app/code/core/Mage/Core/Controller/Varien/Front.php 128 controller_front_init_before
/app/code/core/Mage/Core/Controller/Varien/Front.php 147 controller_front_init_routers
/app/code/core/Mage/Core/Controller/Varien/Front.php 190 controller_front_send_response_after
/app/code/core/Mage/Core/Model/Mysql4/Collection/Abstract.php 193 core_collection_abstract_load_before
/app/code/core/Mage/Core/Model/Mysql4/Collection/Abstract.php 210 core_collection_abstract_load_after
/app/code/core/Mage/Core/Model/Resource.php 167 resource_get_tablename
/app/code/core/Mage/Core/Model/Locale.php 136 core_locale_set_locale
/app/code/core/Mage/Core/Model/App.php 1089 application_clean_cache
/app/code/core/Mage/Core/Model/Abstract.php 249 model_load_after
/app/code/core/Mage/Core/Model/Abstract.php 250 $this->_eventPrefix.’_load_after’
/app/code/core/Mage/Core/Model/Abstract.php 307 model_save_commit_after
/app/code/core/Mage/Core/Model/Abstract.php 308 $this->_eventPrefix.’_save_commit_after’
/app/code/core/Mage/Core/Model/Abstract.php 354 model_save_before
/app/code/core/Mage/Core/Model/Abstract.php 355 $this->_eventPrefix.’_save_before’
/app/code/core/Mage/Core/Model/Abstract.php 429 model_save_after
/app/code/core/Mage/Core/Model/Abstract.php 430 $this->_eventPrefix.’_save_after’
/app/code/core/Mage/Core/Model/Abstract.php 464 model_delete_before
/app/code/core/Mage/Core/Model/Abstract.php 465 $this->_eventPrefix.’_delete_before’
/app/code/core/Mage/Core/Model/Abstract.php 492 model_delete_after
/app/code/core/Mage/Core/Model/Abstract.php 493 $this->_eventPrefix.’_delete_after’
/app/code/core/Mage/Core/Model/Abstract.php 504 model_delete_commit_after
/app/code/core/Mage/Core/Model/Abstract.php 505 $this->_eventPrefix.’_delete_commit_after’
/app/code/core/Mage/Core/Model/Layout/Update.php 406 core_layout_update_updates_get_after
/app/code/core/Mage/Adminhtml/Block/Report/Grid.php 174 adminhtml_widget_grid_filter_collection
/app/code/core/Mage/Adminhtml/Block/Widget/Container.php 294 adminhtml_widget_container_html_before
/app/code/core/Mage/Adminhtml/Block/Template.php 80 adminhtml_block_html_before
/app/code/core/Mage/Adminhtml/Block/Promo/Quote/Edit/Tab/Actions.php 162 adminhtml_block_salesrule_actions_prepareform
/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Main.php 117 adminhtml_cms_page_edit_tab_main_prepare_form
/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Meta.php 76 adminhtml_cms_page_edit_tab_meta_prepare_form
/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Design.php 125 adminhtml_cms_page_edit_tab_design_prepare_form
/app/code/core/Mage/Adminhtml/Block/Cms/Page/Edit/Tab/Content.php 98 adminhtml_cms_page_edit_tab_content_prepare_form
/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tabs.php 149 adminhtml_catalog_category_tabs
/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tree.php 284 adminhtml_catalog_category_tree_is_moveable
/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tree.php 322 adminhtml_catalog_category_tree_can_add_root_category
/app/code/core/Mage/Adminhtml/Block/Catalog/Category/Tree.php 342 adminhtml_catalog_category_tree_can_add_sub_category
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Action/Attribute/Tab/Attributes.php 48 adminhtml_catalog_product_form_prepare_excluded_field_list
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes.php 119 adminhtml_catalog_product_edit_prepare_form
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes.php 139 adminhtml_catalog_product_edit_element_types
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Edit/Tab/Attributes/Create.php 85 adminhtml_catalog_product_edit_tab_attributes_create_html_before
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Edit/Tab/Main.php 71 adminhtml_product_attribute_types
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/New/Product/Attributes.php 64 adminhtml_catalog_product_edit_prepare_form
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/New/Product/Attributes.php 80 adminhtml_catalog_product_edit_element_types
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Main.php 405 adminhtml_catalog_product_attribute_set_main_html_before
/app/code/core/Mage/Adminhtml/Block/Catalog/Product/Attribute/Set/Toolbar/Main.php 68 adminhtml_catalog_product_attribute_set_toolbar_main_html_before
/app/code/core/Mage/Adminhtml/Controller/Action.php 151 adminhtml_controller_action_predispatch_start
/app/code/core/Mage/Adminhtml/controllers/ReportController.php 82 on_view_report
/app/code/core/Mage/Adminhtml/controllers/Permissions/RoleController.php 189 admin_permissions_role_prepare_save
/app/code/core/Mage/Adminhtml/controllers/System/ConfigController.php 140 array(‘website’
/app/code/core/Mage/Adminhtml/controllers/System/StoreController.php 199 store_group_save
/app/code/core/Mage/Adminhtml/controllers/System/StoreController.php 221 $eventName,array(‘store’
/app/code/core/Mage/Adminhtml/controllers/System/StoreController.php 419 store_delete
/app/code/core/Mage/Adminhtml/controllers/CustomerController.php 220 adminhtml_customer_prepare_save
/app/code/core/Mage/Adminhtml/controllers/CustomerController.php 248 adminhtml_customer_save_after
/app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreateController.php 217 adminhtml_sales_order_create_process_data
/app/code/core/Mage/Adminhtml/controllers/Sales/Order/CreditmemoController.php 215 adminhtml_sales_order_creditmemo_register_before
/app/code/core/Mage/Adminhtml/controllers/Promo/CatalogController.php 97 adminhtml_controller_catalogrule_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Promo/QuoteController.php 109 adminhtml_controller_salesrule_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php 140 cms_page_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php 199 adminhtml_cmspage_on_delete
/app/code/core/Mage/Adminhtml/controllers/Cms/PageController.php 204 adminhtml_cmspage_on_delete
/app/code/core/Mage/Adminhtml/controllers/CacheController.php 142 clean_media_cache_after
/app/code/core/Mage/Adminhtml/controllers/CacheController.php 166 clean_catalog_images_cache_after
/app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController.php 289 catalog_category_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Catalog/CategoryController.php 352 catalog_controller_category_delete
/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 182 catalog_product_new_action
/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 221 catalog_product_edit_action
/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 593 catalog_product_prepare_save
/app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php 811 catalog_controller_product_delete
/app/code/core/Mage/Adminhtml/controllers/Catalog/Product/Action/AttributeController.php 140 catalog_product_to_website_change
/app/code/core/Mage/Adminhtml/Model/Sales/Order/Create.php 217 sales_convert_order_to_quote
/app/code/core/Mage/Adminhtml/Model/Sales/Order/Create.php 306 sales_convert_order_item_to_quote_item
/app/code/core/Mage/Api/Model/User.php 174 api_user_authenticated
/app/code/core/Mage/Bundle/Block/Catalog/Product/View/Type/Bundle.php 101 bundle_product_view_config
/app/code/core/Mage/Bundle/Model/Mysql4/Price/Index.php 357 catalog_product_prepare_index_select
/app/code/core/Mage/Bundle/Model/Mysql4/Indexer/Price.php 272 catalog_product_prepare_index_select
/app/code/core/Mage/Bundle/Model/Mysql4/Indexer/Price.php 429 prepare_catalog_product_price_index_table
/app/code/core/Mage/Bundle/Model/Product/Price.php 78 catalog_product_get_final_price
/app/code/core/Mage/CatalogSearch/Model/Mysql4/Advanced.php 71 catalogindex_prepare_price_select
/app/code/core/Mage/CatalogSearch/Model/Mysql4/Advanced.php 76 catalog_prepare_price_select
/app/code/core/Mage/CatalogSearch/Model/Mysql4/Fulltext.php 232 catalogsearch_reset_search_result
/app/code/core/Mage/GoogleBase/controllers/TypesController.php 46 controller_action_postdispatch_adminhtml
/app/code/core/Mage/Sales/Model/Order/Payment.php 129 sales_order_payment_place_start
/app/code/core/Mage/Sales/Model/Order/Payment.php 205 sales_order_payment_place_end
/app/code/core/Mage/Sales/Model/Order/Payment.php 240 sales_order_payment_capture
/app/code/core/Mage/Sales/Model/Order/Payment.php 344 sales_order_payment_pay
/app/code/core/Mage/Sales/Model/Order/Payment.php 362 sales_order_payment_cancel_invoice
/app/code/core/Mage/Sales/Model/Order/Payment.php 412 sales_order_payment_void
/app/code/core/Mage/Sales/Model/Order/Payment.php 496 sales_order_payment_refund
/app/code/core/Mage/Sales/Model/Order/Payment.php 559 sales_order_payment_cancel_creditmemo
/app/code/core/Mage/Sales/Model/Order/Payment.php 584 sales_order_payment_cancel
/app/code/core/Mage/Sales/Model/Order/Item.php 311 sales_order_item_cancel
/app/code/core/Mage/Sales/Model/Order/Creditmemo.php 324 sales_order_creditmemo_refund
/app/code/core/Mage/Sales/Model/Order/Creditmemo.php 367 sales_order_creditmemo_cancel
/app/code/core/Mage/Sales/Model/Order/Invoice.php 275 sales_order_invoice_pay
/app/code/core/Mage/Sales/Model/Order/Invoice.php 339 sales_order_invoice_cancel
/app/code/core/Mage/Sales/Model/Quote/Address/Total/Discount.php 80 sales_quote_address_discount_item
/app/code/core/Mage/Sales/Model/Quote/Address/Total/Discount.php 111 sales_quote_address_discount_item
/app/code/core/Mage/Sales/Model/Quote/Payment.php 81 $this->_eventPrefix.’_import_data_before’
/app/code/core/Mage/Sales/Model/Quote/Item.php 177 sales_quote_item_qty_set_after
/app/code/core/Mage/Sales/Model/Quote/Item.php 258 sales_quote_item_set_product
/app/code/core/Mage/Sales/Model/Mysql4/Sale/Collection.php 170 sales_sale_collection_query_before
/app/code/core/Mage/Sales/Model/Mysql4/Quote/Item/Collection.php 173 sales_quote_item_collection_products_after_load
/app/code/core/Mage/Sales/Model/Convert/Order.php 53 sales_convert_order_to_quote
/app/code/core/Mage/Sales/Model/Convert/Quote.php 56 sales_convert_quote_to_order
/app/code/core/Mage/Sales/Model/Convert/Quote.php 74 sales_convert_quote_address_to_order
/app/code/core/Mage/Sales/Model/Convert/Quote.php 94 sales_convert_quote_address_to_order_address
/app/code/core/Mage/Sales/Model/Convert/Quote.php 113 sales_convert_quote_payment_to_order_payment
/app/code/core/Mage/Sales/Model/Convert/Quote.php 149 sales_convert_quote_item_to_order_item
/app/code/core/Mage/Sales/Model/Service/Quote.php 147 checkout_type_onepage_save_order
/app/code/core/Mage/Sales/Model/Service/Quote.php 148 sales_model_service_quote_submit_before
/app/code/core/Mage/Sales/Model/Service/Quote.php 150 sales_model_service_quote_submit_after
/app/code/core/Mage/Sales/Model/Order.php 657 sales_order_place_before
/app/code/core/Mage/Sales/Model/Order.php 659 sales_order_place_after
/app/code/core/Mage/Sales/Model/Quote.php 606 sales_quote_remove_item
/app/code/core/Mage/Sales/Model/Quote.php 622 sales_quote_add_item
/app/code/core/Mage/Sales/Model/Quote.php 700 sales_quote_product_add_after
/app/code/core/Mage/Sales/Model/Quote.php 886 $this->_eventPrefix.’_collect_totals_before’
/app/code/core/Mage/Sales/Model/Quote.php 951 $this->_eventPrefix.’_collect_totals_after’
/app/code/core/Mage/Sales/Model/Quote.php 1144 $this->_eventPrefix.’_merge_before’
/app/code/core/Mage/Sales/Model/Quote.php 1187 $this->_eventPrefix.’_merge_after’
/app/code/core/Mage/Review/controllers/ProductController.php 73 review_controller_product_init_before
/app/code/core/Mage/Review/controllers/ProductController.php 85 review_controller_product_init
/app/code/core/Mage/Review/controllers/ProductController.php 86 review_controller_product_init_after
/app/code/core/Mage/Review/Model/Mysql4/Review/Collection.php 188 review_review_collection_load_before
/app/code/core/Mage/Tax/Model/Calculation.php 189 tax_rate_data_fetch
/app/code/core/Mage/Tax/Model/Calculation/Rate.php 89 tax_settings_change_after
/app/code/core/Mage/Tax/Model/Calculation/Rate.php 101 tax_settings_change_after
/app/code/core/Mage/Tax/Model/Calculation/Rate.php 145 tax_settings_change_after
/app/code/core/Mage/Tax/Model/Calculation/Rule.php 62 tax_settings_change_after
/app/code/core/Mage/Tax/Model/Calculation/Rule.php 74 tax_settings_change_after
/app/code/core/Mage/Log/Model/Mysql4/Visitor/Collection.php 299 log_visitor_collection_load_before
/app/code/core/Mage/Log/Model/Mysql4/Log.php 56 log_log_clean_before
/app/code/core/Mage/Log/Model/Mysql4/Log.php 64 log_log_clean_after
/app/code/core/Mage/Payment/Block/Info.php 166 payment_info_block_prepare_specific_information
/app/code/core/Mage/Payment/Block/Form/Cc.php 153 payment_form_block_to_html_before
/app/code/core/Mage/Payment/Model/Method/Abstract.php 495 payment_method_is_active
/app/code/core/Mage/Eav/Block/Adminhtml/Attribute/Edit/Main/Abstract.php 174 adminhtml_block_eav_attribute_edit_form_init
/app/code/core/Mage/Eav/Model/Entity/Attribute.php 180 eav_attribute_get_backend_type_by_input
/app/code/core/Mage/Eav/Model/Entity/Attribute.php 224 eav_attribute_get_default_value_by_input
/app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php 788 eav_collection_abstract_load_before
/app/code/core/Mage/Cms/Helper/Page.php 101 cms_page_render
/app/code/core/Mage/Cms/Controller/Router.php 71 cms_controller_router_match_before
/app/code/core/Mage/Cms/Model/Page.php 115 cms_page_get_available_statuses
/app/code/core/Mage/Cms/Model/Wysiwyg/Config.php 88 cms_wysiwyg_config_prepare
/app/code/core/Mage/Catalog/Block/Product/List/Upsell.php 70 catalog_product_upsell
/app/code/core/Mage/Catalog/Block/Product/View.php 160 catalog_product_view_config
/app/code/core/Mage/Catalog/Block/Product/List.php 147 catalog_block_product_list_collection
/app/code/core/Mage/Catalog/Helper/Output.php 38 catalog_helper_output_construct
/app/code/core/Mage/Catalog/controllers/CategoryController.php 43 catalog_controller_category_init_before
/app/code/core/Mage/Catalog/controllers/CategoryController.php 59 catalog_controller_category_init_after
/app/code/core/Mage/Catalog/controllers/ProductController.php 42 catalog_controller_product_init_before
/app/code/core/Mage/Catalog/controllers/ProductController.php 80 catalog_controller_product_init
/app/code/core/Mage/Catalog/controllers/ProductController.php 81 catalog_controller_product_init_after
/app/code/core/Mage/Catalog/controllers/ProductController.php 139 catalog_controller_product_view
/app/code/core/Mage/Catalog/controllers/Product/CompareController.php 80 catalog_product_compare_add_product
/app/code/core/Mage/Catalog/controllers/Product/CompareController.php 114 catalog_product_compare_remove_product
/app/code/core/Mage/Catalog/Model/Convert/Adapter/Product.php 737 catalog_product_import_after
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Collection.php 127 $this->_eventPrefix.’_load_before’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Collection.php 139 $this->_eventPrefix.’_load_after’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Collection.php 301 $this->_eventPrefix.’_add_is_active_filter’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Tree.php 196 catalog_category_tree_init_inactive_category_ids
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Tree.php 353 catalog_category_tree_move_before
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Tree.php 388 catalog_category_tree_move_after
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Flat.php 155 catalog_category_tree_init_inactive_category_ids
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Flat/Collection.php 109 $this->_eventPrefix.’_load_before’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Flat/Collection.php 121 $this->_eventPrefix.’_load_after’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category/Flat/Collection.php 196 $this->_eventPrefix.’_add_is_active_filter’
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Layer/Filter/Price.php 104 catalogindex_prepare_price_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Layer/Filter/Price.php 109 catalog_prepare_price_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Category.php 352 catalog_category_change_products
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Compare/Item/Collection.php 328 catalog_product_compare_item_collection_clear
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Grouped.php 113 catalog_product_prepare_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Default.php 269 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Price/Default.php 286 prepare_catalog_product_price_index_table
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav/Source.php 140 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav/Source.php 213 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav/Abstract.php 187 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Indexer/Eav/Decimal.php 97 prepare_catalog_product_index_select
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php 336 catalog_product_collection_load_before
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php 359 catalog_product_collection_load_after
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php 785 catalog_product_collection_before_add_count_to_categories
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Collection.php 1539 catalog_product_collection_apply_limitations_after
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat/Indexer.php 335 catalog_product_flat_prepare_columns
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat/Indexer.php 396 catalog_product_flat_prepare_indexes
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat/Indexer.php 848 catalog_product_flat_rebuild
/app/code/core/Mage/Catalog/Model/Resource/Eav/Mysql4/Product/Flat/Indexer.php 1097 catalog_product_flat_update_product
/app/code/core/Mage/Catalog/Model/Product.php 158 $this->_eventPrefix.’_validate_before’
/app/code/core/Mage/Catalog/Model/Product.php 160 $this->_eventPrefix.’_validate_after’
/app/code/core/Mage/Catalog/Model/Product.php 982 catalog_model_product_duplicate
/app/code/core/Mage/Catalog/Model/Product.php 1180 catalog_product_is_salable_before
/app/code/core/Mage/Catalog/Model/Product.php 1190 catalog_product_is_salable_after
/app/code/core/Mage/Catalog/Model/Product.php 1317 $this->_eventPrefix.’_delete_after_done’
/app/code/core/Mage/Catalog/Model/Category.php 214 catalog_category_tree_move_before
/app/code/core/Mage/Catalog/Model/Category.php 215 $this->_eventPrefix.’_move_before’
/app/code/core/Mage/Catalog/Model/Category.php 219 $this->_eventPrefix.’_move_after’
/app/code/core/Mage/Catalog/Model/Category.php 220 catalog_category_tree_move_after
/app/code/core/Mage/Catalog/Model/Category.php 230 category_move
/app/code/core/Mage/Catalog/Model/Product/Action.php 93 catalog_product_website_update_before
/app/code/core/Mage/Catalog/Model/Product/Action.php 117 catalog_product_website_update
/app/code/core/Mage/Catalog/Model/Product/Status.php 208 catalog_product_status_update
/app/code/core/Mage/Catalog/Model/Product/Type/Price.php 68 catalog_product_get_final_price
/app/code/core/Mage/Wishlist/Helper/Data.php 334 wishlist_items_renewed
/app/code/core/Mage/Wishlist/controllers/IndexController.php 135 wishlist_add_product
/app/code/core/Mage/Wishlist/controllers/IndexController.php 367 wishlist_share
/app/code/core/Mage/Rss/Block/Order/New.php 77 rss_order_new_collection_select
/app/code/core/Mage/Rss/Block/Catalog/Tag.php 87 rss_catalog_tagged_item_xml_callback
/app/code/core/Mage/Rss/Block/Catalog/Special.php 151 rss_catalog_special_xml_callback
/app/code/core/Mage/Rss/Block/Catalog/NotifyStock.php 81 rss_catalog_notify_stock_collection_select
/app/code/core/Mage/Rss/Block/Catalog/Category.php 118 rss_catalog_category_xml_callback
/app/code/core/Mage/Rss/Block/Catalog/Review.php 74 rss_catalog_review_collection_select
/app/code/core/Mage/Rss/Block/Catalog/New.php 103 rss_catalog_new_xml_callback
/app/code/core/Mage/Checkout/Helper/Data.php 274 checkout_allow_guest
/app/code/core/Mage/Checkout/controllers/CartController.php 184 checkout_cart_add_product_complete
/app/code/core/Mage/Checkout/controllers/OnepageController.php 222 checkout_onepage_controller_success_action
/app/code/core/Mage/Checkout/controllers/OnepageController.php 365 checkout_controller_onepage_save_shipping_method
/app/code/core/Mage/Checkout/controllers/MultishippingController.php 312 checkout_controller_multishipping_shipping_post
/app/code/core/Mage/Checkout/controllers/MultishippingController.php 503 checkout_multishipping_controller_success_action
/app/code/core/Mage/Checkout/Model/Type/Onepage.php 616 checkout_type_onepage_save_order_after
/app/code/core/Mage/Checkout/Model/Type/Multishipping.php 253 checkout_type_multishipping_set_shipping_items
/app/code/core/Mage/Checkout/Model/Type/Multishipping.php 473 checkout_type_multishipping_create_orders_single
/app/code/core/Mage/Checkout/Model/Session.php 87 checkout_quote_init
/app/code/core/Mage/Checkout/Model/Session.php 192 checkout_quote_destroy
/app/code/core/Mage/Checkout/Model/Cart.php 253 checkout_cart_product_add_after
/app/code/core/Mage/Checkout/Model/Cart.php 313 checkout_cart_update_items_before
/app/code/core/Mage/Checkout/Model/Cart.php 332 checkout_cart_update_items_after
/app/code/core/Mage/Checkout/Model/Cart.php 363 checkout_cart_save_after
/app/code/core/Mage/Tag/Model/Mysql4/Product/Collection.php 395 tag_tag_product_collection_load_after
/app/Mage.php 610 mage_run_exception

Browser market share at BigHugeLabs.com

June 2nd, 2010

Ars Technica writes:

As of April, fewer than 6 out of 10 people use Internet Explorer. The browser trends that we’ve noted over the past several months are continuing with no sign of alteration: IE continues to slip, Firefox and Opera are fairly static, Safari is very slowly moving forward, and Chrome is pushing ahead at breakneck speeds. If we take a closer look at IE, though, we see that version 8 of Microsoft’s browser is actually growing faster than Chrome, but it’s still not enough to counter the overall decaying of IE. –Internet Explorer best at losing, gaining market share

In that article, they point out that the browser share on their site is much different than the average. So I took a look at BigHugeLabs stats to see how it compares:

BigHugeLabs browser market share April vs May 2010

Breaking the internet

June 1st, 2010

Tynt.com is trying to enhance the internet by breaking copy and paste. Their Javascript silently modifies whatever you copy from a webpage so that they can “leverage this behavior into more traffic, higher search rank and more.” Good grief.

Gruber does a good job of explaining why this is bad (“It’s a bunch of user-hostile SEO bullshit”). I’ll just add that the Javascript from these companies slows down your web browser and then uses your computer to break basic internet functionality (copy/paste and hyperlinks) so that you can be “leveraged.” I hate it when business types say leverage when what they really mean is exploit.

It reminds me a lot of what Snap.com and others like them were/are doing with hyperlinks.

Fortunately, it’s easy to get back control. Modify your hosts file (/etc/hosts on Mac/Linux; uh, someplace else on Windows) and include the following lines:

127.0.0.1 tcr.tynt.com
127.0.0.1 spa.snap.com
127.0.0.1 shots.snap.com

The first line kills Tynt and the next two kill Snap. Their Javascript won’t load, you’ll never even know it was there, and you can carry on using the internet and your computer the way it was intended to be used.

If you are using either of these services on your own blog or website… please stop. It’s obnoxious.

Fix for /javascript files not found in Apache

May 7th, 2010

Running an Apache server on Debian? Suddenly find you can’t access any files in /javascript? As part of a maintenance upgrade, somehow the javascript-common package was selected for me. It quietly installs a symlink javascript-common.conf in /etc/apache2/conf.d that globally aliases all /javascript URLs to /usr/share/javascript. Why? Who knows. I’m sure whoever did it meant well. The fix is to either remove javascript-common or just delete the conf.d symlink and restart Apache.

Google Chrome application shortcuts and multiple identities

April 30th, 2010

I keep flipping between Chrome and Firefox. I’m currently back on Chrome (the speed!). One of the things I love about Firefox is the ability to create application shortcuts (using the Prism plugin). The cool thing about those shortcuts is that each one had it’s own user profile. I have multiple Google accounts and it was a pain to log out and log in to each one individually throughout the day. Having these applications with their own profiles solved that problem for me. Now I could stay in my primary account all day in my browser and use the application shortcuts to check stuff in my other accounts without having to login again.

Google Chrome has a similar feature but by default it uses your primary user profile. Here’s what you do to make application shortcuts use an alternate profile:

  1. Create your application shortcut
  2. Edit it and add –user-data-dir=custom_profile_directory to the launch command

Where custom_profile_directory is a path to where you want the profile saved. Now that application shortcut will have its own cookies, saved passwords, browsing history, the works. You can use this parameter with Chrome when its in browser mode too. Handy if you’re doing web development and you need to be logged into one app as two different people.

Shell script that does something only when status changes

March 22nd, 2010

I needed a shell script that runs every 5 minutes but I only wanted it to do something when a status changes. In this case, I wanted it to log some information to the system log but I didn’t want it to fill up the log with redundant entries. Here’s the pattern I came up with.

My true condition was checking the exit code of a command (e.g. $? -eq 0) but it could be anything. The key is that a temporary file (LOCKFILE) is created for one status and is deleted for the other status. This allows the script to keep track of state between runs. This script only differentiates between two statuses but it wouldn’t be difficult to adapt this to track changes between multiple states (store the current state in LOCKFILE).

Note, the way this is written, the true action will always be executed once after the system is booted.

#!/bin/sh

LOCKFILE=/var/lock/mylockfile
TAG=mytag

if [ some condition is true ]
then
    echo Status 1
    if [ ! -e $LOCKFILE ]
    then
        logger -t $TAG "Message for status 1"
        touch $LOCKFILE
    fi
else
    echo Status 2
    if [ -e $LOCKFILE ]
    then
        logger -t $TAG "Message for status 2"
        rm $LOCKFILE
    fi
fi

WordPress + Ubuntu + Flash upload fixed

February 15th, 2010

Uploading media to WordPress using the built-in Flash uploader has been broken on Ubuntu for a long time (Karmic 9.10 + Flash 10.0 r42). The problem seems to be in Flash itself since I can upload fine to the same blog from a Windows machine. But I just installed the Flash Plugin 10.1 beta 2 and the problem is gone! Thanks, Adobe! I don’t know when the official release is. You can get the beta at labs.adobe.com.

Android vs. web development

February 4th, 2010

When I first jumped into Android development, I went in with a mindset for developing desktop applications. That was a mistake. I think I would have been able to wrap my head around it quicker if I’d thought of it more like web application development. In particular, Activities have to account for a certain amount of statelessness. And users never close or stop an Activity—they just start doing something else. It starts to make sense a lot quicker if you think of Activity classes as web pages.