/** * Performs the action; returns true on success, false on error. * * @param $p_context - the current context object * @return bool */ public function takeAction(CampContext &$p_context) { $p_context->default_url->reset_parameter('f_'.$this->m_name); $p_context->url->reset_parameter('f_'.$this->m_name); if (PEAR::isError($this->m_error)) { return false; } $user = new User($p_context->user->identifier); if ($user->getUserId() != CampRequest::GetVar('LoginUserId') || $user->getKeyId() != CampRequest::GetVar('LoginUserKey') || $user->getUserId() == 0 || $user->getKeyId() == 0) { $this->m_error = new PEAR_Error('You must be logged in to create or edit your subscription.', ACTION_EDIT_SUBSCRIPTION_ERR_NO_USER); return false; } $subscriptions = Subscription::GetSubscriptions($p_context->publication->identifier, $user->getUserId()); if (count($subscriptions) == 0) { $subscription = new Subscription(); $created = $subscription->create(array( 'IdUser' => $user->getUserId(), 'IdPublication' => $p_context->publication->identifier, 'Active' => 'Y', 'Type' => $this->m_subscriptionType == 'trial' ? 'T' : 'P')); if (!$created) { $this->m_error = new PEAR_Error('Internal error (code 1)', ACTION_EDIT_SUBSCRIPTION_ERR_INTERNAL); exit(1); } } else { $subscription = $subscriptions[0]; } $publication = new Publication($p_context->publication->identifier); $subscriptionDays = $this->computeSubscriptionDays($publication, $p_context->publication->subscription_time); $startDate = new Date(); $columns = array( 'StartDate'=>$startDate->getDate(), 'Days'=>$subscriptionDays, 'PaidDays'=>($this->m_subscriptionType == 'trial' ? $subscriptionDays : 0), 'NoticeSent'=>'N' ); if ($this->m_properties['subs_by_type'] == 'publication') { $sectionsList = Section::GetUniqueSections($p_context->publication->identifier); foreach ($sectionsList as $section) { $this->m_sections[] = $section['id']; } } foreach ($this->m_languages as $languageId) { foreach ($this->m_sections as $sectionNumber) { $subsSection = new SubscriptionSection($subscription->getSubscriptionId(), $sectionNumber, $languageId); $subsSection->create($columns); } } $fields = array('SubsType', 'tx_subs', 'nos', 'unitcost', 'unitcostalllang', 'f_substype', 'cb_subs', 'subs_all_languages', 'suma', 'tpl', 'subscription_language'); foreach (CampRequest::GetInput() as $field=>$value) { if (strncmp('tx_subs', $field, strlen('tx_subs')) == 0) { $fields[] = $field; } } foreach ($fields as $fieldName) { $p_context->default_url->reset_parameter($fieldName); $p_context->url->reset_parameter($fieldName); } $this->m_error = ACTION_OK; return true; }
/** * * @param int $p_subscriptionId * @param int $p_publicationId * @param int $p_languageId * @param array $p_values * @return boolean */ public static function AddSubscriberToPublication($p_subscriptionId, $p_publicationId, $p_languageId, $p_values = null) { global $g_ado_db; $created = true; $queryStr = "SELECT DISTINCT Number FROM Sections where IdPublication={$p_publicationId}"; $sectionIds = $g_ado_db->GetCol($queryStr); foreach ($sectionIds as $sectionId) { $subscriptionSection = new SubscriptionSection($p_subscriptionId, $sectionId, $p_languageId); $created &= $subscriptionSection->create($p_values); } return $created; }
$id = explode('_', $section_id); $new_sections[$id[0]][] = $id[1]; } } } $columns = array('StartDate' => $f_subscription_start_date, 'Days' => $f_subscription_days, 'PaidDays' => $f_subscription_days); foreach ($new_sections as $section_number=>$section_languages) { foreach ($section_languages as $section_language) { //echo "<p>try $section_number:$section_language</p>\n"; $subscriptionSection = new SubscriptionSection($f_subscription_id, $section_number, $section_language); if (!$subscriptionSection->exists()) { //echo "<p>create $section_number:$section_language</p>\n"; $success &= $subscriptionSection->create($columns); } } } if ($success) { camp_html_goto_page("/$ADMIN/users/subscriptions/sections/" ."?f_user_id=$f_user_id&f_subscription_id=$f_subscription_id&f_publication_id=$f_publication_id"); } else { $errorMsgs[] = getGS('The sections could not be added successfully. Some of them were already added !'); } $crumbs = array(); $crumbs[] = array(getGS("Configure"), ""); $crumbs[] = array(getGS("Subscribers"), "/$ADMIN/users/?uType=Subscribers"); $crumbs[] = array(getGS("Account") . " '".$manageUser->getUserName()."'", "/$ADMIN/users/edit.php?User=$f_user_id&uType=Subscribers");