コード例 #1
0
 /**
  * set access privileges
  */
 function init()
 {
     $this->acl->allow("administrator", $this->name, "*");
     if (!$this->acl->isAllowed($this->session->get("role"), $this->name, $this->action)) {
         $this->redirect(AppRouter::getRewrittedUrl("/admin/main/logIn"));
     }
 }
コード例 #2
0
 protected function parseItem($email)
 {
     $text = $this->data['text'];
     $verification = $this->verification->addVerification(null, "newsletterEmailDel", $email);
     $unsubscribeLink = Config::get("siteRootUrl") . AppRouter::getRewrittedUrl("/newsletter/confirmNewsletterEmailDel/" . $verification->code, false);
     $text .= str_replace("[unsubscribe link]", $unsubscribeLink, $this->data['newsletterFooterDescription']);
     $this->mailer->sendEmail($email, $this->data['subject'], $text, $this->data['fromEmail']);
     if ($this->parsedItems < $this->totalItems) {
         sleep($this->timeDelay);
     }
 }
コード例 #3
0
ファイル: SitemapController.php プロジェクト: reinfire/arfooo
 function indexAction()
 {
     // add static links
     $urlRewriting = Config::get('urlRewriting');
     $siteRootUrl = Config::get('siteRootUrl');
     $siteMapGenerator = new SiteMapGenerator();
     $siteMapGenerator->setSavePath(CODE_ROOT_DIR);
     $siteMapGenerator->addLink($siteRootUrl, '', 'always', '1.0');
     if (Config::get("newsEnabled")) {
         $siteMapGenerator->addLink($siteRootUrl . AppRouter::getRewrittedUrl('/site/news', false), '', 'always', '1.0');
     }
     if (Config::get("rssNewsEnabled")) {
         $siteMapGenerator->addLink($siteRootUrl . AppRouter::getRewrittedUrl('/rss/news', false), '', 'always', '0.8');
     }
     if (Config::get("notationsEnabled")) {
         $siteMapGenerator->addLink($siteRootUrl . AppRouter::getRewrittedUrl('/site/topNotes', false), '', '', '0.8');
     }
     if (Config::get("hitsEnabled")) {
         $siteMapGenerator->addLink($siteRootUrl . AppRouter::getRewrittedUrl('/site/topHits', false), '', '', '0.8');
     }
     if (Config::get("topReferrersEnabled")) {
         $siteMapGenerator->addLink($siteRootUrl . AppRouter::getRewrittedUrl('/site/topReferrers', false), '', '', '0.8');
     }
     if (Config::get("topRankEnabled")) {
         $siteMapGenerator->addLink($siteRootUrl . AppRouter::getRewrittedUrl('/site/topRank', false), '', '', '0.8');
     }
     if (Config::get("allCategoriesPageEnabled")) {
         $siteMapGenerator->addLink($siteRootUrl . AppRouter::getRewrittedUrl('/category/showAll', false), '', 'weekly', '1.0');
     }
     if (Config::get("contactPageEnabled")) {
         $siteMapGenerator->addLink($siteRootUrl . AppRouter::getRewrittedUrl('/contact', false), '', '', '1.0');
     }
     // add all sites links
     $step = 1000;
     $maxSiteId = $this->site->get("MAX(siteId)");
     for ($startId = 0; $startId <= $maxSiteId; $startId += $step) {
         $c = new Criteria();
         $c->add("siteId", $startId, ">=");
         $c->add("siteId", $startId + $step, "<");
         $c->add("status", 'validated');
         $sites = $this->site->findAll($c, "siteId, siteTitle, creationDate, categoryId");
         $this->site->attachParents($sites);
         foreach ($sites as $site) {
             $siteMapGenerator->addLink(AppRouter::getObjectUrl($site, "siteDetails", true), date("Y-m-d", strtotime($site['creationDate'])), '', '1.0');
         }
     }
     // add all categories links
     $categories = $this->category->findAll(null, "categoryId, name, urlName");
     foreach ($categories as $category) {
         $siteMapGenerator->addLink(AppRouter::getObjectUrl($category, "category", true), "", '', '1.0');
     }
     $siteMapGenerator->endSiteMap();
 }
コード例 #4
0
ファイル: TaskController.php プロジェクト: reinfire/arfooo
 function init()
 {
     $this->acl->allow("administrator", $this->name, "*");
     $this->acl->allow("guest", $this->name, "start");
     $this->acl->allow("guest", $this->name, "nextStart");
     if (!$this->acl->isAllowed($this->session->get("role"), $this->name, $this->action)) {
         $this->redirect(AppRouter::getRewrittedUrl("/admin/main/logIn"));
     }
     if (in_array($this->request->taskId, array("newsletter", "siteHttpCode", "siteBacklink", "siteThumb", "siteDuplicateContent"))) {
         $className = ucfirst($this->request->taskId) . "BackgroundTask";
         $this->backgroundTask = new $className();
     }
     $this->viewClass = "JsonView";
 }
コード例 #5
0
ファイル: RssController.php プロジェクト: reinfire/arfooo
 /**
  * Generate news RSS
  */
 function newsAction()
 {
     if (!Config::get("rssNewsEnabled")) {
         $this->return404();
     }
     $doc = new XmlGenerator();
     $rssNode = $doc->createElement('rss');
     $doc->appendChild($rssNode);
     $rssNode->setAttribute('version', '2.0');
     $channelNode = new XmlElement('channel');
     $rssNode->appendChild($channelNode);
     // add channel properties  //new DOMElement('
     $channelNode->addProperty('title', _t('News'));
     $channelNode->addProperty('link', Config::get('siteRootUrl') . AppRouter::getRewrittedUrl('/site/news', false));
     $channelNode->addProperty('description', _t('The new sites'));
     $channelNode->addProperty('language', 'fr-fr');
     $channelNode->addProperty('lastBuildDate', date('D, j M Y H:i:s O'));
     $channelNode->addProperty('generator', 'RSS Generator');
     $sites = $this->siteList->getNewValidatedSites();
     $this->appendSites($channelNode, $sites);
     $this->set("doc", $doc);
     $this->viewClass = "XmlView";
 }
コード例 #6
0
ファイル: BackgroundTask.php プロジェクト: reinfire/arfooo
 public function start()
 {
     $scriptStartTime = time();
     ignore_user_abort(true);
     set_time_limit(60 * 5);
     $taskCriteria = new Criteria();
     $taskCriteria->add("taskId", $this->taskId);
     $task = $this->task->find($taskCriteria);
     if (empty($task)) {
         return;
     }
     if (!in_array($task->status, array("init", "next"))) {
         return;
     }
     $this->data = unserialize($task->data);
     if ($task->status == "next") {
         $taskData = Cacher::getInstance()->load("taskData" . $this->taskId);
         if (empty($taskData)) {
             return;
         }
         $this->items = $taskData['items'];
         $startIndex = $taskData['startIndex'];
         $this->parsedItems = $startIndex;
     } else {
         $startIndex = 0;
         $this->loadItems();
     }
     $this->totalItems = count($this->items);
     $task->totalItems = $this->totalItems;
     $task->status = "active";
     $task->save();
     $lp = 0;
     $this->beforeParsing();
     $executeNextProcess = false;
     for ($i = $startIndex, $itemsCount = count($this->items); $i < $itemsCount && !$executeNextProcess; $i++) {
         $item = $this->items[$i];
         $this->parseItem($item);
         $task->parsedItems = ++$this->parsedItems;
         $task->save();
         if ($this->parsedItems < $this->totalItems) {
             $taskStatus = $this->task->get("status", $taskCriteria);
             if ($taskStatus == "pause") {
                 do {
                     sleep($this->pauseUpdateStatusInterval);
                     $taskStatus = $this->task->get("status", $taskCriteria);
                 } while ($taskStatus == "pause");
             }
             if ($taskStatus == "stop") {
                 break;
             }
             if (time() - $scriptStartTime > $this->scriptMaxExecutionTime) {
                 $executeNextProcess = true;
                 $taskData = array("items" => $this->items, "startIndex" => $i + 1);
                 Cacher::getInstance()->save($taskData, "taskData" . $this->taskId);
             }
         }
     }
     if ($executeNextProcess) {
         $task->status = "next";
         $task->save();
         $this->fork(AppRouter::getRewrittedUrl("/admin/task/nextStart"));
     } else {
         Cacher::getInstance()->delete("taskData" . $this->taskId);
         $task->status = "finish";
         $task->save();
         $this->afterParsing();
     }
 }
コード例 #7
0
ファイル: SiteController.php プロジェクト: reinfire/arfooo
 function saveSiteAction()
 {
     $this->viewClass = "JsonView";
     $edit = !empty($this->request->siteId);
     $validationOptions = array("admin" => true, "forceCategoryDuplicate" => true, "forcePossibleTender" => true);
     if ($this->request->url == "http://") {
         $this->request->url = "";
     }
     if ($edit) {
         $site = $this->site->findByPk($this->request->siteId);
         if ($site->status != "validated" && $this->request->status == "validated") {
             $site->_creationDate = "NOW()";
         }
         $package = $site->packageId ? $this->package->findByPk($site->packageId) : null;
         $errorMessage = $this->siteValidator->validate($this->request, $site, $validationOptions + array("package" => $package));
     } else {
         $site = new SiteRecord();
         $this->request->webmasterEmail = $this->session->get("email");
         $errorMessage = $this->siteValidator->validate($this->request, null, $validationOptions);
     }
     if ($errorMessage) {
         $status = "error";
         $this->set("status", $status);
         $this->set("message", _t($errorMessage));
         return;
     }
     $fields = array("categoryId", "webmasterName", "webmasterEmail", "webmasterId", "siteTitle", "url", "rssTitle", "rssFeedOfSite", "description", "returnBond", "status", "problemExists", "priority", "visitsCount", "referrerTimes");
     if (Config::get("countryFlagsEnabled")) {
         array_push($fields, "countryCode");
     }
     if (Config::get("companyInfoEnabled")) {
         array_push($fields, "address", "zipCode", "city", "country", "phoneNumber", "faxNumber");
     }
     if (isset($this->request->proposalForCategory)) {
         array_push($fields, 'proposalForCategory');
     }
     if (isset($this->request->proposalForKeywords)) {
         array_push($fields, 'proposalForKeywords');
     }
     if (isset($this->request->descriptionDisplayMethod)) {
         array_push($fields, 'descriptionDisplayMethod');
     }
     $site->fromArray($this->request->getArray($fields));
     $site->searchPartnership = empty($this->request->searchPartnership) ? 0 : 1;
     $site->save();
     // store keywords, admin has no limit here
     if (!empty($this->request->keywords)) {
         $this->keywordsOfSite->storeKeywords($site->siteId, $this->request->keywords, 1000);
     }
     // save additional categories
     if (!empty($this->request->additionalCategoryIds)) {
         $c = new Criteria();
         $c->add('siteId', $site->siteId);
         $this->siteAdditionalCategory->del($c);
         foreach ($this->request->additionalCategoryIds as $categoryId) {
             $additionalCategory = new SiteAdditionalCategoryRecord(array('siteId' => $site->siteId, 'categoryId' => $categoryId));
             $additionalCategory->save();
         }
         $this->site->updateStats();
     }
     if (!empty($this->request->tempId)) {
         $c = new Criteria();
         $c->add("tempId", $this->request->tempId);
         $this->photo->update(array("itemId" => $site->siteId, "_tempId" => "NULL"), $c);
         $site->updatePhotos();
     }
     $this->extraField->saveExtraFieldsValues($site, $this->request);
     $site->updateSuffix();
     $this->set("status", "ok");
     $this->set("message", _t("The site was successfully submitted."));
     $this->set("redirectUrl", AppRouter::getRewrittedUrl("/admin/category/index/" . $site->categoryId));
 }
コード例 #8
0
ファイル: MainController.php プロジェクト: reinfire/arfooo
 function indexAction()
 {
     $this->redirect(AppRouter::getRewrittedUrl("/moderation/site/waiting"));
 }
コード例 #9
0
ファイル: SiteModel.php プロジェクト: reinfire/arfooo
 function getThumbnailSrc($canBeOverwrittenByGalleryImage = true)
 {
     if ($canBeOverwrittenByGalleryImage && (empty($this->url) || Config::get("firstGalleryImageForThumbEnabled") && $this->firstGalleryImageSrc)) {
         if ($this->firstGalleryImageSrc) {
             return AppRouter::getResourceUrl("/uploads/images_thumbs/" . UploadedFile::fileNameToPath($this->firstGalleryImageSrc) . 's' . $this->firstGalleryImageSrc);
         } else {
             return $this->getDefaultImageSrc();
         }
     }
     $siteId = $this->siteId;
     if ($this->imageSrc) {
         return AppRouter::getResourceUrl("/uploads/images_thumbs/" . $this->imageSrc);
     } else {
         if (empty($this->url)) {
             return $this->getDefaultImageSrc();
         } else {
             if (Config::get('cacheSiteImagesEnabled') == 1) {
                 $fileName = $siteId . '.jpg';
                 $filePath = Config::get("SITES_THUMBS_PATH") . $fileName;
                 if (file_exists($filePath)) {
                     return AppRouter::getResourceUrl("/uploads/images_thumbs/" . $fileName);
                 } else {
                     return AppRouter::getRewrittedUrl("/site/getThumb/" . $siteId);
                 }
             } else {
                 if (Config::get("thumbsGeneratorUrl")) {
                     return $this->getThumbGeneratorSiteUrl();
                 } else {
                     return $this->getDefaultImageSrc();
                 }
             }
         }
     }
 }
コード例 #10
0
 function checkSiteTypeAccess($siteType, $action)
 {
     if (!Config::get("inscriptionsOfSitesEnabled")) {
         $this->redirect($this->moduleLink("submitDisabled"));
     }
     if (empty($siteType)) {
         if (Config::get("availableSiteTypes") == "basic") {
             $this->redirect($this->moduleLink("{$action}/basic"));
         } else {
             $this->redirect($this->moduleLink("chooseSiteType"));
         }
     }
     if (!$this->validSiteType($siteType)) {
         $this->return404();
     }
     if ($siteType == "premium") {
         if (Config::get("registrationOfWebmastersEnabled")) {
             $payment = $this->payment->getUnusedPaidOneByUserId($this->userId);
         } else {
             $payment = $this->payment->getUnusedPaidOneByIp($this->request->getIp());
         }
         if (empty($payment)) {
             $this->redirect(AppRouter::getRewrittedUrl("/payment/selectPaymentOptions"));
         } else {
             $package = $this->package->findByPk($payment->packageId);
             return $package;
         }
     }
     return null;
 }
コード例 #11
0
ファイル: SiteController.php プロジェクト: reinfire/arfooo
 function saveSiteAction()
 {
     $this->viewClass = "JsonView";
     $edit = !empty($this->request->siteId);
     $validationOptions = array("admin" => true, "forceCategoryDuplicate" => true, "forcePossibleTender" => true);
     if ($edit) {
         $site = $this->site->findByPk($this->request->siteId);
         if ($site->status != "validated" && $this->request->status == "validated") {
             $site->_creationDate = "NOW()";
         }
         $package = $site->packageId ? $this->package->findByPk($site->packageId) : null;
         $errorMessage = $this->siteValidator->validate($this->request, $site, $validationOptions + array("package" => $package));
     } else {
         $site = new SiteRecord();
         $this->request->webmasterEmail = $this->session->get("email");
         $errorMessage = $this->siteValidator->validate($this->request, null, $validationOptions);
     }
     if ($errorMessage) {
         $status = "error";
         $this->set("status", $status);
         $this->set("message", _t($errorMessage));
         return;
     }
     $fields = array("categoryId", "webmasterName", "webmasterEmail", "webmasterId", "siteTitle", "url", "rssTitle", "rssFeedOfSite", "description", "returnBond", "status", "problemExists", "priority", "visitsCount", "referrerTimes");
     if (Config::get("countryFlagsEnabled")) {
         array_push($fields, "countryCode");
     }
     if (Config::get("companyInfoEnabled")) {
         array_push($fields, "address", "zipCode", "city", "country", "phoneNumber", "faxNumber");
     }
     $site->fromArray($this->request->getArray($fields));
     $site->save();
     // store keywords
     if (!empty($this->request->keywords)) {
         $maxKeywordsCountPerSite = $package ? $package->maxKeywordsCountPerSite : Config::get("maxKeywordsCountPerSite");
         $this->keywordsOfSite->storeKeywords($site->siteId, $this->request->keywords, $maxKeywordsCountPerSite);
     }
     if (!empty($this->request->tempId)) {
         $c = new Criteria();
         $c->add("tempId", $this->request->siteId);
         $this->photo->update(array("siteId" => $site->siteId, "_tempId" => "NULL"), $c);
         $site->updatePhotos();
     }
     $this->extraField->saveExtraFieldsValues($site, $this->request);
     $site->updateSuffix();
     $this->set("status", "ok");
     $this->set("message", _t("The site was successfully submitted."));
     $this->set("redirectUrl", AppRouter::getRewrittedUrl("/moderation/site/waiting"));
 }
コード例 #12
0
 public static function modifierUrl()
 {
     return AppRouter::getRewrittedUrl(func_get_args());
 }
コード例 #13
0
ファイル: SiteController.php プロジェクト: reinfire/arfooo
 /**
  * Display site details page
  */
 function detailsAction($siteId, $niceUrl)
 {
     //set adPage for ads
     Display::set("adPage", "site" . $siteId);
     $cache = Cacher::getInstance();
     $cacheLifeTime = Config::get("siteDetailsCacheLifeTime");
     if (!Config::get("siteDetailsCacheEnabled") || ($site = $cache->load("siteDetails{$siteId}", true, $cacheLifeTime)) === null) {
         //get site data
         $site = $this->site->getSiteWithDetails($siteId);
         if (empty($site) || $site->status != "validated") {
             return $this->return404();
         }
         $this->site->attachParents($site);
         //check passed siteTitle is url is correct
         $siteDetailsUrl = AppRouter::getObjectUrl($site, "siteDetails");
         if ($siteDetailsUrl != $_SERVER['REQUEST_URI']) {
             $this->redirect($siteDetailsUrl, 301);
         }
         $this->site->attachExtraFields($site);
         $site->photos = $this->photo->getItemPhotos($siteId);
         //get site keywords
         $site->keywords = $site->getKeywords();
         //get google details
         $googleStats = new GoogleStats();
         $results = $googleStats->getGoogleDetailsOfSiteIfCached($site->url);
         //if results exists pass them to template
         if ($results) {
             $site->pageRank = $results['pageRank'];
             $site->backlinksCount = $results['backlinksCount'];
             $site->indexedPagesCount = $results['indexedPagesCount'];
         } else {
             //if no use ajax to reduce site generation time
             $this->set("ajaxGoogleDetails", true);
         }
         if (Config::get("showRandomSitesInDetails")) {
             $site->randomSites = $site->getSimilarSites();
         }
         $site->comments = $this->comment->getSiteValidatedComments($siteId);
         if (Config::get("siteDetailsCacheEnabled")) {
             $cache->save($site, null, null, array("site", "site" . $siteId));
         }
     } else {
         //check passed siteTitle is url is correct
         $siteDetailsUrl = AppRouter::getObjectUrl($site, "siteDetails");
         if ($siteDetailsUrl != $_SERVER['REQUEST_URI']) {
             $this->redirect($siteDetailsUrl, 301);
         }
     }
     //set category id where site is placed to retrieve predefinitions in ads module
     Display::set("adSiteCategoryId", $site->categoryId);
     //set site rss href
     Display::set("siteRssHref", AppRouter::getRewrittedUrl("/rss/site/" . $site->siteId));
     //set META keywords in HEAD section
     $this->set("metaKeywords", implode(", ", array_map(create_function('$a', 'return $a["keyword"];'), $site->keywords)));
     //set META description in HEAD section
     $this->set("metaDescription", utf8_substr(preg_replace("#\r?\n#", "", strip_tags($site->description)), 0, 200));
     //check passed siteTitle is url is correct
     $siteDetailsUrl = AppRouter::getObjectUrl($site, "siteDetails");
     if ($siteDetailsUrl != $_SERVER['REQUEST_URI']) {
         $this->redirect($siteDetailsUrl, 301);
     }
     $this->siteHtml->configureSiteHtmlDisplay($site);
     //set site data
     $this->set("site", $site);
     if (Config::get("googleMapEnabled")) {
         $this->set("googleMap", $site->getGoogleMap());
     }
     if (Config::get("remoteRssParsingEnabled") && !empty($site['rssFeedOfSite'])) {
         define("MAGPIE_OUTPUT_ENCODING", "UTF-8");
         define("MAGPIE_DETECT_ENCODING", true);
         // Define cache's maximum age
         define('MAGPIE_CACHE_AGE', 60 * 60 * 24 * intval(Config::get('magpieRssCacheMaxAgeDays')));
         require_once Config::get('COMPONENTS_PATH') . 'magpierss/rss_fetch.php';
         $rss = @fetch_rss($site['rssFeedOfSite']);
         if (!empty($rss)) {
             $remoteRss = array("items" => array(), "channel" => $rss->channel);
             $items = array_slice($rss->items, 0, Config::get("numberOfItemsForRssParsing"));
             foreach ($items as $item) {
                 if (isset($item['description'])) {
                     // Strip tags from each item's description
                     $item['description'] = strip_tags(html_entity_decode($item['description'], ENT_COMPAT, 'UTF-8'));
                 }
                 if (!isset($item['link']) && isset($item['link_'])) {
                     $item['link'] = $item['link_'];
                 }
                 if (!empty($item['link']) && !empty($item['title'])) {
                     $remoteRss['items'][] = $item;
                 }
             }
             $this->set("remoteRss", $remoteRss);
         }
     }
 }
コード例 #14
0
ファイル: Controller.php プロジェクト: reinfire/arfooo
 /**
  * Create module link to navigate between actions in controller
  * @param  string $action Action name in controller
  * @return string full url to action
  */
 protected function moduleLink($action = "", $absolute = true)
 {
     $url = "";
     if ($this->localDir) {
         $url .= "/" . rtrim($this->localDir, "/") . "";
     }
     $url = $url . "/" . $this->niceName;
     if ($action) {
         $url .= "/" . $action;
     }
     $url = AppRouter::getRewrittedUrl($url, $absolute);
     if ($url[0] != "/" && $absolute) {
         $url .= "/" . $url;
     }
     return $url;
 }
コード例 #15
0
 function saveCategoryAction()
 {
     $rebuild = false;
     $edit = !empty($this->request->categoryId);
     $imageSrc = false;
     try {
         $file = new UploadedFile("categoryImage");
         $file->addFilter("extension", array("jpg", "gif", "png"));
         //check and save image
         if ($file->wasUploaded()) {
             $file->setSavePath(CODE_ROOT_DIR . 'uploads/images_categories/');
             $file->save();
             $imageSrc = $file->getSavedFileName();
         }
     } catch (Exception $e) {
     }
     if (!$edit && $imageSrc == false) {
         $imageSrc = 'defaultCategoryImage.gif';
     }
     //create and save new category
     $fields = $this->request->getArray(array("name", "urlName", "navigationName", "title", "headerDescription", "possibleTender", "description", "metaDescription", "parentCategoryId", "forbidden"));
     if ($edit) {
         $category = $this->category->findByPk($this->request->categoryId);
         //handle categoryParentId change
         if ($category->parentCategoryId != $this->request->parentCategoryId && $category->changeParent($this->request->parentCategoryId)) {
             $rebuild = true;
         }
     } else {
         $category = new CategoryRecord();
     }
     $category->fromArray($fields);
     if ($imageSrc) {
         if ($edit) {
             $category->removeImage();
         }
         $category->imageSrc = $imageSrc;
     }
     if (empty($category->urlName)) {
         $category->urlName = $category->name;
     }
     $excludeCategoryId = $edit ? $category->categoryId : false;
     $category->urlName = $this->category->getFreeUrlName($category->urlName, $excludeCategoryId);
     $category->save();
     if (!$edit) {
         $this->categoryParent->addNode($this->request->parentCategoryId, $category->categoryId);
     }
     if ($rebuild) {
         $this->categoryParent->moveNode($category->categoryId, $category->parentCategoryId);
         $this->category->updateValidatedSitesCount();
     }
     $redirect = AppRouter::getRewrittedUrl("/admin/category/index/" . $category->parentCategoryId);
     $this->redirect($redirect);
 }
コード例 #16
0
 function deleteAction($fieldId)
 {
     $extraField = $this->extraField->findByPk($fieldId);
     if (empty($extraField)) {
         $this->return404();
     }
     $c = new Criteria();
     $c->add("fieldId", $extraField->fieldId);
     $c->setLimit(1);
     $categoryId = $this->extraFieldCategory->get("categoryId", $c);
     $extraField->del();
     $url = AppRouter::getRewrittedUrl("/admin/category/edit/" . $categoryId);
     $this->redirect($url);
 }
コード例 #17
0
ファイル: PaymentController.php プロジェクト: reinfire/arfooo
 public function processPaymentAction()
 {
     if (empty($this->request->processorId) || empty($this->request->packageId)) {
         $this->redirect($this->moduleLink("selectPaymentOptions"));
     }
     $processorId = $this->request->processorId;
     $package = $this->package->findByPk($this->request->packageId);
     $paymentProcessor = $this->factoryPaymentProcessor($processorId);
     if (empty($paymentProcessor) || empty($package)) {
         $this->return404();
     }
     if (!$paymentProcessor->setProduct($package)) {
         $this->return404();
     }
     $processPaymentSuccesfully = $paymentProcessor->processPayment();
     if ($processorId == "PayPal") {
         $notifyUrl = Config::get("siteRootUrl") . $this->moduleLink("ipn", false);
         $returnUrl = Config::get("siteRootUrl") . AppRouter::getRewrittedUrl("/webmaster/loading", false);
         $cancelReturnUrl = Config::get("siteRootUrl") . AppRouter::getRewrittedUrl("/webmaster/submitWebsite/premium", false);
         $paymentProcessor->setNotifyUrl($notifyUrl);
         $paymentProcessor->setReturnUrl($returnUrl);
         $paymentProcessor->setCancelReturnUrl($cancelReturnUrl);
         $this->set("paymentOptions", $paymentProcessor->getPaymentOptions());
     }
     if ($processorId == "Allopass") {
         $this->viewClass = "JsonView";
         if (!$processPaymentSuccesfully) {
             //set status to js part about that something is wrong with site data
             $this->set("status", "error");
             //set error message what is wrong
             $this->set("message", _t($paymentProcessor->getLastError()));
             return;
         }
         //set status to js part about site proccessing
         $this->set("status", "ok");
         //inform js to redirect
         $redirectUrl = AppRouter::getRewrittedUrl("/webmaster/submitWebsite/premium");
         $this->set("redirectUrl", $redirectUrl);
         $this->set("message", _t("Allopass was validated sucessfully."));
     }
 }
コード例 #18
0
ファイル: AppRouter.php プロジェクト: reinfire/arfooo
 public static function getObjectUrl($object, $type, $absolute = false)
 {
     switch ($type) {
         case "tag":
             $urlParts = array("/site/tag/%d/%s/%d", $object['tagId'], NameTool::strToAscii($object['tag']), isset($object['page']) ? $object['page'] : 1);
             break;
         case "keyword":
             $urlParts = array("/site/keyword/%d/%s/%d", $object['keywordId'], NameTool::strToAscii($object['keyword']), isset($object['page']) ? $object['page'] : 1);
             break;
         case "category":
             $urlParts = array("/site/category/%d/%s/%d", $object['categoryId'], Config::get("advancedUrlRewritingEnabled") ? $object['urlName'] : NameTool::strToAscii($object['name']), isset($object['page']) ? $object['page'] : 1);
             break;
         case "keyword":
             $urlParts = array("/site/keyword/%d/%s/%d", $object['keywordId'], $object['keyword'], isset($object['page']) ? $object['page'] : 1);
             break;
         case "siteDetails":
             $titleUrl = NameTool::strToAscii($object['siteTitle']);
             if (Config::get("advancedUrlRewritingEnabled")) {
                 $categoryUrl = "";
                 $categoryParents = $object['categoryParents'];
                 foreach ($categoryParents as $categoryParent) {
                     if ($categoryUrl) {
                         $categoryUrl .= "\\";
                     }
                     $categoryUrl .= NameTool::strToAscii($categoryParent['name']);
                 }
                 $urlParts = array("/site/details/%d/%s/%s", $object['siteId'], $categoryUrl, $titleUrl);
             } else {
                 $urlParts = array("/site/details/%d/%s", $object['siteId'], $titleUrl);
             }
             break;
     }
     $url = AppRouter::getRewrittedUrl($urlParts);
     if ($absolute) {
         $url = Config::get("siteDomainUrl") . $url;
     }
     return $url;
 }