コード例 #1
0
ファイル: AdCriteriaModel.php プロジェクト: reinfire/arfooo
 function del(Criteria $c)
 {
     $condition = $c->getCondition("adCriterionId");
     $nc = new Criteria();
     $nc->addCondition($condition);
     parent::del($c);
     Model::factoryInstance("ad")->del($nc);
 }
コード例 #2
0
ファイル: ModelRecord.php プロジェクト: reinfire/arfooo
 /**
  * Generates the standard ModelRecord object
  * @param array $data Row data - associated array
  * @param bollean $new is new instance, not loaded from database
  */
 public function __construct($data = false, $new = true)
 {
     parent::__construct($data);
     $modelName = substr(get_class($this), 0, -6);
     // "Record" length
     $this->Model = Model::factoryInstance($modelName);
     $this->_new = $new;
 }
コード例 #3
0
ファイル: PhotoModel.php プロジェクト: reinfire/arfooo
 function save()
 {
     parent::save();
     if ($this->itemId) {
         Model::factoryInstance("site")->findByPk($this->itemId)->updatePhotos();
     }
     if (rand(1, 10) <= 1) {
         Model::factoryInstance("photo")->removeExpiredTempPhotos();
     }
 }
コード例 #4
0
ファイル: PaymentModel.php プロジェクト: reinfire/arfooo
 public function save()
 {
     if (!empty($this->siteId)) {
         $site = Model::factoryInstance("site")->findByPk($this->siteId);
         if ($site) {
             $site->paymentStatus = $this->status;
             if ($this->status == "paid" && Config::get("automaticSiteValidation")) {
                 $site->status = "validated";
             }
             $site->save();
         }
     }
     parent::save();
 }
コード例 #5
0
ファイル: AppRouter.php プロジェクト: reinfire/arfooo
 public function getControllerActionUrl($url)
 {
     $urlParts = @parse_url($url);
     if (!empty($urlParts['query']) && !empty($urlParts['path'])) {
         $filters = array_map('preg_quote', Model::factoryInstance('setting')->getCampaignFilters());
         foreach ($filters as &$filter) {
             $filter = str_replace('\\*', '.*', $filter);
         }
         $pattern = '#^(?:' . implode('|', $filters) . ')$#';
         if (preg_match($pattern, $urlParts['query'])) {
             $url = $urlParts['path'];
         }
     }
     return parent::getControllerActionUrl($url);
 }
コード例 #6
0
ファイル: AdModel.php プロジェクト: reinfire/arfooo
 function getAdsOnPage($page)
 {
     $c = new Criteria();
     $c->add("page", $page);
     $ads = array();
     foreach ($this->findAll($c, "adCriterionId, place") as $ad) {
         $ads[$ad['place']] = $ad['adCriterionId'];
     }
     $globalSwitchOn = false;
     //checking global switches
     if (preg_match("#^(site|category|keyword|letter|tag)#", $page, $match) && strpos($page, "Custom") === false) {
         $pagePrefix = $match[1];
         $c = new Criteria();
         $c->add("page", "predefine" . ucfirst($pagePrefix));
         $c->add("place", "general");
         $c->add("adCriterionId", 1);
         if ($this->getCount($c)) {
             $globalSwitchOn = true;
         }
     }
     //checking predefine in site category
     if (substr_compare("site", $page, 0, 4) == 0 && strpos($page, "Custom") === false) {
         //only check ads on in category if site haven't on
         if (empty($ads['general'])) {
             $siteId = substr($page, 4);
             $site = Model::factoryInstance("site")->findByPk($siteId, "categoryId");
             $categoryPredefine = $this->isSiteAdsPredefinedInCategory($site->categoryId);
             if ($categoryPredefine !== null) {
                 $globalSwitchOn = $categoryPredefine;
             }
         }
         $customCategorySiteAds = $this->getCustomCategorySiteAds($site->categoryId);
         if (!empty($customCategorySiteAds['general'])) {
             foreach ($customCategorySiteAds as $key => $value) {
                 if (!isset($ads[$key])) {
                     $ads[$key] = $customCategorySiteAds[$key];
                 }
             }
         }
     }
     if (!isset($ads['general'])) {
         $ads['general'] = $globalSwitchOn ? 1 : 0;
     }
     if (!isset($ads['predefine'])) {
         $ads['predefine'] = $globalSwitchOn ? 1 : 0;
     }
     return $ads;
 }
コード例 #7
0
ファイル: CaptchaCodeModel.php プロジェクト: reinfire/arfooo
 function generateCaptchaCodesAndGetPublicOne()
 {
     // generate random private code
     $lettersSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
     $privateCode = '';
     do {
         for ($i = 0; $i < 4; $i++) {
             $privateCode .= substr($lettersSet, rand(0, strlen($lettersSet) - 1), 1);
         }
     } while (strlen($privateCode) != 4);
     // generate random public code
     $publicCode = '';
     do {
         for ($i = 0; $i < 20; $i++) {
             $publicCode .= substr($lettersSet, rand(0, strlen($lettersSet) - 1), 1);
         }
     } while (strlen($publicCode) != 20);
     $this->publicCode = $publicCode;
     $this->privateCode = $privateCode;
     $this->save();
     Model::factoryInstance("captchaCode")->deleteExpiredCaptchaCodes();
     return $publicCode;
 }
コード例 #8
0
ファイル: Controller.php プロジェクト: reinfire/arfooo
 public function __get($name)
 {
     switch ($name) {
         case "session":
             $this->session = Session::getInstance();
             break;
         case "request":
             $this->request = Request::getInstance();
             break;
         case "response":
             $this->response = Response::getInstance();
             break;
         case "acl":
             $this->acl = Acl::getInstance();
             break;
         case "userId":
             $this->userId = $this->session->get("userId");
             break;
         default:
             $this->{$name} = Model::factoryInstance($name);
     }
     return $this->{$name};
 }
コード例 #9
0
ファイル: ParentModel.php プロジェクト: reinfire/arfooo
 public function rebuildTable()
 {
     $c = new Criteria();
     $this->del($c);
     $categoryModel = Model::factoryInstance($this->categoryModelName);
     $categoryPrimaryKey = $categoryModel->getPrimaryKey();
     $categories = $categoryModel->findAll($c, $categoryPrimaryKey . "," . $this->categoryParentKey);
     $tree = new NavigationTree();
     foreach ($categories as $category) {
         $tree->addNode($category[$categoryPrimaryKey], $category[$this->categoryParentKey]);
     }
     $connections = $tree->getAllConnections();
     foreach ($connections as $connection) {
         $this->addNode($connection['parentCategoryId'], $connection['categoryId']);
     }
 }
コード例 #10
0
ファイル: SiteModel.php プロジェクト: reinfire/arfooo
 function getGoogleMap()
 {
     if (!Config::get('googleMapEnabled') || empty($this->address) || empty($this->city) || empty($this->country)) {
         return false;
     }
     $googleMap = new GoogleMap();
     $googleMap->setZoomLevel(15);
     $longAddress = $this->address . ', ' . $this->city . ', ' . $this->country;
     $map = $googleMap->getScriptCode();
     try {
         try {
             if (!is_null($this->lat) && !is_null($this->lng)) {
                 $googleMap->addGeoPoint($this->lat, $this->lng, $longAddress);
             } else {
                 $point = $googleMap->addAddress($longAddress);
                 if ($point !== false) {
                     Model::factoryInstance('site')->updateByPk($point, $this->siteId);
                 }
             }
         } catch (Google_Map_AddressNotFoundException $e) {
             try {
                 // No valid points for google map then search by zipCode City
                 $googleMap->addAddress($this->zipCode . ', ' . $this->city . ', ' . $this->country);
             } catch (Google_Map_AddressNotFound_Exception $e) {
                 // No valid points for google map then search by country
                 $googleMap->addAddress($this->country);
                 $googleMap->setZoomLevel(12);
             }
         }
         $map .= $googleMap->getMapCode();
         return $map;
     } catch (Google_Map_ServiceException $e) {
         // geolocalization is temporary disabled for this IP, try user mode
         $googleMap->setZoomLevel(Config::get('googleMapZoom'));
         $googleMap->setZoomLevel(15);
         $map .= $googleMap->getUserSideMapCode($this->address . ', ' . $this->city . ', ' . $this->country);
         return $map;
     } catch (Exception $e) {
         return '';
     }
 }
コード例 #11
0
ファイル: CategoryModel.php プロジェクト: reinfire/arfooo
 function changeParent($newParentId)
 {
     $c = new Criteria();
     if (Model::factoryInstance("categoryParent")->isChild($this->categoryId, $newParentId)) {
         return false;
     }
     $this->parentCategoryId = $newParentId;
     return true;
 }
コード例 #12
0
ファイル: Model.php プロジェクト: reinfire/arfooo
 public function __get($name)
 {
     $this->{$name} = Model::factoryInstance($name);
     return $this->{$name};
 }
コード例 #13
0
 public static function displayAd($params, &$tpl)
 {
     $place = $params['place'];
     $page = Display::get("adPage");
     if (empty($page)) {
         return "";
     }
     if (!self::$adsLoaded) {
         $page = Display::get("adPage");
         $cache = Cacher::getInstance();
         //get Ads ids on current page
         if (($data = $cache->load("adsOnPage" . $page)) === null) {
             $data = Model::factoryInstance("ad")->getAdsOnPage($page);
             $cache->save($data, null, null, array("adCriteria", "ad"));
         }
         self::$adsOnPage = $data;
         //load predefined settings
         if (($data = $cache->load("adsPredefinitions")) === null) {
             $data = Model::factoryInstance("ad")->getAllPredefinitions();
             $cache->save($data, null, null, array("adCriteria", "ad"));
         }
         self::$predefinitions = $data;
         if (preg_match("#^(site|keyword|category|letter|tag)#", $page, $match)) {
             self::$predefinitionTypeName = $match[1];
         }
         //load ads html content
         if (($data = $cache->load("adsAllCriterias")) === null) {
             $data = Model::factoryInstance("adCriteria")->getArray(null, "htmlContent");
             $cache->save($data, null, null, array("adCriteria"));
         }
         self::$adCriterias = $data;
         self::$adsLoaded = true;
         self::$pageIsPredefinied = !empty(self::$adsOnPage['predefine']);
     }
     $htmlContent = "";
     if (!empty(self::$adsOnPage['general']) && !empty(self::$adsOnPage[$place])) {
         $adCriterionId = self::$adsOnPage[$place];
         if (!empty(self::$adCriterias[$adCriterionId])) {
             $htmlContent = self::$adCriterias[$adCriterionId];
         }
     } else {
         if (self::$pageIsPredefinied && (!isset(self::$adsOnPage['general']) || self::$adsOnPage['general'] == 1)) {
             if (!empty(self::$predefinitions[self::$predefinitionTypeName][$place])) {
                 $adCriterionId = self::$predefinitions[self::$predefinitionTypeName][$place];
                 if (!empty(self::$adCriterias[$adCriterionId])) {
                     $htmlContent = self::$adCriterias[$adCriterionId];
                 }
             }
         }
     }
     return $htmlContent;
 }
コード例 #14
0
ファイル: GoogleStats.php プロジェクト: reinfire/arfooo
 function getGoogleDetailsOfSite($url, $forcedWay = false)
 {
     $this->extractionWay = $forcedWay ? $forcedWay : Config::get("wayForPagerankExtraction");
     if ($this->extractionWay == 2) {
         $this->additionalServerUrl = Config::get("additionalServerUrl");
     }
     $cachedGoogleDetail = Model::factoryInstance("cacheGoogleDetail");
     if (!$forcedWay && Config::get('pageRankCachingEnabled') == 1) {
         // try to take the pagerank from the cache
         $siteStats = $cachedGoogleDetail->getGoogleDetailsFromCache($url);
         if (!empty($siteStats)) {
             return $siteStats->toArray();
         }
     }
     // if rank is not in cache
     // get it and put in the cache
     $results = array();
     $results['pageRank'] = $this->getPageRank($url);
     $results['backlinksCount'] = $this->getBacklinksCount($url);
     $results['indexedPagesCount'] = $this->getIndexedPagesCount($url);
     if (!$forcedWay && Config::get('pageRankCachingEnabled')) {
         if (empty($siteStats)) {
             $siteStats = new CacheGoogleDetailRecord();
             $siteStats->url = $url;
         }
         $siteStats->fromArray($results);
         $siteStats->save();
         $c = new Criteria();
         $c->add("url", $url);
         foreach (Model::factoryInstance("site")->findAll($c, "siteId") as $site) {
             Model::factoryInstance("site")->updateByPk(array("pageRank" => $results['pageRank']), $site['siteId']);
         }
     }
     return $results;
 }