Пример #1
0
 function store()
 {
     $db = JFactory::getDBO();
     $item = $this->getTable('adagencyZone');
     $modul = $this->getTable('adagencyModules');
     $data = JRequest::get('post', JREQUEST_ALLOWRAW);
     // if the zone is new remember that
     if (!isset($data['zoneid']) || $data['zoneid'] <= 0) {
         $isNew = TRUE;
     } else {
         $isNew = FALSE;
     }
     // Determine wheather there was a change
     // to the text ad maximum width/height setting
     $trigger_thumb_resize = false;
     if (isset($data['zoneid']) && $data['zoneid'] != 0 && isset($data['textadparams'])) {
         $sql = "SELECT textadparams FROM #__ad_agency_zone WHERE zoneid = " . $data['zoneid'];
         $db->setQuery($sql);
         $old_tsettings = @unserialize($db->loadResult());
         if (!isset($old_tsettings->mxsize) || !isset($old_tsettings->mxtype) || $old_tsettings->mxsize != $data['textadparams']['mxsize'] || $old_tsettings->mxtype != $data['textadparams']['mxtype']) {
             $trigger_thumb_resize = true;
             if (!isset($data['adparams']['width']) || $data['adparams']['width'] == '' || $data['adparams']['width'] == 0) {
                 $ad_w = $data['textadparams']['mxsize'];
             } else {
                 $ad_w = $data['adparams']['width'];
             }
             if (!isset($data['adparams']['height']) || $data['adparams']['height'] == '' || $data['adparams']['height'] == 0) {
                 $ad_h = $data['textadparams']['mxsize'];
             } else {
                 $ad_h = $data['textadparams']['mxsize'];
             }
             if ($data['textadparams']['mxtype'] == 'w') {
                 $new_width = min($data['textadparams']['mxsize'], $ad_w);
                 $new_height = '';
             } else {
                 $new_width = '';
                 $new_height = min($data['textadparams']['mxsize'], $ad_h);
             }
         }
     }
     if (isset($data["inventory_zone"]) && $data["inventory_zone"] == 1) {
         // zone is inventory and delete zone from packages that are not inventory
         $sql = "select `tid` from #__ad_agency_order_type where `type` <> 'in'";
         $db->setQuery($sql);
         $db->query();
         $tid = $db->loadColumn();
         if (isset($tid) && count($tid) > 0) {
             $tid = implode(",", $tid);
             $sql = "delete from #__ad_agency_package_zone where `package_id` in (" . $tid . ") and `zone_id`=" . intval($data["zoneid"]);
             $db->setQuery($sql);
             $db->query();
         }
     } else {
         // zone is not inventory and delete zone from packages that are inventory
         $sql = "select `tid` from #__ad_agency_order_type where `type` = 'in'";
         $db->setQuery($sql);
         $db->query();
         $tid = $db->loadColumn();
         if (isset($tid) && count($tid) > 0) {
             $tid = implode(",", $tid);
             $sql = "delete from #__ad_agency_package_zone where `package_id` in (" . $tid . ") and `zone_id`=" . intval($data["zoneid"]);
             $db->setQuery($sql);
             $db->query();
         }
     }
     if (isset($data['bx']) && $data['bx'] == '2') {
         $data['adparams']['textad'] = '1';
     }
     if (isset($data['adparams']['width']) && isset($data['adparams']['height'])) {
         $data['textadparams']['width'] = $data['adparams']['width'];
         $data['textadparams']['height'] = $data['adparams']['height'];
     }
     $data['adparams'] = @serialize($data['adparams']);
     $zona = array();
     $zona['z_title'] = $data['title'];
     $zona['banners'] = $data['banners'];
     $zona['banners_cols'] = $data['banners_cols'];
     if (isset($data['zoneid'])) {
         $zona['zoneid'] = $data['zoneid'];
     }
     $zona['showtitle'] = $data['showtitle'];
     $zona['z_ordering'] = $data['ordering'];
     $zona['z_position'] = $data['position'];
     $zona['rotatebanners'] = $data['rotatebanners'];
     $zona['rotaterandomize'] = $data['rotaterandomize'];
     $zona['rotating_time'] = $data['rotating_time'];
     $zona['defaultad'] = $data['defaultad'];
     $zona['show_adv_link'] = $data['show_adv_link'];
     $zona['link_taketo'] = $data['link_taketo'];
     $zona['cellpadding'] = $data['cellpadding'];
     $zona['adparams'] = $data['adparams'];
     $zona['keywords'] = $data['showkeyws'];
     $zona['ignorestyle'] = $data['ignorestyle'];
     $zona['textadparams'] = @serialize($data['textadparams']);
     $zona['zone_text_below'] = $data['zone_text_below'];
     $zona['zone_content_visibility'] = $data['zone_content_visibility'];
     $zona['zone_content_location'] = $data['zone_content_location'];
     $zona['inventory_zone'] = $data['inventory_zone'];
     if (isset($data['taketo_url'])) {
         $zona['taketo_url'] = $data['taketo_url'];
     } else {
         $zona['taketo_url'] = 'http://';
     }
     /*$zona['suffix'] = 'moduleclass_sfx='.$data['params'];
     
     		$data['params'] = $zona['suffix'];*/
     //'moduleclass_sfx' => $data['params'],
     ////replaced with:
     //echo"<pre>";
     //print_r($data);
     //echo"</pre>";
     //die();
     $arr = array('moduleclass_sfx' => $data['suffix'], 'cache' => $data['cache']);
     $data['params'] = json_encode($arr);
     ///
     if (isset($data['zoneid'])) {
         $data['id'] = $data['zoneid'];
         $zonid = $data['zoneid'];
     }
     $data['module'] = 'mod_ijoomla_adagency_zone';
     if (!isset($data["publish_up"])) {
         $joomla_date = Jfactory::getDate();
         $data["publish_up"] = $joomla_date->toSql();
     }
     if (!$modul->bind($data)) {
         $this->setError($modul->getErrorMsg());
         return false;
     }
     if (!$modul->check()) {
         $this->setError($modul->getErrorMsg());
         return false;
     }
     if (!$modul->store()) {
         $this->setError($modul->getErrorMsg());
         return false;
     }
     if ($zona['zoneid'] == "") {
         $zona['zoneid'] = mysql_insert_id();
         if ($zona['zoneid'] == 0) {
             $ask = "SELECT `id` FROM `#__modules` ORDER BY `id` DESC LIMIT 1 ";
             $db->setQuery($ask);
             $zona['zoneid'] = $db->loadResult();
         }
         if (!isset($zona['z_ordering'])) {
             $zona['z_ordering'] = 0;
         }
         $query = "INSERT INTO #__ad_agency_zone ( `zoneid` , `banners`, `banners_cols` , `z_title` , `z_ordering` , `z_position` , `show_title` , `suffix`, `rotatebanners`, `rotaterandomize`, `rotating_time`, `show_adv_link`, `link_taketo`, `taketo_url`, `cellpadding`, `defaultad`, `keywords`, `adparams`, `ignorestyle`, `textadparams`, `inventory_zone`) VALUES ({$zona['zoneid']}, {$zona['banners']}, {$zona['banners_cols']}, '{$zona['z_title']}', {$zona['z_ordering']}, '{$zona['z_position']}', {$zona['showtitle']}, '{$zona['suffix']}', '{$zona['rotatebanners']}', '{$zona['rotaterandomize']}', '{$zona['rotating_time']}', '{$zona['show_adv_link']}', '{$zona['link_taketo']}', '{$zona['taketo_url']}', '{$zona['cellpadding']}', '{$zone['defaultad']}', '{$zone['keywords']}', '{$zona['adparams']}', '{$zona['ignorestyle']}','{$zona['textadparams']}', " . intval($zona["inventory_zone"]) . ")";
         $db->setQuery($query);
         $db->query();
     } else {
         if (!$item->bind($zona)) {
             $this->setError($item->getErrorMsg());
             return false;
         }
         if (!$item->check()) {
             $this->setError($item->getErrorMsg());
             return false;
         }
         if (!$item->store()) {
             $this->setError($item->getErrorMsg());
             return false;
         }
     }
     $menus = JRequest::getVar('menus', '', 'post', 'word');
     $selections = JRequest::getVar('selections', array(), 'post', 'array');
     JArrayHelper::toInteger($selections);
     // delete old module to menu item associations
     if (!isset($data['id']) || $data['id'] == 0) {
         $data['id'] = $zona['zoneid'];
     }
     $query = 'DELETE FROM #__modules_menu' . ' WHERE moduleid = ' . (int) $data['id'];
     $db->setQuery($query);
     if (!$db->query()) {
         return JError::raiseWarning(500, $row->getError());
     }
     // check needed to stop a module being assigned to `All`
     // and other menu items resulting in a module being displayed twice
     if ($menus == 'all') {
         // assign new module to `all` menu item associations
         $query = 'INSERT INTO #__modules_menu' . ' SET moduleid = ' . (int) $data['id'] . ' , menuid = 0';
         $db->setQuery($query);
         if (!$db->query()) {
             return JError::raiseWarning(500, $row->getError());
         }
     } else {
         foreach ($selections as $menuid) {
             // this check for the blank spaces in the select box that have been added for cosmetic reasons
             if ((int) $menuid >= 0) {
                 // assign new module to menu item associations
                 $query = 'INSERT INTO #__modules_menu' . ' SET moduleid = ' . (int) $data['id'] . ', menuid = ' . (int) $menuid;
                 $db->setQuery($query);
                 if (!$db->query()) {
                     return JError::raiseWarning(500, $row->getError());
                 }
             }
         }
     }
     if ($trigger_thumb_resize) {
         //echo "<pre>";var_dump($new_width);echo "<hr />";var_dump($new_height);die();
         $sql = "SELECT imgfolder FROM #__ad_agency_settings LIMIT 1";
         $db->setQuery($sql);
         $imgfolder = $db->loadResult();
         $JPATH_BASE = str_replace('administrator', '', JPATH_BASE);
         $sql = "SELECT cb . * , b.advertiser_id, b.image_url\n\n\t\t\t\t\tFROM #__ad_agency_package_zone AS pz\n\n\t\t\t\t\tLEFT JOIN #__ad_agency_campaign AS c ON pz.package_id = c.otid\n\n\t\t\t\t\tLEFT JOIN #__ad_agency_campaign_banner AS cb ON c.id = cb.campaign_id\n\n\t\t\t\t\tLEFT JOIN #__ad_agency_banners AS b ON cb.banner_id = b.id\n\n\t\t\t\t\tWHERE pz.zone_id =" . $data['id'];
         $db->setQuery($sql);
         $elements = $db->loadObjectList();
         //echo "<pre>";var_dump($elements);die();
         foreach ($elements as $element) {
             $img_url = $JPATH_BASE . 'images' . DS . 'stories' . DS . $imgfolder . DS . $element->advertiser_id . DS . $element->image_url;
             $thumb = $this->makeThumb($img_url, $new_width, $new_height);
             if ($thumb != NULL) {
                 $sql = "UPDATE `#__ad_agency_campaign_banner` SET `thumb` = '" . $thumb . "' WHERE `campaign_id` ='" . $element->campaign_id . "' AND `banner_id` ='" . $element->banner_id . "';";
             } else {
                 $sql = "UPDATE `#__ad_agency_campaign_banner` SET `thumb` = NULL WHERE `campaign_id` ='" . $element->campaign_id . "' AND `banner_id` ='" . $element->banner_id . "';";
             }
             $sss[] = $sql;
             $db->setQuery($sql);
             $db->query();
         }
     }
     $sql = "SELECT package_id FROM #__ad_agency_package_zone WHERE zone_id = {$data['id']} LIMIT 1";
     $db->setQuery($sql);
     $has_packages = $db->loadResult();
     $session = JFactory::getSession();
     if ($isNew) {
         $session->set("newzone-{$data['id']}", "1", 'adag');
     } elseif ($has_packages) {
         $session->clear("newzone-{$data['id']}", 'adag');
     }
     // echo "<pre>";var_dump($data);die();
     return $data['id'];
 }