コード例 #1
0
    /**
     * 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;
    }
コード例 #2
0
 /**
  *
  * @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;
 }
コード例 #3
0
ファイル: do_add.php プロジェクト: nistormihai/Newscoop
			$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");