v7‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT getDi()->plugins_payment->addPath(dirname(__FILE__) . '/plugins'); } function onSetupEmailTemplateTypes(Am_Event $event) { $event->addReturn(array( 'id' => 'cc.admin_rebill_stats', 'title' => 'Cc Rebill Rebill Stats', 'mailPeriodic' => Am_Mail::USER_REQUESTED, 'isAdmin' => true, ), 'cc.admin_rebill_stats'); $event->addReturn(array( 'id' => 'cc.rebill_failed', 'title' => 'Cc Rebill Failed', 'mailPeriodic' => Am_Mail::USER_REQUESTED, 'vars' => array('user'), ), 'cc.rebill_failed'); $event->addReturn(array( 'id' => 'cc.rebill_failed_admin', 'title' => 'Cc Rebill Failed Admin', 'mailPeriodic' => Am_Mail::USER_REQUESTED, 'isAdmin' => true, 'vars' => array('user'), ), 'cc.rebill_failed_admin'); $event->addReturn(array( 'id' => 'cc.rebill_success', 'title' => 'Cc Rebill Success', 'mailPeriodic' => Am_Mail::USER_REQUESTED, 'vars' => array('user'), ), 'cc.rebill_success'); } public function onAdminWarnings(Am_Event $event) { $this->getDi()->plugins_payment->loadEnabled()->getAllEnabled(); $setupUrl = REL_ROOT_URL . "/admin-setup"; ///check for configuration problems $has_cc_fields = class_exists('Am_Paysystem_CreditCard', false); if ($has_cc_fields && !$this->getDi()->config->get('use_cron')) { if (APPLICATION_ENV != 'demo') $event->addReturn(___('%sEnable%s and %sconfigure%s external cron if you are using credit card payment plugins', '', '', '', '')); try { $crypt = $this->getDi()->crypt; } catch (Am_Exception_Crypt $e) { $event->addReturn("Encryption subsystem error: " . $e->getMessage()); } } } public function onHourly(Am_Event $event) { foreach ($this->getPlugins() as $ps) $ps->ccRebill($this->getDi()->sqlDate); } /** @return array of Am_Paysystem_CreditCard */ public function getPlugins() { $this->getDi()->plugins_payment->loadEnabled(); $ret = array(); foreach ($this->getDi()->plugins_payment->getAllEnabled() as $ps) if ($ps instanceof Am_Paysystem_CreditCard || $ps instanceof Am_Paysystem_Echeck) $ret[] = $ps; return $ret; } public function onUserAfterDelete(Am_Event_UserAfterDelete $event) { $this->getDi()->ccRecordTable->deleteByUserId($event->getUser()->pk()); $this->getDi()->echeckRecordTable->deleteByUserId($event->getUser()->pk()); } function onUserTabs(Am_Event_UserTabs $event) { if ($event->getUserId() > 0) { $event->getTabs()->addPage(array( 'id' => 'cc', 'module' => 'cc', 'controller' => 'admin', 'action' => 'info-tab', 'params' => array( 'user_id' => $event->getUserId(), ), 'label' => ___('Credit Cards'), 'order' => 900, 'resource' => 'cc', )); foreach ($this->getPlugins() as $ps) { if($ps instanceof Am_Paysystem_Echeck) { $event->getTabs()->addPage(array( 'id' => 'cc', 'module' => 'cc', 'controller' => 'admin', 'action' => 'info-tab-echeck', 'params' => array( 'user_id' => $event->getUserId(), ), 'label' => ___('Echeck'), 'order' => 901, 'resource' => 'cc', )); break; } } } } function onAdminMenu(Am_Event $event) { $parent = $event->getMenu()->findBy('id', 'utilites'); if (!$parent) $parent = $event->getMenu(); $parent->addPage(array( 'id' => 'ccrebills', 'module' => 'cc', 'controller' => 'admin-rebills', 'label' => ___('Credit Card Rebills'), 'resource' => 'cc', )); /* disabled until real-life tested if (count($this->getPlugins()) > 1) { $parent->addPage(array( 'id' => 'cc-change', 'module' => 'cc', 'controller' => 'admin', 'action' => 'change-paysys', 'label' => 'Change Paysystem', )); } * */ } function onGetPermissionsList(Am_Event $event) { $event->addReturn(___("Can view/edit customer Credit Card information and rebills"), 'cc'); } function onGetMemberLinks(Am_Event $event) { $user = $event->getUser(); if ($user->status == User::STATUS_PENDING) return ; foreach ($this->getPlugins() as $pl) { if($pl instanceof Am_Paysystem_CreditCard && ($link = $pl->getUpdateCcLink($user))) $event->addReturn(___("Update Credit Card Info"), $link); elseif($pl instanceof Am_Paysystem_Echeck && ($link = $pl->getUpdateEcheckLink($user))) $event->addReturn(___("Update Echeck Info"), $link); } } }